Zope base
Giuseppe Masili
[email protected]
The limits of a writing a
product
are really your imagination
Che cos'è Zope?
Zope è una piattaforma che permette a
sviluppatori con differenti livelli di competenza
di costruire applicazioni web.
Questa presentazione illustra gli impieghi di
Zope in maggior dettaglio ed il pubblico a cui è
destinato. Descrive inoltre che cosa distingue
Zope da applicazioni simili.
Zope
APPLICAZIONI
WEB
SEMPLICI
E
POTENTI
Che cos'è un'applicazione web?
Una applicazione web e' un programma per
computer che viene eseguito dagli utenti
sfruttando un qualsiasi browser web tipo:
● Galeon
● Mozilla
● Konqueror
● Opera
● Microsoft Internet Explorer
Zope
APPLICAZIONI
WEB
SEMPLICI
E
POTENTI
Storia di Zope: 1996
Nel 1996 Jim Fulton, l'attuale CTO (Chief
Technology Officer) di Zope Corporation, venne
scelto
per
tenere
un
corso
sulla
programmazione CGI, malgrado non ne
sapesse molto a riguardo.
Zope
APPLICAZIONI
WEB
SEMPLICI
E
POTENTI
Storia di Zope: CGI
La programmazione CGI (common gateway
interface) è un modello di sviluppo web
comunemente utilizzato che permette agli
sviluppatori di costruire siti web dinamici.
Jim studiò tutta la documentazione esistente
sui CGI durante il viaggio.
Zope
APPLICAZIONI
WEB
SEMPLICI
E
POTENTI
Storia di Zope: 1996
Al ritorno dal corso, Jim valutò che gli ambienti
di programmazione basati su CGI non erano di
suo gradimento.
Il cuore di Zope venne scritto, in seguito a
queste considerazioni, sull'aereo durante il volo
di ritorno.
Zope
APPLICAZIONI
WEB
SEMPLICI
E
POTENTI
Storia di Zope:
Zope Corporation (nota come Digital
Creations) rilasciò tre pacchetti software open
source per la pubblicazione web: Bobo,
Document Template e BoboPOS.
Vennero scritti in un linguaggio chiamato
Python, e rispettivamente offrivano uno
strumento per la pubblicazione su web, il
templating del testo e un database ad oggetti.
Zope
APPLICAZIONI
WEB
SEMPLICI
E
POTENTI
Storia di Zope:
Venne sviluppato un server di applicazioni web
commerciale basato su questi loro tre
componenti open source, chiamato Principia.
Nel Novembre del 1998, l'investitore Hadar
Pedhazur convinse la Digital Creations a
rendere open source Principia.
Questi componenti si sono evoluti nei
componenti base di Zope.
Zope
APPLICAZIONI
WEB
SEMPLICI
E
POTENTI
L'acronimo “Zope”:
L'acronimo "Zope" sta per Z Object Publishing
Environment (ambiente per pubblicazione di
oggetti)
Ora.. sta "Z"? Non significa niente :o)
La maggior parte di Zope è scritta nel
linguaggio di scripting Python, ed in C nei
frammenti di codice critici per le prestazioni.
Zope
APPLICAZIONI
WEB
SEMPLICI
E
POTENTI
Dieci motivi per scegliere Zope:
Zope
APPLICAZIONI
WEB
SEMPLICI
E
POTENTI
Gratis & open-source:
Zope è gratuito ed è distribuito secondo una
licenza open-source.
1
Ci sono molti server di applicazioni commerciali
non gratuiti parecchio costosi.
Zope
APPLICAZIONI
WEB
SEMPLICI
E
POTENTI
Tutti i prodotti che cerchi:
Viene fornito con tutti i componenti necessari
per cominciare lo sviluppo di una applicazione.
2
Tanti altri server di applicazioni implicano
spese "nascoste" dovute alle licenze di costosi
software o alla configurazione di complesse
infrastrutture di terze parti prima che possiate
cominciare
lo
sviluppo
della
vostra
applicazione.
Zope
APPLICAZIONI
WEB
SEMPLICI
E
POTENTI
Tutti gli sviluppatori che cerchi:
Zope permette ed incoraggia gli sviluppatori
a pacchettizzare e a distribuire applicazioni
pronte all'uso.
Grazie a ciò, Zope è corredato da un'ampia
varietà di servizi integrati e di prodotti aggiuntivi
per un utilizzo immediato.
3
La popolarità di Zope ha originato una grossa
comunità di sviluppatori di applicazioni.
Zope
APPLICAZIONI
WEB
SEMPLICI
E
POTENTI
ZEO:
Le applicazioni create in Zope possono
scalare quasi linearmente utilizzando la
soluzione ZEO (Zope Enterprise Objects) che
Zope mette a disposizione. Utilizzando ZEO,
potrete fornire una applicazione Zope
attraverso molti computer.
4
Molti application servers non scalano affatto.
Zope
APPLICAZIONI
WEB
SEMPLICI
E
POTENTI
Interfaccia Web di gestione:
Zope consente agli sviluppatori di delegare in
modo sicuro i compiti di sviluppo ad altri
sviluppatori "attraverso il web" utilizzando
l'interfaccia di Zope (la Zope Management
Interface, anche nota come ZMI).
5
Davvero pochi altri server di applicazioni, se ce
ne fosse alcuno, forniscono lo stesso livello di
funzionalità.
Zope
APPLICAZIONI
WEB
SEMPLICI
E
POTENTI
Sicurezza e autenticazione:
Zope fornisce una piattaforma dalla
sicurezza estensibile e granulare. Potrete
integrare semplicemente Zope con diversi
sistemi di autenticazione come, LDAP,
Windows NT e RADIUS simultaneamente,
utilizzando modelli esistenti.
6
Molti altri application servers mancano del
supporto per alcuni di questi sistemi.
Zope
APPLICAZIONI
WEB
SEMPLICI
E
POTENTI
Ad ognuno il suo spazio/compito:
Zope consente davvero a gruppi di
sviluppatori di collaborare fornendo: la
funzionalita di Undo, la History ed altri
strumenti che aiutano le diverse parti a
lavorare in modo sicuro assieme e permettono
il ripristino dagli errori.
7
Molti altri application servers non prevedono
questo tipo di caratteristica.
Zope
APPLICAZIONI
WEB
SEMPLICI
E
POTENTI
Tu dammi un s.o. ed io ti installerò Zope:
Zope gira sui più diffusi sistemi operativi per
microcomputer: Linux, Windows NT/2000/XP,
Solaris, FreeBSD, NetBSD, OpenBSD e
Mac OS X.
8
Molti altri server di applicazioni richiedono che li
si esegua su un sistema operativo scelto dal
venditore.
Zope
APPLICAZIONI
WEB
SEMPLICI
E
POTENTI
Python:
Zope può essere esteso utilizzando il
linguaggio di scripting Python. Python è open
source, di semplice apprendimento e agevola
lo sviluppo rapido.
9
Molti altri application servers devono venire
estesi mediante linguaggi non open source.
Questo significa maggiori costi di sviluppo.
Zope
APPLICAZIONI
WEB
SEMPLICI
E
POTENTI
Comunità:
Software, manuali multilingue e assistenza
sono gratuiti.
10
Info:
http://www.zope.org
http://www.zope.it
Zope
APPLICAZIONI
WEB
SEMPLICI
E
POTENTI
Zope in un solo click!
L'ultima versione di Zope è sempre disponibile
gratuitamente al seguente indirizzo:
http://www.zope.org/Products
Attualmente:
Zope-2.6.1-win32-x86.exe
Zope-2.6.1-src.tgz
Zope-2.6.1-solaris-2.8-sparc.tgz
Zope-2.6.1-linux2-x86.tgz
Zope
APPLICAZIONI
2.6.1(Stable)
2.6.1(Stable)
2.6.1(Stable)
2.6.1(Stable)
WEB
SEMPLICI
E
POTENTI
Cosa fornisce Zope?
Zope è costituito da
interagiscono tra di loro:
più
moduli
che
un server web
● un database ad oggetti
● un'interfaccia di amministrazione
●
Zope
APPLICAZIONI
WEB
SEMPLICI
E
POTENTI
Un server web:
Zope contiene già un server web in grado di
supportare tutte le funzionalità necessarie al
servizio delle applicazioni sviluppate.
Se però si ha la necessità di utilizzare un altro
server web Zope dà la possibilità di sostituire
facilmente il server web interno con uno
qualsiasi, come ad esempio Apache.
Zope
APPLICAZIONI
WEB
SEMPLICI
E
POTENTI
Un database ad oggetti:
La grande differenza tra Zope e prodotti
analoghi è il fatto che Zope ha trasformato il
Web in una struttura ad oggetti e quindi
contiene al suo interno un database ad
oggetti nel quale verranno immagazzinati i
dati.
Zope
APPLICAZIONI
WEB
SEMPLICI
E
POTENTI
Un'interfaccia di amministrazione:
Zope fornisce una completa interfaccia utente
che può essere utilizzata per la gestione e lo
sviluppo delle applicazioni.
L'interfaccia può essere usata da qualsiasi
browser web moderno e si presenta in modo
molto familiare agli utenti, visualizzando gli
oggetti tramite una struttura ad albero, in modo
simile ai più diffusi file manager.
Zope
APPLICAZIONI
WEB
SEMPLICI
E
POTENTI
Zope
APPLICAZIONI
WEB
SEMPLICI
E
POTENTI
Orientamento agli oggetti:
Per utilizzare Zope al meglio, sara' necessario
afferrare il concetto di orientamento agli
oggetti.
L'orientamento agli oggetti e' un modello di
sviluppo del software che viene utilizzato in
molti linguaggi di programmazione (C++, Java,
Python, ed altri).
Zope
APPLICAZIONI
WEB
SEMPLICI
E
POTENTI
Orientamento agli oggetti:
In un sistema orientato agli oggetti
(come Zope), le applicazioni vengono plasmate
sugli oggetti.
Gli oggetti sono "contenitori" di dati e di logica
di controllo.
Zope
APPLICAZIONI
WEB
SEMPLICI
E
POTENTI
Applicazione NON orientata agli oggetti:
In una normale applicazione non orientata agli
oggetti, potete distinguere due parti:
● Codice.
Ad esempio, in una classica
applicazione web basata su CGI potete avere
una parte logica sottoforma di script Perl.
● Dati. Potreste avere le informazioni relative
agli impiegati memorizzate in una base di dati
gestita da MySQL o Oracle, su cui opera il
vostro codice.
Zope
APPLICAZIONI
WEB
SEMPLICI
E
POTENTI
Applicazione NON orientata agli oggetti:
Questo implica che questi dati esistono quasi
unicamente in funzione del codice che li può
manipolare.
Senza di esso praticamente non avrebbero
significato.
Zope
APPLICAZIONI
WEB
SEMPLICI
E
POTENTI
Applicazione orientata agli oggetti:
Ci sarà una ed una sola cosa:
● Oggetti. Gli oggetti sono collezioni di codice
e di dati assemblati assieme.
Per esempio potete avere un oggetto che
rappresenta un impiegato. Al suo interno sono
presenti i dati sull'impiegato, quali il numero di
telefono, la via, .., e anche la "logica" (il codice)
in grado di manipolare questi dati.
Zope
APPLICAZIONI
WEB
SEMPLICI
E
POTENTI
Riassunto:
In una applicazione non orientata agli oggetti,
i dati sono separati dal codice.
In una applicazione orientata agli oggetti
invece sia i dati che il codice sono
immagazzinati in uno o piu' oggetti.
Gli oggetti possono modellare praticamente
ogni cosa.
Zope
APPLICAZIONI
WEB
SEMPLICI
E
POTENTI
In Zope, il Control_Panel e' un oggetto, le
"Folder" che create sono oggetti e anche la
"root folder" e' un oggetto.
Quando si utilizza la lista contenente gli
elementi da aggiungere per creare un nuovo
elemento nella Zope Management Interface,
state creando un oggetto.
Le persone che estendono Zope creando i
Prodotti definiscono i propri tipi di oggetti.
Zope
APPLICAZIONI
WEB
SEMPLICI
E
POTENTI
Attributi:
I dati relativi ad un oggetto sono definiti dai
suoi attributi.
Ad esempio, dei possibili attributi possono
essere: "first_name" e "last_name", che sono
rispettivamente una serie di caratteri che
rappresentano il nome e il cognome
dell'impiegato. Infine può avere l'attributo "title",
che identifica la descrizione dell'incarico.
Zope
APPLICAZIONI
WEB
SEMPLICI
E
POTENTI
Metodi:
L'insieme di azioni che un oggetto può
compiere è definita dai suoi metodi.
Per esempio, un metodo "getFirstName" può
restituire il valore dell'attributo "first_name"
dell'oggetto, mentre il metodo "setFirstName"
può
modificare
il
valore
dell'attributo
"first_name". Il metodo "getTitle" dell'oggetto
può restituire "Vice Presidente" o "Portinaio".
Zope
APPLICAZIONI
WEB
SEMPLICI
E
POTENTI
Approfondimento:
Alcuni oggetti sono chiamati "metodi".
Per esempio, esistono Metodi DTML, Metodi
SQL e Metodi Esterni. Ciò avviene perchè
questi oggetti sono stati pensati per essere
usati come metodi. Quando vengono invocati
sono ancorati alla cartella che li contiene;
anche la logica che includono fa riferimento
alla cartella che li contiene.
Zope
APPLICAZIONI
WEB
SEMPLICI
E
POTENTI
Classi:
Una classe definisce il comportamento di un
oggetto e ne rappresenta il costruttore.
E' una cosa piuttosto normale trovare alcuni
oggetti in un sistema che sono essenzialmente
simili ad un altro salvo per il valore dei loro
attributi.
Zope
APPLICAZIONI
WEB
SEMPLICI
E
POTENTI
Esempio:
Potete avere oggetti nel vostro sistema,
ognuno dei quali con gli attributi "first_name" e
"last_name".
L'unica differenza è il valore contenuto
all'interno degli attributi.
L'attributo "first_name" di un oggetto può
essere "Fred", mentre un altro può contenere
"Jim".
Questi
Z
ope
oggetti sono membri della stessa
APPLICAZIONI
WEB
SEMPLICI
E
POTENTI
Istanze:
Gli oggetti che vengono costruiti da una
classe sono chiamati istanze della classe o
(piu' spesso) semplicemente istanze.
Per esempio, la cartella Test ha un attributo id il
cui valore è Test, mentre un'altra cartella può
avere l'attributo id impostato a Test2 ma
entrambe sono istanze della stessa classe e si
comportano allo stesso modo.
Zope
APPLICAZIONI
WEB
SEMPLICI
E
POTENTI
Istanze:
Tutti gli oggetti con cui avete a che fare
utilizzando l'interfaccia di amministrazione di
Zope sono istanze di una classe.
Generalmente le classi da cui questi oggetti
sono costruiti sono definite nei Prodotti di
Zope, che sono creati dagli sviluppatori di Zope
e dai membri della comunità.
Zope
APPLICAZIONI
WEB
SEMPLICI
E
POTENTI
Ereditarietà:
In Zope l'ereditarietà è molto utilizzata.
Ad esempio, la classe "Image" eredita il suo
comportamento dalla classe "File", poiché le
immagini sono un particolare tipo di file.
Ma la classe "Image" aggiunge qualche
comportamento in più che le permette di
presentare in forma visuale un marcatore
HTML invece di provocare il download del file.
Zope
APPLICAZIONI
WEB
SEMPLICI
E
POTENTI
Contenuti dinamici con DTML:
DTML (Document Template Markup Language)
è uno dei linguaggi a tag di Zope.
Questo tipo di linguaggio è
principalmente ai progettisti Web.
dedicato
Il DTML è molto potente ma deve essere
utilizzato solo per la presentazione dei dati.
Zope
APPLICAZIONI
WEB
SEMPLICI
E
POTENTI
Formattazione dei dati eterogenei:
Esempio:
<dtml-var standard_html_header>
<p>Hello world.</p>
<dtml-var standard_html_footer>
Questa pagina Web utilizza insieme codice
HTML e DTML.
Il dtml-var indica una sostituzione dell'oggetto.
Zope
APPLICAZIONI
WEB
SEMPLICI
E
POTENTI
Gli oggetti header e footer:
standard_html_header contiene:
<html>
<body>
<p> Ultima modifica 2003/10/16 by Amost</p>
standard_html_footer contiene:
<p><dtml-var ZopeAttributionButton></p>
</body>
</html>
Zope
APPLICAZIONI
WEB
SEMPLICI
E
POTENTI
Eseguendo la pagina Web:
Il DTML verrà sostituito per ereditarietà ottenendo:
Zope
APPLICAZIONI
WEB
SEMPLICI
E
POTENTI
Il sorgente:
Se l'oggetto è un'immagine, Zope lo sostituisce con
il TAG <img ...
Zope
APPLICAZIONI
WEB
SEMPLICI
E
POTENTI
Approfondimento dtml-var:
<dtml-call "REQUEST.set('name', 'paul everitt')">
<dtml-var name capitalize>
Paul everitt
<dtml-var name lower>
paul everitt
<dtml-var name upper>
PAUL EVERITT
<dtml-var name missing=”non inserito”>
non inserito
<dtml-var name size=3>
pau...
<dtml-var name size=3 etc=””>
pau
Zope
APPLICAZIONI
WEB
SEMPLICI
E
POTENTI
dtml-call variabile globale:
Il dtml-call attiva una variabile globale che sarà
attiva per tutto il tempo di visualizzazione della
pagina Web.
<dtml-call "REQUEST.set('name', 'paul everitt')">
L'assegnazione determina il tipo della variabile.
In questo caso name è di tipo string
Zope
APPLICAZIONI
WEB
SEMPLICI
E
POTENTI
dtml-let variabile locale:
Il dtml-let attiva una o più variabili locali che
saranno attive solo in quella parte di codice.
<dtml-let name=”'paul everitt'” num=23 tot=123>
<tr with=”&dtml-tot;”>
<td with=”&dtml-num;”>&dtml-name;</td>
...
</tr>
</dtml-let>
&dtml- è una sintassi abbreviata per il tag var
Zope
APPLICAZIONI
WEB
SEMPLICI
E
POTENTI
Commentare una parte di codice:
Il dtml-comment può essere usato per
escludere una parte di codice e/o per indicare
un commento in formato testo che non verrà
inserito nella pagine Web.
<dtml-comment>
Ho escluso questa variabile per i seguenti motivi...
<dtml-call "REQUEST.set('name', 'paul everitt')">
</dtml-comment>
Zope
APPLICAZIONI
WEB
SEMPLICI
E
POTENTI
Verifica la condizione con dtml-if:
Il dtml-if permette di personalizzare la propria
pagina Web. Consente di valutare una
condizione e di svolgere operazioni differenti.
<dtml-if name>
Benvenuto <dtml-var name>!
<dtml-elif “name=='Giuseppe'”>
<dtml-raise type="404">Not Found</dtml-raise>
<dtml-else>
<dtml-var login_dtml>
</dtml-if>
Zope
APPLICAZIONI
WEB
SEMPLICI
E
POTENTI
Cicli con dtml-in:
Il dtml-in permette un'iterazione su una
sequenza di oggetti eseguendo un blocco di
operazioni per ogni elemento contenuto nella
sequenza.
<dtml-in "objectValues('Folder')">
<p><a href="<dtml-var absolute_url>">
<dtml-var title_or_id></a></p>
</dtml-in>
Zope
APPLICAZIONI
WEB
SEMPLICI
E
POTENTI
In fine Zope e FTP:
E' il formato di comunicazione con il quale si
possono trasferire dati tra computer connessi
in rete con velocita' e praticita' maggiori .
Zope poteva non permettere questa tecnica?
;o)
lftp [email protected]:8021
Si può accedere ai dati contenuti nel data.fs
usando un qualsiasi programma FTP con il
Z
o p e utente
proprio
sulla
APP
L I C A porta
Z I O N I 8021
WEB SEMPLICI E POTENTI
Cosa c'e' ancora da sapere?
Data.fs CMF Plone OpenFlow ZPT Local File
System DTML Document manage_addFolder
Mail Host Zope3 Python __init__.py Cookie
Crumbler Formulator RAM Cache Manager
Virtual Host Monster Vocabulary Z SQL Method
ZPoPyDA User Folder Session REQUEST
temp_folder ZCatalog Security Script Python
ZopeTestCase MailBoxer manage CMFWiki
Silva fcForum ExtZSQL TTWType dtml-tree ...
Zope
APPLICAZIONI
WEB
SEMPLICI
E
POTENTI
Dove posso reperire informazioni?
http://www.zope.org
http://www.zope.it
http://cmf.zope.org
http://www.plone.org
http://www.zopelabs.com
http://www.python.org
http://www.python.it
http://lists.zope.org
irc.debian.org 6667 #zope #zope-it #plone
Zope
APPLICAZIONI
WEB
SEMPLICI
E
POTENTI
In particolare zope.it:
Questo sito nasce con un'idea: mettere a
disposizione esperienze e nozioni dei tanti
sviluppatori italiani in Zope.
Zope.it sfrutta la potenza del CMF.
Al Webbit 2003 ci sarà il primo Sprint Zope.it
nel quale verrà sostituito CMF con Plone.
Zope
APPLICAZIONI
WEB
SEMPLICI
E
POTENTI
Grazie per l'attenzione
Zope
Giuseppe Masili
[email protected]
Zope
APPLICAZIONI
WEB
SEMPLICI
E
POTENTI
Scarica

applicazion i we b semplic i e potenti