9/27/2007

Instalando Django com Apache e Mod_Python no Ubuntu

Um servidor com Apache rodando Django através de mod_python é uma das melhores escolhas para se fazer um deploy de uma aplicação feita em Django. Devido a isso resolvi fazer através deste post um simples passo a passo de como fazer a instalação e configuração desse deploy.

Como no Ubuntu Python já vem instalado, é uma coisa a menos a se preocupar. Outra vantagem em usar o Ubuntu, ou qualquer distribuição baseada em Debian e a possibilidade de utilizar o apt-get para facilitar a instalação dos programas.

Então vamos aos passos:

1 - Instalando o Apache 2
Para instalar o Apache 2 no Ubuntu basta abrir o terminal e digitar apenas um apt-get
#sudo apt-get install apache2

Para ver se o Apache foi instalado com sucesso e está em funcionamento é só acessar http://localhost em seu navegador.

2 - Instalando mod_python
Para instalar o mod_python no Ubuntu não é muito diferente
#sudo apt-get libapache2-mod-python

3 - Instalando o Django
#sudo apt-get install python-django

4 - Configurando o Apache
Como o mod_python foi instalado via apt-get, o módulo já fica habilitado automaticamente.

Mas é necessário configurarmos nossa aplicação no Apache. Para isso temos que editar o http.conf da seguinte maneira:

Para editar o http.conf, é só digitar esse comando no terminal:

#sudo gedit /etc/apache2/http.conf

E adicionar as linhas a seguir:

<VirtualHost * >
<Location "/">
SetHandler python-program
PythonPath "['/home/seuusuario/projetos/'] + sys.path"
PythonHandler django.core.handlers.modpython
SetEnv DJANGO_SETTINGS_MODULE meuprojeto.settings
PythonDebug On
</Location>
</VirtualHost>


Onde informamos através do PythonPath o diretório onde ficam os seus projetos como no exemplo foi: '/home/seuusuario/projetos/'. E criamos a variável de ambiente DJANGO_SETTINGS_MODULE cujo valor é o local onde fica o settings.py onde "meuprojeto" é o nome do projeto.

Podemos ao invés de editar o http.conf editar o arquivo: /etc/apache2/sites-avaliable/default.

5 - Reiniciando o Apache
Após configurar o Apache é só reiniciar ele. Para reiniciar ele digite o comando abaixo:
#/etc/init.d/apache2 reload

Para testar é só acessar no seu navegador o endereço configurado!

Só para lembrar, o Django + Apache + Mod_python é uma ótima opção para deploy, ou seja, para rodar sua aplicação já finalizada. Para ser servidor de desenvolvimento não é recomendado a utilização do Apache e sim do próprio servidor de testes do Django.

9/24/2007

Wubuntu - a verão online do Ubuntu

Navegando por ai na internet eu achei o Wubuntu! Que se propõe a ser uma versão online do Ubuntu [1]!

Ele ainda está bem longe de fazer tudo que o Ubuntu faz, mas as janelas no estilo do Gnome ficaram bem bacanas!

Para quem quiser conferir, o Wubuntu pode ser acessado através do endereço: http://wubuntu.weejewel.net/

[1] - http://www.ubuntu.com/

9/23/2007

Como aprender Django

Na minha ida à PyCon Brasil [1], e as ajudas que dou a iniciantes em Django, percebi que muitas pessoas tem interesse em aprender Django, mas não sabem por onde começar. Para suprir esse problema resolvi criar este post mostrando um caminho de como aprender Django. Com certeza deve haver outros caminhos, mas resolvi escrever sobre o a maneira que no meu ponto de vista é ideal.

Antes de aprender Django é necessário que você tenha pelo menos um conhecimento básico sobre Python. O Gabriel Falcão escreveu em seu blog um ótimo post mostrando como aprender Python [2].

A primeira coisa que alguém que quer iniciar no Django deve fazer (após instalar o Django, é lógico!) é ler e praticar o tutorial oficial [3] do Django, que é dividido em 4 partes. O tutorial oficial abrange o básico sobre o framework, e após finalizar ele, você estará apto a criar pequenas aplicações com o Django. Mas lembre-se, é importante que siga o tutorial até o final! Se você seguir até a parte 2 ou 3 do tutorial, conseguirá fazer algumas coisas em Django, e por isso muitos não terminam o tutorial.

Após terminar o tutorial, o importante é praticar e ir estudando a documentação [4] de acordo com suas necessidades e interesses. A documentação do Django é toda dividida por setores do framework o que facilita muito a consulta. Por exemplo, você queira criar uma interface administrativa usando o newforms ao invés de usar o admin do Django. É só você acessar a parte da documentação responsável pelo newforms [5] que irá se interar sobre o assunto.

