<?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; Maemo</title>
	<atom:link href="http://www.danilocesar.com/blog/tag/maemo/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>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>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>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>GoogleMaps errado não é mais problema! Patch para maemo-mapper aqui!</title>
		<link>http://www.danilocesar.com/blog/2008/01/19/googlemaps-errado-nao-e-mais-problema-patch-para-maemo-mapper-aqui/</link>
		<comments>http://www.danilocesar.com/blog/2008/01/19/googlemaps-errado-nao-e-mais-problema-patch-para-maemo-mapper-aqui/#comments</comments>
		<pubDate>Sat, 19 Jan 2008 21:34:41 +0000</pubDate>
		<dc:creator>Danilo Cesar</dc:creator>
				<category><![CDATA[/dev/null]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Maemo]]></category>
		<category><![CDATA[Mobile]]></category>
		<category><![CDATA[SL]]></category>
		<category><![CDATA[viagens]]></category>
		<category><![CDATA[google-maps]]></category>
		<category><![CDATA[gps]]></category>
		<category><![CDATA[hacker]]></category>
		<category><![CDATA[mapper]]></category>

		<guid isPermaLink="false">http://www.danilocesar.com/blog/2008/01/19/googlemaps-errado-nao-e-mais-problema-patch-para-maemo-mapper-aqui/</guid>
		<description><![CDATA[Como descrevi aqui a alguns dias atrás, o GoogleStreeMaps tem problema em posicionar geograficamente as ruas de algumas cidades do Brasil ( principalmente do interior ). Para quem o utiliza apenas para ver rotas não tem problema algum, mas para quem utiliza-o como motor para GPS a coisa muda de figura. O que acontecia era [...]]]></description>
			<content:encoded><![CDATA[<p>Como <a href="http://www.danilocesar.com/blog/2008/01/11/notas-de-um-viajante/">descrevi aqui a alguns dias atrás</a>, o <a href="http://maps.google.com" target="_blank">GoogleStreeMaps</a> tem problema em posicionar geograficamente as ruas de algumas cidades do Brasil ( principalmente do interior ). Para quem o utiliza apenas para ver rotas não tem problema algum, mas para quem utiliza-o como motor para <a href="pt.wikipedia.org/wiki/Sistema_de_Posicionamento_Global">GPS</a> a coisa muda de figura. O que acontecia era mais ou menos isto:</p>
<p><img src="http://labs.danilocesar.com/blog/wp-content/uploads/2008/01/google-maps_error.png" alt="Error on GoogleStreetMaps" height="284" hspace="20" width="184" /></p>
<p><em>(A linha vermelha indica o que o carro estava fazendo, a linha verde indica o que o GoogleStreetMaps indicava fazer) </em></p>
<p>Como não quero passar aperto em Sampa semana que vem, e sei que Sorocaba e Itu estão na lista das cidades que o GoogleMaps erra, resolvi escrever um pequeno patch para o <a href="http://garage.maemo.org/projects/maemo-mapper" target="_blank">Maemo-Mapper</a>, que adiciona a seguinte <em>feature</em>: &#8220;Calibrar o Mapa&#8221;.</p>
<p>Funciona mais ou menos assim: Ao identificar um erro de deslocamento, o usuário vai no menu Mapas e depois em &#8220;Calibrar Mapa&#8221;. Logo após clica-se em algum lugar da tela onde ele crê que realmente está.</p>
<blockquote><p><em>O ideal mesmo seria parar o carro em uma esquina, identificar a rua onde está e a rua que irá cruzar, e clicar bem em cima.</em></p></blockquote>
<p>O algoritmo faz duas coisas muito simples: Calcula a diferença da Latitude e Longitude do clique e da posição real indicada pelo cursor. Em mãos desta diferença, ela será sempre adiciona à Latitude e Longitude na leitura do GPS.</p>
<p>Desta forma conseguiremos andar sempre em cima da rota. O resultado final será algo como:</p>
<p><img src="http://labs.danilocesar.com/blog/wp-content/uploads/2008/01/google-maps_no_error.png" alt="GoogleMapsError Fixed by Maemo-Mapper Calibrate Feature" height="296" hspace="20" width="350" /></p>
<p><em>(Há! bem melhor agora!) </em></p>
<p>Bom, se o patch mostrar-se útil para mais alguém posso envia-lo à equipe do <a href="http://garage.maemo.org/projects/maemo-mapper">maemo-mapper</a>&#8230; Para mim com certeza o será.</p>
<p>O patch pode ser encontrado <a href="http://labs.danilocesar.com/maemo/mapper/maemo-mapper2.3_adding_map_calibration.patch" target="_blank">aqui</a>, e o pacote para instalar <a href="http://http://labs.danilocesar.com/maemo/mapper/maemo-mapper2.3_with_calibration.deb" target="_blank">aqui</a>.</p>
<p>É isso, bom fim de semana a todos!</p>
<p>[]&#8216;s</p>
<p>Danilo Cesar</p>
<p><strong>[UPDATE: 15/02/2008] </strong>Quase um mês depois&#8230;</p>
<p><a href="http://maps.google.com" target="_blank"> O mapeamento de Sorocaba</a> é melhor do que eu pensava. Usei o calibrador apenas em um momento, quando entrei na cidade. Excelente trabalho do nosso <a href="http://www.thiago.mendes.nom.br/blog/" target="_blank">co-piloto</a>!</p>
<p>Depois, com o calibrador desligado, percebi que o erro era imperceptível em vários pontos, inclusive na chegada do kartódromo de Itu! Por falar em Kartódromo, <a href="http://www.kartodromoschincariol.com.br/" target="_blank">o Schinchariol</a> é uma exelente opção para os paulistas amantes da velocidade.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.danilocesar.com/blog/2008/01/19/googlemaps-errado-nao-e-mais-problema-patch-para-maemo-mapper-aqui/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Notas de um viajante.</title>
		<link>http://www.danilocesar.com/blog/2008/01/11/notas-de-um-viajante/</link>
		<comments>http://www.danilocesar.com/blog/2008/01/11/notas-de-um-viajante/#comments</comments>
		<pubDate>Sat, 12 Jan 2008 00:32:54 +0000</pubDate>
		<dc:creator>Danilo Cesar</dc:creator>
				<category><![CDATA[/dev/null]]></category>
		<category><![CDATA[viagens]]></category>
		<category><![CDATA[googlemaps]]></category>
		<category><![CDATA[gps]]></category>
		<category><![CDATA[Maemo]]></category>
		<category><![CDATA[maemo-mapper]]></category>

		<guid isPermaLink="false">http://www.danilocesar.com/blog/2008/01/11/notas-de-um-viajante/</guid>
		<description><![CDATA[Adquiri um GPS Bluetooth Holux a alguns dias atrás para minha viagem por São Paulo com alguns amigos, e como viria para Londrina neste fim de semana com meu pai resolvi testa-lo na viagem. Bom, o equipamento é o seguinte: GPS Holux com interface bluetooth, N800 com Maemo-Mapper com trajeto e mapas adquiridos antecipadamente através [...]]]></description>
			<content:encoded><![CDATA[<p>Adquiri um GPS Bluetooth Holux a alguns dias atrás para minha viagem por São Paulo com alguns amigos, e como viria para Londrina neste fim de semana com meu pai resolvi testa-lo na viagem.</p>
<p>Bom, o equipamento é o seguinte: GPS Holux com interface bluetooth, N800 com Maemo-Mapper com trajeto e mapas adquiridos antecipadamente através do Google-Maps.</p>
<p>A saída de Curitiba e boa parte do trajeto até chegar em Londrina foi excepcional! Se havia algum erro de GPS, este foi imperceptível. Eu ficava admirado em ver o ponto azul em uma curva exatamente quando o carro fazia a mesma. Tudo muito sincronizado.</p>
<p>Como nem tudo são flores, chegando em Londrina houve uma grande decepção, pois havia um erro de quase duas quadras ( uns duzentos metros ) em relação ao ponto mostrado no mapa e o ponto onde eu realmente estava.</p>
<p>De duas uma:</p>
<ol>
<li>O GPS está me passando uma informação errada.</li>
<li>O Google Maps não mapeou direito às coordenadas de Londrina.</li>
</ol>
<p>Pessoalmente, a primeira eu acho difícil de ser verdade, uma vez que ele estava funcionando muito bem em Curitiba em meus testes utilizando de 9 a 10 satélites ( onde estou agora, em Londrina, o GPS utiliza 8 ).</p>
<p>A segunda opção eu acho bem viável. Londrina não é uma cidade tão grande, e o mapeamento pode ter sido feito &#8220;às coxas&#8221;.</p>
<p>A questão é a segunte: Será que em minha passagem por Sorocaba e Itú terei o mesmo problema? Mesmo SP sendo o &#8220;coração do Brasil&#8221; (<em>sem trolls aqui, por favor</em>), ambas também são cidades de interior.</p>
<p>Por isto eu faço um apelo: Se você é morador de <strong>Londrina-PR, Itú-SP ou Sorocaba-SP,</strong> e possui GPS: Pegue suas coordenadas e coloque-as no <a href="http://maps.google.com/" target="_blank">GoogleMaps</a> e verifique se a referência no mapa é realmente onde você está. Depois poste aqui os resultados.</p>
<p>Bom, vou aproveitar minha família agora =)</p>
<p>Abraços a todos e bom fim de semana!</p>
<p><strong>[Update]</strong> Hoje com mais tempo vim tentar descobrir o problema, e é mais ou menos o que o Rafael falou. A verdade é que o mapeamento por satélite do GoogleMaps é uma beleza, mas o mapeamento de rua não!</p>
<p><a href="http://www.danilocesar.com/blog/wp-content/uploads/2008/01/picture-2.png" title="Londrina - Erro do GoogleMaps"><img src="http://www.danilocesar.com/blog/wp-content/uploads/2008/01/picture-2.png" alt="Londrina - Erro do GoogleMaps" height="315" width="441" /></a><br />
<em> Descrevendo o problema: A rua marcada em vermelho deveria estar no traçado verde. O Google Satelite posiciona-se corretamente, mas o mapa é posicionado com um erro de cerca de 167 metros.</em></p>
<p>Bom, talvez o <a href="http://www.google.com.br" target="_blank">Google</a> não seja tão bom assim =)</p>
<p><strong>[Update2] </strong>O Google compra as informações sobre mapas da <a href="http://maplink.uol.com.br/" target="_blank">MapLink</a>. Logo o problema está lá!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.danilocesar.com/blog/2008/01/11/notas-de-um-viajante/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
	</channel>
</rss>

