<?xml version='1.0' encoding='UTF-8'?><rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearchrss/1.0/" xmlns:blogger="http://schemas.google.com/blogger/2008" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" version="2.0"><channel><atom:id>tag:blogger.com,1999:blog-18415308</atom:id><lastBuildDate>Sat, 12 Oct 2024 11:29:31 +0000</lastBuildDate><category>software livre</category><category>arduino</category><category>python</category><category>pythonrio</category><category>curso de arduino</category><category>diy</category><category>web2py</category><category>dojorio</category><category>eletrônica</category><category>dojo</category><category>web</category><category>peta5</category><category>pythonbrasil</category><category>rio de janeiro</category><category>rows</category><category>arduinrio</category><category>coding dojo</category><category>debian</category><category>desenvolvimento de software</category><category>dicas</category><category>fisl</category><category>hacknbeer</category><category>programação</category><category>curso</category><category>eletronica</category><category>pythoncampus</category><category>cli</category><category>csv</category><category>desenvolvedor</category><category>free software</category><category>hardware livre</category><category>pypln</category><category>android</category><category>belo horizonte</category><category>command-line</category><category>computação embarcada</category><category>dados abertos</category><category>data science</category><category>dojorio pythoncampus</category><category>encoding</category><category>eventos</category><category>filetype</category><category>framework</category><category>gnu</category><category>gnu/linux</category><category>google</category><category>hacking</category><category>labdegaragem</category><category>lang:english</category><category>linux</category><category>palestra</category><category>podcast</category><category>porto alegre</category><category>programming</category><category>tabular</category><category>unicode</category><category>wiki</category><category>xls</category><category>Inkscape</category><category>abnt2</category><category>adk</category><category>agile</category><category>argentina</category><category>belém</category><category>bh</category><category>bigdata</category><category>bolivia</category><category>buzzer</category><category>cabo frio</category><category>carreira</category><category>cartão de crédito</category><category>cederj</category><category>chardet</category><category>click</category><category>comunidade</category><category>consegi</category><category>datilografia</category><category>ddwrt</category><category>design</category><category>dev in rio</category><category>dia-d</category><category>digitação</category><category>display</category><category>dry</category><category>dvorak</category><category>eeepc</category><category>emesene</category><category>empreendedorismo</category><category>english</category><category>file</category><category>finanças</category><category>fisl11</category><category>fisl12</category><category>fisl13</category><category>games</category><category>hackday</category><category>hangout</category><category>html</category><category>html5</category><category>key-value</category><category>keyboards</category><category>lang:pt-br</category><category>latex</category><category>led</category><category>liberdade</category><category>linha de comando</category><category>londrina</category><category>maddog</category><category>memes</category><category>mensageiro instantâneo</category><category>mg</category><category>minas gerais</category><category>mongodb</category><category>mongodict</category><category>msn</category><category>mvc</category><category>netbook</category><category>nubank</category><category>opendata</category><category>ourinhos</category><category>parquet</category><category>pdf</category><category>programacao</category><category>pybr8</category><category>qwerty</category><category>requests</category><category>robótica</category><category>robótica livre</category><category>sbc</category><category>scraping</category><category>semaforo</category><category>serpro</category><category>setel</category><category>setel2010</category><category>small acts</category><category>snes</category><category>software</category><category>software development</category><category>software freedom day</category><category>software libre</category><category>spark</category><category>ssh</category><category>são paulo</category><category>teclados</category><category>terminal</category><category>treinamento</category><category>tres rios</category><category>tvdigital</category><category>twitter</category><category>typing</category><category>ubuntu</category><category>uff</category><category>unix</category><category>viagem</category><category>views</category><category>webminar</category><category>wikipedia</category><title>Blog do @Turicas</title><description>Blog sobre tecnologia em geral, com ênfase em software livre, desenvolvimento de software em Python, projetos envolvendo Arduino e eletrônica, Coding Dojo e metodologias ágeis de desenvolvimento de software.</description><link>http://blog.justen.eng.br/</link><managingEditor>noreply@blogger.com (Turicas&#39; blog - criativo, né?)</managingEditor><generator>Blogger</generator><openSearch:totalResults>117</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><item><guid isPermaLink="false">tag:blogger.com,1999:blog-18415308.post-1156524131902813692</guid><pubDate>Wed, 29 Jun 2016 20:33:00 +0000</pubDate><atom:updated>2016-06-29T17:33:13.671-03:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">arduino</category><category domain="http://www.blogger.com/atom/ns#">belo horizonte</category><category domain="http://www.blogger.com/atom/ns#">curso</category><category domain="http://www.blogger.com/atom/ns#">curso de arduino</category><category domain="http://www.blogger.com/atom/ns#">eletrônica</category><category domain="http://www.blogger.com/atom/ns#">porto alegre</category><category domain="http://www.blogger.com/atom/ns#">programação</category><category domain="http://www.blogger.com/atom/ns#">rio de janeiro</category><category domain="http://www.blogger.com/atom/ns#">robótica</category><category domain="http://www.blogger.com/atom/ns#">software livre</category><title>Cursos de Arduino por todo Brasil</title><description>&lt;p&gt;Nos próximos meses estarei em diversas cidades do Brasil (atualmente sou um
&lt;a href=&quot;https://pt.wikipedia.org/wiki/N%C3%B4made_digital&quot;&gt;nômade digital&lt;/a&gt;)
ministrando &lt;a href=&quot;http://www.cursodearduino.com.br/&quot;&gt;cursos de introdução ao Arduino&lt;/a&gt;, onde ensino programação e
eletrônica para quem quer criar projetos interativos, de automação e robótica.&lt;/p&gt;
&lt;p&gt;Comecei com o &lt;a href=&quot;http://www.cursodearduino.com.br/&quot;&gt;Curso de Arduino&lt;/a&gt; em 2011 e tomei essa iniciativa por
sugestão de meu amigo &lt;a href=&quot;https://en.wikipedia.org/wiki/Jon_Hall_(programmer)&quot;&gt;Jon &amp;quot;maddog&amp;quot; Hall&lt;/a&gt; e porque o público de minhas
palestras de divulgação do &lt;a href=&quot;http://arduino.cc/&quot;&gt;Arduino&lt;/a&gt; sempre perguntava &amp;quot;&lt;strong&gt;como
aprender programação e eletrônica?&lt;/strong&gt;&amp;quot;.&lt;/p&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://cursodearduino.com.br/&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjWz2xeW6yrOe8xZcP4AWcDdkM0e1KjH6uPPPUzylDeM2CiMcimvHDshLn2k7zrRlWsX2LydnXUnf7FsJdLcF35g-B-s6aJdtV760kU6eMKIesFqkBmo2vuss46vJfnlG3BrLCL/s320/logo_curso-de-arduino-sombreado.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;

&lt;p&gt;A iniciativa deu tão certo que desde então já ensinei a &lt;strong&gt;centenas de pessoas&lt;/strong&gt;
a dar seus primeiros passos em robótica, em diversas cidades do Brasil (e até
fora dele!). É muito gratificante ver os alunos fazendo os projetos (&lt;a href=&quot;https://www.facebook.com/CursoDeArduino/photos&quot;&gt;veja as
fotos&lt;/a&gt;) e dando um &lt;em&gt;feedback&lt;/em&gt; bastante positivo com relação à
didática utilizada nas aulas. Segue a agenda das próximas turmas:&lt;/p&gt;
&lt;h2 id=&quot;porto-alegre&quot;&gt;Porto Alegre&lt;/h2&gt;
&lt;p&gt;Porto Alegre é uma das cidades no Brasil que mais gosto e será a primeira vez
que farei o curso no sul do país. O curso acontecerá no &lt;a href=&quot;http://www.translab.cc/&quot;&gt;TransLAB&lt;/a&gt;
(&lt;a href=&quot;https://goo.gl/maps/NkJjEUN2iVT2&quot;&gt;Rua Professor Duplan, 146&lt;/a&gt;) nos dias 19 a 22 de julho (terça a
sexta-feira), de 18:30 às 21:30. &lt;a href=&quot;http://cursodearduino.com.br/porto-alegre&quot;&gt;Saiba mais detalhes sobre o que você irá
aprender e faça sua inscrição agora&lt;/a&gt;. Essa será &lt;strong&gt;a única turma do
ano&lt;/strong&gt; em Porto Alegre!&lt;/p&gt;
&lt;p&gt;O &lt;a href=&quot;http://www.translab.cc/&quot;&gt;TransLAB&lt;/a&gt; é um laboratório que tem como objetivo estimular a
inovação social e tem vários projetos super legais rolando lá dentro!&lt;/p&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://cursodearduino.com.br/porto-alegre&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjQk7GtA5Msu-w4ygmE_zwQSzN4RithkKv3EC6pGBSBWMp06Btpm8C0ap-eRTu0VFC12N2y3knYkDWqnNA0yvkShyvv5cASb0sclSWnZvpUtqdNWZU3Wk7o1_kbmqDj0wYNAxQy/s320/logo-transvencaolab1.gif&quot; /&gt;&lt;/a&gt;&lt;/div&gt;

&lt;h2 id=&quot;belo-horizonte&quot;&gt;Belo Horizonte&lt;/h2&gt;
&lt;p&gt;BH é outra cidade que está no meu coração! Já fiz o curso diversas vezes em
parceria com o &lt;a href=&quot;http://guajajaras.cc&quot;&gt;Guajajaras Coworking&lt;/a&gt;, um espaço sensacional - na
minha opinião, um dos melhores espaços de coworking do Brasil.  A próxima turma
em BH &lt;strong&gt;será especial&lt;/strong&gt;: acontecerá no &lt;a href=&quot;http://guaja.cc&quot;&gt;Guaja Casa&lt;/a&gt; (primeiro
café-coworking do Brasil - &lt;a href=&quot;https://goo.gl/maps/S683vAKoKk72&quot;&gt;Avenida Afonso Pena, 2881&lt;/a&gt;) e no &lt;a href=&quot;http://www.fazbh.com.br&quot;&gt;FAZ
Makerspace&lt;/a&gt; (&lt;a href=&quot;https://goo.gl/maps/3EEbC771kH62&quot;&gt;Rua Santa Rita Durão, 143&lt;/a&gt;); além disso, a
&lt;a href=&quot;http://www.eletrogate.com.br&quot;&gt;Eletrogate&lt;/a&gt; irá fornecer Kits Arduino com desconto para os alunos!&lt;/p&gt;
&lt;p&gt;O curso acontecerá de 5 a 9 de setembro (segunda a sexta-feira), das 19 às 22h
e as vagas estão super concorridas!  &lt;a href=&quot;http://cursodearduino.com.br/belo-horizonte&quot;&gt;Saiba mais detalhes sobre o que você irá
aprender e faça sua inscrição agora&lt;/a&gt;. Essa será &lt;strong&gt;a única turma do
ano&lt;/strong&gt; em BH!&lt;/p&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://cursodearduino.com.br/belo-horizonte&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg62ydQnvpg2VX6d0crxww6tiY4vNcKnYdvJ1y_zsWvAENl4URTCtrEaLoRnkhIwn8RxFzdtkoIQAusuY6KsNNptXeTu_5tqDU3phhrq96C3zmEUzk5wUp79Z0nibi7lWEhBfAz/s320/arduino-bh.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;


&lt;h2 id=&quot;rio-de-janeiro&quot;&gt;Rio de Janeiro&lt;/h2&gt;
&lt;p&gt;A primeira turma aconteceu na cidade do Rio de Janeiro e é a cidade em que eu
tenho maior demanda de cursos (não só sobre &lt;a href=&quot;http://arduino.cc/&quot;&gt;Arduino&lt;/a&gt;, mas também
sobre &lt;a href=&quot;http://python.org/&quot;&gt;Python&lt;/a&gt;, &lt;a href=&quot;http://git-scm.org/&quot;&gt;Git&lt;/a&gt; e outras coisas legais). Lá a minha parceria
é com a &lt;a href=&quot;http://edx.srv.br/&quot;&gt;EDX Coworking&lt;/a&gt;, empresa já conhecida da comunidade de software
livre por conta das contribuições com o &lt;a href=&quot;https://www.libreoffice.org/download/libreoffice-fresh/&quot;&gt;Libre Office&lt;/a&gt; - a
&lt;a href=&quot;http://edx.srv.br/&quot;&gt;EDX&lt;/a&gt; é meu escritório favorito quando estou no Rio.&lt;/p&gt;
&lt;p&gt;A próxima turma no Rio acontecerá nos dias 17 e 18 de setembro (sábado e
domingo) de 9 às 18h na &lt;a href=&quot;http://edx.srv.br/&quot;&gt;EDX Coworking&lt;/a&gt; (&lt;a href=&quot;https://goo.gl/maps/kod5aGF4Udw&quot;&gt;Avenida Rio Branco,
124&lt;/a&gt;).  &lt;a href=&quot;http://cursodearduino.com.br/rio-de-janeiro&quot;&gt;Saiba mais detalhes sobre o que você irá aprender e faça sua
inscrição agora&lt;/a&gt;.  Essa será a &lt;strong&gt;última turma do ano&lt;/strong&gt; no Rio!&lt;/p&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://cursodearduino.com.br/rio-de-janeiro&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgPY2XA8Tq3miY8qAJVCDcxyDRNV94zsd533vcDAs53LY1BT9EfewI4Ii4LI76UqqiGgSpQp6FY6RJ-Ob5uuOZwQirueCyEPsjdMvoTMfwiFlPAsByRZSmuw6PcH88iKNf1MJkC/s320/edx-coworking.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;</description><link>http://blog.justen.eng.br/2016/06/cursos-de-arduino-por-todo-brasil.html</link><author>noreply@blogger.com (Turicas&#39; blog - criativo, né?)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjWz2xeW6yrOe8xZcP4AWcDdkM0e1KjH6uPPPUzylDeM2CiMcimvHDshLn2k7zrRlWsX2LydnXUnf7FsJdLcF35g-B-s6aJdtV760kU6eMKIesFqkBmo2vuss46vJfnlG3BrLCL/s72-c/logo_curso-de-arduino-sombreado.png" height="72" width="72"/><thr:total>4</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-18415308.post-1851409711237145858</guid><pubDate>Mon, 02 May 2016 16:26:00 +0000</pubDate><atom:updated>2016-05-02T13:27:55.806-03:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">bigdata</category><category domain="http://www.blogger.com/atom/ns#">csv</category><category domain="http://www.blogger.com/atom/ns#">data science</category><category domain="http://www.blogger.com/atom/ns#">html</category><category domain="http://www.blogger.com/atom/ns#">lang:pt-br</category><category domain="http://www.blogger.com/atom/ns#">python</category><category domain="http://www.blogger.com/atom/ns#">rows</category><category domain="http://www.blogger.com/atom/ns#">software livre</category><category domain="http://www.blogger.com/atom/ns#">tabular</category><category domain="http://www.blogger.com/atom/ns#">xls</category><title>Dados Tabulares: A Maneira Pythônica</title><description>&lt;p&gt;Já venho há algum tempo trabalhando na &lt;a href=&quot;https://github.com/turicas/rows&quot;&gt;biblitoeca rows&lt;/a&gt;, que &lt;strong&gt;facilita
demais&lt;/strong&gt; o acesso a dados tabulares, não importa o formato do arquivo (CSV,
XLS, XLSX, HTML, dentre outros). No último sábado (30 de abril) fiz uma
palestra no encontro &lt;a href=&quot;https://fb.com/pythonrio&quot;&gt;PythOnRio&lt;/a&gt; sobre o projeto e a galera se
amarrou! Além da biblioteca, também mostrei como usar a &lt;em&gt;command-line
interface&lt;/em&gt;, que uso diariamente para pequenas análises e conversão de dados.&lt;/p&gt;
&lt;p&gt;Confira o vídeo:&lt;/p&gt;
&lt;iframe width=&quot;536&quot; height=&quot;402&quot;
        src=&quot;https://www.youtube.com/embed/gBYXo6zxxUU&quot; frameborder=&quot;0&quot;
        allowfullscreen&gt;&lt;/iframe&gt;

&lt;p&gt;E os slides:&lt;/p&gt;
&lt;iframe src=&quot;//www.slideshare.net/slideshow/embed_code/key/ynRHnGOUrLBj7l&quot;
        width=&quot;536&quot; height=&quot;402&quot; frameborder=&quot;0&quot; marginwidth=&quot;0&quot;
        marginheight=&quot;0&quot; scrolling=&quot;no&quot;
        style=&quot;border:1px solid #CCC; border-width:1px; margin-bottom:5px; max-width: 100%;&quot;
        allowfullscreen&gt;&lt;/iframe&gt;

&lt;p&gt;Veja também a &lt;a href=&quot;http://bit.ly/pyrio-rows&quot;&gt;versão em HTML dos slides&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;O projeto é &lt;a href=&quot;https://pt.wikipedia.org/wiki/Software_livre&quot;&gt;software livre&lt;/a&gt; e &lt;a href=&quot;https://github.com/turicas/rows/issues&quot;&gt;temos várias issues
abertas&lt;/a&gt;, entra lá no &lt;a href=&quot;https://github.com/turicas/rows&quot;&gt;repositório no GitHub&lt;/a&gt; e contribui!
:)&lt;/p&gt;</description><link>http://blog.justen.eng.br/2016/05/dados-tabulares-a-maneira-pythonica.html</link><author>noreply@blogger.com (Turicas&#39; blog - criativo, né?)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img.youtube.com/vi/gBYXo6zxxUU/default.jpg" height="72" width="72"/><thr:total>1</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-18415308.post-8615459688992199302</guid><pubDate>Mon, 14 Mar 2016 04:48:00 +0000</pubDate><atom:updated>2016-03-14T01:48:02.556-03:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">cli</category><category domain="http://www.blogger.com/atom/ns#">command-line</category><category domain="http://www.blogger.com/atom/ns#">csv</category><category domain="http://www.blogger.com/atom/ns#">data science</category><category domain="http://www.blogger.com/atom/ns#">free software</category><category domain="http://www.blogger.com/atom/ns#">lang:english</category><category domain="http://www.blogger.com/atom/ns#">opendata</category><category domain="http://www.blogger.com/atom/ns#">parquet</category><category domain="http://www.blogger.com/atom/ns#">python</category><category domain="http://www.blogger.com/atom/ns#">rows</category><category domain="http://www.blogger.com/atom/ns#">spark</category><category domain="http://www.blogger.com/atom/ns#">tabular</category><category domain="http://www.blogger.com/atom/ns#">unix</category><category domain="http://www.blogger.com/atom/ns#">xls</category><title>Reading Parquet Files in Python with rows</title><description>&lt;p&gt;Many people in the &lt;a href=&quot;https://en.wikipedia.org/wiki/Data_science&quot;&gt;data science&lt;/a&gt; field use the &lt;a href=&quot;https://parquet.apache.org/&quot;&gt;parquet
format&lt;/a&gt; to store tabular data, as it&amp;#39;s the default format used
by &lt;a href=&quot;http://spark.apache.org/&quot;&gt;Apache Spark&lt;/a&gt; -- an efficient data storage format for
analytics. The problem is: the format is binary (you can&amp;#39;t just open it with
your preferred code editor) and there&amp;#39;s no such a good Python library to read
-- not until today!&lt;/p&gt;
&lt;p&gt;I found a Python library called &lt;a href=&quot;https://github.com/jcrobak/parquet-python&quot;&gt;parquet-python&lt;/a&gt; on GitHub
but it&amp;#39;s hard to use, doesn&amp;#39;t have one code example, was not available on
&lt;a href=&quot;https://pypi.python.org/pypi&quot;&gt;PyPI&lt;/a&gt; and it looks like it&amp;#39;s not maintained anymore. So I decided to
implement a &lt;a href=&quot;https://github.com/turicas/rows/issues/150&quot;&gt;parquet plugin (read-only) for my library
&lt;code&gt;rows&lt;/code&gt;&lt;/a&gt;: it uses the &lt;a href=&quot;https://github.com/jcrobak/parquet-python&quot;&gt;parquet-python&lt;/a&gt;
library under the hood (I needed to &lt;a href=&quot;https://pypi.python.org/pypi/parquet&quot;&gt;upload it to PyPI&lt;/a&gt; so you
can install it easly) and exposes the data in a pretty simple, pythonic way.&lt;/p&gt;
&lt;h2 id=&quot;installation&quot;&gt;Installation&lt;/h2&gt;
&lt;p&gt;I didn&amp;#39;t realese the rows version with this plugin yet, so you need to grab the
most recent rows version by running:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;pip install -U git+https://github.com/turicas/rows.git@develop
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;And also the dependency:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;pip install parquet
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;If the data is compressed using &lt;a href=&quot;https://github.com/google/snappy&quot;&gt;Google&amp;#39;s snappy&lt;/a&gt; you&amp;#39;ll also
need the library headers and other Python dependency -- install everything by
running:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;apt-get install libsnappy-dev
pip install python-snappy
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Then you can use &lt;code&gt;rows.import_from_parquet(filename)&lt;/code&gt; in your programs! \o/&lt;/p&gt;
&lt;h2 id=&quot;python-example&quot;&gt;Python Example&lt;/h2&gt;
&lt;p&gt;A quick Python code example:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;lang-python&quot;&gt;import rows

