<?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-30223397</id><updated>2011-12-15T01:07:11.015-02:00</updated><title type='text'>lucmult</title><subtitle type='html'>Este é o meu Blog onde prentendo manter minhas anotações e comentários dos meus estudos.
&lt;br&gt;
Será principalmente sobre Python e algumas outras ferramentas/programas livres. 
&lt;br&gt;
Talvez eu comente alguma coisa sobre política mas esse não será o foco do meu Blog.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://lucmult.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30223397/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://lucmult.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Luciano Pacheco</name><uri>http://www.blogger.com/profile/02451770121066432737</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>2</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-30223397.post-115348975174947667</id><published>2006-07-21T10:00:00.000-03:00</published><updated>2006-07-25T00:07:44.493-03:00</updated><title type='text'>Primeira Colaboração de Código ! :)</title><content type='html'>Semana passada surgiu uma dúvida na lista &lt;a href="http://br.groups.yahoo.com/group/python-brasil/"&gt;python-brasil&lt;/a&gt; ,&lt;br /&gt;&lt;a href="http://thread.gmane.org/gmane.comp.python.brasil/18907/focus=18929"&gt; manipulação de datas com o pymssql&lt;/a&gt; e como eu tenho interesse na utilização de Python com o MS-SQL dei bastante atenção à dúvida, gerando &lt;strong&gt; minha primeira colaboração com código a um projeto Open Source. &lt;/strong&gt;&lt;br /&gt;&lt;h2&gt; O Problema &lt;/h2&gt;Em um comando INSERT desejava-se inserir uma data no banco de dados.&lt;br /&gt;&lt;br /&gt;No Python 2.4 temos o objeto &lt;strong&gt;datetime&lt;/strong&gt; para trabalhar com datas, porém o driver de acesso ao banco (&lt;strong&gt;pymssql&lt;/strong&gt;) não reconhece esse tipo e isso nos obriga a converter a data para &lt;strong&gt;string&lt;/strong&gt; antes de enviar ao &lt;strong&gt;pymssql&lt;/strong&gt;.&lt;br /&gt;&lt;br /&gt;Obviamente essa conversão é uma responsabilidade do driver &lt;strong&gt;pymssql&lt;/strong&gt;.&lt;br /&gt;&lt;br /&gt;Simulei o erro com esse código:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;&gt;&gt;&gt; import pymssql&lt;br /&gt;&gt;&gt;&gt; pymssql.__version__&lt;br /&gt;&gt;&gt;&gt; from datetime import datetime&lt;br /&gt;&gt;&gt;&gt; con = pymssql.connect(host='server', user='usuario', password='senha', database='base')&lt;br /&gt;&gt;&gt;&gt; cur = con.cursor()&lt;br /&gt;&gt;&gt;&gt; cur.execute('insert into PrazoLog(Data) values(%s)',&gt;&gt;&gt;                             [datetime(2006, 7, 20, 11, 6, 14)])&lt;br /&gt;&gt;&gt;&gt; con.commit()&lt;/code&gt;&lt;br /&gt;&lt;h2&gt; Contornando o Problema &lt;/h2&gt;Após eu conseguir simular o erro na minha máquina fui investigar como contornar o erro, e graças ao fato do Python ser executado a partir dos fontes eu pude ler o código do pymssql que estava instalado na minha máquina sem ter que consultar o site, repositórios ou qualquer outro local.&lt;br /&gt;&lt;br /&gt;Novamente graças ao Python executar os fontes, pude fazer alterações nos fontes do pymssql e simplemente testar. Obviamente como não desenvolvo constantemente em Python fiz meus testes e debugs de forma bem artesanal (usando &lt;strong&gt;print&lt;/strong&gt;s).&lt;br /&gt;&lt;br /&gt;Apenas consultando o e-mail com o problema e os arquivos que já estavam na minha máquina consegui chegar em um patch que permitia contornar o problema de forma simples rápida e ao meu ver bem feita.&lt;br /&gt;&lt;br /&gt;Tomei alguns cuidados que achei importante, como tentar não adicionar mais uma dependência ao &lt;strong&gt;pymssql&lt;/strong&gt;. A versão do pymssql que eu disponho não depende do módulo &lt;strong&gt;datetime&lt;/strong&gt; e como eu sabia que esse módulo foi incorporado somente na versão 2.4 não queria adicionar essa dependência.&lt;br /&gt;&lt;br /&gt;Lembrei-me, então, do &lt;strong&gt;&lt;i&gt;duck typing&lt;/i&gt;&lt;/strong&gt;. Como eu queria apenas o método &lt;strong&gt;timetuple&lt;/strong&gt; da classe &lt;strong&gt;datetime.datetime&lt;/strong&gt;. Apenas verifiquei se o objeto tem o método e tendo-o eu executo-o.&lt;br /&gt;&lt;br /&gt;Funcionou que foi uma beleza :), testei nas 3 versões do MS-SQL que eu tenho aqui na empresa (7.0, 2000, 2005) e funcionou. Fiquei empolgado e eufórico! Mandei a minha correção para a lista e o Girão, que é quem teve o problema, falou que funcionou beleza e gostou da correção.&lt;br /&gt;&lt;br /&gt;&lt;h2&gt; Colaborando com a Comunidade &lt;/h2&gt;Aproveitando a euforia e a "aprovação" do Girão fui a página do projeto para enviar a minha proposta de patch. O projeto está no &lt;a href="http://sourceforge.net/projects/pymssql"&gt; sourceforge.net &lt;/a&gt;, dei uma olhada no Fórum e todas as mensagens &lt;span style="font-weight: bold;"&gt;não&lt;/span&gt; recebiam respostas :( e não achava nenhum link do tipo "reporte um bug".&lt;br /&gt;&lt;br /&gt;Mas navegando pelo site do projeto achei uma nota sobre a dependência do módulo &lt;strong&gt;datetime&lt;/strong&gt; e achei bem estranha. Então fui verificar os fontes, nos fontes da minha máquina não via nada que levasse ao módulo &lt;strong&gt;datetime&lt;/strong&gt;, então fui consultar o repositório CVS.&lt;br /&gt;&lt;br /&gt;Qual não foi minha surpresa quando a versão do CVS revelou-me que a dependência era justamente para solucionar o mesmo problema que eu tinha solucionado :S . Fiquei meio triste, pois pensei, re-invetei a roda, mas fiquei contante pois ainda achava minha solução mais adequada por não adicionar a tão falada dependência.&lt;br /&gt;&lt;br /&gt;Apelei e mandei o patch direto para os 2 e-mails de desenvolvedores que eu achei no site.&lt;br /&gt;&lt;br /&gt;Após 4 dias o Andrzej Kukula, um dos desenvolvedores, me respondeu dizendo que o meu patch seria incorporado no projeto! :D A empolgação foi total !&lt;br /&gt;&lt;br /&gt;&lt;h2&gt; Moral da História &lt;/h2&gt; &lt;ol&gt;   &lt;li&gt; O Python facilita a leitura e a depuração dos fontes &lt;/li&gt;&lt;br /&gt;&lt;li&gt; Sempre verificar a versão do CVS/SVN &lt;/li&gt;&lt;br /&gt;&lt;li&gt; Colaborar com algum projeto não é tão difícil assim&lt;br /&gt; &lt;ul&gt; &lt;strong&gt; Precisa-se de: &lt;/strong&gt;&lt;br /&gt;    &lt;li&gt; um pouco de interesse &lt;/li&gt;&lt;br /&gt;    &lt;li&gt; um pouco de experiência para saber o que esperar de um módulo/biblioteca/framework, pois para mim (e para o Girão também) a conversão de tipo era função do módulo pymssql &lt;/li&gt;&lt;br /&gt;    &lt;li&gt; um pouco de inglês &lt;/li&gt;&lt;br /&gt;    &lt;li&gt; o que eu menos precisei foi conhecer bem a linguagem - &lt;i&gt; eu acho&lt;/i&gt;&lt;/li&gt;&lt;br /&gt; &lt;/ul&gt;   &lt;/li&gt;   &lt;li&gt; e por último, mas não menos importante, colaborar é empolgante e divertido, principalmente em Python ;) &lt;/li&gt;&lt;br /&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30223397-115348975174947667?l=lucmult.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lucmult.blogspot.com/feeds/115348975174947667/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30223397&amp;postID=115348975174947667' title='9 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30223397/posts/default/115348975174947667'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30223397/posts/default/115348975174947667'/><link rel='alternate' type='text/html' href='http://lucmult.blogspot.com/2006/07/primeira-colaborao-de-cdigo.html' title='Primeira Colaboração de Código ! :)'/><author><name>Luciano Pacheco</name><uri>http://www.blogger.com/profile/02451770121066432737</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>9</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30223397.post-115135613378969943</id><published>2006-06-26T18:08:00.000-03:00</published><updated>2006-06-27T01:31:11.463-03:00</updated><title type='text'>Post de inaguração</title><content type='html'>&lt;span style="font-weight: bold;font-size:130%;" &gt;O Começo&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:100%;"&gt;No fim de semana passado eu e um colega de faculdade fomos estudar para a prova semestral de Web Service.&lt;br /&gt;&lt;br /&gt;Após muita enrolação e algum estudo conseguimos fazer um exemplo de um servidor de Web Service e um Client de Web Service em Java. Bom, conseguimos não, o eclipse fez para gente, mas estava tudo conforme as aulas dadas. ;)&lt;br /&gt;&lt;br /&gt;Obviamente fui tentar fazer a mesma coisa em Python, depois de algumas passagens pelo Google e 2 erros cruciais de digitação consegui fazer o client e o server também em Python.&lt;br /&gt;&lt;br /&gt;Ai eu fui exibir o Python para o Marcelo (meu colega de faculdade), ele achou bem legal e soltou a seguinte frase "Ow, por que você não faz um blgo com essas coisas?".&lt;br /&gt;&lt;br /&gt;Eu respondi que não porque ando muito sem tempo e blá, blá, blá... Mas aquilo ficou na minha cabeça e enquanto eu não vim aqui criar o blog eu não sosseguei.&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;A proposta&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:100%;"&gt;A minha idéia para o blog é documentar e comentar meus estudos que são na maioria dos casos sobre Python, mas tem algumas outras coisas, como PostgreSQL por exemplo.&lt;br /&gt;&lt;br /&gt;Talvez eu comente algo sobre política também, pois eu gosto de política e esse ano tem eleição então devo colocar algumas idéias por aqui.&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;A Falta de experiência&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:100%;"&gt;Não tenho muito experiência com blogs e seus detalhes, mas dei uma lida aqui na ajuda do Blogger para começar.&lt;br /&gt;&lt;br /&gt;Por exemplo o &lt;a href="http://dirceu.info/blog/"&gt;Dirceu&lt;/a&gt; já me "linkou" no seu blog, como eu sou um leitor do blog dele também eu tentei "linkar" ele aqui no meu blog, assim como outros blogs que eu leio.&lt;br /&gt;&lt;br /&gt;Como na ajuda do Blogger não ficou muito claro como fazer, fiz de um jeito que achei meio "força bruta" fui no template do meu blog e adiconei o código HTML com os links para os devidos blogs.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;Periodicidade dos Posts &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:100%;"&gt; A princípio pretendo uma meta de pelo menos um post por semana, que é mais ou menos o reflexo de um ciclo de estudo que eu faço.&lt;br /&gt;&lt;br /&gt;Começo com umas pesquisas no meio da semana e no fim de semana dou uma detalhada um pouco maior, como conclusão do estudo prentendo fazer um post aqui.&lt;br /&gt;&lt;br /&gt;Obviamente essa é uma meta, mas como eu tenho visto a maioria dos blogs que leio com uma periodicidade de post baixa, já fico com impressão que é uma meta difícil de cumprir.&lt;br /&gt;&lt;br /&gt;Bom por hoje é só que já ficou bem longo, mas acho que eu consegui resumi o que eu queria dizer no meu "discurso de inauguração". :)&lt;br /&gt;&lt;br /&gt;Até mais.&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/30223397-115135613378969943?l=lucmult.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lucmult.blogspot.com/feeds/115135613378969943/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30223397&amp;postID=115135613378969943' title='6 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30223397/posts/default/115135613378969943'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30223397/posts/default/115135613378969943'/><link rel='alternate' type='text/html' href='http://lucmult.blogspot.com/2006/06/post-de-inagurao.html' title='Post de inaguração'/><author><name>Luciano Pacheco</name><uri>http://www.blogger.com/profile/02451770121066432737</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>6</thr:total></entry></feed>
