<?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; PyS60</title>
	<atom:link href="http://www.danilocesar.com/blog/category/pys60/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>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>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>Hello world para Native-Symbian</title>
		<link>http://www.danilocesar.com/blog/2008/05/06/hello-world-para-native-symbian/</link>
		<comments>http://www.danilocesar.com/blog/2008/05/06/hello-world-para-native-symbian/#comments</comments>
		<pubDate>Wed, 07 May 2008 01:00:03 +0000</pubDate>
		<dc:creator>Danilo Cesar</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[PyS60]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[Quick Tip]]></category>
		<category><![CDATA[Segurança]]></category>
		<category><![CDATA[Ubuntu-Br]]></category>
		<category><![CDATA[viagens]]></category>
		<category><![CDATA[Mobile]]></category>

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

		<guid isPermaLink="false">http://www.danilocesar.com/blog/2007/09/05/pychord-minha-primeira-contribuicao-ao-maemo/</guid>
		<description><![CDATA[Estou dando vida à minha primeira contribuição opensource ao projeto Maemo. É o Pychord. PyChord é uma aplicação que ajudará músicos durante ensaios mostrando cifras das músicas. A vantagem é que ele possui função de auto-scroll da tela, além de ter botões relativamente grandes. Bastará ao usuário procurar pelo nome da música e o sistema [...]]]></description>
			<content:encoded><![CDATA[<p>Estou dando vida à minha primeira contribuição opensource ao projeto <a href="http://www.maemo.org">Maemo</a>.</p>
<p>É o <a href="https://garage.maemo.org/projects/pychord/">Pychord.</a></p>
<p>PyChord é uma aplicação que ajudará músicos durante ensaios mostrando cifras das músicas. A vantagem é que ele possui função de <a href="http://en.wikipedia.org/wiki/Scrolling">auto-scroll</a> da tela, além de ter botões relativamente grandes.</p>
<p>Bastará ao usuário procurar pelo nome da música e o sistema mostrará a cifra. Como passei muito tempo brincando com a interface dele (fazer widgets no pygame parecia impossível antes, além do scroll sensível e com impulso), acabou não dando tempo de desenvolver a interface de busca por cifras. Mas estou pensando em usar o SQLite mesmo. De qualquer forma, além da search engine tem algumas <em>features</em> que pretendo desenvolver pra ele:</p>
<ol>
<li>Troca de tom das músicas (muito útil pra caras como eu que custam para lembrar que a diferença entre <em><strong>B</strong></em> e<em><strong> C</strong></em> é de meio tom)</li>
<li>Rotação da tela.</li>
</ol>
<p>De qualquer forma, tenho que agradecer ao <a href="https://garage.maemo.org/projects/pyvirtkey/">Tony Maro</a> que desenvolveu o teclado virtual e ao <a href="http://www.maeceloeduardo.com">Marcelo</a> ao dizer que não é bonito scroll-bars aonde não precisa. =)</p>
<p>O código não está aquela beleza, mas vai ter feriado por aí e eu vou ter bastante tempo livre para arrumar e terminar a aplicação.</p>
<p>Meu inglês não é lá essas coisas, mas fiz um vídeo de demonstração da aplicação que pode ser visto abaixo.</p>
<p><object width="425" height="350"><param name="movie" value="http://www.youtube.com/v/kvi09ODf_Ms"></param><param name="wmode" value="transparent"></param><embed src="http://www.youtube.com/v/kvi09ODf_Ms" type="application/x-shockwave-flash" wmode="transparent" width="425" height="350"></embed></object></p>
<p>Com isto estou criando uma versão do meu blog na língua da <a href="http://en.wikipedia.org/wiki/Elizabeth_II_of_the_United_Kingdom">rainha</a>: <a href="http://labs.danilocesar.com">http://labs.danilocesar.com</a>.</p>
<p>E para quem quiser ver o código do PyChord:</p>
<p><code>svn co http://labs.danilocesar.com/pychord/trunk</code></p>
<p>Aceito sugestões!</p>
<p>[]&#8216;s a todos e bom feriado!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.danilocesar.com/blog/2007/09/05/pychord-minha-primeira-contribuicao-ao-maemo/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>BossaConference: Como foi</title>
		<link>http://www.danilocesar.com/blog/2007/03/21/bossaconference-nokia-pys60-como-foi/</link>
		<comments>http://www.danilocesar.com/blog/2007/03/21/bossaconference-nokia-pys60-como-foi/#comments</comments>
		<pubDate>Wed, 21 Mar 2007 18:38:40 +0000</pubDate>
		<dc:creator>Danilo Cesar</dc:creator>
				<category><![CDATA[/dev/null]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Mobile]]></category>
		<category><![CDATA[PyS60]]></category>

		<guid isPermaLink="false">http://www.danilocesar.com/blog/2007/03/21/bossaconference-nokia-pys60-como-foi/</guid>
		<description><![CDATA[Depois de um longo chá de aeroporto em Curitiba e Guarulhos, finalmente cheguei em Recife. Como o vôo acabou chegando mais cedo, tive que ficar esperar o transfer por mais de uma hora no Aeroporto Internacional de Guararapes (Recife &#8211; Pe) Por sinal, no aeroporto, conheci um funcionário do INdT (Rodrigo?), que me apresentou para [...]]]></description>
			<content:encoded><![CDATA[<p>Depois de um longo chá de aeroporto em Curitiba e Guarulhos, finalmente cheguei em Recife. <br />
Como o vôo acabou chegando mais cedo, tive que ficar esperar o <em>transfer</em> por mais de uma hora no Aeroporto Internacional de Guararapes (Recife &#8211; Pe)
</p>
<p>Por sinal, no aeroporto, conheci um funcionário do INdT (Rodrigo?), que me apresentou para a galera nas festas por lá.<br />
Gostei bastante do povo que conheci.
</p>
<p>Quanto às palestras, achei algumas muito interessantes, e outras nem tanto. Mas vamos por partes:</p>
<p><b>As que eu gostei foram</b></p>
<dl>
<dt>1 &#8211; PyS60</dt>
<dd>Participei da palestra do Jukka sobre o PyS60, mas infelizmente não pude ficar para o <em>Hand&#8217;s On</em>.<br />
	Conversando com o Jukka Laurila, percebi que o PyS60 está em pleno vapor.<br />
	Mas o que eu achei mais legal foi o que ele me contou no ônibus: A Nokia está pagando funcionários para desenvolver exclusivamente SoftwareLivre (no caso do Jukka com o Python).<br />
	E agora eu entendi e aceitei os motivos pelos quais eles abandonaram os Symbian 1st Edition.
	</dd>
<dt>2 &#8211; PyPy</dt>
<dd>Sempre achei idiota/inútil a idéia de manter um interpretador python escrito em python.<br /> Mas o Santagada me convenceu que não é bem assim. Além de otimizar a linguagem, ele comentou que seria possível, com PyPy, escrever um interpretador javascript em python, e até converter (forçando um pouco a barra) código python em javascript. Isto sim é útil.<br /> Durante a festa da terça-feira, quando já estávamos &#8220;altos&#8221;, comentamos em fazer a mesma coisa com o projeto BrainFuck, em BrainFuck. Mas <a href="http://www.nada.kth.se/~matslina/awib/">alguém já pensou nisto!</a> =).
	</dd>
<dt>3 &#8211; GStreammer</dt>
<dd>O Wim mandou muito bem em sua palestra do Gstreammer. Deu pra ter uma noção geral do FrameWork e a que ponto anda o desenvolvimento. Gostei bastante.
	</dd>
</dl>
<p><b>Como nem tudo são flores&#8230;</b></p>
<dl>
<dt>OpenC</dt>
<dd>
	Fiquei decepcionado com a palestra e com o OpenC em si.<br /> Fiquei decepcionado com a <a href="http://pt.wikipedia.org/wiki/API">API</a> pois esta só irá rodar nos Symbian 3th Edition.<br /> É uma limitação muito forte. O OpenC no Brasil não terá efeito nenhum, pois o número de celulares assim no Brasil tende a zero.<br /> Mas de qualquer forma a idéia é boa e não tiro o mérito dela! Ter uma API POSIX para celulares é uma coisa muito boa.
	</dd>
<dt>Wireless</dt>
<dd>
	<a href="http://pythonologia.org/2007/03/14/bossa-conference-quando-e-a-proxima/">Como disse o Osvaldo</a>, realmente o Wireless falhou em vários momentos. Foi uma pena. Aqueles que levaram seus notebook&#8217;s sentiram-se frustrados em alguns momentos.
	</dd>
<dt>Comigo mesmo</dt>
<dd>
	Fiz um &#8220;fuzuê&#8221; danado pra conseguir levar minha camera para Recife, mas apenas no aeroporto de São Paulo, chengando em casa, foi que percebi que não tinha tirado uma única foto&#8230; =(
	</dd>
</dl>
<p>Além das palestras, o evento contou com muita gente bacana. Além dos que eu citei no <a href="http://www.danilocesar.com/blog/2007/02/23/bossaconference-ai-vou-eu/">post anterior</a>, finalmente conheci o <a href="http://setanta.wordpress.com">Marcelo</a> e o <a href="http://lauro.wordpress.com/">Lauro</a>. Também conversei bastante com o Ulisses do BB Brasília sobre a Mandriva Conectiva. Ele contou-me &#8220;causos&#8221; muito interessantes sobre ela.</p>
<p>Também vi o tal do <a href="http://pt.wikipedia.org/wiki/XO">OLPC</a>. A idéia é muito boa! A criança que souber aproveitar poderá crescer bastante. Mas infelizmente vivemos em uma realidade aonde nem livro didático sobrevive por muito tempo. Logo eu tenho meus receios. <br /> O <a href="http://setanta.wordpress.com">Marcelo</a> citou uma frase muito interessante sobre o assunto: <b>&#8220;Antes de inclusão Digital, precisamos de inclusão Social!&#8221;</b>.
</p>
<p>Bom, estão ai meus comentários atrasados sobre o Bossa. O <a href="http://bossaconference.org">Evento</a> foi muito bom, <a href="http://www.hotelarmacao.com.br/">em um lugar excelente</a>. Fomos muito bem cuidados pelo <a href="http://www.indt.org">INdT</a>. Se houver próximas edições, recomendo ir.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.danilocesar.com/blog/2007/03/21/bossaconference-nokia-pys60-como-foi/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Smartphones: aonde podemos parar?</title>
		<link>http://www.danilocesar.com/blog/2006/12/03/smartphones-aonde-podemos-parar/</link>
		<comments>http://www.danilocesar.com/blog/2006/12/03/smartphones-aonde-podemos-parar/#comments</comments>
		<pubDate>Sun, 03 Dec 2006 17:58:56 +0000</pubDate>
		<dc:creator>Danilo Cesar</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Mobile]]></category>
		<category><![CDATA[PyS60]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[Ubuntu-Br]]></category>

		<guid isPermaLink="false">http://www.danilocesar.com/blog/2006/12/03/smartphones-aonde-podemos-parar/</guid>
		<description><![CDATA[Tive o prazer de ter em minhas mãos um Nokia 6681 a alguns dias atrás, e tive uma idéia: Imagine uma touchscreen. Agora imagine uma touchscreen sem uma touch-screen =). Imagine poder &#8220;simular&#8221; uma touchscreen no ar usando apenas a camera do seu celular. Pode ser um brinquedo muito interessante não? Pensando nisso fiz um [...]]]></description>
			<content:encoded><![CDATA[<p>Tive o prazer de ter em minhas mãos um <a target="_blank" href="http://forum.nokia.com/devices/6681">Nokia 6681</a> a alguns dias atrás, e tive uma idéia:</p>
<p>Imagine uma <a href="http://en.wikipedia.org/wiki/Touchscreen">touchscreen</a>. Agora imagine uma touchscreen sem uma touch-screen =).<br />
Imagine poder &#8220;simular&#8221; uma touchscreen no ar usando apenas a camera do seu celular.</p>
<p>Pode ser um brinquedo muito interessante não?</p>
<p>Pensando nisso fiz um pequeno aplicativo em <a target="_blank" href="http://www.python.org">Python</a> (<a target="_blank" href="http://pys60.sf.net">pyS60</a>) que localiza um objeto e segue-o. Como se fosse um mouse pointer seguindo uma caneta.</p>
<p>Este aplicativo na verdade é apenas uma <em><a target="_blank" href="http://en.wikipedia.org/wiki/Proof_of_concept">prova de conceito</a></em> demonstrando que pode ser feito. Quando tivermos celulares melhores, algo como 1GHz (O 6681 possui um processador de 220Mhz), e cameras próprias para este tipo de aplicação, talvez tenhamos softwares e smartphones com este conceito em funcionamento.<br />
Seria muito bacana ver soluções assim aplicadas em desktops 3D.</p>
<p>Segue um vídeo de demonstração do aplicativo. Como disse, é apenas uma prova de conceito. Python ainda não é uma linguagem muito rápida quando estamos em celulares. Mas é muito mais fácil programar e testar do que se fosse feito em <a target="_blank" href="http://www.symbian.com/developer/">native symbian</a>, e ainda por cima posso programar em linux =).</p>
<p><sub style="color: #ff0000">Leitores de RSS podem ver o vídeo <a href="http://www.danilocesar.com/blog/2006/12/03/smartphones-aonde-podemos-parar/">aqui</a></sub></p>
<p><object width="425" height="350"><param name="movie" value="http://www.youtube.com/v/sjm_g9MSYPc"></param><param name="wmode" value="transparent"></param><embed src="http://www.youtube.com/v/sjm_g9MSYPc" type="application/x-shockwave-flash" wmode="transparent" width="425" height="350"></embed></object></p>
<h3>Código fonte</h3>
<p><code lang="python"><br />
##############################################<br />
# Produzido por Danilo Cesar [http://www.danilocesar.com]<br />
# Inspirado por:  http://www.bigbold.com/snippets/posts/show/636<br />
# Agradecimento a Enrico Batista<br />
##############################################<br />
from appuifw import *<br />
from graphics import Image<br />
import camera, e32<br />
#import miso    # don't dim the light</p>
<p>app.body = c = Canvas()</p>
<p>running = 1<br />
def quit():<br />
    global running<br />
    running = 0</p>
<p>app.exit_key_handler=quit<br />
app.title = u"O controle"<br />
app.screen = 'full'   # or 'normal', 'large'</p>
<p>def getdata(im, bpp=24):<br />
    import struct, zlib<br />
    im.save('D:\\pixels.png', bpp=bpp, compression='no')<br />
    f = open('D:\\pixels.png', 'rb')<br />
    f.seek(8 +8+13+4)<br />
    chunk = []<br />
    while 1:<br />
        n = struct.unpack('>L', f.read(4))[0]<br />
        if n==0: break  # 'IEND' chunk<br />
        f.read(4) # 'IDAT'<br />
        chunk.append(f.read(n))<br />
        f.read(4)   # CRC<br />
    f.close()<br />
    return zlib.decompress(''.join(chunk))  # '\x00' prefix each line</p>
<p>X = 80<br />
Y = 60<br />
while running:<br />
    if X < 0: X = 0<br />
    if Y< 0: Y = 0<br />
    if X > 160 - 30: X = 160 - 30<br />
    if Y > 120 - 30: Y = 120-30<br />
    im = camera.take_photo('RGB', (160,120))<br />
    im.rectangle([(X,Y),(X+30,Y+30)], 0xff0000)   # red outline<br />
    # check hot spot whether active<br />
    box = Image.new((30,30), 'L')  # gray scale<br />
    box.blit(im, (X,Y,X+30,Y+30))<br />
    data = getdata(box, 8)</p>
<p>    # check black<br />
    for i in range(len(data)):<br />
        if ord(data[i]) < 30 and ord(data[i]) > 0:<br />
            X += i%31 - 15<br />
            Y += int(i/31) - 15<br />
            break<br />
        # Posso passar de 3 em 3 pixels. O código fica mais rápido e a perda<br />
        # de precisão é insignificante<br />
        i = i + 2</p>
<p>    c.blit(im, (0,0), (8,12))   # show camera</p>
<p>    #miso.reset_inactivity_time()</p>
<p></code></p>
]]></content:encoded>
			<wfw:commentRss>http://www.danilocesar.com/blog/2006/12/03/smartphones-aonde-podemos-parar/feed/</wfw:commentRss>
		<slash:comments>14</slash:comments>
		</item>
	</channel>
</rss>

