Mostrando postagens com marcador python. Mostrar todas as postagens
Mostrando postagens com marcador python. Mostrar todas as postagens

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!

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/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?

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/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/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

5/31/2007

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/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

4/12/2007

Ruby e Python duas irmãs de pais diferentes.

Ruby foi desenvolvida por Yukihiro Matsumoto, com o objetivo de criar uma linguagem simples, mas poderosa. Já python, foi criada por Guido Van Rossum em 1991, com o objetivo de criar uma linguagem simples com fácil aprendizado.

Assim nasceram duas irmãs.

Digo duas irmãs porque no mundo da programação elas têm características parecidas entre si, ambas são bonitas, simpáticas, ousadas, mas uma (ruby) é mais atrevida, outra (python) é mais organizada.

Python é toda organizadinha com suas identações.

>>>if “ola” == “ola”:
print “ola”

Já ruby é mais atrevida com seus blocos flexíveis.

>>if “ola” == “ola”: puts “ola” end

Ou

>>if “ola” == “ola”
puts “ola”
end

Ambas são interpretadas, e tem seu ambiente interativo e também com tipagem de forma dinâmica, não precisando informar de qual tipo aquela variável será. Se eu quiser números:

>>>valor = 1

E não:

int valor = 1

Objetos? Nelas tudo são objetos. Um ‘oi’ é objeto, um ‘tchau’ é objeto também, e um número? Lógico que é objeto. Mesmo tudo sendo objeto não é necessário programar orientando a objetos. Se quiser cumprimentar:

puts ‘oi’

Ou

print ‘oi’

Ou se despedir

puts ‘adeus’

Ou

print ‘adeus’

Ambas servem para tudo, mas cada uma tem seu ponto forte.

Ruby voa nos trilhos da web (rubyonrails), como se fosse um trem bala.

Já python conquistou as buscas na web (google), os vídeos (youtube), os efeitos 3D (blender), e até o espaço (NASA).

Como podem ver, as duas são atraentes. Então qual escolher?

Fique tranqüilo!

No mudo da programação bigamia não é crime!

Concorrendo ao livro do simplesideias.com.br

4/08/2007

IronPython o Python para .NET

IronPython é um projeto da Microsoft (Quem disse que tudo que a Microsoft faz é ruim?) que é a implementação do Python para a plataforma .NET.

Com isso temos a integração do .NET Framework e sua bibliotecas, como o WindowsForms, com o Python.

Para ter o IronPython basta fazer o download dele aqui. E para que ele funcione direitinho é necessário o .NET Framework que pode ser baixado aqui.

Para acessar o console do IronPython basta executar o ipy.exe.

Programando algumas coisas no console poderá ver que os comando básicos do Python funcionam perfeitamente. Por exemplo:

>>> print 'ola IronPython'
ola IronPython
>>>range(3)
[0,1,2]
>>>def soma(a,b):
return a+b
>>>soma(1,2)
3

Agora usando uma biblioteca do .NET Framework

>>>import System
>>>System.Environment.OSVersion
Microsoft Windows NT 5.1.2600 Service Pack 2

E agora para finalizar este post sobre o básico do básico do IronPython, usando as bibliotecas padrão do Python no IronPython. Para isso, é só adicionar o caminho da pasta lib do Python no path. Se o seu Python for a versão 2.4, ficaria assim:

>>>import sys
>>>sys.path.append(r"c:\python24\lib")

E agora usando a biblioteca do Python no IronPython:

>>>import os
>>>os.getcwd()
'C:\\ironpython'

IronPyth9on funciona independente de ter Python instalado, mas daí não tem como utilizar a biblioteca padrão do Python no IronPython.

Só para finalizar...

Se você quer trabalhar com .NET, IronPython é uma grande alternativa para escolha de linguagem, já que as outras opções são C#, J#, VB.NET.

E com o projeto mono, sua aplicação usando IronPython fica portável tnato em ambientes Windows como Linux.

Para saber mais acesse o site do projeto: http://www.codeplex.com/IronPython

2/28/2007

Python direto do Pen Drive

Já imaginou poder executar arquivos desenvolvidos em ptyhon ou desenvolver em python direto do Pen Drive, sem precisar instalar nada no computador?

Isso é possível através do projeto Portable Python [1].

Na sua versão atual ( 1.0 BETA ) já vem o Python 2.5, Django 0.96 (eba!!!), e o editor Scite 1.71.

Com o Portable Python é possível criar sistemas usando django + sqlite ( por exemplo ) e executá-los direto do Pen Drive. Quer dizer não precisa ser nessariamente um Pen Drive, pode ser uma camera digital, um mp3player e etc.

=]

[1] - http://www.portablepython.com/site/download/

1/30/2007

MySQLdb + Python 2.5 no windows

Já faz mais de 4 meses que saiu a versão 2.5 do Python, há novidades muito interessante nessa versão. Mas, muitos ainda estão privados de usá-la, porque muitos projetos ainda não suportam essa versão do Python.