table = rows.import_from_parquet(&amp;#39;myfile.parquet&amp;#39;)
for row in table:
    print row  # access fields values with `rows.field_name`
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Note that &lt;strong&gt;the current implementation is not optimized&lt;/strong&gt; (for example, it&amp;#39;ll
put everything into memory) but at least you can extract desired data and then
convert to a more friendly format easily.&lt;/p&gt;
&lt;h2 id=&quot;converting-parquet-to-other-formats-with-rows-cli&quot;&gt;Converting Parquet to Other Formats with &lt;code&gt;rows&lt;/code&gt;&amp;#39; CLI&lt;/h2&gt;
&lt;p&gt;You can &lt;strong&gt;convert Parquet files to many tabular formats&lt;/strong&gt; (like CSV) by using
the rows&amp;#39;s command-line interface, so you don&amp;#39;t need to code.&lt;/p&gt;
&lt;p&gt;Install the rows CLI by running:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;pip install rows[cli]
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Now convert the parquet file:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;rows convert myfile.parquet myfile.csv  # yes, simple like this!
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;You can replace &lt;code&gt;csv&lt;/code&gt; with any other supported format (the list is always
growing!), such as: &lt;code&gt;txt&lt;/code&gt;, &lt;code&gt;html&lt;/code&gt;, &lt;code&gt;xls&lt;/code&gt;, &lt;code&gt;xlsx&lt;/code&gt; and &lt;code&gt;sqlite&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;If your file is small enough you can actually see it without needing to save
the output to another file by using the &lt;code&gt;print&lt;/code&gt; subcommand:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;rows print myfile.parquet  # will extract, convert and print data as text
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;And you can actually query data as in SQL (this CLI is awesome!), for example:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;rows query &amp;#39;nation_key &amp;lt; 10&amp;#39; tests/data/nation.dict.parquet \
     --output=data.csv
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;By running this command the CLI will:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Import data from &lt;code&gt;tests/data/nation.dict.parquet&lt;/code&gt; file into memory;&lt;/li&gt;
&lt;li&gt;Export to SQLite (&lt;code&gt;:memory:&lt;/code&gt;);&lt;/li&gt;
&lt;li&gt;Run the query (&lt;code&gt;nation_key &amp;lt; 10&lt;/code&gt;) and get the results;&lt;/li&gt;
&lt;li&gt;Convert the results to a new &lt;code&gt;rows.Table&lt;/code&gt; object;&lt;/li&gt;
&lt;li&gt;Export the table to CSV format and save it into &lt;code&gt;data.csv&lt;/code&gt; (the result format
could be &lt;code&gt;html&lt;/code&gt;, &lt;code&gt;xls&lt;/code&gt;, &lt;code&gt;xlsx&lt;/code&gt; or any other write-plugin supported by
&lt;a href=&quot;https://github.com/turicas/rows&quot;&gt;rows&lt;/a&gt;).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;With this addition to &lt;a href=&quot;https://github.com/turicas/rows&quot;&gt;rows&lt;/a&gt; I think the library and its command-line
interface became one of the tools every data scientist should have installed.
;-)&lt;/p&gt;</description><link>http://blog.justen.eng.br/2016/03/reading-parquet-files-in-python-with-rows.html</link><author>noreply@blogger.com (Turicas&#39; blog - criativo, né?)</author><thr:total>3</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-18415308.post-868070938504361619</guid><pubDate>Mon, 07 Mar 2016 02:24:00 +0000</pubDate><atom:updated>2016-03-06T23:24:06.931-03:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">cli</category><category domain="http://www.blogger.com/atom/ns#">click</category><category domain="http://www.blogger.com/atom/ns#">command-line</category><category domain="http://www.blogger.com/atom/ns#">ddwrt</category><category domain="http://www.blogger.com/atom/ns#">free software</category><category domain="http://www.blogger.com/atom/ns#">python</category><category domain="http://www.blogger.com/atom/ns#">requests</category><category domain="http://www.blogger.com/atom/ns#">rows</category><category domain="http://www.blogger.com/atom/ns#">scraping</category><category domain="http://www.blogger.com/atom/ns#">terminal</category><title>Searching dd-wrt Router Database with ddwrtdb</title><description>&lt;p&gt;I really like the &lt;a href=&quot;http://dd-wrt.com/&quot;&gt;dd-wrt&lt;/a&gt; router operating system: I can install it on
cheap routers (starting from 27 USD, as &lt;a href=&quot;http://www.amazon.com/TP-LINK-TL-WR741ND-Wireless-150Mpbs-detachable/dp/B002WBX5ES&quot;&gt;TP-Link
WR741ND&lt;/a&gt;) to have a great Web configuration interface
and performance (way better than general factory software).&lt;/p&gt;
&lt;p&gt;I&amp;#39;m always looking for new router models to check if they&amp;#39;re supported by
&lt;a href=&quot;http://dd-wrt.com/&quot;&gt;dd-wrt&lt;/a&gt; and to compare prices/hardware specs (as I&amp;#39;m always buying new
routers to help some friends with their Wi-Fi networks). The problem is:
&lt;a href=&quot;http://dd-wrt.com/&quot;&gt;dd-wrt&amp;#39;s website&lt;/a&gt; usability is not that good, specially the &lt;a href=&quot;http://dd-wrt.com/site/support/router-database&quot;&gt;router
database search&lt;/a&gt;. As I prefer to use my terminal instead of
the Web browser, I&amp;#39;ve created a command-line tool to deal with it: it&amp;#39;s called
&lt;a href=&quot;https://github.com/turicas/ddwrtdb&quot;&gt;ddwrtdb&lt;/a&gt; and the code is available at &lt;a href=&quot;https://github.com/turicas&quot;&gt;my GitHub
account&lt;/a&gt;!&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://pypi.python.org/pypi/ddwrtdb&quot;&gt;It&amp;#39;s also available on Python Package Index&lt;/a&gt; so you can install
it using &lt;a href=&quot;https://pypi.python.org/pypi/pip&quot;&gt;Python&amp;#39;s pip&lt;/a&gt; by running:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;pip install https://github.com/turicas/rows/archive/develop.zip
pip install ddwrtdb
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;That&amp;#39;s it! Now run &lt;code&gt;ddwrtdb --help&lt;/code&gt; to see the available commands (it&amp;#39;s pretty
intuitive). You can also check out the &lt;a href=&quot;https://github.com/turicas/ddwrtdb/blob/develop/README.md&quot;&gt;project&amp;#39; README&lt;/a&gt; for
command examples.&lt;/p&gt;
&lt;p&gt;This simple command-line tool (&amp;lt; 200 lines of Python code) was created using
these awesome libraries:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://pypi.python.org/pypi/click&quot;&gt;click&lt;/a&gt;, to easily create a beautiful command-line interface;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://lxml.de/&quot;&gt;lxml&lt;/a&gt;, to use &lt;a href=&quot;https://en.wikipedia.org/wiki/XPath&quot;&gt;XPath&lt;/a&gt; in order to parse HTML more easily;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://python-requests.org/&quot;&gt;requests&lt;/a&gt;, to make HTTP requests to dd-wrt&amp;#39;s website;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/turicas/rows&quot;&gt;rows&lt;/a&gt;, to automatically extract tables from HTML and to export data to
any tabular format.&lt;/li&gt;
&lt;/ul&gt;</description><link>http://blog.justen.eng.br/2016/03/searching-ddwrt-router-database-with-ddwrtdb.html</link><author>noreply@blogger.com (Turicas&#39; blog - criativo, né?)</author><thr:total>0</thr:total><georss:featurename>Quito, Ecuador</georss:featurename><georss:point>-0.1806532 -78.467838200000017</georss:point><georss:box>-0.68876169999999992 -79.113285200000021 0.32745529999999995 -77.822391200000013</georss:box></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-18415308.post-6862042489270791551</guid><pubDate>Sun, 28 Feb 2016 18:08:00 +0000</pubDate><atom:updated>2016-02-28T15:14:02.682-03:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">chardet</category><category domain="http://www.blogger.com/atom/ns#">encoding</category><category domain="http://www.blogger.com/atom/ns#">filetype</category><category domain="http://www.blogger.com/atom/ns#">programação</category><category domain="http://www.blogger.com/atom/ns#">programming</category><category domain="http://www.blogger.com/atom/ns#">python</category><category domain="http://www.blogger.com/atom/ns#">software development</category><title>Detectando Encoding e Tipo de Arquivo com Python</title><description>&lt;p&gt;&lt;a href=&quot;/2016/02/detecting-file-type-and-encoding-in-python.html&quot;&gt;&lt;em&gt;Read this blog post in English.&lt;/em&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;O conteúdo desse artigo está disponível também em vídeo:&lt;/p&gt;
&lt;iframe width=&quot;100%&quot; height=&quot;400&quot;
        src=&quot;https://www.youtube.com/embed/BTMj5bDXByc&quot; frameborder=&quot;0&quot;
        allowfullscreen&gt;&lt;/iframe&gt;

&lt;p&gt;Alguns dos usuários da minha &lt;a href=&quot;https://github.com/turicas/rows&quot;&gt;biblioteca rows&lt;/a&gt; me pediram funcionalidades
de &lt;a href=&quot;https://github.com/turicas/rows/issues/129&quot;&gt;detecção de encoding&lt;/a&gt; e &lt;a href=&quot;https://github.com/turicas/rows/issues/143&quot;&gt;tipo de
arquivo&lt;/a&gt;, então comecei a procurar alguma biblioteca
Python &lt;em&gt;simples e rápida&lt;/em&gt; que desse conta dessa tarefa. O problema:
&lt;a href=&quot;https://pypi.python.org/pypi?%3Aaction=search&amp;amp;term=magic&amp;amp;submit=search&quot;&gt;encontrei muitas bibliotecas&lt;/a&gt; e &lt;em&gt;nenhuma delas me atraiu&lt;/em&gt;
por alguns dos seguintes motivos:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Não tinha uma implementação &lt;a href=&quot;http://blog.startifact.com/posts/older/what-is-pythonic.html&quot;&gt;pythônica&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;Não estava disponível no Debian (se eu usasse o &lt;a href=&quot;https://packages.debian.org/stretch/rows&quot;&gt;pacote rows no
Debian&lt;/a&gt; iria quebrar);&lt;/li&gt;
&lt;li&gt;Não estava sendo mantida atualmente;&lt;/li&gt;
&lt;li&gt;Não funcionava corretamente.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Então percebi que não existe uma &amp;quot;solução de ouro&amp;quot; para esse problema em
Python. Muitos pythonistas usam a &lt;a href=&quot;https://pypi.python.org/pypi/chardet&quot;&gt;biblioteca chardet&lt;/a&gt;, mas &lt;strong&gt;ela
detecta muitas vezes com erros e é razoavelmente lenta&lt;/strong&gt; (principalmente se
você precisar fazer a detecção enquanto um usuário aguarda a resposta através
de uma chamada de API via HTTP) -- veja mais detalhes sobre isso no
&lt;a href=&quot;https://www.youtube.com/watch?v=BTMj5bDXByc&quot;&gt;vídeo&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;But there should be one -- and &lt;a href=&quot;https://www.python.org/dev/peps/pep-0020/&quot;&gt;preferably only one&lt;/a&gt; -- obvious
way to do it.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Então, eu pensei: &lt;em&gt;por que não usar o &lt;a href=&quot;http://www.darwinsys.com/file/&quot;&gt;programa &lt;code&gt;file&lt;/code&gt;&lt;/a&gt;&lt;/em&gt;, que já
é bastante conhecido por hackers do mundo UNIX, é rápido e muito mais assertivo
que todas as outras opções? Para minha surpresa não existia um bom &lt;em&gt;binding&lt;/em&gt; de
Python para a &lt;code&gt;libmagic&lt;/code&gt; (algumas bibliotecas &lt;strong&gt;rodavam o comando&lt;/strong&gt; &lt;code&gt;file&lt;/code&gt; mas
isso não era uma opção para mim pois dependia de mais um pacote do sistema e
não era uma solução muito portável).&lt;/p&gt;
&lt;p&gt;Depois de vasculhar o &lt;a href=&quot;https://github.com/file/file&quot;&gt;repositório de código do &lt;code&gt;file&lt;/code&gt;&lt;/a&gt; eu encontrei
um &lt;a href=&quot;https://github.com/file/file/tree/master/python&quot;&gt;&lt;em&gt;binding&lt;/em&gt; simples para Python&lt;/a&gt;, que na época não
estava disponível no &lt;a href=&quot;https://pypi.python.org/&quot;&gt;PyPI&lt;/a&gt; e não era tão &lt;a href=&quot;http://blog.startifact.com/posts/older/what-is-pythonic.html&quot;&gt;pythônica&lt;/a&gt; como eu
esperava.&lt;/p&gt;
&lt;h2 id=&quot;a-solu-o&quot;&gt;A Solução&lt;/h2&gt;
&lt;p&gt;Como o código é &lt;a href=&quot;https://pt.wikipedia.org/wiki/Software_livre&quot;&gt;software livre&lt;/a&gt;, eu criei &lt;a href=&quot;http://bugs.gw.com/view.php?id=477&quot;&gt;uma &lt;strong&gt;issue&lt;/strong&gt; no
sistema de bugs do &lt;code&gt;file&lt;/code&gt;&lt;/a&gt; para resolver o problema e o
Christos Zoulas (atual mantenedor) me pediu um &lt;strong&gt;patch&lt;/strong&gt;, que
&lt;a href=&quot;https://github.com/turicas/file/tree/feature/python-package&quot;&gt;eu implementei&lt;/a&gt;, enviei e foi aceito. :-)&lt;/p&gt;
&lt;p&gt;Fiquei muito feliz de poder colaborar com um software importante e que eu uso
desde de meus primeiros passos no mundo GNU/Linux (2003? 2004?)! Durante minha
busca eu descobri que o primeiro &lt;strong&gt;commit&lt;/strong&gt; da versão livre do &lt;code&gt;file&lt;/code&gt; é de 1987
(eu tinha menos de 4 meses de idade!) -- e o software ainda é mantido hoje.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Agora todos podemos usar binding oficial do &lt;a href=&quot;http://www.darwinsys.com/file/&quot;&gt;&lt;code&gt;file&lt;/code&gt;&lt;/a&gt; para
Python:&lt;/strong&gt; a nova biblioteca é chamada &lt;a href=&quot;https://pypi.python.org/pypi/file-magic&quot;&gt;&lt;code&gt;file-magic&lt;/code&gt;&lt;/a&gt; e pode ser
instalada executando:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;lang-bash&quot;&gt;pip install file-magic
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Ela disponibiliza várias funções e atributos, mas as mais importantes são bem
simples e intuitivas: elas retornam uma &lt;a href=&quot;https://docs.python.org/2/library/collections.html#collections.namedtuple&quot;&gt;&lt;code&gt;namedtuple&lt;/code&gt;&lt;/a&gt; com os
resultados da detecção. Vamos ao código!&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;lang-python&quot;&gt;&amp;gt;&amp;gt;&amp;gt; import magic

&amp;gt;&amp;gt;&amp;gt; # Você pode especificar diretamente um nome de arquivo
&amp;gt;&amp;gt;&amp;gt; filename_detected = magic.detect_from_filename(&amp;#39;turicas.jpg&amp;#39;)
&amp;gt;&amp;gt;&amp;gt; print(filename_detected)
FileMagic(mime_type=&amp;#39;image/jpeg&amp;#39;, encoding=&amp;#39;binary&amp;#39;,
          name=&amp;#39;JPEG image data, JFIF standard 1.02, aspect ratio, density 1x1, segment length 16, progressive, precision 8, 842x842, frames 3&amp;#39;)
&amp;gt;&amp;gt;&amp;gt; # E você pode acessar os atributos da `namedtuple`:
&amp;gt;&amp;gt;&amp;gt; print(filename_detected.mime_type)
image/jpeg

# E se você já tem o conteúdo do arquivo em memória:
&amp;gt;&amp;gt;&amp;gt; with open(&amp;#39;data.html&amp;#39;) as fobj:
...     data = fobj.read()
&amp;gt;&amp;gt;&amp;gt; content_detected = magic.detect_from_content(data)
&amp;gt;&amp;gt;&amp;gt; print(content_detected)
FileMagic(mime_type=&amp;#39;text/html&amp;#39;, encoding=&amp;#39;utf-8&amp;#39;,
          name=&amp;#39;HTML document, UTF-8 Unicode text&amp;#39;)
&amp;gt;&amp;gt;&amp;gt; print(content_detected.encoding)
utf-8
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Algumas coisas ainda precisam ser melhoradas (como a documentação, rodar os
testes em outras plataformas etc.), porém a biblioteca já pode ser instalada
através do &lt;a href=&quot;https://pip.pypa.io/&quot;&gt;&lt;code&gt;pip&lt;/code&gt;&lt;/a&gt;, é rápida e precisa. :-)&lt;/p&gt;
&lt;p&gt;Espero que vocês tenham gostado! ;-)&lt;/p&gt;</description><link>http://blog.justen.eng.br/2016/02/detectando-encoding-e-tipo-de-arquivo-com-python.html</link><author>noreply@blogger.com (Turicas&#39; blog - criativo, né?)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img.youtube.com/vi/BTMj5bDXByc/default.jpg" height="72" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-18415308.post-5871889106014854641</guid><pubDate>Thu, 11 Feb 2016 14:11:00 +0000</pubDate><atom:updated>2016-02-11T12:12:20.147-02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">cartão de crédito</category><category domain="http://www.blogger.com/atom/ns#">csv</category><category domain="http://www.blogger.com/atom/ns#">finanças</category><category domain="http://www.blogger.com/atom/ns#">nubank</category><category domain="http://www.blogger.com/atom/ns#">pdf</category><category domain="http://www.blogger.com/atom/ns#">python</category><category domain="http://www.blogger.com/atom/ns#">rows</category><title>Fatura do NuBank em CSV</title><description>&lt;h2 id=&quot;o-que-nubank-&quot;&gt;O Que é NuBank?&lt;/h2&gt;
&lt;p&gt;Para quem não conhece, &lt;a href=&quot;https://nubank.com.br/&quot;&gt;NuBank&lt;/a&gt; é um cartão de crédito que &lt;strong&gt;não te
cobra anuidade&lt;/strong&gt; e tem um &lt;strong&gt;ótimo atendimento&lt;/strong&gt;, além de um aplicativo para
celular bastante fácil de usar (é sua única interface com eles). Em resumo:
eles estão fazendo o que em geral os bancos não fazem e estão lucrando com
isso! Já faz alguns meses que estou usando e recomendo!  Se quiser saber mais
detalhes &lt;a href=&quot;https://nubank.com.br/perguntas/&quot;&gt;acesse a página deles&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&quot;problemas&quot;&gt;Problemas&lt;/h2&gt;
&lt;p&gt;O &lt;a href=&quot;https://nubank.com.br/&quot;&gt;NuBank&lt;/a&gt;, apesar de muito bom, para mim poderia melhorar em alguns
detalhes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Ainda não dá para transferir as milhas do cartão para compra de passagens
aéreas;&lt;/li&gt;
&lt;li&gt;Ainda não consigo colocar o pagamento da fatura como débito automático no
Banco do Brasil (parece que só está disponível para Santander);&lt;/li&gt;
&lt;li&gt;É chato ter que usar o PDF da fatura para conferir meus gastos.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Quando estou no Brasil tento usar o &lt;a href=&quot;https://nubank.com.br/&quot;&gt;NuBank&lt;/a&gt; para todas as compras,
pois isso &lt;strong&gt;facilita muito o controle dos meus gastos&lt;/strong&gt; - caso não concorde que
gastar no cartão é melhor para ter o controle dos gastos então &lt;a href=&quot;#adendo-controle-das-contas&quot;&gt;leia o
adendo&lt;/a&gt; (quando estou fora evito usar o cartão de crédito pois &lt;strong&gt;o IOF
para compras internacionais é de 6,38%&lt;/strong&gt;). Porém, como a fatura vem por email
em PDF e não dá pra exportar para outros formatos pelo aplicativo, torna-se
trabalhoso (e chato) demais o processo de jogar os gastos para minha planilha
financeira pessoal e conferí-los. Como adoro programar e programar é, em
resumo, automatizar coisas, resolvi criar um software para fazer a conversão da
fatura do &lt;a href=&quot;https://nubank.com.br/&quot;&gt;NuBank&lt;/a&gt; PDF para CSV (que antes eu fazia manualmente). :D&lt;/p&gt;
&lt;h2 id=&quot;convertendo-a-fatura&quot;&gt;Convertendo a Fatura&lt;/h2&gt;
&lt;p&gt;O código do software está todo &lt;a href=&quot;https://github.com/turicas&quot;&gt;na minha conta no GitHub&lt;/a&gt;, chama-se
&lt;a href=&quot;https://github.com/turicas/nubank-to-csv&quot;&gt;&lt;code&gt;nubank-to-csv&lt;/code&gt;&lt;/a&gt;. Ele foi escrito em &lt;a href=&quot;http://www.python.org/&quot;&gt;Python&lt;/a&gt; usando a
minha &lt;a href=&quot;https://github.com/turicas/rows&quot;&gt;biblioteca rows&lt;/a&gt; (para facilitar a extração para CSV e qualquer
outro formato tabular) e a biblioteca &lt;a href=&quot;http://lxml.de/&quot;&gt;lxml&lt;/a&gt; para extrair os dados do
HTML que é gerado pelo &lt;code&gt;pdftohtml&lt;/code&gt;. Fique à vontade para contribuir com o
script caso você manje dos paranauê (&lt;a href=&quot;https://github.com/turicas/nubank-to-csv#contribua&quot;&gt;fiz uma lista de sugestões de
contribuição&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;O fluxo então é esse:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;Fatura em PDF &amp;gt;[pdftohtml]&amp;gt; Fatura em HTML &amp;gt;[nubank-to-csv]&amp;gt; Fatura em CSV
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Depois de &lt;a href=&quot;https://github.com/turicas/nubank-to-csv#instalação&quot;&gt;instalar o nubank-to-csv e suas
dependências&lt;/a&gt; basta rodar dois comandos:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;pdftohtml fatura.pdf
python nubank.py faturas.html fatura-lindona.csv
&lt;/code&gt;&lt;/pre&gt;&lt;blockquote&gt;
&lt;p&gt;O arquivo na segunda linha é &lt;code&gt;faturas.html&lt;/code&gt; (com &amp;quot;s&amp;quot;) mesmo -- esse arquivo é
gerado pelo &lt;code&gt;pdftohtml&lt;/code&gt; (junto com outros) depois da conversão. Você pode
deletar os arquivos gerados pelo &lt;code&gt;pdftohtml&lt;/code&gt; depois disso. Esse comando não
segue bem a &lt;a href=&quot;https://pt.wikipedia.org/wiki/Filosofia_Unix&quot;&gt;filosofia do UNIX&lt;/a&gt; e é bem inflexível (não dá
pra especificar o nome do arquivo de saída, por exemplo). :-/&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Uma coisa legal do script é que ele já junta as entradas relacionadas a IOF com
o gasto que gerou o IOF, facilitando bastante meu controle! :D&lt;/p&gt;
&lt;h2 id=&quot;convertendo-o-csv-para-outro-formato&quot;&gt;Convertendo o CSV para Outro Formato&lt;/h2&gt;
&lt;p&gt;Se você tem a &lt;em&gt;command-line interface&lt;/em&gt; da &lt;a href=&quot;https://github.com/turicas/rows&quot;&gt;biblioteca rows&lt;/a&gt; instalada
(&lt;code&gt;pip install rows&lt;/code&gt; ou &lt;code&gt;apt-get install rows&lt;/code&gt;) você também pode converter o CSV
para diversos outros formatos, como XLS, XLSX, JSON, SQLite, HTML e TXT. Para
converter, basta rodar:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;rows convert fatura-lindona.csv fatura.xls
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Caso queira outro formato em vez de XLS, basta trocar &amp;quot;xls&amp;quot; ali pela extensão
desejada que o software é esperto o suficiente para identificar. :)&lt;/p&gt;
&lt;h2 id=&quot;adendo-controle-das-contas&quot;&gt;Adendo: Controle das Contas&lt;/h2&gt;
&lt;p&gt;Muita gente prefere evitar o uso do cartão de crédito para ter mais controle
das contas (já vi muitos conselhos vindos de profissionais do ramo financeiro
sobre evitar o uso do cartão). &lt;strong&gt;Eu prefiro usar o cartão sempre que possível&lt;/strong&gt;
(quando estou no Brasil) pois quando gasto em dinheiro em geral esqueço
facilmente com o que gastei (e eu &lt;strong&gt;gosto de saber com o que gastei meu
dinheiro&lt;/strong&gt; - essa é a primeira ação para conseguir manter uma vida financeira
saudável).&lt;/p&gt;
&lt;p&gt;Muita gente se assusta quando eu digo isso porque a maior parte das pessoas que
usa o cartão de crédito tem &amp;quot;uma surpresa&amp;quot; quando chega a fatura. &lt;strong&gt;Eu nunca
tenho surpresas&lt;/strong&gt; pois:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Na planilha onde controlo meus ganhos e gastos já tenho &lt;strong&gt;estimativas de
entrada e saída para os próximos meses&lt;/strong&gt;;&lt;/li&gt;
&lt;li&gt;Duas vezes por semana vejo pelo aplicativo do &lt;a href=&quot;https://nubank.com.br/&quot;&gt;NuBank&lt;/a&gt; o que gastei
nos últimos dias e lanço na planilha do próximo mês (que é quando terei que
pagar a fatura); e&lt;/li&gt;
&lt;li&gt;Quando a fatura chega eu a converto para CSV, abro no
&lt;a href=&quot;https://www.libreoffice.org/&quot;&gt;LibreOffice&lt;/a&gt; e confiro se está de acordo com o que lancei na
minha planilha financeira anteriormente.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Com esses simples passos &lt;strong&gt;eu sei exatamente o valor da fatura que virá&lt;/strong&gt; e
tenho como me conter caso esteja gastando demais!&lt;/p&gt;
&lt;p&gt;Curtiu? Que tal compartilhar com seus amigos? ;)&lt;/p&gt;
&lt;p&gt;Dúvidas e sugestões? Comente! :)&lt;/p&gt;
</description><link>http://blog.justen.eng.br/2016/02/fatura-do-nubank-em-csv.html</link><author>noreply@blogger.com (Turicas&#39; blog - criativo, né?)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-18415308.post-442704693676147834</guid><pubDate>Tue, 02 Feb 2016 13:00:00 +0000</pubDate><atom:updated>2016-02-28T15:08:52.463-03:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">encoding</category><category domain="http://www.blogger.com/atom/ns#">english</category><category domain="http://www.blogger.com/atom/ns#">file</category><category domain="http://www.blogger.com/atom/ns#">filetype</category><category domain="http://www.blogger.com/atom/ns#">free software</category><category domain="http://www.blogger.com/atom/ns#">lang:english</category><category domain="http://www.blogger.com/atom/ns#">python</category><category domain="http://www.blogger.com/atom/ns#">rows</category><title>Detecting File Type and Encoding In Python</title><description>&lt;p&gt;&lt;a href=&quot;/2016/02/detectando-encoding-e-tipo-de-arquivo-com-python.html&quot;&gt;&lt;em&gt;Read this blog post in Brazilian Portuguese.&lt;/em&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I was looking for a &lt;em&gt;simple and fast&lt;/em&gt; Python library to implement proper &lt;a href=&quot;https://github.com/turicas/rows/issues/143&quot;&gt;file
type detection&lt;/a&gt; and &lt;a href=&quot;https://github.com/turicas/rows/issues/129&quot;&gt;encoding
detection&lt;/a&gt; into my &lt;a href=&quot;https://github.com/turicas/rows&quot;&gt;rows library&lt;/a&gt; and found that
there are &lt;a href=&quot;https://pypi.python.org/pypi?%3Aaction=search&amp;amp;term=magic&amp;amp;submit=search&quot;&gt;many libraries available&lt;/a&gt; on &lt;a href=&quot;https://pypi.python.org/&quot;&gt;Python Package
Index&lt;/a&gt; which claim to do it. &lt;em&gt;None of them attracted me&lt;/em&gt; because one of
the following reasons:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Do not have a &lt;a href=&quot;http://blog.startifact.com/posts/older/what-is-pythonic.html&quot;&gt;&lt;strong&gt;pythonic&lt;/strong&gt;&lt;/a&gt; implementation,&lt;/li&gt;
&lt;li&gt;Is not available on Debian to install as a package (it&amp;#39;s important so people
can install &lt;a href=&quot;https://github.com/turicas/rows&quot;&gt;rows&lt;/a&gt; and its dependencies using &lt;code&gt;pip&lt;/code&gt; or &lt;code&gt;apt-get&lt;/code&gt;),&lt;/li&gt;
&lt;li&gt;Is not maintained anymore, or&lt;/li&gt;
&lt;li&gt;Have some missing feature.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;None seemed to be the &lt;em&gt;de-facto&lt;/em&gt; way to do it in Python (I think pythonistas do
it in many ways). Many pythonistas use the &lt;a href=&quot;https://pypi.python.org/pypi/chardet&quot;&gt;chardet library&lt;/a&gt; but &lt;strong&gt;its
results are wrong sometimes and it&amp;#39;s pretty slow&lt;/strong&gt; (specially if you need to
detect during an API HTTP request, while the client is waiting).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;But there should be one -- and &lt;a href=&quot;https://www.python.org/dev/peps/pep-0020/&quot;&gt;preferably only one&lt;/a&gt; -- obvious
way to do it.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;So, I thought: &lt;em&gt;why not use the &lt;a href=&quot;http://www.darwinsys.com/file/&quot;&gt;&lt;code&gt;file&lt;/code&gt; software&lt;/a&gt;, which is well
known by all UNIX hackers, faster and most accurate than all the other
solutions I know&lt;/em&gt;? To my surprise there was not such a good Python binding for
&lt;a href=&quot;http://www.darwinsys.com/file/&quot;&gt;&lt;code&gt;file&lt;/code&gt;&lt;/a&gt; on &lt;a href=&quot;https://pypi.python.org/&quot;&gt;PyPI&lt;/a&gt; (and calling it as a child process was
not and option since it would add one more system-dependant package, not
detectable during a &lt;code&gt;pip install&lt;/code&gt; if missing and would also turn this solution
less portable). Then, searching on &lt;a href=&quot;https://github.com/file/file&quot;&gt;its repository&lt;/a&gt; I found a
&lt;a href=&quot;https://github.com/file/file/tree/master/python&quot;&gt;simple Python wrapper&lt;/a&gt;, which was not available on
&lt;a href=&quot;https://pypi.python.org/&quot;&gt;PyPI&lt;/a&gt; at that time and was not that &lt;a href=&quot;http://blog.startifact.com/posts/older/what-is-pythonic.html&quot;&gt;&lt;em&gt;pythonic&lt;/em&gt;&lt;/a&gt; as I
expected.&lt;/p&gt;
&lt;h2 id=&quot;the-solution&quot;&gt;The Solution&lt;/h2&gt;
&lt;p&gt;Since it&amp;#39;s free/libre software, I&amp;#39;ve &lt;a href=&quot;http://bugs.gw.com/view.php?id=477&quot;&gt;created an issue on &lt;code&gt;file&lt;/code&gt; bug
tracker&lt;/a&gt; to solve the problem and Christos Zoulas (the
current maintainer) asked for a patch, which &lt;a href=&quot;https://github.com/turicas/file/tree/feature/python-package&quot;&gt;I
implemented&lt;/a&gt;, sent and was accepted. I&amp;#39;m pretty happy I can
contribute to a software I&amp;#39;ve been using since my earlier times on GNU/Linux
(2003? 2004?). During this process I found that the first commit on the
free/libre &lt;a href=&quot;http://www.darwinsys.com/file/&quot;&gt;&lt;code&gt;file&lt;/code&gt;&lt;/a&gt; (which every GNU/Linux distribution and BSD
flavor uses) implementation was done when I was &lt;em&gt;less than 4 months old&lt;/em&gt; (!)
-- and it&amp;#39;s still maintained today.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Now you can use the official &lt;a href=&quot;http://www.darwinsys.com/file/&quot;&gt;&lt;code&gt;file&lt;/code&gt;&lt;/a&gt; Python binding:&lt;/strong&gt; the
new library is called &lt;a href=&quot;https://pypi.python.org/pypi/file-magic&quot;&gt;file-magic&lt;/a&gt; and can be installed by running:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;lang-bash&quot;&gt;pip install file-magic
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;It provides some methods and attributes but the most important are pretty
simple and intuitive to use: they return a &lt;a href=&quot;https://docs.python.org/2/library/collections.html#collections.namedtuple&quot;&gt;namedtuple&lt;/a&gt; with the
data you want! Let&amp;#39;s take a tour through an example:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;lang-python&quot;&gt;&amp;gt;&amp;gt;&amp;gt; import magic

