Progetto My Campus

La pagina personale dello studente – e qualcosa di più

Dodicesima e tredicesima settimana – dal 3 al 17 dicembre


Traduzioni

Durante queste due settimane siamo stati occupati a tradurre in italiano le guide di Archtypes e Content Types Plone 2.1, entrambe disponibili online nella sezione documentation di http://plone.org. Le traduzioni saranno presto pubblicate online, e l’indirizzo sarà reso noto nel prossimo capitolo.

Venerdì 4 Gennaio 2008 Pubblicato da Maurizio Moscatelli | traduzioni | | Ancora nessun commento.

Undicesima settimana – dal 26 ottobre al 2 dicembre


installazione della libreria eduCommons


ruolo nel nostro progetto

Abbiamo scelto di installare eduCommon per poter apprendere come un altro gruppo di informatici sono stati in grado di implementare in Plone una libreria dedicata alla formazione.


utilizzo della guida

Nonostante avessimo scelto, per un maggior supporto delle librerie, di utilizzare Plone2.5.4 per sviluppare il nostro sistema, siamo stati costretti a passare temporaneamente all’utilizzo di Plone3.0.3 in linux, per essere in grado di eseguire passo passo la guida reperita al sito http://cosl.usu.edu/projects/educommons/documentation/how-to/installation-instructions.
Purtroppo questa guida, nonostante sia ben fatta, si è rivelata assolutamente lacunosa, dà per scontati un sacco di concetti e prende per buono (implicitamente) che sulla distribuizione linux in utilizzo ci siano già le librerie condivise installate.


ricerca di una distribuzione linux

Abbiamo scelto, per comodità, di installare su una macchina virtuale una distribuzione Ubuntu7.10 leggermente elaborata: dopo aver seguito l’installazione standard (per approfittare del wizard per la configurazioni di tutte le periferiche) abbiamo tolto tutte le versioni python già installate (lasciando solamente la 2.4.4) e abbiamo levato completamente gnome. Il sistema operativo attivo, senza servizi aggiuntivi, utilizza solamente 30 MB di memoria ram.
In università, invece, c’è stata fornita una macchina con istallata una gentoo.


reperimento delle librerie dipendenti

In Ubuntu, abbiamo dovuto installare libz, “A Massively Spiffy Yet Delicately Unobtrusive Compression Library” e il pacchetto python2.4-dev, che fornisce gli header per la compilazione.
In gentoo, invece, abbiamo dovuto aggiungere il pacchetto dev-python/lxml.
In seguito, abbiamo scaricato ed installato le librerie trovate sulla guida.
L’installazione di Zope e di Plone è stata eseguita senza nessun problema.


installazione di eduCommons3.0.0 Final

L’installazione è estremamente semplice: le cartelle contenute nel pacchetto eduCommons vanno copiate all’interno della cartella Products; ovviamente, va riavviato il servizio Zope per permettere alle nuove classi di essere compilate e essere istanziabili.
In seguito, per utilizzare eduCommons va eseguita una nuova istanza di Plone-site da Zope, ricordandosi di selezionare eduCommons nella sezione extension profile.
La guida per l’istanziamento è disponibile su http://cosl.usu.edu/projects/educommons/documentation/tutorial/using-the-unified-installer-with-linux/start-the-site.
Da notare che, per poter avere un sito funzionante, abbiamo dovuto cambiare i permessi a 740 (rwxr— in permessi linux) ricorsivamente per le cartelle Products, lib, var e log.

Venerdì 4 Gennaio 2008 Pubblicato da Maurizio Moscatelli | installazione di eduCommons | | Ancora nessun commento.

Decima settimana – dal 19 novembre al 25 novembre


Primi prototipi su Plone


Per iniziare a famigliarizzare con la struttura file system stile di Plone abbiamo iniziato a creare dei prototipi rappresentativi per myCampus.


Prototipo 1: Folder


Il primo prototipo è la versione più semplice del corso di laurea: mediante l’oggetto Folder di Plone, abbiamo creato la struttura del generico corso.


Prototipo 2: Schema Manager


Schema Manager è una funzionalità disponibile installando la Product ATSchemaEditorNG 0.4.4, disponibile solo per Plone 2.5.
Essa consente di creare dei nuovi tipi di oggetti sulla base di oggetti già esistenti nel sistema, e di personalizzarne aspetto, comportamento e, soprattuto, di personalizzare i tipi di oggetto che il nuovo tipo sarà disponibile ad inglobare.
In questo modo, abbiamo creato l’oggetto Corso di laurea, che permette di avere al suo interno solamente gli oggetti Professore e Link.
Notare che parte di queste funzionalità sono altresì disponibili nell’interfaccia di gestione di Zope.


Prototipo 3: ArchGenXML


ArchGenXML è una libreria Python in grado generare, dato un diagramma UML appositamente costruito e taggato, un Product, ossia un nuovo tipo di oggetto che Plone (Zope) è in grado di gestire e di rappresentare.


ArgoUML


ArgoUML è risultata la scelta migliore per poter generare diagrammi UML compatibili con ArchGenXML: questo programma, scritto in java (quindi portabile pressoché su tutti i sistemi) genera di default i diagrammi salvandoli in formato .zargo, uno dei formati perfettamente compatibili con ArchGen.


Utilizzo di ArchGenXML


ArchGenXML è praticamente subito pronto per essere eseguito, l’unica cosa che abbiamo preferito fare, è stata di installare in Python le librerie i18ndude e stripogram.
Dopo aver generato il file .zargo, lo si da in pasto ad ArchGen e, se non sono trovati errori, la libreria produce la cartella del nuovo prodotto, già pronto per essere installato.
Ovviamente, il servizio Zope va riavviato per permettere di trovare la nuova libreria; fatto questo sarà sufficiente andare in Configurazione del sito Aggiungi / rimuovi prodotti per installare il nuovo prodotto.
Abbiamo notato che le cardinalità nelle relazioni fra una classe e l’altra non sortiscono alcun effetto nella traduzione dal diagramma alla Product.


Prototipo 4: Python


Abbiamo pianificato che il prototipo 4 sarà costituito dallo sfruttare il più possibile il supporto di ArchGen, al fine di disegnare col maggior dettaglio possibile, l’architettura del sistema. In seguito, dopo aver generato il prodotto, andremo a raffinare le sorgenti python generate per rendere il sistema meglio conforme alle nostre pianificazioni.


approfondimento su ArchGenXml


Questo applicativo serve a trasformare progetti UML in prodotti utilizzabili in Plone.


Prima fase


Aprire il tool UML a vostra scelta (Noi abbiamo utilizzato ArgoUml). Creare un nuovo modello
UML e aggiungere diagrammi di classe. Scegliere il tool per creare le classi e aggiungeere classi al
diagramma (Sempre ArgoUml). Dare un nome al progetto come MyFirstAGXContent e aggiungere
un attributo MyTextField di tipo text. Per esempio: example_1.xmi


Seconda fase (generazione del prodotto)


Salvare/esportare il modello come un file XMI con il nome MyFirstExample.xmi (o in un formato
contenitore di xmi come .zargo o .zuml). Poi dare il comando:
ArchGenXml.py MyFirstAGXExample.xmi.
ArchGenXml iniziera a generare codice. Quando questo sarà completo si sara creata una nuova
cartella MyFirstAGXExample nella cartella di ArchGenXml (Si puo sovrascrivere il nome della
cartella usando l’opzione -o).


Installazione e uso del prodotto generato


Spostare la cartella creata dentro la cartella Products di Plone (plone/data/products).
Aprire plone e loggarsi come amministratore. Scegliere plone setup dalla barra personale e
scegliere Aggiungi/rimuovi Prodotti. Il nuovo prodotto MyFirstAGXContent dovrebbe apparire
nella lista dei prodotti avviabili per l’installazione. Sceglierlo e cliccare installa. Andare alla
cartella personale. Nella lista degli oggetti che si possono aggiungere alla propria cartella potrete trovare il nuovo prodotto. Aggiungere a un’istanza di test per vedere se funziona.


Interfaccia


