21 de novembro de 2012

Tutoriais PyBR8 (2012) - 1º dia

Hoje foi o primeiro dia de tutoriais na Python Brasil 8, edição 2012, no Rio de Janeiro.

Como aconteciam vários tutoriais ao mesmo tempo, eu só pude assistir a dois: Fabric, pela manhã, e Web2py, à tarde. Aqui vão minhas impressões a respeito deles.

Fabric


Eu não conhecia o Fabric, apesar de sempre ouvir falar dele na lista Django Brasil e Python Brasil. Para quem é nulo nesse assunto como eu, eis uma explicação de leigo pra leigo: o Fabric permite que você emita comandos para uma (ou várias) máquinas locais ou remotas, via ssh. Só isso. Mais nada.

Tá, e qual é a graça? Bem, esses comandos são os mesmos que você escreve no shell. Portanto, o Fabic permite que você dê comandos via ssh para instalar pacotes, configurar ambiente, criar/apagar/copiar ou compactar/descompactar arquivos, saber o status de determinado serviço, iniciar ou parar um servidor web ou de banco de dados...

Certo, mas fazendo um script p/ conectar via ssh, também consigo fazer isso. OK, o grande lance do Fabric é que você escreve seus scripts em Python. Bom, agora tudo muda!

Além disso, o Fabric toma conta de interceptar saídas e te dizer se os comandos tiveram sucesso ou não.

Se sua equipe programa em Python, Fabric é uma ótima opção para fazer deploys e garantir que as dependências do projeto estão conforme o necessário.

Abaixo, um trecho do código Fabric que desenvolvemos no tutorial:
def install_system_packages():
    sudo('apt-get install tree')
    sudo('apt-get install nginx')
    sudo('apt-get install python-pip')
    sudo('apt-get install supervisor')

def upload_code():
    local('tar czf meu_proj_django.tar.gz meu_proj_django/')
    put('meu_proj_django.tar.gz', '/tmp/') # vai por scp
    with cd('/srv/meu_proj_django'):
        run('tar xzf /tmp/meu_proj_django.tar.gz')

def restart_nginx():
    sudo('service nginx restart')


def deploy():
    install_system_packages()

    with settings(warn_only=True):
        sudo('mkdir -p /srv/meu_proj_django/logs')
        sudo('chown -R vagrant:vagrant /srv/meu_proj_django')

    upload_code()
    install_requirements()
    restart_nginx()

Viu? É como se programássemos no shell, só que em Python.

O instrutor foi o Flávio Amieiro, que mandou bem, mesmo tendo que conciliar o tempo disponível com o atraso do pessoal (inclusive o meu) por causa do trânsito no Rio.

Web2py


Apesar de trabalhar com Web2py, não tenho tempo de acompanhar todas as novidades que surgem. Como o tutorial seria apresentado pelo autor do framework, Massimo di Pierro, resolvi ir lá ver o que há de novo e fiquei muito bem impressionado.

Vimos uma apresentação dos principais recursos do Web2py e por que eles funcionam do jeito que são, com exemplos reais, feitos na hora, respondendo às perguntas que fazíamos. Tudo ao vivo.

Fizemos um passeio pelos componentes do framework, vendo para quê cada um deles serve e como usá-los, mesmo fora do framework. Vimos muito código escrito no shell e na interface web.

Vimos exemplos com formulários, grid, sistema de autorizações e permissões, ajax, migrations, hot install de aplicações, server-side DOM, templates, o novo recurso de wiki (auth.wiki) na prática e como ele é capaz de embutir mídias (fotos, videos e documentos) e páginas usando ajax automaticamente.

Eu tive a oportunidade de conversar com o Massimo sobre alguns pontos que acho interessante e outros que poderiam melhorar no Web2py, principalmente sobre o acoplamento do sistema de autorizações com os controllers.

Foi muita coisa boa, que me fez sentir ainda mais seguro com relação ao Web2py.

Então, na minha opinião, o balanço do dia foi positivo. Aprendi muito e conheci gente nova.

Parabéns à Fundação Python Brasil, aos organizadores do evento e aos palestrantes. \o/

Eu sou Vinicius Assef, um programador do século passado que gosta de Python, pratica Lean Development e acredita em Deus. Você pode me contactar por email ou twitter.

2 comentários:

  1. Bem legal o blog, mas poderia ter um dispositivo para acompanhar novas postagens por email. :D

    ResponderExcluir
  2. Obrigado pela participação, Renato.

    Você pode acompanhar o Aprenda Python por RSS/Atom ou, melhor ainda, seguir o http://python.org.br/planet e ficar por dentro de muitas notícias/artigos sobre Python.

    ResponderExcluir

Marcadores