! " ! # " # $ $ % & % ' & ( ' ) ( * ) + * , + , . - / . & / 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!!