You are on page 1of 37

www.pzpzine.

com
3 Edio - Abril 2008
AArrttiiggoo TTccnniiccoo
C
C
o
o
n
n
h
h
e
e
c
c
e
e
n
n
d
d
o
o


a
a
r
r
c
c
t
t
y
y
p
p
e
e,


c
c
o
o
n
n
s
s
t
t
r
r
u
u
i
i
n
n
d
d
o
o


u
u
m
m


I
I
n
n
s
s
t
t
a
a
n
n
t
t


M
M
e
e
s
s
s
s
a
a
g
g
e
e


p
p
.
.
3
3
2
2
AArrttiiggooss::
E
E
x
x
p
p
l
l
o
o
r
r
a
a
n
n
d
d
o
o


o
o
a
a
d
d
m
m
i
i
n
n


p
p
.
.
8
8
TTuuttoorriiaall
B
B
l
l
e
e
n
n
d
d
e
e
r
r


+
+


P
P
y
y
t
t
h
h
o
o
n
n


p
p
.
.
2
2
0
0
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



A
A
g
g
e
e
n
n
d
d
a
a


c
c
o
o
m
m


p
p
o
o
s
s
t
t
g
g
r
r
e
e
s
s


I
I
I
I


p
p
.
.
1
1
2
2



F
F
u
u
t
t
u
u
r
r
o
o


d
d
a
a


f
f
e
e
r
r
r
r
a
a
m
m
e
e
n
n
t
t
a
a


p
p
.
.
1
1
6
6
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 3 - 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
Contato
redacao@pzpzine.com
Vivemos tempos interessantes: estamos no limiar de uma
poca em que ser facultado ao indivduo com posse de
suficiente conhecimento tecnolgico, subverter a ordem da
rede de prestao de servios e desenvolvimento
estabelecida por indstrias, estamos novamente em uma
fase de transio, na qual a velhos modelos de negcios
rapidamente sucedero novos, que iro baratear, melhorar e
facilitar o acesso informao e a meios de comunicao
especiais, aumentando gradativamente a incluso digital.
Claro que para este crescimento e tais mudanas no
podemos nos ater a teorias ultrapassadas de mercado e
desenvolvimento que rezam o cada um por si, todos
teremos que encarar o desafio de no olharmos cada um
para nossos prprios ps (interesses), mas procurar ganhar
de maneira colaborativa, com o grupo e pblico a que
pretende atender.
A grande vantagem de tudo isso que as operaes
descrita acima so totalmente legal, e somente iremos obter
sucesso total se quebrarmos os paradigmas, tirando o
controle da rede atual de grandes indstrias, que servem de
intermedirios de contedo (Vdeo, dados ou TV), e
devolvendo-o para as mos dos consumidores finais. O que
significa que hoje vivemos uma economia de informao
socialista, mas que um novo modelo de negcio ter que
aparecer para tirar vantagem da desintermediao dos tipos
de comunicao e de contedo, que sero capazes de
alcanar todas as partes deste grande mercado que se
tornou a Web.
O uso de aplicaes desenvolvidas sob paradigmas do SL
(Software Livre) aberto em geral, desempenha um papel
fundamental em todo esse processo: so eles que vo
permitir que novas e pequenas empresas locais, e
profissionais realizem projetos a baixo custo.
O desenvolvimento de novas aplicaes para Web que
sigam os paradigmas do SL aberto sero de vital
importncia para o crescimento gradativo da incluso
digital.
Cleber J Santos
http://www.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
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
Ccero Moraes
cogitas3d@gmail.com
Rafael Manhes Monnerat
rafael@nexedi.com
Marcos Jorge
marcoscrovis@gmail.com
ndice
ndice
Python
Zope
Plone
Explorando o Admin do Django
Agendando com PostgreSQL II
Futuro da ferramenta Zope
Blender + Python
Perguntas mais freqentes
Conhecendo o archtype
Apresentao do ERP5
5
6
7
8
12
16
20
32
33
35






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






F
F
a
a
q
q






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






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






T
T

c
c
n
n
i
i
c
c
o
o






