Você está na página 1de 30

www.pzpzine.

com
2 Edio - Fevereiro 2008
AArrttiiggoo TTccnniiccoo::
I
I
n
n
s
s
t
t
a
a
l
l
a
a

o
o


d
d
o
o


M
M
o
o
d
d
_
_
P
P
y
y
t
t
h
h
o
o
n
n


n
n
o
o


A
A
p
p
a
a
c
c
h
h
e
e


p
p
.
.
2
2
8
8
AArrttiiggooss::
I
I
n
n
s
s
t
t
a
a
l
l
a
a
n
n
d
d
o
o


p
p
.
.
1
1
0
0
TTuuttoorriiaall::
I
I
n
n
s
s
t
t
a
a
l
l
a
a
n
n
d
d
o
o


o
o


M
M
y
y
S
S
Q
Q
L
L


n
n
o
o


Z
Z
o
o
p
p
e
e
/
/
P
P
l
l
o
o
n
n
e
e


C
C
r
r
i
i
a
a
n
n
d
d
o
o


u
u
m
m
a
a


p
p
e
e
q
q
u
u
e
e
n
n
a
a


a
a
p
p
l
l
i
i
c
c
a
a

o
o


p
p
.
.
1
1
9
9
VVEEJJAA TTAAMMBBMM NNEESSTTAA EEDDIIOO::



C
C
o
o
m
m
o
o


s
s
e
e


f
f
o
o
s
s
s
s
e
e


a
a


p
p
r
r
i
i
m
m
e
e
i
i
r
r
a
a


v
v
e
e
z
z


p
p
.
.
5
5



P
P
i
i
n
n
t
t
a
a
n
n
d
d
o
o


a
a


C
C
o
o
b
b
r
r
a
a


p
p
.
.
1
1
2
2



Z
Z
o
o
p
p
e
e


c
c
o
o
m
m
o
o


e
e
s
s
c
c
o
o
l
l
h
h
a
a


p
p
.
.
1
1
5
5
Atribuio-Uso No-Comercial-Compartilhamento
pela mesma licena 2.5 Brasil
Voc pode:
Sob as seguintes condies:
copiar, distribuir, exibir e executar a obra
criar obras derivadas
Atribuio. Voc deve dar crdito ao autor original, da forma especificada pelo autor ou
licenciante.
Voc no pode utilizar esta obra com finalidades comerciais. Uso No-Comercial.
Compartilhamento pela mesma Licena. Se voc alterar, transformar, ou criar outra
obra com base nesta, voc somente poder distribuir a obra resultante sob uma licena
idntica a esta.
Para cada novo uso ou distribuio, voc deve deixar claro para outros os termos da licena desta
obra.
Qualquer uma destas condies podem ser renunciadas, desde que Voc obtenha permisso do
autor.
Nothing in this license impairs or restricts the author's moral rights.
Termo de exonerao de responsabilidade
Qualquer direito de uso legtimo (ou "fair use") concedido por lei, ou qualquer outro direito protegido
pela legislao local, no so em hiptese alguma afetados pelo disposto acima.
Este um sumrio para leigos da Licena Jurdica (na ntegra)
Condio de Atribuio DE: By
A reproduo do material contido neste fanzine permitido desde que se incluam os crditos aos
autores e a frase: Reproduzido do PZPZine n 2 - www.pzpzine.com em local visvel.
O PZPZine declara no ter interesse de propriedade nas imagens, os direitos sobre as mesmas
pertencem a seus respectivos autores/proprietrios. Esta licena no se aplica a nenhuma
imagem exibida no zine, para utilizao da mesma obtenha autorizao junto ao autor
Editorial
Editorial
Colaboradores desta edio
Cleber J Santos
cleber@pzpzine.com
Thiago M Figueiredo
thiago@pzpzine.com
Fabiano Bispo
eudesenho@hotmail.com
Mayron Cachina Santiago
mayroncachina@gmail.com
Davi Lima
davilima6@gmail.com
Juan Osores
juanobe@yahoo.com.br
Paula Graciela
paulagraci1000@yahoo.com.br
Joo Paulo
jpcarusi@gmail.com
Contato
redacao@pzpzine.com
O contedo assinado e as
imagens que o integram, so de
inteira responsabilidade de seus
respectivos autores, no
representando necessariamente
a opinio do zine e de seus
responsveis. Todos os direitos
sobre as imagens so
reservados a seus respectivos
proprietrios.
Desenvolvimento
Este fanzine foi elaborado e
diagramado no Scribus.
Produo
Comeamos 2008 com uma perspectiva diferente, o ano de
2007 foi muito produtivo para as tecnologias desenvolvidas
em Software Livre, com o avano de projetos existentes e o
nascimento de vrios outros, com o crescimento das
comunidades de usurio e desenvolvedores.
O ano tambm foi marcado com a capacidade do
conhecimento compartilhado de usurios, desenvolvedores,
empresas, entre outros, e manter um ritmo de crescimento
envolvendo evoluo dos atuais e auxiliando no surgimento
de novos projetos no tarefa fcil.
Uma das principais formas de viabilizar este crescimento se
consolida na organizao da informao e disponibilidade de
materiais para os nossos usurios, criando um ecossistema
virtual contendo notcias, documentao, suporte,
empresas, ONG, produto e comunidade, interagindo de
forma dinmica e descentralizada, envolvendo pessoas de
todas as partes do pas. Finalizamos o ano com lanamento
da PZPZine nas comunidades Python, Zope e Plone, uma
forma de contribuir cada vez mais com o crescimento e
avano de tecnologias baseadas em Software Livre, o
projeto PZPZine um dos resultados que veio atravs do
esforo voluntrio e colaborativo, no qual se torna
responsvel pela coleta, traduo (quando necessrio),
reviso e publicao no contexto, trazendo notcias a
respeito de tecnologias e aplicaes Python, Zope e Plone,
casos de sucessos e muito mais.
A mxima do esforo colaborativo, do compartilhamento de
conhecimento e do apoio de quem acredita em tecnologias
a partir do Software Livre se d nesta revista online, a
PZPZine, onde coletamos entrevistas, dicas, tutoriais,
artigos, cases de sucesso e um resumo das notcias e
novidades do mundo PZP, tudo isto, na medida do possvel,
sob licena Creative Commons, que garante a liberdade de
nossos leitores, tanto para uso quanto reproduo.
O Projeto PZPZine s foi possvel graas a colaborao
compartilhada de muitas pessoas! Obrigado a vocs, que
fizeram este sonho possvel.
Cleber J Santos
http://www.pzpzine.com
ndice
ndice






E
E
n
n
t
t
r
r
e
e
v
v
i
i
s
s
t
t
a
a






C
C
o
o
m
m
o
o


s
s
e
e


f
f
o
o
s
s
s
s
e
e


a
a


p
p
r
r
i
i
m
m
e
e
i
i
r
r
a
a


v
v
e
e
z
z






E
E
r
r
r
r
a
a
m
m
o
o
s
s






C
C
a
a
r
r
t
t
a
a
s
s






A
A
r
r
t
t
i
i
g
g
o
o
s
s






T
T
u
u
t
t
o
o
r
r
i
i
a
a
l
l






P
P
y
y
C
C
o
o
f
f
f
f
e
e
e
e






F
F
a
a
q
q






T
T

