<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-8331189605909575211</id><updated>2011-11-27T15:55:06.937-08:00</updated><category term='#latinoware #pythonbrasil #codingdojo #apyb #python'/><category term='python import module'/><category term='blogger themes reativação'/><category term='python fisl arena'/><category term='python unittest herança import'/><title type='text'>Crônicas de um programador Python</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://pyfree.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8331189605909575211/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://pyfree.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Ramiro Batista da Luz</name><uri>http://www.blogger.com/profile/14233661681380923593</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_78g1WTP5o4c/SvAeglvRapI/AAAAAAAABUo/O5m8uaOjFk8/S220/ramiro.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>22</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-8331189605909575211.post-1794883609983822339</id><published>2010-11-15T09:41:00.000-08:00</published><updated>2010-11-16T03:29:32.580-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='#latinoware #pythonbrasil #codingdojo #apyb #python'/><title type='text'>Latinoware 2010</title><content type='html'>Durante os dias 10, 11 e 12 de novembro ocorreu na cidade de Foz do Iguaçu estado do Paraná, Brasil a Latinoware 2010, Conferência Latino-Americana de Software Livre. "Um dos maiores fóruns sobre Software Livre da América Latina (Latinoware) já contabiliza cerca de 3 mil inscritos. São eles de 20 países, incluindo Estados Unidos e países da Europa. São 33 caravanas, a mais distante veio de Cuiabá (MS) e a maior, com 57 participantes, de Brasília" - &lt;a href="http://www.latinoware.org/node/248"&gt;Referência&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;A comunidade Python participou do evento com &lt;a href="http://www.latinoware.org/node/7"&gt;diversas palestras&lt;/a&gt;, coordenando um &lt;a href="http://pyfree.blogspot.com/2010/11/latinodojo-2010.html"&gt;codingdojo&lt;/a&gt; e as famosas palestras relâmpago. Vale a pena destacar o fato de termos diversas palestras onde Python apareceu de forma especial, por exemplo nas palestras de Blender, Inkscape, aplicações Multimídia e principalmente na palestra do &lt;a href="http://www.softwarepublico.gov.br/ver-comunidade?community_id=626732"&gt;Invesalius&lt;/a&gt;, um software público para área de saúde que visa auxiliar o diagnóstico e o planejamento cirúrgico, apresentado pela autora, Tatiana Al-Chueyr. Durante as palestras relâmpago foram apresentadas palestras sobre PyGame, Python em cursos de Ciência da Computação, Testes com Nose e TDaemon, demonstração do Invesalius, Python no Exército Peruano e edição de vídeo com OpenShots.&lt;br /&gt;&lt;br /&gt;Adicionado em 16 de novembro, lembrete da Luciana Tricai Cavalini, foi apresentado por ela, na trilha de saúde do Latinoware (IWEEE 2010),  o OSHIP (&lt;a href="https://launchpad.net/oship" target="_blank"&gt;https://launchpad.net/oship&lt;/a&gt;), que é outro projeto em Python para a área de saúde. Obrigado Luciana.&lt;br /&gt;&lt;br /&gt;Adicionado em 16 de novembro, outro lembrete enviado pelo Álvaro Justen, o codingdojo foi em Python e na palestra dele ele apresentou a integração de Python com Arduino! Obrigado Álvaro.&lt;br /&gt;&lt;br /&gt;Além disso a organização cedeu um stand para a comunidade que foi muito movimentado, fomos procurados por pessoas de diversas nacionalidades incluindo, Paraguai, Venezuela e várias localidades do Brasil. A oportunidade foi usada para fazer contatos e demostrar a linguagem. Muita gente procurou por camisetas e outras lembranças como adesivos e pins. Sentimos falta de um projetor, que seria muito útil.&amp;nbsp; &lt;br /&gt;&lt;br /&gt;Abaixo uma coletânea de noticias sobre o evento, várias onde Python foi mencionado diretamente.&lt;br /&gt;&lt;br /&gt;&amp;nbsp; - &lt;a href="http://www.latinoware.org/node?page=8"&gt;Conferência Latino-Americana de Software Livre Latinoware&lt;/a&gt;&lt;br /&gt;&amp;nbsp; - &lt;a href="http://www.latinoware.org/node/248"&gt;Latinoware em números&lt;/a&gt;&lt;br /&gt;&amp;nbsp; - &lt;a href="http://www.latinoware.org/node/238"&gt;Aprendendo a usar a linguagem de programação Python&lt;/a&gt;&lt;br /&gt;&amp;nbsp; - &lt;a href="http://www.latinoware.org/node/222"&gt;Vídeo de presente para a Latinoware&lt;/a&gt;&lt;br /&gt;&amp;nbsp; - &lt;a href="http://www.latinoware.org/node/192"&gt;Minicursos Latinoware - Uma oportunidade diferenciada de capacitação&lt;/a&gt;&lt;br /&gt;&amp;nbsp; - &lt;a href="http://www.latinoware.org/node/190"&gt;Python e Agilidade nas palavras de Ramiro da Luz&lt;/a&gt;&lt;br /&gt;&amp;nbsp; - &lt;a href="http://www.latinoware.org/node/183"&gt;Latinoware divulga resultado da Chamada de Palestras&lt;/a&gt;&lt;br /&gt;&amp;nbsp; - &lt;a href="http://www.latinoware.org/node/180"&gt;Latinoware compensará emissões de carbono&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Pela nossa avaliação, a participação da comunidade foi muito boa, a procura por Python foi grande e esperamos bons resultados desse evento. Ampliamos nossa boa relação com a organização e esperamos aumentar nossas atividades para o ano que vem que já tem data marcada, 19, 20 e 21 de outubro de 2011.&lt;br /&gt;&lt;br /&gt;Agradecemos imensamente e parabenizamos a organização do evento por essa oportunidade e pelo trabalho realizado, dos coordenadores à equipe de apoio.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_78g1WTP5o4c/TOFzAmmhE0I/AAAAAAAABbM/PexKclknoz4/s1600/S7302634.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="213" src="http://2.bp.blogspot.com/_78g1WTP5o4c/TOFzAmmhE0I/AAAAAAAABbM/PexKclknoz4/s320/S7302634.JPG" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_78g1WTP5o4c/TOFzb1fbs4I/AAAAAAAABbQ/7DkpPUEysSI/s1600/S7302633.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="213" src="http://1.bp.blogspot.com/_78g1WTP5o4c/TOFzb1fbs4I/AAAAAAAABbQ/7DkpPUEysSI/s320/S7302633.JPG" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8331189605909575211-1794883609983822339?l=pyfree.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pyfree.blogspot.com/feeds/1794883609983822339/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8331189605909575211&amp;postID=1794883609983822339' title='1 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8331189605909575211/posts/default/1794883609983822339'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8331189605909575211/posts/default/1794883609983822339'/><link rel='alternate' type='text/html' href='http://pyfree.blogspot.com/2010/11/latinoware-2010.html' title='Latinoware 2010'/><author><name>Ramiro Batista da Luz</name><uri>http://www.blogger.com/profile/14233661681380923593</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_78g1WTP5o4c/SvAeglvRapI/AAAAAAAABUo/O5m8uaOjFk8/S220/ramiro.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_78g1WTP5o4c/TOFzAmmhE0I/AAAAAAAABbM/PexKclknoz4/s72-c/S7302634.JPG' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8331189605909575211.post-292285782106433812</id><published>2010-11-14T17:18:00.000-08:00</published><updated>2010-11-14T17:18:19.857-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='#latinoware #pythonbrasil #codingdojo #apyb #python'/><title type='text'>Latinodojo 2010</title><content type='html'>Durante a Latinoware de 2008 a Associação Python Brasil organizou um &lt;a href="http://associacao.python.org.br/associacao/imprensa/noticias/apyb-realizara-um-python-coding-dojo-na-latinoware"&gt;Coding Dojo&lt;/a&gt;  coordenado pelo Fabricio de Sousa Nascimento, membro do grupo &lt;a href="http://www.dojosp.org/"&gt;Coding Dojo@São Paulo&lt;/a&gt;. Após algum tempo resolvi apelidar essa atividade de &lt;a href="http://www.dojosp.org/?p=34"&gt;latinodojo&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Esse ano a Associação Python Brasil organizou novamente o latinodojo e tive a honra de coordenar o codingdojo junto com meu amigo &lt;a href="http://blog.justen.eng.br/2010/11/semana-que-vem-tem-latinoware-em-foz-do.html"&gt;Álvaro Justen&lt;/a&gt; e com a presença do nosso amigo Marco André Mendes Lopes.&lt;br /&gt;&lt;br /&gt;Além de mim, do Marco André, do Álvaro Justen e do JS(João Sebastião O. Bueno) estavam presentes: Diogenes Walison de Araujo, Kleber da Silva Lyra, Fadel Damen Schreiner, Blas Antonio Pico, Roger Poletto Neris Dias, Vanderlei Suzin, Camilo Carlos Damasceno, Daves Santos Vieira, Antonio Afonso Dourado Filho, Edilberto Alejandro Rolon e Evelyn Cuenca.&lt;br /&gt;&lt;br /&gt;Este ano foi o codingdojo foi muito interessante pois contamos com a presença de representantes da comunidade Paraguaia de software livre interessada em Python. Decidimos resolver o problema dos números de telefone da &lt;a href="http://www.dieblinkenlights.com/blog_pt/a-provinha-do-google-developer-day"&gt;provinha do google&lt;/a&gt;, usada na inscrição para o google developer day Brasil deste ano(2010). Os outros problemas sugeridos foram a conversão de números romanos e o &lt;a href="http://codingdojo.org/cgi-bin/wiki.pl?KataPotter"&gt;KataPotter&lt;/a&gt;. A primeira regra do codingdojo que quebramos foi a escolha da linguagem, decidimos previamente por Python, sem direito a discussão. :P&lt;br /&gt;&lt;br /&gt;Na retrospectiva do codingdojo foram levantados os seguintes pontos negativos:&lt;br /&gt;&lt;br /&gt;&amp;nbsp; - Faltou preparar os softwares no laboratório, não enviamos a lista de requisitos para a organização.&lt;br /&gt;&amp;nbsp; - Faltou a saída do projetor para a tela do computador, dificultando o trabalho do piloto e co-piloto.&lt;br /&gt;&amp;nbsp; - O sensei não explicou a &lt;a href="http://www.python.org/dev/peps/pep-0008/"&gt;PEP8&lt;/a&gt; da linguagem python, por isso foi escrito muito código que não seguiu as boas práticas da linguagem.&lt;br /&gt;&amp;nbsp; - Pela disposição do laboratório piloto e co-piloto ficaram de costas para a plateia, dificultando a comunicação.&lt;br /&gt;&amp;nbsp; - Não foram seguidas todas as regras do dojo, assim é difícil reproduzir.&lt;br /&gt;&amp;nbsp; - As máquinas do laboratório atrapalham a visão e tiram a atenção da plateia.&lt;br /&gt;&amp;nbsp; - Ninguém lembrou de levar comida. :)&lt;br /&gt;&amp;nbsp; - As pessoas acharam que o tempo era pouco, mas o tempo é curto para mantermos os babysteps, isso é padrão no codingdojo com a prática as pessoas se acostumam com isso.&lt;br /&gt;&amp;nbsp; - Outro ponto foi a língua, os representantes do Paraguai não nos entenderam muito bem e nós também tivemos algumas dificuldades.&lt;br /&gt;&amp;nbsp; - Faltou apresentar o conceito de TDD de forma mais clara.&lt;br /&gt;&amp;nbsp; - Faltou preparar os problemas para aproveitar mais o tempo.&lt;br /&gt;&amp;nbsp; - Faltou concluir a aplicação, mas isso é normal, o objetivo é praticar e não resolver o problema.&lt;br /&gt;&amp;nbsp; - Faltou parte da estrutura necessária, o quadro para escrevermos.&lt;br /&gt;&amp;nbsp; - Sugestão de alguns exemplos simples.&lt;br /&gt;&amp;nbsp; - Problema muito longo, sem terminar.&lt;br /&gt;&amp;nbsp; - Faltou material anexo escrito para consulta.&lt;br /&gt;&lt;br /&gt;Nem todas as  sugestões são pertinentes pois ferem as regras do codingdojo, mas é importante tomar nota e pensar em algo para melhorar a primeira impressão das pessoas, com a linguagem e com a atividade.&lt;br /&gt;&lt;br /&gt;Os pontos positivos mencionados na retrospectiva do codingdojo foram:&lt;br /&gt;&amp;nbsp; - Dojo com presença da comunidade Paraguaia, foi mencionado por várias pessoas.&lt;br /&gt;&amp;nbsp; - A linguagem Python foi mencionada, algumas pessoas não conheciam.&lt;br /&gt;&amp;nbsp; - A possibilidade de aprender mais Python. Python é sensacional, "Quero ver um grupo de Dojo em cada cidade dos participantes".&lt;br /&gt;&amp;nbsp; - Boa interação, ambiente amigável, bons amigos.&lt;br /&gt;&amp;nbsp; - Novas técnicas com Python.&lt;br /&gt;&amp;nbsp; - Gostei muito da primeira vez que participei.&lt;br /&gt;&amp;nbsp; - Troca de experiências, possibilidade de resolver o problema de várias maneiras.&lt;br /&gt;&amp;nbsp; - Linguagem muito boa, gostaria de ver uma conexão com banco de dados e serviço web.&lt;br /&gt;&amp;nbsp; - Trabalho coletivo.&lt;br /&gt;&amp;nbsp; - Aprendizado rápido e em equipe.&lt;br /&gt;&amp;nbsp; - Foi bom ter acesso para instalar as bibliotecas que faltaram e a presença de várias nacionalidades.&lt;br /&gt;&amp;nbsp; - Foi bom conhecer a linguagem Python, legal todos pilotarem e foi legal conhecer a &lt;a href="http://www.python.org/dev/peps/pep-0008/"&gt;PEP8&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Numa avaliação geral o codingdojo foi muito bom, esperamos ter a chance de realizar o latinodojo 2011 e também que tenhamos incentivado a criação de vários grupos de codingdojo. Fica aqui o nosso agradecimento à organização da Latinoware que nos deu essa oportunidade, muito obrigado a todos, desde os coordenadores até a equipe de apoio extremamente profissional.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_78g1WTP5o4c/TOCIbLjdxfI/AAAAAAAABa8/enXsbXGvPvI/s1600/S7302631.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="213" src="http://1.bp.blogspot.com/_78g1WTP5o4c/TOCIbLjdxfI/AAAAAAAABa8/enXsbXGvPvI/s320/S7302631.JPG" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_78g1WTP5o4c/TOCJFb0pjhI/AAAAAAAABbA/pcTyfu5LlrA/s1600/S7302630.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="213" src="http://3.bp.blogspot.com/_78g1WTP5o4c/TOCJFb0pjhI/AAAAAAAABbA/pcTyfu5LlrA/s320/S7302630.JPG" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8331189605909575211-292285782106433812?l=pyfree.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pyfree.blogspot.com/feeds/292285782106433812/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8331189605909575211&amp;postID=292285782106433812' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8331189605909575211/posts/default/292285782106433812'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8331189605909575211/posts/default/292285782106433812'/><link rel='alternate' type='text/html' href='http://pyfree.blogspot.com/2010/11/latinodojo-2010.html' title='Latinodojo 2010'/><author><name>Ramiro Batista da Luz</name><uri>http://www.blogger.com/profile/14233661681380923593</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_78g1WTP5o4c/SvAeglvRapI/AAAAAAAABUo/O5m8uaOjFk8/S220/ramiro.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_78g1WTP5o4c/TOCIbLjdxfI/AAAAAAAABa8/enXsbXGvPvI/s72-c/S7302631.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8331189605909575211.post-136346680604021547</id><published>2010-08-25T12:28:00.000-07:00</published><updated>2010-08-25T12:28:09.369-07:00</updated><title type='text'>Divulgando a Python Brasil[6]</title><content type='html'>Presados amigos.&lt;br /&gt;&lt;br /&gt;Este ano o encontro nacional da comunidade Python será em Curitiba,&lt;br /&gt;nos dias 21, 22 e 23 de outubro de 2010, na Universidade Federal do&lt;br /&gt;Paraná, no Centro Politécnico.&lt;br /&gt;&lt;br /&gt;O momento que antecede o evento precisa ser aproveitado para divulgar&lt;br /&gt;e aí está uma ótima oportunidade de colaborar com a comunidade Python.&lt;br /&gt;&lt;br /&gt;Pedimos aqueles que quiserem colaborar com a comunidade Python, ajudem &lt;br /&gt;de alguma forma e para facilitar seguem algumas dicas.&lt;br /&gt;&lt;br /&gt;1 - &lt;a href="http://www.pythonbrasil.org.br/2010/saiba-mais/sites-amigos"&gt;Inclua seu site ou blog nos sites amigos.&lt;/a&gt;&lt;br /&gt;2 - &lt;a href="http://www.pythonbrasil.org.br/2010/saiba-mais/apoio-divulgue/cartaz-do-evento"&gt;Imprima o cartaz e espalhe na sua empresa, faculdade ou universidade.&lt;/a&gt;&lt;br /&gt;3 - Escreva um post no seu blog.&lt;br /&gt;4 - Grave um vídeo com um depoimento promovendo o evento.&lt;br /&gt;5 - Faça a divulgação boca a boca, converse com seus amigos, deixe-os saber por que vale a pena participar.&lt;br /&gt;&lt;br /&gt;Contamos com a colaboração dos amigos, esse evento está sendo preparado para todos à um ano mais ou menos e só está sendo possível por toda colaboração que temos obtido de nossos amigos, para vocês com todo carinho e dedicação.&lt;br /&gt;&lt;br /&gt;Espero vê-los na PythonBrasil[6] para aumentar o meu circulo de amigos.&lt;br /&gt;&lt;br /&gt;Obrigado.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.pythonbrasil.org.br/2010/saiba-mais/sites-amigos"&gt;http://www.pythonbrasil.org.br/2010/saiba-mais/sites-amigos&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.pythonbrasil.org.br/2010/saiba-mais/apoio-divulgue/cartaz-do-evento"&gt;http://www.pythonbrasil.org.br/2010/saiba-mais/apoio-divulgue/cartaz-do-evento/view&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8331189605909575211-136346680604021547?l=pyfree.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pyfree.blogspot.com/feeds/136346680604021547/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8331189605909575211&amp;postID=136346680604021547' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8331189605909575211/posts/default/136346680604021547'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8331189605909575211/posts/default/136346680604021547'/><link rel='alternate' type='text/html' href='http://pyfree.blogspot.com/2010/08/divulgando-python-brasil6.html' title='Divulgando a Python Brasil[6]'/><author><name>Ramiro Batista da Luz</name><uri>http://www.blogger.com/profile/14233661681380923593</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_78g1WTP5o4c/SvAeglvRapI/AAAAAAAABUo/O5m8uaOjFk8/S220/ramiro.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8331189605909575211.post-4843361188915804530</id><published>2010-08-18T17:30:00.000-07:00</published><updated>2010-08-18T17:30:01.575-07:00</updated><title type='text'>Enviando emails com Python</title><content type='html'>Enviando emails com Python.&lt;br /&gt;&lt;br /&gt;A maioria dos meus amigos sabem que estou ajudando a Associação Python Brasil a organizar a &lt;a href="http://www.pythonbrasil.org.br"&gt;PythonBrasil[6]&lt;/a&gt;. Dia 23 de agosto se encerra a chamada de trabalhos, então resolvi enviar um email para todas as comunidades de tecnologias relacionadas a python no Brasil. Mas como?&lt;br /&gt;&lt;br /&gt;Bom, eu poderia ter feito uma mala direta com o BROffice, ou feito um crossposting adicionando todos os endereços no campo "para:" ou no campo "cc:" só que pensei que isso ia demostrar uma preguiça e as pessoas que participam das listas poderiam achar anti-ético.&lt;br /&gt;&lt;br /&gt;Então eu me inscrevi em todas as listas e ao invés de enviar um email para cada lista, resolvi fazer uma das coisas que eu mais gosto, resolvi programar em Python.&lt;br /&gt;&lt;br /&gt;O resultado, é esse script simples que resolvi compartilhar no meu blog.&lt;br /&gt;&lt;br /&gt;Exemplo de CSV:&lt;br /&gt;&lt;pre&gt;"grupy-pr@googlegroups.com","Grupo de usuarios Python","Parana"&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Envio de email:&lt;br /&gt;&lt;br /&gt;&lt;pre class="prettyprint"&gt;#!/usr/bin/env python&lt;br /&gt;# -*- coding=utf-8 -*-&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;template_msg = '''&lt;br /&gt;Presados amigos do %(grupo)s %(local)s !!!&lt;br /&gt;&lt;br /&gt;Esta mensagem e um lembrete para avisar que o periodo para envio de trabalhos para&lt;br /&gt;a PythonBrasil[6] esta chegando ao fim no dia 23 de agosto, proxima segunda-feira.&lt;br /&gt;&lt;br /&gt;Essa eh a sua chance de mostrar para a comunidade o que voce tem feito com Python!&lt;br /&gt;&lt;br /&gt;Envie sua proposta e colabore com o evento.&lt;br /&gt; &lt;br /&gt;http://www.pythonbrasil.org.br/2010/saiba-mais/noticias/aberta-a-chamada-de-trabalhos-para-a-pythonbrasil-6&lt;br /&gt;&lt;br /&gt;A Associacao Python Brasil e a Comunidade Python Brasileira ficam muito agradecidas.&lt;br /&gt;'''&lt;br /&gt;&lt;br /&gt;import csv&lt;br /&gt;&lt;br /&gt;# http://docs.python.org/library/email-examples.html&lt;br /&gt;# Import smtplib for the actual sending function&lt;br /&gt;import smtplib&lt;br /&gt;&lt;br /&gt;# Import the email modules we'll need&lt;br /&gt;from email.mime.text import MIMEText&lt;br /&gt;&lt;br /&gt;# Open a plain text file for reading.  For this example, assume that&lt;br /&gt;# the text file contains only ASCII characters.&lt;br /&gt;#fp = open(textfile, 'rb')&lt;br /&gt;# Create a text/plain message&lt;br /&gt;#msg = MIMEText(fp.read())&lt;br /&gt;#fp.close()&lt;br /&gt;&lt;br /&gt;def process(row):&lt;br /&gt;    # me == the sender's email address&lt;br /&gt;    # you == the recipient's email address&lt;br /&gt;    msg = MIMEText(template_msg % {'grupo':row[1],&lt;br /&gt;                                   'local':row[2]})&lt;br /&gt;    msg['Subject'] = 'Lembrete chamada de trabalhos PythonBrasil[6]'&lt;br /&gt;    msg['From'] = 'ramiroluz@gmail.com'&lt;br /&gt;    msg['To'] = row[0]&lt;br /&gt;&lt;br /&gt;    # Send the message via our own SMTP server, but don't include the&lt;br /&gt;    # envelope header.&lt;br /&gt;    s = smtplib.SMTP('localhost')&lt;br /&gt;    s.sendmail('ramiroluz@gmail.com', [row[0]], msg.as_string())&lt;br /&gt;    s.quit()&lt;br /&gt;&lt;br /&gt;if __name__ == '__main__':&lt;br /&gt;    '''A dica para usar o modulo csv é a seguinte:&lt;br /&gt; &lt;br /&gt;    &gt;&gt;&gt; import csv&lt;br /&gt;    &gt;&gt;&gt; help(csv.reader)&lt;br /&gt;    '''&lt;br /&gt;    f = open('enderecos.csv')&lt;br /&gt;    csv_reader = csv.reader(f)&lt;br /&gt;    for row in csv_reader: &lt;br /&gt;        process(row)&lt;br /&gt;    f.close()&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Simples assim. Será enviado um email para cada endereço da lista. Use com responsabilidade. :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8331189605909575211-4843361188915804530?l=pyfree.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pyfree.blogspot.com/feeds/4843361188915804530/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8331189605909575211&amp;postID=4843361188915804530' title='4 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8331189605909575211/posts/default/4843361188915804530'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8331189605909575211/posts/default/4843361188915804530'/><link rel='alternate' type='text/html' href='http://pyfree.blogspot.com/2010/08/enviando-emails-com-python.html' title='Enviando emails com Python'/><author><name>Ramiro Batista da Luz</name><uri>http://www.blogger.com/profile/14233661681380923593</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_78g1WTP5o4c/SvAeglvRapI/AAAAAAAABUo/O5m8uaOjFk8/S220/ramiro.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8331189605909575211.post-2824439889648576755</id><published>2010-08-12T14:11:00.000-07:00</published><updated>2010-08-12T14:11:54.782-07:00</updated><title type='text'>Encontro da comunidade Brasileira de Python.</title><content type='html'>Encontro da comunidade Brasileira de Python.&lt;br /&gt;&lt;br /&gt;Olá pessoal. Com um dia de atraso, eu me propus a escrever toda quarta-feira,&lt;br /&gt;venho escrever algumas linhas para vocês.&lt;br /&gt;&lt;br /&gt;Hoje quero falar do maior evento de Python do Brasil. PythonBrasil é o nome&lt;br /&gt;que demos para o encontro da comunidade de programadores python brasileiros.&lt;br /&gt;&lt;br /&gt;Há alguns anos a comunidade python brasileira sentiu a necessidade de&lt;br /&gt;ter um encontro nacional e desde 2005 a comunidade vem se encontrando &lt;br /&gt;anualmente. A primeira edição ocorreu nos dias 28 e 29 de abril de 2005 em&lt;br /&gt;Campinas, &lt;a href="http://www.pythonbrasil.org.br/2005"&gt;http://www.pythonbrasil.org.br/2005&lt;/a&gt; dando inicio a uma seqüencia &lt;br /&gt;de excelentes eventos para quem gosta de tecnologia de ponta.&lt;br /&gt;&lt;br /&gt;Em 2006 a comunidade se reuniu em Brasilia, &lt;a href="http://www.pythonbrasil.org.br/2006"&gt;http://www.pythonbrasil.org.br/2006&lt;/a&gt;&lt;br /&gt;1 e 2 de junho. Depois foi a vez de Joinville, no ano de 2007, &lt;br /&gt;&lt;a href="http://www.pythonbrasil.org.br/2007"&gt;http://www.pythonbrasil.org.br/2007&lt;/a&gt; entre 30 de agosto e 1 de setembro. 2008&lt;br /&gt;o encontro foi realizado no Rio de Janeiro, &lt;a href="http://www.pythonbrasil.org.br/2008"&gt;http://www.pythonbrasil.org.br/2008&lt;/a&gt;&lt;br /&gt;nos dias 18, 19 e 20 de setembro. Em 2009 a reunião dos programadores Python&lt;br /&gt;foi em Caxias do Sul no Rio Grande do Sul &lt;a href="http://www.pythonbrasil.org.br/2009"&gt;http://www.pythonbrasil.org.br/2009&lt;/a&gt; de 10 a 12 de setembro. E esse ano&lt;br /&gt;será realizada na Universidade Federal do Paraná, em Curitiba nos dias 21, 22&lt;br /&gt;e 23 de outubro. &lt;a href="http://www.pythonbrasil.org.br/2010"&gt;http://www.pythonbrasil.org.br/2010&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Esse ano teremos dois &lt;a href="http://www.pythonbrasil.org.br/2010/saiba-mais/noticias/palestrantes-internacionais/view"&gt;convidados internacionais, Ian Bicking e Leah Culver&lt;/a&gt;, além de um convidado&lt;br /&gt;especial de outra comunidade, esse ano será o Fábio Akita, famoso por divulgar&lt;br /&gt;a linguagem de programação Ruby e o framework Ruby on Rails.&lt;br /&gt;&lt;br /&gt;Se você gosta de Python, tem um trabalho bacana, aproveite, são os últimos dias&lt;br /&gt;para a enviar seu trabalho para a chamada de trabalhos. Se você quer apenas &lt;br /&gt;ouvir palestrantes de empresas como Globo.com, IG, Nokia, Google, inscreva-se&lt;br /&gt;pois os profissionais dessas empresas sempre apresentam excelentes trabalhos.&lt;br /&gt;&lt;br /&gt;Um grande abraço, nos vemos na PythonBrasil[6].&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.pythonbrasil.org.br/2010/sobre-o-evento/inscricoes"&gt;http://www.pythonbrasil.org.br/2010/sobre-o-evento/inscricoes&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.pythonbrasil.org.br/2010/saiba-mais/noticias/2010/sobre-o-evento/chamada-de-trabalhos"&gt;http://www.pythonbrasil.org.br/2010/saiba-mais/noticias/2010/sobre-o-evento/chamada-de-trabalhos&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8331189605909575211-2824439889648576755?l=pyfree.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pyfree.blogspot.com/feeds/2824439889648576755/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8331189605909575211&amp;postID=2824439889648576755' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8331189605909575211/posts/default/2824439889648576755'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8331189605909575211/posts/default/2824439889648576755'/><link rel='alternate' type='text/html' href='http://pyfree.blogspot.com/2010/08/encontro-da-comunidade-brasileira-de.html' title='Encontro da comunidade Brasileira de Python.'/><author><name>Ramiro Batista da Luz</name><uri>http://www.blogger.com/profile/14233661681380923593</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_78g1WTP5o4c/SvAeglvRapI/AAAAAAAABUo/O5m8uaOjFk8/S220/ramiro.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8331189605909575211.post-924564366431573207</id><published>2010-08-04T18:12:00.000-07:00</published><updated>2010-08-05T05:02:11.073-07:00</updated><title type='text'>CodingDojo</title><content type='html'>O mês de julho para mim foi um tanto quanto agitado, tirei uma semana de férias, fui ao FISL11 e participei de um congresso em Aracaju, minha intenção era manter uma frequência semanal de atualização do meu blog, mas esse mês eu quebrei a disciplina.&lt;br /&gt;&lt;br /&gt;Para retomar a atualização do blog resolvi falar sobre codingdojo. Para quem não sabe é uma atividade de aprendizado continuado, inspirada nas artes marciais. Um dojo, nas artes marciais, é a área central onde ocorre o treinamento. Os aprendizes se reúnem, o sansei os organiza em volta do dojo, chama dois aprendizes para lutar ao centro. Nesse momento os dois aprendizes que estão lutando aprendem na prática, os outros aprendem com a observação. Passado algum tempo o sansei troca a dupla, assim todos lutam e todos observam.&lt;br /&gt;&lt;br /&gt;No codingdojo o exercício é parecido, usando técnicas de desenvolvimento dirigido a testes, TDD, um par de programadores enfrenta um problema, enquanto os participantes observam. Após algum tempo um programador volta para platéia, aquele que estava no teclado, o outro assume o comando do teclado e um participante da platéia vem participar da dupla.&lt;br /&gt;&lt;br /&gt;Meu primeiro contato com codingdojo foi no IME da USP, com o pessoal do dojo-sp. Gostei muito e depois disso tentei participar sempre que possível de algum codingdojo, o que ocorreu no Rio de Janeiro, durante a PythonBrasil[4]. Tive a oportunidade de ajudar a organizar um codingdojo na Latinoware à dois anos atrás e finalmente, esse ano, iniciamos um codingdojo em Curitiba. Já tivemos diversos encontros e agora volto ao assunto das viagens que fiz em julho. No FISL, em Porto Alegre, encontrei um amigo que conheci na PythonBrasil[4] do Rio de Janeiro, o Davi Lima, comentei sobre o dojo e ele falou que queria fazer um em Aracaju, por acaso o congresso que eu iria participar em seguida era em Aracaju, decidimos então aproveitar a oportunidade, nos reunimos na quinta, 29 de julho de 2010 nas faculdades FANESE e realizamos o primeiro dojo do Sergipe, pelo menos que eu tenho conhecimento. A participação foi grande, cerca de 25 pessoas muito entusiasmadas, que estão organizadas para dar continuidade, foi muito legal. Outro amigo, Marco André, nos convidou para realizar um codingdojo em Araquari-SC, o pessoal do dojo-pr está se organizando para ir a Araquari e com isso espalhar esta atividade tão interessante.&lt;br /&gt;&lt;br /&gt;Uma das coisas mais legais do codingdojo, sempre que participo ouço os mesmos comentários, é a troca de idéias, a interatividade e as amizades que são construídas, eu fiz muitos amigos participando de reuniões de codingdojo e indico a todos, quem tiver a oportunidade de participar aproveite, verá que vale muito a pena.&lt;br /&gt;&lt;br /&gt;Vários links para complementar a leitura:&lt;br /&gt;&lt;a href="http://www.codingdojo.org/"&gt;http://www.codingdojo.org/&lt;/a&gt;&lt;br /&gt;&lt;a href="http://codingdojo.org/cgi-bin/wiki.pl?WhatIsCodingDojo"&gt;http://codingdojo.org/cgi-bin/wiki.pl?WhatIsCodingDojo&lt;/a&gt;&lt;br /&gt;&lt;a href=" http://www.codingdojo.org/cgi-bin/wiki.pl?KataCatalogue"&gt;&lt;br /&gt;http://www.codingdojo.org/cgi-bin/wiki.pl?KataCatalogue&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.youtube.com/watch?v=gav9fLVkZQc"&gt;http://www.youtube.com/watch?v=gav9fLVkZQc&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.codingdojo.org/cgi-bin/wiki.pl?CodingDojoPrinciples"&gt;http://www.codingdojo.org/cgi-bin/wiki.pl?CodingDojoPrinciples&lt;/a&gt;&lt;br /&gt;&lt;a href="http://rubyquiz.com/"&gt;http://rubyquiz.com/&lt;/a&gt;&lt;br /&gt;&lt;a href="http://github.com/horaextra/dojomap"&gt;http://github.com/horaextra/dojomap&lt;/a&gt;&lt;br /&gt;&lt;a href="http://groups.google.com/group/dojo-parana"&gt;http://groups.google.com/group/dojo-parana&lt;/a&gt;&lt;br /&gt;&lt;a href="http://groups.google.com/group/dojo-se"&gt;http://groups.google.com/group/dojo-se&lt;/a&gt;&lt;br /&gt;&lt;a href="http://groups.google.com.br/group/dojo-rio"&gt;http://groups.google.com.br/group/dojo-rio&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.dojosp.org/"&gt;http://www.dojosp.org/&lt;/a&gt;&lt;br /&gt;&lt;a href="http://code.google.com/p/dojo-se/"&gt;http://code.google.com/p/dojo-se/&lt;/a&gt;&lt;br /&gt;&lt;a href="https://code.launchpad.net/pydojo"&gt;https://code.launchpad.net/pydojo&lt;/a&gt;&lt;br /&gt;&lt;a href="http://expressocapital.blogspot.com/2010/07/test-fisrst-teaching.html"&gt;http://expressocapital.blogspot.com/2010/07/test-fisrst-teaching.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8331189605909575211-924564366431573207?l=pyfree.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pyfree.blogspot.com/feeds/924564366431573207/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8331189605909575211&amp;postID=924564366431573207' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8331189605909575211/posts/default/924564366431573207'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8331189605909575211/posts/default/924564366431573207'/><link rel='alternate' type='text/html' href='http://pyfree.blogspot.com/2010/08/codingdojo.html' title='CodingDojo'/><author><name>Ramiro Batista da Luz</name><uri>http://www.blogger.com/profile/14233661681380923593</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_78g1WTP5o4c/SvAeglvRapI/AAAAAAAABUo/O5m8uaOjFk8/S220/ramiro.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8331189605909575211.post-7529738243098298434</id><published>2010-06-23T19:24:00.000-07:00</published><updated>2010-06-23T19:24:28.588-07:00</updated><title type='text'>Trac e Mercurial</title><content type='html'>Gerenciando projetos com Trac e Mercurial.&lt;br /&gt;&lt;br /&gt;Minha dica de hoje é um pouco curta, um pouco por falta de inspiração e um pouco por estar aprendendo ainda sobre o assunto.&lt;br /&gt;&lt;br /&gt;Eu uso o Trac[1] há algum tempo para gerenciar as minhas tarefas diárias e me foi pedido para fazer uma apresentação do uso. Porém o sistema de gerenciamento de código que usamos é o SVN[2].&lt;br /&gt;&lt;br /&gt;O SVN é útil, mas atualmente outras opções mais modernas e com uma arquitetura diferente da arquitetura cliente servidor tem surgido, com diversas vantagens a arquitetura distribuida vem ganhando adeptos e força em vários projetos, dentre eles o Kernel do Linux, a distribuição Linux Ubuntu e a linguagem Python que usam respectivamente GIT[3], Bazaar[4] e Mercurial[5].&lt;br /&gt;&lt;br /&gt;Eu estou começando a aprender a usar o GIT, já dei uma olhada no Bazaar, mas tenho um apreço especial pelo Mercurial.&lt;br /&gt;&lt;br /&gt;Então vou deixar no meu post de hoje algumas dicas para quem quer usar Trac e Mercurial para gerenciar o processo de desenvolvimento de software, particular ou da sua equipe.&lt;br /&gt;&lt;br /&gt;Para instalar o trac você pode seguir as instruções do site[6]. Se possuir um sistema baseado em debian, use o comando:&lt;br /&gt;&lt;pre&gt;# aptitude install trac&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Para instalar o mercurial siga as instruções do site[7]. Caso use sistema baseado em debian:&lt;br /&gt;&lt;pre&gt;# aptitude install mercurial&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Nesse momento já é possível começar a trabalhar com o mercurial, inicializando um repositório com o comando:&lt;br /&gt;&lt;pre&gt;$ hg init meu_repositorio&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Para habilitar o mercurial no trac é necessário seguir as instruções do wiki do trac[8], ou se você usa sistemas baseados em debian, pode instalar através do repositório com o comando:&lt;br /&gt;&lt;pre&gt;# aptitude install trac-mercurial&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Em seguida deve habilitar em seu repositório o gancho("hook") para que ao efetuar o commit, ou push, como falei não tenho muita experiência nesse ambiente, ainda não sei exatamente em qual momento o hook será ativado, mas por intuição imagino que seja no commit. As instruções podem ser encontradas no wiki do mercurial[9].&lt;br /&gt;&lt;br /&gt;Basicamente é copiar o trachook.py em algum lugar acessível ao Python, ou seja em algum lugar da sua PYTHONPATH e configurar seu repositório, no arquivo .hgrc da seguinte forma:&lt;br /&gt;&lt;pre&gt;[hooks]&lt;br /&gt;changegroup.trac = python:trachook.hook&lt;br /&gt;&lt;br /&gt;[trac-hook]&lt;br /&gt;root = /caminho/para/trac&lt;br /&gt;url = http://endereco/para/trac&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Agora que tudo está pronto, é só criar um projeto no trac e dar as permissões necessárias:&lt;br /&gt;&lt;pre&gt;# trac-admin /caminho/do/meu_projeto initenv&lt;br /&gt;# chown -R apache.apache /caminho/do/meu_projeto&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;O trac pode ser testado com o servidor próprio, tracd, para isso execute o comando:&lt;br /&gt;&lt;pre&gt;$ tracd --port 8000 /caminho/do/meu_projeto&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Acesse http://localhost:8000/ no seu navegador e verá uma lista de todo ambiente que o trac tem conhecimento.&lt;br /&gt;&lt;br /&gt;Feito isso a última coisa que falta, lembrando que esse post não foi testado, pode estar faltando algo mais, seria configurar o apache. Veja os detalhes no próprio site do trac[10].&lt;br /&gt;&lt;br /&gt;Bom divertimento. :)&lt;br /&gt;&lt;br /&gt;[1] - &lt;a href="http://trac.edgewall.org"&gt;http://trac.edgewall.org&lt;/a&gt;&lt;br /&gt;[2] - &lt;a href="http://subversion.tigris.org/"&gt;http://subversion.tigris.org/&lt;/a&gt;&lt;br /&gt;[3] - &lt;a href="http://git-scm.com/"&gt;http://git-scm.com/&lt;/a&gt;&lt;br /&gt;[4] - &lt;a href="http://bazaar.canonical.com/en/"&gt;http://bazaar.canonical.com/en/&lt;/a&gt;&lt;br /&gt;[5] - &lt;a href="http://mercurial.selenic.com/"&gt;http://mercurial.selenic.com/&lt;/a&gt;&lt;br /&gt;[6] - &lt;a href="http://trac.edgewall.org/wiki/TracInstall"&gt;http://trac.edgewall.org/wiki/TracInstall&lt;/a&gt;&lt;br /&gt;[7] - &lt;a href="http://mercurial.selenic.com/wiki/"&gt;http://mercurial.selenic.com/wiki/&lt;/a&gt;&lt;br /&gt;[8] - &lt;a href="http://trac.edgewall.org/wiki/TracMercurial"&gt;http://trac.edgewall.org/wiki/TracMercurial&lt;/a&gt;&lt;br /&gt;[9] - &lt;a href="http://mercurial.selenic.com/wiki/HgTracHook"&gt;http://mercurial.selenic.com/wiki/HgTracHook&lt;/a&gt;&lt;br /&gt;[10] - &lt;a href="http://trac.edgewall.org/wiki/TracInstall#CreatingaProjectEnvironment"&gt;http://trac.edgewall.org/wiki/TracInstall#CreatingaProjectEnvironment&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8331189605909575211-7529738243098298434?l=pyfree.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pyfree.blogspot.com/feeds/7529738243098298434/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8331189605909575211&amp;postID=7529738243098298434' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8331189605909575211/posts/default/7529738243098298434'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8331189605909575211/posts/default/7529738243098298434'/><link rel='alternate' type='text/html' href='http://pyfree.blogspot.com/2010/06/trac-e-mercurial.html' title='Trac e Mercurial'/><author><name>Ramiro Batista da Luz</name><uri>http://www.blogger.com/profile/14233661681380923593</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_78g1WTP5o4c/SvAeglvRapI/AAAAAAAABUo/O5m8uaOjFk8/S220/ramiro.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8331189605909575211.post-6311299145119053916</id><published>2010-06-16T18:33:00.000-07:00</published><updated>2010-06-16T18:33:57.209-07:00</updated><title type='text'>Python Dialog</title><content type='html'>Quem usualmente faz scripts shell(bash) provavelmente conhece a biblioteca dialog[1]. Essa biblioteca permite a criação de interfaces simples em modo texto para solicitar informações do usuário, entre elas listas de opções, datas, questões, entre outras, enriquecendo muito a usabilidade de um script.&lt;br /&gt;&lt;br /&gt;Quem gosta de python pode usar unir a grande variedade de bibliotecas em python, as estruturas de dados, que podem ser úteis em alguns casos que sejam necessárias estruturas de dados não existentes em bash com a facilidade de uso da biblioteca dialog usando a biblioteca pythondialog[2]. &lt;br /&gt;&lt;br /&gt;Para instalar em distribuições debian e derivadas, pode-se executar o seguinte comando:&lt;br /&gt;&lt;pre&gt;# aptitude install python-dialog dialog&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Para aprender um pouco mais é só abrir e/ou executar o script que acompanha o pacote python-dialog, encontrado em:&lt;br /&gt;&lt;pre&gt;/usr/share/doc/python-dialog/examples/demo.py&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;[1] - http://invisible-island.net/dialog/&lt;br /&gt;[2] - http://pythondialog.sourceforge.net/&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8331189605909575211-6311299145119053916?l=pyfree.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pyfree.blogspot.com/feeds/6311299145119053916/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8331189605909575211&amp;postID=6311299145119053916' title='4 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8331189605909575211/posts/default/6311299145119053916'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8331189605909575211/posts/default/6311299145119053916'/><link rel='alternate' type='text/html' href='http://pyfree.blogspot.com/2010/06/python-dialog.html' title='Python Dialog'/><author><name>Ramiro Batista da Luz</name><uri>http://www.blogger.com/profile/14233661681380923593</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_78g1WTP5o4c/SvAeglvRapI/AAAAAAAABUo/O5m8uaOjFk8/S220/ramiro.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8331189605909575211.post-8659036491072103186</id><published>2010-06-14T09:44:00.000-07:00</published><updated>2010-06-14T09:44:39.636-07:00</updated><title type='text'>VIII PythOnCampus</title><content type='html'>&lt;a href="http://www.python.org.br/wiki/PythOnCampus"&gt;Primeiro evento PythOnCampus do Paraná, na PUC-PR.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;O evento foi bom, não estava lotado, mas o público presente era exatamente o público alvo deste tipo de evento, entre eles alunos do primeiro e segundo períodos e professores universitários.&lt;br /&gt;&lt;br /&gt;Esse evento permitiu a comunidade Python do Paraná mostrar um pouco do que pode ser feito com python e algumas características interessantes para estudantes e profissionais da área de informática. As palestras receberam aplausos estimulantes e do meu ponto de vista valeu muito a pena, esperamos que o resultado seja muito bom, com novos usuários da tecnologia Python na PUC-PR, visto que as aulas de estruturas de dados no segundo ano estão sendo ministradas com Python.&lt;br /&gt;&lt;br /&gt;Abaixo segue relatório do evento:&lt;br /&gt;Aconteceu nesse sábado dia 12 de junho de 2010 o VII PythOnCampus, o primeiro no Paraná. Foi na PUC-PR, foram ministradas 3 palestras e um minicurso. Com o professor Marco André Lopes Mendes a palestra "Por que Python?" que apresentou aos participantes as vantagens de uso e aprendizado da linguagem Python. Em seguida o professor Egon Hilgenstieler falou sobre a utilização da biblioteca SciPy no ensino de Cálculo Numérico, palestra muito interessante, divertida e bem condizida pelo professor. Por fim Arthur Furlan apresentou a palestra sobre o framework Web DJango, por que ser repetitivo é chato, ressaltando a produtividade e a organização desse framework que facilita o reaproveitamento de código, bem como características da ferramenta que contém estruturas prontas muito utilizadas em sistemas web, possibilitando a criação de sistemas com a escrita de pequena quantidade de código. Durante o evento foi ministrado pelo empresário Osvaldo Santana um minicurso de DJango, ofertado pela empresa Triveos que foi a grande apoiadora do evento, patrocinando a vinda do professor Marco André além da oferta desse treinamento.&lt;br /&gt;&lt;br /&gt;Agradecemos essa oportunidade à PUC-PR nas pessoas do integrante da comunidade Python do Paraná, Jean Manganelli, que iniciou os contatos, do professor Carlos Pedroso que conseguiu esse espaço para a comunidade Python e do professor Orlando que está usando Python na disciplina de Estrutura de Dados no segundo período do curso de Bacharelado em Sistemas de Informação, agradecemos aos alunos do primeiro e segundo anos de BSI e Engenharia da Computação que prestigiaram o evento, os palestrantes que se dispuseram a compartilhar seu conhecimento e experiencias conosco e a empresa Triveos que apoiou o evento através de patrocínio da viagem do professor Marco André Lopes Mendes de recursos para o minicurso de DJango.    &lt;br /&gt;&lt;br /&gt;Fotos do encontro: &lt;a href="http://www.flickr.com/photos/ramiroluz/tags/pythoncampus/"&gt;Fotos&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8331189605909575211-8659036491072103186?l=pyfree.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pyfree.blogspot.com/feeds/8659036491072103186/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8331189605909575211&amp;postID=8659036491072103186' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8331189605909575211/posts/default/8659036491072103186'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8331189605909575211/posts/default/8659036491072103186'/><link rel='alternate' type='text/html' href='http://pyfree.blogspot.com/2010/06/viii-pythoncampus.html' title='VIII PythOnCampus'/><author><name>Ramiro Batista da Luz</name><uri>http://www.blogger.com/profile/14233661681380923593</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_78g1WTP5o4c/SvAeglvRapI/AAAAAAAABUo/O5m8uaOjFk8/S220/ramiro.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8331189605909575211.post-5970056327216879476</id><published>2010-06-09T19:01:00.001-07:00</published><updated>2010-06-09T19:01:25.768-07:00</updated><title type='text'>Acessibilidade com Python.</title><content type='html'>Atualmente me envolvi com o projeto http://f123.org e resolvi escrever um post sobre acessibilidade.&lt;br /&gt;&lt;br /&gt;Muitos amigos sabem que gosto muito de python, um deles, Antonio Marques, ficou sabendo do projeto coordenado pelo Fernando Botelho. O Fernando pediu ao Antonio se conhecia alguém que entendesse de python e ele me indicou. O Fernando então me escreveu e começamos a trocar idéias, eu me empolguei, pois gosto de python, gosto de ajudar as pessoas e gosto de me sentir útil de alguma forma. Além do fato de que meu avô paterno era cego e surdo.&lt;br /&gt;&lt;br /&gt;Achei interessante essas coincidencias todas, mas acima de tudo, parece que a vida me preparou para esse encontro.&lt;br /&gt;&lt;br /&gt;Dito isso vamos ao assunto do post. Acessibilidade com python[1]. Comecei a estudar superficialmente um dos softwares que compôem o projeto, chama-se Orca[2] e é um leitor de telas, mas nos documentos encontrei vários links para acessibilidade, inclusive um guia em forma de artigo para desenvolver software acessível[3] e um artigo no jornal do gnome[4].&lt;br /&gt;&lt;br /&gt;Uma das coisas mais interessantes que verifiquei foi o fato de que uma das maiores vantagens da linguagem, a legibilidade, é justamente um fator dificultador para programadores cegos, afinal para eles a delimitação dos blocos com identação não é nada útil e percebi que precisava avaliar melhor as minhas ações, pois cada pessoa tem necessidades diferentes e nesse mundo de acessibilidade, muito mais. &lt;br /&gt;&lt;br /&gt;Vocês podem ver no blog do Sergio Amadeu[5] um post sobre o Orca. Também no site linux acessivel, encontra-se um post interessante sobre o Orca[6].&lt;br /&gt;&lt;br /&gt;Além do Orca, outro software que me interessou, para verificar a acessibilidade de outros programas foi o Accerciser[7]. Encontrei numa busca feita no Google alguns links interessantes[8][9][10].&lt;br /&gt;&lt;br /&gt;Espero poder estudar e poder colaborar de alguma forma com um desses projetos, isso me fará muito bem e por menor que seja minha contribuição, se uma pessoa for beneficiada, todo meu esforço em aprender software livre terá valido a pena. Espero, com esse post, incentivar ao menos mais uma pessoa a fazer o mesmo.&lt;br /&gt;&lt;br /&gt;Obrigado pelo seu tempo em ler esse post.&lt;br /&gt;&lt;br /&gt;[1] - http://live.gnome.org/Accessibility/PythonPoweredAccessibility&lt;br /&gt;[2] - http://live.gnome.org/Orca&lt;br /&gt;[3] - http://www.linuxjournal.com/article/9991&lt;br /&gt;[4] - http://gnomejournal.org/article/56/exercising-your-application-with-accerciser&lt;br /&gt;[5] - http://samadeu.blogspot.com/2007/12/orca-software-livre-para-incluso-dos.html&lt;br /&gt;[6] - http://www.linuxacessivel.org/category/acessibilidade/leitores-de-tela/orca/&lt;br /&gt;[7] - http://live.gnome.org/Accerciser&lt;br /&gt;[8] - http://www.python.org/about/success/bats/&lt;br /&gt;[9] - http://www.python.org/about/success/ezro/&lt;br /&gt;[10] - http://www.python.org/about/success/natsworld/&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8331189605909575211-5970056327216879476?l=pyfree.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pyfree.blogspot.com/feeds/5970056327216879476/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8331189605909575211&amp;postID=5970056327216879476' title='1 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8331189605909575211/posts/default/5970056327216879476'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8331189605909575211/posts/default/5970056327216879476'/><link rel='alternate' type='text/html' href='http://pyfree.blogspot.com/2010/06/acessibilidade-com-python.html' title='Acessibilidade com Python.'/><author><name>Ramiro Batista da Luz</name><uri>http://www.blogger.com/profile/14233661681380923593</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_78g1WTP5o4c/SvAeglvRapI/AAAAAAAABUo/O5m8uaOjFk8/S220/ramiro.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8331189605909575211.post-7111279080059538846</id><published>2010-06-02T18:21:00.000-07:00</published><updated>2010-06-02T18:29:52.516-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='blogger themes reativação'/><title type='text'>Reativação do blog</title><content type='html'>Estou reativando meu blog. Fiquei um bom tempo sem escrever, mas estou pouco a pouco criando uma organização, me disciplinando e resolvi então criar uma rotina, disciplinada e regular de escrita no meu blog.&lt;br /&gt;&lt;br /&gt;Minha intenção é escrever todas as quartas-feiras, portanto semanalmente. O foco desse blog é técnico, principalmente de assuntos relacionados a python, mas é também pessoal, sem um compromisso de que todo post seja técnico e não necessariamente sobre python.&lt;br /&gt;&lt;br /&gt;Por exemplo esse post. É um post para mostrar a vontade de reativar o blog e quero aproveitar e agradecer as pessoas que contribuem com software livre, pessoas que contribuem com suas comunidades, de diversas formas e com a sociedade de uma forma geral. Pessoas que doam seu tempo para ajudar os outros com uma caridade especial. Muito obrigado a todos vocês e obrigado ao pessoal que criou o tema que estou usando, http://www.mymobiles.com/ , ao Dante Araujo, que converteu o tema para o blogger e o pessoal que criou o site http://www.bloggerthemes.net/ e graças a eles pude dar uma garibada no meu blog.&lt;br /&gt;&lt;br /&gt;Paz e amor para todos.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8331189605909575211-7111279080059538846?l=pyfree.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pyfree.blogspot.com/feeds/7111279080059538846/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8331189605909575211&amp;postID=7111279080059538846' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8331189605909575211/posts/default/7111279080059538846'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8331189605909575211/posts/default/7111279080059538846'/><link rel='alternate' type='text/html' href='http://pyfree.blogspot.com/2010/06/reativacao-do-blog.html' title='Reativação do blog'/><author><name>Ramiro Batista da Luz</name><uri>http://www.blogger.com/profile/14233661681380923593</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_78g1WTP5o4c/SvAeglvRapI/AAAAAAAABUo/O5m8uaOjFk8/S220/ramiro.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8331189605909575211.post-2631079021543950859</id><published>2008-09-24T11:18:00.000-07:00</published><updated>2008-09-24T12:49:42.963-07:00</updated><title type='text'>Forum Nokia Code Camp</title><content type='html'>Olá amigos.&lt;br /&gt;&lt;br /&gt;Gostaria de divulgar esse evento da Nokia, a empresa tem apoiodo de&lt;br /&gt;uma forma geral a linguagem Python. O INdT tem patrocinado cursos e&lt;br /&gt;eventos como esse Code Camp, por todo Brasil. Quem tiver a chance&lt;br /&gt;aproveite, além disso que falei é uma tecnologia com futuro promissor.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.onlineintl.com/Nokia/" title="Forum Nokia Code&lt;br /&gt;Camp - Rio de Janeiro e São Paulo"&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://pythonologia.org/wp-content/uploads/td_banner_02.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px;" src="http://pythonologia.org/wp-content/uploads/td_banner_02.jpg" border="0" alt="Forum Nokia Code Camp - Inscreva-se já!" /&gt;&lt;/a&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8331189605909575211-2631079021543950859?l=pyfree.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pyfree.blogspot.com/feeds/2631079021543950859/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8331189605909575211&amp;postID=2631079021543950859' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8331189605909575211/posts/default/2631079021543950859'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8331189605909575211/posts/default/2631079021543950859'/><link rel='alternate' type='text/html' href='http://pyfree.blogspot.com/2008/09/forum-nokia-code-camp.html' title='Forum Nokia Code Camp'/><author><name>Ramiro Batista da Luz</name><uri>http://www.blogger.com/profile/14233661681380923593</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_78g1WTP5o4c/SvAeglvRapI/AAAAAAAABUo/O5m8uaOjFk8/S220/ramiro.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8331189605909575211.post-1194289051359313203</id><published>2008-06-25T06:54:00.000-07:00</published><updated>2008-06-25T06:57:05.817-07:00</updated><title type='text'>Colaboração</title><content type='html'>Há uma promoção da BR-Linux que irá contribuir com comunidades e projetos de software livre. Muito do conhecimento que tenho hoje devo à comunidade Python Brasil e graças à BR-Linux poderei retribuir um pouquinho, divulgando a promoção nesse blog. Obrigado BR-Linux e parabéns pela iniciativa.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Ajude a sustentar a Wikipédia e outros projetos, sem colocar a mão no bolso, e concorra a um Eee PC!&lt;/b&gt;&lt;br /&gt;…e também a pen drives, card drives, camisetas geeks, livros e mais! O &lt;a href=http://br-linux.org/&gt;BR-Linux&lt;/a&gt; e o &lt;a href=http://efetividade.net/&gt;Efetividade&lt;/a&gt; lançaram uma &lt;a href=http://br-linux.org/2008/campanha-wikipedia/&gt;campanha&lt;/a&gt; para ajudar a Wikimedia Foundation e outros mantenedores de projetos que usamos no dia-a-dia on-line. Se você puder doar diretamente, ou contribuir de outra forma, são sempre melhores opções. Mas se não puder, veja as regras da promoção e &lt;a href=http://br-linux.org/2008/campanha-wikipedia/&gt;participe&lt;/a&gt; - quanto mais divulgação, maior será a doação do BR-Linux e do Efetividade, e você ainda concorre a diversos brindes!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8331189605909575211-1194289051359313203?l=pyfree.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pyfree.blogspot.com/feeds/1194289051359313203/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8331189605909575211&amp;postID=1194289051359313203' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8331189605909575211/posts/default/1194289051359313203'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8331189605909575211/posts/default/1194289051359313203'/><link rel='alternate' type='text/html' href='http://pyfree.blogspot.com/2008/06/colaborao.html' title='Colaboração'/><author><name>Ramiro Batista da Luz</name><uri>http://www.blogger.com/profile/14233661681380923593</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_78g1WTP5o4c/SvAeglvRapI/AAAAAAAABUo/O5m8uaOjFk8/S220/ramiro.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8331189605909575211.post-3003314231699340550</id><published>2008-06-03T12:57:00.000-07:00</published><updated>2008-10-23T12:18:06.808-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='python import module'/><title type='text'>Detalhes do comando import em Python</title><content type='html'>Entre os dias 02 e 06 de junho ocorre na Universidade Tecnologica Federal do Paraná a &lt;a href="http://www.semanadamobilidade.blogspot.com/"&gt;semana de mobilidade da nokia&lt;/a&gt;. Me inscrevi no curso de python para série 60 de celulares da nokia. Para participar foi necessário realizar uma prova e uma das questões me chamou a atenção.&lt;br /&gt;&lt;br /&gt;Nessa questão foi declarada uma variável, X, em um módulo e era usada em outro. A idéia aqui é mostrar como funciona o comando import.&lt;br /&gt;&lt;br /&gt;O primeiro módulo do teste contém apenas a definição da variável:&lt;br /&gt;&lt;br /&gt;&lt;pre class="prettyprint"&gt;&lt;br /&gt;#!/usr/bin/env python&lt;br /&gt;# modulo1.py&lt;br /&gt;X = 100&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;No outro módulo, que importa o modulo1.py, a variável é acessada de duas maneiras diferentes:&lt;br /&gt;&lt;br /&gt;&lt;pre class="prettyprint"&gt;&lt;br /&gt;#!/usr/bin/env python&lt;br /&gt;# -*- coding=iso8859-1 -*-&lt;br /&gt;'''&lt;br /&gt;funcoes.py: Exemplo de uso do comando import.&lt;br /&gt;&lt;br /&gt;Importa a variável X definida no modulo1, &lt;br /&gt;exemplifica o uso do comando import.&lt;br /&gt;'''&lt;br /&gt;&lt;br /&gt;import modulo1&lt;br /&gt;from modulo1 import X&lt;br /&gt;&lt;br /&gt;def soma(X,Y):&lt;br /&gt;   # No escopo da função soma, X é o parametro&lt;br /&gt;   # definido no cabecalho da função.&lt;br /&gt;   return X+Y&lt;br /&gt;&lt;br /&gt;# Atribuição feita à variável X, &lt;br /&gt;# imprime o valor e soma em seguida.&lt;br /&gt;print 'X, antes da soma: %s' % X&lt;br /&gt;X = soma(20,10)&lt;br /&gt;&lt;br /&gt;# Atribuição acessando a variável X do modulo1.&lt;br /&gt;modulo1.X = soma(modulo1.X,100)&lt;br /&gt;&lt;br /&gt;# Mostra o resultado das operações. É possível reparar&lt;br /&gt;# que após o comando: from modulo1 import X, obtemos &lt;br /&gt;# uma cópia de X no módulo local(funcoes.py). Tanto é &lt;br /&gt;# que ao acessar a variável X usando o nome do modulo&lt;br /&gt;# obtemos o valor sem alterações.&lt;br /&gt;print 'X: %s' % X&lt;br /&gt;print 'modulo1.X: %s' % modulo1.X&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Quando executamos esse código percebemos que a variável X importada do modulo1.py e a variável X sendo acessada com o nome do módulo não apontam para o mesmo endereço de memória, sendo referências diferentes. Esse é um cuidado que programadores python devem ter ao importar variáveis.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8331189605909575211-3003314231699340550?l=pyfree.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pyfree.blogspot.com/feeds/3003314231699340550/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8331189605909575211&amp;postID=3003314231699340550' title='2 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8331189605909575211/posts/default/3003314231699340550'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8331189605909575211/posts/default/3003314231699340550'/><link rel='alternate' type='text/html' href='http://pyfree.blogspot.com/2008/06/detalhes-do-comando-import-em-python.html' title='Detalhes do comando import em Python'/><author><name>Ramiro Batista da Luz</name><uri>http://www.blogger.com/profile/14233661681380923593</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_78g1WTP5o4c/SvAeglvRapI/AAAAAAAABUo/O5m8uaOjFk8/S220/ramiro.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8331189605909575211.post-8638037357719076364</id><published>2008-05-13T09:37:00.000-07:00</published><updated>2010-06-04T10:21:42.181-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='python unittest herança import'/><title type='text'>Dica para teste unitário com Python</title><content type='html'>Em vários posts nesse blog não tenho colocado código em Python, então resolvi dar uma dica para testes unitários, relacionados à uma situação pela qual passei.&lt;br /&gt;&lt;br /&gt;A minha intenção foi de criar herança nos testes pois queria testar classes parecidas(que também possuem herança).&lt;br /&gt;&lt;br /&gt;À principio importei a classe pai e fiz a herança como de costume.&lt;br /&gt;&lt;br /&gt;&lt;pre class="prettyprint"&gt;from modulotestes import *&lt;br /&gt;&lt;br /&gt;class testeheranca(ClasseTeste):&lt;br /&gt;...&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Ao executar o teste percebi que havia algo errado pois estavam aparecendo mensagens do teste da classe Pai, a ClasseTeste, definida no modulotestes. Fiquei intrigado e fui olhar o código da biblioteca de testes unitários do Python, unittest. Percebi então uma curiosidade, a biblioteca "varre" o módulo sendo testado e executa os testes de todas as classes que herdam de unittest.TestCase. Mas porque então executou os testes do modulotestes?&lt;br /&gt;&lt;br /&gt;Ao fazer:&lt;br /&gt;&lt;br /&gt;&lt;pre class="prettyprint"&gt;from modulotestes import *&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Pedi ao python que trouxesse todos os nomes do modulotestes para o espaço de nomes do testeheranca e com isso a classe Pai, ClasseTeste, veio de brinde, sendo encontrada pela biblioteca unittest. No momento eu percebi isso e fiz uma pequena mudança, veja como ficou:&lt;br /&gt;&lt;br /&gt;&lt;pre class="prettyprint"&gt;import modulotestes&lt;br /&gt;&lt;br /&gt;class testeheranca(modulotestes.ClasseTeste):&lt;br /&gt;...&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Dessa forma importei apenas o módulo e evitei trazer todas as coisas que estavam no modulotestes para o espaço de nomes atual. Espero que essa dica ajude alguém. :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8331189605909575211-8638037357719076364?l=pyfree.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pyfree.blogspot.com/feeds/8638037357719076364/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8331189605909575211&amp;postID=8638037357719076364' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8331189605909575211/posts/default/8638037357719076364'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8331189605909575211/posts/default/8638037357719076364'/><link rel='alternate' type='text/html' href='http://pyfree.blogspot.com/2008/05/dica-para-teste-unitrio.html' title='Dica para teste unitário com Python'/><author><name>Ramiro Batista da Luz</name><uri>http://www.blogger.com/profile/14233661681380923593</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_78g1WTP5o4c/SvAeglvRapI/AAAAAAAABUo/O5m8uaOjFk8/S220/ramiro.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8331189605909575211.post-4898802458235639168</id><published>2008-05-04T17:11:00.000-07:00</published><updated>2008-05-04T17:53:02.707-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='python fisl arena'/><title type='text'>Python - Linguagem BiCampeâ da Arena de Programação</title><content type='html'>A linguagem Python foi Bi-Campeã da Arena de Programação do FISL, versões 8.0 e 9.0.&lt;br /&gt;&lt;br /&gt;No ano passado a arena tinha um formato diferente, foram apresentados problemas em diversas&lt;br /&gt;linguagens, com troca de equipes e ao final foram congratulados primeiro, segundo e terceiro colocados na arena. Nesse ano houve uma equipe ganhadora e a grande diferença é que os desafios da arena eram em Python. Mas então porque a linguagem é bicampeã? No ano passado não houve nem desafio em Python? É que o campeão da arena em 2007, foi Dorneles Treméa, um dos personagens mais importantes do cenário Python, brasileiro, gaúcho e boa gente. Esse ano, o pessoal da comunidade de software liver e Python de Joinville, Alexandre Klostermann e Rafael Floriano e o mineiro importado para o grupo de usuários Python do Paraná, Grupy-PR, Éverton Ribeiro.&lt;br /&gt;&lt;br /&gt;Parabéns a todos os vencedores, mas gostaria de destacar o importante papel da linguagem Python na arena, os próprios desafios foram em Python, para os celulares S60 da Nokia e para a plataforma Maemo. Além de palestras lotadas, como a palestra sobre jogos do Gambiarra e do Marco André Lopes, Por que Python? [ Não sei porque não consegui entrar. :) ]. A linguagem foi destaque em palestras que não estavam na trilha Python e nem na grade da associação, APyBR, em duas palestras de games 3D com Blender a linguagem Python foi bem mensionada e também na palestra da Nokia, sobre dispositivos móveis, onde ouvi a frase, Python é a menina dos olhos da Nokia, o que me trouxe um momento de muita alegria. :)&lt;br /&gt;&lt;br /&gt;Meus parabéns aos campeões e à linguagem que escolhi como minha preferida.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8331189605909575211-4898802458235639168?l=pyfree.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pyfree.blogspot.com/feeds/4898802458235639168/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8331189605909575211&amp;postID=4898802458235639168' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8331189605909575211/posts/default/4898802458235639168'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8331189605909575211/posts/default/4898802458235639168'/><link rel='alternate' type='text/html' href='http://pyfree.blogspot.com/2008/05/python-linguagem-bicampe-da-arena-de.html' title='Python - Linguagem BiCampeâ da Arena de Programação'/><author><name>Ramiro Batista da Luz</name><uri>http://www.blogger.com/profile/14233661681380923593</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_78g1WTP5o4c/SvAeglvRapI/AAAAAAAABUo/O5m8uaOjFk8/S220/ramiro.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8331189605909575211.post-6248114633835951963</id><published>2008-04-25T08:58:00.000-07:00</published><updated>2008-04-25T09:12:49.396-07:00</updated><title type='text'>Resoluções de FISL novo.</title><content type='html'>Todo ano novo as pessoas fazem resoluções de ano novo, são intenções de mudar algum comportamento ou agir em alguma direção. Muitas vezes não passam disso, criamos as resoluções e durante o ano não às praticamos.&lt;br /&gt;&lt;br /&gt;Como sempre que participo do FISL eu renovo minhas energias e me sinto empolgado com software livre, o que causa em mim uma vontade enorme de contribuir com os diversos projetos. E normalmente fica nisso também, acabo não contribuindo com os projetos como eu gostaria.&lt;br /&gt;&lt;br /&gt;Nesse FISL resolvi mudar, minha resolução de FISL novo será mais simples e acessível, nada de projetos impossíveis ou compromissos que não poderia cumprir, minha resolução é simplesmente cumprir minhas resoluções. Como uma boa prática para conseguir isso é divulgar ao maior número de pessoas, pois gera um compromisso maior consigo mesmo, resolvi colocar na internet algumas delas.&lt;br /&gt;&lt;br /&gt;Escrever no blog uma vez na semana, ao menos. Aprender conversação e redação em inglês. Promover a linguagem Python no Paraná. Melhorar a qualidade de meus códigos, com documentação e comentários.&lt;br /&gt;&lt;br /&gt;Essa é a primeira semana, estou dando os primeiros passos nesse caminho. Escrevi um post, programadores Python do Paraná irão participar do FLISOL em mais de uma cidade e marcamos uma reunião para discutir nossos passos e grupos de interesse e comecei a escrever mais comentários e mais documentação nos meus códigos além de organizar melhor a estrutura do código em si.&lt;br /&gt;&lt;br /&gt;Lembrei de trazer uma camiseta para meu filho, dei a ele no domingo quando cheguei. Ele vestiu a camisa assim que ganhou e usou todos os dias até hoje, tirando apenas para colocar o uniforme da escola e para colocar o pijama, veja ele acompanhado dos inseparáveis bonecos do Ben10&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_78g1WTP5o4c/SBICZVk7t_I/AAAAAAAAASw/o1DjA6Ez8us/s1600-h/s7300358.jpg"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;" src="http://bp0.blogger.com/_78g1WTP5o4c/SBICZVk7t_I/AAAAAAAAASw/o1DjA6Ez8us/s320/s7300358.jpg" alt="" id="BLOGGER_PHOTO_ID_5193215954623641586" border="0" /&gt;&lt;/a&gt;, pretendo fazer o mesmo, vestir a camisa do software livre todos os dias.&lt;br /&gt;&lt;br /&gt;Espero ter forças e motivação para continuar assim, até o próximo FISL pelo menos. :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8331189605909575211-6248114633835951963?l=pyfree.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pyfree.blogspot.com/feeds/6248114633835951963/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8331189605909575211&amp;postID=6248114633835951963' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8331189605909575211/posts/default/6248114633835951963'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8331189605909575211/posts/default/6248114633835951963'/><link rel='alternate' type='text/html' href='http://pyfree.blogspot.com/2008/04/resolues-de-fisl-novo.html' title='Resoluções de FISL novo.'/><author><name>Ramiro Batista da Luz</name><uri>http://www.blogger.com/profile/14233661681380923593</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_78g1WTP5o4c/SvAeglvRapI/AAAAAAAABUo/O5m8uaOjFk8/S220/ramiro.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp0.blogger.com/_78g1WTP5o4c/SBICZVk7t_I/AAAAAAAAASw/o1DjA6Ez8us/s72-c/s7300358.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8331189605909575211.post-3200343340868898624</id><published>2007-05-18T08:05:00.000-07:00</published><updated>2007-05-21T08:27:00.264-07:00</updated><title type='text'>III Conferencia Brasileira de Python</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://pyconbrasil.com.br/"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://pyconbrasil.com.br/sobre-o-evento/divulgue-a-pyconbrasil/botao.gif" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Que tal participar de um evento onde assuntos&lt;br /&gt;como cache de servidores web, bibliotecas de &lt;br /&gt;sistemas distribuidos, frameworks para web e &lt;br /&gt;monitoramento de cargas rolam solto?&lt;br /&gt;&lt;br /&gt;Gosta disso tudo? Quer ver caras bons falando&lt;br /&gt;desses assuntos? Então o seu destino é Joinville.&lt;br /&gt;&lt;br /&gt;Participe da &lt;a href="http://pyconbrasil.com.br/"&gt;III Conferencia Brasileira de Programadores Python&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Mesmo sem poder ir você pode ajudar &lt;br /&gt;&lt;a href="http://pyconbrasil.com.br/sobre-o-evento/divulgue-a-pyconbrasil"&gt;divulgando em seu site&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Você que manja de Python pode &lt;a href="http://pyconbrasil.com.br/sobre-o-evento/inscricoes"&gt;apresentar algum trabalho &lt;br /&gt;ou ministrar um mini-curso&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8331189605909575211-3200343340868898624?l=pyfree.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pyfree.blogspot.com/feeds/3200343340868898624/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8331189605909575211&amp;postID=3200343340868898624' title='1 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8331189605909575211/posts/default/3200343340868898624'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8331189605909575211/posts/default/3200343340868898624'/><link rel='alternate' type='text/html' href='http://pyfree.blogspot.com/2007/05/iii-conferencia-brasileira-de-python.html' title='III Conferencia Brasileira de Python'/><author><name>Ramiro Batista da Luz</name><uri>http://www.blogger.com/profile/14233661681380923593</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_78g1WTP5o4c/SvAeglvRapI/AAAAAAAABUo/O5m8uaOjFk8/S220/ramiro.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8331189605909575211.post-3317843738252070970</id><published>2007-05-11T12:28:00.000-07:00</published><updated>2007-05-11T12:49:03.329-07:00</updated><title type='text'>Existe um complo contra mim</title><content type='html'>Po, estou com problemas de afirmação.&lt;br /&gt;&lt;br /&gt;Não entendo o que está acontecendo.&lt;br /&gt;&lt;br /&gt;Por curiosidade fiz o teste[1] para ver que linguagem de programação eu sou,&lt;br /&gt;o resultado foi postado abaixo, eu sou Perl. Para quem não me conhece isso&lt;br /&gt;pode não parecer tão absurdo, mas quem me conhece sabe que não tenho nada&lt;br /&gt;a ver com Perl.&lt;br /&gt;&lt;br /&gt;Além disso passei o teste para uns amigos que fizeram, cada qual achou seu&lt;br /&gt;resultado, mas um deles me indicou outro quiz. Fui tentar descobrir que sistema&lt;br /&gt;operacional eu sou[2].&lt;br /&gt;&lt;br /&gt;Antes de continuar, para o pessoal que não me conhece, quero escrever umas&lt;br /&gt;coisas sobre mim.&lt;br /&gt;&lt;br /&gt;Sou programador há mais de 15 anos, usuário &lt;a href="http://www.debian.org/"&gt;Debian&lt;/a&gt; há mais de 5 anos e&lt;br /&gt;minha linguagem de programação favorita é &lt;a href="http://www.python.org/"&gt;Python&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Encurtando a história, esse quiz só pode ser um complo contra mim, ou devo&lt;br /&gt;estar no lugar errado, na hora errada pois o resultado da linguagem deu Perl&lt;br /&gt;e o sistema deu Slackware.&lt;br /&gt;&lt;br /&gt;Não tenho nada contra Perl e muito menos contra Slackware, mas parece&lt;br /&gt;que querem me convencer de que estou perdido. :)&lt;br /&gt;&lt;br /&gt;PS: Acho que estou perdido mesmo.&lt;br /&gt;&lt;br /&gt;[1] - http://www.bbspot.com/News/2006/08/language_quiz.php&lt;br /&gt;[2] - http://www.bbspot.com/News/2003/01/os_quiz.php&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8331189605909575211-3317843738252070970?l=pyfree.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pyfree.blogspot.com/feeds/3317843738252070970/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8331189605909575211&amp;postID=3317843738252070970' title='3 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8331189605909575211/posts/default/3317843738252070970'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8331189605909575211/posts/default/3317843738252070970'/><link rel='alternate' type='text/html' href='http://pyfree.blogspot.com/2007/05/existe-um-complo-contra-mim.html' title='Existe um complo contra mim'/><author><name>Ramiro Batista da Luz</name><uri>http://www.blogger.com/profile/14233661681380923593</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_78g1WTP5o4c/SvAeglvRapI/AAAAAAAABUo/O5m8uaOjFk8/S220/ramiro.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8331189605909575211.post-4048519083340140050</id><published>2007-05-07T13:14:00.000-07:00</published><updated>2007-05-07T13:28:32.927-07:00</updated><title type='text'>Quem sou eu?</title><content type='html'>O Oswaldo começou com isso, só porque ele teve um dia ruim foi espalhando&lt;br /&gt;esse teste por aí, agora não sei quem sou. :P&lt;br /&gt;&lt;br /&gt;Tudo começou com o post do Oswaldo no seu Blog: http://pythonologia.org/2007/05/04/um-dia-ruim/&lt;br /&gt;&lt;br /&gt;O pessoal que leu acabou fazendo o teste: http://www.bbspot.com/News/2006/08/language_quiz.php&lt;br /&gt;&lt;br /&gt;O Erico foi salvo pela esposa: http://www.erico.com.br/blog/casamento-perfeito&lt;br /&gt;&lt;br /&gt;Ainda no blog do Erico tem o comentário do Dorneles Treméa, ele é binário,&lt;br /&gt;mas a gente já sabia disso. :)&lt;br /&gt;&lt;br /&gt;E eu fui na onda. O resultado?&lt;br /&gt;&lt;p style="text-align: center;"&gt;&lt;a href="http://www.bbspot.com/News/2006/08/language_quiz.php"&gt;&lt;br /&gt;    &lt;img src="http://www.bbspot.com/Images/News_Features/2006/08/language/perl.jpg" alt="You are Perl. People have a hard time understanding you, but you are always able to help them with almost all of their problems." border="0" height="90" width="300" /&gt;&lt;br /&gt;&lt;br /&gt;    Which Programming Language are You?&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;Sei que as pessoas não me entendem direito, mas assim já é demais. :)&lt;br /&gt;&lt;br /&gt;Amanhã vou fazer de novo, se der Python eu publico, senão.....&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8331189605909575211-4048519083340140050?l=pyfree.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pyfree.blogspot.com/feeds/4048519083340140050/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8331189605909575211&amp;postID=4048519083340140050' title='2 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8331189605909575211/posts/default/4048519083340140050'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8331189605909575211/posts/default/4048519083340140050'/><link rel='alternate' type='text/html' href='http://pyfree.blogspot.com/2007/05/quem-sou-eu.html' title='Quem sou eu?'/><author><name>Ramiro Batista da Luz</name><uri>http://www.blogger.com/profile/14233661681380923593</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_78g1WTP5o4c/SvAeglvRapI/AAAAAAAABUo/O5m8uaOjFk8/S220/ramiro.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8331189605909575211.post-2089608468871384857</id><published>2007-04-23T11:27:00.000-07:00</published><updated>2010-06-04T10:24:02.093-07:00</updated><title type='text'>Busca em banco de dados com DJango Model.</title><content type='html'>&lt;span style="font-family: verdana;font-family:verdana;" &gt;O &lt;a href="http://www.djangoproject.com/"&gt;Django&lt;/a&gt; é um &lt;a href="http://en.wikipedia.org/wiki/Software_framework"&gt;framework&lt;/a&gt; no contexto de&lt;br /&gt;desenvolvimento de sistema web.&lt;br /&gt;&lt;br /&gt;Uma das partes desse grupo de ferramentas,&lt;br /&gt;&lt;a href="http://en.wikipedia.org/wiki/Software_framework"&gt;framework&lt;/a&gt;&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="font-family:verdana;"&gt;&lt;span style="font-family: verdana;font-family:verdana;" &gt;, é responsável por interagir com&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: verdana;font-family:verdana;" &gt;o banco de dados. No caso do DJango essa &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: verdana;font-family:verdana;" &gt;parte é chamada "models".&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: verdana;font-family:verdana;" &gt;Nesse post considero que o leitor já&lt;br /&gt;concluiu &lt;/span&gt;&lt;span style="font-family: verdana;font-family:verdana;" &gt;o &lt;/span&gt;&lt;a style="font-family: verdana;" href="http://www.djangoproject.com/tutorial"&gt;tutorial do DJango&lt;/a&gt;&lt;span style="font-family: verdana;font-family:verdana;" &gt;, além disso&lt;br /&gt;segue a &lt;/span&gt;&lt;span style="font-family: verdana;font-family:verdana;" &gt;parte do código que define a classe&lt;br /&gt;Itens.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;pre class="prettyprint"&gt;class Itens(models.Model):&lt;br /&gt;item_id = models.AutoField(primary_key=True)&lt;br /&gt;item_tipo = models.ForeignKey(TipoItem)&lt;br /&gt;item_nome = models.TextField()&lt;br /&gt;item_quantidade = models.IntegerField()&lt;br /&gt;class Meta:&lt;br /&gt;db_table = 'item'&lt;br /&gt;&lt;br /&gt;class Admin:&lt;br /&gt;pass&lt;br /&gt;&lt;/pre&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="font-family:verdana;"&gt;&lt;br /&gt;&lt;span style="font-family: verdana;"&gt;Agora vamos ver a função que busca o ID&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: verdana;"&gt;desse ítem através do nome.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;pre class="prettyprint"&gt;from meu_projeto.minha_app.models import Itens&lt;br /&gt;&lt;br /&gt;def get_ItemId(item_nome):&lt;br /&gt;l_it = Itens.objects.filter(item_nome__contains=item_nome)&lt;br /&gt;if len(l_it)&gt;0:&lt;br /&gt;res_it_id = l_it[0].item_id&lt;br /&gt;else:&lt;br /&gt;res_it_id = 0&lt;br /&gt;&lt;br /&gt;return res_it_id&lt;/pre&gt;&lt;span style="font-family:courier new;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: verdana;"&gt;Para usar é só chamar a função, ela pode ficar no views.py &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: verdana;"&gt;ou em outro arquivo a ser importado no views.py. Pode ser&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: verdana;"&gt;criado por exemplo um template um formulário de pesquisa.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: verdana;"&gt;Só é necessário passar um um nome de item a ser pesquisado,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: verdana;"&gt; se não existir retorna valor 0(zero), que no caso do Python &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: verdana;"&gt;é avaliado como falso.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: verdana;"&gt;Essa é apenas uma utilização do método filter, poderia&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: verdana;"&gt;passar por exemplo item_nome__exact=item_nome&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: verdana;"&gt;para busca exata.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: verdana;"&gt;Até a próxima.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8331189605909575211-2089608468871384857?l=pyfree.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pyfree.blogspot.com/feeds/2089608468871384857/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8331189605909575211&amp;postID=2089608468871384857' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8331189605909575211/posts/default/2089608468871384857'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8331189605909575211/posts/default/2089608468871384857'/><link rel='alternate' type='text/html' href='http://pyfree.blogspot.com/2007/04/busca-em-banco-de-dados-com-django.html' title='Busca em banco de dados com DJango Model.'/><author><name>Ramiro Batista da Luz</name><uri>http://www.blogger.com/profile/14233661681380923593</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_78g1WTP5o4c/SvAeglvRapI/AAAAAAAABUo/O5m8uaOjFk8/S220/ramiro.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8331189605909575211.post-3666850694323006466</id><published>2007-04-19T09:07:00.000-07:00</published><updated>2007-04-19T10:11:30.878-07:00</updated><title type='text'>Por que?</title><content type='html'>O meu primeiro post é uma pergunta, por que?&lt;br /&gt;&lt;br /&gt;Por que desse titulo para o blog?&lt;br /&gt;&lt;br /&gt;Por que programar em Python?&lt;br /&gt;&lt;br /&gt;Por que surfar?&lt;br /&gt;&lt;br /&gt;Por que perguntar isso tudo?&lt;br /&gt;&lt;br /&gt;Bom, o blog tem esse titulo por que parece legal, :)&lt;br /&gt;nem ao menos sei o que é uma crônica, o titulo pareceu&lt;br /&gt;legal e coloquei por que gostei e sou livre.&lt;br /&gt;&lt;br /&gt;E porque programar em Python? Simplesmente por que&lt;br /&gt;eu gosto, tem gente que gosta de "dar a ré no quibe", eu&lt;br /&gt;gosto de programar em Python.&lt;br /&gt;&lt;br /&gt;Surfar é mágico, imagine que a onda é um conjunto de&lt;br /&gt; fatores naturais que forma um lugar no tempo e no&lt;br /&gt;espaço. Estar nesse lugar é mágico.&lt;br /&gt;&lt;br /&gt;Essas perguntas e outras servem para definir quem somos&lt;br /&gt;e o que queremos, sempre devemos nos perguntar esse tipo&lt;br /&gt;de coisa, para nossa autoafirmação.&lt;br /&gt;&lt;br /&gt;Mas todas as perguntas tem uma resposta em comum, no&lt;br /&gt;meu caso. A liberdade. Pergunto por que, pois sou livre,&lt;br /&gt;programo em Python porque sou livre, surfo pela liberdade&lt;br /&gt;e por esse motivo sou um desenvolvedor de software livre,&lt;br /&gt;querendo sempre aprender mais.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8331189605909575211-3666850694323006466?l=pyfree.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pyfree.blogspot.com/feeds/3666850694323006466/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8331189605909575211&amp;postID=3666850694323006466' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8331189605909575211/posts/default/3666850694323006466'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8331189605909575211/posts/default/3666850694323006466'/><link rel='alternate' type='text/html' href='http://pyfree.blogspot.com/2007/04/por-que.html' title='Por que?'/><author><name>Ramiro Batista da Luz</name><uri>http://www.blogger.com/profile/14233661681380923593</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_78g1WTP5o4c/SvAeglvRapI/AAAAAAAABUo/O5m8uaOjFk8/S220/ramiro.jpg'/></author><thr:total>0</thr:total></entry></feed>