Di default, quando viene creata una classe nel proprio diagramma di classi, questa rappresenta un tipo di contenuto
Archetypes.
Si puo aggiungere operazioni al proprio modello per generare metodi nelle classi, e attributi per
generare campi nello schema. Alla fine di questo tutorial c’è una veloce lista dei tipi di campi che si possono usare.
Ci sono tre modi base con cui si possono modificare il modo con cui questi tipi sono generati:


  • Si possono impostare uno o piu stereotipi nella propria classe, il quale modifica il tipo di
    classe. Uno stereotipo «portal_tool», per esempio, significa che si puo generare un portal
    tool piuttosto che un sempilce content types.

  • Si possono usare valori taggati nel proprio modello per configurare molti aspetti delle
    proprie classi, i loro attributi e i loro metodi. Una lista di valori taggati riconosciuti per
    classi, campi e metodi si può trovare alla fine del tutorial.
    Quando vengono letti i valori taggati, ArchGenXml generalmente li trattera come stringhe,
    con poche eccezioni dove sono permessi solo valori non stringhe, come richiesto da valori
    taggati. Se non si vuole che i valori siano quotati come stringhe, prefissatelo con python: Per
    esempio, se si vuole impostare il valore taggato di default per python : [high, low] sulla
    linea degli attributi, si potrà dare default=[high, low] nel LinesFields del proprio
    schema.

  • ArchGenXml comprende le aggregazioni e le composizioni. Se le proprie classi sono
    aggregate ad altre classi, le prime saranno automaticamente generate dentro la cartella con
    queste classi come content type.
    Se si usa composizioni (identificate da un pentagono nel diagramma) anziche aggregazioni, i
    contenuti delle classi sara aggiungibili solo nel contenitore, altrimenti saranno aggiungibili
    globalmente dal tuo portale di default.


Variazioni di Content Types


Classi Semplici


Una classe semplice e basata su BaseContent. Questo e di default se nessun altra opzione la soprascrive.


Eredita delle Classi


Il modo più facile per far un content type è introdurre composizioni o aggregazioni nel proprio modello. Le classi genitori faranno da cartella principale e i figli potranno essere creati solo dentro essi. Si può anche fare delle classi genitori solo dandogli come stereotipo «folder». Molti di questi approci risulteranno in un oggetto derivato dal BaseFolder.
Si può anche dare alla classe lo stereotipo «ordered» (possibilmente in aggiunta a «folder»)
inoltre per fare questo eridita da OrderedBaseFolder. Alternativamente, si può impostare il valore
taggato base_class nella classe da OrderedBaseFolder. Questa e generalmente la tecnica che si puo
usare per sovrascrivere la cartella di base di cui si puo aver bisogno.
Come in una famiglia, i valori taggati additional_parents vi permettono di ereditare da molti oggetti parenti.
Altri valori taggati che potrebbero essere utili per generare cartelle sono:



filter_content_types

Impostare questo 0 o 1 per accendere/spegnere filtri di content types. Se i content types non sono filtrati, le classi saranno trattate come cartelle generali per aggiungere contenuti globalmente.

allowed_content_types

Per specificare impostazioni di allocazioni di content types, per esempio per allocare solo immagini e documenti, impostare su: image, document. Notare che se si usa aggregazioni o composizioni per creare ereditarieta questi settaggi manuali non sono necessari.


Tools del Portale


Un tool del portale e un unica istanza che altri oggetti potrebbero trovare via getToolByName e
utilizzarlo. Ci sono molti tools utilizzabili con plone, come portal_action o portal_skin. Per creare un tool per il portale che istanzi un regolare content types, date alla vostra classe lo stereotipo
«portal_tool». Tools possono trattenre attributi e fornire metodi solo come regolari content types.
Tipicamente, questa configurazione trattiene dati e metodi utili per il resto del vostro prodotto da
usare. Tools potrebbero anche avere conflitti -pagina di configurazione nel pannello di controllo di
plone. Vedere la veloce lista alla fine del tutorial per dettagli sui valori taggati che bisogna
impostare per non generare conflitti.


Classi miste astratte


Marcando la vostra classe come astratta nel vostro modello (di solito opzione spuntabile), questa
non sara aggiunta al content types che sono logicamente parte del tuo modello, ma che non sara
appartenti al vostro prodotto. Per istanza potrete creare un STUB per il tipo di immagini standard di
plone se vorrete includere questo in un oggetto aggregato dentro il vostro content type questo e, il
vostro content type o classe mista nelle vostre classi.


Classi eredi/sottoclassi


Eredi e sottoclassi di una classe sono usate per estendere classi esistenti, o cambiare il loro
comportamento. Usando generalizzazioni di freccie nel vostro modello, potrete ereditare i metodi e
schemi altri content types o classi miste nella vostra classe.


Derivazioni Semplici


Tutti i content type in Archetypes sono derivati da una delle classi basi -BaseContent, BaseFolder,
OrderedBaseFolder e cosi via. Se si volesse spegnere cio, per esempio perche la classe base e stata
ereditata da una classe genitore, si puo settare il valore taggato base_class con valore 0.


Derivazioni multiple


Si può ovviamente usare multiple ereditarieta via molteplici generalizzazioni di freccie nel vostro
modello. Inoltre, se si ha bisogno di usare una classe base che non e nel vostro modello, si puo
impostare il valore taggato additional_parents nella vostra classe con una lista di classi parenti.


Ereditarieta da altri prodotti


Se si vuole ereditare dalla classe di un altro prodotto bisogna creare un STUB classe con il valore
taggato ‘import_from’: questo generera una linea di importazione from value import CLASSNAME
nella classe derivata da questa classe.


Interfacce


Le interfacce sono un modo di FORMALLY DOCUMENTING l’interfaccia pubblica per il tuo
codice. Per convenzione, loro sono di solito nel pacchetto interface (vedi BELOW). Usate
l’interfaccia del vostro software UML per creare nuove interfacce.
Le interfacce non hanno molti FLUFF aggiunti che i content types fanno loro non hanno mai corpi
dei metodi. Loro, comunque, hanno documenti di estensione. Una classe si dice realise di un interfaccia quando questa prevede implementazioni per i metodi definite nell’interfaccia. La
realizzazione UML delle freccie (una linea DOTTED con un vuoto ARROWHEAD) assicurera che
i vostri content types saranno linkati alle interfaccie corrette attraverso l’attributo _implements_.


Pacchetti – Mantieni ordinato il tuo codice


Pacchetti sono entrambi un concetto UML e un concetto Python. In python, i pacchetti sono cartelle
sotto il vostro prodotto contenente un set di moduli (file .py). In UML, un pacchetto e un gruppo
logico di classi, raccolto in una grande cartella con classi al suo interno. Per modulare prodotti
complessi, dovreste sempre usare gruppi di pacchetti.


Come controllare i campi del vostro schema


Lo schema dei vostri content types, generato dagli attributi del vostro modello e dai suoi valori
taggati, contiene campi Archetypes. Ogni campo ha un tipo e un widget. La documentazione Archetypes e la veloce lista alla fine di questo tutorial descrivono come i campi sono avviabili e quali parametri prendono come configurazione.


Uso di valori taggati


Se si vuole impostare un valore taggato su un attributo della vostra classe, in generale, questo valore taggato passera attraverso come parametro per la generazione di campi Archetypes. Inoltre, se si vuole impostare il valore taggato enforceVocabulary con il valore 1 su un attributo, dovrete dare enforceVocabulary=1 per questo campo nello schema generato. Similmente, si puo impostare il widget delle proprieta dei campi preimpostando il valore taggato con widget:widget:label impostando l’etichetta del widget, per istanza.


Valori taggati diversi da stringhe


Come prima, durante la lettura dei valori taggati, ArchGenXml li trattera come stringe, con poche
eccezioni dove sono permessi solo valori non stringhe, come richiesto da valori taggati. Se non si
vuole che i valori siano quotati come stringhe, prefissatelo con python: Per esempio, se si vuole
impostare il valore taggato di default per python : [high, low] sulla linea degli attributi, si potrà dare default=[high, low] nel LinesFields del proprio schema.


Indice nel catalog


Per creare un indice in portal_catalog per questo campo aggiungere il valore taggato index con
valore fieldIndex. Un fieldIndex con il nome dei campi accessori (esempio get) verra creato.
Indici multipli possono essere definiti in una tupla, indici per cataloghi speciali possono essere
prefissati con il nome del catalogo seguito da / (per esempio python: (FieldIndex, member_catalog/textIndex)).
Per includere indici nel catalogo metadata (e avere gli attributi pronti da usare nel nucleo degli
oggetti), inserire :brains (stesso come ordina: schema), (esempio FieldIndex: brains)


Riciclare Campi – copiarli da schemi genitori e modificarli


