Académique Documents
Professionnel Documents
Culture Documents
Migração
como fazer uma migração
de versões antigas para
novas versões de zope e
plone.
Editorial
Finalmente... Expediente
Arte Fabiano Bispo
Cleber J. Santos
A PZPzine é, então, uma publicação de caráter técnico, dirigida a um cleber@pzpzine.com
público diversificado, uma vez que está segmentada em assuntos
corporativos envolvendo software livre desenvolvidos a partir de Thiago M. Figueiredo
tecnologias como Python, Zope e Plone, no intuito de auxiliar thiago@pzpzine.com
desenvolvedores e empresas a tomarem decisões sobre as tecnologias que
farão parte de seu alvo de investimentos e desenvolvimento, e tutoriais
voltados para engenheiros e administradores de sistemas, analistas, Apoio
técnicos e usuários iniciantes.
2
Índice
− Técnico...............................................................................16
Na área técnica deste mês tem um tutorial sobre migração que exiplica como fazer uma
migração de versões antigas para novas versões de zope e plone.
− Faq...................................................................................20
As mais freqüentes perguntas feitas pela net.
− PyCoffe...............................................................................21
Você conhece DTML mas não sabe como fazer para aplicar o mesmo em ZPT? Na seção PyCoffe
deste mês você tem um tutorial que mostra como se faz.
Como se fosse a primeira vez
Se você leu leu e ainda não entendeu patavinas sobre o que esta revista fala,
experimente ler esses quadros, eles explicam o básico sobre o tema que trataremos
nas próximas páginas
PYTH
Python
Python tem algumas
ZOPE PLONE
Zope Plone
Zope é um servidor de Plone é um *sistema de
vantagens, sendo uma aplicações web de código gerenciamento de conteúdo
linguagem universal[1]. Um aberto, ele é escrito com a (CMS, de Content Management
dos principais fatores é linguagem Python. Zope System)*[1], livre e de
que python combina os três significa "Z Object código aberto, em Python,
paradigmas de programação Publishing Environment uma linguagem de programação
atuais em um só. (Ambiente de Publicação de livre e que roda sobre um
Objetos)”. Servidor de Aplicações Zope
Python pode ser usado como e sobre o *framework
uma linguagem orientada a Muitas tarefas de CMF(Contente Management
objeto[2], como C++ ou administração de um servidor Framework)*[2]
Java, ou como uma linguagem Zope podem ser realizadas
orientada a através de uma interface O Plone pode ser usado para
procedimentos[3], como web. Os objetos que o Zope a construção de portais de
Pascal ou C. publica na Web são escritos informação em intranets,
em linguagem Python, e extranets e na internet, ele
Ao mesmo tempo é uma tipicamente armazenados num já vem com um sistema de
linguagem de script[4] como banco de dados orientado a segurança e funções pré-
Php ou Perl, seus programas objetos, o ZODB[1], que é configuradas, o chamado
sequer precisam ser integrado ao sistema. workflow[3], um conjunto de
compilados pelo usuário. Objetos básicos, tais como tipos de conteúdo e suporte
Isso mesmo! Python pode ser documentos, a várias línguas (Idiomas).
usado no desenvolvimento
4
Como se fosse a primeira vez
PYTH
de aplicações web ou para
escrever softwares, não há
pré-declaração de variáveis,
e os tipos das variáveis são
determinados dinamicamente,
ZOPE PLONE
imagens e templates (modelos
de páginas) podem ser
criados ou modificados via
web. Objetos especializados,
tais como wikis, blogs, e
Há vários desenvolvedores,
escritores, e pessoas que
testam o Plone de todas as
partes do mundo,
contribuindo todos os dias
seu controle de bloco é galerias de fotos estão com o Plone.
feito apenas por indentação, disponíveis como componentes
ou seja, não há adicionais chamados products Enganan-se os que pensam que
delimitadores. (Produtos). o Plone é um software, pois
o Plone depende do Zope para
Além de oferecer tipos de Suas características são rodar e o Zope que por sua
alto níveis como (strings, diversas, mas não caberia vez depende do Python para
listas, tuplas, dicionários, citar todas. O zope funcionar como um servidor
arquivos e classes). Também diferente de muitos sistemas de aplicações Web,
suporta múltipla herança[5], é formado por objetos em um normalmente para sistemas
conecta-se a banco de dados banco de dados em vez de operacionais como no caso do
e pode usar vários arquivos, este tipo de Windows, você pode baixar o
protocolos de comunicações. abordagem permite alavancar Plone em forma de um
as vantagens do paradigma de executável *.exe, mas na
Assim como java, o código- objetos, como verdade está sendo instalado
fonte de um programa em encapsulamento. O Zope o Zope + o CMF e todos os
Python é convertido em associa URLs a objetos componentes para o que Plone
bytecode[6]. Este código utilizando a hierarquia de funcione. E para que tudo
também é executado por uma partes (composição), os funcione é necessário que o
máquina virtual, mas python métodos são considerados usuário tenha o Python já
é bem mais rápido que java. como partes dos objetos. instalado no sistema.
1 Linguagem universal, é O Zope fornece dois Então a maneira correta de
única,de entendimento para mecanismos para a criação de definir o Plone é como um
todos. templates: Dynamic Template produto[4] do Zope, isso
Markup Language (DTML: mesmo, o Plone funciona como
2 Orientação a objetos, Linguagem Dinâmica de um produto que roda dentro
também conhecida como Marcação de Templates), do Zope e que por sua vez
5
Como se fosse a primeira vez
PYTH
programação Orientada a
Objetos (POO) ou ainda em
inglês Object-Oriented
Programming (OOP) é um
paradigma de análise,
projeto e programação de
ZOPE PLONE
e Zope Page Templates (ZPT:
Templates de Páginas Zope).
1 Sistema de Gerenciamento
de Conteúdo - SGC, do inglês
Content Management Systems -
sistemas de software baseado em templates, através de CMS, é um gerenciador para
na composição e interação laços, condicionais e websites, portais e
entre diversas unidades de inserção de variáveis, no intranets, cujo objetivo é
software chamadas de objetos. entanto, o DTML apresenta estruturar e facilitar a
alguns problemas comuns às criação, administração,
3 Procedimentos, também linguagens deste tipo: os distribuição, publicação e
conhecidos como rotinas, templates não podem ser disponibilidade da
subrotinas, métodos, ou verificados por validadores informação.
funções (que não devem ser HTML, e a inclusão
confundidas com funções indiscriminada de lógica nos 2 No desenvolvimento do
matemáticas, mas são templates resulta em código software, um framework ou
similares àquelas usadas na pouco legível e difícil de arcabouço é uma estrutura de
programação funcional) manter. suporte definida em que um
simplesmente contém um outro projeto de software
conjunto de passos ZPT é uma uma tecnologia que pode ser organizado e
computacionais a serem ataca estes problemas. desenvolvido. Um framework
executados. Um dado Templates ZPT são formadas pode incluir programas de
procedimento pode ser por XML ou HTML válido, nas suporte, bibliotecas de
chamado a qualquer hora quais toda a codificação é código, linguagens de script
durante a execução de um feita através de atributos e outros softwares para
programa, inclusive por dentro dos tags já ajudar a desenvolver e
outros procedimentos ou por existentes nestas linguagens. juntar diferentes
si mesmo. componentes de um projeto de
Tais atributos utilizam um software.
4 Também chamada (linguagem espaço de nomes especial,
de computador interpretada) denominado tal: 3 Workflow pode ser definido
são linguagens de programação como a seqüência de passos
6
Como se fosse a primeira vez
PYTH
executadas em um
interpretador. Por esse
motivo, os scripts, que são
as instruções formais
escritas com as linguagens
interpretadas.
ZOPE PLONE
Template Attribute Language
(Linguagem de Atributos para
Templates), e assim são
compatíveis com as
especificações do W3C e com
as principais ferramentas de
necessários para que se
possa atingir a automação de
processos de negócio, de
acordo com um conjunto de
regras definidas.
7
Python - prazer em conhecer
Python
UM POUCO DE HISTÓRIA
8
Python - prazer em conhecer
10
Python - prazer em conhecer
11
Python - prazer em conhecer
12
Python - prazer em conhecer
13
Python - prazer em conhecer
EXEMPLOS DE CÓDIGO
Uma das características mais marcantes da linguagem, a sintaxe do Python é clara, concisa e elegante, o que
facilita a manutenção e garante a produtividade.
# Enviando e-mail:
Exemplos:
# O tradicional "Hello, world":
import smtplib
server = smtplib.SMTP('mail.xx.net')
print 'Olá, mundo!'
# Envio de e-mail da conta @xy para a conta @xx
# Imprimindo uma lista ordenada com os
itens com a primeira letra em maiúscula: server.sendmail('leonardo@xy.com', 'leonardo@xx.net',
"""To: leonardo@xx.net
lista = ['laranja', 'banana', 'uva'] From: leonardo@xy.com
lista.sort() Subject: Teste de envio de email
Estou lhe enviando este email como um teste.
for item in lista: """)
print item.capitalize()
server.quit()
print 'Envio OK'
# Contando palavras em um arquivo:
arquivo = file('text.txt')
palavras = arquivo.read().split()
unicas = set(palavras)
14
Python - prazer em conhecer
IMPLEMENTAÇÕES
* CPython é a implementação original e a mais conhecida, disponível para várias plataformas no site oficial
(www.python.org)
* Stackless Python é a variante do CPython que permite multi-tarefa sem o uso de threads, o nome se deve a
LICENÇA FONTE
Python possui uma licença Open Source aprovada pela Este arquivo foi desenvolvido utilizando material
OSI e compatível com a GPL, porém menos restritiva. Wikipedia.
Sua licença prevê (entre outras coisas) que binários
da linguagem sejam distribuídos sem a necessidade de No link principal
fornecer o código-fonte junto. Para maiores (http://pt.wikipedia.org/wiki/Python) podem ser
detalhes, visite Python Software Foundation License encontrados mais informações como: Empresas que
utilizam Python e sofwares que utilizam a
técnologia. Aconselhamos o acesso para as pessoas
que necessitem de informações mais específicas.
15
Tecnico
Migração
1- Vamos fazer backup do arquivo Este material foi escrito
E ste material tem como o
objetivo oferecer uma noção básica Data.fs de nosso site da versão Plone
durante uma migração real, e
aprimorado após erros e mais
de como proceder durante uma migração 2.0.5 localizado em
erros, utilizamos uma versão
de versões de Plone, é sempre complexo ($INSTANCEHOME/var). Você pode
de Zope e Plone bastante
falar sobre migração e que exige muitos utilizar um script python chamado
antiga (Zope 2.7.8 + Plone
cuidados. Porém esperamos poder repozo.py localizado em
2.0.5) e migramos para a
oferecer uma noção de como proceder (ZOPE_HOME/bin/repozo.py), também ao
versão mais recente (Zope
nesses casos. final do artigo estaremos
2.9.6 + Plone 2.5.1).
disponibilizando um arquivo chamado
Chega de lenga, lenga e vamos ao que repozo.sh, é um shell que automatiza o
A migração se deu a diversos
nos interessa. processo de backup.
fatores, um deles é que o
tamanho do ZODB era limitado
Notas: 2- Após ter feito o backup, vamos a 2GB, fora a questão de usar
archetypes, isso foi um
a - Antes de mais nada assegure-se de começar a brincadeira, copie o arquivo
alívio, pois as novas versões
ter feito backup de todos os arquivos Data.fs de seu site para dentro do
de Plone já vinham suportadas
do seu site. diretório var da nova instância que
com archetypes.
vai conter a nova versão de Plone,
b - Jamais aplique um processo desses como exemplo irei usar um arquivo
em um servidor de produção, faça tudo chamado (Data.migracao.fs).
em uma máquina local
16
Tecnico
17
Tecnico
18
Tecnico
AUTO R
LICENÇA
Python possui uma licença Open Source aprovada pela Cleber J Santos - cleber_jsantos@yahoo.com.br
OSI e compatível com a GPL, porém menos restritiva.
Sua licença prevê (entre outras coisas) que binários Militante na aposta ao Software Livre desde
da linguagem sejam distribuídos sem a necessidade de 2002, após tentativas frustradas em ferramentas
fornecer o código-fonte junto. Para maiores Web que não atendiam as necessidades migrou para
detalhes, visite Python Software Foundation License Zope, Python e Plone, ferramentas o qual se
dedica e atualmente atua, passou também a ser
sua aposta para uma Web mais dinâmica e
funcional.
19
FAQ
20
PyCoffee
PyCoffee
Em DTML (crie um DTML Method), a gente Passar de DTMLpara ZPT
21
PyCoffee
ZPT
<b tal:repeat="sequencia
python:range(1,11)" > <form>
<span tal:replace="sequencia"/> > <select>
</b> <option>-</option>
<div tal:repeat=" sequencia python:_.range(1,10)">
<option tal:condition=python:"'9' == sequencia" tal:replace="here.
Simples, não ? Me passa o açúcar sequencia" selected></option>
por favor... Utilizando dessa lógica </div>
já posso te mostrar um exemplo mais </select>
legal... </form>
<form>
<select>
<option>-</option>
<dtml-in expr="_.range(1,10)">
<option <dtml-if "9 == AUTO R
_[('sequence-item')]">
selected</dtml-if>><dtml-var
sequence-item></option>
</dtml-in> João Paulo Carusi - jpcarusi@gmail.com
</select>
</form> Confia e aposta no zope desde 2001. Fiel e
satisfeito com a ferramenta, nunca sentiu a
necessidade de procurar outra solução web.
Tem como objetivo fortalecer o Zope no Brasil.
22