IRPF 2011 no Linux: As informações do recibo foram corrompidas após sua gravação, no registro MC

Em 2010, eu havia falado sobre um problema ao tentar imprimir o recibo da declaração do imposto de renda no Linux.

A nova versão do programa continua com o mesmo erro, e desta vez além de corrigir os caracteres inválidos, foi preciso salvar o arquivo usando outra codificação: utf8.

Vou repetir os passos aqui pra facilitar:

  1. abrir o arquivo .REC dentro de ~/ProgramasRFB/irpf2010/transmitidas
  2. trocar caracteres inválidos (geralmente representados por um símbolo com uma interrogação)
  3. garanta que a quebra de linha seja no formato unix (update 1/04/12, dica do Marcelo)
    • no vim: set fileformat=unix
  4. salvar usando codificação (encoding) UTF-8
    • usando o gedit: Arquivo > Salvar Como (ou Shift+Ctrl+S) e selecionar a codificação UTF-8
    • usando o vim: set fileencoding=utf-8 | w

Feito isto tente imprimir novamente.

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

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

Desativando animações no jQuery (jQuery.fx.off)

Animações em Javascript usando o jQuery podem ser muito interessantes, mas dificultam um pouco ao escrever testes, é preciso usar setTimeouts ou outras artimanhas que normalmente não estão no foco do que se deseja garantir ao escrever um teste.

Em busca de uma solução para este problema, descobri que se pode desabilitar completamente as animações no jQuery usando a propriedade jQuery.fx.off:

jQuery.fx.off = true;

Desta forma, qualquer animação atingirá imediatamente o seu estado final, sem que seja preciso mudar a sua implementação.

Desabilitando as animações e removendo as chamadas de setTimeout em uma suite de 47 testes, reduzi o tempo de execução de 6 segundos para 800 milisegundos e, mais importante ainda, me livrei de resultados intermitentes rodando os testes.

Instalando nodejs e npm no Ubuntu sem sudo

O npm, instalador de pacotes do nodejs, recomenda que não seja instalado usando sudo, pois você acabaria instalando código de terceiros, com livre acesso ao seu sistema de arquivos.

É mais fácil instalar o npm sem sudo se o próprio node também for instalado assim.

Instalando o node sem sudo (fonte):

# Clone do projeto
git clone http://github.com/ry/node.git
cd node
# Cria e configura o prefixo que será usado no script de instalação
mkdir ~/opt
export PREFIX=~/opt
# Instala sem sudo
./configure
make
make install
# Adiciona o novo bin ao path (onde ficará o executável do node)
echo 'export PATH=~/opt/bin:${PATH}' >> ~/.bashrc

Eu estava tomando o erro abaixo ao tentar instalar o npm:

TypeError: Object #<an EventEmitter> has no method 'on

Então encontrei este post sugerindo a instalação de algumas bibliotecas:

sudo apt-get install g++ curl libssl-dev apache2-utils

Feito isto basta instalar o npm:

curl http://npmjs.org/install.sh | sh

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.

Seguir

Obtenha todo post novo entregue na sua caixa de entrada.