<?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'><id>tag:blogger.com,1999:blog-1819324405537779447</id><updated>2009-11-23T17:19:00.178-03:00</updated><title type='text'>Blog do Petry</title><subtitle type='html'>outra tentativa de manter um blog vivo na net...</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://blog.mdpetry.net/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1819324405537779447/posts/default'/><link rel='alternate' type='text/html' href='http://blog.mdpetry.net/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/1819324405537779447/posts/default?start-index=26&amp;max-results=25'/><author><name>Marcos Daniel Petry</name><uri>http://www.blogger.com/profile/13496416580634204340</uri><email>marcospetry@gmail.com</email></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>31</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-1819324405537779447.post-7866320616223016695</id><published>2009-09-16T19:37:00.005-03:00</published><updated>2009-09-16T19:55:27.654-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='blog'/><category scheme='http://www.blogger.com/atom/ns#' term='google'/><title type='text'>Blog de cara nova!</title><content type='html'>Vai dize q naum fico bunitão????&lt;br /&gt;&lt;br /&gt;Já tava de saco cheio do antigo mac-layout, então troquei para esse que vocês estão vendo, claro que não fui eu que fiz, não tenho talento (muito menos saco) para fazer algo desse jeito, mas fiz algumas modificaçõesinhas heheheh&lt;br /&gt;&lt;br /&gt;Peguei este layout do site &lt;a href="http://btemplates.com/"&gt;btemplates.com&lt;/a&gt; e fiquei na dúvica com a quantidade de coisa boa que tem lá pro blogger!&lt;br /&gt;&lt;br /&gt;Ainda tenho q dar uma "tunada" nele, achei um pouco lento, mas enfim... em outra hora de inspiração quem sabe!&lt;br /&gt;&lt;br /&gt;Bom era isso, pelo menos tirei as traças do blog hehehe, amanha um relato da PythonBrasil[5], se conseguir um folguinha do trabalho! :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1819324405537779447-7866320616223016695?l=blog.mdpetry.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.mdpetry.net/feeds/7866320616223016695/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=1819324405537779447&amp;postID=7866320616223016695' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1819324405537779447/posts/default/7866320616223016695'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1819324405537779447/posts/default/7866320616223016695'/><link rel='alternate' type='text/html' href='http://blog.mdpetry.net/2009/09/blog-de-cara-nova.html' title='Blog de cara nova!'/><author><name>Marcos Daniel Petry</name><uri>http://www.blogger.com/profile/13496416580634204340</uri><email>marcospetry@gmail.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='12634896755086197400'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1819324405537779447.post-3940439725153209909</id><published>2009-07-21T18:00:00.004-03:00</published><updated>2009-09-16T17:20:34.162-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='software livre'/><category scheme='http://www.blogger.com/atom/ns#' term='django'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='pycon'/><category scheme='http://www.blogger.com/atom/ns#' term='pythonbrasil'/><category scheme='http://www.blogger.com/atom/ns#' term='plone'/><category scheme='http://www.blogger.com/atom/ns#' term='computação'/><title type='text'>Anúncio oficial da PythonBrasil[5]</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_V8x6Zp7bni8/SmYoibaZBDI/AAAAAAAAAF0/zLH69fXBNF4/s1600-h/python5.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 100px;" src="http://3.bp.blogspot.com/_V8x6Zp7bni8/SmYoibaZBDI/AAAAAAAAAF0/zLH69fXBNF4/s400/python5.png" alt="" id="BLOGGER_PHOTO_ID_5361016978370266162" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Começou a contagem regressiva para a PythonBrasil[5]! De 10 a 12 de Setembro a comunidade Python, empresas relacionadas e interessados em geral se reúnem em Caxias do Sul para a quinta edição do Encontro Brasileiro da Comunidade Python. Ajude a divulgar colocando um banner no seu site e aproveite para fazer sua inscrição ou enviar uma proposta de trabalho!&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Python é uma linguagem de programação dinâmica de altíssimo nível, utilizada em larga escala por empresas como Google,  Dreamworks e Industrial Light &amp;amp; Magic. No Brasil, é utilizada pela Locaweb e Globo.com, além do SERPRO, entre outros.&lt;br /&gt;&lt;br /&gt;A PythonBrasil é realizada desde 2005 e já foi sediada em Campinas, Brasília, Joinville e Rio de Janeiro, contando com participantes de todo o Brasil, além de palestrantes e convidados de renome nacional e internacional.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:130%;"&gt;O novo site está no ar&lt;/span&gt;&lt;br /&gt;O novo site para a &lt;a class="external-link" href="http://www.pythonbrasil.org.br/2009"&gt;PythonBrasil[5]&lt;/a&gt; está no ar, agora com um novo domínio: &lt;a class="external-link" href="http://www.pythonbrasil.org.br/"&gt;http://www.pythonbrasil.org.br&lt;/a&gt;! Confira todos os detalhes sobre a quinta edição do Encontro&lt;br /&gt;&lt;p&gt;Brasileiro da Comunidade Python, que acontecerá em &lt;a title="Programe sua viagem" class="internal-link" href="http://www.pythonbrasil.org.br/2009/programe-sua-viagem/programe-sua-viagem"&gt;Caxias do Sul&lt;/a&gt;, de 10 a 12 de Setembro&lt;br /&gt;de 2009.&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:130%;"&gt;Palestrantes confirmados &lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Já estão confirmados os nomes dos palestrantes internacionais convidados para a PythonBrasil[5]:&lt;/p&gt; &lt;ul&gt;&lt;li&gt;&lt;a class="external-link" href="http://jacobian.org/"&gt;Jacob Kaplan-Moss&lt;/a&gt;, co-fundador do &lt;a class="external-link" href="http://www.djangoproject.com/"&gt;Django&lt;/a&gt;, um dos mais bem sucedidos frameworks para desenvolvimento web da atualidade;&lt;/li&gt;&lt;li&gt;&lt;a class="external-link" href="http://oakwinter.com/code/"&gt;Colin Winter&lt;/a&gt;, engenheiro do Google e um dos líderes do projeto de otimização do desempenho do &lt;a class="external-link" href="http://www.python.org/"&gt;Python 2.6&lt;/a&gt;, chamado &lt;a class="external-link" href="http://code.google.com/p/unladen-swallow/"&gt;Unladen Swallow.&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;Ambos confirmaram presença e ministrarão palestras dentro de suas especialidades. No cenário nacional, os destaques vão para Gustavo Niemeyer, da &lt;a class="external-link" href="http://www.canonical.com/"&gt;Canonical&lt;/a&gt;, desenvolvedor de projetos como o &lt;a class="external-link" href="http://niemeyer.net/smart"&gt;Smart&lt;/a&gt; e o &lt;a class="external-link" href="https://storm.canonical.com/"&gt;Storm&lt;/a&gt; e um dos poucos &lt;a class="external-link" href="http://www.python.org/dev/committers"&gt;core developers&lt;/a&gt; brasileiros do Python, e Rodrigo Bamboo de Oliveira, criador da linguagem &lt;a class="external-link" href="http://boo.codehaus.org/"&gt;Boo&lt;/a&gt;. &lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:130%;"&gt;Sites amigos&lt;/span&gt;&lt;br /&gt;Repetindo o que vem dando certo desde a &lt;a title="2007" class="internal-link" href="http://www.pythonbrasil.org.br/2007"&gt;PythonBrasil[3]&lt;/a&gt;, este ano também estamos realizando a campanha de &lt;a title="Sites Amigos" class="internal-link" href="http://www.pythonbrasil.org.br/2009/saiba-mais/sites-amigos"&gt;Sites Amigos&lt;/a&gt;.&lt;br /&gt;&lt;p&gt;Divulgue a PythonBrasil[5] em seu site, blog ou portal e faça parte do&lt;br /&gt;sucesso do evento anual da comunidade Python brasileira. Temos alguns modelos diferentes de banners &lt;a title="Ajude a divulgar a PythonBrasil" class="internal-link" href="http://www.pythonbrasil.org.br/2009/saiba-mais/apoio-divulgue/ajude-a-divulgar"&gt;disponíveis para download&lt;/a&gt;.&lt;/p&gt; &lt;span style="font-size:130%;"&gt;Inscrições&lt;/span&gt;&lt;br /&gt;Faça já a sua &lt;a title="Inscrição" class="internal-link" href="http://www.pythonbrasil.org.br/2009/sobre-o-evento/inscricoes"&gt;inscrição no evento! &lt;/a&gt; O pagamento  pode ser realizado por boleto, cartão de crédito ou transferência bancária. Quanto mais cedo você fizer a sua inscrição, maior o seu desconto! &lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:130%;"&gt;Chamada de Trabalhos&lt;/span&gt;&lt;br /&gt;A chamada de trabalhos se encerrará no dia 26 de Julho. &lt;a title="Chamada de Trabalhos" class="internal-link" href="http://www.pythonbrasil.org.br/2009/sobre-o-evento/chamada-de-trabalhos"&gt;Envie a sua proposta agora&lt;/a&gt;. Não deixe para a última hora! &lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:130%;"&gt;Patrocínios&lt;/span&gt;&lt;br /&gt;Existem &lt;a title="Patrocine" class="internal-link" href="http://www.pythonbrasil.org.br/2009/sobre-o-evento/como-patrocinar/patrocine"&gt;diversas formas de patrocinar&lt;/a&gt; o evento. Aproveite esta excelente oportunidade, marque sua presença e exponha sua empresa para um público de alto nível!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1819324405537779447-3940439725153209909?l=blog.mdpetry.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.mdpetry.net/feeds/3940439725153209909/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=1819324405537779447&amp;postID=3940439725153209909' title='1 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1819324405537779447/posts/default/3940439725153209909'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1819324405537779447/posts/default/3940439725153209909'/><link rel='alternate' type='text/html' href='http://blog.mdpetry.net/2009/07/anuncio-oficial-da-pythonbrasil5.html' title='Anúncio oficial da PythonBrasil[5]'/><author><name>Marcos Daniel Petry</name><uri>http://www.blogger.com/profile/13496416580634204340</uri><email>marcospetry@gmail.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='12634896755086197400'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_V8x6Zp7bni8/SmYoibaZBDI/AAAAAAAAAF0/zLH69fXBNF4/s72-c/python5.png' height='72' width='72'/><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1819324405537779447.post-4515695880073025855</id><published>2009-05-28T13:34:00.008-03:00</published><updated>2009-05-28T15:16:33.638-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='django'/><category scheme='http://www.blogger.com/atom/ns#' term='mysql'/><category scheme='http://www.blogger.com/atom/ns#' term='search'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><title type='text'>Busca full-text do mysql no django</title><content type='html'>Essa semana tive que implementar em um dos meus projetos um sistema de busca full-text. como estou utilizando o Mysql, ele possui um mecanismo de pesquisa integrado. Há outras bibliotecas de pesquisa como o &lt;a href="http://lucene.apache.org/java/docs/"&gt;Lucene&lt;/a&gt;, &lt;a href="http://xapian.org/"&gt;Xapian&lt;/a&gt; e &lt;a href="http://www.sphinxsearch.com/"&gt;Sphinx&lt;/a&gt; e todas elas possuem modulos para integra-las ao Django(&lt;a href="http://code.google.com/p/django-search-lucene/" style="text-decoration: none; color: rgb(0, 0, 0);"&gt;django-search-lucene&lt;/a&gt;, &lt;a href="http://code.google.com/p/djapian/"&gt;djapian&lt;/a&gt; e &lt;a href="http://code.google.com/p/django-sphinx/"&gt;django-sphinx&lt;/a&gt; ) mas no meu caso, como estou utilizando uma hospedagem compartilhada, tenho certas restrições para instalar algumas bibliotecas, portanto tive que partir para esta alternativa.&lt;br /&gt;&lt;br /&gt;Bom, vamos ao que é necessário para funcionar a busca:&lt;br /&gt;&lt;br /&gt;digamos que você possui um model de noticias:&lt;br /&gt;&lt;pre&gt;class Artigo(models.Model):&lt;br /&gt; data_publicacao = models.DateTimeField("Data de Publicação", default=datetime.now)&lt;br /&gt; titulo = models.CharField(max_length=200)&lt;br /&gt; slug = models.SlugField()&lt;br /&gt; texto = models.TextField("Texto da noticia")&lt;br /&gt;&lt;br /&gt; class Meta:&lt;br /&gt;     ordering = ['-data_publicacao']&lt;br /&gt;      get_latest_by = 'data_publicacao'&lt;br /&gt;&lt;br /&gt; def __unicode__(self):&lt;br /&gt;     return self.titulo&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Como esperado, o código acima vai gerar um tabela no banco, mas, para a busca funcionar corretamente, teremos que criar "no braço" um índice fulltext para efetuar a busca. Como estamos utilizando o mecanismo de busca do próprio banco. O índice será atualizado automaticamente quando registros são inseridos, atualizados, ou excluídos, de modo que os resultados da pesquisa nunca estarão desatualizada. A declaração CREATE INDEX é utilizado para criar o índice:&lt;br /&gt;&lt;pre&gt;CREATE FULLTEXT INDEX fti_noticias_artigo ON noticias_artigo(titulo,texto)&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Bom agora teremos que estender esta funcionalidade ao ORM do Django e criar um manager para o model em que você quer fazer a busca. Para isso simplesmente &lt;a href="http://djangotidbits.com/17/"&gt;copie este código&lt;/a&gt; no seu models, ou melhor, coloque em um arquivos separado, já que você poderá aproveitá-lo em outros models!&lt;br /&gt;&lt;br /&gt;Agora, chame o manager do código, atribuindo ao atributo objects (ou qualquer outro que você criar) passando como parâmetro os campos que você indexou no mysql:&lt;br /&gt;&lt;pre&gt;objects = SearchManager(('titulo', 'texto'))&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;e está pronto!&lt;br /&gt;&lt;br /&gt;agora para realizar alguma busca utilize o seguinte comando:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;Artigo.objects.search('minha busca')&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;o método search executará uma consulta, verificando se a string que você enviou se encontra em um dos campos que você estabeleceu no seu SearchManager.&lt;br /&gt;&lt;br /&gt;algo mais ou menos assim:&lt;br /&gt;&lt;pre&gt;SELECT titulo, data_publicacao, slug, texto, MATCH(titulo, texto) AGAINST ('minha busca')&lt;br /&gt;  AS `relevance`&lt;br /&gt;FROM noticias_artigo&lt;br /&gt;WHERE MATCH(titulo, texto) AGAINST ('minha busca')&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;O seu manager também inclui um campo extra na sua consulta chamado relevance, que é o indice de relevância da sua pesquisa. Desse modo é possivel efetuar uma ordenacão através deste campo.&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;Artigo.objects.search('minha busca').order_by('relevance')&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;bom era isso! qualquer duvida, reclamação, ou colaboração de código, é só comentar!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1819324405537779447-4515695880073025855?l=blog.mdpetry.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.mdpetry.net/feeds/4515695880073025855/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=1819324405537779447&amp;postID=4515695880073025855' title='5 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1819324405537779447/posts/default/4515695880073025855'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1819324405537779447/posts/default/4515695880073025855'/><link rel='alternate' type='text/html' href='http://blog.mdpetry.net/2009/05/busca-full-text-do-mysql-no-django.html' title='Busca full-text do mysql no django'/><author><name>Marcos Daniel Petry</name><uri>http://www.blogger.com/profile/13496416580634204340</uri><email>marcospetry@gmail.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='12634896755086197400'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1819324405537779447.post-2198558055767908923</id><published>2009-04-24T09:37:00.001-03:00</published><updated>2009-04-24T09:39:52.139-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='software livre'/><category scheme='http://www.blogger.com/atom/ns#' term='django'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='pycon'/><category scheme='http://www.blogger.com/atom/ns#' term='pythonbrasil'/><title type='text'>Vote nos convidados internacionais para a Conferência Python Brasil</title><content type='html'>Chegou a hora de votar para escolher os convidados internacionais da Conferência Python Brasil 5.&lt;br /&gt;&lt;br /&gt;Qualquer interessado pode votar, não é preciso ser membro da&lt;br /&gt;Associação Python Brasil (APyB).&lt;br /&gt;&lt;br /&gt;Visite a &lt;span class="link-external"&gt;&lt;a class="external-link" href="http://www.python.org.br/wiki/ConvidadosInternacionais"&gt;página dos candidatos&lt;/a&gt;&lt;/span&gt; para saber quem é quem, e conhecer os detalhes sobre o processo de escolha. &lt;br /&gt;&lt;br /&gt;Para votar, utilize &lt;a title="Convidados Internacionas da Conferência Python Brasil [5]" class="internal-link" href="http://associacao.pythonbrasil.org/votacoes/convidados-internacionas-pyconbrasil-5"&gt;este formulário&lt;/a&gt;. Você pode votar em um ou dois candidatos.&lt;br /&gt;&lt;br /&gt;O prazo final para votar é 26/4 (domingo) e o resultado da votação será publicado dia 27/4.&lt;br /&gt;&lt;br /&gt;O candidato mais votado será convidado pela APyB para vir à nossa Conferência Python Brasil 5 em Caxias do Sul, com passagens e hospedagem paga.&lt;br /&gt;&lt;br /&gt;Os conselheiros e diretores da APyB convidarão também um segundo palestrante, escolhido entre os candidatos, independente da classificação dele na votação.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1819324405537779447-2198558055767908923?l=blog.mdpetry.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.mdpetry.net/feeds/2198558055767908923/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=1819324405537779447&amp;postID=2198558055767908923' title='1 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1819324405537779447/posts/default/2198558055767908923'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1819324405537779447/posts/default/2198558055767908923'/><link rel='alternate' type='text/html' href='http://blog.mdpetry.net/2009/04/vote-nos-convidados-internacionais-para.html' title='Vote nos convidados internacionais para a Conferência Python Brasil'/><author><name>Marcos Daniel Petry</name><uri>http://www.blogger.com/profile/13496416580634204340</uri><email>marcospetry@gmail.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='12634896755086197400'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1819324405537779447.post-5800752570612173976</id><published>2009-03-24T09:26:00.004-03:00</published><updated>2009-03-24T09:52:31.148-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='django'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><title type='text'>Adeus DjangoSnippets! olá DjangoTidBits!!</title><content type='html'>&lt;span class="google-src-active-text" style="direction: ltr; text-align: left;"&gt;Foi criado por Jose S&lt;/span&gt;oares  &lt;span class="google-src-active-text" style="direction: ltr; text-align: left;"&gt;da &lt;a href="http://opensource.washingtontimes.com/"&gt;W&lt;/a&gt;&lt;/span&gt;&lt;span class="google-src-active-text" style="direction: ltr; text-align: left;"&gt;&lt;a href="http://opensource.washingtontimes.com/"&gt;ashington Times&lt;/a&gt; &lt;/span&gt;&lt;span class="google-src-active-text" style="direction: ltr; text-align: left;"&gt;  o site &lt;a href="http://djangotidbits.com/"&gt;DjangoTidbits&lt;/a&gt; que é mais ou menos o famigerado &lt;a href="http://www.djangosnippets.org/"&gt;Django Snippets&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://djangotidbits.com/static/img/tidbits_logo.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 67px;" src="http://djangotidbits.com/static/img/tidbits_logo.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;span class="google-src-active-text" style="direction: ltr; text-align: left;"&gt;O DjangoTidbits, além de um layout, na minha opinião, mais bonito, possui outros recursos como um controle de revisões do código, a opção de fazer uploads dos arquivos através de um arquivos compactado - ou não, e, o mais importante &lt;span style="font-weight: bold;"&gt;tem uma busca&lt;/span&gt;!!!!!!&lt;br /&gt;&lt;br /&gt;Por enquanto o site possui poucos snippets, ou melhor tidbits, mas acredito que seja questão de tempo, pois achei este novo recurso *muito* melhor que o seu antecessor!&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1819324405537779447-5800752570612173976?l=blog.mdpetry.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.mdpetry.net/feeds/5800752570612173976/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=1819324405537779447&amp;postID=5800752570612173976' title='1 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1819324405537779447/posts/default/5800752570612173976'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1819324405537779447/posts/default/5800752570612173976'/><link rel='alternate' type='text/html' href='http://blog.mdpetry.net/2009/03/adeus-djangosnippets-ola-djangotidbits.html' title='Adeus DjangoSnippets! olá DjangoTidBits!!'/><author><name>Marcos Daniel Petry</name><uri>http://www.blogger.com/profile/13496416580634204340</uri><email>marcospetry@gmail.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='12634896755086197400'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1819324405537779447.post-2967946913415218979</id><published>2009-03-19T23:19:00.003-03:00</published><updated>2009-03-19T23:24:09.546-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='django'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='pythonbrasil'/><title type='text'>Django Code Search</title><content type='html'>Com o &lt;a href="http://www.djangocodesearch.com/"&gt;Django Code Search&lt;/a&gt; é possivel realizar uma pesquisa no código do próprio framework.&lt;br /&gt;&lt;div style="text-align: left;" id="result_box" dir="ltr"&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.djangocodesearch.com/site_media/images/logo.png"&gt;&lt;img style="cursor: pointer; width: 285px; height: 47px;" src="http://www.djangocodesearch.com/site_media/images/logo.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Atratves dele, é possível encontrar atributos de classe ou até mesmo a definições de funções. É leve e rápido, é ma ferramenta a ser usada pelos djangers!&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1819324405537779447-2967946913415218979?l=blog.mdpetry.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.mdpetry.net/feeds/2967946913415218979/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=1819324405537779447&amp;postID=2967946913415218979' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1819324405537779447/posts/default/2967946913415218979'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1819324405537779447/posts/default/2967946913415218979'/><link rel='alternate' type='text/html' href='http://blog.mdpetry.net/2009/03/django-code-search.html' title='Django Code Search'/><author><name>Marcos Daniel Petry</name><uri>http://www.blogger.com/profile/13496416580634204340</uri><email>marcospetry@gmail.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='12634896755086197400'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1819324405537779447.post-3590947556171004741</id><published>2009-03-10T14:44:00.004-03:00</published><updated>2009-03-10T15:21:28.225-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='informática'/><category scheme='http://www.blogger.com/atom/ns#' term='computação'/><title type='text'>DropBox! meus arquivos em todo lugar!</title><content type='html'>Eu sempre procurei um serviço decente para guardar meus arquivos mais usados, até pq como sou muito esquecido, normalmente deixo meu pendrive em casa &lt;s&gt;ou perco ele ¬¬&lt;/s&gt;. Cheguei a colocar algumas coisas no meu &lt;a href="http://www.gmail.com/"&gt;gmail&lt;/a&gt;, através do &lt;a href="http://en.wikipedia.org/wiki/GmailFS"&gt;gmailfs&lt;/a&gt;, mas sei lá, tinha um cheiro de gambiarra no ar que não me agradava mto!&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://www.getdropbox.com/static/1236674546/images/main_logo.png"&gt;&lt;img style="cursor: pointer; width: 211px; height: 54px;" src="https://www.getdropbox.com/static/1236674546/images/main_logo.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;O &lt;a href="https://www.getdropbox.com/"&gt;DropBox&lt;/a&gt; serviu como um luva pra mim. Ta certo que 2Gb não é aqueela maravilha de espaço! mas pra quem não quer deixar um cópia do seu HD online, ele dá pro gasto. Ele possui clientes para windows, linux e Mac, testei os dois primeiros e funcionam perfeitamente!&lt;br /&gt;&lt;br /&gt;Assim que o programa/pacote é instalado, abre na barra de tarefas, uma caixinha, clicando nela abre uma pasta com os seus arquivos, assim que um arquivo é adicionado, ele é sincronizado. Simples e fácil, exatamente o que eu queria!&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_JnDy_ajfcwY/SbatkE0P2nI/AAAAAAAAB_I/EF_-dNZelOs/s1600-h/Captura_de_tela-1.png"&gt;&lt;img style="cursor: pointer; width: 320px; height: 49px;" src="http://4.bp.blogspot.com/_JnDy_ajfcwY/SbatkE0P2nI/AAAAAAAAB_I/EF_-dNZelOs/s320/Captura_de_tela-1.png" alt="" id="BLOGGER_PHOTO_ID_5311623645809859186" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Se você possuir interesse, clique nesse &lt;a href="https://www.getdropbox.com/referrals/NTczMTUxNzk"&gt;link&lt;/a&gt; e ganhe além dos 2Gb, mais 250Mb para a sua conta, e pra minha! hehe!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1819324405537779447-3590947556171004741?l=blog.mdpetry.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.mdpetry.net/feeds/3590947556171004741/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=1819324405537779447&amp;postID=3590947556171004741' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1819324405537779447/posts/default/3590947556171004741'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1819324405537779447/posts/default/3590947556171004741'/><link rel='alternate' type='text/html' href='http://blog.mdpetry.net/2009/03/dropbox-meus-arquivos-em-todo-lugar.html' title='DropBox! meus arquivos em todo lugar!'/><author><name>Marcos Daniel Petry</name><uri>http://www.blogger.com/profile/13496416580634204340</uri><email>marcospetry@gmail.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='12634896755086197400'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_JnDy_ajfcwY/SbatkE0P2nI/AAAAAAAAB_I/EF_-dNZelOs/s72-c/Captura_de_tela-1.png' height='72' width='72'/><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1819324405537779447.post-2288064503446734714</id><published>2009-01-13T10:07:00.004-03:00</published><updated>2009-01-13T10:20:16.258-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='software livre'/><category scheme='http://www.blogger.com/atom/ns#' term='django'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='pycon'/><category scheme='http://www.blogger.com/atom/ns#' term='pythonbrasil'/><title type='text'>PythonBrasil 5 em Caxias do Sul</title><content type='html'>Apenas para tirar as traças do blog, hehehe espero que este ano eu dê mais atenção a ele!&lt;br /&gt;&lt;br /&gt;A decisão foi tomada a tempo, mas como não foi publicada oficialmente, fiquei segurando a noticia! Mas é mais do que certo! o próximo encontro da comunidade Python brasileira será na minha cidade, mas precisamente no meu local de trabalho! Na &lt;a href="http://www.ucs.br/"&gt;Universidade de Caxias do Sul&lt;/a&gt;!&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://media.djangobrasil.org/djangobrasil/images/casos_de_sucesso/ucs_foto.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 300px; height: 225px;" src="http://media.djangobrasil.org/djangobrasil/images/casos_de_sucesso/ucs_foto.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;O evento agora chamdo PythonBrasil 5 acontecerá dias 10, 11, e 12 de Setembro de 2009.&lt;br /&gt;&lt;br /&gt;Posso dizer em nome de todos os colegas de trabalho, que estamos muito felizes e orgulhosos de sermos os anfitriões deste evento e daremos todo o apoio necessário para que ele se torne um sucesso!&lt;br /&gt;&lt;br /&gt;Mais informações estão no &lt;a href="http://associacao.pythonbrasil.org/associacao/imprensa/caxias-do-sul-2009"&gt;site da associação&lt;/a&gt;:&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1819324405537779447-2288064503446734714?l=blog.mdpetry.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.mdpetry.net/feeds/2288064503446734714/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=1819324405537779447&amp;postID=2288064503446734714' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1819324405537779447/posts/default/2288064503446734714'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1819324405537779447/posts/default/2288064503446734714'/><link rel='alternate' type='text/html' href='http://blog.mdpetry.net/2009/01/pythonbrasil-5-em-caxias-do-sul.html' title='PythonBrasil 5 em Caxias do Sul'/><author><name>Marcos Daniel Petry</name><uri>http://www.blogger.com/profile/13496416580634204340</uri><email>marcospetry@gmail.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='12634896755086197400'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1819324405537779447.post-512102850141654167</id><published>2008-09-22T18:59:00.006-03:00</published><updated>2008-09-22T19:10:19.442-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu claro3g linux internet'/><title type='text'>Claro 3g no Ubuntu com sony MD300</title><content type='html'>Até um tempo atrás estava usando o TIMWEB mas como a conexão aqui em Caxias do Sul é &lt;s&gt;uma porcaria&lt;/s&gt; bem lenta, praticamnte sem acesso, migrei para a &lt;a href="http://www.tresg.com.br/"&gt;Claro 3G&lt;/a&gt;, a velocidade é maravilhosa! Não sei se a banda vai esguelar daqui a um tempo, mas tá ótima até o momento (o ultimo teste de velocidade ultrapassou o 1Mbps).&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_JnDy_ajfcwY/SNgWNBrq-BI/AAAAAAAABg0/ZZyC_JUd6Pc/s1600-h/sonyericsson-md300.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://1.bp.blogspot.com/_JnDy_ajfcwY/SNgWNBrq-BI/AAAAAAAABg0/ZZyC_JUd6Pc/s320/sonyericsson-md300.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5248969778746030098" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;O único problema é que com meu modem, ele não conectava no meuatravés do &lt;a href="http://www.ubuntu.com"&gt;Ubuntu&lt;/a&gt;, reconhecia somente como pendrive, depois de muita pesquisa vi que o dispositivo não está na lista de dispositivos compatíveis. Tentei de tudo! até mesmo a heresia de usar uma maquina virtual Windows com suporte a USB para tentar conectar o modem por lá, tudo sem sucesso... &lt;br /&gt;&lt;br /&gt;Bom, não sou um expert em Linux, mas me defendo ehhehe, portanto não sei direito o que houve, se foi depois de uma atualização do SO que ele passou a funcionar, ou se foi a regra do udev, mas depois de vários passo-a-passos, um deles funcionou! Agradeço ao &lt;a href="http://laudecioliveira.org/"&gt;Laudeci Oliveira&lt;/a&gt; por postar no blog dele os passo corretos (cara te devo uma biritas se algum dia te ver/conhecer! hehehe).&lt;br /&gt;&lt;br /&gt;Os passos que utilizei para conectar foram os seguintes:&lt;br /&gt;&lt;br /&gt;criei o arquivo 50-md300modem.rules dentro de /etc/udev/rules.d/ para criar uma regra que faça o udev montar corretamente o dispositivo:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;mdpetry@dv9700:~$ sudo vim /etc/udev/rules.d/50-md300modem.rules&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;e coloquei o seguinte código:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;ACTION!=”add”, GOTO=”3G_End”&lt;br /&gt;BUS==”usb”, SYSFS{idProduct}==”d0cf”, SYSFS{idVendor}==”0fce”, PROGRAM=”/bin/sh -c ‘echo 3 &gt; /sys/%p/device/bConfigurationValue’”&lt;br /&gt;LABEL=”3G_End”&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;reiniciei o udev:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;mdpetry@dv9700:~$ sudo /etc/init.d/udev restart&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;instalei o wvdial e o gnome-ppp&lt;br /&gt;&lt;br /&gt;&lt;code&gt;mdpetry@dv9700:~$ sudo aptitude install gnome-ppp wvdial &lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;e adicionei este conteudo no wndial do meu home:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;mdpetry@dv9700:~$ vim .wvdial.conf &lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;[Dialer Defaults]&lt;br /&gt;Modem = /dev/ttyACM0&lt;br /&gt;ISDN = off &lt;br /&gt;Modem Type = USB Modem&lt;br /&gt;Baud = 460800&lt;br /&gt;Init = ATZ &lt;br /&gt;Init2 = AT+CFUN=1&lt;br /&gt;Init3 = ATQ0 V1 E1 S0=0 &amp;C1 &amp;D2 +FCLASS=0&lt;br /&gt;Init4 = AT+CGDCONT=1,"IP","bandalarga.claro.com.br"&lt;br /&gt;Init5 = &lt;br /&gt;Init6 = &lt;br /&gt;Init7 = &lt;br /&gt;Init8 = &lt;br /&gt;Init9 = &lt;br /&gt;Phone = *99***1#&lt;br /&gt;Phone1 = &lt;br /&gt;Phone2 = &lt;br /&gt;Phone3 = &lt;br /&gt;Phone4 = &lt;br /&gt;Dial Prefix = &lt;br /&gt;Dial Attempts = 1 &lt;br /&gt;Dial Command = ATM1L3DT&lt;br /&gt;Ask Password = off &lt;br /&gt;Password = claro&lt;br /&gt;Username = claro&lt;br /&gt;Auto Reconnect = off &lt;br /&gt;Abort on Busy = off &lt;br /&gt;Carrier Check = on&lt;br /&gt;Check Def Route = on&lt;br /&gt;Abort on No Dialtone = on&lt;br /&gt;Stupid Mode = off &lt;br /&gt;Idle Seconds = 0 &lt;br /&gt;Auto DNS = on&lt;br /&gt;;Minimize = off &lt;br /&gt;;Dock = off &lt;br /&gt;;Do NOT edit this file by hand!&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;pronto! iniciei o gnome-ppp e a conexão da claro estava lá! conectei e funcionou sem problemas!&lt;br /&gt;&lt;br /&gt;alguns blogs falam q da pra melhorar a conexão alterando o dns e utilizar o do openDNS, eu não precisei a velocidade está boa assim...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1819324405537779447-512102850141654167?l=blog.mdpetry.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.mdpetry.net/feeds/512102850141654167/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=1819324405537779447&amp;postID=512102850141654167' title='57 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1819324405537779447/posts/default/512102850141654167'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1819324405537779447/posts/default/512102850141654167'/><link rel='alternate' type='text/html' href='http://blog.mdpetry.net/2008/09/claro-3g-no-ubuntu-com-sony-md300.html' title='Claro 3g no Ubuntu com sony MD300'/><author><name>Marcos Daniel Petry</name><uri>http://www.blogger.com/profile/13496416580634204340</uri><email>marcospetry@gmail.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='12634896755086197400'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_JnDy_ajfcwY/SNgWNBrq-BI/AAAAAAAABg0/ZZyC_JUd6Pc/s72-c/sonyericsson-md300.jpg' height='72' width='72'/><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>57</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1819324405537779447.post-3519420620413142458</id><published>2008-09-03T08:46:00.003-03:00</published><updated>2008-09-03T08:56:14.243-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='django'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><title type='text'>Palestra na Tche Linux</title><content type='html'>Dia 27, sábado, estarei no evento da &lt;a href="http://www.tchelinux.org/caxias/"&gt;TcheLinux&lt;/a&gt;, na FTEC de Caxias do Sul, falando sobre o Django, onde mostrarei algumas das várias ferramentas do framework (admin, forms, generic views,...) e uma palhinha sobre o &lt;a href="http://code.google.com/appengine/"&gt;Google App Engine&lt;/a&gt;!&lt;br /&gt;&lt;br /&gt;Estão se você estiver à toa neste dia (o que é muito dificil ehhehe),morar perto de Caxias do Sul e estiver afim de fazer um programinha nerd, aparece lá!&lt;br /&gt;&lt;br /&gt;os detalhes do evento podem ser conferidos em: &lt;a href="http://www.tchelinux.org/caxias/"&gt;http://www.tchelinux.org/caxias/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1819324405537779447-3519420620413142458?l=blog.mdpetry.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.mdpetry.net/feeds/3519420620413142458/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=1819324405537779447&amp;postID=3519420620413142458' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1819324405537779447/posts/default/3519420620413142458'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1819324405537779447/posts/default/3519420620413142458'/><link rel='alternate' type='text/html' href='http://blog.mdpetry.net/2008/09/palestra-na-tche-linux.html' title='Palestra na Tche Linux'/><author><name>Marcos Daniel Petry</name><uri>http://www.blogger.com/profile/13496416580634204340</uri><email>marcospetry@gmail.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='12634896755086197400'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1819324405537779447.post-6363834567630357532</id><published>2008-07-04T09:21:00.004-03:00</published><updated>2008-07-04T09:37:37.739-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='compiladores'/><category scheme='http://www.blogger.com/atom/ns#' term='informática'/><category scheme='http://www.blogger.com/atom/ns#' term='django'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='computação'/><title type='text'>Proposta do TCC Aprovada!</title><content type='html'>Acabei de receber um "OK" para minha proposta do meu trabalho de conclusão do curso de graduação!!&lt;br /&gt;&lt;br /&gt;A idéia basicamente é criar um gerador de código para o framework &lt;a href="http://www.djangoproject.com/"&gt;Django&lt;/a&gt; a partir de modelos UML, algo como o &lt;a href="http://plone.org/products/archgenxml"&gt;archgenXML&lt;/a&gt; mas com algumas técnicas de compiladores (GLC's, Analisadores Léxicos, Sintaticos, etc...)&lt;br /&gt;&lt;br /&gt;Para quem quiser mais informações, o link para proposta está publico no Google Docs&lt;br /&gt;&lt;a href="http://docs.google.com/Doc?id=d7zxc7q_71rbmszjdd"&gt;http://docs.google.com/Doc?id=d7zxc7q_71rbmszjdd&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;ahh e também...qualquer ajuda é bem vinda! hehe&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1819324405537779447-6363834567630357532?l=blog.mdpetry.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.mdpetry.net/feeds/6363834567630357532/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=1819324405537779447&amp;postID=6363834567630357532' title='9 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1819324405537779447/posts/default/6363834567630357532'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1819324405537779447/posts/default/6363834567630357532'/><link rel='alternate' type='text/html' href='http://blog.mdpetry.net/2008/07/proposta-do-tcc-aprovada.html' title='Proposta do TCC Aprovada!'/><author><name>Marcos Daniel Petry</name><uri>http://www.blogger.com/profile/13496416580634204340</uri><email>marcospetry@gmail.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='12634896755086197400'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>9</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1819324405537779447.post-881388484892870567</id><published>2008-05-16T13:44:00.003-03:00</published><updated>2008-05-16T13:49:35.992-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='django'/><category scheme='http://www.blogger.com/atom/ns#' term='mysql'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><title type='text'>Django + mysql + cluster</title><content type='html'>A noticia é meio antiga mas como não sabia to postando aqui...&lt;br /&gt;Foi criado um &lt;a href="http://softwaremaniacs.org/soft/mysql_cluster/en/"&gt;beckend&lt;/a&gt; para o &lt;a href="http://www.djangoproject.com/"&gt;django&lt;/a&gt; pra utilizar o mysql em um clusters, ele permite que voce configure servidores master e slave e, e expecificar qual deles será utilizado através dos decorators!&lt;br /&gt;&lt;br /&gt;E tudo bem explicadinho como instalar, configurar e usar! :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1819324405537779447-881388484892870567?l=blog.mdpetry.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.mdpetry.net/feeds/881388484892870567/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=1819324405537779447&amp;postID=881388484892870567' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1819324405537779447/posts/default/881388484892870567'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1819324405537779447/posts/default/881388484892870567'/><link rel='alternate' type='text/html' href='http://blog.mdpetry.net/2008/05/django-mysql-cluster.html' title='Django + mysql + cluster'/><author><name>Marcos Daniel Petry</name><uri>http://www.blogger.com/profile/13496416580634204340</uri><email>marcospetry@gmail.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='12634896755086197400'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1819324405537779447.post-359161677474634712</id><published>2008-05-10T15:29:00.004-03:00</published><updated>2008-05-10T15:37:26.740-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sockets'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><title type='text'>jogo de damas</title><content type='html'>Pra tirar as traças do blog ehhe, acabei de acabar um trabalho da disciplina de Sistemas Distribuidos, ainda tem uns controles ptra fazer e algumas coisas pra acertar, mas tá entregável ehehhe...foi feito utiizando python o o módulo Socket. A interface gráfica tá meio tosca... mas quem kiser brincar com ele, ou até mesmo complementá-lo hehe aí vai o link &lt;br /&gt;http://code.google.com/p/pydamas/&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1819324405537779447-359161677474634712?l=blog.mdpetry.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.mdpetry.net/feeds/359161677474634712/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=1819324405537779447&amp;postID=359161677474634712' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1819324405537779447/posts/default/359161677474634712'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1819324405537779447/posts/default/359161677474634712'/><link rel='alternate' type='text/html' href='http://blog.mdpetry.net/2008/05/jogo-de-damas.html' title='jogo de damas'/><author><name>Marcos Daniel Petry</name><uri>http://www.blogger.com/profile/13496416580634204340</uri><email>marcospetry@gmail.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='12634896755086197400'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1819324405537779447.post-585047637669715264</id><published>2008-04-02T09:11:00.005-03:00</published><updated>2008-04-02T14:44:01.365-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='django'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='dreamhost'/><title type='text'>Django e Python2.5 no dreamhost - Parte 2</title><content type='html'>Bom depois de Configurado o Python, como visto no &lt;a href="http://blog.mdpetry.net/2008/04/django-e-python25-no-dreamhost-parte-1.html"&gt;post anterior&lt;/a&gt; é hora de colocar o django no ar. Ahh lembrando que o Django não é suportado oficialmente pela dreamhost por isso a instalação é um pouquinho...digamos...xarope ehhehe, mas é possivel sim!&lt;br /&gt;&lt;br /&gt;Usei como base para &lt;a href="http://wiki.dreamhost.com/index.php/Django"&gt;esse post&lt;/a&gt; a instalação do Django que está no wiki do Dreamhost, mas tinha dado uns probleminhas e, garimpando aki e ali... cheguei no resultado que vou passar para voces!&lt;br /&gt;&lt;br /&gt;&lt;h4&gt;Configurando o site no dreamhost&lt;/h4&gt;&lt;br /&gt;bom pra começar, crie um dominio no painel de controle da Dreamhost, no meu caso criei um subdominio, mas o processo é o mesmo!&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;Escolha “Manage Domains” e depois “Add New Domain / Sub-Domain”&lt;br /&gt;Escolha oome para seu (sub)dominio, no meu caso coloquei django.mdpetry.net&lt;br /&gt;Escolha “Extra web security” e “Fast CGI Support” e submeta o formulário&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Depois crie uma base de dados e uma tabela para seu projeto (não vo ficar explicando isso, mas é bem fácil de fazer! :) )&lt;br /&gt;&lt;br /&gt;&lt;h4&gt;Configurando o Django&lt;/h4&gt;&lt;br /&gt;Entre por ssh na sua conta, e no home seu usuário, crie uma pasta django e dentro dela a pasta django_projects, para adicionar os seus projetos.&lt;br /&gt;&lt;br /&gt;dentro da pasta ~/django, baixe o source do django, através do svn utilizando o comando:&lt;br /&gt;&lt;code&gt;svn co http://code.djangoproject.com/svn/django/trunk/ django_src&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Altere o seu .bash_profile, adicionando as linhas:&lt;br /&gt;&lt;code&gt;export PATH=$PATH:$HOME/django/django_src/django/bin&lt;br /&gt;export PYTHONPATH=$PYTHONPATH:$HOME/django/django_src:$HOME/django/django_projects&lt;/code&gt;&lt;br /&gt;e ative as mudanças digitando &lt;code&gt;source ~/.bash_profile &lt;/code&gt;&lt;br /&gt;&lt;br /&gt;agora entre no diretório django_projects e crie um novo projeto:&lt;br /&gt;&lt;code&gt;django-admin.py startproject myproject&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Como de costume, ele criou uma série de arquivos, crie as pastas para os templates e para as imagens (geralmente eu as crio dentro da pasta do projeto, mas tanto faz onde elas serão criadas)&lt;br /&gt;no meu caso criei a pasta templates e media.&lt;br /&gt;&lt;br /&gt;á no arquivo &lt;span style="font-weight:bold;"&gt;settings.py&lt;/span&gt; e altere as configurações:&lt;br /&gt;&lt;br /&gt;de banco de dados:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;    DATABASE_ENGINE = 'mysql'           # 'postgresql', 'mysql', 'sqlite3' or 'ado_mssql'.&lt;br /&gt;    DATABASE_NAME = 'django_db'             # Or path to database file if using sqlite3.&lt;br /&gt;    DATABASE_USER = 'usuario'             # Not used with sqlite3.&lt;br /&gt;    DATABASE_PASSWORD = 'senha'         # Not used with sqlite3.&lt;br /&gt;    DATABASE_HOST = 'djangomysql.mdpetry.net'             # Set to empty string for localhost. Not used with sqlite3.&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;de internacionalização:&lt;br /&gt;&lt;code&gt; TIME_ZONE = 'America/Sao_Paulo'&lt;br /&gt;LANGUAGE_CODE = 'pt-br'&lt;br /&gt; &lt;/code&gt;&lt;br /&gt;&lt;br /&gt;de templates:&lt;br /&gt;&lt;code&gt;TEMPLATE_DIRS = (&lt;br /&gt;        # Put strings here, like "/home/html/django_templates".&lt;br /&gt;        # Always use forward slashes, even on Windows.&lt;br /&gt;        "/home/mdpetry/django/django_projects/myproject/templates"&lt;br /&gt;    )&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;mídia:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;    MEDIA_ROOT = '/home/mdpetry/django/django_projects/myproject/media'&lt;br /&gt;    MEDIA_URL = 'http://django.mdpetry.net/media/'&lt;br /&gt;    ADMIN_MEDIA_PREFIX = '/admin_media/'&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;insira a seguinte linha no .bash_profile&lt;br /&gt;&lt;code&gt;export DJANGO_SETTINGS_MODULE=myproject.settings&lt;/code&gt; e ative novamente o arquivo.&lt;br /&gt;&lt;br /&gt;após isso, sincronize o BD e crie u musuário para acessar a area de adminsitração com as suas alterações na pasta do projeto, digite:&lt;br /&gt;&lt;code&gt;django-admin.py syncdb&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;h4&gt;instalando e configurando o FASTCGI e o mod_rewrite&lt;/h4&gt;&lt;br /&gt;vá até o subdominio criado e vaixe o script python&lt;br /&gt;&lt;br /&gt;&lt;code&gt;wget http://svn.saddi.com/py-lib/trunk/fcgi.py&lt;/code&gt; e altere as permissões do arquivo &lt;code&gt;chmod 755 fcgi.py&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;crie o arquivo dispatch.fcgi&lt;br /&gt;&lt;code&gt;#!/home/mdpetry/opt/bin/python&lt;br /&gt;import sys&lt;br /&gt;sys.path += ['/home/mdpetry/django/django_src']&lt;br /&gt;sys.path += ['/home/mdpetry/django/django_projects']&lt;br /&gt;from fcgi import WSGIServer&lt;br /&gt;from django.core.handlers.wsgi import WSGIHandler&lt;br /&gt;import os&lt;br /&gt;os.environ['DJANGO_SETTINGS_MODULE'] = 'myproject.settings'&lt;br /&gt;WSGIServer(WSGIHandler()).run()&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;para o mod rewrite, crie o arquivo .htaccess:&lt;br /&gt;&lt;code&gt;RewriteEngine On&lt;br /&gt;    RewriteBase /&lt;br /&gt;    RewriteRule ^(media/.*)$ - [L]&lt;br /&gt;    RewriteRule ^(admin_media/.*)$ - [L]&lt;br /&gt;    RewriteRule ^(dispatch\.fcgi/.*)$ - [L]&lt;br /&gt;    RewriteRule ^(.*)$ dispatch.fcgi/$1 [L]&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;reinicia o python para validar as mudanças:&lt;br /&gt;&lt;code&gt;pkill python&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;Configurações finais&lt;/h2&gt;&lt;br /&gt;altere as os links dos arquivos de midia para o projeto do django:&lt;br /&gt;&lt;code&gt;ln -s $HOME/django/django_src/django/contrib/admin/media $HOME/django.mdpetry.net/admin_media&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;adicione no arquivos settings.py do seu projeto a app de adminsitração:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;INSTALLED_APPS = (&lt;br /&gt;        'django.contrib.auth',&lt;br /&gt;        'django.contrib.contenttypes',&lt;br /&gt;        'django.contrib.sessions',&lt;br /&gt;        'django.contrib.sites',&lt;br /&gt;        'django.contrib.admin',&lt;br /&gt;    )&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;e no arquivos urls.py, deconmente a linahs da adminsitração tbem:&lt;br /&gt;&lt;code&gt;(r'^admin/', include('django.contrib.admin.urls')),&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;reinicie o python e na pasta do projeto instale o proejto com o manage.py&lt;br /&gt;&lt;code&gt;pkill python&lt;br /&gt;python manage.py syncdb&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;e... ta pronto! se voce acessar http://django.DEUDOMINIO.com/admin, deverá aparecer a tela de login da interface de adminsitração do django!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1819324405537779447-585047637669715264?l=blog.mdpetry.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.mdpetry.net/feeds/585047637669715264/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=1819324405537779447&amp;postID=585047637669715264' title='4 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1819324405537779447/posts/default/585047637669715264'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1819324405537779447/posts/default/585047637669715264'/><link rel='alternate' type='text/html' href='http://blog.mdpetry.net/2008/04/django-e-python25-no-dreamhost-parte-2.html' title='Django e Python2.5 no dreamhost - Parte 2'/><author><name>Marcos Daniel Petry</name><uri>http://www.blogger.com/profile/13496416580634204340</uri><email>marcospetry@gmail.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='12634896755086197400'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1819324405537779447.post-708555413684301851</id><published>2008-04-01T19:18:00.005-03:00</published><updated>2008-04-01T19:44:26.250-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='django'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='dreamhost'/><title type='text'>Django e Python2.5 no dreamhost - Parte 1</title><content type='html'>Estava com alguns probleminhas para isntalar o &lt;a href="http://www.djangoproject.com"&gt;Django&lt;/a&gt; no &lt;a href="http://www.dreamhost.com/"&gt;Dreamhost&lt;/a&gt;, no meu caso, o servidor, depois de um tempo tentando estabelecer conexão, aparecia aquela indesejavel tela de erro 500, foi ai que o &lt;a href="http://andrewsmedina.com/"&gt;Andrews&lt;/a&gt; me deu a idéia de isntalar o python2.5, e de primeira deu tudo certo!&lt;br /&gt;&lt;br /&gt;bom os passos para instalar:&lt;br /&gt;&lt;br /&gt;Baixe o arquivo com o source do python e coloque numa pasta, no meu caso coloquei na opt do meu home, e após isso descompacte o arquivo:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;cd ~&lt;br /&gt;mkdir opt&lt;br /&gt;wget http://www.python.org/ftp/python/2.5.2/Python-2.5.2.tgz   &lt;br /&gt;tar xvzf Python-2.5.2.tgz&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;entre na pasta do source, e instale com os comandos abaixo:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;./configure --prefix=$HOME/opt/ --enable-unicode=ucs4&lt;br /&gt;make&lt;br /&gt;make install&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;após instalado, altere o .bash_profile:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;vim ~/.bash_profile&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;e insira a seguinte linha no arquivo:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;export PATH=$HOME/opt/bin/:$PATH&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;execute o arquivo e verifique a versão do python instalada!&lt;br /&gt;&lt;br /&gt;&lt;code&gt;source .bash_profile&lt;br /&gt;python --version&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Ele irá retornar a versão correta do python no caso a 2.5.2&lt;br /&gt;&lt;br /&gt;Feito isso, será necessário instalar o módulo de conexão com o mysql, e agora com o python 2.5 vai se beem + fácil! :)&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;wget http://internap.dl.sourceforge.net/sourceforge/mysql-python/MySQL-python-1.2.2.tar.gz&lt;br /&gt;tar xvzf MySQL-python-1.2.2.tar.gz&lt;br /&gt;cd MySQL-python-1.2.2&lt;br /&gt;python setup.py install&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Amanha (ou depois hehe), posto como está configurado o djando na minha conta!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1819324405537779447-708555413684301851?l=blog.mdpetry.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.mdpetry.net/feeds/708555413684301851/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=1819324405537779447&amp;postID=708555413684301851' title='3 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1819324405537779447/posts/default/708555413684301851'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1819324405537779447/posts/default/708555413684301851'/><link rel='alternate' type='text/html' href='http://blog.mdpetry.net/2008/04/django-e-python25-no-dreamhost-parte-1.html' title='Django e Python2.5 no dreamhost - Parte 1'/><author><name>Marcos Daniel Petry</name><uri>http://www.blogger.com/profile/13496416580634204340</uri><email>marcospetry@gmail.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='12634896755086197400'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1819324405537779447.post-5574076424903041623</id><published>2008-03-25T13:48:00.003-03:00</published><updated>2008-03-25T14:05:13.562-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='django'/><category scheme='http://www.blogger.com/atom/ns#' term='gsoc'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='google'/><title type='text'>Django (e vários outros projetos) estão aceitando estudantes para desenvolver aplicações no Google Summer of Code</title><content type='html'>Você é estudante e está interessado em desenvolver algumas melhorias ou funções novas para o framework &lt;a href="http://www.djangoproject.com/"&gt;Django&lt;/a&gt;? o Django é um dos projetos que o Google Summer of code está bancando!&lt;br /&gt;Se voce se acha que tem conhecimento suficiente, submeta suas proposta! o prazo se encerra dia 31 de março, ou seja, não há muito tempo! Ah e como recompensa voce ganha 4.500 doletas e uma camiseta bonitona! :)&lt;br /&gt;&lt;br /&gt;algumas idéias que o pessoal sugeriu estão em: http://code.djangoproject.com/wiki/SummerOfCode2008&lt;br /&gt;&lt;br /&gt;e a lista de discussão: http://groups.google.com/group/django-gsoc&lt;br /&gt;&lt;br /&gt;se houver interesse siga este guia e faça sua aplicação: http://groups.google.com/group/google-summer-of-code-announce/web/guide-to-the-gsoc-web-app-for-student-applicants&lt;br /&gt;&lt;br /&gt;ahh o pssoal do Plone, Zope, Grok, TurboGears e vários outros também estão aceitando participantes! veja a lista completa em: http://code.google.com/soc/turbogears/about.html&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1819324405537779447-5574076424903041623?l=blog.mdpetry.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.mdpetry.net/feeds/5574076424903041623/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=1819324405537779447&amp;postID=5574076424903041623' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1819324405537779447/posts/default/5574076424903041623'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1819324405537779447/posts/default/5574076424903041623'/><link rel='alternate' type='text/html' href='http://blog.mdpetry.net/2008/03/django-aceita-estudantes-para.html' title='Django (e vários outros projetos) estão aceitando estudantes para desenvolver aplicações no Google Summer of Code'/><author><name>Marcos Daniel Petry</name><uri>http://www.blogger.com/profile/13496416580634204340</uri><email>marcospetry@gmail.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='12634896755086197400'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1819324405537779447.post-2667607394783650056</id><published>2008-01-29T08:25:00.000-03:00</published><updated>2008-01-29T08:29:28.142-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='internet'/><title type='text'>Desenvolvendo para internet</title><content type='html'>Achei num blog por ai, e como to meio sem inspiração vai isso mesmo!&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.vilain.com/images/web-design.gif"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 450px;" src="http://www.vilain.com/images/web-design.gif" border="0" alt="" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1819324405537779447-2667607394783650056?l=blog.mdpetry.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.mdpetry.net/feeds/2667607394783650056/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=1819324405537779447&amp;postID=2667607394783650056' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1819324405537779447/posts/default/2667607394783650056'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1819324405537779447/posts/default/2667607394783650056'/><link rel='alternate' type='text/html' href='http://blog.mdpetry.net/2008/01/desenvolvendo-para-internet.html' title='Desenvolvendo para internet'/><author><name>Marcos Daniel Petry</name><uri>http://www.blogger.com/profile/13496416580634204340</uri><email>marcospetry@gmail.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='12634896755086197400'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1819324405537779447.post-3668814949524991</id><published>2008-01-25T10:02:00.000-03:00</published><updated>2008-01-25T10:06:20.300-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='django'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><title type='text'>Recorte de imagens usando Python/Django/PIL</title><content type='html'>respondendo um dúvida na lista &lt;a href="http://groups.google.com.br/group/django-brasil"&gt;django-brasil,&lt;/a&gt; resolvi colocar aqui também um exemplo de recorte de imagem através do django.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;from django.utils.httpwrappers import HttpResponse&lt;br /&gt;from PIL import Image&lt;br /&gt;&lt;br /&gt;def image(request,arquivo,largura=100,altura=100):&lt;br /&gt;&lt;br /&gt;    im = Image.open(arquivo)&lt;br /&gt;    imre = im.transform((largura, altura), Image.AFFINE,(1,0,0,0,1,0))&lt;br /&gt;    &lt;br /&gt;    response = HttpResponse(mimetype="image/png")&lt;br /&gt;    image.save(response, "PNG")&lt;br /&gt;    return response&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;:)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1819324405537779447-3668814949524991?l=blog.mdpetry.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.mdpetry.net/feeds/3668814949524991/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=1819324405537779447&amp;postID=3668814949524991' title='1 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1819324405537779447/posts/default/3668814949524991'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1819324405537779447/posts/default/3668814949524991'/><link rel='alternate' type='text/html' href='http://blog.mdpetry.net/2008/01/recorte-de-imagens-usando.html' title='Recorte de imagens usando Python/Django/PIL'/><author><name>Marcos Daniel Petry</name><uri>http://www.blogger.com/profile/13496416580634204340</uri><email>marcospetry@gmail.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='12634896755086197400'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1819324405537779447.post-5932819422215256210</id><published>2008-01-23T15:20:00.000-03:00</published><updated>2008-01-23T15:40:04.257-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='django'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><title type='text'>DjangoPeople</title><content type='html'>Nos últimos meses, muitos usuários aderiram ao Django e, consequentemente ao Python! isso é muito bom e fico muito feliz com isso! :). No entnado, são pouco os usuários que utilizam as listas de discussão, irc, ou coisas do tipo, simplesmente entram no site, baixam o framewor, lêem a documentação (que'é muito boa por sinal!) e começam a desenvolver!&lt;br /&gt;&lt;br /&gt;Então o co-criador do Django, Simon Willison e Natalie Downe, criaram o site &lt;a href="http://djangopeople.net"&gt;djangopeople.net&lt;/a&gt; com o objetivo de "dar uma chance" de mostrar ao o mundo quem são os usuários desse fantástico framework (pouquinho puxa-saco não? ehhe)&lt;br /&gt;&lt;br /&gt;Então se voce desenvolve sites em django, visite o site, e coloque mostre-se!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1819324405537779447-5932819422215256210?l=blog.mdpetry.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.mdpetry.net/feeds/5932819422215256210/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=1819324405537779447&amp;postID=5932819422215256210' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1819324405537779447/posts/default/5932819422215256210'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1819324405537779447/posts/default/5932819422215256210'/><link rel='alternate' type='text/html' href='http://blog.mdpetry.net/2008/01/djangopeople-um-orkut-para-os.html' title='DjangoPeople'/><author><name>Marcos Daniel Petry</name><uri>http://www.blogger.com/profile/13496416580634204340</uri><email>marcospetry@gmail.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='12634896755086197400'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1819324405537779447.post-2412334843252074552</id><published>2008-01-23T08:03:00.000-03:00</published><updated>2008-01-23T08:13:04.599-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='pil'/><category scheme='http://www.blogger.com/atom/ns#' term='imagem'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><title type='text'>Código de Barras em Python</title><content type='html'>Estou trabalhando na geração de boletos bancários utilizando PIL e ReportLab, fiz uma pesquisada por ai e não havia um código de barras utilizando o padrão que precisava que era o padrão 2 de 5 intercalado. Por isso estou postando o código aqui! :)&lt;br /&gt;&lt;br /&gt;Para executar é necessário do modulo PIL instalado!&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;import Image&lt;br /&gt;import ImageDraw&lt;br /&gt;&lt;br /&gt;class CodeBarPil:&lt;br /&gt;    """&lt;br /&gt;    Classe base para implementação do código de barras&lt;br /&gt;    """&lt;br /&gt;&lt;br /&gt;    def __init__(self):&lt;br /&gt;        pass&lt;br /&gt;&lt;br /&gt;    def drawCodeBarInterleaved2of5(self, value, posX=0, posY=0, height = 50):&lt;br /&gt;        """&lt;br /&gt;        Desenha codigo de barras padrão intercalado 2 de 5&lt;br /&gt;        """&lt;br /&gt;        im = Image.new('RGB',(750,80),'white')&lt;br /&gt;        draw = ImageDraw.Draw(im)&lt;br /&gt;&lt;br /&gt;        pattern = ('00110', '10001', '01001', '11000', '00101',&lt;br /&gt;                   '10100', '01100', '00011', '10010', '01010')&lt;br /&gt;    &lt;br /&gt;        # value deve possuir comprimento par, acrescenta 'zero' caso impar&lt;br /&gt;        if (len(value) % 2) != 0:&lt;br /&gt;            value= '0' + value&lt;br /&gt;        # faz intercalação dos pares&lt;br /&gt;        l=''&lt;br /&gt;        for i in range(0,len(value),2):&lt;br /&gt;            p1=pattern[int(value[i])]&lt;br /&gt;            p2=pattern[int(value[i+1])]&lt;br /&gt;            for p in range(0,5):&lt;br /&gt;                l+=p1[:1] + p2[:1]&lt;br /&gt;                p1=p1[1:]&lt;br /&gt;                p2=p2[1:]&lt;br /&gt;        # gera espacos e barras&lt;br /&gt;        barra=True&lt;br /&gt;        b=''&lt;br /&gt;        for i in range(0,len(l)):&lt;br /&gt;            if l[i] == '0':&lt;br /&gt;                if barra:&lt;br /&gt;                    b+='B'&lt;br /&gt;                    barra=False&lt;br /&gt;                else:&lt;br /&gt;                    b+='E'&lt;br /&gt;                    barra=True&lt;br /&gt;            else:&lt;br /&gt;                if barra:&lt;br /&gt;                    b+='BBB'&lt;br /&gt;                    barra=False&lt;br /&gt;                else:&lt;br /&gt;                    b+='EEE'&lt;br /&gt;                    barra=True&lt;br /&gt;        # concatena inicio e fim&lt;br /&gt;        b='BEBE' + b + 'BBBEB'&lt;br /&gt;        for i in range(0,len(b)):&lt;br /&gt;            if b[i] == 'B':&lt;br /&gt;                draw.line((posX,posY,posX,posY + height),'black')&lt;br /&gt;            else:&lt;br /&gt;                draw.line((posX,posY,posX,posY + height),'white')&lt;br /&gt;            posX+=1&lt;br /&gt;        return imagem&lt;br /&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1819324405537779447-2412334843252074552?l=blog.mdpetry.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.mdpetry.net/feeds/2412334843252074552/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=1819324405537779447&amp;postID=2412334843252074552' title='2 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1819324405537779447/posts/default/2412334843252074552'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1819324405537779447/posts/default/2412334843252074552'/><link rel='alternate' type='text/html' href='http://blog.mdpetry.net/2008/01/cdigo-de-barras-em-python.html' title='Código de Barras em Python'/><author><name>Marcos Daniel Petry</name><uri>http://www.blogger.com/profile/13496416580634204340</uri><email>marcospetry@gmail.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='12634896755086197400'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1819324405537779447.post-269080378992222814</id><published>2007-11-21T07:48:00.000-03:00</published><updated>2007-11-21T07:50:03.430-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='pycon'/><title type='text'>Os certificados da Pycon disponíveis</title><content type='html'>&lt;img src="http://pyconbrasil.com.br/saiba-mais/noticias/os-certificados-estao-disponiveis/image_mini" /&gt;&lt;br /&gt;&lt;br /&gt;Os certificados de participação na PyconBrasil 3 estão disponíveis e podem ser acessados a partir da página da PyConBrasil, no menu à esquerda.&lt;br /&gt;&lt;br /&gt;Para obter seu certificado, informe o mesmo e-mail utilizado para sua inscrição no evento. O certificado será exibido na tela e você poderá salvá-lo&lt;br /&gt;ou imprimi-lo.&lt;br /&gt;&lt;br /&gt;eu jah peguei o meu!!!!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1819324405537779447-269080378992222814?l=blog.mdpetry.net' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://pyconbrasil.com.br/sobre-o-evento/certificados' title='Os certificados da Pycon disponíveis'/><link rel='replies' type='application/atom+xml' href='http://blog.mdpetry.net/feeds/269080378992222814/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=1819324405537779447&amp;postID=269080378992222814' title='1 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1819324405537779447/posts/default/269080378992222814'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1819324405537779447/posts/default/269080378992222814'/><link rel='alternate' type='text/html' href='http://blog.mdpetry.net/2007/11/os-certificados-da-pycon-disponveis.html' title='Os certificados da Pycon disponíveis'/><author><name>Marcos Daniel Petry</name><uri>http://www.blogger.com/profile/13496416580634204340</uri><email>marcospetry@gmail.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='12634896755086197400'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1819324405537779447.post-3779348650897425407</id><published>2007-08-27T15:49:00.000-03:00</published><updated>2007-08-27T15:51:50.700-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux tim'/><title type='text'>Utilizando o TimWEB</title><content type='html'>Acabei de ser mais uns dos usuários do serviço de Internet Movel da TIM, adquiri o plano de 1GB por mes, e estou gostando bastante, para as minhas necessidade ele se encaixou perfeitamente! Já que não vou utilizá-lo para fazer downloads demorados e trabalharei mais noite e esporadicamente em algumas viagens...&lt;br /&gt;&lt;br /&gt;&lt;img src="http://img67.imageshack.us/img67/5093/modemla0.png" /&gt;&lt;br /&gt;&lt;br /&gt;Com o pacote veio o modem &lt;strong&gt;Huawei E220. &lt;/strong&gt;Não tive nenhum problema com a instalação, no Windows simplesmente pluguei o modem e logo saiu funcionando, no Linux tive um probleminha quanto a alguns links quebrados que se encotraram no wiki do ubuntu, mas dei uma busca na net e achei outro link e funcionou certinho (editei o wiki para que outros não tenha o mesmo problema!)&lt;br /&gt;&lt;br /&gt;Logo de cara notei uam baita diferença na utilização da banda de rede entre os 2 SO's impressionante com o windows consome banda pra coisa inúteis, mas tudo bem...não vou utilizar mto ele...&lt;br /&gt;&lt;br /&gt;a gora eh soh economizar na mensagens no piggin q vai ficar tudo dentro do preço! ehhehehe&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1819324405537779447-3779348650897425407?l=blog.mdpetry.net' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://wiki.ubuntu-br.org/TimWeb' title='Utilizando o TimWEB'/><link rel='replies' type='application/atom+xml' href='http://blog.mdpetry.net/feeds/3779348650897425407/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=1819324405537779447&amp;postID=3779348650897425407' title='4 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1819324405537779447/posts/default/3779348650897425407'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1819324405537779447/posts/default/3779348650897425407'/><link rel='alternate' type='text/html' href='http://blog.mdpetry.net/2007/08/utilizando-o-timweb.html' title='Utilizando o TimWEB'/><author><name>Marcos Daniel Petry</name><uri>http://www.blogger.com/profile/13496416580634204340</uri><email>marcospetry@gmail.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='12634896755086197400'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1819324405537779447.post-6183513718950654997</id><published>2007-08-21T14:07:00.000-03:00</published><updated>2007-08-22T09:12:07.088-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='plone'/><category scheme='http://www.blogger.com/atom/ns#' term='zope'/><title type='text'>Plone 3 lançado (finalmente!)</title><content type='html'>Todo mundo já deve saber mas, vou postar aqui também!&lt;br /&gt;&lt;br /&gt;Depois de um *bom* tempo, é lançada a &lt;a href="http://plone.org/products/plone"&gt;versão 3 do Plone&lt;/a&gt;, trazendo varias novidades, as mesmas podem ser encontradas &lt;a href="http://plone.org/products/plone/features/3.0"&gt;aqui&lt;/a&gt;. Dei uma olhada rápida nos recursos novos e gostei bastante das mudanças:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Mudanças na skin padrão, foi adicionada uma outra skin (bonitinha até, mas ainda prefiro a padrão! ehhehe);&lt;/li&gt;&lt;li&gt;Melhoiras no Kupu (editor HTML do CMS);&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Foi alterado o jeito como os produtos padrões são criados/editado, foi adicinada uma navegação para separar as informações do conteúdo  (dados padrões, categorização, datas de publicação/expiração) deixando a edição bem + simples.&lt;/li&gt;&lt;li&gt;Vários métodos AVAX para edição dos conteudo tornando a experiencia do uso do CMS muito mais rápida.&lt;/li&gt;&lt;/ul&gt;Está utilizando o Zope 2.10 mas fazendo uso de algumas coisas do zope3, que segundo o Sidnei, vai deixar de existir como servidor de aplicações e ppassará a ser uma biblioteca a ser integrada no zope atual.&lt;br /&gt;&lt;br /&gt;No geral,achei ele bem mais "legal" de trabalhar, mas não fui utilizei muito ele&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1819324405537779447-6183513718950654997?l=blog.mdpetry.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.mdpetry.net/feeds/6183513718950654997/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=1819324405537779447&amp;postID=6183513718950654997' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1819324405537779447/posts/default/6183513718950654997'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1819324405537779447/posts/default/6183513718950654997'/><link rel='alternate' type='text/html' href='http://blog.mdpetry.net/2007/08/plone-3-lanado-finalmente.html' title='Plone 3 lançado (finalmente!)'/><author><name>Marcos Daniel Petry</name><uri>http://www.blogger.com/profile/13496416580634204340</uri><email>marcospetry@gmail.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='12634896755086197400'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1819324405537779447.post-3027712542159806760</id><published>2007-08-09T14:34:00.000-03:00</published><updated>2007-08-10T17:31:25.817-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><title type='text'>mootolls e beautiful soup</title><content type='html'>Capturar informações de páginas html é uam tarefa realmente simples com duas ferramentas que estou utilizando ultimamente, que são o mootolls e beautifulSoup:&lt;br /&gt;&lt;br /&gt;O &lt;a href="http://www.crummy.com/software/BeautifulSoup/index.html"&gt;BeautifulSoup&lt;/a&gt; mapeia qualquer código html, por mais desorganizado que seja em uma árvode de dados, sendo posssivel retirar informações de qualquer tag desejada.&lt;br /&gt;&lt;br /&gt;Já o &lt;a href="http://mootools.net/"&gt;mootols&lt;/a&gt; promete faer algo parecido, as do lado do cliente (utilizando DOM), na verdade, na minha opinião claro, ele é um &lt;a href="http://www.prototypejs.org/"&gt;prototype&lt;/a&gt; melhorado, com muitas funções ajax prontas para utizar e criar efeitos e recusos com poucas linahs de código javascript...&lt;br /&gt;&lt;br /&gt;vale a pena dar uma olhada em ambos!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1819324405537779447-3027712542159806760?l=blog.mdpetry.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.mdpetry.net/feeds/3027712542159806760/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=1819324405537779447&amp;postID=3027712542159806760' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1819324405537779447/posts/default/3027712542159806760'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1819324405537779447/posts/default/3027712542159806760'/><link rel='alternate' type='text/html' href='http://blog.mdpetry.net/2007/08/mootolls-e-beautiful-soup.html' title='mootolls e beautiful soup'/><author><name>Marcos Daniel Petry</name><uri>http://www.blogger.com/profile/13496416580634204340</uri><email>marcospetry@gmail.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='12634896755086197400'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1819324405537779447.post-7789973840055910887</id><published>2007-08-06T10:07:00.000-03:00</published><updated>2007-08-06T10:32:55.011-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='unix'/><title type='text'>Auto complete no Vim p/ Python</title><content type='html'>Para tirar as traças do meu blog, um pequeno tutorialzinho para mtrabalhar com Vim + Python. O que é muito util para quem gosta de trabalhar direto na shell e tb gosta de utilizar os funções dum pydev da vida... a única diferença é que en vez de utilizar CTRL+espaço, vamos usar apenas um TAB para completar om os dados da função.&lt;br /&gt;&lt;br /&gt;primeiro crie um arquivo chamado .pythonrc no home do usuario, de permissão de execução, e coloque os seguinte:&lt;br /&gt;&lt;code&gt;import readline&lt;br /&gt;import rlcompleter&lt;br /&gt;readline.parse_and_bind('tab: complete')&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;agora edite o arquivo .bashrc e edicone no final do arquivo o seguinte:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;PYTHONSTARTUP="$HOME/.pythonrc"&lt;br /&gt;export PYTHONSTARTUP&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;pronto! restarte a shell e execute o interpretador python:&lt;br /&gt;&lt;br /&gt;&lt;code&gt; &gt;&gt;&gt; var = "ola"&lt;br /&gt;&gt;&gt;&gt; var.(TAB)(TAB)&lt;br /&gt;var.__add__           var.__reduce_ex__     var.join&lt;br /&gt;var.__class__         var.__repr__          var.ljust&lt;br /&gt;var.__contains__      var.__rmod__          var.lower&lt;br /&gt;var.__delattr__       var.__rmul__          var.lstrip&lt;br /&gt;var.__doc__           var.__setattr__       var.partition&lt;br /&gt;var.__eq__            var.__str__           var.replace&lt;br /&gt;var.__ge__            var.capitalize        var.rfind&lt;br /&gt;var.__getattribute__  var.center            var.rindex&lt;br /&gt;var.__getitem__       var.count             var.rjust&lt;br /&gt;var.__getnewargs__    var.decode            var.rpartition&lt;br /&gt;var.__getslice__      var.encode            var.rsplit&lt;br /&gt;var.__gt__            var.endswith          var.rstrip&lt;br /&gt;var.__hash__          var.expandtabs        var.split&lt;br /&gt;var.__init__          var.find              var.splitlines&lt;br /&gt;var.__le__            var.index             var.startswith&lt;br /&gt;var.__len__           var.isalnum           var.strip&lt;br /&gt;var.__lt__            var.isalpha           var.swapcase&lt;br /&gt;var.__mod__           var.isdigit           var.title&lt;br /&gt;var.__mul__           var.islower           var.translate&lt;br /&gt;var.__ne__            var.isspace           var.upper&lt;br /&gt;var.__new__           var.istitle           var.zfill&lt;br /&gt;var.__reduce__        var.isupper&lt;/code&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1819324405537779447-7789973840055910887?l=blog.mdpetry.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.mdpetry.net/feeds/7789973840055910887/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=1819324405537779447&amp;postID=7789973840055910887' title='2 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1819324405537779447/posts/default/7789973840055910887'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1819324405537779447/posts/default/7789973840055910887'/><link rel='alternate' type='text/html' href='http://blog.mdpetry.net/2007/08/auto-complete-no-vim-p-python.html' title='Auto complete no Vim p/ Python'/><author><name>Marcos Daniel Petry</name><uri>http://www.blogger.com/profile/13496416580634204340</uri><email>marcospetry@gmail.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='12634896755086197400'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>2</thr:total></entry></feed>