devlog - Categoria: Django http://devlog.waltercruz.com/?tempskin=_atom Desenvolvimento, software livre e intrigas b2evolution 2008-07-26T03:01:53Z (In)utilidades com o tweet Walter Cruz http://waltercruz.com http://devlog.waltercruz.com/in-utilidades-com-o-tweet 2008-05-27T22:14:44Z 2008-05-27T22:14:44Z Você vê uma conversa entre pessoas e fica confuso: quem disse o que e quem está respondendo o que? Não tema, http://www.tweet2tweet.com/ resolve!

O http://www.tweetwheel.com é menos útil, mas tem um efeito visual bem bacana.

E tudo rodando em google app engine..

]]>
Code Review Walter Cruz http://waltercruz.com http://devlog.waltercruz.com/code-review 2008-05-04T17:33:28Z 2008-05-06T02:06:31Z http://mail.python.org/pipermail/python-3000/2008-May/013408.html

Em novembro de 2006, Guido Van Rossum gravou um vídeo onde ele demonstrava o Mondrian, uma ferramenta para code review que ele estava desenvolvendo para o google. Porém, a ferramenta começou a ficar amarrada demais a parte proprietária da infraestrutura do google, o que tornou inviável seu lançamento como open source.

Porém, na lista Python-3000, ele anunciou uma ferramenta, inspirada no mondrian, mas com suporte a subversion, feita em Django e hospedada no google app engine.

Ele espera que o código fonte dessa aplicação seja disponibilizado em breve. A aplicação executando pode ser vista aqui: http://codereview.appspot.com/ e você pode ler o anúncio de GvR na lista Python-3000.

O código fonte já está disponível em: http://code.google.com/p/rietveld/

Mais em:

]]>
Pylons no Google App Engine Walter Cruz http://waltercruz.com http://devlog.waltercruz.com/pylons-no-google-app-engine 2008-04-14T14:29:17Z 2008-04-14T14:35:08Z http://code.google.com/p/appengine-monkey/wiki/Pylons

Ian Bicking e outros trabalharam para tornar o Pylons disponível no Google App Engine, e já é possível usá-lo!

No seu post, Ian Bicking dá uma descrição detalhada do trabalho necessário. Como eu também tentei executar o Pylons, sei um pouco da dificuldade que foi.

Segundo o google:

You can upload other third-party libraries with your application, as long as they are implemented in pure Python and do not require any unsupported standard library modules.

Parece simples, mas muitas coisas foram restritas e embora seja fácil usar alguma biblioteca implementada em python puro, as coisas se tornam bem complicadas quando se requer alguma extensão em C, como é o caso de muitas bibliotecas populares.

Mesmo um framework como o Django, que é tido como oficialmente suportado, tem limitações. Por exemplo, o admin, que um dos grandes trunfos do Django, depende dos models, que são parecidos, mas não iguais. Logo o admin, está de fora.

Além disso, tem o salto que é a utilização de um banco de dados não relacional (embora você possa fazer algumas consultas usando a sintaxe SELECT, usando o GQL). Muitas perguntas no grupo de discussão se referem a coisas comuns para o SQL, como COUNT e JOINs.

Outra limitação que é um pouco estúpida: o limite para o número de arquivos enviados é fixado em 1000.

Apesar disso, estou apenas esperando minha conta ser liberada para brincar lá! Enquanto isso, confira a lista de requisições e problemas.

]]>
Pylons: um meta-framework? Walter Cruz http://waltercruz.com http://devlog.waltercruz.com/pylons_meta_framework 2008-03-13T18:31:21Z 2008-03-30T19:29:10Z Desenvolvimento web hoje em dia é quase sinônimo de algum tipo de framework. Mesmo PHP, que é por tradição uma linguagem com tendência à certa desorganização, tem se adaptado e bons frameworks tem surgido nessa linguagem.

Minha linguagem preferida, como todos sabe, é Python. E nesse universo, frameworks é o que não faltam. O momentum agora é do Django, mas Zope/Plone tem seu espaço garantido. TurboGears já alcançou alguma reputação. Até o minimalista webpy tem o seu lugar. Nessa miríade de opções, a minha escolha recaiu sobre o Pylons. Assim como o TurboGears, o Pylons não é um framework full-stack, mas se define como um código cola entre outros componentes. Provavelmente, o Pylons seja melhor definido como um meta-framework do que como um framework. Talvez fique num lugar intermediário entre os dois, e já explico o por quê.

