Python multiprocessing – Processamento paralelo fácil

Quem trabalha com Python há algum tempo já sabe das limitações do Global Interpreter Lock, que impede que o interpretador Python rode em dois processadores simultaneamente. Eu nunca precisei fazer processamentos em mais de uma CPU, mas já imagino que essa limitação é bastante chata. Para resolver parcialmente esse problema, foi criado um pacote chamado multiprocessing, que tem como objetivo simular o uso de threads, porém usando processos.

Eu achava que era apenas uma solução meia-boca, mas quando precisei utilizá-la, fiquei surpreso. É muito fácil trabalhar com esse pacote! Se você duvida, veja só:

from multiprocessing import Pool

def processar_alguma_coisa(parametro):
    # processar as informações
    print "Parâmetro = %s" % str(parametro)
p = Pool(processes = 3)
p.apply_async(p, [1,2,3,4,5,6,7,8,9,10])
p.close()
p.join()

Tcharam! Será criado um pool de 3 processos, que executarão a função p passando para cada vez um parâmetro da lista acima.

Funciona muito bem, mesmo no Windows. Usei essa funcionalidade para que meu importador de logs do CVS pudesse ler vários arquivos de uma vez, já que o script passava a maior parte do temp oesperando uma resposta do servidor CVS.

Deixe um comentário

Django + Boletos

Depois de algum tempo sem trabalhar diretamente com o Django, comecei a trabalhar de novo com ele. Estou iniciando um site para o Amor Exigente. Precisava de alguma coisa em Python/Django para gerar boletos bancários. Não encontrei nada feito diretamente para o Django, o que, a princípio, me deixou decepcionado. Felizmente, descobri o PyBoletos, que foi feito para Pylons, porém, foi até fácil fazer a o port para o Django.Eis um exemplo de boleto gerado com ele. Ignore os erros de codificação, eu só colei os exemplos do PyBoletos mas não mudei a codificação.

DJBoleto

O resultado está no endereço http://bitbucket.org/joaomc/djboleto/. Caso você encontre algum problema, por favor, me avise, ou faça um fork do projeto e envie um patch ;)

Comentários (2)

Dica de Aplicativo: Console2

Programa: Console2

Tela Console2

Esse é para quem utiliza bastante a linha de comando no Windows (urgh, é ruim, mas tudo bem). Infelizmente, a linha de comando no Windows não é grande coisa. Mesmo o advento do Powershell ajuda menos do que deveria. Afinal, o problema não está só no scripting pobre, no auto-completar tosco, na péssima manipulação de histórico e de comandos recentes. O problema é que não o Windows não inclui uma interface como a dos navegadores não-arcaicos, podendo ter uma janela com várias abas. Eu digo não inclui porque você pode baixar o Console2, que faz exatamente isso. Eu já cheguei a ter umas 8 janelas de “Prompt de Comando”, e esse aplicativo bem pequeno facilitou muito meu trabalho.

O melhor de tudo é que você pode dar um nome diferente para cada aba, aí você não precisará mais procurar qual janela tem aquele comando que você está procurando. Não é assim um Screen, mas já está bom para o gasto.

Deixe um comentário

Dica de Aplicativo: Launchy

Programa: Launchy

Se você, como eu, tem uma imensa quantidade de aplicativos instalados em seu computador, deve ser perder em meio a tantos atalhos, assim como eu, e deve achar um saco procurar o menu Iniciar para rodar os programas. Até os atalhos da área de trabalho tornam-se difíceis de localizar depois de um certo tempo. Felizmente, encontrei um aplicativo que torna essa tarefa muito mais fácil: O Launchy.

Com o Launchy instalado, você só precisa pressionar o atalho dele, o padrão é ALT+Espaço. Então, abre-se uma pequena janela, onde você digita uma parte do título do programa, como no exemplo abaixo:

Tela do Launchy

Ao digitar “Word”, ele automaticamente preenche com o primeiro atalho que contenha “Word”. E, o que é melhor, ele tem um sistema bem espertinho para pesquisar os atalhos, você pode digitar só uma pequena parte do mesmo:

Tela Launchy - 2