Potreste aver bisogno di un campo description che solitamente e definito da una schema di classe
genitore (BaseContent, BaseFolder) ma appare sotto un tab delle proprieta e non nella vostra form di
base_edit. Per far si che venga mostrato come campo bisogna solo cambiare una proprieta di questo
campo: schemata = default.
Soluzione: Copiare la definizione del campo. nell’UML aggiungere un attributo alla vostra classe,
dare a questo il tipo copy e un valore taggato schemata con valore default. Impostare valori su i campi copiati e sui loro widget con alcuni dettagli differenti da i nuovi campi definiti, facendo attenzione a questo.


approfondimento su ArgoUML


Introduzione


ArgoUml e un potente e facile software di sviluppo grafico che supporta il design, lo sviluppo e la
documentazione di applicazioni software orientata agli oggetti.
Le sue caratteristiche sono:


  • Supporta XMI, SVG e PGML

  • 100% Piattaforma indipendente grazie all’uso esclusivo di Java

  • Open Source

  • Caratteristiche cognitive come: riflettivita, design opportunistico, comprensione e
    risoluzione dei problemi




Requisiti di sistema


  • Qualsiasi Sistema Operativo che supporta Java

  • 10 Mb di spazio disponibile

  • Mouse e Tastiera

  • Java 2 JRE o JDK versione 1.4 o superiore


Opzioni di Installazione


Esistono due opzioni di installazione:

Java Web Start