Uma das coisas que eu penso que define um framework é o fato de que ele toma decisões por você. Como é dito no jargão Rails, um framework é um software com opnião. O Rails já pressupõe que você usará o ActiveRecord, assim como o Django pressupõe que você usará o ORM do Django – que eu penso que já merecia um nome. O admin do Django depende de você usar o ORM do Django. É até possível que você use SQLAlchemy com o Django, mas perderá o admin, que é uma ferramenta poderosa. Essa á uma decisão mais ou menos incontestável que o framework tomou por você.

Já com o Pylons, a quantidade de decisões que o framework toma é miníma. A premissa básica é que tudo gira em torno de WSGI e seus middlewares. WSGI define um padrão de comunicação entre o servidor web que você for usar (por exemplo, o Apache) e o framework que você for usar. Mas também define que diversas camadas de possam ser encapsuladas dentro da sua aplicação antes da resposta ser entre ao servidor. Esse é um ponto central no Pylons, tão central atualmente que o controlador básico do Pylons é o WSGIController e todos os seus controladores estendem dele.

Fora isso, o seu projeto criado com o Pylons tem uma pasta model, mas não define se você deve usar SQLAlchemy, Storm ou a DB-API diretamente. O SQLAlchemy trabalha com o padrão DataMapper e você não gosta disso? Tudo bem, você pode escolher usar o Elixir, uma pequena camada que empacota o SQLAlchemy como ActiveRecord. Pylons não opta por nenhuma biblioteca JavaScript, embora o módulo Paginator possua extensões para as principais bibliotecas de JavaScript disponíveis atualmente. Não existe uma forma padrão de se construir formulários. Você pode ir desde o simples HTML, sendo validado com formencode, passando por ToscaWidgets e chegando até o formalchemy, mas nada disso é obrigatório. Você pode usar o Authkit como uma forma de implementar autenticação – e fique avisado que ele tem uma má-fama na comunidade, pelo menos no canal #pylons do FreeNode –, ou pode implantar a sua própria forma de autenticação. Como template, você pode escolher entre Mako, Genshi, Jinja, Kid, Cheetah. Como você pode ver, cada projeto Pylons pode ser bem diferente do outro.

Parece um pouco perigoso caminhar com tantas variáveis no caminho, ainda mais que no geral a funcionalidade ganha com isso seja pouca. E obviamente eu não o único preocupado com isso. Recentemente surgiu uma discussão sobre integridade conceitual, e de como o Django e o Pylons atingem ou não tal alvo. Eu ainda penso que é possível manter um framework plugável e atingir a tal da integridade conceitual. No mais, não existe magia negra no Pylons. e você tem a sensação de estar trabalhando com Python mesmo. Mas, como você viu acima, provavelmente estamos falando mais a respeito de um meta-framework do que de um framework completo. E isso pra mim é bom.

Um dos problemas atuais do Pylons é a relativa falta de estabilidade de suas APIS. Isso é parcialmente explicado pelo fato de ser versão 0.x ainda, e o fato de que muitas APIs dos componentes que ele agrega estão mudando. Algumas APIs que foram adaptadas do Rails form implementadas de forma pouco "pitônica" ou tem alguns problemas estruturais e vão mudar também (Routes e WebHelpers). É preciso estar dentro da lista de discussão, no IRC pra poder acompanhar o que está acontecendo.

A documentação não é ruim, mas com a mudança das APIs, ela se desatualiza rapidamente. E como o projeto agrega outros, muitas vezes você precisa visitar diversos sites até achar ou criar sua solução. Não chega a ser um empecilho, já que não são muitos lugares onde se preocupar (minhas principais dúvidas acabam girando entre o próprio Pylons e SQLAlchemy), mas pode frustrar os mais ansiosos. Com a versão 0.97 será possível criar um projeto já utilizando SQLAlchemy, que eu penso que tem tudo pra se tornar o padrão oficial do Pylons.

