Django e Ruby on Rails
Desde o início do ano tenho estudado Python e Django, inclusive, mês passado comprei um livro chamado Aprendendo Python da editora O’Reilly, que é excelente e recomendo.
Aprendi diversas coisas, uma dessas, o conceito de metaprogramação. Enfim, depois de vários problemas que tive usando o Django — alguns resolvidos e outros não — a partir dessa experiência de seis meses, posso compartilhar algumas conclusões:
- O módulo de autenticação força o desenvolvedor a seguir determinadas práticas, e isso promove a inflexibilidade, por exemplo, para remover alguns atributos do modelo User ou utilizar o email como condição de autenticação é necessário duplicar um bucado de código;
- Atualmente as views não possuem um padrão para organização e nomenclatura;
- Configurações de ambientes não são geradas automaticamente pelo esqueleto do projeto;
- O módulo de serialização não foi desenvolvido com a filosofia RESTful em mente, o que significa, o suporte para serialização é incompleto.
Estes são os quatro pontos crucias que podem ser melhorados no Django. Eric Florenzano deu uma palestra no DjangoConf intitulada Why Django Sucks, and How We Can Fix It, assitam.
O que não pode ser alterado com linha de código é a sinergia e o espírito da comunidade, vamos falar um pouco de Ruby e Rails agora.
É impressionante a quantidade de desenvolvedores, e bons profissionais, que fazem parte do ecossistema do Ruby comparado ao Python. Sem contar que o GitHub é praticamente dominado por rubistas.
Estou dedicando boa parte do meu tempo para aprender Ruby e Rails agora, essa linguagem é simplesmente maravilhosa.
Ruby on Rails foi uma extração de um projeto chamado Basecamp, gerenciador de projetos, criado por David Heinemeir Hansson. Foi lançado em julho de 2004.
Django foi criado a partir de outros requisitos e dentro de um ambiente jornalístico. Poucos meses depois do lançamento do Rails, Django é anunciado para o mundo.
Novos desafios, novos aprendizados pela frente.
A bondade é uma via de mão dupla.
Atualização: Django em hospedagem compartilhada
Alguns meses atrás publiquei um screencast ensinando como atualizar o Django na KingHost, empresa brasileira de hospedagem. E felizmente, descobri uma solução mais simples pra esse problema.
Antes de ir direto ao código, entenda os porquês dessa história.
Qual era o problema mesmo?
O trecho de código que eu havia disponibilizado (aqui) tem uma falha: não identifica os python eggs instalados automaticamente. Ou seja, era preciso repetir várias vezes o comando sys.path.append especificando o caminho de cada módulo usado pelo projeto. Bem cansativo isso, né?
E a solução?
Antes, entenda a peça chave disso tudo.
O módulo site é automaticamente importado durante a inicialização do Python. Esse módulo serve apenas para adicionar caminhos específicos para a lista de pesquisa de módulos, estou falando especificamente do sys.path.
Este módulo possui alguns métodos que são uma mão na roda. E um deles é método addsitedir, que adiciona o próprio diretório (passado como argumento) na variável path e processa os arquivos com extensão pth.
Recomendo que leia a documentação do módulo site para mais informações.
Veja a solução do problema.
Desabafo sobre o Django
Ultimamente tenho usado bastante o Django, framework para desenvolvimento de aplicações web que utiliza a linguagem Python.
O problema é que existe algumas funcionalidades do Rails muito importantes que não são nativas do Django, como as migrações e a possibilidade de customizar elementos criados por funções do engine de template. Sem contar o suporte RESTful precário, ou quase nenhum.
O Rails também tem suas desvantagens, principalmente relacionado aos aspectos comuns de uma aplicação web, por exemplo, autenticação e permissões. O Django possue suporte nativo dessas funcionalidades, que são disponibilizados em módulos separados, ficando ao critério do desenvolvedor em usá-las ou não.
A verdade é que eu ainda estou em cima do muro em relação a esta decisão.
Rails ou Django? Eis a questão (a não ser que eu encontre uma solução para os problemas citados sobre o Django).
Introdução ao Shell Script
Shell Script é uma linguagem de programação interpretada, com diferente dialetos dependendo do interpretador de comandos utilizados.
O interpretador de comandos mais popular é o bash, usado na maioria das distribuições GNU/Linux.
Ou seja, um script é um conjunto de comandos que são executados pelo interpretador.
Essa linguagem é bastante utilizada para automatizar tarefas que serão executadas mais de uma vez.
O Shell Script possui algumas características que são comuns em outras linguagens como:
- Estruturas de decisão
- Estruturas de repetição
- Funções e argumentos
- Definições de variáveis
Excelente referência para estudos: http://aurelio.net/shell/
Questions to ask your team
- Why are we doing this?
- What problem are we solving?
- Is this actually useful?
- Are we adding value?
- Will this change behaviour?
- Is there an easier way?
Do something, now.
jQTouch, breve introdução
Estive experimentando o jQTouch, plugin para desenvolvimento de aplicações para iPhone ou navegadores baseados no WebKit, e posso dizer que é excelente.
O jQTouch permite que meros desenvolvedores web como eu, criem aplicações mobile usando tecnologias tradicionais como HTML, CSS e JavaScript.
Já existem aplicações sendo vendidas na App Store que usam o jQTouch, mas existe um porém.
Há uma regra em que a Apple somente aceita aplicações que foram desenvolvidas usando o iPhone SDK, mas existe uma ferramenta chamada PhoneGap que permite você distribuir sua aplicação em um formato aceitável pela Apple.
O PhoneGap não é apenas uma ferramenta para distribuir aplicações que usam tecnologias tradicionais da web, é também uma ponte que traz algumas funcionalidades nativas do iPhone para o JavaScript. Além disso, o PhoneGap possui suporte para o Android, Palm, Symbian e BlackBerry.
Eu realmente estou convencido que para desenvolver aplicações nativas para o iPhone (ou outros aparelhos modernos) precisa ser algo muito específico, e que realmente faça uso das funcionalidades que o dispositivo proporciona.
Existem grandes oportunidades no mercado móvel, basta olharmos com atenção.