&amp;gt;&amp;gt;&amp;gt; # You can pass the filename and it&amp;#39;ll open the file for you:
&amp;gt;&amp;gt;&amp;gt; filename_detected = magic.detect_from_filename(&amp;#39;turicas.jpg&amp;#39;)
&amp;gt;&amp;gt;&amp;gt; print filename_detected
FileMagic(mime_type=&amp;#39;image/jpeg&amp;#39;, encoding=&amp;#39;binary&amp;#39;,
          name=&amp;#39;JPEG image data, JFIF standard 1.02, aspect ratio, density 1x1, segment length 16, progressive, precision 8, 842x842, frames 3&amp;#39;)
&amp;gt;&amp;gt;&amp;gt; # It&amp;#39;s a `namedtuple` so you can access the attributes directly:
&amp;gt;&amp;gt;&amp;gt; print filename_detected.mime_type
image/jpeg

# If you have the file contents already, just use `detect_from_content`:
&amp;gt;&amp;gt;&amp;gt; with open(&amp;#39;data.html&amp;#39;) as fobj:
...     data = fobj.read()
&amp;gt;&amp;gt;&amp;gt; content_detected = magic.detect_from_content(data)
&amp;gt;&amp;gt;&amp;gt; print content_detected
FileMagic(mime_type=&amp;#39;text/html&amp;#39;, encoding=&amp;#39;utf-8&amp;#39;,
          name=&amp;#39;HTML document, UTF-8 Unicode text&amp;#39;)
&amp;gt;&amp;gt;&amp;gt; print content_detected.encoding
utf-8
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;There are still some things to be improved (like running tests in other
platforms -- including Python 3) but it&amp;#39;s pip-installable and usable now, so we
can benefit from it. Feel free to contribute. :)&lt;/p&gt;
&lt;p&gt;Hope you enjoy it!&lt;/p&gt;

</description><link>http://blog.justen.eng.br/2016/02/detecting-file-type-and-encoding-in-python.html</link><author>noreply@blogger.com (Turicas&#39; blog - criativo, né?)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-18415308.post-3837241683292546071</guid><pubDate>Wed, 30 Sep 2015 22:42:00 +0000</pubDate><atom:updated>2015-09-30T19:42:44.347-03:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">comunidade</category><category domain="http://www.blogger.com/atom/ns#">dados abertos</category><category domain="http://www.blogger.com/atom/ns#">debian</category><category domain="http://www.blogger.com/atom/ns#">desenvolvedor</category><category domain="http://www.blogger.com/atom/ns#">gnu/linux</category><category domain="http://www.blogger.com/atom/ns#">python</category><category domain="http://www.blogger.com/atom/ns#">pythonbrasil</category><category domain="http://www.blogger.com/atom/ns#">rows</category><category domain="http://www.blogger.com/atom/ns#">software livre</category><title>Pão de queijo + Python = UaiPython!</title><description>&lt;h2 id=&quot;o-evento&quot;&gt;O Evento&lt;/h2&gt;
&lt;p&gt;No último fim de semana de agosto tive o prazer de participar do
&lt;a href=&quot;http://uaipython.org/&quot;&gt;UaiPython&lt;/a&gt;: o maior evento sobre a linguagem
&lt;a href=&quot;http://www.python.org/&quot;&gt;Python&lt;/a&gt; do estado de Minas! Foi muito bom poder encontrar o pessoal e
ainda palestrar lá; sempre gostei de Minas por conta do povo ser super gente
boa, ter comidas super deliciosas... e agora uma comunidade &lt;a href=&quot;http://www.python.org/&quot;&gt;Python&lt;/a&gt;
super forte! o/&lt;/p&gt;
&lt;p&gt;O pessoal do &lt;a href=&quot;http://www.meetup.com/Belo-Horizonte-Python-User-Group/&quot;&gt;Python User Group de lá (PUG-MG)&lt;/a&gt; organizou o evento que
teve minicursos, palestras e foi regado a pão de queijo:&lt;/p&gt;
&lt;p align=&quot;center&quot;&gt;
  &lt;blockquote class=&quot;twitter-tweet tw-align-center&quot; lang=&quot;en&quot;&gt;
  &lt;p lang=&quot;pt&quot; dir=&quot;ltr&quot;&gt;UAI, pão de queijo, broa de fuba e queijo. Ô trem bom sô &lt;a href=&quot;https://twitter.com/hashtag/uaipython?src=hash&quot;&gt;#uaipython&lt;/a&gt; &lt;a href=&quot;https://twitter.com/hashtag/pythonmg?src=hash&quot;&gt;#pythonmg&lt;/a&gt; &lt;a href=&quot;https://twitter.com/pythonbrasil&quot;&gt;@pythonbrasil&lt;/a&gt; &lt;a href=&quot;https://twitter.com/apyb&quot;&gt;@apyb&lt;/a&gt; &lt;a href=&quot;http://t.co/3OQWptf29c&quot;&gt;pic.twitter.com/3OQWptf29c&lt;/a&gt;&lt;/p&gt;
  &amp;mdash; Python Minas Gerais (@PythonMG) &lt;a href=&quot;https://twitter.com/PythonMG/status/637614546287489025&quot;&gt;August 29, 2015&lt;/a&gt;
  &lt;/blockquote&gt;
  &lt;script async src=&quot;https://platform.twitter.com/widgets.js&quot; charset=&quot;utf-8&quot;&gt;&lt;/script&gt;
&lt;/p&gt;


&lt;h2 id=&quot;palestras&quot;&gt;Palestras&lt;/h2&gt;
&lt;p&gt;As palestras que mais curti foram a da &lt;a href=&quot;https://twitter.com/Outrora_&quot;&gt;Júlia Rizza&lt;/a&gt; que falou
sobre o &lt;a href=&quot;http://www.web2py.com/&quot;&gt;web2py&lt;/a&gt; (&lt;em&gt;framework&lt;/em&gt; que fiz algumas contribuições há uns 6
anos) - eu não o utilizo mais, porém o trabalho de divulgação/documentação que
a &lt;a href=&quot;https://twitter.com/Outrora_&quot;&gt;Júlia&lt;/a&gt; está fazendo é fantástico! - e do &lt;a href=&quot;https://twitter.com/ervilis&quot;&gt;Ervilis
Viana&lt;/a&gt; (meu colega de trabalho na equipe de &lt;em&gt;backend&lt;/em&gt; da
&lt;a href=&quot;http://www.onyo.com.br/&quot;&gt;Onyo&lt;/a&gt; e um dos organizadores do evento) que falou sobre a importância
das comunidades de desenvolvimento de software em uma &lt;a href=&quot;https://pt.wikipedia.org/wiki/Lightning_talk&quot;&gt;&lt;em&gt;lightning
talk&lt;/em&gt;&lt;/a&gt; (palestras de 5 minutos que são tradição nos eventos de
&lt;a href=&quot;http://www.python.org/&quot;&gt;Python&lt;/a&gt;). E fica aqui a ênfase: &lt;strong&gt;o importante são as pessoas&lt;/strong&gt; e é
por isso que as melhores partes dos eventos são as conversas de corredor, as
trocas de ideias na mesa do restaurante durante o almoço ou do bar durante a
cerveja pós-evento (essa última costuma ser a opção mais divertida ;-).&lt;/p&gt;
&lt;p&gt;E por falar em pessoas: estamos contratando aqui na &lt;a href=&quot;http://www.onyo.com.br/&quot;&gt;Onyo&lt;/a&gt;! Se você é
competente e tem experiência com desenvolvimento &lt;em&gt;backend&lt;/em&gt; em &lt;a href=&quot;http://www.python.org/&quot;&gt;Python&lt;/a&gt;
ou &lt;em&gt;frontend&lt;/em&gt; e já trabalha remotamente, então &lt;a href=&quot;http://onyo.com/&quot;&gt;entre em contato consco agora
mesmo&lt;/a&gt;!&lt;/p&gt;
&lt;h2 id=&quot;minha-palestra&quot;&gt;Minha Palestra&lt;/h2&gt;
&lt;p&gt;Eu particularmente gostei bastante de ter feito essa palestra: não só porque
achei que consegui me expressar bem, mas porque o tema é algo que curto
bastante e porque o processo de fazer a palestra me gerou bastante aprendizado:
durante o evento eu &lt;strong&gt;lancei a versão 0.1.0 da &lt;a href=&quot;http://pypi.python.org/pypi/rows&quot;&gt;biblioteca rows&lt;/a&gt;&lt;/strong&gt;, um
projeto que já venho trabalhando há algum tempo e acabei dando um gás para
lançar publicamente durante a palestra.&lt;/p&gt;
&lt;p&gt;O pessoal da &lt;a href=&quot;https://www.youtube.com/user/silexdocs&quot;&gt;Silex Sistemas&lt;/a&gt; filmou minha palestra, que pode ser vista
no YouTube (porém tivemos alguns problemas de sincronismo e nem todo o conteúdo
está online -- quando corrigirem o vídeo eu atualizarei aqui).&lt;/p&gt;
&lt;p align=&quot;center&quot;&gt;
  &lt;iframe width=&quot;480&quot; height=&quot;269&quot; src=&quot;https://www.youtube.com/embed/EA4UIB0HEVA&quot; frameborder=&quot;0&quot; allowfullscreen&gt;&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;Os slides estão disponíveis em um repositório no GitHub (&lt;a href=&quot;http://turicas.info/slides/brasil.io/uaipython/&quot;&gt;ver
slides&lt;/a&gt;, &lt;a href=&quot;https://github.com/turicas/slides/tree/gh-pages/brasil.io/uaipython&quot;&gt;ver código&lt;/a&gt;) e &lt;a href=&quot;https://slideshare.net/turicas/capturando-dados-com-python-uai-python&quot;&gt;em meu
slideshare&lt;/a&gt; (que você pode ver logo abaixo). Dê uma olhada
também nos &lt;a href=&quot;https://github.com/turicas/slides/tree/gh-pages/brasil.io/uaipython/exemplos&quot;&gt;exemplos que usei durante a palestra&lt;/a&gt; e nos
&lt;a href=&quot;https://github.com/turicas/rows/tree/develop/examples&quot;&gt;exemplos da biblioteca&lt;/a&gt;.&lt;/p&gt;
&lt;p align=&quot;center&quot;&gt;
  &lt;iframe src=&quot;https://www.slideshare.net/slideshow/embed_code/key/wT3NAhzhqKec6q&quot; width=&quot;425&quot; height=&quot;355&quot; frameborder=&quot;0&quot; marginwidth=&quot;0&quot; marginheight=&quot;0&quot; scrolling=&quot;no&quot; style=&quot;border:1px solid #CCC; border-width:1px; margin-bottom:5px; max-width: 100%;&quot; allowfullscreen&gt; &lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;Foi bem legal ter o &lt;em&gt;feedback&lt;/em&gt; da galera depois da palestra -- muita gente
curtiu a biblioteca e &lt;a href=&quot;https://github.com/turicas/rows/graphs/contributors&quot;&gt;já tenho recebido
contribuições&lt;/a&gt;. =)&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.youtube.com/playlist?list=PLpjw7IanjnmMHXlBe-0pBQa5PT1cDCBE0&quot;&gt;Veja também os vídeos das outras palestras do UaiPython 2015&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&quot;bilioteca-rows-&quot;&gt;Bilioteca &lt;code&gt;rows&lt;/code&gt;&lt;/h2&gt;
&lt;p&gt;Se você precisa trabalhar/converter dados tabulares, independente do formato em
que eles estejam, então &lt;a href=&quot;http://pypi.python.org/pypi/rows&quot;&gt;rows&lt;/a&gt; foi feita pensando em você! Para começar a
brincar, instale a &lt;a href=&quot;https://pypi.python.org/pypi/rows&quot;&gt;versão disponível no PyPI&lt;/a&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;pip install rows
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Caso você use &lt;a href=&quot;https://www.debian.org/releases/sid/&quot;&gt;Debian sid&lt;/a&gt; &lt;a href=&quot;https://twitter.com/turicas/status/648470560037539840&quot;&gt;o pacote já está no repositório
&lt;em&gt;main&lt;/em&gt;&lt;/a&gt; (e estará também no Ubuntu 16.04), daí é só rodar:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;aptitude update &amp;amp;&amp;amp; aptitude install rows
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;E para quem tem coração de ferro e já quer desfrutar das novas funcionalidades
(que estarão na &lt;a href=&quot;https://github.com/turicas/rows/milestones/Version%200.2.0&quot;&gt;versão 0.2.0&lt;/a&gt;), basta rodar:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;pip install git+https://github.com/turicas/rows.git
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Além de uma biblioteca que você pode usar em seus programas &lt;a href=&quot;http://www.python.org/&quot;&gt;Python&lt;/a&gt;, o
pacote possui uma &lt;em&gt;command-line interface&lt;/em&gt; que facilita ainda mais quando você
quer apenas converter dados. Aprenda mais sobre a biblioteca
rows &lt;a href=&quot;https://github.com/turicas/rows/blob/develop/README.md&quot;&gt;em seu README&lt;/a&gt; e &lt;a href=&quot;https://github.com/turicas/rows/tree/develop/examples&quot;&gt;veja os exemplos de uso&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&quot;pessoas&quot;&gt;Pessoas&lt;/h2&gt;
&lt;p&gt;Como eu comentei: &lt;strong&gt;o importante [nos eventos] são as pessoas&lt;/strong&gt;. As palestras
conseguimos assistir depois, via Internet; o conteúdo das palestras conseguimos
aprender depois (basta saber por quais palavras-chave procurar); os
pães-de-queijo conseguimos comprar depois; reunir todas essas pessoas novamente
talvez não seja tão fácil assim quanto as outras coisas que acontecem nos
eventos. Inclusive, eu tenho costume de &lt;strong&gt;não ir às palestras&lt;/strong&gt; justamente para
tentar aproveitar o momento para conhecer as pessoas e reencontrar os já
conhecidos.&lt;/p&gt;
&lt;p&gt;E falando das pessoas, coisas legais que aconteceram lá:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Estávamos lá reunidos &lt;a href=&quot;https://twitter.com/Outrora_&quot;&gt;Júlia&lt;/a&gt;, &lt;a href=&quot;https://github.com/cassiobotaro&quot;&gt;Cássio Botaro&lt;/a&gt;
(um dos organizadores do evento), &lt;a href=&quot;https://github.com/rochacbruno&quot;&gt;Bruno Rocha&lt;/a&gt; e &lt;a href=&quot;https://github.com/erichideki&quot;&gt;Erick
Hideki&lt;/a&gt;: pessoas que usam/já usaram &lt;a href=&quot;http://www.web2py.com/&quot;&gt;web2py&lt;/a&gt; e
colaboram/colaboraram com o ecossistema brasileiro do &lt;em&gt;framework&lt;/em&gt;. &lt;a href=&quot;https://www.facebook.com/rochacbruno/posts/10200827888737294:0&quot;&gt;Tiramos
até uma foto&lt;/a&gt; pra mandar pro Massimo Di Pierro! :D&lt;/li&gt;
&lt;li&gt;Foi criado o grupo &lt;a href=&quot;https://www.facebook.com/pyladiesbh&quot;&gt;PyLadies-BH&lt;/a&gt; para incentivar meninas a
programarem em &lt;a href=&quot;http://www.python.org/&quot;&gt;Python&lt;/a&gt;! o/&lt;/li&gt;
&lt;li&gt;Como tradição dos eventos de &lt;a href=&quot;http://www.python.org/&quot;&gt;Python&lt;/a&gt; tiramos uma &lt;a href=&quot;https://www.facebook.com/silexsistemas/photos/a.10153728942863287.1073741831.317676003286/10153728944258287/?type=3&amp;amp;theater&quot;&gt;foto com todo
mundo&lt;/a&gt; (aproveite e veja &lt;a href=&quot;https://www.facebook.com/media/set/?set=a.10153728942863287.1073741831.317676003286&amp;amp;type=3&quot;&gt;todas as outras fotos do
evento&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Tive contato (em alguns casos pela primeira vez) com algumas pessoas que
revelaram que &lt;strong&gt;começaram a programar por minha causa&lt;/strong&gt;: desde a época em que
eu usava Windows e &lt;a href=&quot;http://web.archive.org/web/20030611162513/http://www.scriptingx.com/&quot;&gt;tinha um canal de mIRC Scripting&lt;/a&gt; (há mais de 12
anos atrás!), até mais recentemente com vídeos de minhas palestras sobre
&lt;a href=&quot;http://www.python.org/&quot;&gt;Python&lt;/a&gt; e &lt;a href=&quot;http://www.CursoDeArduino.com.br/&quot;&gt;Arduino&lt;/a&gt;. Fiquei bastante orgulhoso ao
saber disso! :D&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;python-brasil&quot;&gt;Python Brasil&lt;/h2&gt;
&lt;p&gt;Aproveitando o assunto: caso você tenha interesse em &lt;a href=&quot;http://www.python.org/&quot;&gt;Python&lt;/a&gt; &lt;strong&gt;sugiro
foretemente participar da &lt;a href=&quot;http://2015.pythonbrasil.org.br/&quot;&gt;PythonBrasil&lt;/a&gt;&lt;/strong&gt;: é o maior evento nacional
sobre a linguagem! Eu estarei lá (vou anualmente desde 2009), porém dessa vez
não submeti palestra: resolvi enviar &lt;a href=&quot;http://speakerfight.com/events/pythonbrasil11-tutoriais/#4h-capturando-dados-com-python&quot;&gt;proposta de um tutorial sobre captura de
dados com Python&lt;/a&gt; (você pode me ajudar votando para que ele seja
aceito no evento ;-) -- os tutoriais serão totalmente gratuitos.&lt;/p&gt;
&lt;p&gt;Até novembro em São José dos Campos e &lt;em&gt;happy hacking&lt;/em&gt;! o/&lt;/p&gt;</description><link>http://blog.justen.eng.br/2015/09/pao-de-queijo-python-uaipython.html</link><author>noreply@blogger.com (Turicas&#39; blog - criativo, né?)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img.youtube.com/vi/EA4UIB0HEVA/default.jpg" height="72" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-18415308.post-684299413454284680</guid><pubDate>Fri, 31 Oct 2014 10:44:00 +0000</pubDate><atom:updated>2022-10-12T16:24:02.223-03:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">abnt2</category><category domain="http://www.blogger.com/atom/ns#">datilografia</category><category domain="http://www.blogger.com/atom/ns#">digitação</category><category domain="http://www.blogger.com/atom/ns#">dvorak</category><category domain="http://www.blogger.com/atom/ns#">hacking</category><category domain="http://www.blogger.com/atom/ns#">keyboards</category><category domain="http://www.blogger.com/atom/ns#">programação</category><category domain="http://www.blogger.com/atom/ns#">programming</category><category domain="http://www.blogger.com/atom/ns#">qwerty</category><category domain="http://www.blogger.com/atom/ns#">teclados</category><category domain="http://www.blogger.com/atom/ns#">typing</category><title>5 Dicas para Digitar Mais Rápido e Melhor</title><description>&lt;h2&gt;Mas por que, Turicas?&lt;/h2&gt;

&lt;p&gt;O simples fato de você usar muito o teclado, independente de sua profissão, já
é um bom sinal de que você deveria aprender a usá-lo melhor, como você
provavelmente faria com qualquer outra ferramenta de trabalho -- não basta ter
boas ferramentas, temos que saber utilizá-las eficientemente (&lt;strong&gt;programadores,
aprendam a digitar!&lt;/strong&gt;).&lt;/p&gt;

&lt;h2&gt;&lt;a href=&quot;https://en.wiktionary.org/wiki/TLDR&quot; target=&quot;_blank&quot;&gt;&lt;em&gt;TL; DR&lt;/em&gt;&lt;/a&gt;&lt;/h2&gt;

&lt;p&gt;Esse artigo é longo e poderia ser resumido na seguinte frase:&lt;/p&gt;

&lt;p align=&quot;center&quot;&gt;
 &lt;b&gt;Digitar bem é questão de técnica e prática (um bom teclado também ajuda).&lt;/b&gt;
&lt;/p&gt;

&lt;p&gt;Mas se você quer realmente entender como digitar mais rápido e melhor, além de
saber alguns detalhes maneiros (&quot;cultura inútil&quot;?), continue lendo as 5 dicas
a seguir. :-)&lt;/p&gt;

&lt;h2&gt;Dica #1: Use os DEZ Dedos&lt;/h2&gt;

&lt;p&gt;Para começar, que tal usar toda a capacidade que você tem? ;-) Não usar os 10
dedos para digitar é como ocupar só parte dos leitos disponíveis de um hospital
quando existem pacientes suficientes para ocupar todos. &lt;strong&gt;Não subutilize
sua capacidade&lt;/strong&gt;!&lt;/p&gt;

&lt;p&gt;A posição correta dos dedos segue ilustrada:&lt;/p&gt;

&lt;p align=&quot;center&quot;&gt;
  &lt;a href=&quot;https://secure.flickr.com/photos/crossettlibrary/5558800089/&quot; target=&quot;_blank&quot;&gt;&lt;img alt=&quot;Digitar corretamente é TÃO FÁCIL!&quot; border=&quot;0&quot; src=&quot;https://farm6.staticflickr.com/5183/5558800089_5be66df7c4.jpg&quot; width=&quot;500&quot; /&gt;&lt;/a&gt;
  &lt;br /&gt;
  Norman Saksvig já sabia disso em 1.947
  &lt;br /&gt;
  Foto por &lt;a href=&quot;https://secure.flickr.com/photos/crossettlibrary/&quot;&gt;Crossett Library&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;Por padrão, você apoia seus dedos (com exceção dos dedões) na &lt;strong&gt;fileira
principal&lt;/strong&gt;, que é a que tem as letras &quot;asdfghjklç&quot; em um teclado padrão
&lt;a href=&quot;abnt2&quot;&gt;ABNT2&lt;/a&gt; (falarei mais sobre o &lt;em&gt;layout&lt;/em&gt; do teclado abaixo).&lt;/p&gt;

&lt;p&gt;O dedo indicador é o único que toca duas teclas para a mesma fileira: o
esquerdo toca as teclas &quot;f&quot; e &quot;g&quot; (fica &quot;estacionado&quot; na &quot;f&quot;) e o direito toca
&quot;j&quot; e &quot;h&quot; (fica &quot;estacionado&quot; na &quot;j&quot;).&lt;/p&gt;

&lt;h2&gt;Dica #2: Não Olhe Para o Teclado&lt;/h2&gt;

&lt;p&gt;Confesso que fico inquieto quando vejo alguém &quot;catando milho&quot; (olhando para o
teclado em busca da tecla desejada). O contrário de &quot;catar milho&quot; é
&quot;&lt;a href=&quot;https://pt.wikipedia.org/wiki/Datilografia&quot;&gt;datilografar&lt;/a&gt;&quot; (&lt;a href=&quot;https://en.wikipedia.org/wiki/Touch_typing&quot;&gt;touch typing&lt;/a&gt;, em Inglês) e é
isso que você precisa aprender! :-D&lt;/p&gt;

&lt;p&gt;A razão da catação de milho é o desconhecimento sobre a posição das teclas e
para contornar isso, segue uma dica infalível:&lt;/p&gt;

&lt;p align=&quot;center&quot;&gt;
 &lt;b&gt;
 As teclas &quot;f&quot; e &quot;j&quot;, onde você deve estacionar seus dedos indicadores, possuem
 ranhuras.
 &lt;/b&gt;
&lt;/p&gt;

&lt;p&gt;Tateando o teclado você consegue identificar onde colocar os dedos indicadores
e, a partir da imagem da dica 1, você consegue posicionar os outros dedos
também
(existem até alguns &lt;a href=&quot;http://www.keyboardbumps.com/Keyboard-Stickers.aspx&quot;&gt;adesivos que aumentam a ranhura&lt;/a&gt; para
facilitar encontrar essas teclas, que são chamadas de &lt;em&gt;home keys&lt;/em&gt;).
Com isso, você consegue digitar todas as teclas da fileira principal sem
olhar, bastando decorar a ordem das teclas e seus respectivos dedos.&lt;/p&gt;

&lt;p&gt;Para as demais fileiras, basta deslocar os dedos para cima e para baixo: dessa
forma, o dedo mindinho esquerdo digitará as teclas &quot;a&quot; na fileira principal,
&quot;q&quot; na fileira acima e &quot;z&quot; na fileira abaixo.&lt;/p&gt;

&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjQSnF482ERjryUxwsiI2mvTdFuWgCT8saWBPGGKlY_-X7A9ry3dYQ9L_ta-paoNcnSlN7kH60AHW1xr-ks6tPiOnaDIZoYOZXCDL1QtvVw25sHNsev44kJX0UWIP7Hi04NJtClI2I9Vsz2mR823ScXIfimBS-KvvgLw6ayC68qjWE9x4eayQ/s1600/daskeyboard.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;Destaque para as ranhuras nas teclas &#39;f&#39; e &#39;j&#39; do meu Das Keyboard&quot; border=&quot;0&quot; data-original-height=&quot;1200&quot; data-original-width=&quot;1600&quot; height=&quot;300&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjQSnF482ERjryUxwsiI2mvTdFuWgCT8saWBPGGKlY_-X7A9ry3dYQ9L_ta-paoNcnSlN7kH60AHW1xr-ks6tPiOnaDIZoYOZXCDL1QtvVw25sHNsev44kJX0UWIP7Hi04NJtClI2I9Vsz2mR823ScXIfimBS-KvvgLw6ayC68qjWE9x4eayQ/w400-h300/daskeyboard.jpg&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;p align=&quot;center&quot;&gt;
    Ranhuras do meu &lt;a href=&quot;http://www.daskeyboard.com/model-s-ultimate/&quot;&gt;DasKeyboard Model S
    Ultimate&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;Como você pode perceber na foto acima, meu teclado não possui letras impressas
-- não tê-las também ajuda bastante a não olhar para o teclado! ;-)&lt;/p&gt;

&lt;p&gt;Os teclados físicos de celular (alguém lembra deles?) seguem a mesma lógica com
relação a ranhuras (que também são bem úteis para cegos).&lt;/p&gt;

&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiblk_AgTYhzPrxfBGKxhC4x85q_IFC-vrC08Rc9acuefQdjavHztNrygrPt7ZKBmPhU_bLDISWbdqQoR8DKrV8ETapLOUazZ33K1cUvzz6KOd64mHmpkRPUGWPT0hXj13oCbtLg-j6iBFDRdNVoJIl_1YrajFZkoonMUMwfu3s5WzAb6-qvQ/s1600/teclado-celular.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;Destaque para a ranhura na tecla &#39;5&#39; do teclado do celular Nokia 3120&quot; border=&quot;0&quot; data-original-height=&quot;1200&quot; data-original-width=&quot;1600&quot; height=&quot;240&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiblk_AgTYhzPrxfBGKxhC4x85q_IFC-vrC08Rc9acuefQdjavHztNrygrPt7ZKBmPhU_bLDISWbdqQoR8DKrV8ETapLOUazZ33K1cUvzz6KOd64mHmpkRPUGWPT0hXj13oCbtLg-j6iBFDRdNVoJIl_1YrajFZkoonMUMwfu3s5WzAb6-qvQ/w320-h240/teclado-celular.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;p align=&quot;center&quot;&gt;
  Ranhura na tecla &quot;5&quot; de um Nokia 3120
&lt;/p&gt;

&lt;p&gt;A tecla &lt;strong&gt;5&lt;/strong&gt; também funciona como &lt;em&gt;home key&lt;/em&gt; nos &lt;em&gt;numpads&lt;/em&gt;, os teclados
numéricos:&lt;/p&gt;

&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhGvoSvw0r9UJ3Jz3M9L3J-Xyqg3B0RrQCcFRbG2lR2iXn6ys6Jxf0B_wMa_UVHtoCy4Pp3Gp4oEHAy_hNBM-LEYbq2kg77fvwzOewpeWdqLG9M_GsdZU3o4dyuQZaOg9-sbnIi1l11uDQ0gRBGCU1bmZMC0psUEuqiQlN0g_0KpT3otDiQHw/s1600/numpad.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;Destaque para a ranhura na tecla &#39;5&#39; de um teclado numérico&quot; border=&quot;0&quot; data-original-height=&quot;1600&quot; data-original-width=&quot;1200&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhGvoSvw0r9UJ3Jz3M9L3J-Xyqg3B0RrQCcFRbG2lR2iXn6ys6Jxf0B_wMa_UVHtoCy4Pp3Gp4oEHAy_hNBM-LEYbq2kg77fvwzOewpeWdqLG9M_GsdZU3o4dyuQZaOg9-sbnIi1l11uDQ0gRBGCU1bmZMC0psUEuqiQlN0g_0KpT3otDiQHw/w240-h320/numpad.jpg&quot; width=&quot;240&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;p align=&quot;center&quot;&gt;
  Ranhura na tecla &quot;5&quot; de um teclado numérico
&lt;/p&gt;

&lt;p&gt;No teclado numérico o dedo médio fica na tecla &quot;5&quot;, o indicador na &quot;4&quot; e o
anelar na &quot;6&quot;. O &quot;0&quot; é digitado com o polegar, os sinais à direita com o mínimo
e as demais teclas são digitadas deslocando-se os três dedos principais
(indicador, médio e anelar).&lt;/p&gt;

&lt;h2&gt;Dica #3: Use um Bom Teclado&lt;/h2&gt;

&lt;p&gt;Saber digitar bem usando um teclado ruim não é algo prazeroso. Porém, definir se
uma característica é boa ou ruim depende de cada um, é algo pessoal. Seguem as
minhas preferências:&lt;/p&gt;

&lt;h3&gt;Características Desejáveis&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Teclas bem separadas&lt;/li&gt;
&lt;li&gt;Teclas ligeiramente côncavas&lt;/li&gt;
&lt;li&gt;Teclas não tão pequenas (depende do tamanho de seu dedo)&lt;/li&gt;
&lt;li&gt;Resposta boa (é o feedback que o teclado te dá ao apertar uma tecla -- o meu
DasKeyboard, por exemplo, faz um &quot;click&quot;)&lt;/li&gt;
&lt;/ul&gt;

&lt;p align=&quot;center&quot;&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj3L_y4VHFAs6IkeZkJK2ZyvbHNzYj-nGTGYLulcbBOWzOKUE3xYjxMtJ7CUvLlIrfB352VvLl4Of-XX2Hnga64OLPKxF_XRaDdxpnIF_iwFsldeDafVabRSN5vGlJrVXUPfotGdWkEjTyyrxlhk3r56wv--FDPQH4r_4OtuxyuIllbxqjx8A/s1600/teclado-lenovo-z460.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;Teclas separadas, côncavas e com tamanho adequado (para o meu gosto) do teclado do meu notebook Lenovo Z460&quot; border=&quot;0&quot; data-original-height=&quot;1200&quot; data-original-width=&quot;1600&quot; height=&quot;480&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj3L_y4VHFAs6IkeZkJK2ZyvbHNzYj-nGTGYLulcbBOWzOKUE3xYjxMtJ7CUvLlIrfB352VvLl4Of-XX2Hnga64OLPKxF_XRaDdxpnIF_iwFsldeDafVabRSN5vGlJrVXUPfotGdWkEjTyyrxlhk3r56wv--FDPQH4r_4OtuxyuIllbxqjx8A/w640-h480/teclado-lenovo-z460.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;a href=&quot;https://www.facebook.com/photo.php?fbid=639218906138560&amp;amp;l=7ed27f63de&quot; target=&quot;_blank&quot;&gt;&lt;br /&gt;
    Teclado do notebook Lenovo Z460: exemplo de características desejáveis
  &lt;/a&gt;
&lt;p&gt;&lt;/p&gt;

&lt;h3&gt;Características Indesejáveis&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&quot;Fn&quot; à esquerda de &quot;Ctrl&quot; e com variações de tamanho entre as teclas
modificadoras (&quot;Ctrl&quot;, &quot;Win/Super&quot;, &quot;Alt&quot;)&lt;/li&gt;
&lt;li&gt;Setas, &quot;Page Up&quot; e &quot;Page Down&quot; em tamanho minúsculo&lt;/li&gt;
&lt;li&gt;&quot;Esc&quot; e &quot;Fn&quot;s minúsculos&lt;/li&gt;
&lt;li&gt;&quot;Fn&quot;s invertidos com funções multimídia&lt;/li&gt;
&lt;li&gt;&quot;Insert&quot;, &quot;Delete&quot;, &quot;Home&quot; e &quot;End&quot; minúsculos e fora do posicionamento
original (&quot;Home&quot; acima de &quot;End&quot;, &quot;Insert&quot; acima de &quot;Delete&quot; e &quot;Home&quot; à
direita de &quot;Insert&quot;); &quot;Page Up&quot; e &quot;Page Down&quot; também não estão nesse &quot;grupo&quot;&lt;/li&gt;
&lt;/ul&gt;

&lt;p align=&quot;center&quot;&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg5kCCR4kyzrZREkWU-D5Qxds7ho3PTBT1heR516nK7VJVfFK5D4aCEktVZf_w_gMKsc2J7EUifx-WjfdUkioOUKmAb1j21kbS5q2VdDOYUE81z2z0dKTbOdkrz1DXVJH2IJQj_9SiZ2rA6KsyiB2Ii05CD0R6EfFrEavGvRHqFF72b8FQuUg/s1600/teclas-indesejaveis.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;Características indesejáveis em um teclado&quot; border=&quot;0&quot; data-original-height=&quot;1200&quot; data-original-width=&quot;1600&quot; height=&quot;480&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg5kCCR4kyzrZREkWU-D5Qxds7ho3PTBT1heR516nK7VJVfFK5D4aCEktVZf_w_gMKsc2J7EUifx-WjfdUkioOUKmAb1j21kbS5q2VdDOYUE81z2z0dKTbOdkrz1DXVJH2IJQj_9SiZ2rA6KsyiB2Ii05CD0R6EfFrEavGvRHqFF72b8FQuUg/w640-h480/teclas-indesejaveis.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;a href=&quot;https://www.facebook.com/photo.php?fbid=639310316129419&amp;amp;l=be63b651eb&quot; target=&quot;_blank&quot;&gt;
     Características indesejáveis em um teclado
  &lt;/a&gt;
&lt;p&gt;&lt;/p&gt;

&lt;p&gt;O teclado em questão é, ironicamente, também de um notebook Lenovo: dessa vez é
de um Thinkpad.&lt;/p&gt;

&lt;h2&gt;Dica #4: Escolha um Bom &lt;em&gt;Layout&lt;/em&gt;&lt;/h2&gt;

&lt;p&gt;Quem não usou PCs na década de 90 talvez não saiba que usamos layouts diferentes
do (agora) onipresente ABNT2. O ABNT2 é só um dos diversos outros layouts
possíveis e a boa notícia é que, independente do hardware do seu
teclado, você pode trocar o layout através de uma configuração de software.&lt;/p&gt;

&lt;p&gt;Obviamente, teclados já vem de fábrica com etiquetas nas teclas seguindo algum
layout, mas você pode configurar seu sistema para identificar as teclas de forma
diferente (isso só é ruim para quem cata milho ;-).&lt;/p&gt;

&lt;h3&gt;Layout Dvorak&lt;/h3&gt;

&lt;p align=&quot;center&quot;&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhYT0pw46eaLX6kJh8-OJIej8T57YvtJq-5d_p3i67OG8-Ui_NsXKgxJpqS3aXL19d1yNmY1kb4ZDxCgl4Cja87F1JERtD9JJ0XQo9mEt_vIUm0i2oZyDD1IymdSVJmD-XkZB4_2teZ1jlpUh4AEnA5Z-0r4YmEvP6iBcLOo5uYGGPjhRl5zQ/s1600/teclado-dvorak.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;Teclado antigo que troquei as teclas para o layout Dvorak&quot; border=&quot;0&quot; data-original-height=&quot;1200&quot; data-original-width=&quot;1600&quot; height=&quot;480&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhYT0pw46eaLX6kJh8-OJIej8T57YvtJq-5d_p3i67OG8-Ui_NsXKgxJpqS3aXL19d1yNmY1kb4ZDxCgl4Cja87F1JERtD9JJ0XQo9mEt_vIUm0i2oZyDD1IymdSVJmD-XkZB4_2teZ1jlpUh4AEnA5Z-0r4YmEvP6iBcLOo5uYGGPjhRl5zQ/w640-h480/teclado-dvorak.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;a href=&quot;https://www.facebook.com/photo.php?fbid=639586582768459&amp;amp;set=a.639218662805251.1073741835.100001513701977&quot; target=&quot;_blank&quot;&gt;
     Teclado antigo que troquei as teclas para o layout Dvorak
  &lt;/a&gt;
&lt;p&gt;&lt;/p&gt;

&lt;p&gt;Há alguns anos usei o &lt;a href=&quot;https://pt.wikipedia.org/wiki/Teclado_Simplificado_Dvorak&quot; title=&quot;Página sobre o layout de teclado Dvorak na Wikipédia&quot;&gt;layout Dvorak&lt;/a&gt; por algumas semanas e gostei
bastante (um dia pretendo voltar a usá-lo), daí resolvi trocar as teclas de
posição (só pra assustar quem tentava digitar nele ;-). Repare que nesse layout:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Das letras, as únicas que não foram trocadas (vindo de um layout ABNT2) são
&quot;a&quot; e &quot;m&quot;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Todas&lt;/em&gt; as vogais são acessadas diretamente através da mão esquerda, sem
precisar mudar de fileira (todas na fileira principal)&lt;/li&gt;
&lt;li&gt;As &lt;em&gt;home keys&lt;/em&gt; são as letras &quot;u&quot; e &quot;h&quot; (e não &quot;f&quot; e &quot;j&quot;) e, por isso, fiz
ranhuras nelas com um ferro de solda&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Repare também que raspei o símbolo do Windows das duas teclas &quot;Super&quot;. :-D&lt;/p&gt;

&lt;p&gt;Usar um teclado com layout Dvorak foi uma experiência incrível: digitar é algo
bastante natural para mim, mas quando me deparei com o Dvorak eu sabia apenas as
posições das teclas &quot;a&quot; e &quot;m&quot; -- me senti inútil. Tive que reaprender a
datilografar (achei mais difícil que aprender uma língua nova).&lt;/p&gt;

&lt;p&gt;Eu cheguei a digitar em uma velocidade aceitável nele em 2010, mas na época
ficava com Dvorak no desktop e ABNT2 no notebook, que me causou bastante
confusão mental e me fez voltar 100% para o ABNT2 porque precisei de um pouco
mais de produtividade naquele momento.&lt;/p&gt;

&lt;p&gt;Mesmo não usando mais o Dvorak, recomendo fortemente testá-lo: ele foi criado
na década de 20 por &lt;a href=&quot;https://pt.wikipedia.org/wiki/August_Dvorak&quot;&gt;August Dvorak&lt;/a&gt; e é bem mais ergonômico e
eficiente que um teclado ABNT2/QWERTY.&lt;/p&gt;

&lt;h3&gt;Layouts Personalizados&lt;/h3&gt;

&lt;p&gt;Além dos layouts pré-definidos, você pode fazer alterações em seu próprio layout
também -- por exemplo, conheço desenvolvedores de software que:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Invertem o &quot;caps lock&quot; com o &quot;ctrl&quot; (preferem não usar &quot;caps lock&quot;)&lt;/li&gt;
&lt;li&gt;Invertem a ação do &quot;shift&quot; nas teclas numéricas (&quot;!&quot; é feito naturalmente e
&quot;1&quot; é feito segurando &quot;shift&quot;)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A configuração de layout e personalização varia de sistema para sistema. Para
quem usa GNU/Linux, dê uma olhada no &lt;a href=&quot;http://www.x.org/archive/X11R7.5/doc/man/man5/Compose.5.html&quot;&gt;manual do arquivo de configuração
.XCompose&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;Dica #5: Treine, Treine, Treine!&lt;/h2&gt;

&lt;p&gt;De nada adianta saber toda essa teoria se você não pratica. Corrigir-se para
usar os dedos corretos e fazer pequenos exercícios ajuda bastante no processo.&lt;/p&gt;

&lt;p&gt;Uma forma bastante divertida e eficiente de treinar é usar o site
&lt;a href=&quot;http://www.typeracer.com/&quot; title=&quot;TypeRacer: site/jogo para treinar digitação&quot;&gt;TypeRacer&lt;/a&gt;, onde você consegue medir sua velocidade de digitação e ainda
pode convidar amigos para &quot;correr&quot; contigo; dá pra ver sua evolução também
através de um gráfico com o histórico de suas velocidades. &lt;a href=&quot;http://data.typeracer.com/pit/profile?user=turicas&quot;&gt;Minha média no
TypeRacer&lt;/a&gt; é de 82 palavras por minuto (WPM).&lt;/p&gt;

&lt;p&gt;Se você fez um teste lá e acha 82 WPM um número alto, veja só esse vídeo:&lt;/p&gt;

&lt;p align=&quot;center&quot;&gt;
  &lt;iframe allowfullscreen=&quot;&quot; frameborder=&quot;0&quot; height=&quot;281&quot; src=&quot;http://www.youtube.com/embed/m9EXEpjSDEw&quot; width=&quot;500&quot;&gt;&lt;/iframe&gt;
  &lt;br /&gt;
  &lt;a href=&quot;http://www.youtube.com/watch?v=m9EXEpjSDEw&quot;&gt;Final do Campeonato
  DasKeyboard&lt;/a&gt;
&lt;/p&gt;

&lt;h2&gt;Conclusão&lt;/h2&gt;

&lt;p&gt;Em resumo:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Saber usar o teclado (não olhar, usar os dez dedos)&lt;/li&gt;
&lt;li&gt;Usar um bom teclado&lt;/li&gt;
&lt;li&gt;Praticar&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Boa digitação! o/&lt;/p&gt;

&lt;p&gt;Se você gostou desse artigo, que tal compartilhá-lo com seus amigos? ;-)&lt;/p&gt;</description><link>http://blog.justen.eng.br/2014/10/5-dicas-para-digitar-mais-rapido-e-melhor.html</link><author>noreply@blogger.com (Turicas&#39; blog - criativo, né?)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjQSnF482ERjryUxwsiI2mvTdFuWgCT8saWBPGGKlY_-X7A9ry3dYQ9L_ta-paoNcnSlN7kH60AHW1xr-ks6tPiOnaDIZoYOZXCDL1QtvVw25sHNsev44kJX0UWIP7Hi04NJtClI2I9Vsz2mR823ScXIfimBS-KvvgLw6ayC68qjWE9x4eayQ/s72-w400-h300-c/daskeyboard.jpg" height="72" width="72"/><thr:total>2</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-18415308.post-7154170398551763470</guid><pubDate>Tue, 14 Oct 2014 23:57:00 +0000</pubDate><atom:updated>2014-10-14T20:57:51.956-03:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">arduino</category><category domain="http://www.blogger.com/atom/ns#">arduinrio</category><category domain="http://www.blogger.com/atom/ns#">computação embarcada</category><category domain="http://www.blogger.com/atom/ns#">curso de arduino</category><category domain="http://www.blogger.com/atom/ns#">dados abertos</category><category domain="http://www.blogger.com/atom/ns#">desenvolvedor</category><category domain="http://www.blogger.com/atom/ns#">desenvolvimento de software</category><category domain="http://www.blogger.com/atom/ns#">eletronica</category><category domain="http://www.blogger.com/atom/ns#">eventos</category><category domain="http://www.blogger.com/atom/ns#">software livre</category><title>Hackathon do SESI Cultura Digital 2014</title><description>&lt;p&gt;As &lt;a href=&quot;https://en.wikipedia.org/wiki/Hackathon&quot;&gt;&lt;em&gt;hackathons&lt;/em&gt;&lt;/a&gt; (&quot;maratonas hacker&quot;), também conhecidas como
&lt;em&gt;hack days&lt;/em&gt;, &lt;em&gt;hack fests&lt;/em&gt; ou &lt;em&gt;code fests&lt;/em&gt; são maratonas que envolvem
desenvolvimento de algum software, em geral sobre um tema específico e com
alguma premiação ao final.  Em geral os grupos participantes possuem
desenvolvedores de software, designers e administradores, remetendo à equipe de
uma pequena empresa. Muitas hackathons visam resolver algum problema ou mesmo
fomentar a criação de empresas &lt;em&gt;startups&lt;/em&gt; na área-tema.&lt;/p&gt;

