<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>protected  * void &#187; Quick Tip</title>
	<atom:link href="http://www.danilocesar.com/blog/category/quick-tip/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.danilocesar.com/blog</link>
	<description>Tecnologia, Linux e Software Livre</description>
	<lastBuildDate>Thu, 30 Sep 2010 16:00:26 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>PobreBand drum kit</title>
		<link>http://www.danilocesar.com/blog/2009/03/29/pobreband-drumkit/</link>
		<comments>http://www.danilocesar.com/blog/2009/03/29/pobreband-drumkit/#comments</comments>
		<pubDate>Sun, 29 Mar 2009 03:53:00 +0000</pubDate>
		<dc:creator>Danilo Cesar</dc:creator>
				<category><![CDATA[/dev/null]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Mac]]></category>
		<category><![CDATA[Mandriva]]></category>
		<category><![CDATA[Portáteis]]></category>
		<category><![CDATA[Quick Tip]]></category>
		<category><![CDATA[SL]]></category>
		<category><![CDATA[Ubuntu-Br]]></category>
		<category><![CDATA[acordes]]></category>
		<category><![CDATA[arduino]]></category>
		<category><![CDATA[diversão]]></category>
		<category><![CDATA[embarcados]]></category>
		<category><![CDATA[música]]></category>

		<guid isPermaLink="false">http://www.danilocesar.com/blog/?p=187</guid>
		<description><![CDATA[Quando chegou o RockBand no trabalho criou-se uma necessidade que eu nunca tinha tido: Uma bateria. Óbviamente eu não queria pagar uma grana altíssima numa bateria profissional ou no kit completo do rockband. A Solução? ProbreBand!!! Na verdade é apenas o início da implementação do Ardrumo, que usa um Arduino e alguns piezos para gerar [...]]]></description>
			<content:encoded><![CDATA[<p>Quando chegou o <a href="http://pt.wikipedia.org/wiki/Rock_Band">RockBand</a> no <a href="http://www.openbossa.org">trabalho</a> criou-se uma necessidade que eu nunca tinha tido: Uma bateria.</p>
<p>Óbviamente eu não queria pagar uma grana altíssima numa bateria profissional ou no kit completo do rockband. A Solução? <a href="http://www.youtube.com/watch?v=w2NpSS2BhR0"><strong>ProbreBand</strong></a>!!!</p>
<p>Na verdade é apenas o início da implementação do <a href="http://code.google.com/p/ardrumo/">Ardrumo</a>, que usa um <a href="http://www.arduino.cc">Arduino</a> e alguns piezos para gerar um sinal  que é enviado para o sequenciador MIDI do mac (Futuramente do Linux? talvez&#8230;). Segue abaixo o <a href="http://www.youtube.com/watch?v=w2NpSS2BhR0">vídeo</a>.</p>
<p><object width="425" height="344" data="http://www.youtube.com/v/w2NpSS2BhR0&amp;hl=en&amp;fs=1&amp;color1=0x006699&amp;color2=0x54abd6" type="application/x-shockwave-flash"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/w2NpSS2BhR0&amp;hl=en&amp;fs=1&amp;color1=0x006699&amp;color2=0x54abd6" /><param name="allowfullscreen" value="true" /></object><br />
<em>* Minha irmã sempre disse que eu não tinha ritmo =)</em></p>
<p>Fiquei meio preocupado com o tempo de resposta e sensibilidade. Mas o tempo de resposta é muito bom (no vídeo parece que tá atrasado, mas só parece), e a sensibilidade fica perfeita quando você prende os piezos em alguma superfície.</p>
<p>Enfim, voltar a brincar com embarcados tem sido divertido, ainda mais aprendendo eletrônica. Breve comento sobre outros brinquedos que estou fazendo (com motor de passo, e um servo que está pra chegar).</p>
<p>Agradecimentos a <a href="http://wouwlabs.com/blogs/jeez">Jesus</a> (não <a href="http://pt.wikipedia.org/wiki/Jesus">esse Jesus</a>), que me incentivou a comprar o Arduino, e ao Alex, Thulio, <a href="http://wouwlabs.com/blogs/jeez">Jeez</a> e <a href="http://castelodolord.blogspot.com/">Larry</a> que estão me dando dicas de eletrônica. E claro, ao cara do <a href="http://code.google.com/p/ardrumo/">Ardrumo</a> que me fez economizar uma grana. =)</p>
<p><strong>[update: 29/03/2009]</strong> A idéia é montar uma estrutura maior de borracha para os sensores, e uma estrutura em PVC para a bateria. Se um dia eu conseguir ponho aqui. A idéia é algo parecido com <a href="http://members.cox.net/ampage/img/triggers/03barekit.jpg">isso</a>:</p>
<p><img src="http://members.cox.net/ampage/img/triggers/03barekit.jpg" alt="Bateria Eletronica" width="262" height="193" /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.danilocesar.com/blog/2009/03/29/pobreband-drumkit/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>QT mudando para LGPL</title>
		<link>http://www.danilocesar.com/blog/2009/01/14/qt-mudando-para-lgpl/</link>
		<comments>http://www.danilocesar.com/blog/2009/01/14/qt-mudando-para-lgpl/#comments</comments>
		<pubDate>Wed, 14 Jan 2009 12:28:27 +0000</pubDate>
		<dc:creator>Danilo Cesar</dc:creator>
				<category><![CDATA[/dev/null]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Mac]]></category>
		<category><![CDATA[Maemo]]></category>
		<category><![CDATA[Mandriva]]></category>
		<category><![CDATA[Portáteis]]></category>
		<category><![CDATA[PyS60]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[QT]]></category>
		<category><![CDATA[Quick Tip]]></category>
		<category><![CDATA[SL]]></category>
		<category><![CDATA[Ubuntu-Br]]></category>
		<category><![CDATA[GUI]]></category>
		<category><![CDATA[N800]]></category>
		<category><![CDATA[Nokia]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://www.danilocesar.com/blog/?p=166</guid>
		<description><![CDATA[Fonte: http://arstechnica.com/news.ars/post/20090114-nokia-qt-lgpl-switch-huge-win-for-cross-platform-development.html Ao menos uma das previsões de 2008 saiu =) [UPDATE 14/01 09:40]]]></description>
			<content:encoded><![CDATA[<p>Fonte: <a href="http://arstechnica.com/news.ars/post/20090114-nokia-qt-lgpl-switch-huge-win-for-cross-platform-development.html" target="_blank">http://arstechnica.com/news.ars/post/20090114-nokia-qt-lgpl-switch-huge-win-for-cross-platform-development.html</a></p>
<p><img class="alignnone size-full wp-image-167" title="Eu já sabia" src="http://www.danilocesar.com/blog/wp-content/uploads/2009/01/eujasabia.jpg" alt="Eu já sabia" width="400" height="300" /></p>
<p>Ao menos <a href="http://www.danilocesar.com/blog/2008/01/28/extra-extra-nokia-adquire-trolltech/">uma das previsões de 2008</a> saiu =)</p>
<p><strong>[UPDATE 14/01 09:40]</strong></p>
<p><object width="480" height="295"><param name="movie" value="http://www.youtube.com/v/IsTIIQocSqs&#038;hl=en&#038;fs=1"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/IsTIIQocSqs&#038;hl=en&#038;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="480" height="295"></embed></object></p>
]]></content:encoded>
			<wfw:commentRss>http://www.danilocesar.com/blog/2009/01/14/qt-mudando-para-lgpl/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Konsole resize fix</title>
		<link>http://www.danilocesar.com/blog/2008/10/25/konsole-resize-fix/</link>
		<comments>http://www.danilocesar.com/blog/2008/10/25/konsole-resize-fix/#comments</comments>
		<pubDate>Sat, 25 Oct 2008 16:34:21 +0000</pubDate>
		<dc:creator>Danilo Cesar</dc:creator>
				<category><![CDATA[debian]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Mandriva]]></category>
		<category><![CDATA[QT]]></category>
		<category><![CDATA[Quick Tip]]></category>
		<category><![CDATA[KDE4]]></category>

		<guid isPermaLink="false">http://www.danilocesar.com/blog/?p=157</guid>
		<description><![CDATA[Quem usa placa nvidia e KDE4 deve estar tendo problemas para redimencionar a janela do konsole. Navegando pelo techbase encontrei uma solução: nvidia-settings -a InitialPixmapPlacement=2 -a GlyphCache=1 Fica aí a dica! []&#8216;s]]></description>
			<content:encoded><![CDATA[<p>Quem usa placa nvidia e KDE4 deve estar tendo problemas para redimencionar a janela do konsole.</p>
<p>Navegando pelo <a href="http://techbase.kde.org" target="_blank">techbase</a> encontrei uma <a href="http://techbase.kde.org/User:Lemma/KDE4-NVIDIA" target="_blank">solução</a>:</p>
<p><code>nvidia-settings -a InitialPixmapPlacement=2 -a GlyphCache=1</code></p>
<p>Fica aí a dica!</p>
<p>[]&#8216;s</p>
]]></content:encoded>
			<wfw:commentRss>http://www.danilocesar.com/blog/2008/10/25/konsole-resize-fix/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Histórico de múltiplas instâncias do bash</title>
		<link>http://www.danilocesar.com/blog/2008/08/06/historico-de-multiplas-instancias-do-bash/</link>
		<comments>http://www.danilocesar.com/blog/2008/08/06/historico-de-multiplas-instancias-do-bash/#comments</comments>
		<pubDate>Wed, 06 Aug 2008 23:14:28 +0000</pubDate>
		<dc:creator>Danilo Cesar</dc:creator>
				<category><![CDATA[debian]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Mac]]></category>
		<category><![CDATA[Maemo]]></category>
		<category><![CDATA[Mobile]]></category>
		<category><![CDATA[Portáteis]]></category>
		<category><![CDATA[Quick Tip]]></category>
		<category><![CDATA[SL]]></category>
		<category><![CDATA[Ubuntu-Br]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[history]]></category>

		<guid isPermaLink="false">http://www.danilocesar.com/blog/?p=152</guid>
		<description><![CDATA[Isto pode ser útil para quem trabalha com várias janelas de terminal. O comando history do bash (também o CTRL+R) guarda apenas o histórico da última sessão aberta, o que é um problema para quem usa mais de um terminal (eu uso o conjunto Xterm + screen). Para corrigir isto, adicione em seu .bashrc #Firulas [...]]]></description>
			<content:encoded><![CDATA[<p>Isto pode ser útil para quem trabalha com várias janelas de terminal.</p>
<p>O comando <strong><em>history</em></strong> do bash (também o CTRL+R) guarda apenas o histórico da última sessão aberta, o que é um problema para quem usa mais de um terminal (eu uso o conjunto Xterm + screen).</p>
<p>Para corrigir isto, adicione em seu .bashrc</p>
<p><code>#Firulas de historico com o bash<br />
export PROMPT_COMMAND="history -a"<br />
export HISTFILESIZE=2000<br />
shopt -s histappend</code></p>
<p>Trabalhe com quantos terminais quiser, e guarde o histórico de todos!</p>
<p>[<strong>UPDATE 07/08/2008</strong>]: Tinha um erro na última linha. Obrigado <a href="http://www.myspace.com/andrevmatos" target="_blank">André Matos</a> e <a href="http://vivaotux.blogspot.com/">Sérgio Silva</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.danilocesar.com/blog/2008/08/06/historico-de-multiplas-instancias-do-bash/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>WTF???</title>
		<link>http://www.danilocesar.com/blog/2008/07/25/wtf/</link>
		<comments>http://www.danilocesar.com/blog/2008/07/25/wtf/#comments</comments>
		<pubDate>Fri, 25 Jul 2008 05:57:26 +0000</pubDate>
		<dc:creator>Danilo Cesar</dc:creator>
				<category><![CDATA[/dev/null]]></category>
		<category><![CDATA[HTTP]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Mandriva]]></category>
		<category><![CDATA[Quick Tip]]></category>
		<category><![CDATA[Segurança]]></category>
		<category><![CDATA[SL]]></category>

		<guid isPermaLink="false">http://www.danilocesar.com/blog/?p=145</guid>
		<description><![CDATA[Agora pouco digitei um endereço errado e tive acesso à uma infeliz página: WTF??? Outro teste: OK, já passou da hora usar OpenDNS!]]></description>
			<content:encoded><![CDATA[<p>Agora pouco digitei um endereço errado e tive acesso à uma infeliz página:</p>
<p><a href="http://www.danilocesar.com/blog/wp-content/uploads/2008/07/picture-1.png"><img class="alignnone size-full wp-image-147" title="WTF?" src="http://www.danilocesar.com/blog/wp-content/uploads/2008/07/picture-1.png" alt="" width="500" height="420" /></a></p>
<p>WTF???</p>
<p>Outro teste:</p>
<p><a href="http://www.danilocesar.com/blog/wp-content/uploads/2008/07/picture-3.png"><img class="alignnone size-full wp-image-149" title="WTF2?" src="http://www.danilocesar.com/blog/wp-content/uploads/2008/07/picture-3.png" alt="" width="499" height="122" /></a></p>
<p>OK, já passou da hora usar OpenDNS!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.danilocesar.com/blog/2008/07/25/wtf/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>SU-8W com acentos no N800</title>
		<link>http://www.danilocesar.com/blog/2008/06/30/su-8w-com-acentos-no-n800/</link>
		<comments>http://www.danilocesar.com/blog/2008/06/30/su-8w-com-acentos-no-n800/#comments</comments>
		<pubDate>Mon, 30 Jun 2008 22:10:56 +0000</pubDate>
		<dc:creator>Danilo Cesar</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Maemo]]></category>
		<category><![CDATA[Mandriva]]></category>
		<category><![CDATA[Mobile]]></category>
		<category><![CDATA[Quick Tip]]></category>
		<category><![CDATA[SL]]></category>
		<category><![CDATA[Ubuntu-Br]]></category>
		<category><![CDATA[N800]]></category>
		<category><![CDATA[su 8w]]></category>

		<guid isPermaLink="false">http://www.danilocesar.com/blog/?p=143</guid>
		<description><![CDATA[Estive me perguntando porque os acentos não funcionam corretamente no SU 8W com o N800. Decidi investigar. Quando eu estava tentando sincronizar o teclado com o N800 pude perceber que o SU 8W é um teclado pré-configurado, e com um pouco de paciência encontrei o arquivo de configuração do mesmo: /usr/share/X11/xkb/symbols/nokia_vndr/su-8w Após 5 minutos estudando [...]]]></description>
			<content:encoded><![CDATA[<p>Estive me perguntando <a href="http://zyakannazio.eti.br/fudeblog/2007/04/29/sem-acento/" target="_blank">porque os acentos não funcionam corretamente no SU 8W</a> com o N800. Decidi investigar.</p>
<p>Quando eu estava tentando sincronizar o teclado com o N800 pude perceber que o SU 8W é um teclado pré-configurado, e com um pouco de paciência encontrei o arquivo de configuração do mesmo: <code>/usr/share/X11/xkb/symbols/nokia_vndr/su-8w</code></p>
<p>Após 5 minutos estudando a sintaxe, em 10 minutos é possível perceber que falta alguma coisa: <strong>Não há, pelo menos, as configurações para português, espanhol e italiano</strong>. Agora eu entendo porque a configuração de layout português não funciona.</p>
<p>Já que não existe uma configuração para o idioma definido, utiliza-se o us_intl, certo? Mas a primeira linha da definição do us-intl tem um comentário preocupante: <strong>&#8220;I can’t belive! It’s not intl&#8221;</strong>. Parece que a tafera não será assim tão simples.</p>
<p>Para propósito de teste, não criei um novo mapa de teclado para pt_BR e sim editei o us_intl. O resultado ficou aceitável, e finalmente é possível ter um teclado funcional em português. O resultado você pode entrar <a href="http://labs.danilocesar.com/maemo/keyboard/su-8w">aqui</a>.<strong>(Não esqueça de fazer backup antes de sobrescrever)</strong></p>
<p>Nos próximos dias ponho aqui a solução definitiva.</p>
<p>Resltado final:<br />
<img src="http://labs.danilocesar.com/blog/wp-content/uploads/2008/06/dsc01622-300x225.jpg" alt="SU 8W funcionando com acentos" /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.danilocesar.com/blog/2008/06/30/su-8w-com-acentos-no-n800/feed/</wfw:commentRss>
		<slash:comments>17</slash:comments>
		</item>
		<item>
		<title>PiTracker &#8211; tracker de imagem em QT4.</title>
		<link>http://www.danilocesar.com/blog/2008/06/18/pitracker-tracker-de-imagem-em-qt4/</link>
		<comments>http://www.danilocesar.com/blog/2008/06/18/pitracker-tracker-de-imagem-em-qt4/#comments</comments>
		<pubDate>Wed, 18 Jun 2008 23:48:34 +0000</pubDate>
		<dc:creator>Danilo Cesar</dc:creator>
				<category><![CDATA[/dev/null]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Mac]]></category>
		<category><![CDATA[Mandriva]]></category>
		<category><![CDATA[QT]]></category>
		<category><![CDATA[Quick Tip]]></category>
		<category><![CDATA[SL]]></category>
		<category><![CDATA[UFPR]]></category>
		<category><![CDATA[pi]]></category>
		<category><![CDATA[processamento de imagens]]></category>

		<guid isPermaLink="false">http://www.danilocesar.com/blog/?p=138</guid>
		<description><![CDATA[Seguindo a linha do &#8220;Liberando trabalhos da UFPR&#8220;, estou liberando o código do PiTracker. Projeto da matéria de Processamento de Imagens, o objetivo era fazer um tracker de pessoas em um determinado vídeo. Na especificação havia: O vídeo será uma sequência de imagens PPM nomeada da forma &#60;nome&#62;_&#60;seq&#62;.ppm. Ou seja, se a sequência se chamar [...]]]></description>
			<content:encoded><![CDATA[<p>Seguindo a linha do &#8220;<a href="http://www.danilocesar.com/blog/2008/06/01/liberando-trabalhos-da-ufpr/" target="_blank">Liberando trabalhos da UFPR</a>&#8220;, estou liberando o código do PiTracker.</p>
<p>Projeto da matéria de <a href="http://www.imago.ufpr.br/disciplinas_olga/pi/img_trab1.tgz" target="_blank">Processamento de Imagens</a>, o objetivo era fazer um tracker de pessoas em um determinado vídeo.</p>
<p>Na especificação havia:</p>
<ul>
<li>O vídeo será uma sequência de imagens PPM nomeada da forma &lt;nome&gt;_&lt;seq&gt;.ppm. Ou seja, se a sequência se chamar tracker, o primeiro arquivo será o tracker_00.ppm.</li>
<li>O vídeo será testado em dois casos: No primeiro haverá uma pessoa, no segundo duas.</li>
<li>As pessoas devem ser marcadas com cores diferentes, e a mesma cor para cada uma das pessoas.</li>
<li>Em nenhum momento as pessoas se cruzam.</li>
</ul>
<p>Assim fica fácil! =)</p>
<p>Segue algumas screen shots:</p>
<p><img class="size-medium wp-image-139" title="Tracker-1" src="http://www.danilocesar.com/blog/wp-content/uploads/2008/06/picture-1-300x288.png" alt="" width="300" height="288" /></p>
<p><img class="size-medium wp-image-140" title="Tracker2" src="http://www.danilocesar.com/blog/wp-content/uploads/2008/06/picture-2-300x287.png" alt="Primeira pessoa aparecendo na imagem" width="300" height="287" /></p>
<p><img class="size-medium wp-image-141" title="Tracker-3" src="http://www.danilocesar.com/blog/wp-content/uploads/2008/06/picture-3-300x287.png" alt="Segunda pessoa aparecendo na imagem" width="300" height="287" /></p>
<p><img class="size-medium wp-image-142" title="Tracker-4" src="http://www.danilocesar.com/blog/wp-content/uploads/2008/06/picture-4-300x288.png" alt="Duas pessoas marcadas lado-a-lado" width="300" height="288" /></p>
<p>Como de costume, o código está no SVN em:<br />
<code>
<pre>http://danilocesar.com/svn/pitracker/</pre>
<p></code><br />
E as imagens podem ser encontradas <a href="http://www.imago.ufpr.br/disciplinas_olga/pi/img_trab1.tgz" target="_blank">no site da matéria</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.danilocesar.com/blog/2008/06/18/pitracker-tracker-de-imagem-em-qt4/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Liberando trabalhos da UFPR</title>
		<link>http://www.danilocesar.com/blog/2008/06/01/liberando-trabalhos-da-ufpr/</link>
		<comments>http://www.danilocesar.com/blog/2008/06/01/liberando-trabalhos-da-ufpr/#comments</comments>
		<pubDate>Sun, 01 Jun 2008 18:10:53 +0000</pubDate>
		<dc:creator>Danilo Cesar</dc:creator>
				<category><![CDATA[/dev/null]]></category>
		<category><![CDATA[HTTP]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Mandriva]]></category>
		<category><![CDATA[Quick Tip]]></category>
		<category><![CDATA[Ubuntu-Br]]></category>
		<category><![CDATA[raw socket]]></category>
		<category><![CDATA[redes]]></category>
		<category><![CDATA[trabalhos]]></category>

		<guid isPermaLink="false">http://www.danilocesar.com/blog/?p=136</guid>
		<description><![CDATA[Estou prestes a me formar, e lembrando-me de um convite do Arthur Furlan, decidi que estava na hora de liberar alguns trabalinhos legais que escrevi na faculdade. Servidor/Cliente FTP usando raw socket. Acho que este é o que será mais útil, principalmente aos meus colegas de Universidade. Trabalho de redes1, a missão era implementar um [...]]]></description>
			<content:encoded><![CDATA[<p>Estou prestes a me <a href="http://www.inf.ufpr.br" target="_blank">formar</a>, e lembrando-me de um <a href="http://arthurfurlan.org/blog/2007/08/05/criando-um-servidor-tcp-concorrente-em-python/">convite</a> do <a href="http://arthurfurlan.org">Arthur Furla</a>n, decidi que estava na hora de liberar alguns trabalinhos legais que escrevi na faculdade.</p>
<h3>Servidor/Cliente FTP usando raw socket.</h3>
<p>Acho que este é o que será mais útil, principalmente aos meus colegas de <a href="http://www.ufpr.br">Universidade</a>.<br />
<a href="http://www.inf.ufpr.br/albini/R1_Graduacao.html" target="_blank"> Trabalho de redes1</a>, a missão era implementar um cliente/servidor FTP baseado no Kermit utilizando raw sockets. Algumas pessoas fizeram utilizando UDP, mas  ae fica sem graça né?! =)</p>
<p>Para <a href="http://en.wikipedia.org/wiki/Flow_control" target="_blank">controle de fluxo, foi implementado o pára-e-espera</a>. Toda mensagem deve retornar um ack/nack. Obviamente, não há TCP nem IP, a &#8220;conexão&#8221; é feita sem endereçamento pelo cabo de rede. Os cabos devem ser ponto-a-ponto (até pode ser utilizado um hub, mas provavelmente ele mate todos os pacotes por serem inválidos).</p>
<p>Para detectar erros utilizo <a href="http://pt.wikipedia.org/wiki/Paridade_%28telecomunica%C3%A7%C3%B5es%29" target="_blank">paridade-par</a> (sux), e caso o cabo de rede seja removido e colocado depois de pouco tempo, o sistema deve continuar de onde parou. O arquivo final precisa ser consistente. Isto é muito complicado usando apenas paridade par, logo nas mensagens de fim de arquivo envio como dado o MD5, para garantir consistência.</p>
<p>O tamanho de cada arquivo nos pacotes está incorreto. Esta informação está sendo ignorada.</p>
<p>O resto está descrito no arquivo: Mensagens de atá 255 bytes, etc etc.</p>
<p>Como estava aprendendo GTK+ na época, fiz umas modificações para incluir uma interface gráfica. Ficou meio estranho pois incluí isto depois que o trabalho já estava pronto. De qualquer forma, para compilar esta versão, utilize o comando &#8220;<em><strong>make gui</strong></em>&#8221;</p>
<p>No Unix, o pacote deve ser puxado com o comando:<br />
<code> </p>
<pre>svn co http://danilocesar.com/svn/redes1</pre>
<p></code><br />
Outro dia publico outros códigos.<br />
[]&#8216; s</p>
<p>Danilo Cesar</p>
]]></content:encoded>
			<wfw:commentRss>http://www.danilocesar.com/blog/2008/06/01/liberando-trabalhos-da-ufpr/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Auto-completar no python do Mac OsX</title>
		<link>http://www.danilocesar.com/blog/2008/05/27/auto-completar-no-python-do-mac-osx/</link>
		<comments>http://www.danilocesar.com/blog/2008/05/27/auto-completar-no-python-do-mac-osx/#comments</comments>
		<pubDate>Wed, 28 May 2008 02:56:23 +0000</pubDate>
		<dc:creator>Danilo Cesar</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Mac]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[Quick Tip]]></category>
		<category><![CDATA[SL]]></category>
		<category><![CDATA[Ubuntu-Br]]></category>

		<guid isPermaLink="false">http://www.danilocesar.com/blog/?p=135</guid>
		<description><![CDATA[Certa vez o Ademar comentou que o python tinha auto-completar por padrão. Pessoalmente nunca tinha percebido isto, e conversando com o Ramiro percebi o porquê: Mac OS X e Windows não inicializam os módulos readline e o rlcompleter sozinhos. Procurando um pouco vi que habilitá-los é fácil. Primeiro edite o arquivo ~/.pythonrc #Enable syntax completion [...]]]></description>
			<content:encoded><![CDATA[<p>Certa vez o <a href="http://blog.ademar.org/2008/05/24/adeus-curitiba/">Ademar</a> comentou que o python tinha auto-completar por padrão. Pessoalmente nunca tinha percebido isto, e conversando com o <a href="http://www.ramiroluz.eti.br/">Ramiro</a> percebi o porquê: Mac OS X e Windows não inicializam os módulos <strong>readline</strong> e o <strong>rlcompleter</strong> sozinhos.</p>
<p>Procurando um pouco vi que habilitá-los é fácil.</p>
<p>Primeiro edite o arquivo ~/.pythonrc<br />
<code>
<pre>#Enable syntax completion
try:
    import readline
except ImportError:
    print "Module readline not available."
else:
    import rlcompleter
    readline.parse_and_bind("tab: complete")
</pre>
<p></code></p>
<p>Após isto, em seu ~/.bashrc adicione:<br />
<code><br />
export PYTHONSTARTUP=~/.pythonrc<br />
</code></p>
<p>Agora inicie o python e faça o teste.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.danilocesar.com/blog/2008/05/27/auto-completar-no-python-do-mac-osx/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Hello world para Native-Symbian</title>
		<link>http://www.danilocesar.com/blog/2008/05/06/hello-world-para-native-symbian/</link>
		<comments>http://www.danilocesar.com/blog/2008/05/06/hello-world-para-native-symbian/#comments</comments>
		<pubDate>Wed, 07 May 2008 01:00:03 +0000</pubDate>
		<dc:creator>Danilo Cesar</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[PyS60]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[Quick Tip]]></category>
		<category><![CDATA[Segurança]]></category>
		<category><![CDATA[Ubuntu-Br]]></category>
		<category><![CDATA[viagens]]></category>
		<category><![CDATA[Mobile]]></category>

		<guid isPermaLink="false">http://www.danilocesar.com/blog/?p=132</guid>
		<description><![CDATA[Certa vez eu quis explicar a um amigo porque escrever código em python para celular era mais legal que escrever código em C (native-symbian e não OpenC). Acho que hoje talvez eu consiga. Segue os exemplos: Python print "Hello World" C++-Epoc // Hello World in C++, Epoc style (for Symbian OS) #include < eikapp.h > [...]]]></description>
			<content:encoded><![CDATA[<p>Certa vez eu quis explicar a um amigo porque escrever código em <a href="http://sourceforge.net/projects/pys60" target="_blank">python</a> para celular era mais legal que escrever código em C (<a href="http://forum.nokia.com/main/resources/technologies/symbian/index.html" target="_blank">native-symbian</a> e não <a href="http://www.forum.nokia.com/main/resources/technologies/open_c/index.html" target="_blank">OpenC</a>). Acho que hoje talvez eu consiga.</p>
<p>Segue os exemplos:</p>
<h3>Python</h3>
<p><code>print "Hello World" </code></p>
<h3>C++-Epoc</h3>
<p><code><br />
// Hello World in C++, Epoc style (for Symbian OS)<br />
#include < eikapp.h ><br />
#include < eikdoc.h ><br />
#include < eikappui.h ></p>
<p>class CHelloWorldAppUi;<br />
class CEikApplication;<br />
class CHelloWorldAppView;</p>
<p>class CHelloWorldApplication : public CEikApplication<br />
    {<br />
        public:<br />
            TUid AppDllUid() const;<br />
        protected:<br />
            CApaDocument* CreateDocumentL();<br />
    };</p>
<p>class CHelloWorldDocument : public CEikDocument<br />
    {<br />
        public:<br />
            static CHelloWorldDocument* NewL(CEikApplication&#038; aApp);<br />
            static CHelloWorldDocument* NewLC(CEikApplication&#038; aApp);<br />
            ~CHelloWorldDocument(){};<br />
        public:<br />
            CEikAppUi* CreateAppUiL();<br />
        private:<br />
            void ConstructL() {};<br />
            CHelloWorldDocument(CEikApplication&#038; aApp){};<br />
    };</p>
<p>class CHelloWorldAppUi : public CEikAppUi<br />
    {<br />
        public:<br />
                void ConstructL();<br />
                CHelloWorldAppUi(){};<br />
                ~CHelloWorldAppUi(){};<br />
    };</p>
<p>static const TUid KUidHelloWorldApp = {0x10005B91};</p>
<p>GLDEF_C TInt E32Dll(TDllReason )<br />
    {<br />
    return KErrNone;<br />
    }</p>
<p>EXPORT_C CApaApplication* NewApplication()<br />
    {<br />
    return (new CHelloWorldApplication);<br />
    }</p>
<p>CApaDocument* CHelloWorldApplication::CreateDocumentL()<br />
    {<br />
    CApaDocument* document = CHelloWorldDocument::NewL(*this);<br />
    return document;<br />
    }</p>
<p>TUid CHelloWorldApplication::AppDllUid() const<br />
    {<br />
    return KUidHelloWorldApp;<br />
    }</p>
<p>CHelloWorldDocument* CHelloWorldDocument::NewL(CEikApplication&#038; aApp)<br />
    {<br />
    CHelloWorldDocument* self = NewLC(aApp);<br />
    CleanupStack::Pop(self);<br />
    return self;<br />
    }</p>
<p>CHelloWorldDocument* CHelloWorldDocument::NewLC(CEikApplication&#038; aApp)<br />
    {<br />
    CHelloWorldDocument* self = new (ELeave) CHelloWorldDocument(aApp);<br />
    CleanupStack::PushL(self);<br />
    self->ConstructL();<br />
    return self;<br />
    }</p>
<p>CEikAppUi* CHelloWorldDocument::CreateAppUiL()<br />
    {<br />
    CEikAppUi* appUi = new (ELeave) CHelloWorldAppUi;<br />
    return appUi;<br />
    }</p>
<p>void CHelloWorldAppUi::ConstructL()<br />
    {<br />
    BaseConstructL();</p>
<p>    _LIT(message,"Hello!");<br />
    CAknInformationNote* informationNote = new (ELeave) CAknInformationNote;<br />
    informationNote->ExecuteLD(message);<br />
    }<br />
</code></p>
<p><em>fonte: <a href="href="http://www.roesler-ac.de/wolfram/hello.htm">http://www.roesler-ac.de/wolfram/hello.htm</a> </em></p>
]]></content:encoded>
			<wfw:commentRss>http://www.danilocesar.com/blog/2008/05/06/hello-world-para-native-symbian/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Dá um real ae, dá um real ae!</title>
		<link>http://www.danilocesar.com/blog/2008/04/14/da-um-real-ae-da-um-real-ae/</link>
		<comments>http://www.danilocesar.com/blog/2008/04/14/da-um-real-ae-da-um-real-ae/#comments</comments>
		<pubDate>Mon, 14 Apr 2008 13:46:02 +0000</pubDate>
		<dc:creator>Danilo Cesar</dc:creator>
				<category><![CDATA[/dev/null]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Mandriva]]></category>
		<category><![CDATA[Quick Tip]]></category>
		<category><![CDATA[SL]]></category>
		<category><![CDATA[besteirol]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[Mercado Livre]]></category>
		<category><![CDATA[QT]]></category>
		<category><![CDATA[SEO]]></category>

		<guid isPermaLink="false">http://www.danilocesar.com/blog/?p=126</guid>
		<description><![CDATA[O que não se faz por uns trocados?]]></description>
			<content:encoded><![CDATA[<p><img class="alignnone size-full wp-image-124" style="border: 1px solid black;" title="Dá um real ae!" src="http://www.danilocesar.com/blog/wp-content/uploads/2008/04/picture-3.png" alt="" width="294" height="152" /></p>
<p>O que não se faz por uns trocados?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.danilocesar.com/blog/2008/04/14/da-um-real-ae-da-um-real-ae/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Sugestões para outro fim de semana em Curitiba..</title>
		<link>http://www.danilocesar.com/blog/2008/03/29/sugestoes-para-outro-fim-de-semana-em-curitiba/</link>
		<comments>http://www.danilocesar.com/blog/2008/03/29/sugestoes-para-outro-fim-de-semana-em-curitiba/#comments</comments>
		<pubDate>Sun, 30 Mar 2008 01:00:20 +0000</pubDate>
		<dc:creator>Danilo Cesar</dc:creator>
				<category><![CDATA[/dev/null]]></category>
		<category><![CDATA[Quick Tip]]></category>
		<category><![CDATA[cinema]]></category>
		<category><![CDATA[diversão]]></category>
		<category><![CDATA[fim de semana]]></category>
		<category><![CDATA[teatro]]></category>

		<guid isPermaLink="false">http://www.danilocesar.com/blog/2008/03/30/sugestoes-para-outro-fim-de-semana-em-curitiba/</guid>
		<description><![CDATA[Relexões de um desocupado: Breve relato sobre peças de teatro: PEQUENAS CAQUINHAS É MUITO BOM! MESMO! Dentro de alguns minutos irei assistir a peça &#8216;Laranja Mecânica&#8216;, adaptação do livro de mesmo nome. Atualizarei este post com a minha opinião quando voltar. E que venha Tangos e Tragédias! [Update 31/03/2008]: Laranja Mecânica é meio trash&#8230;]]></description>
			<content:encoded><![CDATA[<p>Relexões de um desocupado: Breve relato sobre peças de teatro:</p>
<p><strong>PEQUENAS CAQUINHAS </strong>É MUITO BOM! MESMO!</p>
<p>Dentro de alguns minutos irei assistir a peça &#8216;<strong>Laranja Mecânica</strong>&#8216;, adaptação do <a href="http://pt.wikipedia.org/wiki/Laranja_Mec%C3%A2nica_(livro)">livro de mesmo nome</a>. Atualizarei este post com a minha opinião quando voltar.</p>
<p>E que venha Tangos e Tragédias!</p>
<p><em><strong>[Update 31/03/2008]: </strong></em>Laranja Mecânica é meio trash&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.danilocesar.com/blog/2008/03/29/sugestoes-para-outro-fim-de-semana-em-curitiba/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Extra, extra&#8230; Nokia adquire TrollTech</title>
		<link>http://www.danilocesar.com/blog/2008/01/28/extra-extra-nokia-adquire-trolltech/</link>
		<comments>http://www.danilocesar.com/blog/2008/01/28/extra-extra-nokia-adquire-trolltech/#comments</comments>
		<pubDate>Mon, 28 Jan 2008 18:20:33 +0000</pubDate>
		<dc:creator>Danilo Cesar</dc:creator>
				<category><![CDATA[/dev/null]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Mac]]></category>
		<category><![CDATA[Maemo]]></category>
		<category><![CDATA[Mandriva]]></category>
		<category><![CDATA[Mercado e Ações]]></category>
		<category><![CDATA[Mobile]]></category>
		<category><![CDATA[Quick Tip]]></category>
		<category><![CDATA[SL]]></category>
		<category><![CDATA[Ubuntu-Br]]></category>
		<category><![CDATA[GUI]]></category>
		<category><![CDATA[Nokia]]></category>
		<category><![CDATA[QT]]></category>
		<category><![CDATA[TrollTech]]></category>

		<guid isPermaLink="false">http://www.danilocesar.com/blog/2008/01/28/extra-extra-nokia-adquire-trolltech/</guid>
		<description><![CDATA[A Nokia divulga suas intenções de adquirir a trolltech. Com estas informações tenho duas perguntas: Será a Nokia capaz de manter a qualidade da biblioteca QT? Será que veremos uma licença LGPL para a libQT? Se isto acontecer, será o fim da libGTK?]]></description>
			<content:encoded><![CDATA[<p>A <a href="http://www.nokia.com" target="_blank">Nokia</a> <a href="http://www.nokia.com/A4136001?newsid=1185531">divulga suas intenções</a> de adquirir a <a href="http://trolltech.com/" target="_blank">trolltech</a>.</p>
<p>Com estas informações tenho duas perguntas:</p>
<p>Será a Nokia capaz de manter a qualidade da biblioteca <a href="http://en.wikipedia.org/wiki/Qt_%28toolkit%29" target="_blank">QT</a>?</p>
<p>Será que veremos uma licença <a href="http://pt.wikipedia.org/wiki/LGPL" target="_blank">LGPL</a> para a libQT? Se isto acontecer, será o fim da <a href="http://en.wikipedia.org/wiki/GTK%2B">libGTK</a>?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.danilocesar.com/blog/2008/01/28/extra-extra-nokia-adquire-trolltech/feed/</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
		<item>
		<title>Cursos e Palestras na Semana da Computação da UFPR</title>
		<link>http://www.danilocesar.com/blog/2007/10/17/cursos-e-palestras-na-semana-da-computacao-da-ufpr/</link>
		<comments>http://www.danilocesar.com/blog/2007/10/17/cursos-e-palestras-na-semana-da-computacao-da-ufpr/#comments</comments>
		<pubDate>Wed, 17 Oct 2007 12:25:59 +0000</pubDate>
		<dc:creator>Danilo Cesar</dc:creator>
				<category><![CDATA[/dev/null]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Quick Tip]]></category>
		<category><![CDATA[Ubuntu-Br]]></category>

		<guid isPermaLink="false">http://www.danilocesar.com/blog/2007/10/17/cursos-e-palestras-na-semana-da-computacao-da-ufpr/</guid>
		<description><![CDATA[Sei que já está sendo bem divulgado, mas não custa nada divulgar aqui também. Nos dias 22 a 26 de Outubro de 2007, o CEI, Centro de Estudos de Informática da UFPR, e o CATEI, Centro Acadêmico de Tecnologia da Informação da UFPR, estão realizando a a Semana da Computação. Nesta, será ofertado vários mini-cursos [...]]]></description>
			<content:encoded><![CDATA[<p>Sei que já está sendo bem divulgado, mas não custa nada divulgar aqui também.</p>
<p>Nos dias 22 a 26 de Outubro de 2007, o CEI, Centro de Estudos de Informática da UFPR, e o CATEI, Centro Acadêmico de Tecnologia da Informação da UFPR, estão realizando a a Semana da Computação. Nesta, será ofertado vários mini-cursos e palestras, dentre eles posso citar:</p>
<p>Palestras:</p>
<ul>
<li><strong>Construindo e Construindo pacotes Debian</strong><br />
Será oferecida pelo Faw, do Debian-PR. Interessante para quem quer manter pacotes pro <a href="http://www.debian.org">Debian</a>, <a href="http://ubuntu.org">Ubuntu</a> ou até mesmo pro <a href="http://www.maemo.org">Maemo</a></li>
<li><strong>Overlays no OpenLDAP: facilitando a vida do administrador</strong><br />
Ofertada pelo Andreas, da Mandriva Conectiva.</li>
<li> <strong>IA vs Programação convencional</strong></li>
</ul>
<p>Cursos:</p>
<ul>
<li> <strong>PHP</strong> &#8211; <a href="http://arthurfurlan.com.br/blog/">Arthur Furlan</a> &#8211; Trabalhei com o cara, ele é fera na parada.</li>
<li> <strong>Python</strong> &#8211; Luiz Carlos Geron &#8211; Já fiz este curso, uma execelente forma de iniciar-se na linguagem.</li>
<li> <strong>Programação em Qt</strong> &#8211; <a href="http://www.rallyzeiros.com.br/wordpress/">Gustavo Boiko</a> &#8211; O Cara do Qt4 da Mandriva.</li>
</ul>
<p>Faça <a href="http://www.secomp.inf.br/como-participar/">sua inscrição</a>, escolha <a href="http://www.secomp.inf.br/atividades">o que quer fazer</a>, e nos vemos lá!</p>
<p><em>ps.: Brincadeiras à parte, o Boiko prometeu-me provar durante o curso que QT é muito mais que um toolkit gráfico. Essa eu quero ver! =)</em></p>
]]></content:encoded>
			<wfw:commentRss>http://www.danilocesar.com/blog/2007/10/17/cursos-e-palestras-na-semana-da-computacao-da-ufpr/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>PHP e Null Bytes issues</title>
		<link>http://www.danilocesar.com/blog/2007/08/24/php-e-null-bytes-issues/</link>
		<comments>http://www.danilocesar.com/blog/2007/08/24/php-e-null-bytes-issues/#comments</comments>
		<pubDate>Fri, 24 Aug 2007 14:29:54 +0000</pubDate>
		<dc:creator>Danilo Cesar</dc:creator>
				<category><![CDATA[/dev/null]]></category>
		<category><![CDATA[HTTP]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Quick Tip]]></category>
		<category><![CDATA[Segurança]]></category>
		<category><![CDATA[Ubuntu-Br]]></category>

		<guid isPermaLink="false">http://www.danilocesar.com/blog/2007/08/24/php-e-null-bytes-issues/</guid>
		<description><![CDATA[if (file_exists(realpath($_GET['teste'] . ".php"))){ echo 'OK'; } else{ echo 'Fail'; } Aparentemente esta verificação é bastante segura né? Infelizmente não. O PHP usa o padrão de strings usado em C (aquelas terminadas com &#8216;\0&#8242;), o que gera um problema bastante conhecido chamado de Null Byte issue [1]. O que acontece se seu $_GET['teste'], aparentemente seguro, [...]]]></description>
			<content:encoded><![CDATA[<p><code lang="php"></p>
<p>if (file_exists(realpath($_GET['teste'] . ".php"))){<br />
echo 'OK';<br />
}<br />
else{<br />
echo 'Fail';<br />
}<br />
</code></p>
<p>Aparentemente esta verificação é bastante segura né?</p>
<p>Infelizmente não. O PHP usa o padrão de strings usado em C (aquelas terminadas com &#8216;\0&#8242;), o que gera um problema bastante conhecido chamado de Null Byte issue [1].</p>
<p>O que acontece se seu $_GET['teste'], aparentemente seguro, tiver um &#8216;\0&#8242;?<br />
Sua função realpath vai verificar apenas o $_GET['teste'] e nem vai saber que existe um &#8220;.php&#8221;</p>
<p>Faça o teste:</p>
<p>http://localhost/labs/teste.php?teste=/etc/passwd%00</p>
<p>(%00 é o código hexadecimal aceito pelos browsers para o \0)</p>
<p>E o resultado:</p>
<p><code>OK</code></p>
<p>[1] <a href="http://en.wikipedia.org/wiki/Null_character">http://en.wikipedia.org/wiki/Null_character</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.danilocesar.com/blog/2007/08/24/php-e-null-bytes-issues/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