Se você quiser aprender mais sobre o Django de uma vez, ao invés de ir aprendendo "sobre demanda", você poder ler o Django Book [6], que é um livro online sobre o Django. O Django Book ainda está em desenvolvimento, mas seu conteúdo é muito bom e interessante.

Se quiser tirar dúvidas, ou esclarecer algo sobre o Django, você pode se cadastrar na lista de discussão [7] dos desenvolvedores de Django do Brasil.

Para ver exemplo de código, e para tentar não "refazer a roda" existe o site Django Snippets [8] que é um cookbook para Django.

E para ficar atento as novidades, curiosidades e informações, vale ver os planetas [9] [10] com os blogs relacionados ao Django.

[1] - http://pyman.blogspot.com/2007/09/pyconbrasil.html
[2] - http://nacaolivre.org/2007/09/12/pra-quem-quer-comecar-a-aprender-python/
[3] - http://www.djangoproject.com/documentation/tutorial01/
[4] - http://www.djangoproject.com/documentation/
[5] - http://www.djangoproject.com/documentation/newforms/
[6] - http://www.djangobook.com/
[7] - http://www.djangobrasil.org
[8] - http://www.djangosnippets.org/
[9] - http://planeta.djangobrasil.org/
[10] - http://www.djangoproject.com/community/

9/16/2007

Django Sprint - status

Nesse final de semana (dia 14, 15 e 16 de Setembro) teve o Django Sprint e o Django Sprint Brasil [1].

No meu ponto de vista, tanto o Sprint mundial e o Sprint nacional foram um sucesso!

No Sprint mundial muitos tickets foram filtrados, vários erros resolvidos, novos itens criados e algumas coisas que não eram documentadas no Django agora tem documentação. Como os shortcuts [2], form preview [3]. Para conferir algumas coisas que foram feitas é só verificas os tickets com a palavra chave: sprintsept14 [4].

Eu tive uma humilde participação, sugerindo e criando um DataTimeInput, mas o aprendizado foi grande! Me interei mais no processo de colaboração do Django, como triagem de tickets, por exemplo.

Já no Sprint nacional, um dos grandes resultados é o site do DjangoBrasil que em breve deve estar no ar. Várias issues relacionadas ao desenvolvimento do site foram solucionadas [5]. Também foi criada a página sobre Django no Wikipédia, melhorada a página sobre Django no PythonBrasil, e algumas traduções foram feitas.

Todos que participaram estão de parabéns!!!!

Quem não pode colaborar não fique triste pois o trabalho não para por aqui! O Sprint foi apenas uma maneira de motivar os djangers a se unirem e a melhorarem o Django, mas a colaboração pode ser feita quando você quiser.

[1] - http://pyman.blogspot.com/2007/09/django-sprint.html
[2] - http://www.djangoproject.com/documentation/shortcuts/
[3] - http://www.djangoproject.com/documentation/form_preview/
[4] - http://code.djangoproject.com/query?status=new&status=assigned&status=reopened&group=stage&keywords=%7Esprintsept14&order=priority
[5] - http://code.google.com/p/djangobrasil/issues/list?can=1&q=&sort=status&colspec=ID%20Type%20Status%20Priority%20Milestone%20Owner%20Summary%20Stars%20Opened

9/13/2007

Django Sprint

Amanhã, dia 14 de setembro (extendendo para todo o
final de semana) ocorrerá um Django Sprint[1] pelo mundo todo. Ou
seja, será um dia onde os djangers focalizarão sua atenção em melhorar
o Django.

Um dos objetivos do Sprint é unir as features que estão prontas no
branch do django com o projeto atual, como o newforms-admin,
GeoDjango, suporte a multi-databases entre outras features. Outro
objetivo é resolver os tickets em aberto no sistema de tickets do
Django que chegam a mais de 1000 tickets em aberto.

Se você quiser participar é só acompanhar e adicionar seu nome na
página do wiki[1]. São mais de 100 pessoas do mundo todo inscritas!
Entre elas 9 são brasileiros!

Aproveitando o gancho do Sprint Mundial, a comunidade de Django aqui
no Brasil resolveu fazer um Sprint também, iniciando no mesmo dia (14) e prolongando até o dia 16. Esse Sprint tem como objetivo resolver
algumas coisas relacionadas ao site do djangobrasil, a tradução do
Django, tradução da documentação e alistamento e organização de dois projetos: bingo[2] ( um cms ) e ajaxforms[3] ( newforms + ajax).