WSGI é uma parte interessantíssima. Na comunidade internacional, tem se falado mais de componentes WSGI do que middlewares, já que as aplicações tem se tornado mais e mais dependentes desses middlewares, e isso faz todo o sentido. Um exemplo do que pode ser feito com WSGI: com versões anteriores do ToscaWidgets, para que eles funcionassem e tivessem a aparência correta, era preciso inserir no seu template a chamada aos Javascripts e CSS do ToscaWidgets. Com as últimas versões, ao adicionar o middleware do ToscaWidgets, você especifica se quer que ele injete os recursos no seu HTML. Um avanço interessante, e um bom exemplo do que pode ser feito através dos middlewares WSGI. O Django inclui o conceito de middlewares, de forma um tanto quanto parecida com os middlewares WSGI.

Veja como ficaria esse exemplo, ao configurar os middlewares


    # The Pylons WSGI app
    app = PylonsApp()

    # CUSTOM MIDDLEWARE HERE (filtered by error handling middlewares)
    host_framework = PylonsHostFramework(default_view="mako")
    app = TGWidgetsMiddleware(app, host_framework, inject_resources=True)

Podemos embutir uma aplicação que fale WSGI como um controller no Pylons – como por exemplo, o Trac ou o MoinMoin. Muita coisa no Python está convergindo para WSGI: o antes monolítico Zope, na versão 3 foi quebrado em vários componentes e tem alguma integração com WSGI, embora eu não saiba dizer no momento como isso é feito. Django e TurboGears também falam WSGI, mas no Pylons isso está bem mais explícito, para o bem e para o mal.

Uma coisa que eu gostaria de ter feito e ainda não fiz são alguns experimentos com REST no Pylons. O deploy de uma aplicação WSGI sobre o Apache, usando FastCGI ou CGI não é complexo. Ainda não testei o mod_wsgi. Mas algumas coisas podem acontecer. Recentemente mudei minha aplicação para usar OpenID. Rodando ela no servidor do Paste, tudo correu bem. Ao fazer o deploy usando Apache, WSGI e Flup, um erro ocorreu. Após alguma pesquisa e ajuda no #pylons, descobri que o authkit está retornando um tamanho de página como inteiro, ao passo que o Flup esperava uma string. Uma modificação fácil de ser feita, mas que no mínimo provou que o Authkit nunca foi testado nesse ambiente.

Tendo dito isso, hoje o Pylons pode não ser o framework para a comunidade Python por uma série de razões, mas é o framework para mim.

Links sobre a discussão sobre integridade Conceitual

]]>
Progressos no Jython Walter Cruz http://waltercruz.com http://devlog.waltercruz.com/progressos-no-jython 2008-02-14T17:12:38Z 2008-02-14T17:12:38Z Algumas semanas atrás o Marcos me passou um link interessante: O Django estava rodando no Jython. Na época, estava rodando em um branch do Jython, o Modern. Atualmente, já foi feito o merge desse branch no trunk.

Agora, quem está se esforçando contribuindo com o Jython são as pessoas do Pylons. Há um esforço para executar o Pylons no Jython. O primeiro desafio foi fazer o setuptools rodar no Jython. Agora, eles estão trabalhando em cada componente do Pylons, trabalhando com o nose e diversos pacotes.

Se as coisas continuarem nesse pique, em breve a JVM será uma alternativa de fato viável para a execução de Python!

]]>
Exercício de Futurologia Walter Cruz http://waltercruz.com http://devlog.waltercruz.com/exercicio_de_futurologia 2008-01-09T14:31:03Z 2008-01-31T21:45:54Z Segundo a notícia do Tiobe, Python foi eleita a linguagem do ano de 2007.O ranking do Tiobe é uma espécie de medida de popularidade das linguagens de programação.

Para os amantes de linguagens dinâmicas, o ranking tem dado boas notícias. Ruby foi declarada a linguagem do ano de 2006 e Python de 2007. E um amante de Lua como eu, não poderia deixar de notar o crescimento de Lua.

Nesse ano, muitas coisas boas aconteceram na comunidade Python. O Django vem se firmando quase que como uma escolha natural para o desenvolvimento web em Python – embora minha escolha seja outra. WSGI está se tornando um padrão de facto. Embora eu não goste muito desses, Zope 3 e Plone 3 estão aí, mais componentizáveis e tendo algumas de suas partesutilizáveis como componentes WSGI. SQLAlchemy está bem maduro, e Storm parece ser uma alternativa bem interessante.