c
c
n
n
i
i
c
c
o
o
Python
Zope
Plone
Erramos
Emails para a PZPZine
Django Instalando
Pintando a Cobra
Agendando com PostgreSQL
Zope como escolha
Criando uma pequena aplicao
PyCoffee
Perguntas mais freqentes
Instalao do Apache com Mod_Python
5
6
7
8
9
10
12
14
15
19
25
27
28
Como se fosse a primeira vez
Como se fosse a primeira vez
www.pzpzine.com 5
1
Linguagem universal, nica,de
entendimento para todos.
2
Orientao a objetos, tambm conhecida
como Programao Orientada a Objetos
(POO) ou ainda em ingls Object-Oriented
Programming (OOP) um paradigma de
anlise, projeto e programao de sistemas
de software baseado na composio e
interao entre diversas unidades de
software chamadas de objetos.
3
Procedimentos, tambm conhecidos como
rotinas, subrotinas, mtodos, ou funes
(que no devem ser confundidas com
funes matemticas, mas so similares
quelas usadas na programao funcional)
simplesmente contm um conjunto de
passos computacionais a serem executados.
Um dado procedimento pode ser chamado a
qualquer hora durante a execuo de um
programa, inclusive por outros
procedimentos ou por si mesmo.
4
Tambm chamada (linguagem de
computador interpretada) so linguagens de
programao executadas em um
interpretador Por esse motivo, os scripts,
que so as instrues formais escritas com
as linguagens interpretadas.
5
A Herana Mltipla o princpio,
implementado em algumas linguagens de
programao orientadas a objetos, que
possibilita o compartilhamento de atributos
e operaes de duas ou mais classes em
uma subclasse.
6
Traduzindo ao p da letra, cdigo em bytes -
no confundir com cdigo-mquina o
resultado de um processo semelhante ao
dos compiladores de cdigo fonte que no
imediatamente executvel. Em oposio o
bytecode ir ser interpretado numa mquina
virtual que far a execuo.
Se voc leu, releu, e ainda no entendeu patavinas sobre o
que esta revista fala, experimente ler esses quadros, eles
explicam o bsico sobre o tema que trataremos nas prximas
pginas.
Python tem algumas vantagens, sendo uma
linguagem universal
1
. Um dos principais fatores
que python combina os trs paradigmas de
programao atuais em um s.
Python pode ser usado como uma linguagem
orientada a objeto
2
como C++ ou Java, ou
como uma linguagem orientada a
procedimentos
3
, como Pascal ou C.
Ao mesmo tempo uma linguagem de script
4
como Php ou Perl, seus programas sequer
precisam ser compilados pelo usurio. Isso
mesmo! Python pode ser usado no
desenvolvimento de aplicaes web ou para
escrever softwares, no h pr-declarao de
variveis, e os tipos das variveis so
determinados dinamicamente, seu controle de
bloco feito apenas por indentao, ou seja, no
h delimitadores.
Alm de oferecer tipos de alto nveis como
(strings, listas, tuplas, dicionrios, arquivos e
classes). Tambm suporta mltipla herana
5
,
conecta-se a banco de dados e pode usar vrios
protocolos de comunicaes.
Assim como java, o cdigo-fonte de um
programa em Python convertido em bytecode