Resumindo: você não precisará mais procurar por atalhos! Recomendo fortemente este programinha. Depois que você se acostuma com ele, não consegue mais ficar sem.

Deixe um comentário

Tirinha antiga do Dilbert

dilbert

Deixe um comentário

Síndrome de Estocolmo em TI

Você sabe o que é Síndrome de Estocolmo? Segundo o site How Stuff Works:

Muita gente faz idéia razoável do significado do termo síndrome de Estocolmo tomando por base sua origem. Em 1973, dois homens invadiram o Kreditbanken em Estocolmo, Suécia, com a intenção de roubá-lo. Quando a polícia chegou ao local, os assaltantes trocaram tiros com os policiais, e em seguida fizeram reféns. A situação perdurou por seis dias, com os dois assaltantes armados mantendo quatro reféns em um cofre do banco, durante parte do tempo com explosivos presos ao corpo e em outros momentos com cordas em torno dos pescoços. Quando a polícia tentou resgatar os reféns, foi impedida por eles mesmos; os reféns repeliram o ataque dos policiais, e atribuíram a culpa pela situação à polícia e não aos raptores. Um dos reféns libertados criou um fundo para cobrir os custos da defesa judicial dos raptores. Assim nasceu a “síndrome de Estocolmo”, e psicólogos de todas as partes do mundo passaram a dispor de um termo para definir esse clássico fenômeno do relacionamento entre raptor e prisioneiro.

Acredito que muitos profissionais de TI acabam sofrendo de Síndrome de Estocolmo após anos aprisionados a ferramentas ruins ou obsoletas. Ao invés de não gostarem da ferramenta, acabam defendendo-a, até com unhas e dentes. Imaginam que o único motivo pelo qual a ferramenta é considerada obsoleta é porque os outros não sabem utilizá-la. Então, mesmo sendo reféns da ferramenta, mesmo tendo que trabalhar para a ferramenta (quando deveria ser o inverso, não é mesmo?), apegam-se a ela.

No Serpro, é utilizado o CVS para controle de versão. Eu não gosto do CVS. Considero-o um sistema não simplesmente obsoleto, mas sim arcaico. Não faz sentido utilizá-lo sendo que já há o Subversion, maduro, confiável e em plena atividade. Alguns poderiam dizer que é melhor do que usar o SourceSafe, porém, o SourceSafe não é parâmetro por ser pior do que nada. Infelizmente, o Serpro usa o CVS, e não tenho como escapar. Não me entendam mal, não estou dizendo que não gosto do Serpro, que o Serpro é uma porcaria. Há muitas coisas positivas. O processo existe e é levado a sério, o que faz com que as pessoas possam se concentrar nas suas tarefas ao invés de tentarem adivinhar o que precisam fazer o tempo todo. Portanto, não entendam esse post como “Serpro SUX”, mesmo porque, se eu achasse isso, já não estaria mais trabalhando no Serpro. Porém, não há como concordar com a utilização de um sistema que já considerava arcaico há 5 anos.

Há vários motivos pelos quais o CVS já é obsoleto:

  • Revisões por arquivo: Isso é simplesmente inaceitável. Todo controle de versão moderno utiliza changesets, que fazem muito mais sentido do ponto de vista do processo de desenvolvimento. Afinal, você não costuma alterar um arquivo por vez. Você trabalha em vários ao mesmo tempo.
  • Intimida o utilizador: Se você precisa usar o CVS, já trabalha com um certo receio de fazer commits. Afinal, se você enviar um monte de alterações erradas, pode ter sérios problemas. Já no Subversion, tudo o que você precisa fazer é reverter as alterações das revisões incorretas. Quando a ferramenta intimida, ela inibe o trabalho.
  • Verificação de alterações: Vamos supor que você mexeu em 15 arquivos ao mesmo tempo, há 1 ano atrás. Você precisa se lembrar em quais arquivos exatamente você realizou as alterações. Pois é, no CVS a porca torce o rabo. Já no Subversion, você verifica o log da revisão e todos os arquivos alterados já estão lá juntinhos. Ou seja, a resposta para uma pergunta “O que fizeram para corrigir o bug 554443?” é respondida rapidamente. Isso já me salvou várias vezes.
  • Gerenciamento de tags: As tags do CVS o tornam meramente suportável ao invés de inútil. Porém, em repositórios CVS grandes, gerar uma tag para todos os arquivos pode levar *MUITO* tempo. O SVN não tem tags diretamente, mas a cópia de uma revisão de um diretório para outro diretório no mesmo repositório é uma operação O(1), instantânea. Para atualizar uma tag, basta autalizar o diretório da mesma.
  • Branches: Trabalhar com branches no CVS é uma experiência assustadora. Até o SVN 1.5, a experiência não era lá muito agradável, mas agora o SVN 1.5 já faz algum gerenciamento de branches e merges. Para falar a verdade, quando você trabalha com um sistema de controle de versões distribuído, como Git, Mercurial ou Bazaar, o suporte a branches e merges do SVN passa a ser visto como primário, mas isso é outra história.

