Archive

Archive for fevereiro \24\UTC 2012

Aplicações Plugáveis com Django.

Olá pessoas,

Como prometido no último post Projetos vs. Apps  vou lhes mostrar como tornar suas aplicações de um projeto plugáveis, e assim obedecer aquele conceito de DRY (Don’t repeat yourself) . 
Sem muita enrolação, até por que não é preciso pois o processo é bem simples.

1º Organização das URLs 

antes de mais nada eu aconselho que você organize seu arquivo urls.py da seguinte maneira:

separe as urls de acordo com a aplicação
ex:     galeria de imagens e noticias

# galeria
(r’^/galeria/‘,’views.all_albuns’),

(r’^/galeria/imagens’,’views.all_pics’),

#noticias

(r’^/noticias/‘, ‘noticias.views.all_news’),

(r’^/noticias/(?P<slug>[\w_-]+)’,’noticias.views.news’)

Com o código organizado fica mais fácil de vizualizar e mover nossas urls.

Percebam que minha url de noticias é antecedida de “noticia/”, assim como a de galeria é de “galeria/

2º includes

logo abaixo de #galeira adicione o seguinte código:

 (r’^galeria/’, include(‘galeria.urls’)),

abaixo de #noticias adicione o seguinte código:

 (r’^noticias/’, include(‘noticias.urls’)),

E por último mas não menos importante

3º criando o Urls.py de noticias e galeria

Não se esqueça dos imports tradicionais de quando se constrói um arquivo de urls. Crie um arquivo de url (urls.py) dentro da pasta da sua aplicação

noticias/urls.py

urlpatterns = patterns(‘noticias.views’,

# localhost/noticias

(r’^noticias/$’,all_news’),
#localhost/noticias/slug
(r’^noticias/(?P<slug>[\w_-]+)/$’, ‘noticia’),
)

Perceba que as urls deste arquivo são as mesmas do arquivo de urls do projeto, logo volte ao arquivo de urls do projeto e remova as urls de lá deixando somente  “(r’^noticias/’, include(‘noticias.urls’)),” , ou seja copie do arquivo (urls.py) do projeto para o arquiv (urls.py) da aplicação, lembrando de deixar somente o include. Faça o mesmo com a galeria.

Assim o arquivo de url deve ficar da seguinte forma:

(r’^galeria/’, include(‘galeria.urls’)),

(r’^noticias/’, include(‘noticias.urls’)),

para adicionar suas aplicações a outros projetos, basta adicionar estes “includes” no urls.py do projeto.

No github existe vários repositórios com algumas aplicações plugáveis e úteis, pronto para serem usadas, faça o mesmo com as suas divide-as com o mundo, assim todos crescemos juntos e sem ficar reescrevendo linhas e linhas de código, sem falar que fica muito simples de fazer manutenção de apps desacopladas de projetos.

Por hoje é só, e até a próxima,

Gil.

Categorias:Django Tags:, ,

Projetos vs Apps.

Estava pensando acoplamento de aplicações, e “passando o olho” rapidamente pela documentação Django me deparei com os seguintes comentários:

Qual a diferença entre um projeto e uma app? Uma app é uma aplicação web que faz algo -e.g., um sistema Weblog, um banco de dados de registros públicos ou uma simples app de enquete. Um projeto é uma coleção de configurações e app para um web site em particular. Um projeto pode conter várias apps, Uma app pode estar em vários projetos.

Suas apps podem “viver” em qualquer lugar do seu Path Python.

Filosofia

Um modelo é único, definitivo fonte de dados de seus dados. Ele contém contém os campos essenciais e suas características de dados que você esta armazenando. Django segue o principio de DRY. O objetivo é definir seus dados em um lugar e automaticamente derivar coisas dele.

Apps Django são “plugáveis”: Você pode usar uma app em múltiplos projetos, e você pode distribuir apps, pois elas não tem que estar a uma determinada instalação Django.

