<?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</title>
	<atom:link href="http://www.danilocesar.com/blog/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>Symbian, 2D games e Flags de Optimização.</title>
		<link>http://www.danilocesar.com/blog/2010/09/30/symbian-2d-games-e-flags-de-optimizacao-performance/</link>
		<comments>http://www.danilocesar.com/blog/2010/09/30/symbian-2d-games-e-flags-de-optimizacao-performance/#comments</comments>
		<pubDate>Thu, 30 Sep 2010 15:53:34 +0000</pubDate>
		<dc:creator>Danilo Cesar</dc:creator>
				<category><![CDATA[kde]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Mac]]></category>
		<category><![CDATA[Maemo]]></category>
		<category><![CDATA[Mandriva]]></category>
		<category><![CDATA[Mobile]]></category>
		<category><![CDATA[Portáteis]]></category>
		<category><![CDATA[QT]]></category>
		<category><![CDATA[SL]]></category>
		<category><![CDATA[Nokia]]></category>
		<category><![CDATA[Symbian]]></category>

		<guid isPermaLink="false">http://www.danilocesar.com/blog/?p=224</guid>
		<description><![CDATA[Este artigo é uma tradução rápida do original&#8230; Após dois anos e meio desenvolvendo rich ui&#8217;s usando QGraphicsView e tentando todo tipo de flags exóticas ou abordagens diferentes para conseguir melhores resultados de performance com Symbian, estou publicando aquelas que podem ser úteis para programadores de jogos. Com a ajuda do Ademar escolhemos um bom [...]]]></description>
			<content:encoded><![CDATA[<p><em>Este artigo é uma tradução rápida do <a href="http://labs.danilocesar.com/blog/2010/09/19/symbian-2d-games-and-qt-optimization-flags/">original</a>&#8230;</em><br />
Após dois anos e meio desenvolvendo <em>rich ui&#8217;s</em> usando QGraphicsView e tentando todo tipo de flags exóticas ou abordagens diferentes para conseguir melhores resultados de performance com Symbian, estou publicando aquelas que podem ser úteis para programadores de jogos.</p>
<p>Com a ajuda do <a href="http://www.ademar.org">Ademar</a> escolhemos um bom caso de uso. Um &#8220;bouncing game&#8221;.</p>
<h2>O Jogo</h2>
<p><img class="size-medium wp-image-52 alignleft" style="margin: 2px 20px 2px 2px;" title="ChainReaction" src="http://labs.danilocesar.com/blog/wp-content/uploads/2010/09/10_balls-168x300.png" alt="10 balls image of chainreaction game" width="151" height="270" /></p>
<div style="display: block;">
<p>O Jogo é bem simples: Algumas bolinhas correndo pela tela; Se você pressionar alguma delas ela vai explodir. Se uma bolinha explodida tocar em uma bola normal, esta explode também. Mas no fim das contas a lógica do jogo não é muito importante agora, mas sim as características do jogo vistas pela visão de um desenvolvedor. São elas:</p>
<ul>
<li>Background estático.</li>
<li>Bolinhas podem ser implementadas como QGraphicsItem.</li>
<li>Bolinhas vermelhas estão sempre em movimento.</li>
<li>Não acontece colisão entre as bolinhas não explodidas.</li>
<li>A lista de elementos pode crescer.</li>
<li>Os elementos estão espalhados aleatoriamente pela tela.</li>
</ul>
</div>
<div style="display: block; clear: both;"><span style="color: #ff6600;"><strong><em>Os comentários abaixo são válidos para jogos com as características acima. Mudanças nestas características podem influenciar o resultado final.</em></strong></span></div>
<h2>As flags</h2>
<p>As flags que comentarei neste post são:</p>
<ul>
<li><a href="http://doc.trolltech.com/4.6/qgraphicsscene.html#ItemIndexMethod-enum">QGraphicsScene::ItemIndexMethod</a></li>
<li><a href="http://doc.trolltech.com/4.6/qgraphicsview.html#OptimizationFlag-enum">QGraphicsView::OptimizationFlags</a></li>
<li><a href="http://doc.trolltech.com/4.6/qgraphicsview.html#ViewportUpdateMode-enum">QGraphicsView::ViewportUpdateMode</a></li>
</ul>
<h2>Os resultados</h2>
<p>* Os testes foram executados em um Nokia 5800, RM-356 rodando firmware V51.0.006 com Qt 4.6.3.<br />
** O eixo Y dos testes é o FPS. Quanto maior, melhor.</p>
<h3>Testes com 10 elementos</h3>
<p><a href="http://labs.danilocesar.com/blog/wp-content/uploads/2010/09/bsp-noindex-all.png"><img class="alignnone size-full wp-image-56" title="bsp-noindex-all" src="http://labs.danilocesar.com/blog/wp-content/uploads/2010/09/bsp-noindex-all.png" alt="" width="721" height="374" /></a></p>
<p>Primeiro de tudo, tentei as 4 formas de update da Viewport usando 10 elementos na tela. O MinimalViewportUpdate e o SmartViewportUpdate renderam a maior taxa de FPS (34 e 33.5). A documentação da biblioteca mostra que <a href="http://doc.trolltech.com/4.6/qgraphicsscene.html#ItemIndexMethod-enum">NoIndex</a> é a melhor opção para cenas dinâmicas. Bem, a diferença é bem pequena, mas é verdade.</p>
<p>Neste caso, para os próximos testes, usarei sempre NoIndex.</p>
<h4>E quanto às flags?</h4>
<p><a href="http://labs.danilocesar.com/blog/wp-content/uploads/2010/09/opt-1.png"><img class="alignnone size-full wp-image-57" title="opt-1" src="http://labs.danilocesar.com/blog/wp-content/uploads/2010/09/opt-1.png" alt="" width="575" height="379" /></a></p>
<p>Dado os melhores resultado dos últimos testes (SmartViewportUpdate and BoundingRectViewportUpdate) foi feito outro teste com as duas flags de optimização <a href="http://doc.trolltech.com/4.6/qgraphicsview.html#OptimizationFlag-enum">QGraphicsView::DontSavePainterState</a> e <a href="QGraphicsView::DontAdjustForAntialiasing">QGraphicsView::DontAdjustForAntialiasing</a>. A conclusão foi que estas flags de optimização rendem uma pequena melhora no desempenho, mas somente se você puder controlar precisamente a maneira como seus elementos são desenhados. Caso contrário você pode enfrentar problemas de renderização.</p>
<h3>20 elementos</h3>
<p><a href="http://labs.danilocesar.com/blog/wp-content/uploads/2010/09/opt-20.png"><img class="alignnone size-full wp-image-58" title="opt-20" src="http://labs.danilocesar.com/blog/wp-content/uploads/2010/09/opt-20.png" alt="" width="728" height="375" /></a></p>
<h3>30 elementos</h3>
<p><a href="http://labs.danilocesar.com/blog/wp-content/uploads/2010/09/opt-30.png"><img class="alignnone size-full wp-image-60" title="opt-30" src="http://labs.danilocesar.com/blog/wp-content/uploads/2010/09/opt-30.png" alt="" width="723" height="376" /></a></p>
<h3>40 elementos</h3>
<p><a href="http://labs.danilocesar.com/blog/wp-content/uploads/2010/09/opt-40.png"><img class="alignnone size-full wp-image-61" title="opt-40" src="http://labs.danilocesar.com/blog/wp-content/uploads/2010/09/opt-40.png" alt="" width="723" height="369" /></a></p>
<h2>Lições aprendidas</h2>
<p>É importante selecionar corretamente a maneira como serão feitos dos updates da Viewport. Isso pode fazer a diferença.</p>
<p>Se existem muitos elementos dinâmicos, e se eles estão espalhados por toda a tela, é mais barato pintar toda a tela (ou pelo menos o bounding rect) do que tentar determinar a área afetada pelo movimento e só pintar estes espaços.</p>
<p>Para ser honesto eu estava esperando um resultado melhor do FullViewportUpdate, mas acredito que obteríamos melhores resultados (do que o BoundingRect) se fosse utilizado um background não estático.</p>
<h2>Mas&#8230; E se..?</h2>
<p>Q:O que aconteceria se fosse utilizado somente um único graphicsItem para pintar todas a bolinhas? O que aconteceria se uma bolinha não fosse um ítem, mas apenas um objeto com um método de renderização?</p>
<p>R: Fiquei um pouco surpreso com o resultado, mas o desempenho do Qt (especialmente os states do QPainter) melhorou muito desde a versão 4.6 e o resultado deste teste obteve resultados piores do que usando vários QGraphicsItems. Esta abordagem obtém melhor rendimento que a abordagem padrão apenas se o número de elementos é maior que 60.</p>
<p><a href="http://labs.danilocesar.com/blog/wp-content/uploads/2010/09/hack.png"><img class="alignnone size-full wp-image-62" title="hack" src="http://labs.danilocesar.com/blog/wp-content/uploads/2010/09/hack.png" alt="" width="521" height="379" /></a></p>
<h2>Depois de escrever os testes, o que acontece com o código?</h2>
<p>Usando os conhecimentos adquirido pelos testes e com a ajuda de uma das designers do INdT &#8211; <a href="http://www.naraosga.com">Nara</a> &#8211; estou liberando uma versão de um jogo baseado na engine dos testes. Não está totalmente concluído, faltam alguns elementos, mas já está jogável. =)</p>
<p><a href="http://labs.danilocesar.com/blog/wp-content/uploads/2010/09/chubbalubba.png"><img class="alignnone size-medium wp-image-69" title="chubbalubba" src="http://labs.danilocesar.com/blog/wp-content/uploads/2010/09/chubbalubba-168x300.png" alt="" width="168" height="300" /></a></p>
<p><a href="http://labs.danilocesar.com/qt/symbian/chubbyluba.sis">Symbian package here!</a></p>
<p>Por enquanto segue apenas o demo, e em breve a versão completa na Ovi Store mais perto de você!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.danilocesar.com/blog/2010/09/30/symbian-2d-games-e-flags-de-optimizacao-performance/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>QtMobility Project, ou desenvolvendo para Symbian no Linux</title>
		<link>http://www.danilocesar.com/blog/2010/02/25/qtmobility-project-ou-desenvolvendo-para-symbian-no-linux/</link>
		<comments>http://www.danilocesar.com/blog/2010/02/25/qtmobility-project-ou-desenvolvendo-para-symbian-no-linux/#comments</comments>
		<pubDate>Thu, 25 Feb 2010 19:27:10 +0000</pubDate>
		<dc:creator>Danilo Cesar</dc:creator>
				<category><![CDATA[debian]]></category>
		<category><![CDATA[kde]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Maemo]]></category>
		<category><![CDATA[Mandriva]]></category>
		<category><![CDATA[Mobile]]></category>
		<category><![CDATA[QT]]></category>
		<category><![CDATA[SL]]></category>
		<category><![CDATA[S60]]></category>
		<category><![CDATA[Symbian]]></category>

		<guid isPermaLink="false">http://www.danilocesar.com/blog/?p=206</guid>
		<description><![CDATA[Como nem só de Maemo Meego vive o homem, então é hora de iniciar projetos com Symbian. O fato de sermos usuários Linux não nos afasta mais deste objetivo. O colega Lizardo, não muito feliz com a dependência do Janelas, adaptou com sucesso o famigerado GNUPOC para funcionar com o Qt 4.6.X, dando-nos assim um [...]]]></description>
			<content:encoded><![CDATA[<p>Como nem só de <del datetime="2010-02-25T18:15:55+00:00">Maemo</del> Meego vive o homem, então é hora de iniciar projetos com Symbian.</p>
<p>O fato de sermos usuários Linux não nos afasta mais deste objetivo. O colega <a href="http://lizardo.wordpress.com">Lizardo</a>, não muito feliz com a dependência do Janelas, <a href="http://lizardo.wordpress.com/2010/02/18/installing-qt-for-symbian-sdk-4-6-2-on-linux/">adaptou com sucesso</a> o famigerado <a href="http://www.martin.st/symbian/">GNUPOC</a> para funcionar com o Qt 4.6.X, dando-nos assim um ambiente <del datetime="2010-02-25T18:15:55+00:00">agradável</del> de desenvolvimento Qt/Symbian no Linux.</p>
<p>Graças a ele temos qmake, QGraphicsView e QCoisas funcionando da mesma forma como funcionavam no desktop.</p>
<p><strong>E as APIs específicas como GPS, sensores e rede?</strong></p>
<p>A idéia do Qt everywhere inclui abstrair a API não tão bonita do symbian e maemo (e outros) para uma única API Qt.</p>
<p>Seguindo este princípio lançaram, dia 15/02, um pacote beta do <a href="http://qt.nokia.com/developer/new-qt-apis">Qt-Mobility Project</a>, com classes Qt para sensores, GPS, contatos e etc.</p>
<p>A instalação é simples mas, para <a href="http://lizardo.wordpress.com/2010/02/18/installing-qt-for-symbian-sdk-4-6-2-on-linux/">quem seguiu os passos do Lizardo</a>, basta utilizar este <a href="http://labs.danilocesar.com/files/qt-mobility-install.sh">script</a> e passar o diretório onde o download do <a href="http://get.qt.nokia.com/qt/solutions/qt-mobility-symbian-1.0.0-beta1.zip">pacote</a> foi feito:</p>
<p><code>qt-mobility-install.sh &lt;directory&gt; </code></p>
<p><strong>*Observação</strong>: Não esqueça de setar as variáveis de ambiente $EPOCROOT e $PATH, de forma que o qmake utilizado seja o da instalação para S60</p>
]]></content:encoded>
			<wfw:commentRss>http://www.danilocesar.com/blog/2010/02/25/qtmobility-project-ou-desenvolvendo-para-symbian-no-linux/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Velox Ultra &#8211; A Mentira da OI</title>
		<link>http://www.danilocesar.com/blog/2009/09/17/velox-ultra-a-mentira-da-oi/</link>
		<comments>http://www.danilocesar.com/blog/2009/09/17/velox-ultra-a-mentira-da-oi/#comments</comments>
		<pubDate>Thu, 17 Sep 2009 14:14:17 +0000</pubDate>
		<dc:creator>Danilo Cesar</dc:creator>
				<category><![CDATA[/dev/null]]></category>
		<category><![CDATA[Mandriva]]></category>
		<category><![CDATA[metira]]></category>
		<category><![CDATA[oi]]></category>
		<category><![CDATA[velox]]></category>

		<guid isPermaLink="false">http://www.danilocesar.com/blog/?p=203</guid>
		<description><![CDATA[Sou assinante do Oi conta total a 1 ano e desde a última quinta-feira (10/08/2009) estou tentando fazer um upgrade do meu velox para 2 MB, como está descrito no site. De acordo com a atendente da Oi, isto era impossível (mesmo eu pagando o conta-total e não tendo o serviço que está no site). [...]]]></description>
			<content:encoded><![CDATA[<p>Sou assinante do Oi conta total a 1 ano e desde a última quinta-feira (10/08/2009) estou tentando fazer um upgrade do meu velox para 2 MB, como está descrito no <a href="http://www.novaoi.com.br/portal/site/NovaOi/menuitem.74476e871edc8be9f72f820349cc02a0/?vgnextoid=f6d73c08cd09d110VgnVCM10000021d0200aRCRD">site</a>.</p>
<p>De acordo com a atendente da Oi, isto era impossível (mesmo eu pagando o conta-total e não tendo o serviço que está no site).</p>
<p>Tentei então sair do Oi conta total e comprar tudo separado, com um link de 8MB em casa. Isto também era impossível.</p>
<p>Alguns colegas aqui do trabalho tentaram a mesma coisa, e para nenhum deles a mudança estava disponível.</p>
<p>Enfim, a OI ofereceu um produto que ela não disponibiliza para ninguém. Será que cabe uma reclamação na ANATEL?</p>
<p>Vai ser interessante ver o que vai acontecer quando aparecer uma companhia <a href="http://www.gvt.com.br">telefônica de verdade</a> aqui no Nordeste.</p>
<p>Termino meu #mimimi com o excelênte vídeo de divulgação do <strong>Velox vs <a href="http://pt.wikipedia.org/wiki/Orestes_Qu%C3%A9rcia">Orestes Quércia</a></strong></p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="425" height="344" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/6XBcofAYJHA&amp;hl=en&amp;fs=1&amp;" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="425" height="344" src="http://www.youtube.com/v/6XBcofAYJHA&amp;hl=en&amp;fs=1&amp;" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
]]></content:encoded>
			<wfw:commentRss>http://www.danilocesar.com/blog/2009/09/17/velox-ultra-a-mentira-da-oi/feed/</wfw:commentRss>
		<slash:comments>34</slash:comments>
		</item>
		<item>
		<title>Have you ever seen KDE mobil?</title>
		<link>http://www.danilocesar.com/blog/2009/08/27/have-you-ever-seen-kde-mobil/</link>
		<comments>http://www.danilocesar.com/blog/2009/08/27/have-you-ever-seen-kde-mobil/#comments</comments>
		<pubDate>Thu, 27 Aug 2009 17:27:02 +0000</pubDate>
		<dc:creator>Danilo Cesar</dc:creator>
				<category><![CDATA[/dev/null]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[kde]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Mandriva]]></category>
		<category><![CDATA[Mobile]]></category>
		<category><![CDATA[QT]]></category>

		<guid isPermaLink="false">http://www.danilocesar.com/blog/?p=199</guid>
		<description><![CDATA[I have! =)]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.danilocesar.com/blog/wp-content/uploads/2009/08/kde_mobil.jpg"><img class="alignnone size-medium wp-image-198" title="kde_mobil" src="http://www.danilocesar.com/blog/wp-content/uploads/2009/08/kde_mobil-300x225.jpg" alt="kde_mobil" width="300" height="225" /></a></p>
<p>I have! =)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.danilocesar.com/blog/2009/08/27/have-you-ever-seen-kde-mobil/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<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>RSS client and RSS DataProvider via QtDBus</title>
		<link>http://www.danilocesar.com/blog/2009/03/26/rss-client-and-rss-dataprovider-via-qtdbus/</link>
		<comments>http://www.danilocesar.com/blog/2009/03/26/rss-client-and-rss-dataprovider-via-qtdbus/#comments</comments>
		<pubDate>Thu, 26 Mar 2009 22:04:37 +0000</pubDate>
		<dc:creator>Danilo Cesar</dc:creator>
				<category><![CDATA[debian]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Maemo]]></category>
		<category><![CDATA[Mandriva]]></category>
		<category><![CDATA[QT]]></category>
		<category><![CDATA[SL]]></category>
		<category><![CDATA[Ubuntu-Br]]></category>
		<category><![CDATA[DBus]]></category>

		<guid isPermaLink="false">http://www.danilocesar.com/blog/?p=176</guid>
		<description><![CDATA[Estou estudando DBus há alguns dias, e percebi que existem poucos exemplos do módulo QtDBus. Sendo assim, resolvi publicar um código de um pequeno protótipo que fiz. Neste meu estudo produzi uma espécie de Data Provider, que é um serviço que fica rodando sobre o DBus e é responsável por receber atualizações de rss de [...]]]></description>
			<content:encoded><![CDATA[<p>Estou estudando <a href="http://dbus.freedesktop.org">DBus</a> há alguns dias, e percebi que existem poucos exemplos do módulo <a href="http://doc.trolltech.com/4.5/qtdbus.html">QtDBus</a>. Sendo assim, resolvi publicar um código de um pequeno protótipo que fiz.</p>
<p>Neste meu estudo produzi uma espécie de <em>Data Provider</em>, que é um serviço que fica rodando sobre o DBus e é responsável por receber atualizações de rss de um determinado <a href="http://danilocesar.com">blog</a>. Os clientes não acessam diretamente o rss mas sim este <em>provider,</em> via canal DBus, e são notificados quando ocorre alguma atualização.</p>
<p><img class="alignnone size-full wp-image-177" title="dbus-example" src="http://www.danilocesar.com/blog/wp-content/uploads/2009/03/dbus-example.png" alt="dbus-example" width="401" height="342" /></p>
<p>O conceito é simples, o código também. Não estou usando nada como QDBusAdaptors ou classes afins. Na verdade, o exemplo é válido pela <em>didática</em> pois exemplifica uma forma de enviar objetos &#8220;estranhos&#8221; via DBus.</p>
<p>O código pode ser obtido com:<br />
<code>git clone http://labs.danilocesar.com/git/qdbus-test.git</code></p>
]]></content:encoded>
			<wfw:commentRss>http://www.danilocesar.com/blog/2009/03/26/rss-client-and-rss-dataprovider-via-qtdbus/feed/</wfw:commentRss>
		<slash:comments>1</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>Porquê Java ainda é útil!</title>
		<link>http://www.danilocesar.com/blog/2008/11/26/porque-java-ainda-e-util/</link>
		<comments>http://www.danilocesar.com/blog/2008/11/26/porque-java-ainda-e-util/#comments</comments>
		<pubDate>Thu, 27 Nov 2008 01:03:07 +0000</pubDate>
		<dc:creator>Danilo Cesar</dc:creator>
				<category><![CDATA[/dev/null]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Mandriva]]></category>
		<category><![CDATA[PyS60]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[QT]]></category>
		<category><![CDATA[Humor]]></category>

		<guid isPermaLink="false">http://www.danilocesar.com/blog/?p=161</guid>
		<description><![CDATA[&#60;/joke&#62;]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.danilocesar.com/blog/wp-content/uploads/2008/11/java_amp.jpg"><img class="alignnone size-medium wp-image-162" title="Utilidade de Java" src="http://www.danilocesar.com/blog/wp-content/uploads/2008/11/java_amp-300x225.jpg" alt="" width="300" height="225" /></a></p>
<p>&lt;/joke&gt;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.danilocesar.com/blog/2008/11/26/porque-java-ainda-e-util/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>Vou-me embora para Pasárgada</title>
		<link>http://www.danilocesar.com/blog/2008/07/11/vou-me-embora-para-pasargada/</link>
		<comments>http://www.danilocesar.com/blog/2008/07/11/vou-me-embora-para-pasargada/#comments</comments>
		<pubDate>Fri, 11 Jul 2008 17:11:03 +0000</pubDate>
		<dc:creator>Danilo Cesar</dc:creator>
				<category><![CDATA[/dev/null]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Maemo]]></category>
		<category><![CDATA[Mandriva]]></category>
		<category><![CDATA[PyS60]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[QT]]></category>
		<category><![CDATA[SL]]></category>
		<category><![CDATA[Ubuntu-Br]]></category>
		<category><![CDATA[UFPR]]></category>
		<category><![CDATA[viagens]]></category>
		<category><![CDATA[Nokia]]></category>
		<category><![CDATA[recife]]></category>
		<category><![CDATA[trabalho]]></category>

		<guid isPermaLink="false">http://www.danilocesar.com/blog/?p=144</guid>
		<description><![CDATA[Vou-me embora para Pasárgada Lá sou amigo do Reis Novidades: 1 &#8211; Estou formado em Ciência da Computação pela UFPR. 2 &#8211; Estou deixando Curitiba. Após 22 anos na saudosa Curitiba estou deixando-a, e indo para Recife-PE. Só tenho o que agradecer a esta magnífica cidade, à minha família que fica por aqui, e aos [...]]]></description>
			<content:encoded><![CDATA[<blockquote><p>Vou-me embora para Pasárgada<br />
Lá sou amigo do <em>Reis</em></p></blockquote>
<p>Novidades:</p>
<p>1 &#8211; Estou formado em <a href="http://pt.wikipedia.org/wiki/Ci%C3%AAncia_da_computa%C3%A7%C3%A3o" target="_blank">Ciência da Computação</a> pela <a href="http://inf.ufpr.br">UFPR</a>.</p>
<p>2 &#8211; Estou deixando <a href="http://pt.wikipedia.org/wiki/Curitiba">Curitiba</a>. Após 22 anos na saudosa Curitiba estou deixando-a, e indo para <a href="http://pt.wikipedia.org/wiki/Recife" target="_blank">Recife-PE</a>.</p>
<p style="text-align: left;">Só tenho o que agradecer a esta magnífica cidade, à minha família que fica por aqui, e aos meus <a href="http://tiagosh.wordpress.com/" target="_blank">colegas</a> <a href="http://blog.cpu.eti.br/">da</a> <a href="http://blog.skyegg.org/" target="_blank">Mandriva</a>, <a href="http://www.gustavoboiko.org/blog/" target="_blank">com</a> <a href="http://felipearruda.com/" target="_blank">os</a> <a href="http://warever.info/sr/blog/">quais</a> <a href="http://www.kdedevelopers.org/blog/74" target="_blank">pude</a> <a href="http://helllabs.org/blog/">aprender</a> <a href="http://caio.ueberalles.net/log/">bastante</a>.</p>
<p>E esperar que este novo <a href="http://www.indt.org.br/" target="_blank">desafio</a> seja tão bom e gratificante quanto <a href="http://wiki.mandriva.com/en/Home" target="_blank">o antigo</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.danilocesar.com/blog/2008/07/11/vou-me-embora-para-pasargada/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>
	</channel>
</rss>

