<?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; SL</title>
	<atom:link href="http://www.danilocesar.com/blog/category/sl/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>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>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>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>É uma cilada Bino!</title>
		<link>http://www.danilocesar.com/blog/2008/05/06/e-uma-cilada-bino/</link>
		<comments>http://www.danilocesar.com/blog/2008/05/06/e-uma-cilada-bino/#comments</comments>
		<pubDate>Wed, 07 May 2008 00:39:29 +0000</pubDate>
		<dc:creator>Danilo Cesar</dc:creator>
				<category><![CDATA[/dev/null]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Mandriva]]></category>
		<category><![CDATA[SL]]></category>
		<category><![CDATA[Ubuntu-Br]]></category>
		<category><![CDATA[fedora]]></category>
		<category><![CDATA[FUD]]></category>
		<category><![CDATA[mistakes]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://www.danilocesar.com/blog/?p=131</guid>
		<description><![CDATA[http://www.informationweek.com/news/software/linux/showArticle.jhtml?articleID=207&#8230; Acho que vale a pena ler os comentários antes de ler o texto: Yes, the fact that the writer thinks that MEPIS is based on Mandriva shows how little knowledge he has, and how poorly researched his paper is..]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.informationweek.com/news/software/linux/showArticle.jhtml?articleID=207200145&amp;pgno=1&amp;queryText=&amp;isPrev=" target="_self">http://www.informationweek.com/news/software/linux/showArticle.jhtml?articleID=207&#8230;</a></p>
<p>Acho que vale a pena ler os comentários antes de ler o texto:</p>
<blockquote><p><em><span>Yes, the fact that the writer thinks that MEPIS is based on Mandriva shows how little knowledge he has, and how poorly researched his paper is.. </span></em></p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://www.danilocesar.com/blog/2008/05/06/e-uma-cilada-bino/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>Pychord 2 saindo do forno</title>
		<link>http://www.danilocesar.com/blog/2008/03/30/pychord-2-saindo-do-forno/</link>
		<comments>http://www.danilocesar.com/blog/2008/03/30/pychord-2-saindo-do-forno/#comments</comments>
		<pubDate>Mon, 31 Mar 2008 00:29:03 +0000</pubDate>
		<dc:creator>Danilo Cesar</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Maemo]]></category>
		<category><![CDATA[Mobile]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[SL]]></category>
		<category><![CDATA[acordes]]></category>
		<category><![CDATA[cifra]]></category>
		<category><![CDATA[música]]></category>
		<category><![CDATA[N800]]></category>
		<category><![CDATA[pychord]]></category>

		<guid isPermaLink="false">http://www.danilocesar.com/blog/2008/03/30/pychord-2-saindo-do-forno/</guid>
		<description><![CDATA[Certa vez um colega de trabalho de uma das empresas por onde passei comentou: &#8220;Não basta colocar um filho no mundo, é preciso alimenta-lo, educa-lo e fazer o possível para vê-lo crescido!&#8221; Pois bem, depois de certo tempo resolvi voltar a mexer no abandonado código do pychord e adicionar algumas funcionalidades que eu precisava. Após [...]]]></description>
			<content:encoded><![CDATA[<p>Certa vez um colega de trabalho de uma das empresas por onde passei comentou:</p>
<blockquote><p><strong>&#8220;Não basta colocar um filho no mundo, é preciso alimenta-lo, educa-lo e fazer o possível para vê-lo crescido!&#8221;</strong></p></blockquote>
<p>Pois bem, depois de certo tempo resolvi voltar a mexer no <a href="https://garage.maemo.org/svn/pychord/trunk">abandonado código</a> do <a href="https://garage.maemo.org/projects/pychord/">pychord</a> e adicionar algumas funcionalidades que eu precisava.</p>
<p>Após duas tentativas frustradas (0.4.5 e 0.5) percebi que era necessário re-escrever a biblioteca gráfica. Assim foi feito. Adicionei o conceito de <a href="http://en.wikipedia.org/wiki/Window_%28computing%29">janela</a>, conteiner de <a href="http://en.wikipedia.org/wiki/GUI_widget"><em>widgets</em>,</a> melhorei a herança entre classes, etc.  A interface não mudou muita coisa, <a href="http://www.pygame.org">pygame</a> é meio chato para isso.</p>
<p>Ainda estou usando o padrão <strong>.chr </strong>criado para a <a href="http://labs.danilocesar.com/blog/2007/09/16/pychord-for-maemo-get-your-install-here/">primeira versão</a>, mas pretendo adicionar o formato <a href="http://en.wikipedia.org/wiki/XML">XML</a> <a href="http://www.opensong.org">opensong</a> em breve.</p>
<p>A parte legal, e a novidade mais visível, é que criei uma heurística para decidir quais linhas são acordes e quais não são. Esta heurística pretendo ir melhorando a medida que for encontrando casos em que ela não funcione.</p>
<p>Para resumir: ao nível de usuário, as modificações foram:</p>
<ol>
<li>Heurística para reconhecer/diferenciar acordes de letra de músicas</li>
<li>Mudança de tom</li>
<li>Listas clicáveis e móveis</li>
<li>Suporte ao Maemo OS2008</li>
<li>Controle da luminosidade durante a apesentação das cifras ( o display não apaga durante a mostragem mais )</li>
</ol>
<h4>A parte nerd</h4>
<p>A idéia era que o código da interface pudesse ser reutilizada em outros projetos, logo trabalhei para ter uma GUI mais conscistente do que a anterior. Utilizando melhor o conceito de herança foi possível simplificar a utilização da lib, deixando as coisas com menos cara de gambiarra.</p>
<p>Através do conceito de <em>slots</em> ficou bem simples implementar mais de uma <em>action </em>para um mesmo evento.</p>
<h4>Screenshots</h4>
<p><img src="http://www.danilocesar.com/blog/wp-content/uploads/2008/03/picture-1.png" alt="Pychord-screenshot" height="271" width="466" /></p>
<p>Tela de busca, não mudou muito de como era anteriormente.</p>
<p><img src="http://www.danilocesar.com/blog/wp-content/uploads/2008/03/picture-2.png" alt="Pychord-screenshot2" height="275" width="465" /></p>
<p>Visualização da cifra</p>
<p><img src="http://www.danilocesar.com/blog/wp-content/uploads/2008/03/picture-3.png" alt="Pychord-Screenshot3" height="277" width="464" /></p>
<p>Mudaça de tom.</p>
<p>Como sempre, o arquivo de instalação pode ser pego <a href="/home/daniloeu/labs.danilocesar.com/maemo/pychord">aqui</a>. Ainda não criei um repositório pois o aplicativo está em fase de testes. Mas pretendo fazer isto em breve.</p>
<p><em><strong>[UPDATE 03/03/2008] </strong></em>Por problemas de codificação dentro do módulo sqlite3, os textos devem estar em formato UTF-8&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.danilocesar.com/blog/2008/03/30/pychord-2-saindo-do-forno/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>
	</channel>
</rss>