Eu apenas lamento que muita coisa no Brasil seja centrada em Zope/Plone. Talvez haja uma luz no fim desse túnel. Eu ainda não vi.

Dignas de nota são as considerações de Paul Jensen:

  • Python foi declarada a linguagem de programação de 2007. Foi uma disputa acirrada, mas no fim Python pareceu ter o maior crescimento percentual no período de um ano (2.04%). Não está claro porque Python teve esse grande salto em 2007. No último mês, pela primeira vez na história, Python ultrapassou Perl, o que é uma indicação clara que Python se tornou "de facto" a linguagem cola no nível do sistema. É especialmente amada por administradores de sistema e gerentes de build. Graças ao lançamento próximo de Python 3, as chances de Python se popularizar ainda mais são altas.
  • Uma porção de tendências interessantes pode ser derivada dos dados de 2007. Primeiro, linguagens sem coleta de lixo automática estão perdendo chão rapidamente. As linguagens mais populares com gerenciamento explícito de memória, C e C++, perderam ambas 2% em um ano. Outra tendência é que a batalha entre as linguagens de script parece estar acontecendo ao fundo. Há um fluxo contínuo de novas linguagens. Em 2006, Ruby entrou na cena principal, seguida esse ano por Lua. Na lista das 50 mais, Groovy e Factor entraram em cena. nenhuma dessas novas linguagens de script para ficar permanentemente, são apenas substituídas por sucessores.
  • Quem fez e aconteceu em 2007? Quem caiu? Os grandes vencedores são Lua pulou da 46ª posição para a 16ª), Groovy (da 66ª para a 31ª), Focus (da 78ª para 41ª), e Factor (surgindo em 45º lugar). As grandes quedas ficam por cnota de ABAP (da 15ª para a 29ª) e IDL (da 23ª para 48ª).
  • O que esperar de 2008? O que aconteceu com nossas previsões em 2007? No início de 2007, eu pensei que C# e D seriam os vencedores e Perl e Delphi os perdedores. De fato, C# foi um dos grandes vencedores, e Perl um dos grandes perdedores. Mas as previsões para D e Delphi estavam completamente erradas. D não avançou. Por outro lado, Delphi ficou em 10º lugar... E sobre 2008? C, C++ e Perl continuarão a cair. C e C++ porque não tem coleta de lixo automática. C++ irá ter uma pedra no sapato ainda maior porque a Microsoft não está mais suportando a linguagem. Perl está morto. Java e C# irão finalmenente ser as 2 linguagens mais populares. Parece-me que elas crescerão em 2008. Adivinhar quais novas linguagens estarão na lista das 20 mais em 2008 é uma tarefa difícil, mas eu acho que ActionScript e Groovy são bons candidatos.

Caio Moritz fez uma pequena análise também, bem interessante. E você, o que pensa de tudo isso?

]]>
Encontro Rails em Brasília? Walter Cruz http://waltercruz.com http://devlog.waltercruz.com/encontro_rails_em_brasilia 2007-10-19T12:49:08Z 2007-10-23T18:17:19Z http://notasderua.blogspot.com/2007/10/hoje-eu-estive-lendo-o-blog-do-akita-e.html

Tudo começou com o Akita vislumbrando um encontro de rails em São Paulo. Agora, o Ronaldo Ferraz e o Leonardo Faria estão planejando um encontro em Belo Horizonte.

Agora, o Tiago Ramos está tentando armar algo aqui em Brasília. Resta torcer pra galera aqui se animar!

Há uns meses, na lista django-brasil, o pessoal andou discutindo de fazer um evento sobre rails[bb]/django em Goiânia. Tomara que esse dê certo também!

]]>
LinuxChix Brasília 2007 Walter Cruz http://waltercruz.com http://devlog.waltercruz.com/linuxchix_brasilia_2007 2007-09-11T13:07:43Z 2007-09-18T18:06:05Z No feriado de Sete de Setembro e no dia 8, aconteceu o 5º Encontro LinuxChix Brasil, aqui em Brasília. O evento foi bem tranqüilo: recebi o meu kit com Linux Magazine, bloco de anotações, caneta e outras coisas mais, logo na entrada. Encontrei o meu camarada Gabriel logo no início, a turma mineira que veio com ele e batemos papos bem bacanas.

