import this
Outro dia estava batendo um papo com o Walter Cruz quando ele disse pra eu dar uma espiada no módulo this, sim aquele mesmo, o Zen do Python.
Quando abri meu primeiro pensamento foi “Isso é Russo?!?”, olhando mais de perto percebi que não passa de uma pequena rotina para ROT13.

Resolvi dar uma mexida no código para que receba o stdin, processe e retorne o rot13.
É uma maneira bem interessante e insegura de codificar textos.

Baixe aqui:
Basta dar permissão de execução e jogar em alguma pasta do seu $PATH.
Eu joguei no /usr/bin
Um exemplo de uso:
gabriel@nacao$ cat /etc/apt/sources.list | rot13
ou
gabriel@nacao$ echo “ROT13 Rocks!” | rot13
ou ainda, testando se funciona mesmo:
gabriel@nacao$ cat /etc/apt/sources.list | rot13 | rot13
Assim o segundo pipe codifica e passa para o terceiro pipe, que decodifica.
março 6th, 2007 at 3:31 am
Olha, o comentário pode nao ser petulante ao post mas resolvi por aqui pois é o mais recente:
Recentemente migrei 100% para o Software Livre por vontade própria. Estou começando a programar agora (começando por PHP e futuramente Python) e o Nação Livre foi o blog de melhor conteúdo que eu li durante minhas andanças. Quero parabenizá-los e agradecer (sim, agradecer!) pelo excelente trabalho que vocês vem fazendo em favor do Software Livre.
Ah, coloquei um link do Blog de vocês lá no meu (:
Abraços.
março 6th, 2007 at 4:05 am
É muito satisfatório ver que o que escrevemos está ajudando alguém, compartilhar conhecimento sempre é bom.
O curioso é que decidi aprender Python depois que vi um post num blog que indicava outro post. Software livre é assim, espirito decompartilhamento.
Parabens pela escolha.
[ ]’s
março 6th, 2007 at 4:17 am
Agora só uma curiosidade que talvez você não conheça:
>>> a = “Isso e um texto normal”
>>> b = unicode(a, “rot13″)
>>> print b
Vffb r hz grkgb abezny
Existe um “codec” rot13 na biblioteca padrão do Python
Dê uma olhadinha no diretorio “encodings” da biblioteca padrão do Python. Tem outras coisas interessantes por lá (como o codec zlib, por exemplo).
março 6th, 2007 at 9:55 am
Ah, mas seu código é muito complicado! Se você quer um conversor rot13, simplesmente use o métdodo encode das strings (aquele que serve para converter o encoding das strings):
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from sys import stdin # Entrada padrao
for line in stdin:
print line.encode(”rot13″),
Viu? Bem mais simples
PS: código ilegível não combina com software livre! Mas, se quiser que seus programas em Python sejam feios, apenas escreva-os em rot13:
#!/usr/bin/env python
# -*- coding: rot13 -*-
sebz flf vzcbeg fgqva # Ragenqn cnqenb
sbe yvar va fgqva:
cevag yvar.rapbqr(”rot13″),
março 6th, 2007 at 10:15 am
Osvaldo, muito legal cara, eu realmente não conhecia.
Mais um item pra minha lista de “coisas a aprender em python”.
Adam, não sei se vc notou, o post é sobre o módulo this, do python.
O codigo poderia ter sido mais simples, não sei se foi GvR que fez esse módulo, mas trata-se de uma espécie de brincadeira nerd.
O código original do módulo this é realmente complicado, o que eu quis demonstrar com esse post é justamente ele É COMPLICADO, isso é bem ilustrado quando reproduzi meu pensamento “…Isso é Russo?!”.
Não quis criar o código mais bonito e otimizado para fazer rot13, só mostrei que resolvi brincar com algo que já existe e está embutido no python.
Tente abrir o interpretador e fazer: import this
Depois abra, por curiosidade o código fonte do módulo: /usr/lib/Python2.4/this.py
Nota mental: “Nos próximos posts explicitarei que o meu código não é o mais certo”
março 7th, 2007 at 4:03 am
Eu sei, só resolvi comentar outras funcionalidades esquisitas de Python. Falei brincando