python-chuck-norris: powerful assertions

If your python project is in trouble, the deadline is close and you are unable to make your tests pass, wait no longer, Chuck Norris will help you out.

Just install python-chuck-norris package on pypi:

sudo pip install python-chuck-norris

Or directly from the Github project:

git clone git://github.com/ricobl/python-chuck-norris.git
cd python-chuck-norris
sudo python setup.py install

Then just use Chuck’s powerful assertions to make your tests pass, like this:

import chuck
def test_chuck_power():
    chuck.assert_true(False) # passes
    chuck.assert_true(True) # passes
    chuck.assert_true(None) # passes
    chuck.fail() # raises RoundHouseKick exception
Anúncios

Formatação de data na língua local no Python

Outro dia um amigo que trabalha com Java e está aprendendo Python perguntou como formatar uma data no Python usando a língua local. Fiz algumas tentativas na hora mas não consegui ajudá-lo.

Mas isso me incomodou, e na tentativa de salvar uma boa alma do Java, tentei novamente e encontrei a solução:

import locale
from datetime import datetime
locale.setlocale(locale.LC_TIME, 'pt_BR.utf8')
print datetime.now().strftime('%A %d de %B de %Y, %H:%M:%S')

É preciso que o locale escolhido esteja instalado no sistema, há um comando para encontrar os locales disponíveis:

locale -a

Links úteis:

Instalando python-lxml e coverage no Ubuntu

Uma referência para mim mesmo (e para quem possa interessar), alguns módulos do python são compilados e para isto precisam das suas extensões em C.

Alguns deles são o lxml e o coverage.

Para instalar o lxml:

sudo apt-get install cython libxml2-dev libxslt1-dev
sudo pip install lxml

Para o coverage:

# Se ainda não instalou o cython
sudo apt-get install cython
sudo pip install coverage

Desligar caps-lock automaticamente no Vim

Estou usando o Vim mais a cada dia e existe algo que vem me incomodando há algum tempo.

Para escrever trechos em maiúsculas, gosto de ativar o caps-lock e quando saio do modo de edição para o modo de comando as maiúsculas têm funções diferentes, então, por exemplo, ao invés de descer uma linha com o j eu executo a junção das linhas com o J.

Pensando nisso busquei uma maneira de desativar o caps-lock sempre que sair do modo de edição. Então encontrei este exemplo usando o módulo python virtkey.

Fiz um pequeno script e utilizei no meu vim.

Muita gente prefere desabiltar o caps-lock no sistema, mas este não é o meu caso.

Frix – Framework em PHP

Coloquei no meu Github o Frix, um framework em PHP baseado no Django (em Python).

Sempre vi um pouco de dificuldade em vender projetos com Django, os clientes costumam ter uma hospedagem que não suporta Python e oferecem resistência em trocar, ou têm receio de investir em uma solução que usa uma linguagem “exótica”. Pensando nisso, há algum tempo atrás desenvolvi o Frix, tentando aplicar algumas boas idéias do Django no PHP.

O projeto foi pouco utilizado e ficou encostado por muito tempo, mas como acredito que existem coisas que podem ser aproveitadas, resolvi liberar o código antes que caísse no meu próprio esquecimento.

Algumas das principais features:

  • Admin (scaffolding): criar, listar, editar e remover objetos:
    • suporte a hierarquia (árvores);
    • ordenação manual;
    • edição de objetos relacionados (inline);
  • Mapeador objeto-relacional: modelos de dados, abstração de consultas:
    • com suporte a MySQL;
  • Roteador de URLs com expressões regulares;
  • Sistema de templates em PHP puro:
    • suporte a herança e blocos;
    • aviso: a performance deixa a desejar;
  • Tratamento de Erros;

Para testar:

  1. clonar o projeto:
  2. git clone git://github.com/ricobl/frix.git
  3. criar o arquivo index.php:
  4. <?
    // Replace the path according to your setup
    require_once('path/to/frix/main.php');
    Frix::start();
    ?>
  5. criar o arquivo config.php:
  6. <?
    $config['DB_URL'] = 'mysql://user:pass@localhost/database';
    ?>
  7. criar o banco de dados no mysql, usando os SQLs das apps para criar as tabelas necessárias.

De qualquer forma, não pretendo manter o projeto, faz algum tempo que não trabalho com PHP e já não o acho mais tão divertido. Um dos motivos que me fez deixá-lo de lado foi a fraca orientação à objetos e dificuldade de instrospecção do PHP.

Gostaria de ouvir as opiniões sobre o framework e mais ainda se alguém achar algum uso para ele ou algum de seus módulos.

Novo portal Rádio Banda B

UPDATE 12/03/2010: eu não trabalho com a equipe da rádio, apenas trabalhei no desenvolvimento do portal. Para falar com a equipe, acesse o portal.

UPDATE 14/07/2010: É engraçado que mesmo depois de colocar o aviso acima continuo recebendo pedidos dos mais variados em relação à rádio. Pessoas elogiando os programas, procurando casa para alugar, comprar, entre outros.

UPDATE 30/08/2010: Desisti! Comentários fechados.

Está no ar mais um portal em que eu tive o prazer de trabalhar aqui na Orangotoe: Rádio Banda B. A rádio é líder no seguimento AM em Curitiba e Região Metropolitana, seu conteúdo é voltado para a informação e entretenimento da comunidade, contendo trechos de programas da rádionotíciasblogs, agenda de programação e vários outros recursos.

O mais interessante deste projeto foi o modo em que foi desenvolvido, usando uma mistura de Scrum com XP. Foi aplicada uma série de boas práticas como desenvolvimento orientado a testes, programação em par e aplicações reutilizáveis. Vários módulos e aplicações de código aberto foram utilizados e outros criados internamente que poderão ser reaproveitados em novos projetos. Tudo isso contribuiu para que o processo fosse mais fluido e rápido.

Um destaque para a aplicação de calendário que suportou o agendamento e recorrência da programação da rádio. Um agradecimento especial ao Gustavo Niemeyer pelo módulo python-dateutil com as classes rrule e rruleset que foram fundamentais para o funcionamento desta aplicação.

Para saber mais basta visitar o portal! Estarei aqui para responder qualquer pergunta ou comentário, qualquer opinião é bem vinda!

Para ter um registro histórico, aqui vai um screenshot da home:

Screenshot da home do portal Rádio Banda B AM 550

Pesquisa sobre a Comunidade PythonBrasil

O Henrique Bastos vai estar na PyCon deste ano, em Atlanta nos Estados Unidos, e vai apresentar uma palestra “Small acts make great revolutions”.

Para isso está pedindo colaboração para traçar um perfil da comunidade Python no Brasil através de uma pesquisa. Se você é desenvolvedor, faça sua parte e preencha a pesquisa, é rápido e indolor. Não precisa trabalhar com Python, o perfil é geral.

Pesquisa:
http://henriquebastos.wufoo.com/forms/vamos-divulgar-nossa-comunidade-python-na-pycon/

Post inicial:
http://henriquebastos.net/2010/01/08/ajude-a-mostrar-a-pythonbrasil-na-pycon-2010/

Bombando:
http://henriquebastos.net/2010/01/13/a-pesquisa-sobre-a-comunidade-pythonbrasil-esta-bombando/

Como não vi nada no feed da Django Brasil, tomei a liberdade de “taguear” o post para aparecer lá também, sei que tem gente que acompanha novidades do Django mas não do Python em geral.