&lt;p&gt;Desde que conheci o conceito gostei bastante, afinal é uma forma de incentivo a
desenvolvimento de aplicativos inovadores, em geral com algum cunho social.
Mesmo os grupos que não são premiados desenvolvem algum aplicativo, que pode ser
útil ou até mesmo se tornar um negócio no futuro. Tenho visto várias hackathons
relacionadas a &lt;a href=&quot;http://www.slideshare.net/turicas/import-brasil-dados-abertos-de-forma-fcil&quot;&gt;dados
abertos&lt;/a&gt;,
que é um tema super interessante e, na minha visão, pode mudar a forma sobre
como vivemos em sociedade.&lt;/p&gt;

&lt;p align=&quot;center&quot;&gt;
&lt;a href=&quot;http://brasil.io/&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://brasil.io/assets/images/logo-brasil.io.svg&quot; alt=&quot;Brasil.IO: Dados abertos para um Brasil mais ligado&quot; title=&quot;&quot; /&gt;&lt;/a&gt;
&lt;br /&gt;
&lt;a href=&quot;http://brasil.io/&quot;&gt;Brasil.IO: meu projeto pessoal de dados abertos&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;Recentemente fui convidado pela organização do &lt;a href=&quot;http://www.firjan.org.br/data/pages/2C908CEC47A29CFC0148A894CBC56BDF.htm#top&quot;&gt;SESI Cultura Digital&lt;/a&gt; a
ser tutor da &lt;a href=&quot;http://www.firjan.org.br/main.jsp?lumPageId=40288081201F4C3E012068444B1B7304&amp;amp;lumItemId=2C908CEC47A29CFC0148A8FBBBF509B0&quot;&gt;Hackathon SESI Cultura Digital 2014&lt;/a&gt;, uma maratona
com prêmios de &lt;strong&gt;R$ 20.000&lt;/strong&gt;, &lt;strong&gt;R$ 10.000&lt;/strong&gt; e &lt;strong&gt;R$ 5.000&lt;/strong&gt; para os melhores
projetos, podendo ser feitos por grupos de 3 a 5 pessoas. O objetivo dessa
hackathon é &lt;strong&gt;fomentar o desenvolvimento de soluções ambientais para o estado do
Rio de Janeiro&lt;/strong&gt;, nos seguintes eixos temáticos:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://www.firjan.org.br/lumis/portal/file/fileDownload.jsp?fileId=2C908CEC48AE0F120148C834D54960D0&quot;&gt;Monitoramento do Ar&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.firjan.org.br/lumis/portal/file/fileDownload.jsp?fileId=2C908CEC48AE0F120148B30AB0AC7444&quot;&gt;Qualidade da Água&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.firjan.org.br/lumis/portal/file/fileDownload.jsp?fileId=2C908CEC48AE0F120148B30BD0F07C08&quot;&gt;Technobiofilia: Apps e Vestíveis&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.firjan.org.br/lumis/portal/file/fileDownload.jsp?fileId=2C908CEC48AE0F120148B30B4AB97959&quot;&gt;Technobiofilia: Hardware e Software&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p align=&quot;center&quot;&gt;
&lt;a href=&quot;http://www.firjan.org.br/data/pages/2C908CEC47A29CFC0148A894CBC56BDF.htm#top&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgmQo5-dQF1PGxSbCcv1laJeqHTUekR3ON05-RMizckwjIiFThijXAi6OhNccJvdriI0M9SsoEmkcgOGABqdl0VvSERMmHY0BKB1jV-yfBXbh8HUqEPT0_Hp0XERyShYnhYUZrJ/s1600/sesi-cultura-digital-2014-header.jpg&quot; width=&quot;500&quot; alt=&quot;Festival SESI de Cultura Digital 2014&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;Se você tem interesse, se inscreve logo pois as inscrições vão somente até dia
&lt;strong&gt;18 de outubro&lt;/strong&gt;! Cada grupo participante receberá um Kit Arduino! o/&lt;/p&gt;

