11/25/2007

Django Brasil no ar!

Após grande expectativa, está no ar o site da comunidade Django Brasil (http://www.djangobrasil.org/)! O objetivo é ser um veículo de divulgação deste framework em terras tupiniquins, trazendo informações para auxiliar tanto os iniciantes quanto os mais experientes.

Atualmente o site fornece:

  • as principais características do Django;
  • um weblog para anúncios e avisos à comunidades brasileira;
  • uma página exclusiva para a comunidade descrevendo como um desenvolvedor pode participar;
  • um agregador de blogs (planeta) dos desevolvedores nacionais, e;
  • uma área específica para a documentação.

A documentação e tradução da documentação oficial ainda é escassa. Convidamos os interessados em traduzir ou produzir conteúdo em língua portuguesa para suprir essa necessidade.

Este é apenas o início de uma nova fase da comunidade Django Brasil. Participe!

O site foi desenvolvido pelo Guilherme Mesquita Gondim (semente) e o belo desing pelo Jader Rubini (http://jaderubini.wordpress.com). O código é livre e pode ser acessado no seguinte endereço: http://code.google.com/p/djangobrasil/.

Django Brasil no ar!

Após grande expectativa, está no ar o site da comunidade Django Brasil! O objetivo é ser um veículo de divulgação deste framework em terras tupiniquins, trazendo informações para auxiliar tanto os iniciantes quanto os mais experientes.

Atualmente o site fornece:

  • as principais características do Django;
  • um weblog para anúncios e avisos à comunidades brasileira;
  • uma página exclusiva para a comunidade descrevendo como um desenvolvedor pode participar;
  • um agregador de blogs (planeta) dos desevolvedores nacionais, e;
  • uma área específica para a documentação.

A documentação e tradução da documentação oficial ainda é escassa. Convidamos os interessados em traduzir ou produzir conteúdo em língua portuguesa para suprir essa necessidade.

Este é apenas o início de uma nova fase da comunidade Django Brasil. Participe!

O site foi desenvolvido pelo Guilherme Mesquita Gondim (semente) e o belo desing pelo Jader Rubini (http://jaderubini.wordpress.com). O código é livre e pode ser acessado no seguinte endereço: http://code.google.com/p/djangobrasil/.

11/21/2007

Usando o ZODB no Django

Ter a flexibilidade da orientação a objetos do Python em um banco de dados pode ser algo muito útil e interessante que utilizar bancos relacionais. Um dos melhores bancos orientado a objetos em Python é o ZODB , é poderoso e simples de utilizar.

Mas como utilizar ele para web?

A resposta mais óbvia é Zope e Grok . São dois frameworks para web que utilizam ZODB como base de dados!

A resposta não tão óbvia é o Pylons . O Pylons é um framework que trabalha através de camadas (middlwares) onde você uma dessas camadas pode ser a implementação para suporte a ZODB.

E a resposta nada óbvia é o Django. O Django é um framework famoso pela sua coesão, mas isso não quer dizer que ele não pode ser facilmente integrado com outras ferramentas. Uma das provas disso é o tranquil, uma middlware que integra o Django ao SQLAlchemy .

Inspirado pela necessidade de usar o ZODB , por não querer usar Grok , Pylons ou outro e pela implementação do tranquil, implementei o django-zodb, uma middlware que integra o Django ao ZODB.

O endereço do projeto é: http://code.google.com/p/django-zodb/

Para instalar o projeto basta ler a página do wiki do projeto: http://code.google.com/p/django-zodb/wiki/Installation

No projeto tem um projeto em Django demonstrando como usar o django-zodb .

Ou seja usar ZODB com o Django também pode ser uma boa alternativa!

11/12/2007

Segundo Django Sprint dia 1 de Dezembro

Sprint é um evento onde os desenvolvedores, colaboradores e simpatizantes com alguma ferramenta opensource se unem para implementar novidades de arrumar erros existentes nessa ferramenta. E dia 1 de Dezembro ocorrerá o segundo Django Sprint desse ano.

Para participar do Sprint, inscreva-se na página do wiki do Django e no dia do Sprint fique atento no canal #django-sprint, onde todos os envolvidos com o Sprint e os responsáveis pelo código do Django estarão para auxiliar e tirar dúvidas.

Se você ainda não conhece o processo de criação de tickets, envio de path's utilizado no desenvolvimento do Django, leia esse artigo: Contributing to Django.

10/12/2007

SQLAlchemy no Django com tranquil

Muitos programadores reclamam a falta de integração do Django com o SQLAlchemy. Há até um branch no projeto do Django para realizar essa integração, mas esse branch anda meio parado no momento.

Em paralelo a isso foi criado um projeto chamado tranquil, que tem por objetivo integrar o SQLAlchemy no Django.

As features mais legais desse projeto implementado até o momento são:
O projeto está no início ainda, mas será bem interessante quando for possível usar o Elixir no Django.

O site do projeto é: http://code.google.com/p/tranquil/

10/11/2007

Intalando XMMS com suporte a wma no Ubuntu

O XMMS é meu player de música favorito. Um dos motivos é a semelhança com o Winamp. O suporte a vários skins também me agrada.

Algumas das músicas que tenho são em formato wma e o XMMS não toca wma por padrão, mas como uso o Ubuntu como distribuição, instalar o XMMS com suporte a wma e com skins é tarefa fácil, basta digitar o comando abaixo no terminal:

$ sudo apt-get install xmms xmms-wma xmms-skins

10/10/2007

Instalando o Adobe Flex no Ubuntu

Eu resolvi "brincar" com o Flex, para ver como é a integração dele com o Django e para aprender mais sobre essa ferramenta. E para isso instalei ele no meu Ubuntu.

Para instalar o Flex no é necessário ter o Java Runtime Environment (JRE) instalado. Para instalar o JRE eu utilizei o apt-get, basta digitar a seguinte linha no terminal:

$ sudo apt-get install sun-java6-jre sun-java6-plugin sun-java6-fonts

Após isso é só fazer o download do SDK do Adobe Flex no site da Adobe: http://download.macromedia.com/pub/flex/sdk/flex2_sdk_hf1.zip

Feito isso descompacte o zip e poderá utilizar o Flex.

Para verificar se tudo esta funcionando, basta executar os exemplos de aplicações que vem junto com o SDK do Flex. Para execute o arquivo build-samples.sh que fica na pasta samples.

E bom proveito.

10/09/2007

Lançado o e-book Diabetes na Prática Clínica

Ontem (8/10) foi o lançamento oficial do e-book "Diabetes na Prática Clínica". Esse e-book é um projeto pioneiro lançado pela Sociedade Brasileira de Diabetes para estimular a educação médica continuada.

Toda a parte de programação e banco de dados projeto foi desenvolvido por mim, e eu utilizei o Django como ferramenta para o desenvolvimento. E o layout e desenvolvimento visual foi feito pelo Eduardo Frick.

O mais interessante desse projeto foi a utilização do Django. Em todos os trabalhos que fiz em parceria com o Eduardo Frick sempre utilizamos PHP. Mas, como um bom pythonista e djanger, convenci o Eduardo a trabalharmos com Django nesse projeto e ele me deu seu voto de confiança.

Essa escolha foi arriscada, mas eficaz! Com o Django foi possível solucionar problemas complexos de maneira simples e rápida.

Nesse projeto eu usei e abusei do que mais gosto do Django: o newforms, ferramenta de serialização, template tags e template filters deixando de lado as generic views e o admin do Django. Fiz essa escolha pela necessidade de fazer um painel de administração bem específico.

Usei também o Prototype para facilitar o trabalho com AJAX e Javascript.

O resultado foi um sucesso e espero que vocês gostem!

10/08/2007

Sob nova direção

A partir de hoje (08/10/2007), junto com Pedro Werneck eu faço parte da equipe de moderação da lista de discussão do PythonBrasil.

A minha entrada na equipe marca a saída de Osvaldo Santana da moderação da lista. O pedido de aposentadoria do Osvaldo, foi uma surpresa para mim. Desde que participo da comunidade ele é moderador da lista e fez bem esse trabalho enquanto esteve a frente da moderação. Por isso espero fazer esse trabalho da melhor maneira possível. E até já estou me familiarizando com o moderationtools ( ferramenta utilizada pelo Osvaldo para moderar a lista).


Se você programa em Python e não faz parte da lista, que tal se inscrever na lista e fazer parte dessa comunidade?. Mas, se você não programa em Python ainda, que tal se inscrever e conhecer essa linguagem que tem mudado o ponto de vista ( e a vida ) de muitos programadores?

10/04/2007

Bibliotecas do .NET Framework terão código-fonte aberto

Parece mentira, mas não é!

Mas segundo Scott Guthrie, que está a frente do desenvolvimento do ASP.NET, as bibliotecas do .NET Framework 3.5 terão o código-fonte aberto, sobre a Microsoft Reference License.

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á.

8/16/2007

Baixando uma página com IronPython

Ouvi dizer que é baixar uma página com IronPython exige mais linhas de código do que usando CPython e urllib2. É verdade?
Não. É possível baixar uma página em IronPython com a mesma quantidade de linhas que se usaria com o urrllib2.

Como que eu faço isso?
É bem simples. Veja:
>>> from System.Net import WebClient
>>> site = WebClient().DownloadString('http://pyman.blogspot.com')
>>> print site

E se eu quiser salvar uma página em um arquivo? Há uma maneira bem simples de se fazer isso com CPython. E com o IronPython como fica?
No IronPython a simplicidade é a mesma. Olha só:
>>> from System.Net import WebClient
>>> WebClient().DownloadFile('http://pyman.blogspot.com', 'pyman.html')

Legal esse IronPython ein!!!!


----------------------------
Gostaria de deixar bem claro, que este post é uma resposta a um post [1] feito pelo meu amigo Walter Cruz sobre o mesmo assunto.

Outras referências sobre o assunto:
[1] - http://devlog.waltercruz.com/baixando_pagina_com_python
[2] - http://andrzejonsoftware.blogspot.com/2007/05/how-to-download-web-page-with.html
[3] - http://www.voidspace.org.uk/python/weblog/arch_d7_2007_08_11.shtml#e790

8/13/2007

Django no Ubuntu

Foi criado um package para o Django no Ubuntu [1]. Com isso é possível instalar o Django no Ubuntu com apenas um comando:

sudo apt-get install python-django

Simples, fácil e rápido como tudo na vida deve ser!

[1] - http://packages.ubuntu.com/feisty-backports/python/python-django

8/09/2007

Django na PyCon Brasil

Dia 30 de agosto a 1 de setembro na SOCIESC em Joinville - Santa Catarina, acontecerá o maior encontro de desenvolvedores, amantes e simpatizantes pela linguagem de programação Python o PyCon Brasil.

Esse ano a PyCon Brasil [1] contará com duas palestras e um treinamento básico sobre Django. Aliás o treinamento, será ministrado por este singelo djanger que vos escreve (eu). Essa participação de djangers na PyCon é uma avanço, já que será o primeiro PyCon Brasil que conta com palestras e treinamentos relacionados ao Django.

O Django é um dos frameworks para desenvolvimento rápido para web em Python com mais ascensão no Brasil. Devido ao crescimento da comunidade aqui no país, que começou a se formar em dezembro do ano passado com uma lista de discussão no google groups [2]. Um sintoma do crescimento da comunidade Django aqui no Brasil é a participação de djangers brasileiros no planet oficial do django, além das participações de brasileiros na listas de discussões oficiais do Django [3].

Se você curte Python, Django, quer aprender mais sobre Python, Django, Zope, conhecer os amantes dessa linguagem e saber o que a galera anda fazendo com Python aqui no Brasil. Comece a arrumar as suas malas, ainda há tempo de fazer sua inscrição [4].

Ótima oportunidade de aprender e fazer amigos!

[1] - http://pyconbrasil.com.br/
[2] - http://groups.google.com/group/django-brasil
[3] - http://www.djangoproject.com/community/
[4] - http://pyconbrasil.com.br/sobre-o-evento/inscricao

8/01/2007

Django Master Class

Jeremy Dunck, Jacob Kaplan-Moss, Simon Willison disponibilizaram online a apresentação deles sobre Django feita na OSCON desse ano.

Essa apresentação trata de técnicas avançadas em Django abordando: o uso de testes unitários, OpenID, criação de Fields Customizados, middleware, signal's, ajax entre outros temas.

Essa apresentação é parada obrigatória para quem quer aprofundar seus conhecimentos em Django.

Para quem quiser conferir é só acessar:
http://toys.jacobian.org/presentations/2007/oscon/tutorial/

6/21/2007

PHTC

Fazendo o mesmo teste [1] que o Walter fez [2], para descobrir minha personalidade como porgramador. Segundo o teste eu sou um Planjeador, gosto de programar em alto nível (Hight-level), curto trabalhar em equipe (Team) e sou Conservador.

Gostar mesmo de planejar não gosto, mas planejo... Em minha opinião eu sou mais executor do que planejador, mas, sempre que posso planejo.

Eu gosto de linguagens de alto-nível como Python, Ruby, mas também gosto de brincar com C.

Trabalhar em equipe, ensinar e compartilhar conhecimentos é uma das coisas que mais gosto. Ta precisando de professor ou ajuda por ae ?

E para finalizar eu sou conservador sim! Não gosto de comentar no código! Para mim quanto mais simples, menos código, melhor! Também gosto de otimizar e refatorar códigos, e testar, mas sem comentários por favor!

Ps: Os únicos comentários que gosto são esses comentários sobre posts, que vocês também fazem aqui, por isso podem comentar a vontade.

[1] - http://devlog.waltercruz.com/dhtb#comments
[2] - http://www.doolwind.com/index.php?page=11

6/16/2007

Instalando o mono e o IronPython no Ubuntu

Hoje resolvi instalar o mono [1] e o IronPython [2] no 'meu' Ubuntu 7.04.

Eu achei 2 textos que me auxiliaram na instalação [3] [4], e então resolvi postar aqui passo a passo da instalação.

Comecei instalando o mono, seus utilitários e o monodevelp que é um ambiente de desenvolvimento para .net no linux. Como uso o Ubuntu, tudo isso foi instalado com um apt-get:

# sudo apt-get install mono mono-gmcs mono-gac mono-utils monodevelop

Para instalar o IronPython, eu fui no site dele e baixei a versão 1.1 com os binários do IronPython [5].

Depois de baixado, eu descompactei o arquivo, e executei o shell interativo do IronPython através do comando no temrinal:

mono ipy.exe

E eu quisesse executar um arquivo .py com o IronPython no mono era só eu utilizar o comando no temrinal:

mono ipy.exe meuarquivo.py


Eu instalei a versão 1.1 do IronPython, mas a versão 2 alpha já pode ser testada [6].

[1] - http://www.mono-project.com/
[2] - http://www.codeplex.com/IronPython/
[3] - http://www.guiaubuntupt.org/wiki/index.php?title=Programacao/.Net
[4] - http://groups.google.com/group/comp.lang.python/browse_thread/thread/398aca428247ad7e/
[5] - http://www.codeplex.com/IronPython/Release/ProjectReleases.aspx?ReleaseId=2573
[6] - http://www.codeplex.com/IronPython/Release/ProjectReleases.aspx?ReleaseId=438

6/12/2007

djangosites.org - galeria de sites feito em django

Eu estava navegando na internet quando encontrei um site feito em django que achei interessante. O djangosites.org, e resolvi escrever sobre ele.

O djangosites é um site que tem por objetivo divulgar sites feitos em django.

O mais legal desse site é que você pode se cadastrar, votando e comentando sobre os sites cadastrados e se tiver desenvolvido um site usando django, pode divulgá-lo também.

Essa é uma dica para quem quer divulgar seu trabalho feito em django, ou ver sites que utilizam o django.

5/31/2007

IronPython Cookbook Wiki

Para os interessados em IronPython e .NET, foi criado o IronPython Cookbook Wiki [1].

Que é um Wiki que terá como conteúdo artigos e códigos relacionados a IronPython e .NET.

O Wiki mal foi lançado é já tem muito conteúdo interessante, como por exemplo, um post mostrando como conectar ao Active Directory usando IronPython [2].

[1] - http://www.ironpython.info/index.php/Main_Page

[2] - http://www.ironpython.info/index.php/Connecting_to_Active_Directory

Uma imagem vale mais que mil palavras

A imagem ao lado representa uma linguagem que usa tipagem estática!

Agora fica claro porque as linguagens com tipagem dinâmica como Python e Ruby vem aumentando sua popularidade entre os programadores a cada dia que passa.





5/18/2007

Django Newforms

Eu estava escrevendo um post completo sobre o newforms do django, quando eu vejo que eles atualizaram a documentação no site oficial hoje. E vários assuntos que estava abordando e que não tinham na documentação agora estão lá. Por isso vou deixar este post engavetado quietinho, quem saiba ainda precise dele?

Mas para quem quer aprender ou saber mais sobre newforms ai vai umas dicas:

A documentação oficial pode ser acessada aqui -> http://www.djangoproject.com/documentation/newforms/

Na documentação oficial, aborda os seguintes temas:
  • arquitetura do newforms que é formada por fields, widgets e forms.
  • criação, validação e exibição dos formulários em html.
  • criação de formulários a partir de um existente usando herança.
  • documentação sobre os fields (novo)
  • geração de formulários através do model ou instância.

Há coisas que ainda não tem documentação como personalização de formulários gerados através de um modelo ou uma demonstração de como um model por interferir num form gerado pelo newforms, mas isso eu posso mostrar em outros posts.

Abaixo alguns links sobre newforms que valem a pena serem lidos.

http://pythonidae.blogspot.com/2007/03/django-e-o-quebra-cabea-com-newforms_27.html
http://weblog.bignerdranch.com/?p=31
http://eggdrop.ch/blog/2007/02/15/django-dynamicforms/
http://code.pui.ch/2007/01/07/using-djangos-newforms/
http://www.zoia.org/blog/2007/04/23/using-dynamic-choices-with-django-newforms-and-custom-widgets/
http://unpythonic.blogspot.com/2007/01/django-newforms-for-models.html
http://www.pkshiu.com/loft/archive/2007/04/custom-validation-in-django-newforms-library

5/16/2007

Adeus Vim!

Eu utilizava o Vim, para desenvolver em Python, tanto para desktop como para web com django. O que mais gostava no Vim é que ele tem suporte para a sintaxe de templates do django e os temas que vem nele. Mas, estou tendo muitos problemas com ele, relacionados a identação automática. Ele me mostra a identação correta, mas na verdade a identação esta errada.

Se eu programasse em outra linguagem, não teria problemas, mas como programo em Python identação errada é sinonimo de código errado.

Já tive esse problema com o Vim uma vez, e para resolver, usei o IDLE para arrumar as identações de todos os códigos de um sistema que havia feito em django e com a reincidência do problema, vou aposentar o Vim.

Andei olhando vários editores e um deles me agradou muito, O Scite [1].

Algumas características dele:
  • Suporta várias linguagens
  • Exporta o código para html, pdf
  • Auto-identação
  • Suporta temas de cores, mas devem serem configurados manualmente
  • É bem leve
  • É suportado por windows/linux
Só uma questão que ainda não vi. Usar ele com as templates do django.

[1] - http://www.scintilla.org/SciTE.html

5/06/2007

Tipagem dinâmica + OO, é disso que o povo gosta

Segundo o tiobe [1], python subiu mais um nível no ranking de popularidade das linguagens, ficando em 7º.

Mas o mais surpreendente foi o que aconteceu com ruby que passou de 19º para 10º subindo 9 posições.

O fato de Python e Ruby estarem alcançando a popularidade dos programadores é algo que pode ser comprovado por um fato que consta na mesma pesquisa da tiobe, que a popularidade de linguagens orientada a objetos continua crescendo e que a popularidade de linguagens com tipagem dinâmica vem crescendo bastante e se continuar dessa maneira alcançará e ultrapassará o nível de aceitação das linguagens com tipagem estática.

Isso acontece porque, pelo menos na minha opinião, as linguagens mais simples, fáceis e com menos 'burocracias', continuem a ganhar a confiança de cada vez mais programadores.

A prova real de que essas linguagens estão agradando é o fato da Microsoft utilizar o Python e Ruby através do IronPython e do IronRuby como linguagens dinâmicas para a mais nova menina dos olhos da Microsoft, o Silverlight.

Muitos podem contestar dizendo que tipagem estática é uma auto-documentação e por isso é mais simples e fácil e bla e blé e bli, mas o duck typing é a maior prova de que se a ave fizer 'Quá quá', ela não precisa ter um crachá de pato para sabermos que elá não é um pavão e sim um pato.

[1] - http://www.tiobe.com/index.htm?tiobe_index

IronPython no Silverlight - primeiro exemplo

A alguns dias atrás a Microsoft lançou oficialmente o Silverlight, uma ferramenta para apresentações e animações para web, para ser concorrente do Adobe Flash.

As principais características do Silverlight é a que ele é OpenSource e que ele é programado usando linguagens dinâmicas, entre elas o IronPython.

O desenvolvimento de apresentações funciona da seguinte maneira:

1 - Criamos o arquivo xaml, que é um xml que representa toda a parte visual da nossa apresentação. Ele pode ser criado 'no braço', sendo codificado ou usando o Microsoft Expression Design [1] que é uma ferramenta de ilustração e design gráfico onde você cria os desenhos e pode exportá-los para xaml.

2 - Criamos o arquivo que terá toda a parte de programação da noss apresentação. Como usaremos o IronPython, será um arquivo .py.

3 - Usando o Silverlight SDK, criamos a função createSilverlight, que é um javascript que faz a exibição da apresentação no html.

4 - Chamamos a função createSilverlight no html para exibir nossa apresentação.

Para desenvolvermos nossa primeira apresentação é necessário o player do Silverlight [2] e o SDK dele [3].

Vamos criar uma apresentação que carregue um texto quando a apresentação foi carregada. Vamos começar pelo xaml.

Scene.xaml

<Canvas xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Width="100" Height="100" Background="Red" >

<x:Code Source="primeiro.py" Type="text/python" />

<Canvas Loaded="OnLoad" />

<TextBlock x:Name="Texto" Foreground="White" Text="IronPython" />

</Canvas>


O xaml acima é formado por 4 linhas praticamente. A primeira é a Canvas onde contém a linkagem com os xmlns oficiais do silverlight e ele também é o fundo da nossa aplicação que nesse caso use a cor de fundo como vermelha e usei o tamanho de 100x100.

<Canvas

xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

Width="100" Height="100"

Background="Red"

>

A segunda, a x:Code é responsável por configurar o tipo da linguagem e onde fica o arquivo com os comandos.

<x:Code Source="primeiro.py" Type="text/python" />

A terceira linha contém uma tag canvas que uso apenas para colocara função Loaded que é disparada quando a apresentação é carregada. O nome da função chamada quando a apresentação é carregada é OnLoad.

<Canvas Loaded="OnLoad" />

E para finalizar o nosso texto que terá a cor branca e no python será representado pela instância Texto.

<TextBlock x:Name="Texto" Foreground="White" Text="IronPython" />

Agora vamos para o nosso arquivo em Python, que não passa de uma função chamada OnLoad que atribui um valor ao texto que criamos através do parâmetro Text.

primeiro.py

def OnLoad(sender, args):

Texto.Text = "Isso é d+++"

O SDK do silverlight dispoe do Silverlight.js e do CreateSilverlight.js que é um modelo para criação da função que chamará o xaml. Vamos abrir o CreateSilverlight.js e modificar a função createSilverLight.js para que chame o Scene.xaml. Nessa função também configuramos o framerate entre outros atributos.

function createSilverlight()

{

Sys.Silverlight.createObject("Scene.xaml", pe, "wpf",

{width:'350', height:'350',

inplaceInstallPrompt:false, background:'#00000000', isWindowless:'true',

framerate:'30', version:'0.95'},

{onError:null, onLoad:null},

null);

}


E para finalizar chamamos a função createSilverlight no nosso arquivo .html

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3c.org/TR/1999/REC-html401-19991224/loose.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">



<head>

<title>Primeiro</title>

<script src="js/silverlight.js" type="text/javascript" ></script>

<script src="js/CreateSilverlight.js" type="text/javascript" ></script>

</head>



<body>

<div id="iron" >

<script type="text/javascript">

var pe = document.getElementById("iron");

createSilverlight();

</script>

</div>

</body>

Com o Silverlight + IronPython pode-se fazer coisas que só a imaginação pode limitar.

Em breve, mais sobre Silverlight e IronPython, mas por enquanto é só.

Quer mais? [4].

[1] - http://www.microsoft.com/Expression/products/overview.aspx?key=design

[2] - http://msdn2.microsoft.com/en-us/silverlight/bb419317.aspx

[3] - http://www.microsoft.com/downloads/details.aspx?FamilyID=54B85D84-604D-43DB-BCFE-7AFD278208D8&displaylang=en

[4] - http://www.microsoft.com/brasil/msdn/tecnologias/expression/intro_silverlight.mspx

4/27/2007

Captcha no django

Você quer evitar spams em seus sistemas feitos em django?

Seus problemas acabaram! Existe um projeto opensource da verificação capctha para django. Este projeto utiliza os newforms o que é algo muito bom, já que a maneira antiga de tratar formulários no django tende a ser extinta.

Para saber mais sobre o projeto acesse: http://www.lostlogicx.com/captchasblow/

4/19/2007

Lançado o Ubuntu 7.04 veja como atualizar


Lançado o Ubuntu 7.04 (Feisty Fawn) , veja o que há de novo nele aqui: http://www.ubuntu.com/getubuntu/releasenotes/704tour

Há 4 formas de adquirir ele:

1 - Baixando o iso: http://www.ubuntu.com/getubuntu/download

2 - Comprando o cd: http://www.ubuntu.com/getubuntu/purchase

3 - Requisitando o cd gratuitamente: https://shipit.ubuntu.com/

4 - Atualizando a sua versão do ubuntu: http://www.ubuntu.com/getubuntu/upgrading

Só lembrando, que para atualizar para o 7.04 você tem que estar com a versão 6.10.

Lançado o Bingo!


Depois do anúncio aqui está o lançamento. Este ainda não é o lançamento oficial, mas já está disponível no google code o código fonte do bingo.

Para quem não sabe o bingo é um CMS desenvolvido em django.

O blog, wiki, feeds RSS e atom já estão em funcionamento, mas há várias coisas a serem resolvidas, como os comentários e cadastro de usuários.

Para as tags usamos o django-tagging.

O marinho, meu parceiro no desenvolvimento do bingo colocou uma versão do bingo no ar para ver acesse http://marinho.webdoisonline.com/blog/.

Também foi criado um grupo de discussão para o grupo de desenvolvimento do bingo. Se quiser participar é só se inscrever. O e-mail do grupo é bingo-developers@googlegroups.com

Só lembrando que ainda não foram lançadas nenhuma versão release, mas em breve lançaremos o 0.1.

Para acessar o código fonte do bingo via svn use:

svn checkout http://bingo.googlecode.com/svn/trunk/ bingo

4/16/2007

O MVC, o MTV e o Django


Como muitos sabem, MVC ( Model – View – Controller ) é um padrão de desenvolvimento, que é um padrão que separa o desenvolvimento nessas 3 camadas.

Model – nessa camada é implementada o banco de dados ou o modelo objeto-relacional.

Controller – nessa camada é implementado as regras de negocio, onde são processados os dados vindo camada Model e passados para a camada View.

View – nessa camada é onde fica a interface do sistema.

O MVC é muito utilizado nos dias de hoje e tem agradado a muitos desenvolvedores para web por separar a parte de programação de dados da parte da programação visual de um sistema feito para web, onde geralmente essas partes de um sistema são feitos por pessoas diferentes.

Em conseqüência ao aceitamento desse padrão pela comunidade, surgiram muitos frameworks que implementam esse padrão como o Ruby on Rails, Struts, Mentawai, TurboGears, Django entre muitos outros.

Como citado acima o desenvolvimento usando o django é feito de acordo com o MVC separado nessas 3 camadas. Até ai tudo perfeito, mas há um problema.

Qual problema?

O django usa as nomenclaturas para as camadas,diferente do modelo MVC. Para modelo o django usa model, para view ele usa template, até ai tudo bem. Mas ele define o controller como view. Isso mesmo, o django define o controller como view. E tem também as generic ‘views’ que são controllers genéricos para situações comuns como master/detail, delete, update.

O problema é maior ainda porque muitos desenvolvedores acham que essa nomenclatura errada chique porque as iniciais delas são igual aquele canal de TV a MTV ( Model – Template – View ).

Eu mesmo não gostei nada disso, porque isso pode confundir muitos que estão iniciando nesse framework.

Eu só não entendo porque eles resolveram chamar o controller de view.

Pensei, pensei e ainda não descobri.

Bom, eu prefiro o MVC e você?