A
A
r
r
t
t
i
i
g
g
o
o
s
s
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.
Artigos
Artigos
www.pzpzine.com 8
1 Comeando
Devemos criar primeiramente um novo projeto:
Ser criado a seguinte estrutura de arquivos:
__Init__.py Arquivo de configurao onde o python reconhece como pacote esta pasta.
menage.py Script para tarefas administrativas do seu projeto.
settings.py Configurao do projeto
urls.py Configurao de url do projeto.
2 2 C Co on nf fi ig gu ur ra a o o d do o P Pr ro oj je et to o
Dentro do arquivo s se et tt ti in ng gs s. .p py y est presente algumas configuraes sobre a aplicao e de
extrema importncia, certifique-se de ter configurado modificando para a seguinte forma:
Explorando o admin
Por Mayron Cachina
O Admin um plugin do Django onde voc pode administrar o seu sistema por inteiro, ela
muito interessante para ser usada, principalmente por que j gerar CRUDs customizveis, que
esse tutorial vai abordar o bsico.
Uma nota muito importante est em desenvolvimento uma nova classe Admin o NewForms
Admin
1
que se prope a deix-lo mais customizvel, pois o Admin atual voc no pode mexer
muito nele(adicionar links e etc), na pgina do amigo Marinho
2
existe um tutorial de instalao
bem explicado...
django-admin.py startproject Exemplo
DATABASE_ENGINE = 'mysql'
DATABASE_NAME = 'django'
DATABASE_USER = 'root'
DATABASE_PASSWORD = ''
DATABASE_HOST = 'localhost'
DATABASE_PORT = ''
i im ma ag ge em m 1 1 Arquivos de Configurao do projeto
Artigos
Artigos
www.pzpzine.com 9
Obs: Voc pode usar outros bancos de dados como o postgres ou sqlite.
Obs2: Esse artigo no tem como finalidade explicar a configurao do s se et tt ti in ng gs s. .p py y, para mais
informaes consulte a documentao
3
.
3 3 C Cr ri ia an nd do o n no ov vo o A Ap pl li ic ca at ti iv vo o
Ser criada a seguinte estrutura
__init__.py Arquivo que indica ao Python que esse diretrio vai ser considerado um pacote.
models.py Arquivo onde voc define seus modelos.
views.py Arquivo onde voc define as views do seu projeto.
4 4- - C Cr ri ia an nd do o o o m mo od de el lo o d de e d do o n no os ss so o b ba an nc co o d de e d da ad do os s
Essa modelagem a que vamos seguir para criar o modelo.
Esse um simples exemplo onde um funcionrio far parte de um grupo, uma modelagem
simples.
....
LANGUAGE_CODE = 'pt_br'
....
INSTALLED_APPS = (
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.admin',
'exemplo.funcionario'
)
python manage.py startapp funcionario
i im ma ag ge em m 3 3 Modelo do Banco de dados
i im ma ag ge em m 2 2 Arquivos de configurao da Aplicao
Artigos
Artigos
www.pzpzine.com 10
Agora iremos editar o arquivo m mo od de el ls s. .p py y:
Obs: recomendado est usando a verso 0.97 (saiba mais como instalar aqui
5
), caso deseje
utilizar a verso 0.96 adapte o cdigo de acordo com a documentao
4
.
5 5 S Si in nc cr ro on ni iz za an nd do o b ba as se e d de e d da ad do os s
Antes de tudo voc deve criar a sua base de dados, como informado no arquivo s se et tt ti in ng gs s. .p py y, no
nosso caso foi usando o mysql:
Agora vamos criar as tabelas com o comando:
ser criada as tabelas e ser pedido um usurio ADMINISTRADOR, para seu acesso ao admin.
6 6 C Co on nf fi ig gu ur ra ad do o a a U UR RL L p pa ar ra a a ac ce es ss so o
Para testar precisamos alterar mais um arquivo, o u ur rl ls s. .p py y e alterar a linha:
para
c cl la as ss s G Gr ru up po o( (m mo od de el ls s. .M Mo od de el l) ): :
d de es sc cr ri ic ca ao o = = m mo od de el ls s. .C Ch ha ar rF Fi ie el ld d( (m ma ax x_ _l le en ng gt th h= =8 80 0) )
s sa al la ar ri io o = = m mo od de el ls s. .D De ec ci im ma al lF Fi ie el ld d( (m ma ax x_ _d di ig gi it ts s= =5 5, , d de ec ci im ma al l_ _p pl la ac ce es s= =2 2) )
c cl la as ss s A Ad dm mi in n: :
p pa as ss s
d de ef f _ __ _u un ni ic co od de e_ __ _( (s se el lf f) ): :
r re et tu ur rn n s se el lf f. .n no om me e
c cl la as ss s F Fu un nc ci io on na ar ri io o( (m mo od de el ls s. .M Mo od de el l) ): :
n no om me e = = m mo od de el ls s. .C Ch ha ar rF Fi ie el ld d( (m ma ax x_ _l le en ng gt th h= =8 80 0) )
g gr ru up po o = = m mo od de el ls s. .F Fo or re ei ig gn nK Ke ey y( (G Gr ru up po o) )
t te el le ef fo on ne e = = m mo od de el ls s. .C Ch ha ar rF Fi ie el ld d( (m ma ax x_ _l le en ng gt th h= =9 9) )
c cl la as ss s A Ad dm mi in n: :
p pa as ss s
d de ef f _ __ _u un ni ic co od de e_ __ _( (s se el lf f) ): :
r re et tu ur rn n s se el lf f. .n no om me e
mysql -uroot
mysql> create database django;
mysql>exit
python manager.py syncdb
You just installed Django's auth system, which means you don't have any
superusers defined.
Would you like to create one now? (yes/no): yes
Username (Leave blank to use 'mayron'): admin
E-mail address: mayroncachina@gmail.com
Password:
Password (again):
# (r'^admin/', include('django.contrib.admin.urls')),
(r'^admin/', include('django.contrib.admin.urls')),
Artigos
Artigos
www.pzpzine.com 11
7 7 S St ta ar rt ta an nd do o o o S Se er rv vi id do or r
Agora podemos rodar o servidor para ver o funcionando:
agora acesse do seu navegador:
vai aparecer a tela de login:
Utilize o usurio e senha criados na hora da sincronizao do banco.
Ao realizar o login voc ter uma interface para administrao de seus Grupos e Funcionrios.
No prximo tutorial vamos aprender a customizar o Admin e algumas outras explicaes sobre a
classe Model.
python manage.py runserver
http://localhost:8000/admin/
1 http://code.djangoproject.com/wiki/NewformsAdminBranch
2 http://marinho.webdoisonline.com/blog/p/143/
3 http://www.djangoproject.com/documentation/settings/
4 http://www.djangoproject.com/documentation/0.96/model-api/
5 http://www.djangoproject.com/documentation/install/#installing-the-development-version
i im ma ag ge em m 4 4 Tela de Login do Admin
Artigos
Artigos
www.pzpzine.com 12
Criando uma pequena agenda de contatos
Agendando com PostgreSQL
Por Thiago M Figueiredo
Nesta etapa vamos dar inicio ao nosso sistema de
agenda de contatos com PostgreSQL, vamos montar
as tabelas do bando de dados, dar uma explicao
bsica sobre o PostgreSQL, vocs vo entender o
quanto importante foi criar aquele grfico para o
nosso sistema.
O O i in nt tu ui it to o d do o a ar rt ti ig go o
Fazer um agenda bem simples e rpida
Mostrar basicamente como estruturar uma data base
M Mo on nt ta ar r a as s t ta ab be el la as s e e t ti ip po os s d de e c co ol lu un na as s n na a d da at ta a b ba as se e
U Us sa ar r o o P Pl lo on ne e c co om mo o g ge er re en nc ci ia ad do or r d de e d da at to o a al l m m d de e s se er r u um m g ge er re en nc ci ia ad do o d de e c co on nt te e d do
Mostrar scripts que gravem do bando de dados
I In nt tr ro od du u o o
Vamos construir as tabelas a partir do nosso grfico vamos e ver como bem mais simples, e
para relembrar o link
1
do XML.
I Im ma ag ge em m 1 - Grfico das tabelas
Artigos
Artigos
www.pzpzine.com 13
Agora comear a montar as tabelas, abra um editor de texto de sua preferencia e vamos e
digite o seguinte cdigo a baixo:
Vou explicar resumidamente, pois no o intuito entrar a fundo no PostgreSQL.
Na primeira linha (C CR RE EA AT TE E T TA AB BL LE E n no os ss sa a_ _a ag ge en nd da a) estamos dando o comando para criar a tabela
com o nome de n no os ss sa a_ _a ag ge en nd da a , dentro do () comeamos a criar nossas colunas e celulas da
nossa tabela.
Diferente do Mysql no PostgreSQL no necessrio colocar AUTO INCREMENT e NOT NULL para
se criar os id's, apenas usamos o serial como pode ser visto na segunda linha i id d_ _c co on nt ta at to o s se er ri ia al l ,
ou seja, o serial j diz que este campo no poder ser nulo e que ser auto incremental, a cada
espao exite um parmetro neste nosso comando SQL ou seja id_contato o nome da coluna na
tabela (esse nome dado pelo construtor da tabela eu poderia por o nome de nossa_contato_id
o resultado seria o mesmo ), N NO OT T N NU UL LL L esse parmetro no obrigatrio mais muito
importante ele indica para a tabela que essa clula nunca poder ficar nula, a virgula indica o
final de uma linha, forando que abaixo vai se tenha outro comando sql.
Nossa tabela deve ficar assim:
CREATE TABLE nossa_agenda (
id_contato serial,
ds_nick varchar NOT NULL,
ds_nome varchar NOT NULL,
ds_contao varchar,
contato_email varchar NOT NULL,
contato_email_alt varchar,
contato_telefone_celular varchar,
contato_telefone_comercial varchar,
contato_telefone_casa varchar,
contato_telefone_extra varchar,
contato_telefone_fax varchar,
endereco_casa varchar,
endereco_comercial varchar,
endereco_web varchar
)
nossa_agenda
id_contato ds_nick
ds_nome
ds_contao
1 tmarq Thiago
thiago@
pzpzi
1
2
contato_
email
tmarq@
yahoo
Artigos
Artigos
www.pzpzine.com 14
Agora vamos realmente criar as tabelas, entre na ZMI e adicione o conector a banco de dados,
neste artigo estamos usando o conector Z ZP Ps sy yc co op pg g, primeira coisa antes de tudo certifique-se
que ele esta devidamente conectado ao PostgreSQL, entre no conector e clique na aba [ s st ta at tu us s ]
dentro deste item deve haver um boto deve estar escrito no boto [ C Cl lo os se e C Co on nn ne ec ct ti io on n ] ou seja
ele quer dizer fechar conexo, agora se no boto estiver escrito [ O Op pe en n C Co on nn ne ec ct ti io on n ] clique nele
para abrir a conexo com o banco de dados.
Agora clique na aba test e vai aparecer um textarea neste textarea adicione o nosso cdigo que
criamos como na imagem a baixo:
Clique no boto [ S Su ub bm mi it t Q Qu ue er ry y ] para que possa criar nossa tabela no banco de dados, para ver
se foi criado corretamente clique na aba B Br ro ow ws se e e l vai aparecer todas as tabelas que existem
no banco de dados e deve conter a tabela que acabamos de criar.
C Cr ri ia ar r m me et th ho od ds s p pa ar ra a i in nt te er ra ag gi ir r n no o B Ba an nd do o d de e D Da ad do os s
Agora vamos criar os methods de gravar no banco de dados, saia do conector e fique no mesmo
nvel que o conector, adicione um S SQ QL L M Me et th ho od d com o i id d i in ns se er ri ir r_ _c co on nt ta at to o os outros campos no
so obrigatrio, T Ti it tl le e o Ttulo do mtodo, connection id aqui j vem preenchido com o conector
que o mtodo encontrou se existir mais de um conector vai aparecer neste select box,
A Ar rg gu um me en nt to oo os s neste campo vamos informar quais valores estamos esperando de um r re eq qu ue es st t e
por fim Q Qu ue er ry y T Te em mp pl la at te e os comandos SQL agora para terminar clique no boto A Ad dd d.
Testando o nosso novo mtodo, entre no mtodo novamente e clique na aba test, o que no vai
dar em nada por que dentro do mtodo tem um comando em uma tabela que no existe s se el le ec ct t
* * f fr ro om m d da at ta a ele esta selecionando toda a tabela data mais ela no existe.
Vamos tornar esse mtodo funcional, entre no mtodo para fazer a edio do mesmo e no
I Im ma ag ge em m 2 2 - Textarea
Artigos
Artigos
www.pzpzine.com 15
campo chamado A Ar rg gu um me en nt ts s insira as informaes que esperamos de um request, no nosso caso
insira essa informaes a baixo:
O campo A Ar rg gu um me en nt ts s deve conter essas informaes acima, agora vamos escrever os comando
sql para gr ravar no bando de dados, segue logo abaixo o cdigo a ser inserido no campo de
baixo do campo Arguments.
Deve ficar assim o codigo:
ds_nick
ds_nome
ds_contao
contato_email varchar
contato_email_alt
contato_telefone_celular
contato_telefone_comercial
contato_telefone_casa
contato_telefone_extra
contato_telefone_fax
endereco_casa
endereco_comercial
endereco_web
INSERT INTO nossa_agenda ( ds_nick
, ds_nome
, ds_contao
, contato_email
, contato_email_alt
, contato_telefone_celular
, contato_telefone_comercial
, contato_telefone_casa
, contato_telefone_extra
, contato_telefone_fax
, endereco_casa
, endereco_comercial
, endereco_web ) VALUES ( <dtml-sqlvar ds_nick type=string>
, <dtml-sqlvar ds_nome type=string>
, <dtml-sqlvar ds_contao type=string>
, <dtml-sqlvar contato_email type=string>
, <dtml-sqlvar contato_email_alt type=string>
, <dtml-sqlvar contato_telefone_celular type=string>
, <dtml-sqlvar contato_telefone_comercial type=string>
, <dtml-sqlvar contato_telefone_casa type=string>
, <dtml-sqlvar contato_telefone_extra type=string>
, <dtml-sqlvar contato_telefone_fax type=string>
, <dtml-sqlvar endereco_casa type=string>
, <dtml-sqlvar endereco_comercial type=string>
, <dtml-sqlvar endereco_web type=string>)
www.pzpzine.com 16
Entrevista
Entrevista
R Ra am ma al lh ho o um momento meio complicado na
histria do Zope, as vezes em portugus a
palavra complicado tem uma conotao de
ruim, mas no necessariamente ruim, eu
digo complicado por que no simples. Por
que tem a histria da migrao do Zope 3, o
Jim Fulton (papa do Zope), basicamente
resolveu tomar essa deciso radical, e que
uma deciso tambm muito corajosa de
implementar o produto de novo, do zero, sem
se preocupar inicialmente com
compatibilidade.
Essa uma aposta que deu certo, apesar de
no ter sido um sucesso espetacular, o Zope 3
est ai h vrios anos e no tem muita gente
utilizando, mas tem alguns casos grandes de
uso, eu acho que hoje o centro de gravidade da
comunidade Zope o Plone e isso sem
dvidas, e mesmo com relao ao Zope 3,
mesmo que ainda o Plone no seja baseado no
Zope 3, acredito que exista uma conscincia
muito grande dos desenvolvedores do Zope 3
que eles tem que atender as necessidades do
Plone de alguma maneira para que as
aplicaes tenham futuro.
Eu espero que o futuro seja menos
complicado, e toro para o dia, que no sei
quando vai chegar, mas tenho confiana de
que vai chegar, que o Plone no vai usar mais
nada do Zope 2, e que vai ser uma aplicao
que ser baseada apenas em componentes do
Zope3. Ento realmente est muito difcil
capacitar pessoas para trabalhar com Zope
neste momento, e que realmente eu gostaria
de ver isso se simplificar no futuro, por isso
que desde o ano passado eu estou
contribuindo com o projeto Grok
1
, que tem
como objetivo tornar o Zope algo mais
acessvel, mais fcil de voc comear a usar e
L L
Presidente da Associao Python Brasil
Luciano Ramalho, presidente da associao Python Brasil
Um bate-papo sobre PZP
Por Equipe PZPZine
Luciano Ramalho f de Python e no por acaso tornou-se
presidente da associao Python Brasil, ainda na dcada de 90
implementou no Brasil portais de grande porte com essa
linguagem, gil, elegante, inteligente e muito poderosa.
Hoje, consultor, professor e eterno aluno, certa vez declarou:
Curto muito uma frase do mestre Zen, Shunryu Suzuki, que diz:
Na mente do principiante existem muitas possibilidades, na do
especialista, existem poucas.
Neste esprito bateu um papo descontrado com a equipe da
PZPZine. Ramalho nos contou um pouco da sua experincia com
o Zope e ainda deu dicas para quem est dando seus primeiros passos como programador, e falou
da sua experincia profissional. Logo no incio do papo Ramalho citou o momento delicado em que
se encontra o Zope, seus motivos e conseqncias. A conversa com Ramalho foi gravada no dia
21 de maro de 2008.
www.pzpzine.com 17
Entrevista
Entrevista
a aprender.
P PZ ZP PZ Zi in ne e Apesar das dificuldades aps o
lanamento da nova verso, sabemos que
existem grandes inovaes, o que voc poderia
citar dessas inovaes?
R Ra am ma al lh ho o Acho que a principal
inovao a preocupao em no
fazer um sistema monoltico, fazer
um sistema onde voc possa utilizar
apenas alguns componentes dele na
sua aplicao, isso sempre fez parte
do projeto do Zope 3, e a maneira no
qual o cdigo foi organizado reflete
isso, mais recentemente graas ao
surgimento das tecnologias do
setuptools
2
, easy_install
3
, eggs
4
e etc... Est
virando algo at mais concreto, a maneira
padro de instalar o Zope 3 atravs dos eggs
e fica evidente para o programador que a
instalao composta de um monte de
pedaos, que so os eggs, e o Plone tambm
est indo nessa direo.
Uma outra inovao a questo das
Interfaces
5
, que na verdade isso s uma
parte do aspecto, a inovao o chamado
Arquitetura de
Componentes do Zope 3, que um jeito de
voc tornar o software mais flexvel para
permitir que voc possa trocar um componente
por outro, quanto voc precisa de uma
funcionalidade diferente. Um exemplo clssico
e que sempre existiu no Zope, at no Zope 2,
o sistema de autenticao, se por exemplo no
quero meus usurios dentro do ZODB, ao invs
disso quero utilizar uma base de usurios que
j tenho, e essas bases de dados podem ser
das mais variadas como LDAP, bases baseadas
em SQL ou no que for, ento isso tem que ser
um componente plugvel, e isso no Zope 2 j
era plugvel, mas era a exceo
a regra, ou seja, isso plugvel,
mas o resto todo no, e o Zope
3 foi feito com a preocupao
de que tudo nele seja plugvel.
P PZ ZP PZ Zi in ne e - Todas as linguagens e
aplicaes tendem a ter sempre
concorrentes, e o Python, Zope
e Plone no seriam uma
exceo, voc poderia nos citar algumas das
vantagens das aplicaes PZP sobre seus
concorrentes?
R Ra am ma al lh ho o - Acho que uma das vantagens a
questo da internacionalizao, por que o
Plone por exemplo desde a sua primeira verso
1.0 j tinha a traduo para o idioma Portugus
do Brasil, isso graas ao pessoal da X3NG, que
foi provavelmente a segunda empresa
Brasileira a se especializar em Zope, e hoje ele
j est traduzido para mais de 40 ou 50 ou at
mais idiomas.
O segundo aspecto o esquema de
acessibilidade, e isso foi uma das
preocupaes desde o inicio, ainda tem um
terceiro aspecto que o uso muito avanado e
inteligente de folhas de estilo (CSS), uma outra
coisa que eu desconheo se algum concorrente
tenha o sistema de Workflow igual o do
Plone, que na verdade uma extenso do
Workflow do CMF, e que impressiona muito
quando voc demonstra que se pode criar
novos Workflows via web, sem ter que
programar nada.
P PZ ZP PZ Zi in ne e Como um dos primeiros
programadores em Zope aqui no Brasil, voc
poderia nos contar um pouco da histria das
aplicaes e tambm de sua experincia?
R Ra am ma al lh ho o O Zope na verdade comeou com
sua verso como 1.2 se no me engano, e foi
www.pzpzine.com 18
Entrevista
Entrevista
quando eu fiz o download e comecei a brincar
com ele ficando maravilhado, e foi com essa
tecnologia que ns desenvolvemos o site do
IDGNOW
7
, antes mesmo disso eu havia
desenvolvido um projeto para o site da revista
Magnet, o site j existia, porm migramos para
Zope, se no me engano alm desses dois
sites aqui no Brasil havia o site de um
professor da PUC do Rio que era sobre
chorinho, ento estes foram os trs primeiros
sites aqui no Brasil.
P PZ ZP PZ Zi in ne e No dia a dia, quais so as
ferramentas de trabalho utilizadas por voc?
R Ra am ma al lh ho o Eu utilizo Ubuntu Linux no desktop,
e uso Mac OS X no meu notbook, faz anos que
eu no utilizo o sistema Windows como sistema
operacional principal, porm acho til t-lo
para testar como sua aplicao vai se
comportar, tem uma VMWare que eu utilizo
para rodar o Windows XP dentro, por que
infelizmente ainda existem sites brasileiros que
no rodam no Firefox. Sobre editores, como eu
comecei a utilizar Mac h muito tempo, eu me
viciei no CTRL+C e CTRL+V, ento qualquer
aplicao de edio que no tenham CTRL+C e
CTRL+V para mim o fim da picada, ento por
isso eu no utilizo o VI, EMACS. Ultimamente
eu tenho utilizado mais o Gedit com aqueles
plugins que permitem abrir uma rvore de
diretrios e arquivos ao lado esquerdo da
aplicao, eu at j experimentei algumas
IDEs, eu gosto muito do Komodo tanto que eu o
utilizo no Mac e tambm utilizo algo parecido
com o Gedit que o TextMate.
P PZ ZP PZ Zi in ne e Quais dicas voc poderia deixar para
os leitores da PZPZine?
R Ra am ma al lh ho o espantoso que tem gente que as
vezes trabalha j com Zope e no sabe usar o
PDB
8
, e isso uma coisa que vale muito a
pena voc utilizar, que um debug que j vem
embutido no Python e que fantstico, voc
pode parar um processo do Zope no ar e ver o
que est acontecendo. Uma outra dica para
que as pessoas leiam os manuais Python, Zope
e Plone, pois a maior parte das perguntas
feitas e de erros em cdigos que encontramos
est no fato de que muitos no param para ler
os manuais e tutoriais do comeo ao fim, ento
vale muito a pena voc comear lendo o
tutorial do Python, do comeo ao fim, pois
um contedo que o Guido van Rossum, criador
do Python, escolheu e escreveu para
apresentar sua linguagem.
E o que impressionante que todo dia nas
listas de Python e Zope aparecem perguntas
cujo as respostas esto na pgina X do tutorial
de Python.
Gostaria ainda de fazer uma outra
recomendao, livro caro, mas uma forma
muito boa de voc aprender uma coisa dessas
voc comprar o livro, mesmo que voc no
leia o livro inteiro voc o deixa no banheiro, ai
quando voc vai ao banheiro voc o abre
aleatoriamente, por que naquele momento
voc vai comear a achar solues que as
vezes voc gastou 3 dias para implementar e
algo que j estava pronto no livro.
P PZ ZP PZ Zi in ne e Para terminar, voc poderia deixar
uma palavra para os leitores da PZPZine?
R Ra am ma al lh ho o Sim, tem algo que acho que vale a
pena falar para os leitores da PZPZine, se voc
ainda est utilizando Windows, est na hora de
comear a buscar outras coisas, por que to
mais fcil ser programador em outras
plataformas. Por exemplo, como o Linux foi
feito originalmente de programadores para
programadores as ferramentas esto todas ali,
voc d um apt-get install e pronto, t tudo
funcionando e no Windows aquele drama
para montar um ambiente de desenvolvimento.
Quando voc quer virar programador srio no
Windows se voc no comprar as ferramentas
que custam uma grana preta, voc no
consegue ser programador, e ainda quando
compra, por exemplo um Visual Studio, voc
est equipado ento para fazer coisas s para
Windows, ento para o programador um
sistema que te prende em vrios aspectos.
www.pzpzine.com 19
Entrevista
Entrevista
1 Grok uma aplicao de framework desenvolvido usando o Zope 3 para programadores Python,
destinado tanto a novatos quanto a experientes desenvolvedores web. http://grok.zope.org/
2 http://peak.telecommunity.com/DevCenter/setuptools
3 http://peak.telecommunity.com/DevCenter/EasyInstall
4 http://peak.telecommunity.com/DevCenter/PythonEggs
Eggs esto para Pythons assim como Jars esto para Java, Eggs do Python so uma forma de agregao
de informaes adicionais com um projeto Python, que permite que as dependncias do projeto sejam
verificadas e satisfeitas no momento da sua execuo, bem como projetos que permitam fornecer
plugins para outros projetos. H vrios formatos binrios que encarnam os Eggs, mas o mais comum
'.egg' zipfile formato, uma vez que um conveniente para uma distribuio de projetos.
5 Interfaces so objetos que especifica, o comportamento de objetos externos que fornecem
comportamento atravs de uma interface especifica
6 http://www.idgnow.com.br
7 http://plone.org/documentation/how-to/using-pdb
Tutorial
Tutorial
www.pzpzine.com 20
Introduo a Python scripting no Blender 3D
Python + Blender
Por Ccero Moraes
C Co on ns si id de er ra a e es s i in ni ic ci ia ai is s
Nos meus tempos de Windows user aquela
janelinha preta do Dos, ou prompt para os
mais ntimos parecia-me pouco atraente.
Imagines s, o mouse era muito mais prtico,
era s mover a mo um pouquinho apontar
para aqueles cones e tchiuca! dar uma clicada
e a diligncia estaria resolvida. Sempre
deslumbrava os hackers usando o prompt e
tentava imaginar o porque deles imburem-se
naquela atividade tediosa j que contavam
com uma pratissssima interface grfica ao
alcance das mos. No vou esticar a minha
explanao com descries pormenorizadas. A
resposta a preferncia dos hacker pela "telinha
preta" evidenciou-se depois de alguns anos de
uso do Linux de minha parte... era o c co on nt tr ro ol le e.
Quando tu contas com o modo texto a tua
disposio e as ferramentas certas, tens via
scripts e comandos todo o controle do sistema
operacional. Tu podes desenhar, criar arquivos
de textos, entrar na internet, baixar arquivos,
fazer downloads e toda uma sorte de
atividades naquela "tosca" telinha preta. O
mais interessante que tu podes us-la tanto
no computador que estiver na tua frente,
quanto num computador nos confins da China
via ssh, incrvel no? No??? Certo, imagines a
situao. Tu tens uma firma no outro lado da
cidade, ests no conforto do teu lar, curtindo
uma chuvinha que l fora cai. Derepente toca
o celular:
- Seu fulano, estou com um problema aqui no
computador. Fiz o que o senhor mandou para
criar o backup mas apareceu uma mensagem
de erro maluca!
Tu nem pensas sair de casa, est bom demais
curtir aquela chuvinha. Simples! Como o teu
sistema um Unix-like, basta entrares na
internet, e acessar o microcomputador remoto
via SSH. Assim que o fizer, tu ds uma olhada
no arquivo .conf ou no script que criaste para
fazer backup. At ento est tudo certo. Mas
um pouco de procura, tu entras no histrico de
comandos e pf! Descobre que o teu
funcionrio no rodou o comando correto para
fazer backup. Ento tu simplesmente o faz e
manda um script para o funcionrio em
questo com os procedimentos corretos do
trabalho.
Pois, isso apenas um parco exemplo, o
poder do modo texto bastante amplo. Para
aqueles que no compreenderam bem a
explicao, o que quis dizer foi o seguinte:
C Co om m o o m mo od do o t te ex xt to o t tu u p po od de es s f fa az ze er r
p pr ra at ti ic ca am me en nt te e q qu ua al lq qu ue er r c co oi is sa a n nu um m c co om mp pu ut ta ad do or r, ,
t ta an nt to o o o q qu ue e e es st t n na a t tu ua a f fr re en nt te e a ag go or ra a, , q qu ua an nt to o
u um m q qu ue e e es st ti iv ve er r a a m mi il lh ha ar re es s d de e q qu ui il l m me et tr ro os s. .
Agora a pergunta que no quer calar. Por que
expliquei tudo isso? Simples. Assim que
comecei a escrever alguns modestos scripts
para automatizar as minhas tarefas ao usar o
Linux, v que quase todos os programas
tinham um arquivo .conf que continham a
configurao de seu funcionamento, que
quase todas as ferramentas de configurao
Tutorial
Tutorial
www.pzpzine.com 21
do sistema eram scripts e no programas
binrios e que mesmo os programas binrios
se comunicavam entre s e ofereciam sadas e
mensagens de erro e comportamento que
desaguavam em um arquivo de texto.
C Ca ar ra am mb ba a! ! A Ar rq qu ui iv vo os s d de e t te ex xt to o, , e el le es s s s o o " "o os s
c ca ar ra as s" ". .
Depois da descoberta dos scripts analisei-os e
estudei-os a fundo. Descobri que os programas
do Shell Script, Perl e Python so i in nt te er rp pr re et ta ad do os s
ao invs do C ou Pascal que so compilados.
Um programa em Python um script, um
texto. Um programa em C compilado em um
arquivo (ou vrios) b bi in n r ri io o( (s s) ). Se tu tentas
abrir um programa binrio com um editor de
texto iro aparecer aquele monte de smbolos
estranhos, isso por que ele est na linguagem
do computador. Mas, se tu abrires um script
irs deparar-te com palavras compreensveis.
Entendeste? Certo, agora que eu sabia disso,
comecei a perceber que essa realidade
tambm de aplicava aos arquivos gerados por
alguns programas. Por exemplo... o POV-Ray
que um renderer (programa que converte
um arquivos com dados em uma imagem foto
realstica ou no) que gera arquivos
interpretados, j o Blender gera binrios, ou
seja, arquivos que tu no consegues abrir num
editor de texto. Os do POV-Ray tu podes abrir
em editores, edit-los salv-los e execut-los,
j os do Blender tu s abres nele mesmo.
Exemplos de programas que geram arquivos
i in nt te er rp pr re et ta ad do os s: P PO OV V- -R Ra ay y(.pov), I In nk ks sc ca ap pe e(.svg),
O Op pe en nO Of ff fi ic ce e(.odt)...
Exemplos de programas que geram arquivos
b bi in n r ri io os s: B Bl le en nd de er r 3 3D D (.blend), G Gi im mp p (imagens
como .jpg, xfc, gif...), M Mi ic cr ro os so of ft t W Wo or rd d (.doc)...
Apartir desta segunda fase passei a usar
muito os programas que geravam arquivos
interpretados ao invs de binrios. Percebi que
haviam p pr r s s e e c co on nt tr ra as s, o principal pr o
controle do arquivo e o principal contra o
enorme tamanho desses arquivos em relao
aos binrios. Por exemplo, um arquivo com
uma animao multimdia de 250Kb binrio
corresponde a um interpretado de 45 Mb por
exemplo! E mesmo compactando a diferena
ainda grande.
Outra coisa que descobri e esta ajudou-me
bastante ao tornar prtica a edio dos
arquivos foram as Expresses Regulares. No
vou aprofundar-me no assunto, basta saberes
que as e ex xp pr re es ss s e es s r re eg gu ul la ar re es s ou regex
possibilitam a edio de arquivos de texto
atravs de padres sem a necessidade de abr-
los! Tu podes mudar ocorrncias dentro deles,
como datas, ordem de palavras, apagar letras,
frases e todo o mais com um nico comando!
Tudo isso deve estar parecendo meio confuso,
mas no desistas. Continues lendo o texto que
as coisas vo se encaixando pouco a pouco.
A priori fiquei bastante chateado por
compreender que o Blender gerava aquivos
binrios ao invs de interpretados. Mas
lembrava-me que haviam os scripts em Python
ou Python Scripts. Oba! Havia uma
possibilidade de controle! Estudei um pouco
e... ieba! Essa ferramenta mostrou-se bastante
flexvel e amplamente utilizvel, mesmo no
sendo to abrangente ou milagrosa.
Tu podes criar exportadores, construtores de
meshes (malhas), configuradores e l vai
cassetada de opes. Tambm no vou me
ater muito nestas explicaes, basta dizer-te
que s se e t tu u u us sa ar re es s a a t tu ua a i im ma ag gi in na a o o a at tr re el la ad da a a a
u um m b bo om m k kn no ow w- -h ho ow w d da as s f fe er rr ra am me en nt ta as s, , s se e n n o o
f fi iz ze er re es s c ch ho ov ve er r, , p pe el lo o m me en no os s f fa ar r d de e t te eu u
t tr ra ab ba al lh ho o u um m r re ea al li id da ad de e m ma ai is s p pr r t ti ic ca a, , i in ns st ti ig ga an nt te e
e e p pr ra az ze er ro os sa a! !
Outro fator que me chamou a ateno depois
de todo este estudo, foi perceber o quo
inteligente era a forma que os
desenvolvedores do Blender gerenciavam o
projeto no quesito "reinventar a roda"... eles
simplesmente no fazem isso! Vejas s, acima
explanei modestamente o funcionamento dos
Tutorial
Tutorial
www.pzpzine.com 22
programas que rodam em sistemas Unix, ou
Unix-Like. Escrevi que os programas
conversavam entre s. Pois bem, a alguns anos
quando larguei o 3DS Max para trabalhar com
o Blender, achava estranho que um programa
com tantos recursos contasse com um
tamanho to reuzido. O mais impressionante
que o tempo passava... mais recursos eram
embutidos e o tamanho pouco aumentava.
U? Eu pensava... isso impossvel! Como um
programa to amplamente utilizvel e com
tantos recursos antagnicos pode ser deste
tamanhico? Simples... o programa usava o
esforo, o trabalho de outras pessoas. Por
exemplo... um bendito vai e escreve uma
biblioteca de simulao fsica, outro de um
sistema de som. A pergunta ... por que os
desenvolvedores vo criar as suas apartir do
zero se eles tem a mo as bibliotecas citadas?
Aparentemente foi isso que os developers
(desenvolvedores) pensaram e executaram.
Pelo menos foi o que entendi nos textos que l.
Se tu fores instalar o Blender no Linux, ou
mesmo compil-lo, vers quantos programas e
quantas bibliotecas sero necessrias no
sistema para que ele funcione. No Windows
essas bibliotecas vem como .ddls. Inteligente
no? Pois, escrevi este texto para
complementar o que tenho tentado explicar.
Que o Blender oferece o Python como uma
linguagem que se coloca entre o sistema mais
interno (core) e o externo (interface) para que
tu possas sem muito trabalho executar
operaes que demandariam muito tempo e
conhecimento pelo jeito tradicional ou
acessvel. Tu o que foi dito redunda em vrios
conceitos: Conhecimento da interface grfica,
programao (Python), conhecimentos
internos da programao (expresses
regulares), e gerenciamento do sistema (Shell,
comandos bsicos).
Obs.: Aconselho-te a ler sobre programao
em Python, Orientao a Objetos, Shell script e
expresses regulares. No final do tutorial
estarei disponibilizando links para tal.
C Co ol lo oc ca an nd do o a a m m o o n no o P Pr ro om mp pt t
Antes de mais nada, gostaria de dizer que
este tutorial foi feito sobre o exemplo do
criador do PovAnim, um script de exportao
para o POV-Ray, muito bom por sinal, uma de
minhas ferramentas de trabalho. Outra fato...
sou um iniciante na arte da programao e
desconheo a fundo o funcionamento da
orientao a objeto, portanto no esperes um
explicao pormenorizada dela, vou ater-me a
uma viso geral. Combinado?
A primeira coisa que faremos habilitar o
console, para fazer isso sigas o procedimento
abaixo:
Abras o Blender :P Hehehehe... caso contrrio
fica difcil de trabalhar.
Falando srio agora... dividas a tela principal
em duas. No sabes como fazer isso?
Felizmente expliquei o processo em outro
tutorial:
installblend.html.
I Im ma ag ge en n 1 1 - O blender
I Im ma ag ge em m 2 2 - Tela do blender dividida em 2
Tutorial
Tutorial
www.pzpzine.com 23
Como aparece acima, cliques no boto
esquerdo inferior da janela direita (confuso
n?) e seleciones "Scripts Window".
Isso! A aparncia deve ficar como essa.
Aproveites e apagues tudo o que tem na
janela esquerda. Assim vers o objeto que
ser criado.
Cliques no boto S Sc cr ri ip pt ts s --> S Sy ys st te em m -->
I In nt te er ra ac ct ti iv ve e c co on ns so ol le e.
Um lindo console negro surgir frente aos teus
olhos! nesse garotinho a que escreveremos
os comandos que confeccionaro a nossa
mesh, ou malha.
Um pouco de conversa fiada antes de
prosseguirmos. Existe outra forma de se criar
Python scripts, a principal atravs de um
arquivo de texto. Nesse tuto, ns utilizaremos
o console, por que achei mais bonitinho...
hehe, a verdade que percebi nele uma
forma do aprendiz lidar em tempo real com os
comandos e ver o que est acontecendo... ver
quando as coisas acontecem. O Blender
tambm conta com um editor de texto com
suporte a colorao de sintaxe para a
linguagem Python, tu podes escrever teus
scripts l, ir j salvando e testando-os, show
de bola, no?
Tutorial
Tutorial
www.pzpzine.com 24
Vejas s, naquela janelinha preta, ou console, tu vais escrever os comandinhos bsicos.
Comeces por:
Como aparece acima, depois ds dois Enters e vs ao prximo comando.
Certo? Depois dos dois Enters:
Bem, como estou enfadado de capturar a tela :) vou apenas escrever os comandos que se
seguem. Escreva-os da mesma forma que aparecerem abaixo. Ah, para no precisares redigitar
tudo de novo basta clicares na S Se et ta a p pa ar ra a c ci im ma a, para que os comandos anteriormente digitados
apaream na tela e S Se et ta a p pa ar ra a b ba ai ix xo o caso passes do comando desejado. Assim que aparecer o
que estava precisando, podes modificar somente a parte necessria, como no caso das
coordenadas dos vrtices. Depois dos dois comandos acima escrevas estes:
me = NMesh.GetRaw()
v = NMesh.Vert(1, 0, 0)
me.verts.append(v)
v = NMesh.Vert(1, 1, 0)
me.verts.append(v)
v = NMesh.Vert(0, 1, 0)
me.verts.append(v)
Tutorial
Tutorial
www.pzpzine.com 25
Opa, opa! Nessa parte ests quase l. Mas ainda no terminamos!
Percebas na imagem acima. Na parte direita esto listados todos os comandos que escreveste
at ento. E na esquerda aparece a janela 3d sem nenhum objeto exceto o cursor. O grand-
finale ser esse comando:
v = NMesh.Vert(0, 0, 0)
me.verts.append(v)
f = NMesh.Face()
f.v.append(me.verts[0])
f.v.append(me.verts[1])
f.v.append(me.verts[2])
f.v.append(me.verts[3])
me.faces.append(f)
NMesh.PutRaw(me, "plane", 1)
Tutorial
Tutorial
www.pzpzine.com 26
Uia!!! Um plane surgiu! mas de onde, meu Deus! :P :)
Mais conversa fiada. Tu deves estar perguntando-te: - U, escrevi este monte de comandos
malucos e no entendi bulhufas!
Pois bem, caro leitor. bvio que no vou te deixar nessa curiosidade to latente. Tentarei
explicar-te o que fizemos atravs de comentrios e desenhos no decorrer dos comandos. Seria
bom que tu estudasses um pouco de Python, mas como isso exige um tempo relativamente
generoso lanaremos mo dessa breve explanao para compreender superficialmente o que
aconteceu e como o Python se comporta ao usarmos ele para a construo de objetos no
Blender.
E En nt te en nd de es st te e o ou u q qu ue er re es s q qu ue e e eu u d de es se en nh he e? ?
Ok, eu desenho! Vamos comear traando o objeto a ser criado.
Esse plane amarelo o nosso garoto. Tambm foram traados os planos x, y e z e as
coordenadas dos vrtices.
Vou destrinchar o cdigo agora, tentarei ser breve e objetivo.
A primeira coisa que aparece o seguinte:
timo, e o que isso significa?
R. Esse me provavelmente o Datablock Name do objeto, ou seja, o objeto como um todo ou
empacotado, com formas, nome, posio e cia ltda. Depois ns temos o N NM Me es sh h. .G Ge et tR Ra aw w( () ), essa
parte cria um objeto tipo mesh que ser construdo manualmente pelo usurio, diferente de
uma box por exemplo que j vem pronta, tu ters de setar todas as vrtices dele e suas
respectivas posies. At agora o Blender no tem idia de como ser o objeto, apenas sabe
que tu queres fazer um e que tu desejas model-lo do zero. Ele est "em aberto".
Agora criamos uma vrtice ou vertex e posicionamos ele na coordenada 1, 0, 0
me = NMesh.GetRaw()
v = NMesh.Vert(1, 0, 0)
Tutorial
Tutorial
www.pzpzine.com 27
Depois de criada precisamos atribuir ela ao objeto:
Vou tentar explicar o que esse pequeno cdigo significa. O m me e o nosso objeto indefinido, ele
est recebendo um valor para o v ve er rt ts s que est sendo colocado pelo a ap pp pe en nd d que por sua vez
retira um dado de uma varivel direita (v v) e coloca na outra varivel esquerda dele (v ve er rt ts s).
Meio redundante n? Mas a explicao mais plausvel que achei. Para que tu entendas bem o
que aconteceu aqui, ters de ler sobre listas no Python. Essa varivel v ve er rt ts s abrigar nela no
apenas um valor, mas vrios, todas as coordenadas das nossas quatro vrtices.
Certo, para facilitar vamos imaginar que o m me e um grupo com vrios valores, dentre os quais o
v ve er rt ts s. O que vamos fazer jogar todas as coordenadas dos vrtices para a varivel verts.
Entendeste? Vejas acima o que faremos ao final das atribuies de varivel. A varivel verts tem
quatro valores precedidos de um nmero que o ndice. Mais tarde tu irs compreender isso. O
que ns fizemos foi o seguinte.
me.verts.append(v)
Tutorial
Tutorial
www.pzpzine.com 28
At ento a varivel verts no tem valor algum. Ns atribumos a v o valor de 0, 0, 0. O sistema
sabe que um vrtice por conta do comando N NM Me es sh h. .V Ve er rt t( () ). Como o Python uma linguagem
orientada a objetos o v tambm um; ele um objeto vetex na posio 0, 0, 0 do plano
cartesiano. S isso, o Blender no sabe que a gente quer que esse vertex seja um dos que
compunharo o nosso plane, ou o m me e. Da entra o comando a ap pp pe en nd d( () ). Ele copia o valor de uma
varivel e atribui a outra.
Olhes acima... o a ap pp pe en nd d( () ) copiou o valor de v e jogou-o como o ndice [0] da varivel v ve er rt ts s.
Assim o Blender sabe que o nosso objeto me tem um vertex posicionado em 0, 0, 0. Por
enquanto s isso. Percebas que dentro do comando a ap pp pe en nd d( () ) tem a varivel que ele copiou, ou
seja o v:
<-- Aqui.
Agora faremos o mesmo para os outros vertex:
me.verts.append(v)
v = NMesh.Vert(1, 1, 0)
Tutorial
Tutorial
www.pzpzine.com 29
me.verts.append(v)
v = NMesh.Vert(0, 1, 0)
me.verts.append(v)
Tutorial
Tutorial
www.pzpzine.com 30
Todos os vertex foram criados, agora precisamos montar o plane, para isso criaremos um objeto
mesh e atribuiremos os vertex a ele.
Esse comando criou um objeto Face, mas esse objeto est em aberto, pois precisa dos vertex
para poder ligar um ao outro e formar o plane.
Tu no achas que eu vou desenhar todos os passos novamente, n? :P
O processo o mesmo descrito em cima, com ligeira diferena.
v = NMesh.Vert(0, 0, 0)
me.verts.append(v)
f = NMesh.Face()
f.v.append(me.verts[0])
f.v.append(me.verts[1])
f.v.append(me.verts[2])
f.v.append(me.verts[3])
Tutorial
Tutorial
www.pzpzine.com 31
Vejas que o m me e agora conta com mais um objeto dentro dele, o f fa ac ce es s. O f fa ac ce es s por sua vez usou
os dados de v ve er rt ts s para criar o mesh.
Para falar a verdade, eu no entendi direito o por que da atribuio de v ao f, aparentemente
seria necessrio apenas a primeira atribuio.
Vamos fechar agora a confeco do objeto com o comando:
Acabamos de criar o plane. Se tu olhares no m me e do objeto vers que o nome dele justamente
plane por conta da parte "plane" do cdigo.
N NM Me es sh h. .P Pu ut tR Ra aw w( (m me e, , " "p pl la an ne e" ", , 1 1) )
http://cogitas3d.procedural.com.br/tutos/blendpy.html
http://www.blender3d.org/documentation/242PythonDoc/index.html
www.pythonbrasil.com.br
http://jmsoler.free.fr/didacticiel/blender/tutor/python_script00_en.htm
http://guia-er.sourceforge.net/
www.pzpzine.com 32
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 33
Tcnico
Tcnico
Desde o Plone 2.1, o Archetypes tm se tornado na
prtica, a maneira de desenvolver novos tipos de
contedo, e a maioria dos produtos de terceiros
que so liberados nos dias de hoje usam
Archetypes.
Archetypes um framework para
desenvolvimento de novos tipos de contedos
no Plone. Para quem est iniciando no
desenvolvimento de produtos para o Plone, o
Archetypes ajuda muito, aqui vou sitar 5
vantagens em utilizar archetypes no
desenvolvimento de novos produtos para seu
Plone Site.
1- O poder do Archetypes est, primeiramente,
na gerao automtica de formulrios;
2- Fornecimento de uma biblioteca de tipos de
campos estocados, formulrios widgets, e
validadores de campos;
3- Facilidade de integrao de campos
customizados, widgets, e validadores;
4 - Transformao automtica em contedo
rico;
5 - Um motor de referncia interno que
fornece a habilidade para ligar dois objetos
juntos com uma relao; tal ligaode um
determinado objeto a outro um objeto
Python conhecido como referncia;
No Plone o produto ATContentTypes que
contm o conjunto principal dos tipos de
contedo que vm com a verso 2.1 e
posteriores.
Uma das principais mudanas apresentadas no
Plone 2.1, foi que os principais tipos de
contedo (Pgina, Imagem, etc) deixaram de
ser baseados nos tipos de CMF, para usar
ArcheTypes. Os novos tipos de contedo
principais se encontram no produto
ATContentTypes, que introduz um nmero de
classes base e ferramentas que fornecem um
comportamento comum ao Plone.
Isto inclui algumas coisas como o suporte para
o menu Exibio e o menu mais..., e
restries para o menu adicionar item, voc
ainda pode usar as classes base
ATContentTypes e ferramentas nos seus
prprios produtos, bastando apenas importar
essas classes base e ferramentas, no tutorial
The RichDocument voc encontrar as
principais tcnicas para desenvolvimento e
que tipicamente sero mais teis se voc
estiver criando tipos de contedo que so
junto com as linhas dos tipos de contedo
interno do Plone.
Caso voc est usando Archetypes para
construir coisas que so mais orientadas a
funcionalidade, como por exemplo construir
um frum, o ATContentTypes pode no ser to
til como ponto de partida, vejamos um
exemplo de um produto utilizando o
Archetypes, mas antes vejamos a estrutura
bsica para nosso produto SevenPloneIM:
- SevenPloneIM
- README.txt
Escrevendo um produto de Instant Message
Conhea o Archetypes
Por Cleber J Santos
www.pzpzine.com 34
Tcnico
Tcnico
- version.txt
- refresh.txt
- __init__.py
- config.py
- permissions.py
- Spimtool.py
- interfaces.py
- SpimMessage.py
- doc
- AUTHORS.txt
- LICENSE.TXT
- INSTALL.TXT
- i18n
- build.bat
- build.sh
- sevenploneim-plone-pt-br.po
- www
- tool.gif
- Extensions
- Install.py
- select_skin.py
- skins
- spim_content
- tests
- base.py
- test_toolsetupe.py
- runAllTests.py
- SPimTestCase.py
- framework.py
Agora que j conhecemos a estrutura de nosso
produto, vamos entender um pouco qual a
finalidade desses arquivos e diretrios:
- R RE EA AD DM ME E. .t tx xt t: Contm informaes bsicas
sobre a instalao e dependncia do produto,
e outras informaes;
- v ve er rs si io on n. .t tx xt t: Contm informao sobre a
verso em que o produto encontra-se;
- r re ef fr re es sh h. .t tx xt t: Este arquivo apenas para que o
Zope/Plone possa atualizar os scripts e
arquivos a cada restart, dessa forma caso haja
uma nova correo que se foi aplicado ao
produto, basta apenas entrar via ZMI e
atualizar o mesmo;
- c co on nf fi ig g. .p py y: fornece configurao de variveis
para o produto;
- p pe er rm mi is ss si io on ns s. .p py y: fornece definies de
permisso para os tipos de contedo;
- S Sp pi im mM Me es ss sa ag ge e. .p py y: Mdulo que fornece a
implementao dos tipos de contedo;
- S Sp pi im mt to oo ol l. .p py y: Mdulo que fornece a
implementao da ferramenta de aes;
- i in nt te er rf fa ac ce es s. .p py y: Implementao de interfaces
para nosso produto;
- d do oc c: Este diretrio estar disponvel alguns
documentos de ajuda instalao e etc;
- i i1 18 8n n: Diretrio que trar consigo os arquivos
responsveis pela traduo de nosso produto,
tais como scripts para gerao destes arquivos;
- w ww ww w: Complementa com imagens e
documentos o mdulo de implementao da
ferramenta de aes;
- E Ex xt te en ns si io on ns s: Contm os mdulos necessrios
para definir os Zope External Methods, teis
para as tarefas de instalao/administrao do
produto, principalmente o mdulo Install.py
usado pela ferramenta de instalao-Rpida
do Plone;
- s sk ki in ns s: O container do(s) diretrio(s) de
subskin. Esta pasta contm apenas um
diretrio onde elementos especficos de UI
(interface de usurio) para o SevenPloneIM
(como imagens, templates, scripts) podero
ser adicionados mais tarde.
- t te es st ts s: Contm o cdigo de testes unitrios
para o produto.
Na prxima edio daremos continuidade ao
nosso HowTo, veremos os arquivos um por um
e adicionaremos os que ns iremos precisar
para produzir nosso produto de Instant
Message com os tipos de contedo baseados
no Archetypes.
www.pzpzine.com 35
Tcnico
Tcnico
E ER RP P5 5 - The Zope based opensource ERP
ERP5 um sistema ERP de Cdigo Livre que oferece uma soluo de alta tecnologia baseada na
plataforma ZOPE, escrito em Python. A plataforma oferece um banco de Objetos (ZODB), uma
ferramenta de workflows (DCWorkflow), uma infra-estrutura de gerenciamento de contedo
(CMF Content Management Framework) e uma ferramentas de desenvolvimento rpido de
interfaces (Formulator e Zope Page Templates). O ERP5 incorpora uma ferramenta indexao
baseada em Banco Relacional (ZSQLCatalog), que utiliza o MySQL para armazenar somente
alguns metadados essenciais em tabelas, permitindo uma recuperao mais rpida da
informao quando comparada ao ZCatalog.
O projeto foi iniciado em 2001 por duas empresas da Frana, NEXEDI principal desenvolvedor,
e Coramy primeiro usurio, e desde ento o desenvolvimento e uso vem crescendo e
recebendo colaboraes de diversas instituies de vrios pases. Seu principal objetivo
desenvolver e projetar um grupo compreensvel de componentes de software para ERP e
fornecer informaes suficientes para entender e implementar ERPs com baixo custo.
O Os s 5 5 c co on nc ce ei it to os s
Ele est baseado num novo modelo de objeto de
gesto de empresa, que capaz de representar
qualquer processo de gerenciamento usando
somente cinco conceitos fundamentais,
incorporando um modelo unificado de negcio
(UBM), que mapeia todas as informaes da
empresa nestes cinco conceitos fundamentais:
Apresentao do ERP5
Por Rafael Manhes Monnerat
www.pzpzine.com 36
Tcnico
Tcnico
Recurso (Resource): descreve um recurso abstrato em um processo de negcio.
N (Node): podem receber e enviar recursos, podendo ser relativos a entidades fsicas ou
abstratas;
Movimento (Movement): descreve um movimento de recursos entre ns, em um dado
instante, por uma dada durao;
Caminho (Path): descreve uma forma que um n acessa recursos dos quais precisa. So
abstratos, sendo utilizados para planejamento;
Item: instncia fsica de um recurso.
Para facilitar o entendimento dos 5 conceitos, este exemplo descreve o entendimento de alguns
conceitos na vida real:
Um comprador (N) cria uma ordem de compra (Movimento) de 2 computadores (Recurso) em
uma loja (N). O comprador (N) recebe os computadores de referncia X1 e X2 (Items).
A estrutura das documentos (contedos) do ERP5 definida pelo mapeamento entre os cinco
conceitos e classes principais do sistema ou em alguns casos especiais atravs de extenses
destes conceitos. O processo de negcio implementado atravs dos workflows (DCWorkflow),
considerando conceitos de causalidade e eventos relacionados.
B Bu us si in ne es ss s T Te em mp pl la at te es s
O ERP5 conta com vrios mdulos de ERP disponveis para download. Estes mdulos esto
empacotados nos Business Templates (Modelos de Negcio) que provem modelos para
Contabilidade, Planejamento da Produo, MRP, CRM, Negcio, Comercio eletrnico,
Gerenciamento de Projetos, entre outros.
Site da comunidade -> http://www.erp5.org/
Wikepdia -> http://en.wikipedia.org/wiki/ERP5
Cdigo fonte -> http://svn.erp5.org
www.pzpzine.com 37
Prxima edio
Prxima edio
P Py yt th ho om m p pa ar ra a f fe er rr ra am me en nt ta a d de e d de es sk kt to op p
Vamos abordar a
linguagem de
programao Python em
ferramentas que usamos
no dia-dia que nem se
quer damos conta que
tem python rodando por
trs daquela ferramenta
que estamos usando
vamos mostrar quais so
essas ferramentas e
alguns exemplos de
cdigos as ser usando
nestas ferramentas
desenvolvimento de
plugins em python para
essas ferramentas
A Ag ge en nd da a c co om m P Po os st tg gr re es s I II II I
Continuao final do artigo de Postgres que vai mostrar como usar o Plone paga
gerenciamento de dado e informaes simples com validaes em python.
Continuao do artigo-tcnico conhecendo o archetype
Novos tutorias
Tudo Isso e muito mais confira na prxima edio.
Redao PZPZine.
Edio de Nmero 4
Python para ferramentas de
desktop's

You might also like