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 utente@tuamacchina: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