Pesquisar este blog

sexta-feira, 24 de abril de 2009

Saiu o novo Ubuntu 9.04, codinome Jaunty!!

Quem gosta de linux, com certeza já, pelo menos, ouviu falar no Ubuntu. Sistema operacional patrocinado pela Canonical, cheio de recursos e super amigável, que mais vem crescendo no mercado mundial. O Ubuntu é a prova viva que o Linux não precisa ser um bicho de 7 cabeças para o usuário final!!

De qualquer forma, o motivo desta postagem não é falar do Ubuntu especificamente, mas falar de sua nova versão, saída do forno ontem, o Jaunty!!! ... Jaunty? Mas não era Ubuntu?

Seguinte, cada nova versão do Ubuntu recebe um codinome amigável e um mascote, que permite aos usuários identificar as versões do Ubuntu de forma mais fácil. No lugar de dizer Ubuntu 8.10 ou 9.04, você poderia dizer Ubuntu Intrepid ou Ubuntu Jaunty, que significa a mesma coisa.

Certo, o Jaunty. De 6 em 6 meses, a Canonical libera uma nova versão do Ubuntu. A anterior, a Intrepid, foi um grande passo em direção à usabilidade. O sistema ficou bem mais amigável, bonito, etc. A nova versão, por outro lado, foi feita com um objetivo diferente. A idéia do Jaunty é diferente, seu objetivo é permitir que o usuário faça boot(tempo entre iniciar o computador e se logar no sistema operacional) rápido de sua máquina e possibilite uma integração com ambientes em núvem(versão para servidor).

Ainda não testei a versão para o servidor, mas essa versão para desktop está ótima! O compiz está mais rápido e estável, o novo sistema de arquivos ext4 vem disponível, OpenOffice3 por padrão, visual mais bonito, e um novo sistema de notificações super transado, no canto direito superior da tela. E mais, a promessa do Jaunty de conseguir um boot super rápido do sistema foi alcançada! O boot aqui no meu notebook está sendo feito em meros 25-27 segundos, o que é muito muito bom!

Cosmeticamente, o Jaunty não quebrou barreiras. A tela de login padrão foi mudada, o sistema de notificação foi melhorado, alguns novos temas foram adicionados, e é isso. Nada muito radical, mas quem veio do Intrepid vai sentir e gostar dessas mudanças!

No mais, o processo de instalação aqui foi bem tranquilo e estável. Sem surpresas. Um negócio complicado que eu achei foi passar todas as minhas partições em reiserFS para ext4. Rrsrsrs, esse "pequeno" fez com que meu tempo de instalação do Jaunty pulasse de 20minutos para 18 horas. Rrssr, emocionante.

dica: se você utiliza um sistema de arquivos diferente do ext4, sugiro que mude para o mesmo. Ele parece que veio para ficar! Com o fim da empresa do autor do ReiserFS, seu futuro me parece deveras sombrio, e sem o reiser4, o ext4 passa a não ter competidores à altura.

Quem não conhece o Ubuntu, ou quem usa uma versão anterior, sugiro muito atualizar para o Jaunty(desconsidere o conselho se você usa a versão LTS do Ubuntu por opção), o boot mais rápido, melhorias visuais e o suporte ao Ext4 por padrão fazem muito a diferença!

domingo, 19 de abril de 2009

Padrões de projeto com Django

Para quem não sabe, Django é o framework web mais maduro atualmente disponível para python. Ele é rápido, robusto, e elegante, entretanto, é muito comum as pessoas codificarem com ele da forma que desejam. Às vezes isso é algo bom, às vezes não. Pensando nisso, resolvi citar aqui algums padrões que utilizo no desenvolvimento de meus projetos e aplicativos, para aqueles que estão começando e gostariam de saber como estruturar um projeto Django de forma legível e extensível. Enjoy!

Receitas

  1. Desenvola seu projeto utilizando um aplicativo para cada parte do projeto. Projetos que possuem poucos aplicativos "entupidos" de código devem ser evitados.

  2. Sempre que utilizar um aplicativo de terceiros, dê uma olhada no código do mesmo. Esta á uma excelente forma de enteder como funciona e como tirar melhor proveito do mesmo.

  3. Evite criar dependência entre os aplicativos, sempre que possível. Ou seja, não importe código de outros aplicativos do seu projeto caso não seja necessário.

  4. Não tenha medo de utilizar aplicativos que já vem com o próprio Django, como o flatpages, para páginas ordinárias.

  5. Se você deseja criar páginas específicas para um determinado projeto, mas que não parecem "encaixar" em nenhum dos aplicativos, você pode criar um aplicativo chamado website, e colocar o código esdrúxulo nela. Também muito útil para colocar tags e filtros customizados.

  6. Não tenha receio de criar tags e filtros específicos para o seu projeto. Tags são especialmente úteis para criar comportamentos semelhantes em todas as páginas de um projeto.

  7. Inicie cada um dos seus arquivos .py definindo o encoding do seu código com a seguinte:
    # -*- coding:utf-8 -*-
    Essa pequena linha vai lhe evitar muitas dores de cabeça com unicode.

  8. Reescreva o método __unicode__ de cada um dos seus modelos definidos.

  9. Ao definir uma url no seu urls.py, procure sempre fazê-lo utilizando o atalho url, e defina um nome fictício para sua url. Isso torna a codificação e mudanças no código bem mais fáceis. Exemplo:
    # bom!
    url("^shop/$", shop.index, name="shop.home"),
    # ruim...
    ("^forum/$", forum.index)

  10. Mantenha os templates de cada aplicativo dentro de uma pasta templates no próprio aplicativo.

  11. O projeto deve ter uma pasta principal chamada templates, onde páginas como base.html(página raiz extendida por outras páginas do aplicativo), 404.html e 500.html devem estar presentes.

  12. Criar uma página form.html dentro da pasta padrão templates do projeto é uma forma útil de se manter um padrão entre os seus formulários. Por exemplo, quando você quiser mostrar um formulário para o usuário, basta retornar o formulário na resposta da requisição e "incluir" a página form.html no seu template. Apenas tome cuidado para não fazê-lo de forma imprudente, a tag include do Django não é um grande exemplo de eficiência.

  13. Caso precise criar configurações para um aplicativo específico do projeto, não jogue essas configurações diretamente no settings.py. O settings.py já é um arquivo bem grande por sí só, e novas variáveis devem ser evitadas, ali. Uma abordagem muito interessante é criar um arquivo app_settings.py no seu aplicativo e colocar as configurações do aplicativo lá. Uma solução interessante para quem, ainda assim, quiser colocar as configurações dos aplicativos no settings.py é a seguinte: importe o settings.py no seu app_settings.py e tente configurar as variáveis do seu app_settings através de variáveis do settings.py da seguinte forma:
from django.conf import settings
# note que primeiro eu checo se a variavel esta definida no settings
# caso contrário, eu utilizo o valor definido no app_settings
ITEMS_PER_PAGE = getattr(settings, "ITEMS_PER_PAGE", 16)
Por enquanto, é só. rsrsrs, essa é a forma que eu trabalho, e espero que vocês gostem. Abraço!