Logo Ter um projeto com pequenas aplicações se torna muito mais vantajoso do que ter um projeto com aplicações muito grandes. Não me recordo onde li uma certa vez que se a descrição da sua aplicação ocupa mais de uma linha, ela deve ser quebrada em pequenas aplicações. Pode parecer não ter importância mas com o passar do tempo você possuirá varias apps que automatizaram seu trabalho.

No próximo post mostrarei como tornar sua aplicação plugável, mas por hoje é só.

Abraço e até a próxima,
Gil.

Categorias:Django Tags:, ,

Dojo – Ruby

Fala pessoal,

Nesta quinta-feira 09/02 participei de um dojo numa empresa de desenvolvimento, e aqui estou para compartilhar com vocês essa experiência que a propósito foi muito legal apesar de eu ter apanhando para o teclado do Mac :D.

Antes de mais nada uma breve explicação sobre o que é um dojo

De acordo com o site DojoPuzzles.com dojo nada mais é que um encontro onde um grupo de programadores de vários níveis de conhecimento se reúne para treinar, em um ambiente inclusivo e colaborativo boas técnicas e metodologias de desenvolvimento de software através da solução de um pequeno desafio de programação.

O problema:

FizzBuzz

Neste problema, você deverá exibir uma lista de 1 a 100, um em cada linha, com as seguintes exceções:

  • Números divisíveis por 3 deve aparecer como ‘Fizz’ ao invés do número;
  • Números divisíveis por 5 devem aparecer como ‘Buzz’ ao invés do número;
  • Números divisíveis por 3 e 5 devem aparecer como ‘FizzBuzz’ ao invés do número’.

definição de dojo e problemas para dojo você pode encontrar aqui

Ruby

A linguagem Ruby foi escolhida pois a empresa trabalha com esta linguagem.
De acordo com a Wikipedia Ruby é uma linguagem de programação interpretada multiparadigma, de tipagem dinâmica e forte, com gerenciamento de memória automático, originalmente planejada e desenvolvida no Japão em 1995, por Yukihiro “Matz” Matsumoto, para ser usada como linguagem de script. Matz queria uma linguagem de script que fosse mais poderosa do que Perl, e mais orientada a objetos do que Python.
___

Minha opinião: Se você ja tem um pouco de lógica de programação, você não terá muitas dificuldades se iniciar em Ruby, eu diria que Ruby tem uma curva de aprendizado muito semelhante ao Python: em “J”, e por esta razão é gostosa de se aprender. Apesar de não ter explorado a linguagem, fiquei com uma boa impressão.

Resolução:

Como eu nunca tinha programado em ruby na minha vida, só sabia fazer um “Hello Word”, chamar uma função, criar uma classes, coisas simples, o problema foi bem simples, e a resolução não poderia ser diferente.
Em um ambiente orientado a testes, o dojo foi resolvido por 4 pessoas, e posteriormente um quinto elemento se juntou a nós.
Não vou “codar” aqui, pois não tenho o código exato de como ficou o dojo, e se eu postar algo diferente aqui estaria mentindo.

O que fizemos basicamente foi criar nossa classe FizzBuzz e dentro dela um método para verificar se o número era divisível de resto zero por 3 por 5 e por ambos.
Primeiramente foi usado alguns “ifs” e “elses” e dentro de cada um retornavamos fizz, buzz ou fizzbuzz conforme o número.
Ao termino do problemas refatoramos o problema usando a ideia dada pelo quinto elemento que citei acima.
Se o numero fosse divisível por 3 ou 5 era criada uma String vazia, que se o número for passado for divisível por 3 adiciona “Fizz” a string e se por 5 for, é adicionado a string “Buzz” se ele for divisível pelos dois retornamos a string concatenada com “FizzBuzz”.

Conclusão

Dojos são muito divertidos, programar é sensacional e eu só tenho a agradecer ao pessoal que entendeu que eu não saco de Ruby (ainda) e escolheu um probleminha simples, que me renderam uma boa hora numa quinta feira.

Por hoje é só,
Abraços e volte sempe 😉
Gil.

Categorias:Diversos Tags:,