Máquina virtual para desenvolvimento usando o Vagrant e Ansible

Depois de fazer um belo upgrade de memória (4gb -> 16gb) eu resolvi usar o Vagrant como plataforma de desenvolvimento, fiz uma nova instalação do Osx Mavericks e deixei o meu sistema o mais limpo possível, deixando tudo que é necessário para desenvolvimento na máquina virtual do vagrant.

Agora eu estou usando o Ubuntu Precise64 e tenho praticamente a mesma infra que uso nos servidores de produção, para provisionar essa máquina eu usei o Ansible e os arquivos de configuração eu deixei a disposição no meu Github.

Agora eu tenho tudo o que preciso para desenvolver ao alcance, basta usar o vagrant up e esperar a configuração do sistema.

O que vem incluso:

  • Mapeamento das portas dos servidores
  • Mysql 5.5, usuário e senha ‘allisson’
  • Postgresql 9.3 + Postgis, usuário e senha ‘allisson’
  • Nodejs via ppa
  • Mongodb via ppa
  • Redis e Memcached

Links:

Django para Iniciantes

Eu já tinha falado sobre o Curso Django para Iniciantes, pois bem, estou dando um presente para a comunidade e liberando todas as aulas no meu canal do Youtube.

Foi usado o Django 1.4 nas aulas, e penso em fazer uma nova versão do curso (se a comunidade demonstrar interesse), usando o 1.6/1.7. Confirmado o interesse da comunidade, eu usarei o esquema de financiamento coletivo para arrecadar e assim poder produzir as novas aulas.

Gunstar 0.2

Acabei de liberar o release 0.2 do Gunstar, a principal mudança foi na documentação, que está bem mais abrangente, agora temos vários tópicos e não apenas o quickstart.

Tive o prazer de fechar a issue #1 do projeto também :D

Para os interessados, agora em setembro eu estarei fazendo um mutirão python sobre o Gunstar, se você quiser saber mais sobre WSGI e como é simples criar um micro framework, não perca!

Atualização:
A versão 0.2 está com um bug na instalação, eu já liberei a 0.2.1 que resolve o problema. Eu agradeço ao Elton Santos por avisar.

É difícil criar um micro web framework em python? Eu consegui em 12 dias :)

Hoje eu fiz o lançamento da versão 0.1.0 do Gunstar, um micro web framework em python. Isso levou ao todo 12 dias, desde a criação do repositório até a publicação da versão 0.1.0 no pypi.

A principal facilidade em escrever um micro framework em tão pouco tempo se resume a um padrão , o WSGI, com ele podemos escrever aplicações usando ótimas bibliotecas como o WebOb (que usei no Gunstar) ou o Werkzeug (base do Flask). Essas duas bibliotecas cuidam de transformar requisição e resposta em objetos que posso manipular facilmente na minha aplicação python.

Com o tempo que poupei usando o WebOb eu escrevi duas classes que fazem o papel de roteamento de urls, o código é bem simples, e o melhor de tudo, funciona!

Também criei uma interface para gerir sessão dos usuários usando signed cookies, não vejo motivos para usar sessão em arquivos ou em banco de dados, claro que temos que reconhecer que existe um limite para o tamanho da sessão e que isso tem uma influência no tamanho das requisições e respostas, mas se você precisa guardar tanta informação assim em uma sessão, você está fazendo isso errado, grave apenas a chave na sessão e o resto retorne de um banco de dados.

Usei o Blinker para implementar signals, um dos usos foi na captura do template e do contexto em que esse template foi renderizado para usar nos testes, o código chega a ser ridículo, o blinker é uma mão na roda.

A documentação ainda está devendo em muitos pontos, temos apenas o quickstart por enquanto, mas se vocês tiverem curiosidade podem olhar os testes que vão descobrir o que podemos fazer com o Gunstar.

Consumindo API’s OAuth{1,2} com Python – Mutirão Python

Mais uma palestra no Mutirão Python, uma excelente iniciativa do pessoal da Pycursos.

Ontem eu pude compartilhar com o pessoal sobre o protocolo OAuth e como utilizar python para acessar apis do twitter, facebook e youtube.

O código fonte do aplicativo exemplo está disponível no meu github.

Vídeo do hangout on air

Vídeo que gravei com o screenflow

Slides no Slideshare

Slides no Speakerdeck

Iniciando um novo projeto usando o Flask

Recentemente eu estou trabalhando em um projeto que necessita do MongoDB, para projetos em bancos relacionais eu uso sempre o django, mas neste caso eu resolvi apostar na combinação do Flask + MongoDB, e de fato não me arrependi.

No começo eu tive algumas dificuldades, a primeira foi como criar o esqueleto do projeto, lendo a documentação eu me identifiquei logo com os blueprints e assim fiz algo parecido com o que geralmente trabalho no django.

A segunda dificuldade foi nos testes, novamente lendo a documentação e entendendo como funcionam o application e request context eu finalmente cheguei a um resultado satisfatório.

O resumo disso vocês podem encontrar no repositório do flask-example, se você tem dúvida em como começar o projeto e deseja ver alguns exemplos de testes de blueprints, não perca tempo.

Iniciando seu novo projeto em Django usando o django-project-template

Há algum tempo eu escrevi o artigo Setup inicial de um projeto Django 1.3, onde eu dava algumas dicas de como começar um novo projeto.

A partir da versão 1.4 o django permite a criação de projetos e aplicativos usando templates, então para facilitar a minha vida eu criei o projeto django-project-template.

Para criar um novo projeto usando este template é muito fácil, basta usar uma versão do django maior que a 1.4 e proceder da seguinte forma:

django-admin.py startproject --template=https://github.com/allisson/django-project-template/zipball/master meuprojeto
cd meuprojeto
pip install -r requirements.txt

Por padrão eu já instalo o south para migrações de bancos, pois uso ele em praticamente todos os meus projetos.

E também já configuro os diretórios meuprojeto/{media, static, template, sitestatic} que desempenham a mesma função descrita no artigo para django 1.3.

E para finalizar, o mapeamento das urls /static/ e /media/ já estão prontos no urls.py, é só colocar os arquivos nos lugares certos. Lembrando que quando o DEBUG=True esses mapeamentos são desabilitados, você deve colocar um servidor web para mapear e servir esses arquivos.

Curso django para iniciantes

O curso Django para iniciantes foi o primeiro produto da MixinCode, empresa em que eu sou sócio fundador.

O foco é o usuário iniciante, que teve pouco ou nenhum contato com o Django, mas que já tem conhecimento da linguagem python, abaixo eu reproduzo o depoimento do aluno Marcelo Domingues:

Treinamento altamente recomendável! Achei a didática muito boa e as informações muito bem detalhadas. O curso vai direto no ponto, proporcionando uma experiência de aprendizado de Django muito fácil e intuitiva. Outra coisa muito interessante é a parte sobre deploy… fiz alguns cursos de Django com outros instrutores, mas nenhum foi tão completo e detalhado como este na questão de deploy; ensina os principios de deploy com Python, portanto serve também como base inicial para fazer deploy de outros frameworks Python.

Outra coisa muito importante é a atenção que o instrutor dedica aos alunos. Feedback rápido e preciso.

Valeu Allisson!

A primeira aula está disponível na página do curso.