Palestras

Assisti a duas palestras sobre geoprocessamento, a "Software livre de Geoprocessamento - I3Geo" (com Ana Gabriela da Silva Ortiz) e "Sistema de Webmapping em plataforma livre: o georreferenciamento como ferramenta de tomada de decisão"( com Marcelo Felipe Moreira Persegona). O I3Geo é um software livre recentemente liberado pelo Ministério do Meio Ambiente e tem um enorme potencial.

Já na trilha banco de dados, teve a palestra do João Cosme sobre replicação de banco de dados PostgreSQL usando o Slony. Mais à tarde, ainda no primeiro dia do evento, teve a palestra do Fernando Ike, com o tema: "HA em PostgreSQL, o Elefante disponível para além do infinito".

Uma das palestras mais interessantes que eu vi no segundo dia foi a do Rubens dicas-l Queiroz, sobre a "Filosofia do Unix". Muitas citações, relatos de histórias engraçadas, uma palestra leve e descontraída. E olha que eu praticamente a assisti sem querer: queria ter visto a palestra "Do minix ao ext4: a evolução de um sistema de arquivos", do 'GNU' Cascardo. Mas fica pra próxima essa :D

Em se tratando de programação propriamente dita, assisti à palestra do Kov, sobre TurboGears no primeiro dia do evento, onde ele demonstrou as facilidades do desenvolvimento web com esse framework. Uma palestra que realmente me surpreendeu foi a "JavaScript everywhere: o tesouro escondido e a nova especificação", do Thiago Silva. Apesar de todos as declarações de ódio contra JavaScript que aconteceram nas 'discussões de mesa de bar', eu sou um fã da linguagem, que une uma expressividade muito alta, e vários paradigmas, numa combinação que, a meu ver, é muito interessante e original. Porém, descobri que o Thiago é muito mais fã do que eu. O seu JSTalk é de cair o queixo de qualquer um: uma implementação de um ambiente semelhante ao smalltalk, porém onde a linguagem é JavaScript. Precisa falar mais? Conversamos um pouco ainda sobre a nova especificação, que apesar de ter algumas coisas de que eu não gostei muito, deixará a linguagem ainda mais poderosa. Talvez a palestra mais fraca sobre programação tenha sido a que tratou de Caching em PHP. Mas nem tudo é perfeito, não é?

Embora segurança não seja um tema do meu maior interesse, acabei assistindo a algumas palestras sobre segurança. A primeira, "Aumentando a segurança da autenticação do squid com o LDAP", tratou de mostrar como configurar uma autenticação digest usando o squid, foi bem interessante. Muito boa também foi a palestra "Anti-Spam em um provedor: você vs clientes". Assisti a uma palestra sobre antispam no CONISLI no ano passado, e lembro que foi bem bacana também.

Apesar da falta de tradução da palestra "System Hardening" (o serviço de tradução estava disponível apenas no primeiro dia, mas por causa de problemas de atrasos com o vôo Georgy Berdyshev ele só pôde apresentar sua palestra no segundo dia), foi uma palestra muito boa mesmo. Quando alguém começa a sua palestra dizendo "eu tenho 20 anos e trabalho com software livre há 10", acho que isso deixa o cérebro um pouco desconcertado. Mas o cara demonstrou ser experiente. Pra ser sincero, ante a profusão de temas e lugares para se aumentar a segurança, eu diria que a palestra dele continha apenas os tópicos para um livro ou treinamento de segurança. Foi a última palestra que a assisti.

Conversas e mais conversas

Num evento desses, muita coisa legal acontece que não entra na programação oficial. Nas mesas de discussão, Django, a idéia de fazer um blog em shell script, histórias de novos e brilhantes algoritmos como o reverse() -> append() reverse(), insatisfação com a vida de desenvolvedor web, incluindo a possibilidade de uma nova e inusitada profissão para um deles, muita discussão sobre plone e zope, codificação de um sei lá o que com o gnu barcode e o Cairo, conversas diversas sobre tunning, um vegetariano que não gosta de alface e todo o tipo de piada nerd que apenas um outro nerd consegue rir :D . Tenho de dar um pouco de razão ao César Cardoso: as conversas que acontecem nos bastidores são mesmo muito boas!

]]>