Um grande exemplo é o MySQLdb, o módulo para acesso ao MySQL no Python. Esse projeto não permite nem a instalação no windows para Python 2.5, fazendo com que muitos continuem com o Python 2.4.3 ou migrem para Linux, basta apenas um pesquisa no Google por 'MySQLdb in Python 2.5' para ver a instatisfação de muitos programadores.

Mas depois de horas e horas na internet, procurando alguma solução achei um instalador do modulo MySQLdb para Python 2.5. Se você tinha esse problema, assim como eu, agora é só fazer o donwload dele clicando aqui.

Depois do módulo instalado é só testar e usar:

Python 2.5 (r25:51908, Sep 19 2006, 09:52:17) [MSC v.1310 32 bit (Intel)] on win32
Type "copyright", "credits" or "license()" for more information.

****************************************************************
Personal firewall software may warn about the connection IDLE
makes to its subprocess using this computer's internal loopback
interface. This connection is not visible on any external
interface and no data is sent to or received from the Internet.
****************************************************************

IDLE 1.2
>>> import MySQLdb
>>>

1/03/2007

Ano novo PythonBrasil novo!!!!!

Ontem Oswaldo Santana colocou no ar o novo visual e o novo modelo do site PythonBrasil.
Para que não sabe PythonBrasil é o site da comunidade Python brasileira.

O visual do novo site ficou bem legal. E a disposição das informações também.

Aproveitei que estou de folga e ajudei na construção de algumas páginas novas. E espero continuar colaborando.

ah, antes que eu esqueça.

Feliz 2007 para todos....

12/15/2006

Powered by Python

A lista de sites e empresas que utilizam Python só cresce a cada dia...

Os principais nomes são: Google, Nasa, o Governo Federal Brasileiro, Varig, IDG Now...

e agora um dos sites mais acessado do mundo tamém entra nessa lista: YouTube!


Você ainda não faz parte dessa lista? Ainda ta em tempo ein!!!!

=]

12/11/2006

Qual interface gráfica usar?

Quem está entrando no mundo Python, geralmente tem uma grande dificuldade quando se trata de desenvolver aplicativos que utilizem inteface gráfica (GUI).

O grande problema não está relacionada com a falta de recursos que python tem ou com dificuldade de programar interfaces e sim na grande variedade de bibliotecas disponíveis para Python. Sendo assim, no começo é bem complicado escolher qual utilizar.

Nesse post vou tratar das seguintes bibliotecas: PyGTK, PyQt, wxPython, PySWT, PyUi e Tkinter.

Tkinter
Acompanha a distribuição oficial do interpretador Python. É simples de utilizar, mas é muito pobre em componentes visuais. Uma grande vantagem que é portável em qualquer ambiente em que funcione o Python.


PyGTK
Baseada no GTK do GNOME, tem ricos componentes visuais e boa performance. Dois problemas que acompanham essa biblioteca é a portabilidade e o tamanho do código.
O GTK funciona também no Windows, mas não é algo confiável e fácil de se fazer...
Em relação ao tamanho do código, na sintaxe do PyGTK é necessário a utilização de comandos retundantes em muitas partes do código, assim necessitando de muitas linhas de código para se fazer algo.

PyQt
Baseada na biblioteca QT do KDE, tambem tem boa performance e ótimos componentes visuais, e a estrutura de programação em PyQt é boa, diferente do PyGTK.
O lado ruim dessa biblioteca é a portabilidade. Ela funciona em Linux perfeitamente, mas em ambientes Windows, tem os mesmos problemas que o PyGTK.
Além disso PyQt é licenciado pela GPL. Sendo assim tem alto custo para desenvolvimento para sistemas comerciais.

wxPython
Baseada em wxWindows, funciona no Windows e no Linux. Rica em componentes visuais e bem documentada. Mas é dificil de se aprender, é um poco instável, e a API é meio complicada.

PySWT
baseada no SWT do JAVA. Rica em componentes visuais e facil de utilizar. Ao meu ver, muito boa. MAs muito pouco utilizada...

PyUi
é uma biblioteca feita com o intuito de se desenvolver interfaces para jogos. Utiliza pygame.. Mas pode ser usadas para qualquer tipo de aplicação.

Conclusão:
* Tkinter - no caso de uma aplicação que não necessite grande apelo visual
* PyQT - para qualquer aplicação que seja GPL e em Linux
* PyGTK - para qualquer caso em que a PyQT não seja uma boa opção, como em aplicações comerciais
* PyUi - para desenvolver Interfaces para Games

Agora no caso de desenvolver bons aplicativos para Windows ainda fica a pergunta PySWT ou wxPython? wxPython é mais utilizada. Mas será que maior popularidade influi em melhor opção?

Eu estou testando as duas e espero encontrar a resposta...