O que tudo isso tem a ver com a Síndrome de Estocolo? Ora, já há projetos open-source que estão começando a sofrer as consequências da recusa da migração do CVS para algo melhor. Em projetos internos, o CVS acaba requerendo o gasto de horas para fazer coisas que, em sistemas não-arcaicos, levam minutos. O problema de convencer as pessoas de que é uma excelente idéia migrar para o SVN, por exemplo, é a defesa quase irracional do software anterior. Essa é a Síndrome de Estocolmo em TI. Não acho que isso esteja ocorrendo no Serpro, ao menos não em larga escala. Não há como realizar uma migração dessas da noite para o dia. Porém, eu me pergunto se não há, sim, uma pontinha de Síndrome de Estocolmo em TI nesse caso.

Deixe um comentário

Firefox – Visualizando somente o texto

Você está acessando a Internet no trabalho, mas não quer causar excesso de tráfego? Está acessando a Internet por modem, ou, pior ainda, de uma conexão EDGE? Não se preocupe, há uma extensão do Firefox muito útil para esses casos: o imgLikeOpera. Com ele habilitado, você pode acessar os sites e carregar as imagens somente quando desejar. Os estilos CSS continuam funcionando, então o conteúdo dos portais, por exemplo, ficam intactos

A melhor forma de instalar é pelo próprio Firefox, através do menu Ferramentas -> Opções -> Adicionar -> Digitar imgLikeOpera, pesquisar, e clicar em “Adicionar ao Firefox”.

Deixe um comentário

O papelão do JotaBê

Imagine você o seguinte caso: você está discutindo um assunto prático em uma reunião de trabalho. Algumas das questões relevantes já foram levantadas e discutidas em reuniões anteriores. De repente, uma outra pessoa (que chamarei de Manoel), que não estava presente em reuniões anteriores, decide falar sobre o que já foi dito anteriormente. Ele parece estar tão cheio de si que não aceita que alguém o contrarie. Por mais que tenha alguma razão, não consegue encontrar argumentos, uma vez que não se preparou antes. Quando faltam os tais argumentos, começa a atacar um dos integrantes da reunião, o José. Faz, inclusive, aquelas famosas acusações vazias, palavras jogadas ao vento. Está na cara que ele começa a fazer politicagem, já que não tem nada de útil para dizer naquele momento.

Ora, se você odeia José, achará tudo isso mais ridículo ainda. Afinal, Manoel está agindo como um imbecil, se queimando sem necessidade. Se ele não sabia o que estava dizendo, era melhor ter ficado quieto naquele momento, não é mesmo? Acusar qualquer um acusa. Falar, até papagaio fala.

Pois bem, é o que o Sr. Joaquim Barbosa fez. O pior é que as pessoas caíram na jogadinha tosca dele. Agora, ficam vociferando contra Gilmar Mendes. Não percebem que este não foi afetado pois saiu ganhando. Para mim, Joaquim Barbosa é hipócrita. Um juiz que começa a falar sobre “ir para as ruas” só me faz rir. Acha que sou trouxa? Acha que caio nessa demagogia? Quer aparecer? Coloque uma melancia na cabeça e “vá para as ruas”. Quer fazer algo de útil? Pare de agir como um vocalista chorão de banda emo. Você perde boas oportunidades de ficar quieto e ganha tempo para se informar melhor antes de fazer um papelão como o que fez o JotaBê.