6
. Este cdigo tambm executado por uma
mquina virtual, mas python bem mais rpido
que java.
Como se fosse a primeira vez
Como se fosse a primeira vez
www.pzpzine.com 6
Zope um
1
servidor de aplicaes web de
cdigo aberto, ele escrito com a linguagem
Python. Zope significa "Z Object Publishing
Environment (Ambiente de Publicao de
Objetos).
Muitas tarefas de administrao de um
servidor Zope podem ser realizadas atravs de
uma interface web. Os objetos que o Zope
publica na Web so escritos em linguagem
Python, e tipicamente armazenados num
banco de dados orientado a objetos, o
2
ZODB,
que integrado ao sistema. Objetos bsicos,
tais como documentos, imagens e templates
(modelos de pginas) podem ser criados ou
modificados via web. Objetos especializados,
tais como wikis, blogs, e galerias de fotos esto
disponveis como componentes adicionais
chamados products (Produtos).
Suas caractersticas so diversas, mas no
caberia citar todas. O zope diferente de muitos
sistemas formado por objetos em um banco
de dados em vez de arquivos, este tipo de
abordagem permite alavancar as vantagens
do paradigma de objetos, como
encapsulamento. O Zope associa URLs a
objetos utilizando a hierarquia de partes
(composio), os mtodos so considerados
como partes dos objetos.
O Zope fornece dois mecanismos para a
criao de templates: Dynamic Template
Markup Language (DTML: Linguagem
Dinmica de Marcao de Templates), e Zope
Page Templates (ZPT: Templates de Pginas
Zope).
DTML uma linguagem baseada em tags que
permite implementar lgica simples em
templates, atravs de laos, condicionais e
insero de variveis, no entanto, o DTML
apresenta alguns problemas comuns s
linguagens deste tipo: os templates no podem
ser verificados por validadores HTML, e a
incluso indiscriminada de lgica nos
templates resulta em cdigo pouco legvel e
difcil de manter.
ZPT uma uma tecnologia que ataca estes
problemas. Templates ZPT so formadas por
XML ou HTML vlido, nas quais toda a
codificao feita atravs de atributos dentro
dos tags j existentes nestas linguagens. Tais
atributos utilizam um espao de nomes
especial, denominado tal: Template
Attribute Language (Linguagem de Atributos
para Templates), e assim so compatveis com
as especificaes do
3
W3C e com as principais
ferramentas de edio de HTML. O ZPT
proporciona apenas um conjunto limitado de
recursos, estimulando os programadores a
implementar a lgica em scripts Python
parte, que so apenas invocados (e no
includos) nos templates, tambm fornece
suporte internacionalizao e localizao de
aplicativos web, propiciando a substituio de
mensagens por verses previamente
traduzidas em mltiplas lnguas.
1
Servidor um sistema de computao que fornece servios a uma rede de computadores. Esses
servios podem ser de diversa natureza, por exemplo, arquivos e correio eletrnico, ou no caso servir
pginas de internet.
2
Zope Object Data Base (ou ZODB) um banco de dados transacional orientado a objetos livre usado
pelo servidor de aplicao Zope.
3
O W3C desenvolve tecnologias denominadas padres da web para a criao e a interpretao dos
contedos para a Web. Sites desenvolvidos segundo esses padres podem ser acessados e visualizados
por qualquer pessoa ou tecnologia, independente de hardware ou software utilizados, como celulares (em
Portugal, telemvel), PDAs, eletrodomsticos, de maneira rpida e compatvel com os novos padres e
tecnologias que possam surgir com a evoluo da internet.
Zope
Como se fosse a primeira vez
Como se fosse a primeira vez
www.pzpzine.com 7
Plone um sistema de gerenciamento de contedo (CMS, de Content Management
System)
1
, livre e de cdigo aberto, em Python, uma linguagem de programao livre e que
roda sobre um Servidor de Aplicaes Zope e sobre o framework CMF(Contente
Management Framework)
2
O Plone pode ser usado para a construo de portais de informao em intranets, extranets e na
internet, ele j vem com um sistema de segurana e funes pr-configuradas, o chamado
workflow
3
, um conjunto de tipos de contedo e suporte a vrias lnguas (Idiomas). H vrios
desenvolvedores, escritores, e pessoas que testam o Plone de todas as partes do mundo,
contribuindo todos os dias com o Plone.
Enganam-se os que pensam que o Plone um software, pois o Plone depende do Zope para
rodar e o Zope que por sua vez depende do Python para funcionar como um servidor de
aplicaes Web, normalmente para sistemas operacionais como no caso do Windows, voc pode
baixar o Plone em forma de um executvel *.exe, mas na verdade est sendo instalado o Zope +
o CMF e todos os componentes para o que Plone funcione. E para que tudo funcione
necessrio que o usurio tenha o Python j instalado no sistema.
Ento a maneira correta de definir o Plone como um produto
4
do Zope, isso mesmo, o Plone
funciona como um produto que roda dentro do Zope e que por sua vez tambm contem
produtos que rodam apenas dentro do Plone.
1
http://pt.wikipedia.org/wiki/Sistema_de_Gerenciamento_de_Conte%C3%BAdo
2
http://pt.wikipedia.org/wiki/Framework
3
http://pt.wikipedia.org/wiki/Workflow
4
Componentes adicionais que funcionam a partir de uma aplicao especfica.
www.pzpzine.com 8
Erramos
Erramos
Pedimos desculpas pelos erros cometidos em na PZPZine edio 1 (Lanamento), diversos
destes erros se deram por conta do pouco tempo que tivemos para a produo da Zine. Desde j
agradecemos a colaborao de muitos que nos alertaram desses mesmos erros, no qual sero
levados em considerao, desde erros de grafia at exemplos de cdigos que se deram pela
falta de uma boa revisada tcnica.
Tambm aproveitamos para dar uma nova cara para a revista, passamos do padro de
800x600 para A4 utilizada na maioria das Zines, desta mesma forma teremos como aproveitar
melhor o espao para os contedos de artigos, tutoriais dicas, faq's e etc.
1- Erro de grafia no editorial, a palavra expertise foi escrita de forma errada.
2- No 3 bloco da pgina 5 (Seo, como se fosse a primeira vez) o erro de grafia est na
palavra Enganan-se, onde veria conter a letra m.
3- Os nomes Python, Zope, Plone e PZPZine em diversas pginas foram escritos com
as primeiras letras em caixa baixa.
4- O sub-ttulo da pgina 8 contm um erro de grafia, ALGUM ME EXPLIACA O QUE
PYTHON!?, onde o correto EXPLICA, tambm a mesma palavra teve um erro no ndice
(exiplica)
5- O ttulo da pgina 16 at a pgina 19 est faltando o acento agudo, onde Tcnico o
correto. No item 9 da seo Tcnico (pag.18) existe um erro de grafia onde demarar deveria
ser demorar.
6- Na pgina 20 (seo FAQ) erramos ao dizer que o Plone 3 est em beta, a verso encontra-
se estvel e inclusive j est sendo usada em produes de sites. Na mesma pgina um erro
de grafia na palavra icones, onde o correto cone.
7- Na capa contm um erro no nome da seo PyCoffee o mesmo foi escrito como PyCofe.
8- Nos exemplo de cdigo, tanto de DTML quanto de ZPT da pgina 22 (Seo PyCoffee),
contm um erro, quando no exemplo se prope criar um select de um formulrio onde o
mesmo liste nmeros de 1 10, e que o item 9 deste select esteja selecionado por padro.
Em ambos os exemplos o erro ocorre no range que deveria ser range(1,11), no exemplo de
ZPT existe mais um erro, ao invs de <div tal:repeat=" sequencia python:_.range(... o correto
<div tal:repeat=" sequencia python:range(...
www.pzpzine.com 9
Cartas
Cartas
Se voc tem dvidas sobre o mundo PZP, crticas ou
sugestes que possam ajudar a melhorar a zine, escreva
para o seguinte endereo: redacao@pzpzine.com,
garantimos que todas as mensagens sero lidas e
analisadas.
Emails para a PZPZine
Ol,
Gostaria de dar os parabns pela iniciativa, acredito que a mesma ser de grande valia para o
crescimento e fortalecimento de nossa tecnologia. Fico a disposio para poder ajudar. Criem
algum tipo de banner para podermos divulgar.
Mrio Sergio
Caro Mrio, obrigado pelo elogio. A questo dos banners, estamos preparando alguns
para disponibiliza-los para todos aqueles que esto se disponibilizando a ajudar.
Em primeiro lugar, gostaria de parabeniz-los pela iniciativa, pois a primeira edio est
realmente muito boa. Nossa comunidade carecia de um instrumento de divulgao como esse e
creio que vocs faro muito sucesso. Gostaria de alertar tambm que o ltimo exemplo em ZPT
no PyCoffee contm algumas incorrees. Creio que a verso abaixo apresentaria o resultado
esperado:
<form>
<select>
<option>-</option>
<option tal:repeat=" sequencia python:range(1,10)"
tal:content="sequencia"
tal:attributes="value sequencia;
selected python:'9' == sequencia" />
</select>
</form>
Znrique.
Caro Znrique, obrigado tanto pelo elogio quanto pela correo, porm o correto como
voc poder acompanhar na seo erramos desta edio, o correto seria tal:repeat=" sequencia
python:range(1,11)", pois no exemplo se prope a criar uma seqncia de 1 10.
Desculpa perguntar... mas ela vai ser mais para tcnicos ou iniciantes ou no vai existir esse
tipo de coisa na revista? Eu to querendo iniciar a aprendizagem em python, s que no tenho
muito tempo para estudo e tal, s que mesmo assim vo tentar ;)
Abraos e boa iniciativa ;D
Rodrigo Arajo
Caro Rodrigo, A PZPZine vai atender a todos com contedos para iniciantes e experts,
esperamos que a zine possa ajuda-lo a iniciar no mundo PZP.
Artigos
Artigos
www.pzpzine.com 10
Instalando
Por Mayron Cachina
Django um framework web desenvolvido em Python que estimula o desenvolvimento rpido e
limpo. O framework possui Mapeamento, Objeto-Relacional, Interface de Administrao
automtica, URLs elegantes (feitas atravs de expresses regulares), sistema de templates, de
cache e de internacionalizao. Eu gosto de dizer que o Django para o Python assim como o
Rails para o Ruby, pois a forma de programao bastante parecida.
Instalao:
Existem 2 verses do framework, a verso estvel
1
e a de desenvolvimento
2
. Esse artigo tem
como intuito mostrar a instalao do Django e isso que ns vamos fazer agora:
Instalao da verso estvel:
Aps baixar o Django
Imagem1
(sua verso atual a 0.96.1), descompacte em uma pasta e
utilize o comando:
Instalao da verso de desenvolvimento:
Esse nome se d apenas porque essa verso est em constante modificao, mas no quer
dizer que seja instvel, pelo contrrio ela muito estvel e para aquelas pessoas que acham
isso ruim, a sua documentao
3
alterada sempre que h modificaes e sempre que ocorrem
grandes mudanas toda a comunidade avisada antes, por isso sempre bom visitar o site do
projeto.
Para instalar a verso de desenvolvimento voc precisa ter instalado o Subversion e executar o
seguinte comando em uma pasta vazia (geralmente chamada de dajngo-trunk):
Imagem 1 Instalao do Django no Linux/Windows
Artigos
Artigos
www.pzpzine.com 11
Existem vrias formas de usar o SVN no Windows, por isso no vou mostrar, mas recomendo o
Tortoise Svn
4
. E agora para qualquer um dos sistemas operacionais execute o comando:
Imagem 2 SVN no Linux
Imagem 3 Instalao do Django no Linux
Essa a primeira parte de muitos outros tutoriais sobre o Django, em nosso prximo tutorial
vamos ver o Admin.
[]s at a prxima.
1 http://www.djangoproject.com/download/0.96.1/tarball/
2 http://code.djangoproject.com/
3 http://www.djangoproject.com/documentation/
4 http://tortoisesvn.tigris.org/
Artigos
Artigos
www.pzpzine.com 12
Escrevendo scripts no GIMP
Pintando a cobra
Por Cleber J Santos
Muitos usurios e designers esto voltando a ateno para
o GIMP quando precisam editar uma imagem, trocando
softwares proprietrios por este que a grande atrao do
mundo livre quando o assunto manipulao de imagens.
O GIMP GNU Image Manipulation Program ou Programa GNU para Manipulao de Imagens
possui um belo cardpio de funes, e nem todos sabem que possvel automatizar tarefas
repetitivas por meio de scripts escritos com a linguagem popular Python. Felizmente, o GIMP
possui uma interface de programao integrada que permite aos usurios se aventurar em
desenvolver scripts para facilitar o trabalho e automatizar tarefas, fs de outras linguagens de
programao j props e at mesmo implementaram alternativas a linguagem Scheme
1
no qual
em geral no era considerada nada prazerosa.
H, por exemplo, uma interface para a linguagem Perl chamada de GIMP-Perl. Essa
interface est to avanada e bastante desenvolvida que possvel interpretar scripts e
modificar imagens sem que a interface grfica do GIMP tenha sido chamada. Voc deve estar se
perguntando: E onde o Python entra?, simples, O Python j garantiu seu lugar como
alternativa vivel ao Scheme, o GIMP-Python
2
est disponvel em praticamente todas as
distribuies Linux.
Tenha como seu melhor amigo a ferramenta PDB Procedural Data Base(Figura 1), o
navegador para banco de dados de procedimentos, o PDB est localizado em Xtns | Python-Fu
| PDB Browser (Extras | Python-Fu | PDB Browser). Ele lista as funes disponveis para
programadores de script's GIMP, Por exemplo, file_jpeg_load que carrega uma imagem no
padro jpeg no GIMP.
A estrutura bsica de um plugin em Python muito simples, usada uma chamada ao
Figura 1: O navegador integrado de scripts do GIMP
com o campo de busca no canto inferior esquerdo
Artigos
Artigos
www.pzpzine.com 13
mtodo register para que o novo plugin seja
registrado no GIMP, e algumas funes que
contemplam o servio.
No exemplo que iremos mostar, ser um puglin
simples que dar pipocar uma mensagem na
tela, utilizando nosso amigo PDB, iremos
encontrar a funo gimp_message, que
possui apenas um parmetro: A mensagem
que desejamos exibir.
O mtodo para registro do plugin
register requer no menos que onze
parmetros, na seguinte ordem: nome do
plugin, descrio, texto de ajuda, autor, dados
de copyleft ou copyright, data, caminho no
menu, formatos de imagens permitidos,
parmetros do puglin, buffer de memria para
o valor de retorno e funo de trabalho. A
primeira chamada que o plugin recebe deve
ser para o main().
Em nosso exemplo estamos usando o
plugin chamado plugin_fu_simple, este o
nome que ns vamos usar para chamar o
plugin depois do registro, ento vejamos nosso
exemplo de plugin:
A Listagem 1 mostra um exemplo
simples mas funcional de nosso plugin, a
funo do plugin chamada
python_fu_simple (linha 08), a funo de
trabalho sempre tem parmetros img e
drawable (linha 04), que o GIMP
automaticamente passa funo alista de
parmetros de entrada na linha 16 est vazia,
como no iremos manipular imagens com este
nosso exemplo, no temos necessidades de
passar este parmetros, a linha 04, mostra
como carregar o mdulo GIMP no Python. Para
testar o exemplo que acabamos de
desenvolver, salve a listagem (Sem os
nmeros), no diretrio ~/.gimp/plug-ins, com
o nome de simple.py, possivelmente o
diretrio do GIMP em seu /home/SeuUsuario
pode estar com um nome diferente, como
.gimp-2.2 ou coisa parecida. Torne o script
executvel (chmod +x simple.py) e inicie o
GIMP.
Agora, crie uma nova imagem (File |
New), dever haver um item Python | Simple
no menu de contexto. Obviamente este
exemplo no faz nada de realmente til, se
voc desejar se aprofundar em programao
de scripts para o GIMP e criar modelos triviais,
visite o site do GIMP
3
ou leia a documentao
sobre Python no GIMP
4
.
Listagem 1: Script simples para o GIMP
01 #!/usr/bin/python
02 from gimpfu import *
03
04 def python_simple(img, drawable):
05 gimp.message("Exemplo Simples")
06
07 register(
08 "python_fu_simple",
09 "Mostra uma caixa de dilogo.",
10 "Ajuda: Mostra uma caixa de dilogo simples.",
11 "Cleber J Santos",
12 "PZPZine",
13 "2008",
14 "<Image>/Python/Simple",
15 "*",
16 [],
17 [],
18 python_simple)
19 main()
1 Scheme: http://www.teach-
scheme.org/Notes/scheme-faq.html
2 PyGimp:
ftp://ftp.daa.com.au/pub/james/pygimp/
3 GIMP: http://www.gimp.org
4 Documentao sobre Python no
GIMP:
http://www.gimp.org/docs/python/struct
ure-of-plugin.html
Artigos
Artigos
www.pzpzine.com 14
Criando uma pequena agenda de contatos
Agendando com PostgreSQL
Por Thiago M Figueiredo
Neste artigo vamos fazer uma agenda de contatos, vamos
usar o PostgreSQL para armazenar os contatos e o Plone
como interface de gerenciamento, para adicionar,
visualizar e editar os contatos.
Vamos criar desde a estrutura do bando de dados, a
criao de scripts python at a criao de templates para
visualizar, gerenciar e editar as informaes da data base,
neste artigo no vamos abordar instalaes e nem
configuraes de qualquer tipo de ferramenta.
O intuito do artigo
Criar uma agenda bem simples e rpida.
Mostrar basicamente como estruturar uma data
base.
Montar as tabelas e tipos de colunas na data
base.
Usar o Plone como gerenciador de contedo.
Criar e mostrar scrpts python que gravem do
bando de dados.
Usamos para fazer o artigo:
PostgreSQL 8.2.4
Zope 2.9.6
Plone 2.5.1
PsycoPG-1.1.2
Vamos parar de lenga lenga e mo na massa.
Muita pessoas quando esto iniciando no mundo do
DB (Base de dados) acham uma etapa muito chata,
que na verdade eu tambm acho um pouquinho
chato mas muito importante para se estruturar
bem um sistema e que possa terminar da mesma
forma que comea digo isso porque quando se
inicia um sistema deste tipo e no realizar est
etapa no quinto dia de desenvolvimento no se
lembra qual a idia e acaba perdendo o foco, assim
o sistema se perde e no sai to bom quanto
pensvamos.
Criando a estrutura
Talvez essa etapa no seja to necessria neste
tipo de sistema mais aconselhamos que o faa
assim, mas o idia sempre fazer para se torna
mais rpido a criao das tabelas.
Vamos usar um software de criao de diagrama ou
software de criao de grficos, vou usar um
software de diagrama chamado Umbrello
1
nativo
do kde.
Definimos os seguintes itens que achamos
interessante ter em uma agenda:
nome
nick ( Apelido )
contato
email, email_alter, email_alter2
telefone_residencial
telefone_celular
telefone_comercial
web
endereco_comercial
endereco_residencial
Montamos o diagrama de acordo com essa
estrutura, voc pode fazer o donwload em:
http://www.thiagofigueiredo.com/v02/artigos/artigos/agen
da_postgres.xmi
Na prxima PZPZine iremos dar continuidade ao
nosso artigo onde iremos mostrar basicamente
como estruturar uma data base.
www.pzpzine.com 15
Entrevista
Entrevista
Federico Vazquez, Zoping Planeta Internet
Zope como escolha
Por Paula Graciela
PZPZine - Conte-nos um pouco sobre a sua
histria.
Fred - Eu sou o Federico, mais conhecido como
Fred, que mais fcil de pronunciar, as
pessoas tem mania de falar Frederico, ento
fica mais fcil apenas Fred. Eu sou formado na
prtica em comunicao grfica.
Comecei a trabalhar em 89 fazendo arte
final para impresso em serigrafia,eu
desenhava no papel que fosse, e ai colocava
isso em um vegetal mo com nanquim,
passado essa experincia, fui para o Uruguai
estudar publicidade grfica, no Senac chamam
de grfico. L era um pouco mais completa,
era um projeto que te preparava para pensar
pequenas peas de publicidade mas voltada
para produo em grfica.
Quando se faz um desenho bitmap,
imagem, uma foto em no Gimp, Photoshop ou
qualquer aplicao para manipulao de
imagens, ou mesmo ferramentas de desenhos
vetoriais, 2d ou o que for, se perde um pouco o
conceito de como que isso se constitua em
um processo mecnico. Na verdade o que se
tinham eram cartolinas brancas especiais,
onde voc delineava todos os desenhos, o que
se chama desenho estilizado. Mas o processo
l foi mais de desenho grfico mesmo. Ai a
partir daquela experincia me aprofundei com
serigrafia, passei por off-set, lavei mquina,
cortei papel, fiz todo o processo. Em 95 viajei
com um amigo pela Amrica do Sul e cheguei
na minha casa l em So Jos dos Campos
quando meus pais moravam sem grana, e
acabei entrando em um trabalho que eu
pensava que fosse um bico mas que se
transformou numa oportunidade de 20 meses.
Abandonei tudo no Uruguai e fiquei aqui.
Entre 97 e 98 vim para So Paulo trabalhar na
DigiWeb Brasil como WebDesign, foi uma
experincia muito boa, eu j tinha comeado a
fazer uns dois sites para alguns clientes que eu
tinha em So Jos dos Campos, alguns clientes
por conta. Eu usava o Composer do Netscape,
sofria pra caramba para entender o que era
aquela linguagem nova, me chamaram aqui
para ser WebDesing e eu topei a parada
n.(risos).
A experincia foi muito boa, e isso
comeou a me dar outra dimenso da web, foi
quando comeou a surgir na poca o
ColdFusion e Asp.
PZPZine - Ento isso deveria ser por volta de
98 e 99 correto?
Fred Exato, isso era em 98, em 99 eu j
estava querendo desafios maiores, e foi ai que
tive a oportunidade de ir para a Camara
Americana de Comrcio (AMCHAM So
Paulo), falaram que precisavam de um cara
nas horas livres fazer a manuteno de um site
que j estava pronto, com banco de dados, ah!
Beleza... Fui conversar, e a pessoa responsvel
na poca era Mauro Marim, ele virou pra mim e
disse: Voc conhece Zope? Opa, j ouvir falar
respondi, j dei uma lidas e etc... O Zope mau
importante desenvolvermos as nossas tecnologias, temos
autonomia suficiente para disputar e nos desenvolvermos no
campo do conhecimento, e nas solues, ou seja, no temos
que ficar importando as solues.
www.pzpzine.com 16
Entrevista
Entrevista
havia entrado no Brasil, e mau tinha literatura.
PZPZine - Ou seja, o desafio era pegar algo
que se quer havia documentao, e que ainda
estava chegando aqui no Brasil e dar
continuidade no portal o qual j estava
praticamente desenvolvido com essa
ferramenta?
Fred Sim, cheguei com o desafio de por toda
a parte de contedo, de notcias da Camara
Americana em Zope, que era um projeto que
veio da lgica do Luciano Ramalho, e do Z
Otvio. Eles que estavam tocando o projeto,
eles j atendiam a uol com 2 projetos, tinham
feito o IDGnow na poca em zope. E estavam
fazendo a Achademia, era um portal a uol, e o
da Amcham. O engraado que entrei no
departamento de comunicao para montar o
portal de notcias, que se converteu em fazer o
site, e a loucura foi a seguinte, o que se
converteu no site, em dois dias eu tinha que
aprender a montar uma proposta com o Mauro.
O site, que era em uma liguagem de
Zope, a gente ta falando de Zope, ele j tinha
um de html com vrios Perls com vrios CGIs,
alguns ASPs, era uma loucura, para administrar
aquilo l era um inferno, e fomos para a
reunio, eu em dois dias entendendo a questo
de herana, isso para mim foi uma
compreenso rpida, em que o Z Otvio disse
assim: Fred, pensa o seguinte, o que voc no
tiver na pastinha de baixo, vai estar na de
cima, isso a herana.
PZPZine Sabemos que qualquer mudana,
em qualquer projeto de site, mesmo que
pequena sempre um choque para os usurios
que o administram, como foi a reao de todos
durante a conversa?
Fred - Imagina, eu, WebDesing em uma
reunio de diretoria com o presidente, para
apresentar o portal, e o Mauro comea a
apresentar o projeto grfico, desenho,
conceito, tinha-mos arrumado tudo, e ai
comea o bombardeio, a galera tava com o p
atrs, falava, o cara chega e quer mudar o site!
Ou seja, por que o site at ento era s da
parte de TI da AmchamNet, era o neu primeiro
servio para empresa de porte mdio.
O Maro era jornalista, ele no tinha de
saber que tecnologia que era possvel, ele
vendeu por que era vivel, eu l com a minha
gagueira comecei a virar o olhos, imagina, em
uma mesa com 50 pessoas, o presidente me
olhando. Teve um ponto que eu controlei a
gagueira, pensei: Agora no tem jeito n, tem
que segurar. Virei e disse: h cara, eu vou te
falar, eu sou designer, estou h dois dias
vendo e mexendo no Zope, o pouco que eu
mexi at agora, o que eu montei para entregar
hoje, isso daqui no s te poem os formulrios
que voc quer, te sobe as fotos que voc quer,
como faz muito mais do que isso alm do que
voc nem imagina que isso possa ser capaz.
PZPZine Uau, que coragem, dizer em meio a
50 pessoas, mais o presidente, que voc
conhecia a ferramenta apenas 2 dias?
Fred O cara ficou me olhando, o presidente
que era um cara corpulento, grande, um
pernambucano que impunha, disse: Pronto,
caralho, vocs toda vida disseram que no
tinha forma de fazer as coisas acontecerem,
agora eu quero ver essa merda acontecer, eu
quero ver esse site e etc ...rsrs.
PZPZine Isso foi fantstico, vocs tiveram
que assumir um site com uma aplicao que
estava ainda chegando no Brasil e o mais
incrvel, voc mau conhecia Zope.
Fred - Pois , e em um ms tivemos que fazer
Federico Daniel Vazquez
Zoping Planeta Internet
www.pzpzine.com 17
Entrevista
Entrevista
a migrao, aprender, foi ai que eu conheci o
Rauzinho, eu trouxe o Rauzinho para fazer uns
bicos,tambm foi ai que eu conheci o Pasquall.
PZPZine - No meio dessa sua jornada entre
So Paulo, So Jos dos Campos e Uruguai,
onde foi que voc conheceu o mundo do
software livre? E a partir da o que chamou a
sua ateno em fazer parte desse mundo?
Fred Boa pergunta! Bom, at ento eu era
cego, meu primeiro computador, consegui
comprar em 92, me lembro, era um PX, acho
que era um GC400, lembro que eu tinha 4
mega de memria, o bicho era bala, e um HD
de 17 megas, nossa, eu era tudo ali, com um
monitor P&B. O que foi legal foi o seguinte,
quando eu que chamei o Pasquall para
trabalhar, na entrevista, eu usando as minhas
tcnicas de entrevistador que a gente vai
aprendendo na vida, as tcnicas de RH, pea
para a pessoa falar 3 qualidades, pea para
pessoa falar 3 defeitos, pergunte ele no meio
da entrevista alguma questo cultural, se ele
vai ao cinema, se ele l, e etc. Perguntei qual o
ultimo livro que voc leu? E ele respondeu:
Manual de Linux (risos). Eu no tinha idia do
que era Linux ainda, por que o Linux havia
surgido em 1991, e s comeou a tomar fora
em 97 para 98. Ele entrou na Amcham sentou
e falou que queria usar Linux, eu havia
comprado um NoteBook e falei que queria com
Linux e no tinha outra, eu queria conhecer
essa nova tecnologia. Gostei da filosofia j de
cara, depois de algum tempo de uso, testando
vrias distribuies eu passei a adotar Linux
como Sistema Operacional.
PZPZine - Legal. E com esse conhecimento,
com essa experincia que voc teve, com esse
conhecimento que voc adquiriu sobre o SL,
que tipo de contribuio, ou seja, qual foi a
contribuio que voc d para a comunidade, o
que voc pode ajudar, no que voc ajuda?
Fred - Outra boa pergunta. Eu comeo a
ajudar de vrias formas, no sou programador,
sou desiger, eu sou usurio, sou o que nos
podemos chamar de articulador, uma grande
virtude que eu sei que tenho olhar para
algum que ta me mandando algo, conseguir
compreender o que ele quer, traduzir isso em
uma soluo grfica, em uma soluo tcnica,
fazer um apanhado. Ento a minha
experincia de programador foi curta. Acho
que a grande contribuio, talvez, o seguinte,
foi sentir a necessidade de ns termos aqui e
fortalecer a comunidade Zope no Brasil.
PZPZine De que forma voc acha que daria
para fortalecer a comunidade Zope aqui no
Brasil?
Fred - Eu tinha muita demanda para o
desenvolvimento de sites, para as ONGs e etc,
agente pensava, ta bom, eu fao em Zope,
mas ai, aonde vai colocar essa merda, onde
vamos hospedar isso, eu no tinha condies
de comprar hospedagem no exterior, pois eu
ainda no possua carto de crdito
internacion al, o banco n, o
sistema capitalista no
me considerava
capa citado para
ter um carto
dess es. E eu
tinh a uma
viso muito
nacion alista, com
um ponto de vista
assim, importante ns
desenvolvermos as nossas tecnologias, temos
autonomia suficiente para disputar e nos
desenvolvermos no campo do conhecimento, e
nas solues, ou seja, no temos que ficar
importando as solues.
Ento eu falei, Pasquall, a gente tem que
montar um provedor, no poder ser que a
gente tenha que ficar hospedando fora e no
poder conseguir fazer um projeto bicho.
PZPZine Para voc qual era o desafio em
montar um provedor aqui no Brasil? E Qual
seria o diferencial?
Fred - Para mim, como eu no sou
programador, era romper a lgica, patinamos
muito, e ai foi o momento que eu comecei a
sair da Amcham. Comeamos em 2003, Paquall
e eu, puxando pra sei l, eu sou louco, eu
www.pzpzine.com 18
Entrevista
Entrevista
gosto de fazer essas coisas de mexer com o SL.
O papel da Zoping, estabelecer no Brasil o primeiro provedor exclusivamente Zope,
dedicado a Zope, tipo assim, s Zope, no tem php, no tem outra coisa, somente Zope, ns
fomos o terceiro que hospedava Zope, mas o primeiro que s hospeda com essa tecnologia e
mais nenhuma outra linguagem, ento, essa a diferena que eu coloco.
PZPZine Uma ltima pergunta. Voc falou sobre PHP, que uma das ferramentas mais
conceituada depois do Linux, e hoje sabemos que existem diversas ferramentas em SL que por
exemplo, o php que so voltados para o desenvolvimento web, ou de aplicaes, como a gente
j havia citado, para controle de projetos internamente. E ai surge a pergunta, por que a vespa
optou por Zope?
Fred Optamos por Zope por vrios motivos, o primeiro o seguinte, em 2000, eu tinha subido o
site da Amcham e etc, o Pasquall tinha se incorporado a equipe, e eu tinha passado na
faculdade, e eu comecei a vislumbrar outras coisas, e eu tinha que ganhar mais, eu tinha que
ser melhor remunerado na poca pra poder bancar a faculdade, eu j tinha passado na PUC
ento eu tinha que pagar a conta. E nisso se deu a oportunidade que eu fui convidado para ir
para Zoyd. A Zoiyd era um portal para jovens, de um cara muito louco, um cara bacana mas
doido, doido no ponto de vista que, o cara convenceu o fundo de investimento do Bank Boston
a dar pra ele 3 milhes de dlares para ele montar um portal de jovens, que ele tinha que
levantar no prazo de 6 meses, 2 milhes de cadastro de jovens, e o cara mobilizou uma equipe
violenta, ele pegou um cara de banco de dados muito bom, tirou a editora de jovens da revista
Veja, da editora abril, pegou os designers e tirou da Amcham, e falou que a gente tinha o desafio
de colocar o projeto no ar, e o desafio meu era por em Zope.
O cara no tinha idia de tecnologia, essa era a verdade, o cara era at chamava de Voip,
o coitado do Zope era at confundido com Voip. Agora por que Zope? Por que robusto, tem
melhor confiabilidade que o Php, Asp por exemplo, fora outras qualidades que eu poderia
continuar colocando aqui.
Tutorial
Tutorial
www.pzpzine.com 19
Instalando o MySQL no Zope/Plone
Criando uma pequena aplicao
Por Fabio Rizzo Matos
Neste artigo ensinarei como instalar o MySQL, o Python-MySQL e o
ZMySQLDA, que so componentes necessrios para executar aplicativos
Python/Zope/Plone.
Vamos instalao do MySQL!
Pr-requisitos.
Para utilizarmos o MySQL como banco de dados do Zope/Plone devemos instalar:
Python - Linguagem Para Execuo do Zope
Zope - Servidor de Aplicao Web
Plone - Framework de CMS
MySQL - Banco de Dados
Python-MySQL - Interface para o Python acessar o MySQL
ZMySQLDA - Database Adapter para o Zope acessar o MySQL
Instalando o MySQL.
Se voc j tem instalado o MySQL em sua distribuio, pode pular esta parte e avanar para a
prxima.
Caso ainda no tenha instalado o MySQL, ensinarei como instal-lo no Fedora Core 1 a partir
dos binrios do site.
Acesse:
http://dev.mysql.com/get/Downloads/MySQL-4.1/mysql-standard-4.1.22-pc-linux-gnu-i686.tar.gz/from/pick
Caso mude o caminho, acesse www.mysql.com e procure pela verso 4.1 do Banco de Dados.
Copie o arquivo mysql-standard-4.1.22-pc-linux-gnu-i686.tar.gz para /tmp ou para um
diretrio de sua preferncia. Execute os seguintes procedimentos como root:
Criar grupo e usurio para executar o MySQL:
# groupadd mysql
# useradd -g mysql mysql
Descompactar o MySQL:
# cd /usr/local
# gunzip < /tmp/ mysql-standard-4.1.22-pc-linux-gnu-i686.tar.gz | tar xvf -
Criar o link para MySQL:
# ln -s /tmp/ mysql-standard-4.1.22-pc-linux-gnu-i686 mysql
# cd mysql
Tutorial
Tutorial
www.pzpzine.com 20
Executar o script para instalao do banco:
# scripts/mysql_install_db --user=mysql
Setar algumas permisses:
# chown -R root .
# chown -R mysql data
# chgrp -R mysql .
Iniciar o banco de dados:
# bin/mysqld_safe --user=mysql &
Caso no tenha ocorrido nenhum erro, o MySQL dever ser iniciado com o comando anterior.
Vamos instalar agora o suporte do Python para o MySQL.
Instalando o MySQL-Python
Como o Zope/Plone utilizam a linguagem Python de desenvolvimento, necessrio instalar a
API-DB do MySQL.
Acesse:
http://prdownloads.sourceforge.net/.../MySQL-python-1.0.0.tar.gz?download