&lt;p&gt;A minha tutoria será na área de fontes de dados relacionadas a &lt;a href=&quot;http://www.firjan.org.br/lumis/portal/file/fileDownload.jsp?fileId=2C908CEC48AE0F120148C834D54960D0&quot;&gt;monitoramento do
ar&lt;/a&gt; e &lt;a href=&quot;http://www.firjan.org.br/lumis/portal/file/fileDownload.jsp?fileId=2C908CEC48AE0F120148B30AB0AC7444&quot;&gt;qualidade da água&lt;/a&gt;. Além da hackathon, o evento contará com
várias outras atrações, como palestras e oficinas (também serei tutor de duas
oficias de &lt;a href=&quot;http://www.CursoDeArduino.com.br/&quot;&gt;Arduino&lt;/a&gt;, que já estão lotadas!).&lt;/p&gt;

&lt;p&gt;Os grupos terão dois dias (23 e 24 de outubro) para desenvolver um protótipo e
terão de apresentá-los a uma banca avaliadora no dia 25. Durante os dias 23 e 24
serão feitas diversas apresentações para facilitar o trabalho dos grupos, bem
como várias tutores estarão disponíveis para tirar dúvidas e colaborar no
desenvolvimento dos protótipos.&lt;/p&gt;

&lt;p&gt;Que tal participar? Curtiu a ideia? &lt;strong&gt;Compartilhe com seus amigos&lt;/strong&gt;! :-)&lt;/p&gt;
</description><link>http://blog.justen.eng.br/2014/10/hackathon-do-sesi-cultura-digital.html</link><author>noreply@blogger.com (Turicas&#39; blog - criativo, né?)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgmQo5-dQF1PGxSbCcv1laJeqHTUekR3ON05-RMizckwjIiFThijXAi6OhNccJvdriI0M9SsoEmkcgOGABqdl0VvSERMmHY0BKB1jV-yfBXbh8HUqEPT0_Hp0XERyShYnhYUZrJ/s72-c/sesi-cultura-digital-2014-header.jpg" height="72" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-18415308.post-4304038055001663249</guid><pubDate>Tue, 02 Sep 2014 16:37:00 +0000</pubDate><atom:updated>2014-09-02T13:37:39.446-03:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">arduino</category><category domain="http://www.blogger.com/atom/ns#">belo horizonte</category><category domain="http://www.blogger.com/atom/ns#">bh</category><category domain="http://www.blogger.com/atom/ns#">curso de arduino</category><category domain="http://www.blogger.com/atom/ns#">diy</category><category domain="http://www.blogger.com/atom/ns#">eletrônica</category><category domain="http://www.blogger.com/atom/ns#">hardware livre</category><category domain="http://www.blogger.com/atom/ns#">mg</category><category domain="http://www.blogger.com/atom/ns#">minas gerais</category><category domain="http://www.blogger.com/atom/ns#">software livre</category><category domain="http://www.blogger.com/atom/ns#">viagem</category><title>Curso de Arduino em Belo Horizonte</title><description>&lt;h1&gt;Curso de Arduino em BH&lt;/h1&gt;

&lt;p&gt;Já faz algum tempo que eu gostaria de fazer o &lt;a href=&quot;http://www.CursoDeArduino.com.br/&quot;&gt;Curso de Arduino&lt;/a&gt; em Belo
Horizonte - adoro Minas (estou sempre por lá) e sempre tem mineiros me
perguntando sobre o curso. Então, chegou o momento: &lt;strong&gt;estão
abertas as inscrições para turma do Curso de Arduino em BH&lt;/strong&gt;! \o/&lt;/p&gt;

&lt;p&gt;O curso acontecerá em &lt;strong&gt;parceria com o &lt;a href=&quot;http://guajajaras.cc/&quot;&gt;Guajajaras Coworking&lt;/a&gt;&lt;/strong&gt;, um
espaço de trabalho super moderno, com ótimas pessoas e &lt;a href=&quot;https://goo.gl/maps/o6AGU&quot;&gt;muito bem localizado,
no Centrão da cidade (Rua dos Guajajaras, 572)&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://www.guajajaras.cc/calendario/curso-de-arduino&quot;&gt;
&lt;img src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhyNREgPDp6C6d9T5R1nFgSIlFK0D9OJblFvzr-PaNIxmxpkxdHLLylZsXA6RIhBEcU1gOryWD2jEMvtuXz69h8zonaGK3MW-eAjdwY-YEoSY6k5r_ue785_XTLsT1IQC3D1Dn_/s1600/curso-de-arduino-guajajaras.jpg&quot; alt=&quot;Curso de Arduino no Guajajaras Coworking&quot; border=&quot;0&quot; /&gt;
&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A primeira turma de BH acontecerá em dois &lt;strong&gt;sábados, dias 20 e 27 de setembro&lt;/strong&gt;,
das &lt;strong&gt;10 às 19 horas&lt;/strong&gt; (com 1h de intervalo para almoço), totalizando
&lt;strong&gt;16 horas de aula&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Se você tem interesse, corre porque a procura está grande: recebi &lt;strong&gt;centenas&lt;/strong&gt;
de e-mails perguntando por essa turma! Só temos 16 vagas e já temos 50% da turma
inscrita (abrimos as inscrições há apenas 5 dias). O valor da inscrição é de
&lt;strong&gt;R$ 450,00&lt;/strong&gt;, que podem ser pagos em até 12x usando o PagSeguro. &lt;a href=&quot;http://www.guajajaras.cc/calendario/curso-de-arduino&quot;&gt;Inscreva-se
já no Curso de Arduino em BH&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Vou aproveitar o tempo em Minas e tentar participar de um &lt;a href=&quot;https://groups.google.com/forum/#!topic/python-mg/_H3htlfpbt0&quot;&gt;pyBHar&lt;/a&gt;, o
encontro dos pythonistas mineiros! ;-)&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Arduinistas e Pythonistas&lt;/strong&gt; mineiros, até lá! o/&lt;/p&gt;
</description><link>http://blog.justen.eng.br/2014/09/curso-de-arduino-em-belo-horizonte.html</link><author>noreply@blogger.com (Turicas&#39; blog - criativo, né?)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhyNREgPDp6C6d9T5R1nFgSIlFK0D9OJblFvzr-PaNIxmxpkxdHLLylZsXA6RIhBEcU1gOryWD2jEMvtuXz69h8zonaGK3MW-eAjdwY-YEoSY6k5r_ue785_XTLsT1IQC3D1Dn_/s72-c/curso-de-arduino-guajajaras.jpg" height="72" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-18415308.post-3101516399032678217</guid><pubDate>Fri, 07 Mar 2014 16:06:00 +0000</pubDate><atom:updated>2014-03-07T13:07:04.407-03:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">key-value</category><category domain="http://www.blogger.com/atom/ns#">mongodb</category><category domain="http://www.blogger.com/atom/ns#">mongodict</category><category domain="http://www.blogger.com/atom/ns#">python</category><category domain="http://www.blogger.com/atom/ns#">software livre</category><title>Armazenando dicionários no MongoDB com MongoDict</title><description>&lt;p&gt;Muitas das vezes que precisamos persistir dados chave-valor optamos por
utilizar bases de dados focados somente em armazenar esse tipo de dado: as
chamadas &lt;em&gt;key-value stores&lt;/em&gt;, como por exemplo &lt;a href=&quot;http://basho.com/riak/&quot;&gt;Riak&lt;/a&gt;, &lt;a href=&quot;http://redis.io/&quot;&gt;Redis&lt;/a&gt; e
&lt;a href=&quot;http://memcached.org/&quot;&gt;Memcached&lt;/a&gt; (esse último, persiste apenas em memória).
Porém, adicionar mais um software/serviço em uma aplicação trás mais trabalho
para a equipe (&lt;em&gt;deployment&lt;/em&gt;, manutenção) e maior possibilidade de falhas (não
somente de segurança, mas relacionadas a lentidão e &lt;em&gt;downtime&lt;/em&gt; também).&lt;/p&gt;

&lt;p align=&quot;center&quot;&gt;
  &lt;a href=&quot;http://basho.com/riak/&quot;&gt;&lt;img src=&quot;https://raw.github.com/basho/basho_docs/master/source/images/riaklogo.png&quot; alt=&quot;Riak logo&quot; /&gt;&lt;/a&gt;
  &amp;nbsp;
  &lt;a href=&quot;http://redis.io/&quot;&gt;&lt;img src=&quot;http://redis.io/images/redis.png&quot; alt=&quot;Redis logo&quot; /&gt;&lt;/a&gt;
  &amp;nbsp;
  &lt;a href=&quot;http://memcached.org/&quot;&gt;&lt;img src=&quot;https://drupal.org/files/styles/grid-3/public/images/memcache_logo.png&quot; alt=&quot;Memcached logo&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;Caso você já tenha o &lt;a href=&quot;http://www.mongodb.org/&quot;&gt;MongoDB&lt;/a&gt; rodando em sua infraestrutura e
necessite de uma &lt;em&gt;key-value store&lt;/em&gt;, você poderá utilizar a
&lt;a href=&quot;https://github.com/turicas/mongodict&quot;&gt;biblioteca Python mongodict&lt;/a&gt;, que desenvolvi em julho de 2012
para aproveitar a infra já disponível e, ao mesmo tempo, poder utilizar os
dados persistidos com facilidade.&lt;/p&gt;

&lt;h2&gt;Dicionários no MongoDB&lt;/h2&gt;

&lt;p&gt;Desenvolvedores Python são &lt;em&gt;hash-addicted&lt;/em&gt; (rá!) - usamos &lt;strong&gt;muito&lt;/strong&gt; os
&lt;a href=&quot;http://docs.python.org/2/library/stdtypes.html#mapping-types-dict&quot;&gt;dicionários&lt;/a&gt;, para tudo (às vezes até excessivamente). Meu objetivo ao
desenvolver o &lt;a href=&quot;https://github.com/turicas/mongodict&quot;&gt;mongodict&lt;/a&gt; foi justamente aproveitar a interface que
já conhecemos de dicionários (&lt;code&gt;dict[chave] = valor&lt;/code&gt;) para persistir os dados no
&lt;a href=&quot;http://www.mongodb.org/&quot;&gt;MongoDB&lt;/a&gt; sem precisar utilizar uma API diferente da que já estamos
acostumados.&lt;/p&gt;

&lt;p align=&quot;center&quot;&gt;
  &lt;a href=&quot;http://www.mongodb.org/&quot;&gt;&lt;img src=&quot;https://upload.wikimedia.org/wikipedia/commons/thumb/e/eb/MongoDB_Logo.png/338px-MongoDB_Logo.png&quot; alt=&quot;Logo MongoDB&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;h2&gt;Instalando&lt;/h2&gt;

&lt;p&gt;Sem mais blá blá blá, vamos lá: o
&lt;a href=&quot;https://pypi.python.org/pypi/mongodict&quot;&gt;mongodict está disponível no PyPI&lt;/a&gt; então, para instalá-lo,
basta executar o comando:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;pip install mongodict
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Ele funciona em Python 2.7 e 3.3.&lt;/p&gt;

&lt;h2&gt;Usando&lt;/h2&gt;

&lt;p&gt;A biblioteca é bem simples: existe apenas uma classe &lt;code&gt;MongoDict&lt;/code&gt; dentro do
módulo. Aprenda com exemplos:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;from mongodict import MongoDict

# Cria uma instância do &quot;dicionário&quot;, já conectando no mongod
# Argumentos `host`, `port`, `database` e `collection` são opcionais
mydict = MongoDict()