Sinceramente, não sei como nós, brasileiros, ainda caímos na lábia desses senhores, que sempre fazem de conta que vestem suas armaduras reluzentes para lutar contra os poderosos e os malvadões. Se quer fazer algo pelo povo, primeiro não aja como um daqueles senadores que adoram falar que lutam contra a corrupção. Estou cansado de ouvir essa gente falando sem parar.

Deixe um comentário

De volta à ativa!

Eu nem me lembrava mais deste blog! Eu estava querendo retomar um blog e só lembrei hoje que eu ainda possuo um. Atualmente, estou só esperando a convocação para entrar no Serpro. Então, você já sabe como é: clima de despedida para mim. Por mais que eu tente me motivar, é difícil demais!

Mudando um pouco de assunto, coisas que eu aprendi ultimamente:

  • Se eu tiver que manter mais um sistema feito em IntraWeb, eu compro um fuzil e vou atrás de quem teve a infeliz idéia de usar uma porcaria dessas.
  • ASP.NET é legal, mas uma hora enche o saco.
  • As novidades introduzidas no C# são realmente úteis, mas dependem de um conhecimento um pouquinho maior. Vai um pouco contra o “desenvolvimento com rodinhas”.
  • Eu prefiro o desenvolvimento em Linux. Mesmo sendo o .NET 3.5 muito bom, tecnicamente superior ao Java, ainda prefiro o Linux. Não é fanatismo, eu simplesmente prefiro, só isso.

Deixe um comentário

Windows Vista – Da compra ao arrependimento

Eu comprei o Windows Vista. Para ser sincero, foi a primeira edição do Windows que eu comprei. Achei que era hora de ter um Windows legalizado na minha máquina. Não fiz a besteira de tentar usar o Windows Starter Edition, o famoso pega-trouxa. Fiquei coma versão Business. A instalação foi muito fácil. Infelizmente, logo após a instalação, começaram os meus problemas:

Primeiro, tive que instalar drivers para a rede wireless. Até aí tudo bem,  tinha na Internet, baixei em outra máquina. Bastou instalar o driver para que eu conseguisse conectar o computador à minha rede sem fio, certo? Errado. Ele encontrava a rede sem fio, mas não se conectava. Ok, tudo aquilo me encheu o saco, e eu conectei um cabo de rede de uma vez. Depois descobri que o problema está no driver. Ok, não é culpa do Vista.

O segundo problema é a absurda lentidão de quase todas as operações com arquivos. É irritante. Copiar arquivos de uma pasta para outra pode levar muito, muito tempo. Tantos anos desenvolvendo o sistema e é ISSO que têm a me oferecer???

O terceiro problema foi a constante aparição de mensagens de erro de “COM Surrogate”. Ok, o fantástico Windows Vista, que deveria ser “o melhor Windows já visto”, me dá uma bela mensagem de erro a cada cinco minutos. Logo após a instalação.

Quando fui acessar o painel de controle, outro problema: LOGO APÓS A INSTALAÇÃO, o Painel de Controle não funcionava. Tive que reinstalar o Windows, porque não aparecia nenhum erro, nenhum log, nada. Simplesmente a tela não aparecia.

Depois de outros problemas de grátis, sem custo adicional, dei boot no meu Linux, e atualmente só tenho voltado ao Windows para jogar ou para executar algo que seja só para Windows. Atualmente, passo 99% do meu tempo no Linux. Pode ter muitos problemas (como o plugin do Flash, que é ruim no Linux), mas é realmente mais adequado para as minhas necessidades. Uso bastante a linha de comando, e a linha de comando no Windows é uma piada (sei que existe o PowerShell, mas ele é pesado demais).

Conclusão: se você quiser Windows legalizado, não compre o Vista. Ele oferece coisas bonitinhas, mas nada de realmente útil. Fique com o XP. A própria Microsoft parece estar desistindo do Vista, concentrando os esforços no Windows 7. Espero que tenham aprendido a lição: interface bonitinha e campanhas de marketing massivo não são suficientes, é preciso que o novo sistema seja tecnicamente superior.

Deixe um comentário

Posts mais antigos »