!
"
!
#
"
#
$
$
%
&
%
'
&
(
'
)
(
*
)
+
*
,
+
,
.
-
/
.
&
/
0
&
&
0
1
&
,
1
(
,
2
(
(
2
*
(
3
*
3
3
-
&
3
4
&
1
4
*
1
5
*
&
5
6
&
*
6
*
7
8
7
9
8
:
9
;
:
;
Como complemento do meu relatório sobre o Zope e a comparação com
outros servidores de aplicações web, resolvi criar um site que pudesse
disponibilizar o relatório on-line e pudesse servir, de alguma maneira, como
apoio e repositório de toda a informação sobre Zope.
Neste anexo, vou apresentar os traços gerais da criação da aplicação,
as suas funcionalidades e objectivos, e toda a informação que eu achei
relevante acrescentar. Linhas gerais:
-
-
Introdução ao DPZ;
Objectivos;
Funcionalidades;
Arquitectura;
o Serviço de Notícias;
o Serviço de Documentação;
o Área reservada aos utilizadores;
O DTML no DPZ
Conclusão.
Introdução ao DPZ
O DPZ é um acrónimo de “Documentação Portuguesa sobre o Zope” e
não é mais que um site Zope, implementado para servir a comunidade
portuguesa, que se interesse pelo software open-source, pela programação,
pela web ou num conceito mais amplo pela informática em geral.
O DPZ corre, de momento, numa máquina Windows NT, sem a
integração de outro servidor web (o Zserver trata de tudo...) e para se entrar no
site é preciso digitar o IP da máquina bem como a porta HTTP, que no caso do
Zserver, é por defeito a porta 8080. O URL é então:
http://193.136.60.186:8080
Objectivos
Os objectivos principais desta aplicação, para além de servir de
complemento prático ao relatório, são os seguintes:
-
Proporcionar informação e notícias actualizadas relativamente ao
Zope;
Disponibilizar documentação actualizada sobre o Zope em português
(ainda não existia nenhuma );
Permitir a descoberta e/ou a redescoberta por parte dos utilizadores
desta nova tecnologia;
Criar um feedback com as pessoas que navegam na net;
Gerir áreas de utilizadores;
<
-
Funcionalidades
O facto de ser uma ferramenta open-source, não deve amedrontar os
mais cépticos, mas sim galvanizar as mentes dos mais receosos, para que
possam partir à descoberta de novas tecnologias num ambiente como a
internet, que está em franco desenvolvimento e perante a integração das
empresas neste mundo, é preciso redescobrir ambientes de desenvolvimento,
criar sites baseados em aplicações que possam servir os clientes duma
maneira simples, rápida e robusta. Mas a aposta na manutenção é
extremamente importante, pois um site que não possua estruturas que
permitam uma manutenção eficaz, perdem em termos de tempo e, claro está,
em dinheiro. Já dizia o ditado “o barato sai caro”, mas com o Zope o ditado
passa a ser “o barato sai barato” .
Outra das funcionalidades, que são quase uma norma são a delegação
de tarefas. Cada vez mais os sites são feitos por n pessoas, com
especialidades distintas, modos de pensar e interagir em grupo distintas, o que
no mínimo é um cenário devastador para quem pensa formar uma equipa de
projecto com as mesmas. Isto já para não falar nas distâncias físicas, que
existem sempre entre os membros do grupo. Na minha aplicação esses dois
pontos/funcionalidades são bem visíveis e estão perfeitamente aplicadas.
No DPZ as características e funcionalidades mais importantes são:
=
-
Site inovador;
Tema original;
Site orientado ao objecto;
Site interactivo;
Manutenção fácil e dinâmica;
Delegação e divisão das tarefas;
Administração remota do site;
Níveis de segurança;
Serviço de notícias;
Serviço de Documentação;
Gestão de áreas para utilizadores (restritas);
Feedback;
...
Arquitectura
A arquitectura do DPZ baseia-se numa miscelânea de aplicações
embutidas no mesmo site, todas elas com um elo de ligação chamado DTML.
Tive o cuidado de variar a forma de fazer as coisas. Vejámos: poderia ter
implementado tudo com classes , mas achei que tornava-se um processo muito
repetitivo e por isso utilizei vários tipos de objectos pré-definidos do Zope,
adicionei algumas classes feitas por mim para modelizar os problemas
específicos que iam surgindo e digitei algumas linhas de Python só para lhe
sentir o gosto . Eis a arquitectura do DPZ:
>
Cliente
Cliente
HTTP
FTP
Zserver
ZORB
DPZ
Zclasses
Pastas normais
Pastas de utilizadores
Imagens
Métodos DTML
Documentos DTML
Ficheiros (doc e pdf)
Objecto mail
...
Python
(métodos externos)
ZODB
A ideia desta arquitectura já foi muito discutida no relatório, pelo que não
vou entrar em detalhe. Os serviços fornecidos pelo DPZ são muito
interessantes e merecem um pouco da nossa atenção:
Serviço de notícias
É um serviço que proporciona vantagens para ambos os lados duma
aplicação web: cliente e servidor.
Ao cliente, porque disponibiza a informação actualizada com as notícias
mais recentes a ficarem num nível superior em relação às mais antigas.
Informa o utilizador da data em que a notícia foi publicada, do seu conteúdo e
dum possível linlk que poderá estar associado à notícia.
Ao servidor, neste caso o administrador do site (eu ), porque permite
que o mesmo possa gerir o serviço dinâmica e remotamente, sem ter que tocar
no código HTML ou DTML, evitando assim as dores de cabeça associadas aos
erros frequentes da inserção de código HTML e por vezes a múltiplas páginas,
o que torna a manutenção e a inserção de conteúdo dinâmico dois aspectos
fundamentais num site do ano 2000. O administrador pode assim inserir uma
nova notícia, através duma interface web baseada num formulário, o qual após
submetido, irá actualizar o conteúdo das notícias, permitindo assim gerar
conteúdo dinámico em poucos segundos.
Este serviço foi modelizado por uma classe chamada Classe_Notícias,
cujas instâncias tinham as seguintes propriedades:
- Descrição (conteúdo da notícia);
- Data (data da publicação da mesma);
- Link (link associado à notícia);
?
Classe Noticias
Data
Descrição
Link
DTML
DPZ
•
G
@
H
A
I
B
J
B
B
I
C
K
B
D
L
M
C
N
E
H
D
F
O
H
P
H
Q
K
R
S
O
T
M
Q
H
U
V
I
K
W
X
Y
Y
Serviço de documentação
É um serviço que proporciona também vantagens para ambos os lados
duma aplicação web: cliente e servidor.
Ao cliente, porque disponibiza a documentação sobre Zope em
Português, o que é uma coisa rara, ou mesmo inexistente. A documentação do
Zope além de ser pouca e incompleta (uma das grandes desvantagens do
Zope), está na maior parte dela, em inglês. A documentação vem datada da
última actualização, o que é uma informação útil, pois o utilizador assim fica a
saber se já possui ou não aquela versão. A documentação está no formato pdf,
como poderia estar no formato doc, ou qualquer outro, foi portanto uma opção.
Ao servidor, porque permite que o mesmo possa gerir o serviço
dinâmica e remotamente, sem ter que tocar no código HTML ou DTML. O
administrador pode assim inserir um novo documento que contenha, por
exemplo em casa, e fazer assim o upload do mesmo bem como o upload do
conteúdo dinámico do site. O facto da documentação estar disponível para toda
a gente, deve-se ao facto do vírus, chamado “open-source”, que eu apanhei ao
confrontar-me com algum software (apache, php, zope, python, mod_perl,...),
ao longo da realização do projecto .
Este serviço não foi modelizado por uma classe, mas poderia ter sido.
Ao invés utilizei a inserção de ficheiros, que após o upload ficam disponíveis
como objectos no famoso ZODB do Zope.
Z
Ficheiro PDF <X>
Ficheiro PDF <Y>
Ficheiro PDF <Z>
...
DTML
DPZ
•
•
[
u
\
]
v
^
w
_
`
x
a
v
b
y
c
z
_
y
d
{
z
_
|
e
}
_
~
f

g
€
h

i
‚
j
ƒ
„
k
…
l
†
‡
m
…
ˆ
n
o
ƒ
p
ƒ
q
ƒ
r
‰
p
s
n
n
n
t
Área reservada aos utilizadores
A área reservada aos utilizadores é talvez o serviço mais importante do
DPZ. Ela permite, que um utilizador mediante um registo (feito através do envio
dum mail), possa ter acesso a uma conta ou área do sistema Zope, e na qual
possa realizar certas operações dependentes do nível de segurança imposto
pelo administrador. O utilizador tem pois o acesso à interface web do Zope,
mas a um nível mais baixo do que o administrador. No entanto, pode benificiar
da aquisição, bem como de espaço ilimitado (o administrador pode delimitar
esse espaço ). Para compreendermos melhor, aqui vai a hierarquia dos
objectos do Zope, no site DPZ.
Š
raíz
noticias
utilizadores
pdfs
ricardo
jorge
...
Area de acesso
do utilizador
Ricardo.
Podendo este
benificiar de
aquisição.
Area de acesso
do utilizador
Jorge. Podendo
este benificiar
de aquisição.
...
links
O DTML no DPZ
Não quero entrar em muitos pormenores com o DTML, pois este já foi
explicado no meu relatório. Vou apenas dar dois exemplos (do site DPZ) das
suas funcionalidades e como interagem com os objectos, de maneira a
poderem fazer o render dos mesmos e como se integram com o código HTML:
Começemos por um mais simples:
1 <dtml-var standard_html_header>
2 <dtml-var ver_utilizadores>
3 <dtml-var standard_html_footer>
Este pedaço de código faz o seguinte:
-
Linha 1:
o Executa o método DTML pré-definido e cujo o nome é
standard_html_header que normalmente é inserido para
colocar informações no cabeçalho das páginas (tags html, title,
body, etc.);
-
Linha 2:
o Executa o método DTML ver_utilizadores que vai retornar
conteúdo dinámico para esta página;
Linha 3:
o Executa o método DTML pré-definido e cujo o nome é
standard_html_footer que normalmente é inserido para colocar
informações no rodapé das páginas (tags html, title, body,
etc.).
-
Mas o DTML não é assim tão simples. Vamos passar para um exemplo,
que não é dos mais complicados, mas que já dá para ver as suas
potencialidades e características.
1 <dtml-in "PARENTS[0].objectValues(['File'])" sort=bobobase_modification_time>
2 <dtml-var title> (<a href="<dtml-var URL1>/<dtml-var id>">PDF</a>)
3 <small>(<dtml-var bobobase_modification_time fmt="%m/%d/%Y">)</small>
4 </dtml-in>
Este pedaço de código faz o seguinte:
-
-
-
Linha 1:
o Percorre o objecto container do método invocado e procura
por objectos do tipo ficheiro, ordenando-os por data de
modificação;
Linha 2:
o Exibe a propriedade titulo dos objectos ficheiro e cria um link
com o nome baseado na propriedade id dos objectos;
Linha 3:
o Exibe a data de modificação do objecto no formato apropriado;
Linha 4:
o Fecha a tag in, que é dupla, limitando assim o ciclo.
Conclusão
Foi com muito orgulho que fiz esta aplicação. Senti que vai ser útil num
futuro próximo, pois vou deixar esta aplicação on-line e continuar a fornecer,
informar e expandir o Zope em Portugal.
O facto de tê-la feito em poucos dias e com o stress como meu aliado,
condicionou o desenvolvimento da mesma, que deixo para futuras
implementações:
-
Uma mailling-list portuguesa sobre Zope;
Um motor de procura;
...
O facto de ser open-source beneficia sempre qualquer software, o que
vai fazer com que a evolução do Zope seja uma realidade e cada vez mais vão
existir adeptos desta tecnologia que vão levá-la aos lugares mais altos do pódio
dos servidores de aplicações web. É so esperar para ver!!
Download

"#$%&"`()0)#12