Baixe o arquivo no diretrio /tmp e execute os seguintes comandos:
$ cd /tmp
$ tar xvf MySQL-python-1.0.0.tar.gz
$ cd MySQL-python-1.0.0
$ export mysqlversion="4.0.20"
# Ou a sua verso instalada
$ export mysqlclient="mysqlclient_r"
$ export mysqloptlibs="ssl crypto"
$ python setup.py build
$ su
# python setup.py install
Tutorial
Tutorial
www.pzpzine.com 21
Pronto, se nenhum erro ocorreu, voc j esta com o suporte do MySQL no Python. Vamos
instalar agora o suporte no Zope/Plone.
Instalando o ZMySQLDA
Depois de Instalado o MySQL-python, devemos instalar um adaptador para quee o Zope/Plone
se conecte ao banco de dados.
Acesse:
http://prdownloads.sourceforge.net/.../ZMySQLDA-2.0.8.tar.gz
E copie para /tmp. Verifique se o servidor Zope no est no ar, se estiver, d um shutdown nele.
# cd /tmp
# tar zxvf ZMySQLDA-2.0.8.tar.gz
# mv lib/python/Products/ZMySQLDA /opt/Zope-2.7/lib/python/Products/ZMySQLDA
Inicie o seu servidor Zope/Plone.
Pronto, j podemos utilizar o Zope/Plone para acessar um banco MySQL.
Conectando ao banco de dados MySQL, para acessar um banco de dados MySQL, temos que
criar uma conexo com o banco de dados.
Acesse o seu portal Zope/Plone. Exemplo:
http://localhost:8080/manage
Selecione e adicione o objeto Z MySQLdb como na figura1.
Figura1 - Selecionando o conector Z MySQLdb
Tutorial
Tutorial
www.pzpzine.com 22
Uma janela com as propriedades ser exibida conforme a figura2.
Coloque as informaes sobre o seu banco. Exemplo:
Zope root 123456789
Onde:
Zope o seu database;
root o seu usurio;
e 123456789 a sua senha.
Se tudo ocorreu corretamente, voc ter criado com sucesso uma conexo ao banco de dados
MySQL.
Rodando um SELECT simples.
Depois de criada a conexo com o banco de dados, podemos rodar nele comandos SQL, tais
como SELECT, INSERT, UPDATE, dentre outros.
Criando o ZSQL Method.
Acesse a interface ZMI e clique em Z SQL Method. Uma janela como na Figura3:
Figura2 - Editanto as propriedades do conector
Tutorial
Tutorial
www.pzpzine.com 23
Figura3 - Editando as propriedades do Z SQL Method
Onde:
Id o nome do objeto dentro do Zope;
Title o ttulo que aparece no ZMI;
Connection ID a conexo com o banco de dados (no nosso caso, a conexo que criamos no captulo
anterior);
Arguments - Entenderemos esse conceito mais adiante;
Query Template - o comando SQL que queremos rodar.
Crie uma conexo conforme a figura3 acima.
Pronto, agora podemos criar um formulrio para visualizar esta consulta. Para isso basta ir na
console ZMI e clicar em Select type to add... Z Search Interface, conforme a figura4:
Figura4 - Editando as propriedades do Z Search Interface
Tutorial
Tutorial
www.pzpzine.com 24
Onde:
Select one or more searchable objects - o local onde iremos buscar os comandos SQL j criados para
gerar o formulrio;
Report Id - O nome do relatrio;
Report title - O ttulo do relatrio;
Report Style - O Estilo do Relatrio;
Search Input Id - Caso queira um critrio na busca. Iremos falar dele mais a frente;
Seach Input Title - O ttulo do critrio de busca;
Gerar DTML Method ou Page Templates - So as formas de criar methods. Neste caso iremos
criar DTML Methods.
Preencha os dados e clique em ADD. Pronto! Voc j pode consultar valores no seu banco de
dados.
Rodando um SELECT com critrio.
Para realizarmos um SELECT com um critrio, por exemplo, todos os ramais do setor x, devemos
utilizar os arguments do Zope.
Por exemplo, voc gostaria de listar todos os ramais por setor, ento crie uma zsql method e na
query template coloque:
SELECT * from ramais where setor = '<dtml-var setor>'
e em arguments coloque setor.
Essas informaes dizem ao Zope que voc vai utilizar a varivel setor como critrio de busca
para sua query SQL.
E no caso de criar um Z Search Interface, basta voc colocar setor no campo search input
id.
Simples e rpido.
Finalizando.
Criar consultas a bancos de dados no Zope muito simples e rpido. Depois que se pega o jeito
pra coisa, vai fcil.
E os exemplos de SELECT tambm podem se estender a INSERTS, UPDATES, DELETES, dentre
outras queries.
Espero que esse tutorial ajude a achar a luz. Em breve escreverei tutoriais sobre queries
avanadas utilizando Zope e MySQL.
www.pzpzine.com 25
PyCoffee
PyCoffee
O papo desse ms, refora
o que foi discutido na
ltima edio de nossa zine
Por Joo Paulo Carusi
Existem diversas vantagens em reescrever os cdigos
de DTML para ZPT: Como por exemplo, melhor
possibilidade de integraes com produtos do plone.
JP: Fala a Zeca! J est dominando ZPT e DTML?
Zeca: Opa, moleza, j consegui migrar de DTML para ZPT quase tudo. Tive algumas
dificuldades, mas o que no achei no google a comunidade Zope Brasil me ajudou, pela lista de
discusso (Yahoo!).
JP: Dahora Zequinha, mostra alguma coisa que voc fez.
Zeca: Em falar em hora :) , eu precisei mostrar apenas a hora da varivel ZopeTime que
originalmente ser apresentada da seguinte maneira: 2007/06/23 11:00:09.548 GMT-3
DTML
<dtml-var ZopeTime>
ZPT
<div tal:replace="python:here.ZopeTime()" />
JP: Boa Zequinha, me envia esse cdigo? Agora vou dificultar um pouco, e se ao invs de
mostrar tudo isso, eu apenas quiser mostrar a data s que no formato dd/mm/yyyy como voc
faria?
Zeca: Hehehe, voc no me pegou no, essa eu j sei, eu faria assim.
DTML
<dtml-var ZopeTime fmt="%d/%m/%Y">
ZPT
<div tal:replace="python:here.ZopeTime().strftime('%d/%m/%Y')" />
JP: Muito bem, aproveita e me envia este tambm?
www.pzpzine.com 26
PyCoffee
PyCoffee
Zeca: Sim, claro. E em falar em enviar, veja o formulrio que converti de DTML para ZPT. Tive
que usar nosso bom e velho amigo Python, j que no h equivalente em ZPT para o antigo
<dtml-sendmail> usado em DTML para envio de formulrios:
form_html (Page Template)
---------------------------------
<form action="myPython_proc" method="post" accept-charset="utf-8">
Email do usurio: <input type="text" name="fromEmail">
Nome do usurio: <input type="text" name="Nome">
Mensagem: <textarea name="msg"></textarea>
</form>
myPython_proc (Script Python)
---------------------------------------
from Products.PythonScripts.standard import html_quote
request = container.REQUEST
RESPONSE = request.RESPONSE
try:
mailhost=getattr(context, context.superValues('Mail Host')[0].id)
except:
raise AttributeError, "cant find a Mail Host object"
else:
Para = "usuario@empresa.com.br"
De = context.REQUEST.get('fromEmail')
Nome = context.REQUEST.get('nome')
msg = context.REQUEST.get('msg')
corpo = "Nome do usurio: " + Nome + "<br>" + "Email do usurio: " +
De + "<br>" + "Mensagem: " + msg
mensagem = "To: " + Para + "\n"
mensagem = mensagem + "From: " + De + "\n"
mensagem = mensagem + "Mime-Version: 1.0\n"
mensagem = mensagem + "Content-Type: text/html; charset=UTF-8\n\n"
mensagem = mensagem + corpo
mSubj = "Assunto do fomulrio"
mailhost.send(mensagem, subject=mSubj, encode='base64')
return 'Email enviado com sucesso!'
JP: T ficando craque em meu! Parabns, s uma correo, na verdade no que no exista um
cdigo para invocar o SendMail equivalente no ZPT, mas que como o prprio nome diz Page
Template, e a lgica exatamente separar o que lgica do que designer, e os Pages
templates conversam muito bem com o Python. Bem mas eu vim aqui s para te convidar para
tomar um caf :) uma prxima vez conversamos mais a fundo.
www.pzpzine.com 27
Faq
Faq
Frequently
Asked
Questions
Perguntas
Mais
Freqentes
So aquelas perguntinhas feitas
freqentemente em listas de
discluses, e que ficam na cabea,
Abaixo esto algumas dessas
questes que colhemos com base
em nossos passeios por fruns e
listas.
O que HotFix?
So Patch's destinados a correo de problemas especficos que surgem aps a liberao do
software, geralmente um arquivo que voc disponibiliza em uma determinada rea do seu
software e executa, o HotFix faz a correo automaticamente, inserindo ou excluindo linhas de
cdigos que iro influenciar em sua aplicao.
O que uma Skin?
Originalmente do ingls significa pele, Skins para aplicaes, so peles que seu Software,
programa, disponibiliza para alterar a aparncia padro, como cores, estilos de fontes e etc... No
Plone, por exemplo, voc pode customizar uma Skin a partir de uma j existente, ou ainda criar
uma nova e aplicar em reas diferentes de seu site.
No Zope, tenho como criar mtodos externos que me permitam acessar as bibliotcas
do sistema Operacional?
Sim, o Zope trabalha com os chamados External Methods, tratam-se de scripts no qual voc o
disponibiliza dentro da pasta Extensions de sua instncia, como trata-se de scripts escritos em
Python voc pode importar as bibliotecas do sistema operacional, porm sempre importante
ter cuidado ao usar external mthods que invocam libs de seus sistema operacional, isso pode
causar certa insegurana em seu servidor, tal como uma queda por utilizao de memria em
excesso.
www.pzpzine.com 28
Tcnico
Tcnico
Apache + Mod_Python
Instalao do Apache com
Mod_Python
Por Thiago M Figueiredo
Neste artigo mostraremos como efetuar uma
instalao limpa do servidor apache com o mdulo
Mod_python.
Dependncias
* Apache-2.2.41
* Python-2.42
Nota. O intuito deste artigo no abordar a instalao do servidor Apache, ento faa o
download e instale ele de acordo com o Sistema Operacional que voc estiver utilizando, se pela
graa de Deus, voc estiver utilizando Linux, ento baixe um pacote para sua distribuio, ou
caso deseje uma instalao mais limpa, baixe os fontes no site do Apache. Neste artigo estamos
usando o Slackware Linux como sistema operacional, porm no iremos instalar o mdulo
atravs de pacotes *.tgz3, mas sim, atravs da compilao dos fontes.
Bem chega de lero, lero e mos a obra!
Mod_python um mdulo interpretador da linguagem Python, como assim? Voc pode criar
aplicaes web em Python como feito geralmente com o Php, Perl.. e diversas outras
linguagens de programao Web, a vantagem de usar Python direto no sistema como iremos
mostrar aqui, torna a execuo de scripts muitas vezes mais rpido do que as demais
linguagens, pode-se construir scripts Cgi diretam,ente sem a necessidade de utilizar outra
linguagem para este fim. Outra vantagem poder manter uma conexo direta com o banco de
dados, entre outras vantagens.
Ento vamos comear a instalao do mdulo.
Antes de mais nada faa o download do mdulo no endereo:
http://ftp.unicamp.br/pub/apache/httpd/modpython/mod_python-2.7.11.tgz
Se preferir pode abrir o terminal e fazer o download do mdulo via modo texto desta foma.
$ wget http://ftp.unicamp.br/pub/apache/httpd/modpython/mod_python-2.7.11.tgz
Nota: Baixe a verso mais recente do mdulo.
Isso no deve demorar muito pois o modulo muito leve, descompacte o mdulo com o
seguinte comando
$ tar -zxvf mod_python-2.7.11.tgz
www.pzpzine.com 29
Tcnico
Tcnico
Aps ter descompactado o pacote, entre na pasta que foi extrada do pacote com o comando.
$ cd mod_python-2.7.11
Antes de comear-mos compilar o nosso mdulo, necessrio verificar se o sistema tem os
requisitos que o mdulo pede. Ento antes de comear a dar comandos de compilaes d uma
lida do arquivo README localizado no diretrio que voc acaba de entrar, utilize o leitor de sua
preferncia pra isso, em nosso caso apenas usamos o comando cat README.
Note que o arquivo indica que devemos dar o comando ./configure e passar uma opo
para ele, executando o comando ./configure --help possvel ver quais opes posso passar
para nosso mdulo durante uma compilao.
Este mdulo requer que alm do apache instalado, tambm tenha o apxs
1
devidamente
instalado no sistema, voc poder achar a aplicao com o comando:
$ whereis apxs
Em nosso caso a sada deste comando nos retornou:
apxs: /usr/sbin/apxs /usr/man/man8/apxs.8.gz /usr/share/man/man8/apxs.8.gz
Ou seja, temos a aplicao instalada no sistema em /usr/sbin/apxs e este exatamente o
caminho que iremos passa como opo para nosso mdulo, ento execute o comando abaixo,
substituindo o with-apxs=/usr/sbin/apxs pelo caminho que voc teve do comando whereis.
$ ./configure --with-apxs=/usr/sbin/apxs
Note que at o meonto no precisamos entrar como root ou sudo no sistema para executar os
comandos, ento agora iremos compilar o mdulo, e depois nos altenticar como superusurio
(root), ou com permisso de sudo.
$ make dso
Agora temos que ser super usurio (root) ou ter permisso de sudo para executar a instalao
do mdulo, ento vamos fazer assim:
$ sudo su [ Enter ]
sua senha de usurio
# make install
Se no houver nenhum erro durante a compilao, o mdulo estar instalado com sucesso,
agora iremos configurar o apache para que carregue o mdulo na usa inicializao. Ainda no
terminal como administrador edite o arquivo httpd.conf. Vou usar o editor vi use um de usa
preferncia.
Antes de editar o arquivo faa uma copia de segurana, dessa forma:
# cp /etc/apache2/httpd.conf ~/httpd.confBKP
www.pzpzine.com 30
Tcnico
Tcnico
Isso ir criar uma copia do arquivo na sua pasta de usurio administrativo agora voltemos a
editar e configurar o apache.
# vi /etc/apache2/httpd.conf
Para no sujar o arquivo v ate o fim dele e adicione as seguintes linhas
LoadModule python_module lib/apache2/mod_python.so
<Directory "/var/www/htdocs/psp_site">
AddHandler python-program .py
SetHandler mod_python
PythonHandler mod_python.publisher
AllowOverride All
</Directory>
Salve o arquivo e saia dele, a diretriz acima diz para o apache executar todos os arquivos *.py
que estiver na localizado na pasta /var/www/htdocs/psp_site.
Entre na home do seu usurio administrativo, vamos fazer um teste com um exemplo que
disponibilizado no site oficial do mod_python baixe o exemplo do endereo:
http://www.modpython.org/examples/psp_site.tgz
Lembrando que voc pode usar o wget tambm para fazer o download o arquivo, aps o
donwload, descompacte o arquivo desta forma.
# tar -zxvf psp_site.tgz -C /var/www/htdocs
Estamos descompactando o pacote direto para o diretrio htdocs como configurado no apache,
certifique-se que aps descompactar o arquivo, ns tenhamos a estrutura
/var/www/htdocs/psp_site, agora basta dar um restart no apache com o comando:
# apachectl restart
O comando de restart do Apache, vai de sistema para sistema, no caso do Slackware Linux, o
comando acima existe, mas no caso do Ubuntu ou de sistemas baseados em Debian seria
/etc/init.d/apache2 reload.
Agora vamos ver o nosso trabalho funcionando, ento abra o seu navegador de preferncia e
digite o endereo http://localhost/psp_site/, e bom divertimento.
1. Apache http://www.apache.org
2. Python http://www.python.org
3. No Slackware trabalha-se sempre tendo em mente a filosofia KISS: Keep It Simple, Stupid. O sistema
de gerenciamento de pacotes tambm assim, um arquivo contatenado (tar) e compactado (gzip).
4. Apxs Apache eXtenSion tool - http://httpd.apache.org/docs/1.3/programs/apxs.html