mydict[&#39;answer&#39;] = 42
print(mydict[&#39;answer&#39;]) # 42

print(&#39;answer&#39; in mydict) # True
del mydict[&#39;answer&#39;]
print(&#39;answer&#39; in mydict) # False

mydict.update({&#39;spam&#39;: &#39;eggs&#39;, &#39;ham&#39;: &#39;damn&#39;})
for key, value in mydict.items():
    print(&#39;{} = {}&#39;.format(key, value))
# ham = damn
# spam = eggs
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Para assegurar que a classe &lt;code&gt;MongoDict&lt;/code&gt; segue o protocolo
&lt;a href=&quot;http://docs.python.org/2/library/collections.html#collections.MutableMapping&quot;&gt;MutableMapping&lt;/a&gt;, utilizei &lt;a href=&quot;https://github.com/turicas/mongodict/blob/develop/tests/test_mapping_protocol.py&quot;&gt;os testes do próprio
CPython&lt;/a&gt;!
:-)&lt;/p&gt;

&lt;h2&gt;Serialização de Dados&lt;/h2&gt;

&lt;p&gt;O &lt;a href=&quot;https://github.com/turicas/mongodict&quot;&gt;mongodict&lt;/a&gt; utiliza a biblioteca &lt;a href=&quot;http://docs.python.org/2/library/pickle.html&quot;&gt;pickle&lt;/a&gt; para
serializar/desserializar os dados (apenas os valores, não as chaves), portanto,
qualquer dado que puder ser serializado com a &lt;a href=&quot;http://docs.python.org/2/library/pickle.html&quot;&gt;pickle&lt;/a&gt; poderá ser
salvo.&lt;/p&gt;

&lt;p&gt;Porém, em alguns casos é desejável alterar o serializador. Digamos, por
exemplo, que eu esteja salvando o conteúdo de arquivos HTML e queira
compactá-los para economizar espaço em meu servidor - daí basta passar o
parâmetro &lt;code&gt;codec&lt;/code&gt;:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;from zlib import compress, decompress
from urllib import urlopen

from mongodict import MongoDict

mydict = MongoDict(codec=(compress, decompress))
url = &#39;http://www.CursoDeArduino.com.br/&#39;
mydict[&#39;curso-de-arduino&#39;] = urlopen(url).read()
print(mydict[&#39;curso-de-arduino&#39;])
# &amp;lt;... imprime o HTML da página ...&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Nesse caso, se conectarmos no MongoDB diretamente podemos ver o tamanho
armazenado lá:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;colecao = mydict._collection
documento = colecao.find_one({&#39;_id&#39;: &#39;curso-de-arduino&#39;})
print(len(documento[&#39;v&#39;])) # 5763
print(len(mydict[&#39;curso-de-arduino&#39;])) # 20076
&lt;/code&gt;&lt;/pre&gt;

&lt;h2&gt;Cuidado com Objetos Mutáveis&lt;/h2&gt;

&lt;p&gt;Caso o valor de uma das chaves seja um objeto mutável (por exemplo: uma lista),
lembre-se que alterar o objeto recuperado do &lt;a href=&quot;https://github.com/turicas/mongodict&quot;&gt;MongoDict&lt;/a&gt; não irá
atualizá-lo no banco (pois ele fica em memória e é um objeto Python nativo).
Por exemplo:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;from mongodict import MongoDict

mydict = MongoDict()
mydict[&#39;compras&#39;] = [&#39;tomate&#39;, &#39;rúcula&#39;, &#39;queijo&#39;]
mydict[&#39;compras&#39;].append(&#39;azeite&#39;)
print(mydict[&#39;compras&#39;])
# [&#39;tomate&#39;, &#39;r\xc3\xbacula&#39;, &#39;queijo&#39;]
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Para corrigir isso, devemos &lt;em&gt;explicitamente atualizar&lt;/em&gt; o valor da chave:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;compras = mydict[&#39;compras&#39;]
compras.append(&#39;azeite&#39;)
mydict[&#39;compras&#39;] = compras
print(mydict[&#39;compras&#39;])
# [&#39;tomate&#39;, &#39;r\xc3\xbacula&#39;, &#39;queijo&#39;, &#39;azeite&#39;]
&lt;/code&gt;&lt;/pre&gt;

&lt;h2&gt;Autenticação&lt;/h2&gt;

&lt;p&gt;Para autenticar-se no servidor MongoDB, utilize o parâmetro &lt;code&gt;auth&lt;/code&gt;:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;from mongodict import MongoDict

mydict = MongoDict(auth=(&#39;user&#39;, &#39;myprecious&#39;))
&lt;/code&gt;&lt;/pre&gt;

&lt;h2&gt;Dica Bônus&lt;/h2&gt;

&lt;p&gt;Caso você ache chato ter que acessar &lt;code&gt;mydict[&#39;chave&#39;]&lt;/code&gt; e prefira
&lt;code&gt;mydict.chave&lt;/code&gt;, utilize a biblioteca &lt;a href=&quot;https://pypi.python.org/pypi/attrdict/&quot;&gt;attrdict&lt;/a&gt;. Instale-a a partir
do &lt;a href=&quot;https://pypi.python.org/&quot;&gt;PyPI&lt;/a&gt;:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;pip install attrdict
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;E para usar, é bem fácil:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;from attrdict import AttrDict
from mongodict import MongoDict

mydict = AttrDict(MongoDict())
mydict.answer = 42
mydict.question = &#39;?&#39;

print(&#39;Answer to &quot;{question}&quot; = {answer}&#39;.format(**mydict))
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Você só conseguirá acessar como atributo o primeiro nível, ou seja,
&lt;code&gt;mydict.chave.outra_chave&lt;/code&gt; não funcionará (utilize
&lt;code&gt;mydict.chave[&#39;outra_chave&#39;]&lt;/code&gt;).&lt;/p&gt;

&lt;h2&gt;Contribuindo&lt;/h2&gt;

&lt;p&gt;Caso queira contribuir, acesse o
&lt;a href=&quot;https://github.com/turicas/mongodict/issues&quot;&gt;&lt;em&gt;issue tracker&lt;/em&gt; do mongodict no GitHub&lt;/a&gt;. Fique à vontade
para relatar &lt;em&gt;bugs&lt;/em&gt;, sugerir funcionalidades e enviar &lt;em&gt;pull requests&lt;/em&gt;!  =)&lt;/p&gt;</description><link>http://blog.justen.eng.br/2014/03/dicionarios-mongodb-mongodict.html</link><author>noreply@blogger.com (Turicas&#39; blog - criativo, né?)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-18415308.post-5085012177385933335</guid><pubDate>Wed, 05 Feb 2014 18:26:00 +0000</pubDate><atom:updated>2014-02-05T16:27:23.572-02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">debian</category><category domain="http://www.blogger.com/atom/ns#">dicas</category><category domain="http://www.blogger.com/atom/ns#">gnu/linux</category><category domain="http://www.blogger.com/atom/ns#">google</category><category domain="http://www.blogger.com/atom/ns#">hangout</category><category domain="http://www.blogger.com/atom/ns#">software livre</category><title>Dica: Como fazer o Google Hangout Funcionar no Debian</title><description>&lt;p&gt;Há algumas semanas instalei o &lt;a href=&quot;http://www.debian.org/releases/testing/&quot;&gt;Debian
testing&lt;/a&gt; em um notebook, porém tive
problemas para fazer funcionar o plugin do &lt;a href=&quot;http://www.google.com/+/learnmore/hangouts/?hl=pt-BR&quot;&gt;Google
Hangout&lt;/a&gt;, que costumo
usar bastante para reuniões online, pois trabalho remotamente. Após a
instalação do plugin (que é um pacote &lt;code&gt;.deb&lt;/code&gt; disponível no site deles) e
reiniciar o navegador, ele não consegue identificar que o plugin está instalado
e, com isso, não consigo entrar nos hangouts.&lt;/p&gt;

&lt;p&gt;Depois de procurar bastante, descobri em &lt;a href=&quot;https://productforums.google.com/forum/#!topic/hangouts/vYsaeEnXJXs&quot;&gt;uma thread no Google Groups dos
produtos da
Google&lt;/a&gt; e
consegui resolver o problema! Parece que o problema estava relacionado a
conflitos com os pacotes &lt;code&gt;libudev0&lt;/code&gt; e &lt;code&gt;libcairo2&lt;/code&gt;. Para resolver, basta
executar os seguintes comandos:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;apt-get remove libudev0
wget http://snapshot.debian.org/archive/debian/20130927T214600Z/pool/main/c/cairo/libcairo2_1.12.14-4_amd64.deb
dpkg -i libcairo2_1.12.14-4_amd64.deb
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Os comandos devem ser executados como usuário &lt;code&gt;root&lt;/code&gt; (diretamente ou através do
&lt;code&gt;sudo&lt;/code&gt;).&lt;/p&gt;</description><link>http://blog.justen.eng.br/2014/02/hangout-nao-funciona-no-debian.html</link><author>noreply@blogger.com (Turicas&#39; blog - criativo, né?)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-18415308.post-1805007047719736660</guid><pubDate>Fri, 31 Jan 2014 19:21:00 +0000</pubDate><atom:updated>2014-01-31T17:22:07.677-02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">arduino</category><category domain="http://www.blogger.com/atom/ns#">curso de arduino</category><category domain="http://www.blogger.com/atom/ns#">desenvolvimento de software</category><category domain="http://www.blogger.com/atom/ns#">eletrônica</category><category domain="http://www.blogger.com/atom/ns#">hardware livre</category><category domain="http://www.blogger.com/atom/ns#">programação</category><category domain="http://www.blogger.com/atom/ns#">python</category><category domain="http://www.blogger.com/atom/ns#">rio de janeiro</category><category domain="http://www.blogger.com/atom/ns#">software livre</category><title>Curso de Arduino avançado no Rio de Janeiro</title><description>&lt;p&gt;Já faço turmas do &lt;a href=&quot;http://www.CursoDeArduino.com.br/&quot;&gt;Curso de
Arduino&lt;/a&gt; há bastante tempo e uma das coisas
que meus alunos sempre perguntam é quando haverá uma turma com foco avançado,
para quem já conhece o &lt;a href=&quot;http://arduino.cc/&quot;&gt;Arduino&lt;/a&gt; e quer ir direto para
aplicações mais complexas, otimizações etc. Para suprir essa necessidade, criei
uma ementa focada no desenvolvimento e otimização de software para Arduino e a
primeira turma acontecerá no Rio de Janeiro em fevereiro! \o/&lt;/p&gt;

&lt;p align=&quot;center&quot;&gt;
  &lt;a href=&quot;http://edx.srv.br/arduino-avancado/&quot;&gt;
    &lt;img border=&quot;0&quot;
         src=&quot;http://edx.srv.br/wp-content/uploads/2014/01/EDX_publicidade_curso_arduino_avancado_turma1_fevereiro_2014-300x300.png&quot;
         alt=&quot;Curso de Arduino avançado com Álvaro Justen&quot; /&gt;
  &lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;Seguem as informações:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Local: EDX Treinamentos, &lt;strong&gt;Av. Rio Branco, 124&lt;/strong&gt; (Centro, Rio de Janeiro)&lt;/li&gt;
&lt;li&gt;Dias &lt;strong&gt;8 e 15 de fevereiro de 10 às 19h&lt;/strong&gt; (carga horária total: 16 horas)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://edx.srv.br/arduino-avancado/&quot;&gt;Inscrições e ementa no site da
EDX&lt;/a&gt; (à vista tem desconto!)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Já temos inscritos e no momento &lt;strong&gt;apenas 5 vagas estão disponíveis&lt;/strong&gt;. Corre lá!
o/&lt;/p&gt;

&lt;p&gt;Para quem está interessado em aprender sobre Arduino, temos também turmas para
o &lt;a href=&quot;http://edx.srv.br/arduino-basico/&quot;&gt;Curso de Arduino básico&lt;/a&gt;, que acontecerá
no Rio de Janeiro e em Belo Horizonte.&lt;/p&gt;

&lt;p&gt;E saindo um pouco da linha do Arduino: para quem está interessado em aprender a
desenvolver software usando a linguagem &lt;a href=&quot;http://www.python.org&quot;&gt;Python&lt;/a&gt;, já
estão abertas as inscrições para o
&lt;a href=&quot;http://edx.srv.br/python/&quot;&gt;Curso de Python&lt;/a&gt;, que acontecerá em março e abril
(22, 29 de março e 05 de abril) no Rio de Janeiro.&lt;/p&gt;
</description><link>http://blog.justen.eng.br/2014/01/curso-de-arduino-avancado-no-rio-de.html</link><author>noreply@blogger.com (Turicas&#39; blog - criativo, né?)</author><thr:total>2</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-18415308.post-1681728025347020516</guid><pubDate>Mon, 03 Dec 2012 06:16:00 +0000</pubDate><atom:updated>2012-12-03T10:32:16.337-02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">arduino</category><category domain="http://www.blogger.com/atom/ns#">belém</category><category domain="http://www.blogger.com/atom/ns#">consegi</category><category domain="http://www.blogger.com/atom/ns#">pypln</category><category domain="http://www.blogger.com/atom/ns#">python</category><category domain="http://www.blogger.com/atom/ns#">software livre</category><title>Partiu Belém! Destino: V CONSEGI</title><description>&lt;p&gt;
Hoje embarquei para Belém/PA pois amanhã começa o &lt;a href=&quot;http://www.consegi.gov.br/&quot;&gt;V Congresso Internacional de Software Livre e Governo Eletrônico (CONSEGI)&lt;/a&gt;, evento de software livre do Governo para o Governo, organizado e patrocinado por instituições públicas. O &lt;a href=&quot;http://www.consegi.gov.br/&quot;&gt;CONSEGI&lt;/a&gt; é um dos maiores eventos de software livre da América Latina: a edição desse ano já tem mais de 4.300 inscritos, que é mais ou menos a quantidade de inscritos da &lt;a href=&quot;http://latinoware.org/&quot;&gt;Latinoware&lt;/a&gt;. A primeira vez que fui no CONSEGI foi em 2010 (em Brasília) e nesse ano fui convidado novamente pelo &lt;a href=&quot;https://twitter.com/gsromag&quot;&gt;Giuseppe Romagnoli&lt;/a&gt;.
&lt;/p&gt;

&lt;div align=&quot;center&quot;&gt;
  &lt;a href=&quot;http://www.consegi.gov.br/&quot;&gt;&lt;img src=&quot;http://www.consegi.gov.br/consegi_logo.gif&quot; alt=&quot;Logo V CONSEGI&quot; border=&quot;&quot; /&gt;&lt;/a&gt;
  &lt;br /&gt;
  &lt;a href=&quot;http://www.consegi.gov.br/&quot;&gt;V CONSEGI - de 3 a 7 de dezembro de 2012 em Belém/PA&lt;/a&gt;
&lt;/div&gt;

&lt;p&gt;
Mas &lt;a href=&quot;https://www.youtube.com/watch?v=kxeremjcAWA&quot;&gt;nem tudo são flores na vida&lt;/a&gt; de Álvaro Justen: apesar de ter chegado cedo no aeroporto, o nome que estava na passagem era de um tal de &quot;Mr. Álvaro Turicas&quot;. Sim, muita gente acha que &lt;b&gt;Turicas&lt;/b&gt; é meu sobrenome, mas não é: é só o meu nickname. A atendente da &lt;a href=&quot;http://www.tam.com.br/&quot;&gt;TAM&lt;/a&gt; me disse que &quot;não é permitido nome artístico&quot; e eu iria perder a passagem só porque meu nome não estava correto no bilhete. Eles queriam que eu comprasse uma nova passagem &lt;b&gt;por mais de R$1.200,00&lt;/b&gt;, mesmo eu mostrando que o PDF do e-ticket foi para meu e-mail, emitido com os números da minha identidade e CPF e eu tinha como provar eu era esse tal de Turicas (era só mostrar &lt;a href=&quot;https://twitter.com/turicas&quot;&gt;meu Twitter&lt;/a&gt; no celular).
&lt;/p&gt;

&lt;div align=&quot;center&quot;&gt;
  &lt;a href=&quot;https://twitter.com/turicas/status/275186333213921280&quot;&gt;&lt;img src=&quot;https://pbs.twimg.com/media/A9GogxaCEAAJeha.jpg&quot; alt=&quot;Bilhete do Mr. Turicas&quot; border=&quot;0&quot; width=&quot;450&quot; /&gt;&lt;/a&gt;
  &lt;br /&gt;
  Bilhete do Mr. Turicas
&lt;/div&gt;

&lt;p&gt;
Felizmente consegui resolver o problema e cheguei em Belém sem precisar pagar nada a mais por isso e minhas atividades no &lt;a href=&quot;http://www.consegi.gov.br/&quot;&gt;CONSEGI&lt;/a&gt; serão:
  &lt;ul&gt;
    &lt;li&gt; &lt;a href=&quot;http://papers.consegi.gov.br/pub/programacao/758&quot;&gt;&lt;b&gt;Oficina &quot;Mão-na-massa Arduino&quot;&lt;/b&gt;&lt;/a&gt;, com &lt;a href=&quot;https://twitter.com/andrebco&quot;&gt;Andre Oliveira&lt;/a&gt; e &lt;a href=&quot;https://twitter.com/diegodukao&quot;&gt;Diego Dukão&lt;/a&gt; (&lt;b&gt;terça-feira, 04/12&lt;/b&gt;, de &lt;b&gt;9h às 13h&lt;/b&gt; na sala &lt;b&gt;Nhemongaba&lt;/b&gt;) &lt;/li&gt;
    &lt;li&gt; &lt;a href=&quot;http://papers.consegi.gov.br/pub/programacao/855&quot;&gt;&lt;b&gt;Showroom &quot;Arduino e Android para automação residencial&quot;&lt;/b&gt;&lt;/a&gt;, com &lt;a href=&quot;https://twitter.com/andrebco&quot;&gt;Andre Oliveira&lt;/a&gt; e &lt;a href=&quot;https://twitter.com/diegodukao&quot;&gt;Diego Dukão&lt;/a&gt; (&lt;b&gt;quinta-feira, 06/12&lt;/b&gt;, de &lt;b&gt;9h às 12h30min e de 14h às 18h&lt;/b&gt; na sala &lt;b&gt;Guamá&lt;/b&gt;) &lt;/li&gt;
    &lt;li&gt; &lt;a href=&quot;http://papers.consegi.gov.br/pub/programacao/787&quot;&gt;&lt;b&gt;Palestra &quot;Arduino e Android para automação residencial&quot;&lt;/b&gt;&lt;/a&gt;, com &lt;a href=&quot;https://twitter.com/andrebco&quot;&gt;Andre Oliveira&lt;/a&gt; e &lt;a href=&quot;https://twitter.com/diegodukao&quot;&gt;Diego Dukão&lt;/a&gt; (&lt;b&gt;sexta-feira, 07/12&lt;/b&gt;, de &lt;b&gt;15h20min às 16h10min&lt;/b&gt; na sala &lt;b&gt;Guamá&lt;/b&gt;) &lt;/li&gt;
    &lt;li&gt; &lt;a href=&quot;http://papers.consegi.gov.br/pub/programacao/861&quot;&gt;&lt;b&gt;Palestra &quot;PyPLN: processamento de linguagem natural distribuído com Python&quot;&lt;/b&gt;&lt;/a&gt; (&lt;b&gt;sexta-feira, 07/12&lt;/b&gt;, de &lt;b&gt;16 às 17h&lt;/b&gt; na sala &lt;b&gt;Mongaba&lt;/b&gt;) &lt;/li&gt;
  &lt;/ul&gt;
&lt;/p&gt;

&lt;p&gt;
Andre, Diego e eu trouxemos vários projetos que desenvolvemos juntos, incluindo a famosa &lt;a href=&quot;https://www.youtube.com/watch?v=Bj44dt3ONyM&quot;&gt;Luminária RGB controlada por Wi-Fi&lt;/a&gt;, para demonstrar durante o showroom - a ideia é que os projetos fiquem expostos e a galera possa brincar e tirar dúvidas. Saiu até &lt;a href=&quot;http://info.abril.com.br/noticias/ti/jovens-inovam-a-automacao-residencial-usando-arduino-30112012-31.shl&quot;&gt;uma reportagem na INFO Online&lt;/a&gt; sobre isso!
&lt;/p&gt;

&lt;div align=&quot;center&quot;&gt;
  &lt;a href=&quot;http://info.abril.com.br/noticias/ti/jovens-inovam-a-automacao-residencial-usando-arduino-30112012-31.shl&quot;&gt;&lt;img src=&quot;https://fbcdn-sphotos-d-a.akamaihd.net/hphotos-ak-ash3/68433_439619059431880_1416670610_n.jpg&quot; alt=&quot;Andre Oliveira, Álvaro Justen e Diego Dukão&quot; border=&quot;0&quot; width=&quot;450&quot; /&gt;&lt;/a&gt;
  &lt;br /&gt;
  &lt;a href=&quot;http://info.abril.com.br/noticias/ti/jovens-inovam-a-automacao-residencial-usando-arduino-30112012-31.shl&quot;&gt;Jovens inovadores que saíram na INFO Online&lt;/a&gt;
&lt;/div&gt;

&lt;p&gt;
Como é minha primeira vez em Belém (e primeira vez no Norte do Brasil), pretendo tirar alguns horários para fazer turismo por aqui, conhecer os pontos turísticos (vi fotos de belas paisagens) e a culinária da região - não vai dar pra aproveitar totalmente porque não gosto de peixe, mas com certeza &lt;b&gt;levarei vários bombons de cupuaçu para Niterói&lt;/b&gt;! ;-)
&lt;/p&gt;</description><link>http://blog.justen.eng.br/2012/12/partiu-belem-destino-consegi.html</link><author>noreply@blogger.com (Turicas&#39; blog - criativo, né?)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-18415308.post-541801395273001476</guid><pubDate>Sun, 18 Nov 2012 00:54:00 +0000</pubDate><atom:updated>2012-11-17T22:55:28.620-02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">arduino</category><category domain="http://www.blogger.com/atom/ns#">palestra</category><category domain="http://www.blogger.com/atom/ns#">pybr8</category><category domain="http://www.blogger.com/atom/ns#">python</category><category domain="http://www.blogger.com/atom/ns#">pythonbrasil</category><category domain="http://www.blogger.com/atom/ns#">pythonrio</category><category domain="http://www.blogger.com/atom/ns#">software livre</category><category domain="http://www.blogger.com/atom/ns#">unicode</category><title>Minhas atividades na PythonBrasil[8]</title><description>&lt;p&gt;
Para quem não sabe, nesse ano estou organizando a &lt;a href=&quot;http://2012.pythonbrasil.org.br/&quot;&gt;PythonBrasil[8]&lt;/a&gt; - evento que acontecerá de &lt;b&gt;21 a 24 de novembro&lt;/b&gt; (semana que vem!) no Rio de Janeiro - (juntamente com a &lt;a href=&quot;http://tatialchueyr.com/&quot;&gt;Tatiana Al-Chueyr&lt;/a&gt;), mas não é por isso que algumas de minhas propostas de palestras foram aceitas ;-) O processo de seleção foi feito por votação (os inscritos no evento votaram nas palestras de interesse) e a organização do evento limitou em 2 palestras por palestrante, 1 tutorial por palestrante e 1 palestra no evento sobre um assunto em específico. Submeti 4 propostas de palestra e uma de tutorial . Tive duas palestras e um tutorial aprovados, sendo:

&lt;ul&gt;
  &lt;li&gt; Palestra &lt;a href=&quot;http://2012.pythonbrasil.org.br/schedule/tools-methodology/tudo-o-que-voce-ja-deveria-saber-sobre-unicode&quot;&gt;Tudo o que voc� j� deveria saber sobre Unicode&lt;/a&gt; (&lt;b&gt;dia 23 de 15h30min às 16min na sala 3&lt;/b&gt;) &lt;/li&gt;
  &lt;li&gt; Palestra &lt;a href=&quot;http://2012.pythonbrasil.org.br/schedule/science/pypln-processamento-de-linguagem-natural-distribuido&quot;&gt;PyPLN: processamento de linguagem natural distribuído&lt;/a&gt; (&lt;b&gt;dia 24 de 14h50min às 15h20min na sala 1&lt;/b&gt;) &lt;/li&gt;
  &lt;li&gt; Tutorial &lt;a href=&quot;http://2012.pythonbrasil.org.br/schedule/embedded-systems-mobile/hands-on-python-e-arduino&quot;&gt;Hands-on: Python e Arduino&lt;/a&gt; (&lt;b&gt;dia 21 de 14 às 18h na sala 2, na &lt;a href=&quot;http://emap.fgv.br/&quot;&gt;EMAp/FGV&lt;/a&gt;&lt;/b&gt; -- todos os tutoriais serão na &lt;a href=&quot;http://emap.fgv.br/&quot;&gt;EMAp/FGV&lt;/a&gt;, na Praia de Botafogo) &lt;/li&gt;
&lt;/ul&gt;
&lt;/p&gt;

&lt;p align=&quot;center&quot;&gt;
  &lt;a href=&quot;http://2012.pythonbrasil.org.br/&quot;&gt;&lt;img src=&quot;http://2012.pythonbrasil.org.br/static/images/badges/I_speak_aside_pt.png&quot; alt=&quot;PythonBrasil[8]&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
Se você ainda não se &lt;a href=&quot;http://2012.pythonbrasil.org.br/schedule/&quot;&gt;inscreveu no evento&lt;/a&gt;, ainda dá tempo! &lt;b&gt;Somente quem pagou terá a vaga garantida&lt;/b&gt;, então se você ainda não pagou sua inscrição, faça isso o quanto antes! Lembrando que &lt;b&gt;não é necessário se inscrever no evento para fazer os tutoriais&lt;/b&gt;, basta pagar a inscrição no tutorial à parte: para quem já está inscrito no evento, basta se inscrever no tutorial pelo site e levar 1kg de alimento não perecível (exceto sal) por tutorial; para quem não quer se inscrever no evento (não sabe o que vai perder), o valor por tutorial é de R$ 35,00, com descontos progressivos (2 tutoriais = R$ 65,00, 3 tutoriais = R$ 90,00, 4 tutoriais = R$ 100,00).
&lt;/p&gt;

&lt;p&gt;
Fiquei feliz (e um pouco transtornado, ao mesmo tempo) porque recebemos &lt;b&gt;muitas propostas muito boas&lt;/b&gt; de palestras e tutoriais! Deu até pena não aprovar algumas, mas não tempos tempo infinito. O problema é escolher &lt;b&gt;qual palestra não assistir&lt;/b&gt; durante o evento, pois teremos 4 palestras ocorrendo ao mesmo tempo! Serão, no total, 48 palestras de 30 minutos e 6 keynotes de 1h cada, além de 12 tutoriais de 4h.
&lt;/p&gt;

&lt;p align=&quot;center&quot;&gt;
  &lt;a href=&quot;http://2012.pythonbrasil.org.br/schedule/tools-methodology/tudo-o-que-voce-ja-deveria-saber-sobre-unicode&quot;&gt;&lt;img src=&quot;http://turicas.info/slides/python-unicode/images/logo_python-unicode-error.png&quot; alt=&quot;Tudo o que voc� j� deveria saber sobre Unicode&quot; border=&quot;0&quot; width=&quot;100&quot; /&gt;&lt;/a&gt;
  &amp;nbsp;&amp;nbsp;&amp;nbsp;
  &lt;a href=&quot;http://2012.pythonbrasil.org.br/schedule/science/pypln-processamento-de-linguagem-natural-distribuido&quot;&gt;&lt;img src=&quot;http://turicas.info/slides/pypln/images/logo_pypln.png&quot; alt=&quot;PyPLN: processamento de linguagem natural distribuído&quot; border=&quot;0&quot; width=&quot;175&quot; /&gt;&lt;/a&gt;
  &amp;nbsp;&amp;nbsp;&amp;nbsp;
  &lt;a href=&quot;http://2012.pythonbrasil.org.br/schedule/embedded-systems-mobile/hands-on-python-e-arduino&quot;&gt;&lt;img src=&quot;http://arduino.cc/en/uploads/Main/ArduinoUno_R3_Front_450px.jpg&quot; alt=&quot;Hands-on: Python e Arduino (Álvaro Justen)&quot; border=&quot;0&quot; width=&quot;150&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
Das minhas atividades aprovadas, eu já ministrei essas duas palestras na &lt;a href=&quot;http://2012.latinoware.org/&quot;&gt;Latinoware 2012&lt;/a&gt; então, exceto por algumas atualizações/correções, serão bem parecidas (caso você tenha assistido lá); no tutorial levarei vários &lt;a href=&quot;http://arduino.cc/&quot;&gt;Arduinos&lt;/a&gt; pra galera brincar de controlá-los e fazer aquisição de dados utilizando &lt;a href=&quot;http://www.python.org/&quot;&gt;Python&lt;/a&gt;. :-) Lembrando: os alunos devem levar seus próprios notebooks (e ter os pacotes &lt;a href=&quot;http://pypi.python.org/pypi/pyserial&quot;&gt;pyserial&lt;/a&gt; e &lt;a href=&quot;http://pypi.python.org/pypi/ipython&quot;&gt;ipython&lt;/a&gt; já instalados).
&lt;/p&gt;

&lt;p&gt;
Ah, e para quem não conhece o &lt;a href=&quot;http://www.pypln.org/&quot;&gt;PyPLN&lt;/a&gt;: é um projeto de &lt;b&gt;software livre&lt;/b&gt; (escrito em &lt;a href=&quot;http://www.python.org/&quot;&gt;Python&lt;/a&gt;, obviamente) que estou desenvolvendo na &lt;a href=&quot;http://emap.fgv.br/&quot;&gt;Escola de Matemática Aplicada da FGV&lt;/a&gt;, com foco em &lt;a href=&quot;https://pt.wikipedia.org/wiki/Processamento_de_linguagem_natural&quot;&gt;processamento de linguagem natural&lt;/a&gt; distribuído. Juntos comigo no time de desenvolvimento estão &lt;a href=&quot;https://twitter.com/fccoelho&quot;&gt;Flávio Coelho&lt;/a&gt;, &lt;a href=&quot;https://twitter.com/rrsouza&quot;&gt;Renato Rocha Souza&lt;/a&gt; e &lt;a href=&quot;http://flavioamieiro.com/&quot;&gt;Flávio Amieiro&lt;/a&gt;.
&lt;/p&gt;

&lt;p&gt;
Se você vai comparecer ao evento, nos vemos semana que vem na &lt;a href=&quot;http://2012.pythonbrasil.org.br/&quot;&gt;PythonBrasil[8]&lt;/a&gt;! ;-)
&lt;/p&gt;</description><link>http://blog.justen.eng.br/2012/11/minhas-atividades-na-pythonbrasil8.html</link><author>noreply@blogger.com (Turicas&#39; blog - criativo, né?)</author><thr:total>1</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-18415308.post-4561536984367744472</guid><pubDate>Sat, 10 Nov 2012 11:41:00 +0000</pubDate><atom:updated>2012-11-10T10:10:38.196-02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">design</category><category domain="http://www.blogger.com/atom/ns#">Inkscape</category><category domain="http://www.blogger.com/atom/ns#">memes</category><category domain="http://www.blogger.com/atom/ns#">software livre</category><title>Como fazer memes com Inkscape</title><description>&lt;div&gt;&lt;p&gt;
Apesar de eu trabalhar com desenvolvimento de software, adoro brincar com alguns softwares de artes gráficas livres: os meus preferidos são o &lt;a href=&quot;http://www.gimp.org/&quot;&gt;GIMP&lt;/a&gt; e &lt;a href=&quot;http://inkscape.org/&quot;&gt;Inkscape&lt;/a&gt;.
&lt;/p&gt;

&lt;div align=&quot;center&quot;&gt;
  &lt;a href=&quot;http://www.gimp.org/&quot;&gt;&lt;img src=&quot;http://www.justen.eng.br/img/logo-gimp.png&quot; alt=&quot;Logotipo GIMP&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;
  &amp;nbsp;&amp;nbsp;&amp;nbsp;
  &lt;a href=&quot;http://www.inkscape.org/&quot;&gt;&lt;img src=&quot;http://www.justen.eng.br/img/logo-inkscape.png&quot; alt=&quot;Logotipo Inkscape&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;

&lt;p&gt;
Eu não me considero criativo, então acabo utilizando esses softwares mais para retoques, alinhamentos e coisas do tipo -- afinal, não sou designer. ;-)
&lt;br /&gt;
Recentemente tive a ideia de usar um meme em uma palestra, pra descontrair um pouco. :-) Utilizei o Inkscape e, como as técnicas que utilizei são simples porém muito úteis (inclusive para outras aplicações), resolvi compartilhar o conhecimento -- daí criei o vídeo abaixo, um rápido screencast mostrando o processo (dica: veja em HD).
&lt;br /&gt;
No vídeo abordo conceitos básicos do software como criação/visualização/sobreposição de camadas, alinhamento básico de objetos, criação de sombra, exportação para PNG e outros. Porém, todos superficialmente.
&lt;/p&gt;

&lt;div align=&quot;center&quot;&gt;
&lt;iframe width=&quot;480&quot; height=&quot;360&quot; src=&quot;http://www.youtube.com/embed/lk0-mFcIobk&quot; frameborder=&quot;0&quot; allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;p&gt;
&lt;b&gt;Esse vídeo foi útil para você?&lt;/b&gt; Espero que tenha gostado!
&lt;br /&gt;
Em breve (principalmente depois que passar a &lt;a href=&quot;http://2012.pythonbrasil.org.br/&quot;&gt;PythonBrasil[8]&lt;/a&gt;) pretendo postar mais alguns vídeos voltados para divulgação do conhecimento, em especial sobre criação de vídeos utilizando software livre, em ambientes GNU/Linux. Aproveite para &lt;a href=&quot;https://www.youtube.com/turicas&quot;&gt;se inscrever no meu canal no YouTube&lt;/a&gt;!
&lt;/p&gt;&lt;/div&gt;</description><link>http://blog.justen.eng.br/2012/11/como-fazer-memes-com-inkscape.html</link><author>noreply@blogger.com (Turicas&#39; blog - criativo, né?)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img.youtube.com/vi/lk0-mFcIobk/default.jpg" height="72" width="72"/><thr:total>1</thr:total><georss:featurename>Centro, Centro</georss:featurename><georss:point>-22.888597 -43.123837</georss:point></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-18415308.post-1325084091049485530</guid><pubDate>Wed, 24 Oct 2012 15:37:00 +0000</pubDate><atom:updated>2012-10-24T14:00:55.003-02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">desenvolvimento de software</category><category domain="http://www.blogger.com/atom/ns#">python</category><category domain="http://www.blogger.com/atom/ns#">pythonbrasil</category><category domain="http://www.blogger.com/atom/ns#">pythonrio</category><category domain="http://www.blogger.com/atom/ns#">software livre</category><title>PythonBrasil[8]: aberta a votação das palestras</title><description>&lt;div&gt;&lt;p&gt;
Como &lt;a href=&quot;http://blog.justen.eng.br/2012/10/slides-palestras-latinoware-2012.html&quot;&gt;comentei no post sobre a Latinoware 2012&lt;/a&gt;, estou organizando a &lt;a href=&quot;http://2012.pythonbrasil.org.br/&quot;&gt;PythonBrasil[8]&lt;/a&gt;, maior evento nacional de &lt;a href=&quot;http://www.python.org/&quot;&gt;Python&lt;/a&gt;, que acontecerá no &lt;b&gt;Rio de Janeiro&lt;/b&gt;, de &lt;b&gt;20 a 24 de novembro&lt;/b&gt; (falta um mês!).
&lt;/p&gt;

&lt;p align=&quot;center&quot;&gt;
&lt;a href=&quot;http://2012.pythonbrasil.org.br/&quot;&gt;&lt;img src=&quot;http://2012.pythonbrasil.org.br/static/images/badges/I_speak_aside.png&quot; alt=&quot;Logotipo PythonBrasil[8]&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
Se você já desenvolve software em &lt;a href=&quot;http://www.python.org/&quot;&gt;Python&lt;/a&gt;, o evento é obrigatório: é a reunião da comunidade brasileira, é a &quot;festa da padroeira&quot; dessa linguagem no Brasil; se você tem interesse em aprender sobre a linguagem, também é obrigatório: quer lugar melhor para encontrar excelentes pythonistas que no encontro nacional da comunidade? ;-) Além de grandes nomes nacionais, teremos também keynotes internacionais, como de praxe.
&lt;br /&gt;
Além de tudo isso, o evento é uma ótima oportunidade para quem quer conhecer a cidade maravilhosa, suas praias, o Cristo Redentor e outras belezas daqui!
&lt;/p&gt;

&lt;p align=&quot;center&quot;&gt;
&lt;a href=&quot;http://wikitravel.org/en/Rio_de_Janeiro&quot;&gt;&lt;img src=&quot;http://www.justen.eng.br/img/rio-de-janeiro.jpg&quot; width=&quot;500&quot; alt=&quot;Rio de Janeiro&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
Se você pretende ir ao evento, &lt;a href=&quot;http://2012.pythonbrasil.org.br/accounts/login/?next=/dashboard/&quot;&gt;&lt;b&gt;faça sua inscrição agora&lt;/b&gt;&lt;/a&gt; e aproveite para votar nas palestras que quer assistir! A votação ficará aberta somente nessa semana e o resultado sairá no fim de semana. Aproveite também pois o novo valor (sem desconto) entrará em vigor em breve. Eu submeti quatro propostas de palestras - veja as descrições:
&lt;ul&gt;
  &lt;li&gt; &lt;a href=&quot;http://2012.pythonbrasil.org.br/schedule/tools-methodology/tudo-o-que-voce-ja-deveria-saber-sobre-unicode&quot;&gt;Tudo o que você já deveria saber sobre Unicode&lt;/a&gt; &lt;/li&gt;
  &lt;li&gt; &lt;a href=&quot;http://2012.pythonbrasil.org.br/schedule/science/pypln-processamento-de-linguagem-natural-distribuido&quot;&gt;PyPLN: processamento de linguagem natural distribuído&lt;/a&gt; &lt;/li&gt;
  &lt;li&gt; &lt;a href=&quot;http://2012.pythonbrasil.org.br/schedule/networks/distribuindo-jobs-e-pipelines-com-pypelinin&quot;&gt;Distribuindo jobs e pipelines com pypelinin&lt;/a&gt; &lt;/li&gt;
  &lt;li&gt; &lt;a href=&quot;http://2012.pythonbrasil.org.br/schedule/other/creating-virtual-filesystems-with-fuse&quot;&gt;Creating virtual filesystems with FUSE&lt;/a&gt; &lt;/li&gt;
&lt;/ul&gt;

Nós recebemos um total de &lt;b&gt;108&lt;/b&gt; propostas, porém apenas &lt;b&gt;54&lt;/b&gt; serão selecionadas.
&lt;/p&gt;

&lt;p&gt;
Caso você queira acompanhar mais sobre o evento, siga &lt;a href=&quot;https://twitter.com/pythonbrasil&quot;&gt;@PythonBrasil no Twitter&lt;/a&gt; e &lt;a href=&quot;http://www.facebook.com/pythonbrasil8&quot;&gt;curta PythonBrasil8 no Facebook&lt;/a&gt;.
&lt;/p&gt;

&lt;p&gt;
Nos vemos em novembro! ;-)
&lt;/p&gt;&lt;/div&gt;</description><link>http://blog.justen.eng.br/2012/10/pythonbrasil8-votacao-palestras.html</link><author>noreply@blogger.com (Turicas&#39; blog - criativo, né?)</author><thr:total>0</thr:total><georss:featurename>Boa Viagem, Boa Viagem</georss:featurename><georss:point>-22.904476 -43.129894</georss:point></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-18415308.post-5821385062767058498</guid><pubDate>Mon, 22 Oct 2012 14:13:00 +0000</pubDate><atom:updated>2012-10-24T14:01:25.062-02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">pypln</category><category domain="http://www.blogger.com/atom/ns#">python</category><category domain="http://www.blogger.com/atom/ns#">pythonbrasil</category><category domain="http://www.blogger.com/atom/ns#">pythonrio</category><category domain="http://www.blogger.com/atom/ns#">software livre</category><category domain="http://www.blogger.com/atom/ns#">unicode</category><title>Slides de minhas palestras na Latinoware 2012</title><description>&lt;div&gt;&lt;p&gt;
Na semana passada estive mais uma vez na &lt;a href=&quot;http://2012.latinoware.org/&quot;&gt;Latinoware&lt;/a&gt;! Comecei a ir no evento, que é um dos maiores de software livre do Brasil, em 2010 e não perco um ano mais. ;-)
&lt;/p&gt;

&lt;p align=&quot;center&quot;&gt;
&lt;a href=&quot;http://2012.latinoware.org&quot;&gt;&lt;img src=&quot;http://2012.latinoware.org/wp-content/themes/latinoware-2012/include/images/Logo.png&quot; alt=&quot;Logo Latinoware 2012&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
Lá ministrei duas palestras e um mini-curso, seguem os slides:
&lt;/p&gt;

&lt;p&gt;
&lt;h2&gt;PyPLN: Processamento de Linguagem Natural com Python&lt;/h2&gt;
&lt;div align=&quot;center&quot;&gt;
&lt;a href=&quot;http://turicas.info/slides/pypln&quot;&gt;&lt;img src=&quot;http://justen.eng.br/img/slides-pypln.png&quot; width=&quot;450&quot; alt=&quot;Slides da palestra PyPLN: Processamento de Linguagem Natural com Python&quot;&gt;&lt;/a&gt;
&lt;/div&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;h2&gt;Python: Tudo o que você já deveria saber sobre Unicode&lt;/h2&gt;
&lt;div align=&quot;center&quot;&gt;
&lt;a href=&quot;http://turicas.info/slides/python-unicode&quot;&gt;&lt;img src=&quot;http://justen.eng.br/img/slides-python-unicode.png&quot; width=&quot;450&quot; alt=&quot;Slides da palestra Python: Tudo o que você já deveria saber sobre Unicode&quot;&gt;&lt;/a&gt;
&lt;/div&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;h2&gt;Minicurso Arduino&lt;/h2&gt;
&lt;div align=&quot;center&quot;&gt;
&lt;a href=&quot;http://turicas.info/slides/arduino&quot;&gt;&lt;img src=&quot;http://justen.eng.br/img/slides-arduino.png&quot; width=&quot;450&quot; alt=&quot;Slides sobre Arduino&quot;&gt;&lt;/a&gt;
&lt;/div&gt;
&lt;/p&gt;

&lt;p&gt;
Se você ficou interessado na palestra &lt;a href=&quot;http://turicas.info/slides/python-unicode&quot;&gt;Python: Tudo o que você já deveria saber sobre Unicode&lt;/a&gt;, aproveite a chance de assistir a um repeteco: nessa &lt;b&gt;quinta-feira&lt;/b&gt; (25/10/2012) às &lt;b&gt;14h&lt;/b&gt; na &lt;b&gt;sala 317&lt;/b&gt; do edifício-sede da &lt;a href=&quot;http://www.fgv.br/&quot;&gt;Fundação Getúlio Vargas&lt;/a&gt; (&lt;a href=&quot;https://maps.google.com/maps?f=q&amp;source=s_q&amp;hl=en&amp;geocode=+&amp;q=fgv+rio&amp;ie=UTF8&amp;hq=fgv+rio&amp;hnear=&amp;radius=15000&amp;t=m&amp;vpsrc=0&amp;z=13&amp;iwloc=A&amp;cid=3352914085499141244&quot;&gt;Praia de Botafogo, 190&lt;/a&gt;). A &lt;b&gt;entrada é gratuita&lt;/b&gt;, fique à vontade para comparecer! &lt;b&gt;Nota:&lt;/b&gt; não é permitido entrar de bermuda e chinelo.
&lt;/p&gt;

&lt;p&gt;
Aproveitei a ida ao evento para visitar a Itaipu (em breve postarei um vídeo sobre), comprar um &lt;a href=&quot;http://www.samsung.com/global/microsite/galaxys2/html/&quot;&gt;Samsung Galaxy SII&lt;/a&gt; no &lt;a href=&quot;http://wikitravel.org/en/Ciudad_del_Este&quot;&gt;Paraguai, em Ciudad del Este&lt;/a&gt; e as guloseimas abaixo (aceitunas rellenas, dulce de leche, alfajores y queso rockford) em &lt;a href=&quot;http://wikitravel.org/en/Puerto_Iguaz%C3%BA&quot;&gt;Puerto Iguazu, na Argentina&lt;/a&gt;:
&lt;div align=&quot;center&quot;&gt;
&lt;img src=&quot;http://justen.eng.br/img/guloseimas-argentinas.jpg&quot; alt=&quot;Guloseimas que comprei na Argentina&quot; width=&quot;550&quot; /&gt;
&lt;/div&gt;
&lt;/p&gt;

&lt;p&gt;
O próximo evento é a &lt;a href=&quot;http://2012.pythonbrasil.org.br/&quot;&gt;PythonBrasil[8]&lt;/a&gt;, que estou organizando. Será no Rio de Janeiro, de 23 a 24 de novembro - te vejo lá! &lt;a href=&quot;http://2012.pythonbrasil.org.br/accounts/login/?next=/dashboard/&quot;&gt;Já fez sua inscrição?&lt;/a&gt;
&lt;/p&gt;&lt;/div&gt;</description><link>http://blog.justen.eng.br/2012/10/slides-palestras-latinoware-2012.html</link><author>noreply@blogger.com (Turicas&#39; blog - criativo, né?)</author><thr:total>0</thr:total><georss:featurename>Boa Viagem, Boa Viagem</georss:featurename><georss:point>-22.904476 -43.129894</georss:point></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-18415308.post-6530700791892523969</guid><pubDate>Sat, 19 May 2012 07:52:00 +0000</pubDate><atom:updated>2012-06-24T00:06:28.736-03:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">android</category><category domain="http://www.blogger.com/atom/ns#">arduino</category><category domain="http://www.blogger.com/atom/ns#">fisl</category><category domain="http://www.blogger.com/atom/ns#">fisl13</category><category domain="http://www.blogger.com/atom/ns#">porto alegre</category><category domain="http://www.blogger.com/atom/ns#">pypln</category><category domain="http://www.blogger.com/atom/ns#">python</category><category domain="http://www.blogger.com/atom/ns#">sbc</category><category domain="http://www.blogger.com/atom/ns#">software livre</category><category domain="http://www.blogger.com/atom/ns#">ssh</category><title>Porque você deve ir ao Fórum Internacional de Software Livre</title><description>&lt;p&gt;
Fui ao &lt;a href=&quot;http://www.fisl.org.br/&quot;&gt;Fórum Internacional de Software Livre&lt;/a&gt; pela primeira vez em 2006 (foi o &lt;a href=&quot;http://fislold.softwarelivre.org/7.0/www/&quot;&gt;fisl7.0&lt;/a&gt;) e, apesar de eu já utilizar software livre na época (e até ter feito algumas palestras para divulgação do tema), foi um marco em minha vida. Minha visão sobre diversos assuntos mudou completamente, conheci várias empresas, pessoas e projetos muito interessantes. Isso também mudou o rumo da minha vida, de lá pra cá.
&lt;/p&gt;

&lt;p align=&quot;center&quot;&gt;
&lt;a href=&quot;http://softwarelivre.org/fisl13&quot;&gt;&lt;img src=&quot;http://justen.eng.br/img/logo_fisl13.png&quot; alt=&quot;13º Fórum Internacional de Software Livre&quot; border=&quot;0&quot;&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
Em 2007 infelizmente não pude ir, mas desde 2008 faço questão de estar lá todo ano. Os motivos? Vários: é o maior evento de software livre da América Latina, existem vários amigos que só encontro lá, muita gente influente da área e empresas de peso comparecem (lançando novos projetos, recrutando etc.), aprende-se muito e eu gosto pra caramba de Porto Alegre. :-)
&lt;/p&gt;

&lt;p&gt;
Como todo ano eu vou e costumo chamar pessoas que nunca foram, resolvi fazer o vídeo abaixo - assim fica público na Internet e até pessoas que não me conhecem podem ouvir meus argumentos e ficar com vontade de ir. ;-)
&lt;/p&gt;

&lt;p align=&quot;center&quot;&gt;
&lt;iframe width=&quot;420&quot; height=&quot;315&quot; src=&quot;http://www.youtube.com/embed/4mswnRu6T8Y&quot; frameborder=&quot;0&quot; allowfullscreen&gt;&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;
E aí, você foi convencido? &lt;b&gt;Nos vemos em Porto Alegre!&lt;/b&gt;
&lt;/p&gt;</description><link>http://blog.justen.eng.br/2012/05/porque-voce-deve-ir-ao-fisl.html</link><author>noreply@blogger.com (Turicas&#39; blog - criativo, né?)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img.youtube.com/vi/4mswnRu6T8Y/default.jpg" height="72" width="72"/><thr:total>7</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-18415308.post-408355247745021510</guid><pubDate>Sat, 24 Sep 2011 14:16:00 +0000</pubDate><atom:updated>2011-09-24T11:17:01.550-03:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">arduino</category><category domain="http://www.blogger.com/atom/ns#">labdegaragem</category><category domain="http://www.blogger.com/atom/ns#">palestra</category><category domain="http://www.blogger.com/atom/ns#">python</category><category domain="http://www.blogger.com/atom/ns#">software livre</category><category domain="http://www.blogger.com/atom/ns#">webminar</category><title>Vídeo e slides da minha webminar sobre Python e Arduino no Lab de Garagem</title><description>&lt;p&gt;No dia 06 de setembro de 2011 fiz uma webminar (palestra online) no &lt;a href=&quot;http://labdegaragem.com&quot;&gt;Lab de
Garagem&lt;/a&gt; sobre &lt;a href=&quot;http://www.python.org/&quot;&gt;Python&lt;/a&gt; e
&lt;a href=&quot;http://arduino.cc/&quot;&gt;Arduino&lt;/a&gt;, como foi &lt;a href=&quot;http://blog.justen.eng.br/2011/09/palestra-sobre-python-e-arduino.html&quot;&gt;anunciado aqui no meu
blog&lt;/a&gt;.&lt;/p&gt;

&lt;p align=&quot;center&quot;&gt;
  &lt;a href=&quot;http://www.python.org/&quot;
     title=&quot;Site da linguagem de programação Python&quot;&gt;&lt;img
     src=&quot;http://www.python.org/community/logos/python-logo.png&quot;
     alt=&quot;Logotipo da linguagem de programação Python&quot;&gt;&lt;/a&gt;
  &amp;nbsp;&amp;nbsp;&amp;nbsp;
  &lt;a href=&quot;http://www.arduino.cc/&quot;
     title=&quot;Site do projeto Arduino&quot;&gt;&lt;img
     src=&quot;http://arduino.cc/en/pub/skins/arduinoWide/img/logo.png&quot;
     alt=&quot;Logotipo do projeto Arduino&quot;&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://www.python.org/&quot;&gt;Python&lt;/a&gt; e &lt;a href=&quot;http://arduino.cc/&quot;&gt;Arduino&lt;/a&gt; são dois
projetos que têm muito em comum (simplicidade, facilidade de uso, vasta
biblioteca padrão etc.), por isso batizei a webminar com o título &lt;strong&gt;Python +
Arduino: produtividade ao extremo&lt;/strong&gt;, onde falei sobre
integração das duas tecnologias através de USB, com a biblioteca
&lt;a href=&quot;http://pyserial.sourceforge.net/&quot;&gt;PySerial&lt;/a&gt;, Bluetooth com a biblioteca
&lt;a href=&quot;http://code.google.com/p/pybluez/&quot;&gt;pybluez&lt;/a&gt; e também de outras formas, como
Ethernet, Wi-Fi e outros.&lt;/p&gt;

&lt;p&gt;Veja a gravação da webminar abaixo:&lt;/p&gt;

&lt;p align=&quot;center&quot;&gt;
  &lt;object style=&quot;height: 390px; width: 640px&quot;&gt;
    &lt;param name=&quot;movie&quot; value=&quot;http://www.youtube.com/v/pmkYY-lan_o?version=3&quot;&gt;
    &lt;param name=&quot;allowFullScreen&quot; value=&quot;true&quot;&gt;
    &lt;param name=&quot;allowScriptAccess&quot; value=&quot;always&quot;&gt;
    &lt;embed src=&quot;http://www.youtube.com/v/pmkYY-lan_o?version=3&quot;
           type=&quot;application/x-shockwave-flash&quot; allowfullscreen=&quot;true&quot;
           allowScriptAccess=&quot;always&quot; width=&quot;640&quot; height=&quot;360&quot;&gt;
  &lt;/object&gt;
&lt;/p&gt;

&lt;p&gt;Veja também os slides, que estão disponíveis para download em &lt;a href=&quot;http://slideshare.net/turicas&quot;&gt;minha conta no
slideshare&lt;/a&gt;:&lt;/p&gt;

&lt;div style=&quot;text-align: center&quot; id=&quot;__ss_9164746&quot;&gt;
  &lt;strong style=&quot;display:block;margin:12px 0 4px&quot;&gt;&lt;a
          href=&quot;http://www.slideshare.net/turicas/arduino-pythonldg&quot;
          title=&quot;Arduino + Python: produtividade ao extremo&quot;
          target=&quot;_blank&quot;&gt;Arduino + Python: produtividade ao extremo&lt;/a&gt;&lt;/strong&gt;
  &lt;iframe src=&quot;http://www.slideshare.net/slideshow/embed_code/9164746&quot;
          width=&quot;425&quot; height=&quot;355&quot; frameborder=&quot;0&quot; marginwidth=&quot;0&quot;
          marginheight=&quot;0&quot; scrolling=&quot;no&quot;&gt;
  &lt;/iframe&gt;
&lt;/div&gt;

&lt;p&gt;Caso tenha mais interesse em aprender sobre &lt;a href=&quot;http://arduino.cc/&quot;&gt;Arduino&lt;/a&gt;,
você pode começar lendo &lt;a href=&quot;http://blog.justen.eng.br/search/label/arduino&quot;&gt;meus posts
sobre Arduino nesse blog&lt;/a&gt;,
lendo a
&lt;a href=&quot;http://www.arduino.cc/en/Main/Documentation&quot;&gt;documentação oficial do projeto&lt;/a&gt;
e também fazendo meu &lt;a href=&quot;http://www.CursoDeArduino.com.br/&quot;&gt;Curso de Arduino&lt;/a&gt; --
as próximas turmas serão em
&lt;a href=&quot;http://www.CursoDeArduino.com.br/sao-paulo/ourinhos&quot;&gt;Ourinhos/SP&lt;/a&gt;
(outubro), Belo Horizonte/MG (novembro), João Monlevade/MG (novembro), São
Paulo/SP (dezembro) e Rio de Janeiro/RJ (dezembro).&lt;/p&gt;

&lt;p align=&quot;center&quot;&gt;
  &lt;a href=&quot;http://www.CursoDeArduino.com.br/&quot;&gt;&lt;img
     src=&quot;http://www.CursoDeArduino.com.br/media/images/logo_curso-de-arduino-sombreado.png&quot;
     alt=&quot;Logotipo do Curso de Arduino&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
  &amp;nbsp;&amp;nbsp;&amp;nbsp;
  &lt;a href=&quot;http://www.pythonbrasil.org.br/&quot;
     title=&quot;Site do encontro da comunidade Python brasileira&quot;&gt;&lt;img
     src=&quot;http://www.pythonbrasil.org.br/++theme++pythonbrasil7/static/logo.png&quot;
     alt=&quot;Logotipo do encontro da comunidade Python brasileira&quot;&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;E caso você ainda não saiba programar nessa linguagem simples, fácil e altamente
produtiva chamada &lt;a href=&quot;http://www.python.org/&quot;&gt;Python&lt;/a&gt;, mas se interessou pelo
assunto, veja o &lt;a href=&quot;http://blog.justen.eng.br/2011/09/curso-de-python-no-rio-de-janeiro.html&quot;&gt;curso introdutório sobre Python no Rio de
Janeiro&lt;/a&gt;
(presencial) que ministrarei no começo de outubro, no centro da cidade e o
website da &lt;a href=&quot;http://www.pythonbrasil.org.br/&quot;&gt;PythonBrasil&lt;/a&gt;, conferência
nacional sobre a linguagem, que acontecerá na semana que vem em São Paulo --
&lt;strong&gt;eu estarei lá&lt;/strong&gt;! E você?&lt;/p&gt;</description><link>http://blog.justen.eng.br/2011/09/gravacao-slides-palestra-python-arduino.html</link><author>noreply@blogger.com (Turicas&#39; blog - criativo, né?)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-18415308.post-608992003754598255</guid><pubDate>Wed, 21 Sep 2011 14:58:00 +0000</pubDate><atom:updated>2011-09-21T15:31:34.538-03:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">arduino</category><category domain="http://www.blogger.com/atom/ns#">argentina</category><category domain="http://www.blogger.com/atom/ns#">python</category><category domain="http://www.blogger.com/atom/ns#">software livre</category><title>Python y Arduino en Argentina: PyConAr 2011</title><description>&lt;p&gt;Em instantes pegarei um vôo para Buenos Aires, na Argentina. O destino final é a
cidade de &lt;a href=&quot;http://pt.wikipedia.org/wiki/Jun%C3%ADn_(Buenos_Aires)&quot;&gt;Junín&lt;/a&gt;,
localizada na província de Buenos Aires - lá ocorrerá a
&lt;a href=&quot;http://ar.pycon.org/&quot;&gt;PyConAr&lt;/a&gt;, evento nacional (da Argentina) sobre a
linguagem de programação &lt;a href=&quot;http://www.python.org/&quot;&gt;Python&lt;/a&gt;. O evento acontecerá
nas próximas &lt;strong&gt;sexta e sábado (23 e 24 de setembro)&lt;/strong&gt;.&lt;/p&gt;

&lt;p align=&quot;center&quot;&gt;
    &lt;a href=&quot;http://ar.pycon.org/2011&quot;
       title=&quot;Site da PyConAr 2011&quot;&gt;&lt;img
       src=&quot;http://www.justen.eng.br/img/pyconar.png&quot;
       alt=&quot;Logotipo da PyConAr 2011&quot;&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;Conheci o evento através de minha namorada, &lt;a href=&quot;http://www.tatialchueyr.com/&quot;&gt;Tatiana
Al-Chueyr&lt;/a&gt;, que submeteu
duas palestras. Resolvi ir com ela e submeti uma proposta de palestra e outra
de mini-curso. As duas palestras da &lt;a href=&quot;http://www.tatialchueyr.com/&quot;&gt;Tati&lt;/a&gt; foram
aprovadas e minha palestra também! Ela palestrará sobre &lt;strong&gt;testes em Python&lt;/strong&gt; e
&lt;strong&gt;desenvolvimento de Python para Android&lt;/strong&gt;, já eu falarei sobre &lt;strong&gt;integração
entre &lt;a href=&quot;http://www.python.org/&quot;&gt;Python&lt;/a&gt; e &lt;a href=&quot;http://arduino.cc/&quot;&gt;Arduino&lt;/a&gt;&lt;/strong&gt;.&lt;/p&gt;

&lt;p align=&quot;center&quot;&gt;
    &lt;a href=&quot;http://www.python.org.br/&quot;
       title=&quot;Site da comunidade Python brasileira&quot;&gt;&lt;img
       src=&quot;http://www.python.org.br/pybr/img/pythonbrasil_logo.png&quot;
       alt=&quot;Logotipo da comunidade Python brasileira&quot;&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;Aliás, a &lt;a href=&quot;http://www.python.org.br/&quot;&gt;comunidade Python brasileira&lt;/a&gt; está sendo
representada por mais outras três pessoas (além de Tati e eu) na
&lt;a href=&quot;http://ar.pycon.org/&quot;&gt;PyConAr&lt;/a&gt;! Teremos uma palestra do
&lt;a href=&quot;http://www.erico.com.br/&quot;&gt;Érico Andrei&lt;/a&gt; sobre &lt;strong&gt;Python nos sites
Governamentais brasileiros&lt;/strong&gt; e outra de
&lt;a href=&quot;https://gitorious.org/~willer&quot;&gt;Willer Moreira&lt;/a&gt; e
&lt;a href=&quot;http://baraujo.net/blog/&quot;&gt;Bruno Araújo&lt;/a&gt;, ambos do
&lt;a href=&quot;http://www.indt.org/&quot;&gt;INdT&lt;/a&gt;, falando sobre &lt;strong&gt;desenvolvimento usando Python e
Qt com PySide&lt;/strong&gt;. Do total de 39 palestras do evento, essas 5 palestras
brasileiras representam 12,82%! &lt;a href=&quot;http://ar.pycon.org/2011/schedule/index&quot;&gt;Veja a grade completa de palestras da
PyConAr&lt;/a&gt;&lt;/p&gt;

&lt;p align=&quot;center&quot;&gt;
    &lt;a href=&quot;http://www.python.org/&quot;
       title=&quot;Site da linguagem de programação Python&quot;&gt;&lt;img
       src=&quot;http://www.python.org/community/logos/python-logo.png&quot;
       alt=&quot;Logotipo da linguagem de programação Python&quot;&gt;&lt;/a&gt;
    &amp;nbsp;&amp;nbsp;&amp;nbsp;
    &lt;a href=&quot;http://www.arduino.cc/&quot;
       title=&quot;Site do projeto Arduino&quot;&gt;&lt;img
       src=&quot;http://arduino.cc/en/pub/skins/arduinoWide/img/logo.png&quot;
       alt=&quot;Logotipo do projeto Arduino&quot;&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;Em minha palestra falarei (em Espanhol -- ou Portunhol ;-) como integrar
&lt;a href=&quot;http://www.python.org/&quot;&gt;Python&lt;/a&gt; e &lt;a href=&quot;http://arduino.cc/&quot;&gt;Arduino&lt;/a&gt; através
das bibliotecas &lt;a href=&quot;http://pyserial.sourceforge.net/&quot;&gt;pySerial&lt;/a&gt; (para comunicação
via USB) e &lt;a href=&quot;http://code.google.com/p/pybluez/&quot;&gt;pybluez&lt;/a&gt; (para comunicação via
Bluetooth), além de mostrar alguns projetos que desenvolvi utilizando-as. Minha
palestra será na &lt;strong&gt;sexta-feira&lt;/strong&gt; às &lt;strong&gt;15:30&lt;/strong&gt; (GMT - 3) -- infelizmente não
terei como ficar no sábado o dia inteiro (volto para o Rio sábado à noite),
pois no domingo tem &lt;a href=&quot;http://www.rockinrio.com.br/&quot;&gt;Rock in Rio&lt;/a&gt;!&lt;/p&gt;

&lt;p&gt;Como nos dois últimos anos, uma semana após a &lt;a href=&quot;http://ar.pycon.org/&quot;&gt;PyConAr&lt;/a&gt;
teremos a &lt;a href=&quot;http://www.pythonbrasil.org.br/&quot;&gt;PythonBrasil&lt;/a&gt; -- e as organizações
dos eventos colaboram entre si, compartilhando inclusive os &lt;em&gt;keynotes&lt;/em&gt; - também
estarei na &lt;a href=&quot;http://www.pythonbrasil.org.br/&quot;&gt;PythonBrasil&lt;/a&gt; e darei duas
palestras, em breve postarei sobre. ;-)&lt;/p&gt;

&lt;p align=&quot;center&quot;&gt;
    &lt;a href=&quot;http://www.pythonbrasil.org.br/&quot;
       title=&quot;Site do encontro da comunidade Python brasileira&quot;&gt;&lt;img
       src=&quot;http://www.pythonbrasil.org.br/++theme++pythonbrasil7/static/logo.png&quot;
       alt=&quot;Logotipo do encontro da comunidade Python brasileira&quot;&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;E se você ainda não sabe programar nessa linguagem simples, fácil e altamente
produtiva chamada &lt;a href=&quot;http://www.python.org/&quot;&gt;Python&lt;/a&gt;, sabia mais sobre o &lt;a href=&quot;http://blog.justen.eng.br/2011/09/curso-de-python-no-rio-de-janeiro.html&quot;&gt;curso
introdutório sobre Python no Rio de
Janeiro&lt;/a&gt;
(presencial) que ministrarei em outubro, no centro da cidade.&lt;/p&gt;</description><link>http://blog.justen.eng.br/2011/09/python-arduino-en-argentina-pyconar.html</link><author>noreply@blogger.com (Turicas&#39; blog - criativo, né?)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-18415308.post-462701066841173602</guid><pubDate>Tue, 20 Sep 2011 01:15:00 +0000</pubDate><atom:updated>2011-09-21T15:30:22.186-03:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">python</category><category domain="http://www.blogger.com/atom/ns#">pythonrio</category><category domain="http://www.blogger.com/atom/ns#">rio de janeiro</category><category domain="http://www.blogger.com/atom/ns#">software livre</category><title>1 ano de almoço PythOnRio! \o/</title><description>&lt;p&gt;Há um ano atrás os pythonistas do Rio de Janeiro se reuniram para o
&lt;a href=&quot;http://blog.justen.eng.br/2010/09/almoco-pythonrio-toda-terca-no-daytrade.html&quot;&gt;primeiro almoço PythOnRio&lt;/a&gt;.
Tudo começou quando fui ao &lt;a href=&quot;http://www.linuxinrio.com.br/&quot;&gt;LinuxInRio&lt;/a&gt; e, quando
saí para almoçar com o pessoal, esqueci minha carteira junto da mochila, que
ficou na sala dos palestrantes (o velho golpe :-P). Meu amigo
&lt;a href=&quot;https://twitter.com/#!/aldabalde&quot;&gt;Luiz Guilherme Aldabalde&lt;/a&gt; fez a gentileza
de pagar meu almoço e então combinei com ele de reembolsá-lo em um outro almoço
-- para isso, resolvemos marcar na terça-feira da semana seguinte. Acabei
chamando mais pessoas e o almoço teve um total de &lt;strong&gt;15 pythonistas&lt;/strong&gt;, sucesso
total para uma &lt;em&gt;chamada inocente&lt;/em&gt; na lista de discussão apenas 15 horas antes do
almoço acontecer. Por conta desse sucesso, tive a ideia de tornar isso um
hábito semanal da &lt;a href=&quot;http://www.pythonrio.org/&quot;&gt;PythOnRio&lt;/a&gt; e &lt;strong&gt;surgiu então o

&lt;a href=&quot;http://blog.justen.eng.br/2010/09/almoco-pythonrio-toda-terca-no-daytrade.html&quot;&gt;almoço
PythOnRio&lt;/a&gt;&lt;/strong&gt;!&lt;/p&gt;

&lt;p align=&quot;center&quot;&gt;
    &lt;a href=&quot;http://www.pythonrio.org/&quot;
       title=&quot;Site da comunidade Python do Rio de Janeiro&quot;&gt;&lt;img
       src=&quot;http://www.justen.eng.br/img/pythonrio.png&quot;
       alt=&quot;Logotipo da PythOnRio&quot;&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;Infelizmente não consegui ir a todos os encontros, mas a galera está sempre
às &lt;strong&gt;terças-feiras às 12h30min no restaurante Day Trade, no Centro do Rio&lt;/strong&gt;
para almoçar, conversar sobre a linguagem e, é claro, manter contato com os
amigos. :-) Essa iniciativa, apesar de bem simples, é bastante funcional e faz
a comunidade se manter unida e informada -- recomendo a qualquer comunidade!&lt;/p&gt;

&lt;p align=&quot;center&quot;&gt;
    &lt;a href=&quot;http://www.pythonrio.org/&quot;
       title=&quot;Site da comunidade Python do Rio de Janeiro&quot;&gt;&lt;img
       src=&quot;http://www.justen.eng.br/img/2010-09-21_PythOnRio/pythonrio1.jpg&quot;
       alt=&quot;Foto do primeiro almoço PythOnRio&quot;&gt;&lt;/a&gt;

&lt;/p&gt;

&lt;p&gt;Então, vamos comemorar &lt;strong&gt;um ano de almoço PythOnRio amanhã,
terça-feira (20/09/2011), às 12h30min no restaurante Day Trade&lt;/strong&gt;
(&lt;a href=&quot;http://maps.google.com/maps?f=q&amp;amp;source=s_q&amp;amp;hl=en&amp;amp;geocode=&amp;amp;q=Rua+do+Ouvidor,+22+-+Centro,+Rio+de+Janeiro&amp;amp;sll=37.0625,-95.677068&amp;amp;sspn=52.815565,114.169922&amp;amp;ie=UTF8&amp;amp;hq=&amp;amp;hnear=R.+do+Ouvidor,+22+-+Centro,+Rio+de+Janeiro,+20010-150,+Brazil&amp;amp;z=17&amp;amp;iwloc=A&quot;&gt;Rua do Ouvidor, 22&lt;/a&gt;).
&lt;strong&gt;Vejo vocês lá! \o/&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;E se você não sabe programar nessa linguagem simples, fácil e altamente
produtiva chamada &lt;a href=&quot;http://www.python.org/&quot;&gt;Python&lt;/a&gt;, sabia mais sobre o &lt;a href=&quot;http://blog.justen.eng.br/2011/09/curso-de-python-no-rio-de-janeiro.html&quot;&gt;curso
introdutório sobre Python no Rio de
Janeiro&lt;/a&gt;
(presencial) que ministrarei em outubro, no centro da cidade.&lt;/p&gt;
</description><link>http://blog.justen.eng.br/2011/09/1-ano-de-almoco-pythonrio.html</link><author>noreply@blogger.com (Turicas&#39; blog - criativo, né?)</author><thr:total>1</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-18415308.post-7327253715998500370</guid><pubDate>Tue, 20 Sep 2011 00:56:00 +0000</pubDate><atom:updated>2011-09-21T15:30:01.122-03:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">curso</category><category domain="http://www.blogger.com/atom/ns#">desenvolvimento de software</category><category domain="http://www.blogger.com/atom/ns#">python</category><category domain="http://www.blogger.com/atom/ns#">pythonrio</category><category domain="http://www.blogger.com/atom/ns#">rio de janeiro</category><category domain="http://www.blogger.com/atom/ns#">software livre</category><title>Curso presencial sobre Python no Rio de Janeiro</title><description>&lt;p&gt;Apesar de muitos me conhecerem por &lt;a href=&quot;http://www.CursoDeArduino.com.br/&quot;&gt;meu trabalho com o
Arduino&lt;/a&gt;, outra ferramenta que utilizo
bastante (comecei antes mesmo de conhecer o
&lt;a href=&quot;http://www.CursoDeArduino.com.br/&quot;&gt;Arduino&lt;/a&gt;) é a linguagem de programação
&lt;a href=&quot;http://www.python.org/&quot;&gt;Python&lt;/a&gt;.&lt;/p&gt;

&lt;p align=&quot;center&quot;&gt;
    &lt;a href=&quot;http://www.python.org/&quot;
       title=&quot;Site da linguagem de programação Python&quot;&gt;&lt;img
       src=&quot;http://www.python.org/community/logos/python-logo.png&quot;
       alt=&quot;Logotipo da linguagem de programação Python&quot;&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;Comecei a utilizar essa linguagem em 2005, onde na época desenvolvia scripts
para automação de tarefas, até começar a desenvolver para Web (com os
&lt;em&gt;frameworks&lt;/em&gt; &lt;a href=&quot;http://www.web2py.com/&quot;&gt;web2py&lt;/a&gt; e, agora,
&lt;a href=&quot;http://www.djangoproject.net&quot;&gt;Django&lt;/a&gt;). Mais tarde, conheci o pessoal da
&lt;a href=&quot;http://www.pythonrio.org/&quot;&gt;PythOnRio&lt;/a&gt; e comecei a colaborar com iniciativas da
comunidade, como o evento &lt;a href=&quot;http://www.pythoncampus.org/&quot;&gt;PythOnCampus&lt;/a&gt;, onde já
palestrei, organizei &lt;a href=&quot;http://www.dojorio.org/&quot;&gt;Coding Dojos&lt;/a&gt; e ministrei
mini-cursos sobre a linguagem. Desde que fui no evento
&lt;a href=&quot;http://www.pythonbrasil.org.br/&quot;&gt;PythonBrasil&lt;/a&gt; pela primeira vez, me tornei
um frequentador assíduo do mesmo (como participante e palestrante) e atualmente
tenho desenvolvido vários projetos de integração entre

&lt;a href=&quot;http://www.python.org/&quot;&gt;Python&lt;/a&gt; e &lt;a href=&quot;http://arduino.cc/&quot;&gt;Arduino&lt;/a&gt; (veja a
lista de meus projetos em
&lt;a href=&quot;http://www.github.com/turicas&quot;&gt;minha conta no GitHub&lt;/a&gt;).&lt;/p&gt;

&lt;p align=&quot;center&quot;&gt;
    &lt;a href=&quot;http://www.pythonbrasil.org.br/&quot;
       title=&quot;Site do encontro anual da comunidade Python brasileira&quot;&gt;&lt;img
       src=&quot;http://www.python.org.br/pybr/img/pythonbrasil_logo.png&quot;
       alt=&quot;Logotipo da PythonBrasil&quot;&gt;&lt;/a&gt;
    &amp;nbsp;&amp;nbsp;&amp;nbsp;
    &lt;a href=&quot;http://www.pythonrio.org/&quot;
       title=&quot;Site da comunidade Python do Rio de Janeiro&quot;&gt;&lt;img
       src=&quot;http://www.justen.eng.br/img/pythonrio.png&quot;
       alt=&quot;Logotipo da PythOnRio&quot;&gt;&lt;/a&gt;

&lt;/p&gt;

&lt;p&gt;Como &lt;a href=&quot;http://www.python.org/&quot;&gt;Python&lt;/a&gt; e &lt;a href=&quot;http://arduino.cc/&quot;&gt;Arduino&lt;/a&gt; são duas
ferramentas que utilizo no dia-a-dia e &lt;strong&gt;adoro ensinar&lt;/strong&gt;, não poderia ter
recusado o convite da &lt;a href=&quot;http://www.nitis-brasil.com/&quot;&gt;Nitis Brasil&lt;/a&gt; em ministrar
um curso introdutório sobre a linguagem, que ocorrerá no &lt;strong&gt;centro do Rio de
Janeiro&lt;/strong&gt;, nos dias &lt;strong&gt;03, 04, 05, 06, 07, 10 e 11 de outubro&lt;/strong&gt; das &lt;strong&gt;19 às
22h&lt;/strong&gt;.&lt;/p&gt;

&lt;p align=&quot;center&quot;&gt;
    &lt;a href=&quot;http://nitis-brasil.com/&quot;
       title=&quot;Nitis Brasil&quot;&gt;&lt;img
       src=&quot;http://nitis-brasil.com/img/nitis.png&quot;
       alt=&quot;Logotipo da empresa Nitis Brasil&quot;&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;No curso serão abordados desde aspectos básicos, como sintaxe, tipos básicos,
controle de fluxo e funções &lt;em&gt;built-in&lt;/em&gt; a orientação a objetos, módulos úteis da
biblioteca padrão e &lt;em&gt;test-driven development&lt;/em&gt;.
&lt;a href=&quot;http://nitis-brasil.com/Curso%20Python.pdf&quot;&gt;Faça download do conteúdo programático&lt;/a&gt;.
Nota: temos um número &lt;strong&gt;mínimo de 10 alunos&lt;/strong&gt; para que o curso aconteça.&lt;/p&gt;

&lt;p&gt;Então, se você quer aprender a desenvolver software em uma &lt;strong&gt;linguagem simples,
robusta e altamente produtiva&lt;/strong&gt;,
&lt;a href=&quot;http://nitis-brasil.com/trainning.html&quot;&gt;inscreva-se já no curso introdutório de Python&lt;/a&gt;,
que terá duração de &lt;strong&gt;24 horas presenciais + 8 horas online&lt;/strong&gt; (através de
exercícios pela lista de discussão). Estamos com um valor promocional de
&lt;strong&gt;R$ 599,00 até o dia 26/09&lt;/strong&gt;, que pode ser dividido em até 12x no cartão via
&lt;a href=&quot;http://pagseguro.uol.com.br&quot;&gt;PagSeguro&lt;/a&gt;.
&lt;a href=&quot;http://nitis-brasil.com/trainning.html&quot;&gt;&lt;b&gt;Faça sua inscrição agora!&lt;/b&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Quaisquer dúvidas sobre o curso, fique à vontade para entrar em contato. E caso
você já seja um amante de &lt;a href=&quot;http://www.python.org/&quot;&gt;Python&lt;/a&gt;, &lt;strong&gt;indique o
curso&lt;/strong&gt; para aquele seu amigo que ainda não conhece essa ferramenta
poderosíssima! ;-)&lt;/p&gt;

</description><link>http://blog.justen.eng.br/2011/09/curso-de-python-no-rio-de-janeiro.html</link><author>noreply@blogger.com (Turicas&#39; blog - criativo, né?)</author><thr:total>5</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-18415308.post-3117575746825805374</guid><pubDate>Fri, 16 Sep 2011 05:05:00 +0000</pubDate><atom:updated>2011-09-21T15:29:07.448-03:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">adk</category><category domain="http://www.blogger.com/atom/ns#">android</category><category domain="http://www.blogger.com/atom/ns#">arduino</category><category domain="http://www.blogger.com/atom/ns#">desenvolvimento de software</category><category domain="http://www.blogger.com/atom/ns#">google</category><category domain="http://www.blogger.com/atom/ns#">html5</category><category domain="http://www.blogger.com/atom/ns#">python</category><category domain="http://www.blogger.com/atom/ns#">web</category><title>Google Developer Day 2011, em São Paulo! #euvou</title><description>&lt;p&gt;Daqui a alguns instantes começará a edição brasileira do
&lt;a href=&quot;http://www.google.com/events/developerday/2011/&quot;&gt;Google Developer Day 2011&lt;/a&gt;,
evento que acontecerá em
&lt;a href=&quot;http://www.google.com/events/developerday/2011/events.html&quot;&gt;8 cidades do planeta&lt;/a&gt;,
onde desenvolvedores que trabalham nos produtos da
&lt;a href=&quot;http://www.google.com/about/corporate/company/&quot;&gt;Google&lt;/a&gt; apresentarão
palestras técnicas avançadas sobre as plataformas e produtos da empresa.&lt;/p&gt;

&lt;p align=&quot;center&quot;&gt;
    &lt;a href=&quot;http://www.google.com/events/developerday/2011/sao-paulo/&quot;&gt;&lt;img 
    src=&quot;http://www.justen.eng.br/img/logo_google-developer-day-brasil-2011.png&quot;
    alt=&quot;Logotipo Google Developer Day Brasil 2011&quot; border=&quot;0&quot;/&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;Como o público-alvo são desenvolvedores de software que usam (ou têm intenção
de usar) as tecnologias da empresa, eles prepararam uma &lt;strong&gt;provinha de
programação&lt;/strong&gt; para fazer a seleção dos participantes. Nessa prova somente as
respostas interessavam, ou seja, não era necessário enviar o código que
resolveu os problemas.&lt;/p&gt;

&lt;p&gt;Eu &lt;em&gt;quase&lt;/em&gt; fiquei de fora: minha namorada, &lt;a href=&quot;http://tatialchueyr.com/&quot;&gt;Tatiana
Al-Chueyr&lt;/a&gt;, que me lembrou no último dia de
inscrição. Ela gosta bastante de &lt;a href=&quot;http://www.android.com&quot;&gt;Android&lt;/a&gt; (inclusive
está organizando um evento sobre - &lt;a href=&quot;http://www.androidconf.com.br/&quot;&gt;AndroidConf&lt;/a&gt;,
que será em novembro, no Rio de Janeiro), e desde o começo fez a inscrição.
Mas no final tudo deu certo: &lt;strong&gt;nós dois passamos&lt;/strong&gt;! \o/&lt;/p&gt;

&lt;p&gt;Criei um projeto em &lt;a href=&quot;http://github.com/turicas&quot;&gt;minha conta no GitHub&lt;/a&gt; para
divulgar o código, que foi escrito em &lt;a href=&quot;http://www.python.org.br/&quot;&gt;Python&lt;/a&gt;. Para
ver o código, acesse o
&lt;a href=&quot;https://github.com/turicas/google-developer-day-2011&quot;&gt;repositório google-developer-day-2011&lt;/a&gt;
e fique à vontade para enviar &lt;em&gt;pull requests&lt;/em&gt;, pois não tive muito tempo para
rafatorá-lo (é um ótimo exercício para quem está aprendendo
&lt;a href=&quot;http://www.python.org.br/&quot;&gt;Python&lt;/a&gt;).&lt;/p&gt;

&lt;p align=&quot;center&quot;&gt;
    &lt;a href=&quot;http://www.android.com&quot;&gt;&lt;img 
    src=&quot;http://www.justen.eng.br/img/droid.png&quot;
    alt=&quot;Droid do Android&quot; border=&quot;0&quot;/&gt;&lt;/a&gt;
    &amp;nbsp;&amp;nbsp;&amp;nbsp;
    &lt;a href=&quot;http://www.google.com/chrome&quot;&gt;&lt;img 
    src=&quot;http://www.justen.eng.br/img/logo_chrome.png&quot;
    alt=&quot;Logotipo HTML5&quot; border=&quot;0&quot;/&gt;&lt;/a&gt;
    &amp;nbsp;&amp;nbsp;&amp;nbsp;
    &lt;a href=&quot;http://en.wikipedia.org/wiki/HTML5&quot;&gt;&lt;img 
    src=&quot;http://www.justen.eng.br/img/logo_html5.png&quot;
    alt=&quot;Logotipo HTML5&quot; border=&quot;0&quot;/&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://www.android.com&quot;&gt;Android&lt;/a&gt;,
&lt;a href=&quot;http://www.google.com/chrome&quot;&gt;Google Chrome&lt;/a&gt; e
&lt;a href=&quot;http://en.wikipedia.org/wiki/HTML5&quot;&gt;HTML5&lt;/a&gt; serão alguns dos temas abordados.
Já escolhi as palestras que vou assistir - a expectativa é grande. E se você
também passou na provina, &lt;strong&gt;nos vemos em algumas horas&lt;/strong&gt;! o/&lt;/p&gt;</description><link>http://blog.justen.eng.br/2011/09/google-developer-day-2011-sao-paulo.html</link><author>noreply@blogger.com (Turicas&#39; blog - criativo, né?)</author><thr:total>0</thr:total></item></channel></rss>