Se você deseja participar, acesse a página da Sprint do Django
Brasil[4] para obter maiores informações e assinar a lista de
presença.

Eu já me inscrevi no Sprint Mundial e marcarei presença no Sprint do
djangobrasil também!!!

E aê? Vamos participar?


[1] http://code.djangoproject.com/wiki/Sprint14Sep
[2] http://code.google.com/p/bingo/
[3] http://code.google.com/p/django-ajaxforms/
[4] http://groups.google.com/group/django-brasil/web/django-brasil-sprint

9/09/2007

Django Rapidinhas (1)

Ordenar model's randomicamente no Django

Eu resolvi fazer uma série de post's rápidos de dicas sobre Django. As 'Django Rapidinhas'.

E o tema de hoje é ordenar model's randomincamente no Django. Para isso precisamos de um model de exemplo. Vamos criar um model que represente um Aluno de uma escola ou faculdade.

class Aluno(models.Model):
nome = models.CharField(max_lenght=40)
idade =
models.IntegerField()

Para retornarmos em uma lista todos os usuários usando o ORM do Django usamos o método all():

>> Aluno.objects.all()

Para ordenarmos essa lista usamos o método order_by, que necessita de um parâmetro informando o nome do campo que será a referência para a ordenação. Para um ordenação descendente adicionamos o '-' ao início do parâmetro e para uma ordenação ascendente não adicionamos nada, só o nome do campo basta.

Ordenar por nome, de forma ascendente:

>> Aluno.objects.all().order_by('nome')

Ordenar por nome de forma descendente:

>> Aluno.object.all().order_by('-nome')

E para ordenar randomicamente? É difícil?

A resposta é não. Pelo contrário. É muito fácil. É só passar uma interrogação (?) como parâmetro.

>> Aluno.objects.all().order_by('?')

Fácil não?

9/07/2007

PyConBrasil

Uma semana após o PyConBrasil resolvi me pronunciar sobre o evento!

Para começar, levei aproximadamente 30 horas de viagem para chegar em Joinville! Na viagem estava muito ansioso, por não conhecer ninguém da comunidade pessoalmente e por nunca ter participado de um PyCon e por começar dando um treinamento de um Framework Web que está iniciando em um ambiente onde há muitos desenvolvedores que utilizam Zope/Plone.

Meu primeiro contato com o pessoal, na Assembleia tirou todas essas baboseiras da minha cabeça.

Aliás a melhor coisa que estou trazendo do evento são as amizades que fiz lá. Realmente estava lá uma comunidade. Muito bate papo entre uma palestra e outra e nas palestras também. Muitas piadas e brincadeiras nos Happy Hour. O humor do pessoal é enorme.

No primeiro dia, eu participei dos dois treinamentos: sobre programação com python em celulares nokia e sobre Grok. Os dois treinamentos foram conceitos introdutórios, mas foram muitos importantes para conhecer um pouquinho sobre cada ferramenta. No final do primeiro dia fui avisado que teria uma mesa redonda sobre Python para Web e eu representaria o Django, Dorneles o Plone e Luciano Ramalho o Grok. Nós três tivemos a idéia de falarmos sobre cada ferramenta de forma divertida e contar porque cada um de nós a utilizamos. Foi bem divertido, arrancamos muitos rizos do pessoal, inclusive quando disse que não uso Plone por sua tela azul. Para quem quiser acho que em breve estará disponível na Web.

No segundo dia, comecei tentando arrumar o meu computador e o laboratório para dar o treinamento de Django e também não assisti quase palestras. Uma das poucas palestras que assisti foi a do Gustavo Neimayer sobre Storm que foi muito legal.

A experiência de ministrar um treinamento sobre Django foi muito legal! A sala estava lotada! Vi que muitas pessoas tem interesse sobre o framework, mas percebi também que muitos não sabem por onde começar! E o treinamento tinha essse objetivo, mostrar como iniciar no Django.

No último dia eu eu resolvi não fazer nenhum treinamento, para poder assistir as palestras.

Resumindo na PyCon foram abordados muitos assuntos como: Eagle, GTK, QT, WxPython, Maemo, PyJamas, Django, Grok, Zope, Plone, TurboGears, SqlAlchemy, IronPython, Shuberry, Gimp, PyGame, Gsoc. E assuntos como Python no ensino de estatística, no ensino de computação, na ciência. E teve uma palestra sobre motivação com o Dorneles Climber.

Para quem quiser ver as fotos oficiais do evento: http://picasaweb.google.com/PyConBrasil

A PyCon foi muito legal. Não vejo a hora de chegar a próxima.

Nos vemos lá.