Questa alternativa e ottima per utenti occasionali e test. E’ il modo piu semplice e veloce per
iniziare a usare ArgoUml. É richiesta la connessione alla homepage di ArgoUml
([HTML] 0011FF http://www.argouml.org/):


  1. Assicurarsi di avere java web start (http://java.sun.com/products/javawebstart/)
    installato.

  2. Successivamente lanciare l’Argouml link dalla homepage di ArgoUml.

  3. ArgoUml sarà scaricato, caricato temporaneamente e inizializzato.

  4. Successivamente, ArgoUml e avviabile solo con la Java Web Start Console (senza
    che sia necessariamente collegato alla rete internet) e (se connesso), in modo
    completamente automatico, verra scaricata, ogni volta, l’ultima versione disponibile.



Distribuzione binaria

Questa versione è ottima per utenti regolari e garantisce che la versione di argoUml non cambi durante il corso del vostro progetto. L’utente dovrà:


  1. Assicurarsi di avere Java 2 JRE installato.

  2. Scaricare l’ArgoUml distribuzione binaria dalla homepage di ArgUml
    Potrebbe, anche, includere il fatto di dover copiare questa versione su di un floppy
    disk o cd a seconda se il computer abbia o meno una connessione ad internet.

  3. Creare una directory di installazione per ArgoUml.

  4. Estrarre i file di ArgoUml dentro questa directory

  5. Far partire il software facendo il doppio click su argouml.jar, o eseguendo il seguente
    comando : java -jar argouml.jar sulla linea di comando, o via batch file




Installare Moduli Ausiliari


L’installazione standard di ArgoUml non supporta codici di programmazione come C++, php e C#.
Per far si che questo sia possibile bisogna scaricare, sempre dal sito di ArgoUml, i moduli ausiliari.
Bisogna, poi, scompattare i file scaricati, nella stessa directory di ArgoUml.
Il risultato dovrebbe essere che, la directory che contiene il file argouml.jar, ora contenga anche una sottodirectory chiamata ext, nella quale si trovano dei file .jar per i linguaggi extra.


Opzioni della Linea di Comando


Quando si fa partire ArgoUml dalla linea di comando, vi sono diverse possibilita extra. Per esempio:
java -jar argouml.jar -help; apparirà la seguente schermata:


Usage : [option] [project-file]


Opzioni incluse :


-help mostra queste informazioni


-big usa caratteri grandi


-huge usa caratteri enormi


-nosplash non mostrare il logo all’inizio


-noedem non riportare le statistiche d’uso


-nopreload non caricare prima le classi comuni


-norecentfile non caricare l’ultimo file salvato


-command <arg> comando to perform all’inizio


-batch non far partire GUI


-locale <arg> impostare il linguaggio (e.g. ‘en_GB’)


-open <arg> apri questo file all’inizio


-print <arg> stampa questo file all’inizio (e esci)


É possibile anche impostare i settaggi java che influenzi il comportamento di ArgoUml:
-Xms250M -Xmx500M (Far si che ArgoUml riservi molta memoria per grandi progetti).


Creare dei file .zargo cliccabili (in Windows)


Questo lavoro è solo per chi ha installato la distribuzione binaria.


Per prima cosa, trovato il file zargo, clicca con il tasto destro su di esso. Dovrebbe apparire il
classico menu di windows, includendo anche apri e apri con. A questo punto, bisogna dare una
descrizione per il file come ArgoUml Model, e dire a windows di usare notepad per aprire il file.
Questa operazione serve a dare a windows la possibilita di accettare l’estensione .zargo come file
valido.
Ora, aprire Windows Explorer e dal menu di selezione View -> Options (o su windows XP: tools ->
Folder -> Options…) dovrete dare due (o più). Cliccare il File Types e scorrere la lista la lista di descrizione da dare, ad esempio ArgoUml Model. Cliccare per selezionare questo tipo di file, e
poi cliccare sul pulsante di edit.
Ora, cliccare su Open e poi su Edit. Comparirà una form di dialogo che ha una linea per
l’inserimento del file applicativo da aprire. Ricopiare questa linea:


c:/programmi/Java/j2re1.2.0.01/bin/javaw.exe -jar c:/argoUml/argouml.jar


Sostituire il percorso con quello dei vostri jawaw.exe e argouml.jar se questi sono situati in una
diversa locazione. Cliccare tre volte ok in altrettante finestre di dialogo.


Principi di ArgoUml


Quando ArgoUml parte, mostra un diagrammi di classe vuoto su cui si puo aggiungere varo oggetti.
ArgoUml lavora rispettando i seguenti principi:

Progetto, modello e diagramma

Le operazione salvataggio e apertura dei file avviene su un progetto alla volta. Un progetto
corrisponde a un modello piu informazioni sul diagramma, per esempio, tutto che puoi
editare con la finestra di ArgoUml.
Il modello puo contenere molti oggetti (ModelElements) che formano la descrizione
completa UML del sistema che state descrivendo. Tutti i ModelElements dovrebbero essere
presenti sul diagramma, ma questo non e obbligatorio. Inoltre, il modello che e salvato in
ArgoUml, e indipendente dal contenuto del diagramma.
Questo potrebbe essere spiegato dalla possibilita di generare codice di programmazione dal
modello (non c’è bisogno di altri diagrammi per questo).
Un progetto contiene anche tutte le informazioni sui diagrammi, per esempio, le shapes
(presentazioni) usate per rappresentare vari ModelElements, le loro posizioni, colore, ed altri ancora.
Alcuni ModelElements appaiono in diagrammi multipli, alcuni in uno o in nessuno.
Inoltre, salvando e aprendo progetti si hanno tutte queste informazioni. Per salvare solo il
modello esiste un solo modo ovvero attraverso il menu Tools -> Export as XMI.
Potrebbe essere usato quando viene generato del codice da tool esterni che supportano XMI.



Oggetti

Per selezionare oggetti cliccare con il tasto sinistro del mouse. Le funzionalita di ArgoUml
possono essere attivate dal menu, dalle toolbars, o dai menu di pop-up attivati cliccando con
il tasto destro del mouse sull’oggetto. Molte di queste funzioni lavorano sull’oggetto
selezionato.
Tutti i diagrammi hanno delle toolbar poste in alto che sono usate per aggiungere oggetti al
diagramma stesso.
Molti oggetti possono essere aggiunti e rimossi dal diagramma senza cancellarlo dal
modello. Si puo selezionare un oggetto sul diagramma, e poi, con l’ausilio del menu,
cancellarlo, ma questo restera intatto nel modello come si potra vedere nella struttura ad
albero alla sinistra dell’interfaccia. Anche se rimosso questo potra essere aggiunto al
diagramma stesso o a un qualsiasi altro diagramma cliccando, con il tasto destro, sul nome
dell’oggetto nello schema ad albero e selezionando Add to diagram.



Overview dell’interfaccia

Nella parte alta dell’interfaccia esiste un menu di comandi. Sotto la voce file e possibile
trovare il comando salva (per memorizzare il progetto) e il comando apri (per aprire altri
progetti precedentemente salvati).
Nella parte alta sinistra viene mostrato l’albero modello del diagramma e gli oggetti. Questa
vista puo essere adattata a seconda delle proprie necessita filtrando gli oggetti mostrati e
modificando la struttura dell’albero.
Nella parte bassa destra sono contenuti vari dettagli dell’oggetto selezionato corrente: si puo
selezionare l’oggetto in uno dei livelli superiori e scegliere quali dettagli volere esaminare
usando i tabs.
Nella parte alta destra mostra il diagramma su cui si sta lavorando (uno alla volta). Si puo
tagliare e copiare gli oggetti sul diagramma e si puo usare i veloci link che appaiono quando
si seleziona un oggetto creando dei collegamenti tra i vari oggetti presenti
Nella parte bassa sinistra c’e la lista delle cose da fare (consigli che il software ti da)

Giovedì 3 Gennaio 2008 Pubblicato da Maurizio Moscatelli | prototipi in plone | | Ancora nessun commento.

Nona settimana – dall’8 novembre al 18 novembre


Primi esperimenti con l’interfaccia di gestione di Zope


Questa fase consiste nell’esplorare l’interfaccia di gestione di zope e provare, in modo casuale, a fare degli esperimenti modificando i contenuti delle principali cartelle.


portal_skin


Tra i contenuti del nostro portale possiamo trovare la cartella portal_skin, la quale contiene tutti i dati riguardanti l’aspetto grafico del portale stesso. Tra le varie sezioni esiste la cartella ‘Custom’ che contiene tutte le nostre personalizzazioni, la cartella ‘archetypes’ che contiene tutti i tipi di contenuto che verranno visualizzati e ovviamente molte altre cartelle.
Il primo esperimento consiste nel ‘personalizzare’ la pagina di edit di un qualunque oggetto. Questa pagina si trova in ‘archetypes’ è si chiama ‘base_edit’; tale pagina viene visualizzata ogni qualvolta si inserisce, dall’interfaccia plone (quindi non da zope), un oggetto (cartella, pagina, favourites, ect…).
Cliccando sulla pagina ‘base_edit’ appare il seguende codice

<tal:block metal:define-macro="master"
define="errors options/state/getErrors | nothing;
Iterator python:modules['Products.Archetypes'].IndexIterator;
schematas here/Schemata;
fieldsets python:[key for key in schematas.keys() if (key != 'metadata') and (schematas[key].editableFields(here, visible_only=True))];
default_fieldset python:(not schematas or schematas.has_key(‘default’)) and ‘default’ or fieldsets[0];
fieldset request/fieldset|options/fieldset|default_fieldset;
fields python:schematas[fieldset].editableFields(here);
dummy python:here.at_isEditable(fields);
portal_type python:here.getPortalTypeName().lower().replace(‘ ‘, ‘_’);
type_name here/getPortalTypeName|here/archetype_name;
base_macros here/edit_macros/macros;
edit_template python:’%s_edit’ % portal_type;
edit_macros python:path(‘here/%s/macros | nothing’ % edit_template);
header_macro edit_macros/header | header_macro | base_macros/header;
typedescription_macro edit_macros/typedescription | typedescription_macro | base_macros/typedescription;
body_macro edit_macros/body | body_macro | base_macros/body;
footer_macro edit_macros/footer | footer_macro | base_macros/footer;
lockable python:hasattr(here, ‘wl_isLocked’);
isLocked python:lockable and here.wl_isLocked();
tabindex tabindex|python:Iterator(pos=7000);
css python:here.getUniqueWidgetAttr(fields, ‘helper_css’);
js python:here.getUniqueWidgetAttr(fields, ‘helper_js’);">

<html xmlns="http://www.w3.org/1999/xhtml"
xml:lang="en"
lang="en"
xmlns:tal="http://xml.zope.org/namespaces/tal"
xmlns:metal="http://xml.zope.org/namespaces/metal"
xmlns:i18n="http://xml.zope.org/namespaces/i18n"
metal:use-macro="here/main_template/macros/master"
i18n:domain="plone">

<metal:head fill-slot="top_slot">
<tal:block define="macro edit_macros/topslot | nothing"
condition="macro">
<metal:block use-macro="macro" />
</tal:block>
</metal:head>

<metal:javascript_head fill-slot="javascript_head_slot">
<tal:block define="macro here/archetypes_custom_js/macros/javascript_head | nothing"
condition="macro">
<metal:block use-macro="macro" />
</tal:block>
<tal:js condition="js"
repeat="item js">
<script type="text/javascript"
charset="iso-8859-1"
tal:condition="python:exists(‘portal/%s’ % item)"
tal:attributes="src string:$portal_url/$item">
</script>
</tal:js>
<tal:block define="macro edit_macros/javascript_head | nothing"
condition="macro">
<metal:block use-macro="macro" />
</tal:block>
</metal:javascript_head>

<metal:css fill-slot="css_slot">
<tal:css condition="css"
repeat="item css">
<style type="text/css"
media="all"
tal:condition="python:exists(‘portal/%s’ % item)"
tal:content="structure string:<!– @import url($portal_url/$item); –>">
</style>
</tal:css>
<tal:block define="macro edit_macros/css | nothing"
condition="macro">
<metal:block use-macro="macro" />
</tal:block>
</metal:css>

<body>

<metal:fill fill-slot="main">
<metal:main define-macro="main">
<metal:use_header use-macro="header_macro" />
<metal:use_typedescription use-macro="typedescription_macro" />
<metal:use_body use-macro="body_macro" />
<metal:use_footer use-macro="footer_macro" />
</metal:main>
</metal:fill>

</body>

</html>

</tal:block>

Come si può notare è scritto in TAL, richiama molteplici funzioni python e utilizza anche molte macro.
Ora proveremo a modificare queste funzioni e queste macro per capire meglio come funzionano.
Quando abbiamo aperto la pagina, oltre al codice di questa, è presente il pulsante ‘customize’ che serve a personalizzare la pagina; di default viene creata una pagina identica, ma modificabile, nella cartella custom.
Al momento della creazione della nuova pagina viene chiesto il titolo della stessa (io ho inserito : ‘MyEdit’).
Proviamo ora ad aggiungere un oggetto nell’interfaccia plone, si può notare che l’url termina con base_edit. In pratica le funzioni e le macro personalizzano questa pagina base,che è unica, a seconda dell’oggetto trattato.


portal_css


Sezione di Plone che contiene il registro generale degli stili CSS applicati al sito. Oltre ha svolge un ruolo centralizzato di ottimizzazione del codice in fase di pubblicazione, acconsente anche all’effettuazione di caching delle varie versioni di CSS, in modo da permettere ai proxy e alle cache dei browser degli utenti finali di effettuare sempre una resa grafica aggiornata all’ultima versione.


portal_types


Come da descrizione “Controls the available content types in your portal”, permette di controllare tutti i tipi disponibili nel proprio sito: oltre ad elencare i tipi offre la possiblità di rinominare, copiare, cancellare, ed effettuare operazioni di importazione/esportazione dei tipi.

Giovedì 3 Gennaio 2008 Pubblicato da Maurizio Moscatelli | prove con zope | | Ancora nessun commento.

Ottava Settimana (dal 1 ottobre al 7 ottobre)


ottava settimana – dal 1 ottobre al 7 ottobre


Conferenza Plone


introduzione


Il giorno Primo Ottobre 2007 l’azienda milanese Redomino ha ospitato una conferenza su Plone atta a portare più comunità all’utilizzo constante di Plone & Zope come non solo come CMS ma anche come CMF. Un CMF è



A content management framework is an application programming interface for creating a costumized content management system


Questa definizione purtroppo non rende giustizia alla tecnologia Zope, perché in realtà fa molto di più!


argomenti trattati


Poichè il corso è stato abbastanza intenso, è stato possibile prendere appunti in maniera frammentaria e inaccurata, per cui riproponiamo gli argomenti sotto forma di lista:



introduzione

Poiché la riunione era rivolta ad un gruppo di utenti eterogeneo, la conferenza è iniziata con una copiosa guida all’installazione di Plone ed alla sua struttura;



Plone è una demo

Spesso molte persone non utilizzano il Sistema Zope + Plone perchè si sentono costretti ad usare un CMS con poche personalizzazioni possibili o di grafica abbastanza spartana. In realtà Plone è solo un’istanza particolare di Zope, ma può essere modificata nel profondo. Ovviamente, anche la grafica è modificabile e personalizzabile, è sufficente avere nozioni di HTML/CSS e saper dove andare a scriver codice;



astrazione completa sull’oggetto

Essendo Plone e Zope basati Python, radicato nella sua composizione c’è la possiblità di definire un tipo di oggetto con estrema semplicità e di personalizzarlo in maniera totale, senza nessuna limitazione (se non la dimestichezza con Zope e Python);



permessi

La gestione dei permessi fa decisamente concorrenza ad un sistema operativo moderno. É infatti possibile scegliere i permessi che un determinato gruppo di utenti può avere riguardo ad un tipo di oggetto in maniera atomica, cioè scegliendo in maniera precisa ed esplicita ogni azione possibile;



live search

Il motore di ricerca di Zope, non soltanto esegue un’indicizzazione costante dei contenuti e ha un buon supporto Ajax al momento della digitazione del termine da ricercare (tipo la tollbar di google) ma restituisce i risultati in base allo scope che ha l’utente. Per esempio, se non si è loggati al sito si potranno vedere solo documenti visibili ad utenti anonimi ma non quelli visibili dagli utenti registrati;



zope è transizionale

L’interfaccia di Plone accede al “`File System”‘ di Zope in maniera transizionale, cioè ogni iterazione è atomica; se l’operazione in corso non va a buon fine c’è un rollback che ripristina lo stato del sistema prima che l’azione avesse inizio;



accesso a documenti non autorizzati

Il sistema di sicurezza (come già visto nel live search) è efficace, poichè non permette ad un utente non autorizzato di vedere il contenuto di un documento. Non solo, il sistema non ne consente la visione nemmeno se egli è in possesso dell’URL di riferimento;



immagini

Poichè in Zope (Python) ogni cosa è un oggetto, le immagini non fanno certo eccezione; nel sistema, infatti, le immagini sono memorizzate con il medesimo formato e qualità del file immagine d’origine. In maniera del tutto automatica, il sistema effettua un resize dell’immagine per renderizzarla su una pagina agevolandone l’accesso (ridurre il carico di dati da spostare, ridurre gli sprechi, presentare una pagina ben formattata senza immagini gigantesche!), ne crea cioè un’anteprima più snella. L’immagine sarà comunque disponibile con un semplice click. Plone supporta di default diverse dimensioni di resize;



ereditarietà nei permessi

Il sistema rispetta l’ereditarietà, una delle principali caratteristiche dei linguaggi OO; applicando questo principio ai contenuti, se un utente può vedere una cartella può vedere automaticamente i file che contiene a meno che tali file non siano a lui vietati, così come se un gruppo acquisisce l’accesso ad un documento, tutti i membri di tale gruppo acquisiranno automaticamente tale diritto;



cercatore

Il cercatore è un particolare tipo di oggetto che viene definito da una ricerca costituita da logiche anche complesse, all’interno del sistema. Ogni volta che un utente richiede la visione di quest’oggetto esso ripresenta in propri contenuti in maniera dinamica;



Autorefresh

Zope ha raramente bisogno di un riavvio, perchè si "accorge" dinamicamente di nuovi tipi di oggetto definiti;



caching di CSS e JS

Il sistema dispone di appositi recipienti in cui inserire i codici CSS e JS necessari al sito. Il sistema restituirà tutto quanto in maniera ottimizzata per le cache dei browser e dei proxy di rete;



caching delle pagine

per quanto riguarda le pagine, Zope permette ai proxy di cachare le pagine statiche ma non quelle dinamiche, ne tanto meno quelle private, per evitare che in rete risiedano copie di pagine protette; è anche possibile configurare la cache per evitare di renderizzare ogni volta una pagina, ammesso che la copia memorizzata sul browser dell’utente sia aggiornata; questa funzionalità deve ancora essere inserita nel Plone 3;



accesso ai db

Fornisce un sistema di gestione della cache direttamente sugli oggetti del db di zope, nel caso in cui il webserver sia diviso su più macchine o nel caso in cui abbiano un database condiviso;



tuning

Esistono extension per ottimizzare le prestazioni del sistema, scaricabili direttamente dal sito ufficiale;



single core

Zope (Python) è un linguaggio di programmazione non multi core ma single core; postilla da ricordare per ottimizzare sistemi multi core;



plone templates

Sono delle pagine prefabbricate che vengono richiamate dal sistema, il cui codice è direttamente modificabile; importante ricordarsi di faro mantenendo gli standard XHTML; è un [HTML] FF1100 linguaggio page replay;



cartella custom

Particolare cartella in cui Zope memorizza le nostre personalizzazioni; esse, in un certo senso, effettuano un override sul sistema. Per ripristinare il sistema è sufficiente cancellarle;



zope come cartella di rete

Si può aver accesso a Plone come cartella di rete tramite il WebDav, permettendo quindi di:


  • mostrare tutti gli oggetti della struttura di plone come con il classico stile ad albero, permettendone operazioni lettura-scrittura, ovviamente in base ai permessi che ha l’utente



  • indicizzazione automatica



  • possibilità di mappare una cartella del file sistem all’interno di plone e indicizzarla, con un però perdita di personalizzazione in termini di sicurezza (parametri di sicurezza limitata)





versioning

Sistema di versioning con controllo d’accessi e tracking delle modifiche, con possibilità di effettuare rollback;




strumenti aggiuntivi


Sono stati trattati diversi strumenti aggiuntivi per semplificare la personalizzazione di plone. Saranno anch’essi riproposti mediante un elenco.



portal_skin custom

Per creare e modificare le viste;



formgenerator

Supporto alle form HTML;



plone2postgresql

Per eseguire query sql;



Generic Plone Content

Per estendere gli oggetti direttamente da web;



external file

Per utilizzare file esterni a Plone;



plone artiche

É molto simile a document, ma con più campi;



tabbed subpages

Permettere ad un documento di contenere altri documenti che vengono reperiti mediante il proprio UID, all’interno di Plone;




referenze


Il corso è stato tenuto da andrea.cannizzaro@redomino.com e da fabrizio.reale@redomino.com, entrambi della ditta Redominio http://www.redomino.it.


KSS


Kinetic Style Sheets è il nuovo motore Ajax introdotto in Plone 3. Si propone di fare un largo riuso del codice JavaScript già scritto.

Mercoledì 17 Ottobre 2007 Pubblicato da Nastari Giovanni | Redomino, Zope, cmf, cms, kss | | Ancora nessun commento.

Settima Settimana (dal 30 luglio al 5 agosto)


riunione con De Michelis


Il giorno 2 agosto, abbiamo tenuto una riunione con il professor De Michelis, per sottoporre il nostro progetto in dettaglio, ed ottenere informazioni e correzioni sulle nostre idee.
Sono emerse queste idee:


  • Nello sviluppo del sito orientato ad una comunità, non lo si deve concepire solo a quella stretta composta dai frequentanti, ma anche agli ex studenti, o agli appassionati o eventualmente a professionisti.
    Ovviamente queste considerazioni dovranno essere tenute in considerazione per la progettazione del portale, anche nell’ottica dei servizi che potranno essere erogati in futuro.
    Quella dei professionisti è una modifica al’uso sito che potrebbe cambiare il modo con cui questo può essere utilizzato; si dovrà prevedere che con l’evolversi dell’utenza possa cambiare il modo con cui venga utilizzato il sito stesso. Per questo dovremo cercare di creare strumenti (o oggetti) che permettano un uso anche differente da quello che ora si riesce a prevedere.



  • É stata valutata positivamente l’ipotesi di aggiungere strumenti di aggregazione che facilitino l’incontro reale fra gli studenti, considerando anche che molti corsi possono essere meglio compresi, discussi e quindi studiati in gruppo.



  • Pensare da una parte il sistema, dall’altra la pagina dello studente: il sistema è da pensare come un file system, dove mettere tutte le cose che contano per lui; la pagina viene generata da delle funzioni che leggono il sistema. La pagina generata, di conseguenza, avrà un ruolo sia passivo che attivo, perchè dovrà interagire col portale.



  • Anche i docenti devono ritenere che sia bene che gli studenti abbiano una seconda via d’accesso alle informazioni; gli studenti avranno la possibilità di usare i materiali ufficiali del sito dei professori come oggetto per le loro discussioni.



  • Bisognerà pensare ad uno strumento per il controllo periodico sulla qualità dei siti proposti e invecchiamento degli stessi, ed utilizzare questo anche come uno dei parametri per la valutazione del ranking del sito proposto.



  • Oltre a questo parametro, dovranno essere scelti altri algoritmi, che permettano di dare un posizionamento corretto dei siti, valutando l’uso che ne faranno anche gli studenti meno attivi sul portale.



  • Bisognerà produrre una descrizione per ciascun link consigliato in modo che sia più semplice capirne il contenuto, e dovremo valutare se permettere la modifica di questa descrizione, e se si a chi permetterlo.
    Si potrebbero utilizzare le API di google, per prendere questa descrizione dei link.



  • Poiché un sito è interessante tanto più esso è aggiornato, lo stato d’aggiornamento deve essere costantemente monitorato; i siti interessanti dovranno essere alimentati di informazioni, anche nei momenti in cui i visitatori scarseggiano, com’è realtà tipica delle comunità che hanno dei fulcri attivi. Allo stesso modo potrà capitare che per alcuni siti ci sarà qualcuno che gli alimenti, anche se saranno visti poco.



Domenica 5 Agosto 2007 Pubblicato da Nastari Giovanni | bicocca, de michelis, funzionalità, idee, milano, mycampus, progetto, ranking, siti, struttura, studiare | | Ancora nessun commento.

Sesta Settimana (dal 23 al 29 luglio)


pubblicazione di Diario di bordo su Internet


Per rendere pubblico il nostro progetto abbiamo scelto di pubblicare sul sito http://www.wordpress.com copia di questo documento. Il lavoro di adattamento del testo sul WEB c’ha richiesto due giornate lavorative piene.


imparare ad utilizzare Plone


Avendo trovato delle librerie standard con cui iniziare a progettare widget, abbiamo iniziato l’apprendimento di plone, utilizzando Plone 2 book italian. Poiché è un manuale di oltre quattrocento pagine, con molta probabilità non ci sarà possibile terminarne l’apprendimento entro la fine di questa settimana.

Domenica 29 Luglio 2007 Pubblicato da Nastari Giovanni | bicocca, imparare, milano, mycampus, plone, progetto, studiare, wordpress | | Ancora nessun commento.

Quinta settimana (dal 16 al 22 luglio)


Python e Plone


Durante buona parte della settimana ci siamo dedicati ad imparare Python, un linguaggio di programmazione estremamente di alto livello, ma potente e versatile, per essere in grado di realizzare piccole classi di oggetti da inserire nel CMS Plone.
In seguito, abbiamo girato la rete alla ricerca di librerie per Python e di plugin per Plone, al fine di agevolarci il lavoro.



ToscaWidgets

è un toolkit per Python basato su Turbogears Widget che aiuta la creazione, l’impatteccamento di elementi common view utilizzati nel web.

Archetypes 1.4.4

è un framework per lo sviluppo di nuovi tipi di contenuto per Zope/CMF/Plone, in grado di generare automaticamente dei moduli di presentazione e richiesta dati partendo dal loro schema, integrando in maniera molto semplice i tipi di contenuti complessi e in definitiva abbassando gli altrimenti complessi requisiti necessari per creare nuovi tipi di contenuti in Zope.
Archetypes, conosciuto in precedenza come CMFTypes, è un prodotto Zope che semplifica la creazione di nuovi tipi di contenuto in Zope 2 con i Content Management Framework (CMF). Tipo di contenuto può essere un documento, un evento, un’immagine o qualsiasi altro oggetto contenitore messo a disposizione degli utenti per essere aggiunti a un sito Zope. La maggior parte dei progetti di content management introduce un nuovo tipo di contenuto, il che può richiedere tempo ed è comunque un processo complicato. Archetypes offre un framework semplice ed estensibile che facilita lo sviluppo a vantaggio dei costi di manutenzione dei tipi di contenuto CMF, riducendo al contempo la curva di apprendimento per casi più semplici.

Generic Plone Content

è un prodotto per Plone che permette di creare nuovi tipi di contenuto direttamente dal pannello di controllo del portale. É uno strumento molto utile per aggiungere velocemente funzionalità al vostro portale.
Gli oggetti generati sono degli Archetypes che esistono solo all’interno di quella specifica istanza Plone.

ATSchemaEditorNG 0.4.4

fornisce i mezzi che consentono l’amministrazione degli oggetti TTW basati suchi Archetypes schema. Plugun necessario per poter utilizare GPC

Educational’s plone extension

sono una categoria di progetti per Plone presenti al link http://plone.org/products/by-category/educational con numerose estensioni per organizzare l’e-learning

Lunedì 23 Luglio 2007 Pubblicato da Maurizio Moscatelli | estensioni, framework, imparare, plone, python, standard, studiare, widget | | Ancora nessun commento.

Quarta settimana (dal 9 al 15 luglio)


Giovanni


i bookmarks



del.icio.us

è sicuramente è il bookmark più popolare, mostra una grafica molto essenziale, ma allo stesso tempo, ha una grande usabilità, permette di creare un elenco di link con i propri siti preferiti con facilità. Del.icio.us ha creato un potente motore di ricerca, al suo interno, basato sui tag che gli utenti hanno assegnato ad un determinato link: più persone assegnano un certo tag ad un link, più questo acquisisce importanza nel motore di ricerca. Questa politica si adatta abbastanza bene alla nostra idea di link dei preferiti dell’utente, l’organizzazione dovrà, però, essere più gerarchica e altamente personalizzabile.
Altra funzione di notevole fattura del sito è la sezione network: del.icio.us permette di condividere i propri preferiti con quelli di altri utenti; nel nostro contesto possiamo utilizzare questa funzione per far vedere agli utenti i link di altri studenti del proprio corso di laurea, creando, come in del.icio.us, una funzione che faccia aggiungere il link alla propria lista dei preferiti.
Del.icio.us ha creato, inoltre, una plugin per Firefox che permette, in modo molto semplice, di aggiungere i link ai propri preferiti, senza doversi collegare al sito.


addThis.com

offre un widget da inserire nel proprio sito web, blog o newsletter; questo widget permette a un generico utente, che sta visitando il vostro spazio web, di aggiungere il link del sito al proprio social bookmark preferito, in modo molto semplice e veloce. Questa idea potrebbe essere molto utile al nostro scopo: si potrebbe aggiungere un widget simile ai siti dell’università in modo che, uno studente interessato a questi siti, possa aggiungere il link nella sua lista di preferiti in modo immediato.
Oltre a questo widget, addThis ha creato una plugin, modello del.icio.us, che permette di aggiungere il link al proprio social bookmark.


StumpleUpon

che in italiano significa inciampato su, è un blog social bookmark. Gli utenti del sito aggiungono i link dei siti che stanno visitando, con commenti e opinioni, classificandoli per categorie (video, foto, sport, ecc…). Questa idea si può usare se verrà aggiunta, con probabilità molto bassa in quanto esiste già un forum per gli studenti,la sezione di commento dei siti e dei corsi.
StumpleUpon, inoltre, ti consiglia i siti da visitare a seconda dei tuoi gusti, dei tuoi salvataggi e di quelli degli utenti che hanno gusti simili. Questa funzione, con il giusto adattamento, può essere utile per consigliare agli studenti i siti da aggiungere ai propri preferiti (Nel nostro caso gli utenti con i gusti simili sarebbero gli studenti dello stesso corso di laurea).


Spurl

è un software che permette di organizzare i propri bookmark in maniera gerarchica, con cartelle e sottocartelle, cercare siti tramite un motore di ricerca interno, funzionante a tag (modello del.icio.us). Il software installa una plugin, chiamata Spurl bar, che permette queste operazioni in modo semplice e veloce. Questo sito può essere utile per trovare un sistema gerarchico per organizzare i preferiti degli studenti


Maurizio


ricerca di uno standard


introduzione


Durante la prima parte della settimana, ho girato un grosso quantitativo di siti alla ricerca di uno standard da adottare per la scrittura dei widget. Riporto solo alcuni dei siti più rilevanti:


http://en.wikipedia.org/wiki/Web_widget

Breve enunciato che che centra esattamente il concetto di Widget che sarà da appliccare nel nostro sito. La definizione è un po’ scarna e insufficente, i link esterni sono alquanto magri.

 

http://www.w3.org/TR/widgets

Draft version di Widget 1.0. Il documento è stato aperto il 9 novembre 2006 ma ancora in stato working, mira a definire a livello internazionale lo standard dei widget, ma sono ancora parecchie le sezioni che mancano. Per fino la definizione ufficiale di widget non è ancora disponibile ma può ancora essere soggetta a variazioni.
Presenta i widget com una coppia dei file, uno HTML ed uno xml, da installare in locale sul pc dell’utente. Ne sottolina il livello di sicurezza, poichè essi


  • non hanno accesso ai fle in locale, ad eccezione di loro stessi;

  • possono accedere ad internet solo con http, a meno che non sia stato predentemente dichiarato un accesso maggiorato, non potendo di conseguenza contattare porte non standard, sempre a meno che non precedentemente dichiarate nella sezione security del file config.xml;

  • un widget che opera su reti intranet non deve essere abilitato a contattare ip al di fuori degli stantard range di intranet definiti nell’ipv4.


In conclusione, abbiamo ottenuto solo un overview decisamente ampio dalla W3C.

 

http://dev.netvibes.com/doc/universal_widget_api

Il sito ha definito un protocollo standard per la realizzazione di widget chiamato Universal Widget API. Questo standard, permettere di realizzare widget compatibili per netvibes, Google IG, Apple Dashboard e tanti altri.

 

http://www.progressive-coding.com

Sito che offre numerosi tutoral e guide, fra cui un’interessante sezione ”Creating an AJAX Rating Widget”, che fornisce una guida completa e ben dettagliata che spiega in maniera esaustiva la realzizzazione di un widget. Fornisce anche diversi samples sull’utilizzo di framework Ajax quali Prototype, Doojo, Mootools e jQuery, e per introdurre interazione con il linguaggio PHP.


In conclusione, è auspicabile che realizzeremo widget usando lo standard UWA.


ricerca online di Widget freeware


Durante la seconda metà della settimana abbiamo cercato di individuare dei database online di widget fruibili in maniera freeware. Fra tutti i siti visitati, cito solo http://www.widgipedia.com e http://www.widgetbox.com.
Widgpedia raccoglie numerosissimi widget, sia di tipo web che di tipo appplicativo abbinati a Desktop Widget Platform (yahoo, google desktop, …), sistemi operativi quali linux, mac e vista (i gadget). Fornisce una discreta guida per iniziare a scrivere un widget da zero.
Widgetbox raccoglie anch’esso numerosi widget, tutti però verso internet; in aggiunta, ha la funzione Bildget, per arricchire il proprio blog space di widget.


ricerca di CMS


In questa fase abbiamo cercato un CMS per facilitare la compisizione della struttra del sito, senza quindi evitare di dover stendere completamente il sito da zero. Anche in questo caso riporto solo i link più rilevanti:



http://www.bindows.net

Interessantissimo Framework javascript che emula il supporto a finestre di Windows, che lo rende molto user friendly;

 

http://ajaxpatterns.org

Portale verso il mondo Ajax, indirizza direttamente sui siti dei principali framework e ad amazon per l’acquisto di manuali;

 

http://dojotoolkit.org

Framework nato per facilitare la produzione di siti DHTML sfruttando javascript, e mira ad aiutare i webmaster a trovare uno standard per realizzare le applicazioni web;

 

http://script.aculo.us

Fornisce numerosi script Javascipt per realizzare animazioni molto elaborate stile Flash;

 

http://prototypejs.org

Framewok javascript che mira a semplificare lo sviluppo di applicativi web;

 

http://nextapp.com/platform/echo1/echo

Applicativo AJAX completo ed accattivante realizzato in Java puro;

 

jMaki

come da articolo sul link http://ajaxian.com,

jMaki is all about enabling Java developers to use JavaScript in their Java based applications as either a JSP tag library or a JSF component. jMaki uses the best parts of Java and the best parts of JavaScript to deliver a rich AJAX style widgets.
jMaki currently provides bootstrap widgets for many components from Dojo, Scriptaculus, Yahoo UI Widgets and DHTML Goodies. This project also includes a set of AJAX widgets with a focus on Web 2.0 such as a RSS widget, a del.icio.us Bookmark widget, a Chat widget, and many more to come.

 

http://www.rubyonrails.org

Framework Ajax che sfrutta in pieno le funzionalità di Ruby; questo linguaggio mira a diminuire la parte di sviluppo dei siti, poichè è un linguaggio ad alto livello ma estremamente potente e flessibile;

 

http://www.akelos.org

É un porting in PHP4 e PHP5 del framework Ruby on Rails Web Development Framework. L’obiettivo di questo progetto è di aiutare i programmatori a costruire un un applicativo web completo, sfruttando il patternd Model-View-Control pattern, lasciando ad essi la possibilità di personalizzarne convenzioni e configurazioni;

 

http://www.modernmethod.com/sajax

Framework Ajax che rende molto più semplici le chiamate a ASP, Cold Fusion, Perl, PHP, Python o funzioni Ruby. Secondo l’about del sito,

The toolkit does 99% of the work for you so you have no excuse to not use it.

 

http://drupal.org

Drupal è un CMS OpenSource che include un largo range di funzionalità e servizi inclusi servizi di amministrazione, di discussione, di news, di pubblicazione di sorgenti XML per condividere informazioni, accessoriato da una potente miscela di funzionalità e configurabilità e in grado di supportare un ampio range di prigetti, dal webblog a grandi progetti.

 

http://plone.org

Plone è anch’esso un un CMS OpenSource costruito sul famoso applicatiovo web chiamato Zope. Plone è facile da configurare, estremamente flessibile, e fornisce un sistema per la manutenzione dei contenuti ideale per gruppi, ampi progetti e comunutà, sia in ambito Internet che intranet. É un CMS estremamente diffuso in ambito statale, in tutto il mondo, con traduzioni in ben trentacinque lingue.



Incontro con la Pasi


Una delle parti fondamentali dei widget dei corsi, che andremo a creare nel nostro portale, è la lista dei preferiti associati a tal corso.
Il problema che si presenta è la scelta della priorità dei vari link e la ricerca di essi tramite il motore di ricerca interno ”google-mini”.
I preferiti dovranno necessariamente essere organizzati tramite un sistema di ranking, ovvero un algoritmo che inferisce importanza a una pagina web, quindi al suo link, assegnando un valore ad ognuna di esse .
Questo sistema dovrà essere pronto entro la fine della prima fase (dicembre).
Il sistema di ranking può essere creato attraverso due metodi:


  • creando uno strumento di information retrieval, il quale è un vasto insieme di tecniche utilizzate per il recupero mirato dell’informazione elettronica. In senso più stretto, si utilizza spesso tale termine per indicare i linguaggi di interrogazione basati sui comandi testuali tipici delle banche dati commerciali on line e spesso impiegati anche in altri contesti.
    Questa tecnica, però, richiede una buona conoscenza dei software con cui viene creata, che prevedono a loro volta un buon bagaglio conoscitivo dei sistemi di ranking.
    Per questo motivo questa tecnica verrà applicata nella seconda fase del progetto per indicizzare le informazioni presenti nel nostro portale e tutte le informazioni relative.
    Il nostro sistema di information retrieval sarà simile al metodo Google, ma i link saranno indicizzati associando anche l’informazione dell’insegnamento nel quale si trovano fornendo, così, uno strumento da dare allo studente molto più rapido ed efficace.

  • applicare il metodo dell’information filtering, il quale è comunque basato sull’information retrieval, formato da una serie di processi che filtrano le informazioni dando come output solo le informazioni di cui un generico utente ha bisogno.
    Questo metodo può essere sviluppato in due modi:


    • Collaborative filtering: Filtraggio collaborativo, il filtraggio avviene identificando utenti con gusti simili a quelli dell’utente e raccomandando gli item che essi hanno apprezzato.

    • Cognitive filtering: Filtraggio cognitivo, il filtraggio avviene anailzzando i contenuti delle pagine e fornendole all’utente


    Come si può capire, l’applicazione dell’information filtering, è abbastanza complicata, ma potrebbe essere applicata nella sezione di valutazione dei corsi fatta dagli studenti, pesandola con i voti che gli studenti hanno preso, applicarla quindi allo start del prossimo progetto, non in questo.


Incontro con Bellini


entro dicembre 2007 dovremmo cercare di inserire:


  • struttua d’ateneo biblioteca

  • sviluppo portale con funzione di


    • gestione widget

    • salvataggio informazioni

    • profilazione dell’utente

    • visualizzazione feed rss

    • sviluppo componenti relativi agli insegnamenti e relativi widget


      • recupero informazioni generali dei corsi

      • gestione link per ogni corso di laurea (insegnamento)

      • integrazione link del corso col sistema biblioteca LINX






  • sviluppo delle funzionalità di base del motore di ricerca

    • integrazione con googleMini di ateneo

    • integrazione con metalib di biblioteca d’ateneo





Saranno rimandate a giugno 2008 le funzionalità di:


  • information retrival (indicizzazione dei link, rif prima tipologia)

  • miglioramento motore di ricerca

  • aggiungere nei corsi la parte di gesione della bibliografia

  • aggiungere integrazione fra bibliografia e il motore di ricerca della biblioteca (o presenza del libro in biblioteca)

  • eventualmente possibilità di aggiungere non più solo link a bibliografia ma link a riviste (sempre della biblioteca)

  • integrazione spazi e orari, prob iCal, in XML xCal o formato ICS (da andare a vedere)


Appunti per il prossimo progetto, funzionalità già viste, ma che non faremo in tempo a sviluppare:


  • valutazione dei corsi

  • ePorfolio

  • dalla valutazione dei corsi, information filtering, come descritto sopra

  • vicinanza di percorso didattico o obiettivi didattici degli studente


Compiti per la quinta settimana


  • per entrambi


    • pyton

    • cosa offre plone in ambito di javascript, ajax, vedere che framwork hanno (sceglierlo), vedere anche se script.aculo.us fa qualcosa, che standard usa




  • Per Giovanni


    • vedere con plone come creare in modo automatico la ramificazione dei corsi di laurea (insegnamenti, …)

    • template di un insegnamento per poi replicarlo x n insegnamenti

    • vedere come si può fare a livello uml il disegno dell’insegnamento con preferiti, …, una bozza




  • Per Maurizio


    • qual’è lo standard ajax, capire come scrivere in pyton qualcosa x i widget di netvibes, provare a creare un widget in pyton, anche stdandar alone




Lunedì 16 Luglio 2007 Pubblicato da Nastari Giovanni | bookmarks, cms, funzionalità, idee, information filtering, information retrival, ranking, standard, template, widget | | Ancora nessun commento.

Terza settimana (dal 2 all’8 luglio)


meeting con Biblioteca università Milano – Bicocca


Il giorno 3 luglio 2007 abbiamo tenuto un meeting con la dottoressa Ilaria Moroni, responsabile della formazione, sviluppo e comunicazione di biblioteca Università Milano Bicocca e la sua collaboratrice, Bonaria Biancu, ufficio acquisti e catalogazione, con lo scopo di trovare dei punti d’incontro per impostare il nostro progetto in maniera compatibile con la Biblioteca. Sono stati evidenziati numerosi punti di comune accordo, fra cui il desiderio di far conoscere a tutti gli studenti i servizi offerti dall’università e dalla biblioteca, trovando un posto comune da cui essi possano reperirne un elenco completo.
Nella prima parte del meeting ci hanno illustrato alcuni loro progetti che ci sono parsi interessanti:


OPAC

è l’Online Pubblic Access Catalogue, uno dei motori di ricerca sfruttato dalla biblioteca per permettere agli utenti di reperire libri;


SFX

è il motore di ricerca per le riviste;


LINX

è l’archivio di collegamenti mantenuto dal personale dalla biblioteca dei siti più famosi inerenti alla didattica universitaria, diviso in base ad aree tematiche;


open url

speciale identificatore di codice (X)HTML, inserito in un tag <span>, che viene abbinato da diversi siti (fra cui amazon, google, …), abbinato a riviste, articoli e libri presenti nelle pagine web; essi vengono individuati da appositi spider o da extension del proprio browser; può essere in formato coin o in formato cue, munito di icona;


MetaLib

è motore di ricerca progettato allo scopo di unificare i OPAK e SFX, noi lo avremo ad ottobre


BibloBar

è un’extension per Mozilla Firefox realizzata sfruttando tecnologie di un’università americana rielaborate e migliorate; questa plugin, oltre a fornire una toolbar di ricerca che punta direttamente all’archivio della biblioteca, ricerca all’interno del codice gli openurl; se individuati, mostra accanto ad ognuno di essi l’icona della Bicocca e, se premuta, rimandano direttamente all’OPAK con l’entry selezionato;


In seguito, dopo aver spiegato gli obiettivi del nostro progetto, siamo giunti alla formulazione di cinque punti verso cui muoverci:


linking tra bookmarks di myCampus e LINX della Biblioteca

fornire alla biblioteca l’elenco dei link rilevanti (presumibilmente i più poplari o quelli con votazioni migliori) che sono stati aggiunti dagli studenti attraverso myCampus, in modo da fornire al personale della biblioteca nuovi link da tracciare; se saranno ritenuti validi verranno catalogati (stesso stile di quando catalogano i libri) e spuntati dal personale della bibioteca promuovendo il link a ”graduated”, consentendo così al link di acquistare maggior rilevanza;


servizi della biblioteca

sarà nostro onere creare dei link statici ai servizi offerti dalla biblioteca;


integrazione nella bibliografia

inserire, all’interno delle bibliografie associate ad ogni corso di laurea, un open url per ogni testo; in questo modo e per mezzo della BiblioBar, sarà possibile conoscere con un solo click informazioni addizionali al testo e conoscerne immediatamente la disponibilità nella biblioteca; questa funzionalità non è stata inserita nelle parti fondamentali del progetto, per cui stimiamo che sarà resa disponibile attorno ad aprile 2008;


integrazione con metalib

costruire un widget in grado di interagire col motore di ricerca unificato; poichè il progetto è ancora in fase di costruzione, sarà comunque reso disponibile all’utenza per dicembre; il nostro progetto è di renderlo funzionale entro ottobre-novembre;


BiblioBar

installazione nei LIB di Mozilla Firefox e dell’extension BiblioBar, per rendere agevole la ricerca dei volumi anche dai laboratori informatici.


ricerca di un Contents Managament System


Abbiamo speso circa due giornate, partendo come base da [HTML] 0011FF www.dexly.com, alla ricerca di un CMS utile al nostro progetto. Abbiamo notato che dexly elenca una serie di CMS non eccezionalmente supportati o comunque relativamente spartani, adassi solo a ristrette cerchie di utenza.
Continuando a navigare, siamo incappati nel sito [HTML] 0011FF www.opensourcecms.com e [HTML] 0011FF www.opencms.com, trovando numerosi CMS adatti a tutte le esigene, con la possibilità di effettuarne download e di testarne il contenuto con pagine demo.Dopo aver testato numerosi CMS abbiamo estratto una piccola lista di candidati per supportare il nostro progetto:



drupal

É un CMS con grafica molto sobria, ha un menu laterale decsamente essenziale; presenta la sezione myBlog che consente di creare un proprio blog, in accoppiamento con la tecnologia RSS; presenta anche funzionalità quali forum e topic e un buon supporto per la personalizzazione del profilo utente;


e107

CMS molto evoluto scritta in PHP con in bundle numerosi plugin e un supporto di sviluppatori molto numeroso; la grafica è anche qui molto sobria ma al tempo stesso professionale;


jetbox

CMS con grafica moderna; presenta un layout con menu sulla sinistra e un menu a schede nella parte superiore del sito, per poter scorrere più sezioni contemporaneamente;


joomla

grafica accattivamente ma molto semplice, è altamente personalizzazione e supporta un gran numero di template.


In seguito, partendo da wikipedia, abbiamo aperto la pagina di netvibes, sito già citato in precedenza e molto famoso nell’ambito del nostro progetto, per controllare che tipo di tecnologia usino e se, eventualmente, era possibile possibile estenderla e farla nostra.
Abbiamo trovato maggiori informazioni sul link [HTML] 0011FF http://dev.netvibes.com, che saranno approfondte nel corso della prossima settimana.


task per la prossima settimana


Elenco dei lavori da svolgere durante la prossima settimana, divisi in base alla persona:


  • Maurizio


    • http://mashable.com/

    • massively distributed collaboration

    • cercare di capire se si può integrare con gli altri portali (tipo iGoogle)

    • guardare documentazione di netVibes, ma integralo e personalizzarlo con altri sistemi

    • vedre se c’è qualche strumento x installare su server pagine personalizzate

    • se x mercoledì non troviamo nulla buttare un occhio a come vengono realizzati i widget su netvibes, prenderne ispirazione e stednere una relazione su come sono a livello programmativo

    • quali sono gli standard

    • quali sono i meccanismi




  • Giovanni


    • siti di social- social bookmarking in modo da stendere due appunti su funzionalità date dai siti

    • http://www.addthis.com




Domenica 8 Luglio 2007 Pubblicato da Nastari Giovanni | analisi, bibliobar, biblioteca bicocca, bookmarks, cms, internet, linx, metalib, mycampus, opac, openurl, progetto, sfx, siti | | Ancora nessun commento.