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:

rot13.tar.gz

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.

6 Responses to “import this”

  1. Christian Bernini Says:

    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.

  2. Gabriel Falcão Says:

    É 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

  3. Osvaldo Santana Neto Says:

    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).

  4. Adam Victor Says:

    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″),

    ;)

  5. Gabriel Falcão Says:

    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”

  6. Adam Victor Says:

    Adam, não sei se vc notou, o post é sobre o módulo this, do python.

    Eu sei, só resolvi comentar outras funcionalidades esquisitas de Python. Falei brincando :)

Leave a Reply