Parallel Python

Embora seu computador possa ter dois, quatro, oito ou até dezesseis núcleos de processamento, o Python só usa um deles de cada vez (mesmo trabalhando com threads). Parallel Python resolve o problema. Um exemplo simples, para você entender como funciona: ppserver = pp.Server(ppservers=()) job1 = ppserver.submit(funcao_demorada, (), (), ()) job2 = ppserver.submit(funcao_demorada, (), (), ())… Continue reading…

Rodando comandos do sistema operacional com cache no Python

Código simples, mas que pode ser útil para alguém não ter que escrevê-lo de novo (arquivo runcached.py): import os,time cachepath=’cache’ timeout=360   def runcached(cmd):   filename=os.path.join(cachepath,str(hash(cmd)))   if os.path.isfile(filename):     if time.time()-os.path.getmtime(filename)<timeout:       return open(filename).read()   t=os.popen(cmd).read()   open(filename,’w’).write(t)   return t A função runcached roda comandos do sistema operacional, e faz… Continue reading…

Instalando o CouchDB e o Python-CouchDB no Ubuntu 8.10 (Intrepid)

Não a versão do repositório, mas a mais nova. Só a sequência de comandos, que eu estou com pressa agora: sudo apt-get install build-essential erlang libicu38 libicu-dev libmozjs-dev automake autoconf libtool help2man libcurl-ocaml-dev subversion python-setuptools mkdir ~/src cd ~/src svn co http://svn.apache.org/repos/asf/couchdb/trunk couchdb cd couchdb ./bootstrap && ./configure && make && sudo make install sudo… Continue reading…

Fuja da complexidade

Abri o OpenOffice Writer, mandei gravar uma macro, escrevi “teste”, selecionei e pintei de vermelho. Olha o código gerado: sub Main rem ———————————————————————- rem define variables dim document as object dim dispatcher as object rem ———————————————————————- rem get access to the document document = ThisComponent.CurrentController.Frame dispatcher = createUnoService(“com.sun.star.frame.DispatchHelper”) rem ———————————————————————- dim args1(0) as new com.sun.star.beans.PropertyValue… Continue reading…

Dicas de shell: testes unitários e commit

Todas as tarefas relacionadas a contrução, teste e publicação de um desenvolvimento de software devem ser automatizadas o máximo possível. Escrever software é interar. Você escreve e testa, escreve e testa, escreve e testa dezenas, às vezes centenas de vezes por dia. As tarefas relacionadas a testar o software, de maneira especial, merecem a automatização… Continue reading…

Acentuação em Português e Expressões Regulares Python

Ao utilizar expressões regulares em Python, por padrão, seu texto é interpretado como uma seqüência de caracteres ASCII comum. Assim, caracteres acentuados são considerados sinais gráficos especiais, e não são capturados como letras. Veja este exemplo: >>> import re >>> print re.sub(r”\b”,”|”,”era uma criança”) |era| |uma| |crian|ç|a| Como você pode ver, o ce-cedilha não é… Continue reading…

Python X Java X Smalltalk

Achei muito interessante este artigo comparando a sintaxe de Smalltalk com Java. Implementei os mesmos exemplos em Python, para que você possa comparar a sintaxe: Problema: cálculo de fatorial def factorialRecursive(n):   if n<0:return 0   if n==0:return 1   return n*factorialRecursive(n-1) Ou assim: def factorialNonRecursive(n):   if n<0:return 0   return reduce(lambda a,b:a*b,[1]+range(1,n+1)) A… Continue reading…

StayValid

O caso é muito comum: você cria um site com um gerenciador de conteúdos qualquer. Por exemplo, um blog WordPress. Você valida o código e o site passa perfeitamente pelo validador. Mas, depois de algum tempo, alguém, você, seu cliente, seu colega, seu cachorro ou seu papagaio fazem um post no blog, ou alteram um… Continue reading…

Um passo além do Akismet

Qualquer um que tenha um blog com comentários dos usuários conhece o problema: spam de comentários. Este blog recebe centenas de comentários por dia sobre assuntos tão diversos quanto viagra ou tramadol, fotos de angelina jolie e britney spears nuas, encontros, jogos online e uma série de outras coisas que não tem absolutamente nada a… Continue reading…