UNIVERSITÁ DEGLI STUDI DI MILANO Facoltá di Scienze Matematiche Fisiche e Naturali Corso di Laurea in Informatica Relazione di ETL Relazione di Luca BLEGGI Matr. 718184 Paolo CERUTTI Matr. 679495 Anno accademico 2006 - 2007 Indice Introduzione 0.1 WordPress, Altervista e blogspot . . . . . . . . . . . . . . . . 1 L’ambiente di lavoro: il blog 1.1 Definizione e origini del termine 1.2 Cenni storici . . . . . . . . . . . 1.3 Strutturazione e funzionamento 1.4 Tipologie di blog . . . . . . . . 1.5 Come creare un blog . . . . . . 2 Google 2.1 Storia dell’azienda . . . . . . . 2.2 Etimologia . . . . . . . . . . . . 2.3 I server . . . . . . . . . . . . . . 2.4 Ottimizzazione . . . . . . . . . 2.5 Strumenti e servizi di Google . 2.5.1 PageRank . . . . . . . . 2.5.2 AdWords . . . . . . . . 2.5.3 AdSense . . . . . . . . . 2.5.4 Alcune opzioni di ricerca 2.5.5 Descrizione strumenti . . 3 W3Schools 3.1 W3C . . . . . . . . . . . . . . 3.1.1 Storia . . . . . . . . . 3.1.2 Membri . . . . . . . . 3.1.3 Principali obiettivi . . 3.1.4 Organizzazione interna 3.1.5 Come lavora . . . . . . 3.1.6 Recommendations . . . 3.1.7 Progetti già realizzati . 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . avanzata . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 8 . . . . . 9 9 9 10 11 11 . . . . . . . . . . 13 13 14 14 15 16 16 16 16 16 18 . . . . . . . . 23 23 23 24 24 25 25 26 26 3.2 3.3 3.4 3.5 3.6 3.7 3.8 3.9 3.10 HTML . . . . . . . . . . . . . . . . . . . . . . 3.2.1 Storia e sviluppi . . . . . . . . . . . . . 3.2.2 Sintassi e struttura . . . . . . . . . . . 3.2.3 L’editing . . . . . . . . . . . . . . . . . 3.2.4 Sviluppi . . . . . . . . . . . . . . . . . XML . . . . . . . . . . . . . . . . . . . . . . . 3.3.1 Storia . . . . . . . . . . . . . . . . . . 3.3.2 A cosa serve l’XML . . . . . . . . . . . 3.3.3 Sintassi . . . . . . . . . . . . . . . . . 3.3.4 I Tag . . . . . . . . . . . . . . . . . . . 3.3.5 XML Well Formed e Valid . . . . . . . 3.3.6 Strumenti aggiuntivi per l’XML . . . . 3.3.7 XML e le pagine web: XHTML . . . . XSL . . . . . . . . . . . . . . . . . . . . . . . 3.4.1 Storia . . . . . . . . . . . . . . . . . . 3.4.2 Struttura . . . . . . . . . . . . . . . . XSLT . . . . . . . . . . . . . . . . . . . . . . 3.5.1 Storia . . . . . . . . . . . . . . . . . . 3.5.2 Struttura . . . . . . . . . . . . . . . . DOM . . . . . . . . . . . . . . . . . . . . . . . 3.6.1 Livelli, specifiche e raccomandazioni . . JavaScript . . . . . . . . . . . . . . . . . . . . 3.7.1 Storia . . . . . . . . . . . . . . . . . . 3.7.2 Java, JavaScript, e JScript . . . . . . . 3.7.3 Aspetti strutturali . . . . . . . . . . . 3.7.4 Uso . . . . . . . . . . . . . . . . . . . . 3.7.5 Filiazioni . . . . . . . . . . . . . . . . AJAX . . . . . . . . . . . . . . . . . . . . . . 3.8.1 Storia . . . . . . . . . . . . . . . . . . 3.8.2 Principali utilizzi . . . . . . . . . . . . 3.8.3 Confronto con applicazioni tradizionali 3.8.4 Pro e contro . . . . . . . . . . . . . . . RDF . . . . . . . . . . . . . . . . . . . . . . . 3.9.1 Storia . . . . . . . . . . . . . . . . . . 3.9.2 Principi e Data Model . . . . . . . . . 3.9.3 Rappresentazione fisica del modello . . SVG . . . . . . . . . . . . . . . . . . . . . . . 3.10.1 Storia degli sviluppi . . . . . . . . . . . 3.10.2 Caratteristiche . . . . . . . . . . . . . 3.10.3 Utilizzo . . . . . . . . . . . . . . . . . 3.10.4 Grafica vettoriale scalabile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 28 29 30 30 31 31 32 32 32 33 33 35 35 36 36 36 37 37 39 40 40 40 41 41 42 43 43 44 45 46 49 49 50 51 51 52 52 53 54 54 5 4 Web 2.0 4.1 Analisi storica . . . . . . . . . . . . . . . . . . 4.2 Differenze e confronti con il Web 1.0 . . . . . 4.3 Dai siti web personali ai blog . . . . . . . . . 4.4 Dai sistemi per Content Management ai Wiki 4.5 Dalla stickiness al syndication . . . . . . . . . 4.6 Strumenti per la creazione di contenuti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 57 58 58 59 59 59 6 Introduzione In questa relazione presentiamo il lavoro che abbiamo svolto per sostenere l’esame del corso di Elaborazione Testi Letterali. Richiesta principale è la realizzazione di un blog, in cui sono presentati alcuni argomenti collegati al W3C Schools, di cui parleremo in dettaglio più avanti. In una prima parte presentiamo alcuni concetti generali che stanno alla base degli strumenti che abbiamo utilizzato per realizzare il blog, vengono poi presentati gli applicativi utili alla presentazione sul web di questi argomenti e alcuni accenni agli sviluppi sociali che questi comportano. Argomenti principali di questa sezione sono i blog, gli strumenti offerti da google, alcuni metalinguaggi molto utilizzati in questo periodo e gli sviluppi che hanno portato all’ideazione del termine Web 2.0. Nella relazione saranno riportati solo i link indispensabili per raggiungere i siti e i blog relativi al progetto. Per una ulteriore bibliografia, link utili, referenze, approfondimenti, invitiamo il lettore a consultare il blog, dove troverà commentati i link che abbiamo ritenuto utile segnalare per integrare il nostro lavoro. Questa relazione è da considerarsi integrativa per analizzare il nostro lavoro riguardo la realizzazione del blog, ma è più sintetica di quanto invece è presente nel sito riguardo gli argomenti centrali. Invitiamo pertanto il lettore ad utilizzare parallelamente entrambi gli strumenti. I concetti che abbiamo presentato nel nostro blog, sono stati raccolti sui siti ufficali o su alcuni tra i più aggiornati ed attendibili, come: • http://www.w3c.it/ • http://www.w3.org/ • http://en.wikipedia.org/ Abbiamo poi studiato e rielaborato questi argomenti senza la pretesa di fornire una guida completa, ma fornendo piuttosto al lettore gli elementi essenziali per cominciare ad interfacciarsi con questi concetti. Per quanto possibile è stato cercato di presentare ogni argomento con una breve descrizione introduttiva, un paragrafo riguardo la storia, una descrizione più dettagliata riguardante alla specificità dell’oggetto in questione, 7 8 il funzionamento e i possibili sviluppi futuri. Ogni pagina del blog si chiude con alcuni link bibliografici, utili per eventuali approfondimenti, esempi, referenze e tutorial. 0.1 WordPress, Altervista e blogspot La scelta della piattaforma WordPress non è stata casuale, infatti ci è sembrato opportuno parlare di concetti inerenti al Web 2.0 e al W3C, mettendoli anche in pratica. WordPress infatti raduna molte tecnologie che presentiamo, come contenuto, all’interno del nostro blog. Inoltre WordPress è un ottimo pacchetto, gratuito, che offre la possibilità di creare un blog molto efficace e professionale. Citando quanto presente nella home della release in italiano del progetto WP: “WordPress è nato dal desiderio di un sistema di pubblicazione personale, elegante e ben strutturato, costruito attorno a PHP e MySQL e licenziato sotto licenza GPL. È il successore ufficiale di b2/cafelog e offre una potente piattaforma di editoria personale, fornita di un ottimo insieme di funzionalità progettate per rendere l’esperienza di editoria virtuale su Internet la più semplice, piacevole e attraente possibile.” Il nostro blog è stato installato su uno spazio web gratuito (progettoetl.altervista.org), perchè ci troviamo in pieno accordo con la possibilità di un internet gratuito e raggiungibile a tutti e questo chiaramente favorisce la condivisione di conoscenze tra gli utenti di internet. L’installazione della piattaforma è piuttosto semplice: si tratta di uploadare tramite protocollo ftp i file necessari ed eseguire uno script php che esegue una formattazione e configurazione guidata del database MySql. Tramite il pannello di amministrazione è possibile poi personalizzare il proprio blog tramite numerosi temi e svariati plug-in. La pagina “Gli Autori” linka ai blog dei redattori, nei quali sono contenute le informazioni personali, i commenti, i curriculum vitae, etc. Capitolo 1 L’ambiente di lavoro: il blog 1.1 Definizione e origini del termine In informatica, e più propriamente nel gergo di Internet, un blog è un diario in rete. Il termine blog è la contrazione di web-log, ovver “traccia su rete”. Il fenomeno ha iniziato a prendere piede nel 1997 in America; il 18 luglio 1997, è stato scelto come data di nascita simbolica del blog, riferendosi allo sviluppo, da parte dello statunitense Dave Winer del software che ne permette la pubblicazione (si parla di proto-blog), mentre il primo blog è stato effettivamente pubblicato il 23 dicembre dello stesso anno, grazie a Jorn Barger, un commerciante americano appassionato di caccia, che decise di aprire una propria pagina personale per condividere i risultati delle sue ricerche sul web riguardo al suo hobby. Nel 2001 è divenuto di moda anche in Italia, con la nascita dei primi servizi gratuiti dedicati alla gestione di blog. 1.2 Cenni storici Il termine weblog è stato creato da Barger nel dicembre del 1997, e apparve per la prima volta nel suo sito personale. La versione tronca blog è stata creata da Peter Merholz che nel 1999 ha usato la frase “we blog” nel suo sito, dando origine al verbo “to blog” (ovvero: bloggare, scrivere un blog). Attraverso i blog la possibilità di pubblicare documenti su Internet si è evoluta da privilegio di pochi (università e centri di ricerca) a diritto di tutti (i blogger, appunto). I blog hanno anche alcune somiglianze con i wiki, nel modo in cui vengono gestiti gli aggiornamenti, favoriti i commenti dei lettori e stimolate le nascite di community. 9 10 1.3 CAPITOLO 1. L’AMBIENTE DI LAVORO: IL BLOG Strutturazione e funzionamento La struttura è costituita, solitamente, da un programma di pubblicazione guidata che consente di creare automaticamente una pagina web, anche senza conoscere necessariamente il linguaggio HTML; questa struttura può essere personalizzata con vesti grafiche dette template (ne esistono diverse centinaia). Il blog permette a chiunque sia in possesso di una connessione internet di creare facilmente un sito in cui pubblicare storie, informazioni e opinioni in completa autonomia. Ogni articolo è generalmente legato ad un thread, in cui i lettori possono scrivere i loro commenti e lasciare messaggi all’autore. Il blog è un luogo dove si può (virtualmente) stare insieme agli altri e dove in genere si può esprimere liberamente la propria opinione. È un sito (web), gestito in modo autonomo dove si tiene traccia (log) dei pensieri; quasi una sorta di diario personale. Ciascuno vi scrive, in tempo reale, le proprie idee e riflessioni. In questo luogo cibernetico si possono pubblicare notizie, informazioni e storie di ogni genere, aggiungendo, se si vuole, anche dei link a siti di proprio interesse: la sezione che contiene links ad altri blog è definita blogroll. Tramite il blog si viene in contatto con persone lontane fisicamente ma spesso vicine alle proprie idee e ai propri punti di vista. Con esse si condividono i pensieri, le riflessioni su diverse situazioni poichè raramente si tratta di siti monotematici. Si può esprimere la propria creatività liberamente, interagendo in modo diretto con gli altri blogger. Un blogger è colui che scrive e gestisce un blog, mentre l’insieme di tutti i blog viene detto blogsfera o blogosfera (in inglese, blogsphere). All’interno del blog ogni articolo viene numerato e può essere indicato univocamente attraverso un permalink, ovvero un link che punta direttamente a quell’articolo. In certi casi possono esserci più blogger che scrivono per un solo blog. In alcuni casi esistono siti (come Slashdot) simili a blog, però sono aperti a tutti. Alcuni blog si possono considerare veri e propri diari personali e/o collettivi, nel senso che sono utilizzati per mettere on-line le storie personali e i momenti importanti della propria vita. In questo contesto la riservatezza, il privato, il personale va verso la collettività. 1.4. TIPOLOGIE DI BLOG 1.4 11 Tipologie di blog La maggior parte dei blogger usa il blog come diario personale, per far conoscere i propri sentimenti e le proprie opinioni ai lettori che hanno a loro volta un blog, ma anche sconosciuti che vagano per la blogsfera (o Blogosfera) passando di link in link. Sono molto diffusi anche i blog tenuti da giornalisti, oppure i blog umoristici e autoironici, impegnati, satirici, “televisivi” o umoristici; non mancano infine blog di scrittori o di poesia. Alcuni blog includono interviste o vere e proprie trasmissioni radiofoniche. 1.5 Come creare un blog Dal 2001 ad oggi sono nati molti servizi in italiano che permettono di gestire un blog gratuitamente. Tra i più utilizzati citiamo: Blogger, Splinder, Clarence, Blogsome, Tiscali, Il Cannocchiale, Iobloggo, Bloggerbash, Blogdrops, Libero, Windows Live Spaces, MySpace. Esistono poi alcuni network autogestiti. Chi invece vuole creare un blog da gestire in totale autonomia, può utilizzare una delle numerose piattaforme di gestione blog; le più diffuse sono: Wordpress, MovableType, TypePad, dBlog CMS Open Source, Nucleus, Pivot, Dotclear, Drupal. Queste piattaforme possono essere utilizzate su un dominio proprio (anche con hosting a pagamento), per generare un servizio maggiormente personalizzato. 12 CAPITOLO 1. L’AMBIENTE DI LAVORO: IL BLOG Capitolo 2 Google Google è un motore di ricerca per Internet che non si limita a catalogare il World Wide Web, ma si occupa anche di immagini, foto, newsgroup, notizie, mappe, video, oltre a mantenere una copia cache di tutte le pagine che conosce. Con un indice che comprende più di otto miliardi di pagine Web, è riconosciuto come il più grande e affidabile tra i motori di ricerca, occupandosi dell’80% di tutte le ricerche effettuate su internet attraverso il suo sito e avendo clienti come AOL o Microsoft. La popolarità di Google è talmente grande che nella lingua inglese è nato il verbo “to google” col significato di ”fare una ricerca sul web”. Allo stesso modo in tedesco è nato il verbo “googeln”, con lo stesso significato. 2.1 Storia dell’azienda Google è stato creato nel 1998 da Larry Page e Sergey Brin, allora studenti dell’Università di Stanford, dopo aver sviluppato la teoria secondo cui un motore di ricerca basato sull’analisi matematica delle relazioni tra siti web avrebbe prodotto risultati migliori rispetto alle tecniche empiriche usate precedentemente. Convinti che le pagine citate con un maggior numero di link fossero le più importanti e meritevoli (Teoria delle Reti), decisero di approfondire la loro teoria all’interno dei loro studi e posero le basi per il loro motore di ricerca. Fondarono l’azienda nel settembre del 1998. L’azienda, che ha il proprio quartier generale a Mountain View in California, nel cosiddetto Googleplex, è al momento gestita con capitali privati, i maggiori detentori di quote sono Kleiner Perkins Caufield & Byers and Sequoia Capital. Nell’ottobre 2003, discutendo una possibile offerta pubblica iniziale la società fu contattata da Microsoft a proposito di un possibile 13 14 CAPITOLO 2. GOOGLE accordo o di una fusione; Google rifiutò l’offerta. Nel gennaio 2004 è stata annunciata l’assunzione di Morgan Stanley e Goldman Sachs Group per organizzare l’offerta pubblica iniziale, che ha raggiunto i 4 miliardi di dollari americani, dando a Google un capitale di mercato di 12 miliardi di dollari. Il 9 marzo 2006, Google ha acquistato dalla compagnia Upstartle Writely un word processor utilizzabile tramite Browser, che permette il salvataggio dei files prodotti in formati assai diffusi, permettendo una facile interoperabilità con vari Software di produttività personale. Infine, il 9 ottobre 2006, Google ha rilevato il portale per video amatoriali YouTube, vero fenomeno di massa tra i giovani per la facilità di condivisione di video amatoriali con circa 20 milioni di visitatori al mese, per l’astronomica cifra di 1,65 miliardi di dollari. 2.2 Etimologia La parola “Google” deriva da googol, termine coniato da Milton Sirotta (nipote all’epoca minorenne del matematico americano Edward Kasner) nel 1938, per riferirsi al numero rappresentato da 1 seguito da 100 zeri. L’uso della parola fatto da Google riflette la volontà della società di organizzare l’immensa quantità di informazioni disponibili sul Web. Inoltre il termine viene associato con un gioco di parole alla parola ”binocolo” (in inglese goggles) infatti il motore permette di ”guardare da vicino” la rete. La parola Google infatti richiama ad una fantomatica formula magica capace di trovare qualsiasi cosa sul web. Riguardo alla derivazione della formula esistono tesi opposte e contrastanti, ma la più comune la attribuisce ad una popolazione africana che usava la formula come buon auspicio per la caccia. 2.3 I server Google utilizza un parco macchine con più di 450.000 computer GNU/Linux per rispondere alle ricerche e catalogare il web. La catalogazione è fatta da un programma (googlebot) che richiede periodicamente nuove copie delle pagine web che conosce. I link in queste pagine vengono esaminati per scoprire nuove pagine e aggiungerle nel database, il cui indice, insieme alla cache, occupa milioni di terabyte. 2.4. OTTIMIZZAZIONE 2.4 15 Ottimizzazione Da quando Google è diventato uno dei motori di ricerca più popolari, molti webmaster hanno cominciato a seguire e cercare di spiegare i cambiamenti nel posizionamento (rank) del loro sito. Una nuova categoria professionale è nata per assistere i webmaster e le aziende nel migliorare la posizione dei loro siti nei risultati delle ricerche su Google, cosı̀ come su altri motori di ricerca. Questi consulenti si occupano di un’attività chiamata “ottimizzazione per i motori di ricerca” (dall’acronimo statunitense SEO: Search Engine Optimization) che si propone di creare pagine e siti che rispettino le regole (i “gusti”) dei motori di ricerca riuscendo a migliorare la propria posizione nei risultati delle ricerche. Sul web si possono trovare discussioni su forum o siti che fanno riferimento a fenomeni come la Google dance. Si riferisce a un fenomeno, ora non più presente, che si verificava in un periodo di pochi giorni (circa ogni mese) in cui Google aggiornava il suo database e di conseguenza i risultati delle ricerche. Fra una dance e l’altra i risultati rimanevano inalterati. Il termine dance si riferiva al fatto che per alcuni giorni i risultati delle ricerche variavano (danzavano quindi) continuamente prima di assestarsi. Nell’estate del 2003 Google ha cambiato le sue abitudini di catalogazione limitando gli effetti della “danza”: ora i risultati delle ricerche variano in modo dinamico e continuativo senza nessuno stravolgimento periodico. Una delle sfide più importanti di Google, ora che il motore è diventato popolare tra gli utenti del web, è impedire che soggetti spregiudicati riescano a forzare le debolezze dell’algoritmo per sovvertire i risultati delle ricerche a loro vantaggio. Molti consulenti di ottimizzazione scarsamente professionali hanno utilizzato tecniche artificiose e dannose per influire sul posizionamento dei siti di alcuni loro clienti. Google è riuscito a limitare molti di questi tentativi raffinando il proprio algoritmo per individuare i siti che realizzano abusi e limitarne la rilevanza nei risultati (o addirittura rimuovere questi siti dai suoi archivi). Un corretto posizionamento fra i risultati di Google può portare a ritorni economici elevati, soprattutto per i siti di e-commerce. La scelta di un consulente serio è spesso strategica per la sopravvivenza o il successo di un sito. Per questi motivi, Google ha pubblicato un insieme di linee guida per aiutare i proprietari di siti a capire come individuare i consulenti professionali e come evitare truffe e raggiri da parte di operatori scorretti. 16 2.5 CAPITOLO 2. GOOGLE Strumenti e servizi di Google Molti degli strumenti offerti da google, possono rientrare nelle definizioni di web 2.0. Il numero di questi strumenti cresce di mese in mese. Ci limitiamo a descriverne i primi ed elencarne i più utilizzati, con qualche parola di spiegazione sul funzionamento e sulle potenzialità di tali strumenti. Rimandiamo alla bibliografia per un elenco più aggiornato. 2.5.1 PageRank PageRank è un servizio di Google per dare informazioni sulla “affidabilità” della pagina grazie al suo grado di visita. 2.5.2 AdWords Adwords è un semplice servizio di Google che permette la pubblicazione sul web degli annunci riguardanti il proprio sito. Costi per click e tetti massimi impostabili. Viene anche denominato “Pay per click” (pubblicità in cui si pagano i click). Il costo per click dipende anche dalla frequenza con cui la parola prescelta viene mediamente cercata. 2.5.3 AdSense È il servizio di Google che permette di mostrare sul proprio sito gli annunci pubblicati da altri siti tramite Adwords. Adsense permette di guadagnare una determinata cifra per clik sulla publicità messa nel proprio sito. In genere questo guadagno si basa su due valori principali, le impressioni (più visite ci sono e più questo valore è alto, e maggiore sarà il guadagno per clik) e i clik (un tot cent di dollaro o più per ogni clik sulla pubblicità) 2.5.4 Alcune opzioni di ricerca avanzata Ricerca con operatori “+” e “-” Per cercare testi dove compaiono in sequenza (una subito dopo l’altra) due o più parole chiave occorre separarle col segno “+”: es. l’istruzione “wikipedia+google” fa comparire le pagine in cui compare la parola wikipedia subito seguita da google. Nelle posizioni più basse (con minore ranking) si trovano le pagine che risultano anche da una ricerca senza l’operatore “+” che non è esattamente l’operatore booleano ”AND”, in quanto oltre a cercare entrambi i termini nel testo, li cerca uno di seguito all’altro. Per cercare invece solo i risultati che contengono le due parole in sequenza si usano le virgolette (”), si 2.5. STRUMENTI E SERVIZI DI GOOGLE 17 scrive quindi la frase desiderata tra virgolette, e google troverà solo i risultati che contengono l’intera frase. In maniera complementare, l’operatore “-” esclude i testi che contengono una certa parola chiave, e funziona da filtro: es. ”wikipedia -google” ricerca alcune pagine di Wikipedia, in ciascuna delle quali non compare la parola “google”. Ricerca interna ad un sito Per effettuare una ricerca di parole chiave all’interno di un sito occorre digitare l’istruzione: site:nomesito.com uno spazio bianco e le parole chiave. Un altro modo è scrivere nella barra degli indirizzi: www.google.it/custom?domain=www.nomesito Compare una barra di Google con un opzione selezionabile per la ricerca all’interno del sito richiesto. Ricerca di una definizione Per cercare la definizione di un termine o il significato di un acronimo basta digitare nel campo di ricerca di Google “define: termine” dove “termine” indica la parola da cercare. Ad esempio ”define: TCP” darà come risultato la definizione della sigla. I risultati di Google-define spesso sono di Wikipedia. Conversione unità di misura e valute Digitando “1Û to USD” google convertirà il valore di un euro in dollari americani. Funziona con tutte le valute e con le unità di misura di tutto il mondo. Calcoli matematici e costanti Si può ottenere il risultato di un calcolo anche complicato digitandolo nel capo di ricerca utilizzando i comuni operatori matematici. Esempi: 9 ∗ 2, (5 + 6)/8, 21 6, sqr81 Si possono anche introdurre le costanti matematiche e fisiche: c, e, G, h, i, k, pi, phi Indicizzare una pagina web Occorre scrivere nella barra degli indirizzi www.google.it/addurl.html e nella pagina aperta digitare URL della pagina web e parole chiave. Se Google indicizza la pagina, digitando le parole chiave scelte compare fra i risultati. 18 CAPITOLO 2. GOOGLE Altre funzionalità particolari del motore di ricerca, anche in fase di beta testing, si trovano all’indirizzo labs.google.com. 2.5.5 Descrizione strumenti Di seguito riportiamo un elenco di alcuni tra gli strumenti più utilizzati, con una breve descrizione. • Blogger - è uno dei siti più utilizzati per creare un blog autoconfigurante, con la possibilità di personalizzare struttura, temi e contenuti. In pochi minuti è possibile ottenere un blog semplice e funzionale, molto sintetico e semplice nella gestione e nell’utilizzo. Un aspetto negativo è la scarsa possibilità di sviluppo personale. • Google Apps - pacchetto di applicazioni in stile web 2.0. Gratuito per utenti normali ed istituzioni scolastiche, a pagamento per imprese. Questo pacchetto software offre la possibilità di registrare un dominio (10$ per 1 anno) nel quale viene creata una pagina che contiene i link necessari a Gmail, Google Talk, Google Calendar, Google Docs, Page Creator and Start Page. Questo pacchetto software è utilizzabile online, senza la necessità di scaricare nulla. • Google Books - motore di ricerca finalizzato a libri. I testi sono visualizzabili per una lettura on-line (non è possibile ovviamente scaricarli sul proprio pc) ed è possibile (se loggati con il proprio account di google) creare una vera e propria libreria virtuale, tramite il sistema di link. • Google Analytics - questo tool permette di aumentare e monitorare il traffico sul proprio sito al fine di migliorarne l’efficacia e aumentare i guadagni. • Google Calendar - permette di oganizzare i propri impegni e condividere con altri utenti gli eventi di comune interesse. Inoltre è possibile importare ed esportare calendari nei formati più utilizzati (ad esempio iCal o ics), ma anche utilizzare dei calendari “pubblici” come quelli relativi alle festività. • Google Code Search - motore di ricerca finalizzato al codice di dominio pubblico. • Google Desktop search - ricerca nel computer con la stessa rapidità e semplicità con cui si cerca sul Web con Google.it, avvia applicazioni e file con pochissimi clic. 2.5. STRUMENTI E SERVIZI DI GOOGLE 19 • Google Earth - combina la potenza delle ricerche di Google con le immagini satellitari, cartine, terreni e costruzioni 3D per portare le informazioni geografiche a portata di mouse in pochi clik. Diventa quindi possibile volare sopra la propria casa, semplicemente inserendo l’indirizzo, ricercare scuole, posteggi, parchi, ristoranti, hotel e percorsi stradali. Si può inclinare e ruotare la vista per visionare in dettaglio il terreno tridimensionale o perfino osservare il cielo e le costellazioni celesti. Si possono poi anche salvare e condividere le proprie ricerche. Inoltre è possibile visualizzare direttamente fotografie e commenti per moltissime località e ricercare diverse strutture e servizi su tutto il territorio. • Google Product Search (ex Froogle) - motore di ricerca per compra vendita di prodotti (equivalente ad eBay). • Google Labs - raccoglie feedback da parte di utenti riguardo i nuovi prodotti google in fase di sviluppo. • Google Maps - è la versione semplificata di Google Earth, consultabile on-line. Vi si possono osservare mappe della terra, con possibilità di calcolare percorsi, distanze. Sono inoltre possibili diverse visualizzazioni utilizzando immagini satellitari oppure cartine, oppure una visualizzazione ibrida. • Google Adsense - permette di ottenere un guadagno derivante, in base al contratto stipulato, in proporzione al numero di visite e al numero di clic sulla pubblicità inserita all’interno del proprio sito web. • Google Mars - collezione di immagini satellitari e link su attività delle sonde sulla superficie del pianeta. 3 possibili visualizzazioni: elevation, infrared e visible. • Google Moon - collezione di immagini satellitari e raccolta di link su attività delle sonde, delle missioni lunari Apollo sulla superficie del pianeta. 3 possibili visualizzazioni: elevation, apollo e visible. Inoltre sono disponibile due cartine, una geologica e una topografica, con molte informazioni relative al satellite. • Google Notebook - raccoglie informazioni utili: si possono annotare testi, immagini e link dalle pagine web senza abbandonare la finestra del proprio browser. Organizza le annotazioni: si possono creare serie di annotazioni, divise in sezioni, si possono anche organizzare tramite “drag-and-drop”. Accesso da ovunque: si può accedere alle note di 20 CAPITOLO 2. GOOGLE google da qualsiasi computer utilizzando l’account google. Si possono pubblicare, condividerle e renderle pubbliche. Ora sono anche consultabili da telefono mobile utilizzando l’indirizzo http://www.google.com/notebook/m. • Google Pack - pacchetto software, scaricabile gratuitamente. Comprende: Google Earth, Google Toolbar, Norton Security Scan, Spyware Doctor Starter Edition, Google Desktop, Picasa, Firefox, Google Photos Screensaver, Adobe Reader, Google Talk, Skype, RealPlayer, StarOffice. • Google Pages - editor di pagine web online, con diversi tool facili da includere e molti temi da applicare. Semplice, essenziale e facile all’uso. • Picasa - applicazione per organizzare ed editare foto, fornisce opzioni di libreria fotografica e semplici effetti. • Google Reader - news aggregator in grado di leggere Atomi e feed RSS. Permette all’utente di ricercare, importare e sottoscriversi a feed. Il servizio include inoltre audio enclosures nella pagina. Notevoli miglioramenti sono stati fatti nell’ottobre 2006. • Google Scholar - ricerca tra le pubblicazioni accademiche e scientifiche in lingua inglese • Google SketchUp - semplice programma per disegnare in 3D con una semplice interfaccia e integrazione diretta con Google Earth. • Google Suggest - auto-completamento dei risultati mentre si compie una ricerca per fornire i più popolari. • Google Talk - applicazione per VoIP e instant messaging. Consiste di entrambi i servizi e un client utilizzato per connettersi al servizio, che utilizza il protocollo XMPP protocol. • Google Toolbar - toolbar per web browser con opzioni come Google Search box, protezione da phishing, pop-up blocker e strumenti per i possessori di siti web per creare buttoni. • Google Video - motore di ricerca per video e negozi online per clips sottoscritte internamente da compagnie e pubblico generico. Le principali collaborazioni di video google includono accordi con CBS, NHL e la NBA. Ricerca inoltre video inseriti all’interno di YouTube. 2.5. STRUMENTI E SERVIZI DI GOOGLE 21 • Google Web Toolkit (in inglese) - sito per gli sviluppatori interessati agli sviluppi di tool collegati a Google. Il sito contiene codice Open Source e una lista dei loro servizi API. • iGoogle - homepage personalizzabile, che può contenere Web feeds e Google Gadgets (da maggio 2005). 22 CAPITOLO 2. GOOGLE Capitolo 3 W3Schools 3.1 W3C Il World Wide Web Consortium (W3C) è la principale organizzazione internazionale per gli standard per il World Wide Web (abbreviato con WWW o W3). Esso è organizzato come un consorzio, dove le organizzazioni membo mantengono a tempo pieno dipendenti che hanno lo scopo di collaborare con obiettivo comune gli standard per il W3. 3.1.1 Storia Nell’ottobre del 1994 Tim Berners Lee, considerato padre del Web, fondò al MIT (Massachusset Institute of Technlogy), in collaborazione con il CERN (il laboratorio dal quale proveniva), un’associazione di nome World Wide Web Consortium (abbreviato W3C), con lo scopo di migliorare gli esistenti protocolli e linguaggi per il WWW e di aiutare il Web a sviluppare tutte le sue potenzialità. Nell’aprile del 1995 l’INRIA (Istituto Nazionale di Ricerca Informatica ed Automatica francese) divenne il primo membro europeo dell’organizzazione. Nel 1996 approdò anche l’Asia, grazie alla Keio University of Japan. Nel 2003 l’ERCIM (Il Consorzio Europeo di Ricerca in Informatica e Matematica) prese il ruolo di host europeo del W3C dall’INRIA (che è l’istituzione francese dell’ERCIM). Il W3C è ancora guidato da Tim Berners-Lee, il creatore del primo web browser e il principale autore delle specifiche originali di URL (Uniform Resource Locator), di HTTP (HyperText Transfer Protocol) e di HTML (HyperText Markup Language), che sono le principali tecnologie che formano le basi del World Wide Web. 23 24 CAPITOLO 3. W3SCHOOLS A marzo 2007, il W3C aveva superato i 440 membri ed è sempre aperto all’adesione di nuove organizzazioni. Il W3C si impegna anche nel campo dell’educazione e della ricerca, sviluppa software e funge da “open forum” per discussioni riguardanti il Web. 3.1.2 Membri Attualmente il W3C comprende circa 450 membri, tra questi: • aziende informatiche del calibro di Microsoft, Oracle, IBM, Sun Microsystems, Apple, Macromedia, Adobe, Google, Intel, Cisco Systems, Sony, Siemens e aziende telefoniche come Ericsson, Nokia, NTT DoCoMo; • società di grandi dimensioni appartenenti ai più svariati settori, ma strategicamente interessate alla crescita del Web: American Express, Agfa-Gevaert N. V., Boeing, ChevronTexaco; • associazioni come la Mozilla Foundation e The Open Group; • università e istituzioni per la ricerca: innanzitutto il CSAIL del MIT, Inria e altri membri dell’ERCIM e Keio University; altre istituzioni ospitano gli uffici nazionali del Consorzio (per l’Italia l’ISTI di Pisa del CNR); sono numerose le università e gli istituti di ricerca tra i più prestigiosi:, come l’Academia Sinica, la Library of Congress, il Los Alamos National Laboratory, il National Institute of Standards and Technology. L’importanza dei suoi membri fa del W3C un organismo di grande autorevolezza e molti sono portati a chiamarlo il Consorzio, per antonomasia. 3.1.3 Principali obiettivi Il web ormai non è più uno strumento per “appassionati”, ma è diventato parte integrante della vita comune dell’essere umano. Attualmente esistono diversi tipi di apparecchi (come cellulari e PDA) che accedono ad internet. Ciò è possibile solo grazie ad un “comune linguaggio di comunicazione” (nello specifico protocollo di comunicazione e linguaggio in cui è scritto il file) tra server, PC ed altri dispositivi. Il W3C si occupa di aggiornare e creare queste specifiche. Il Web ha un potenziale praticamente illimitato, ed apre nuove strade anche ai portatori di handicap. Il W3C cerca di studiare i modi per rendere quanto più agevole l’accesso al web. 3.1. W3C 25 Il web è unico perchè è libero. Chiunque può creare un documento html e metterlo gratuitamente online. Il W3C cerca di evitare che interessi di qualsiasi genere possano porre un freno a questa assoluta libertà. Comprensibile quindi che il motto del Consorzio sia “To lead the World Wide Web to its full potential by developing protocols and guidelines that ensure long-term growth for the Web”. 3.1.4 Organizzazione interna L’Advisory Committee è la mente dell’organizzazione. È un organismo formato da un membro per ogni società iscritta al W3C. Si occupa di rivedere i piani del W3C, effettuare a grandi linee revisioni delle tecnologie attualmente esistenti, eleggere i membri dell’Advisory Board. Il W3C Team può essere visto come le braccia dell’organizzazione. È formato da professionisti pagati e da membri inviati dalle società membro. Si occupa di organizzare e gestire le attività del gruppo. L’Advisory Board ha solo un ruolo di consigliere e non ha alcun potere decisionale. Essa ha il compito di risolvere controversie legali che potrebbero presentarsi. È formata da 9 membri in carica per 2 anni. Le elezioni sono state organizzate in modo da far decadere 4 o 5 membri l’anno. Il presidente di questo organismo è chiamato Chairman. Egli può invitare membri del Team a partecipare ad una riunione. L’elezione dei membri avviene quando il Chairman manda un avviso all’Advisory Committee. Tale avviso deve contenere il numero di persone da eleggere, il tempo massimo per farlo e l’indirizzo a cui spedire i risultati. Tali risultati devono contenere un’informativa sul candidato e non possono essere mandati senza il consenso dello stesso. 3.1.5 Come lavora Per comodità, le attività del W3C sono state divise in 4 aree di lavoro (in gergo chiamate domini): • Architecture Domain: ha il compito di gestire la tecnologia che è alla base del web. • Interaction Domain: cerca di semplificare l’interazione uomo-informazioni ed il modo di connettersi al web. • Technology and Society Domain: ha il ruolo di adattare l’infrastruttura tecnologica agli interessi sociali, legali e pubblici. 26 CAPITOLO 3. W3SCHOOLS • Web Accessibility Initiative (WAI): il suo lavoro è garantire che chiunque possa sfruttare appieno le potenzialità del web. Il suo lavoro si articola in 5 aree tematiche: tecnologia, linee guida, strumenti, educazione ed aiuto ai bisognosi, ricerca e sviluppo. Per questo esiste la Quality Assurrance che formalizza i progressi fatti dai domini in documenti (chiamati Recomendations) che sono la principale fonte d’informazione per chiunque voglia creare nel web, e la Patent Policy che si assicura che questi progressi non violino alcun diritto d’autore o brevetto. 3.1.6 Recommendations La definizione di uno standard nell’ambito del W3C passa attraverso gli stadi di Working Draft, Last Call, Proposed Recommendation e Candidate Recommendation e si conclude con la pubblicazione di una Recommendation. Una Recommendation può venire migliorata da documenti di Errata pubblicati separatamente, fino a che il complesso delle modifiche non richiede di produrre una nuova versione della Recommendation. Ad es. XML è ora alla sua terza Edizione. Talora una Recommendation viene ritirata per essere riorganizzata attraverso un nuovo procedimento: questo è accaduto alla recommendation di RDF. Il W3C inoltre pubblica delle note (appunti) informative che non pretendono di essere trattate come standard. Il Consorzio non è un corpo di standardizzazione, come invece lo sono l’ISO, ITU-T o la Commissione Elettrotecnica Internazionale (IEC); esso si limita a sollecitare i produttori a seguire le sue raccomandazioni. Contrariamente ai corpi di standardizzazione W3C non ha un programma di certificazione e molti dei suoi standards de facto non definiscono formalmente i livelli di conformità. Conseguentemente molte Recommendations sono implementate solo parzialmente. 3.1.7 Progetti già realizzati Nell’ambito del W3C sono state proposte, discusse, definite e ufficializzate oltre 50 specifiche tecniche di vasta portata: • il protocollo HTTP, le specifiche per gli identificatori URI e i locatori URL per le risorse sul Web (in collaborazione con IETF); • lo strategico metalinguaggio XML; • i linguaggi per i documenti Web HTML, XHTML, MathML, SVG, XForms, XLink, Xpath, XPointer, SMIL, RDF, OWL, ; 3.1. W3C 27 • gli strumenti per il governo dello stile CSS, XSL e XSLT; • gli strumenti per il controllo dei contenuti come RDF ed OWL; • le linee guida per l’accessibilità WAI, i profili CC/PP, l’interfaccia DOM, le piattaforme P3P e PICS; • il formato grafico PNG e il formato per inchiostro digitale InkML. Nell’ambito del W3C vengono sviluppati prodotti software del genere open-source e pubblicazioni liberamente scaricabili finalizzati alla promozione e al sostegno del WWW. In particolare segnaliamo il browser/web-editor Amaya, la piattaforma Java per HTTP 1.1 Jigsaw, la Web API Libwww. Sono poi resi disponibili vari programmi validatori: per fogli di stile CSS, per HTML e i linguaggi collegati, per i sistemi di links, per RDF, per XMLSchema, etc . Il Consorzio organizza e promuove nell’ambito internazionale convegni e seminari volti a stimolare e discutere criticamente le prospettive del Web ed a stimolare l’adozione delle sue Recommendations e Guidelines. Considerando nel loro complesso le specifiche, gli strumenti e le attività promozionali sviluppati nell’ambito del W3C si deve sottolineare che essi compongono un disegno complessivo di grande portata e lungimiranza, basato su una lucida consapevolezza dell’importanza che il Web riveste per il mondo attuale. Molte delle iniziative del Consorzio hanno avuto pieno successo. Di fatto ha determinato vari standard ampiamente adottati, la cui autorevolezza ha dato ordine e organicità alla crescita del Web dagli ultimi anni ’90 ad oggi. Occorre dire che alcune Recommendations sono state definite dopo dibattiti molto accesi che hanno visto lo scontro di grandi interessi industriali contrapposti. In questo senso il Consorzio si può considerare un ambiente che favorisce il raggiungimento di compromessi molto utili per la crescita aperta del Web. Altre iniziative invece non hanno ottenuto le adesioni sperate e molti standard avanzati non si sono imposti. In particolare, mentre XML viene adottato da numerose nuove iniziative di interscambio di documenti e di interoperabilità, la transizione per i documenti più basilari da HTML ad XHTML, anche se va nella direzione della piena adozione di XML, sembra poco rilevante. 28 3.2 CAPITOLO 3. W3SCHOOLS HTML HTML è l’acronimo per Hyper Text Mark-Up Language, è il linguaggio di markup predominante per le pagine web, è un linguaggio usato per descrivere i documenti ipertestuali disponibili nel Web. Gran parte dei siti web presenti su Internet sono costituiti da codice HTML, questo codice è letto ed elaborato dal browser, il quale genera la pagina come noi la vediamo. L’HTML non è un linguaggio di programmazione, ma un linguaggio di markup, ossia descrive il contenuto, testuale e non, di una pagina web. HTML (.html) o HTM (.htm) è l’estensione comune dei documenti HTML. Esso fornisce una maniera per descrivere la struttura di informazioni basate su testo in un documento - denotando alcuni testi come “headings”, “paragraph”, “list” e cosı̀ via - e per supporto a questo testo con una forma interattiva, inmmagini e altri oggetti. L’HTML è scritto utilizzando “labels” (chiamate anche tags), contornate da parentesi angolari. L’HTML può anche descrivere, l’apparenza e la semantica di un documento e può anche includere codice di linguaggio di scripting incapsulato, che può modificare il comportamento del browser. 3.2.1 Storia e sviluppi È stato sviluppato alla fine degli anni ’80 da Tim Berners-Lee al CERN di Ginevra. Verso il 1994 ha avuto una forte diffusione, in seguito ai primi utilizzi commerciali del web. HTML è un linguaggio di pubblico dominio la cui sintassi è stabilita dal World Wide Web Consortium (W3C), e che è basato su un altro linguaggio avente scopi più generici, l’SGML. Durante gli anni l’HTML ha subito molte revisioni e miglioramenti, che sono stati indicati secondo la classica numerazione usata per descrivere le versioni dei software. Attualmente l’ultima versione disponibile è la versione 4.01, resa pubblica il 24 dicembre 1999. Da allora, da parte del W3C non è stata manifestata alcuna intenzione di apportare ulteriori modifiche all’HTML, poichè verrà presto sostituito dai nuovi linguaggi XHTML ed XML. Origini Nel 1980, il fisico Tim Berners-Lee, il quale era collaboratore indipendente presso il CERN, propose un prototipo chiamato ENQUIRE, un sistema di ipertesto per i ricercatori del CERN per condividere i propri documenti. Nel 1989, Berners-Lee e Robert Cailliau, avanzarono nuove proposte per un sistema per ipertesti rivolto alla rete internet, che forniva funzionalità simili 3.2. HTML 29 al precedente. Nell’anno successivo collaborarono ad una proposta congiunta, il WorldWideWeb (W3) project, che fu accettata dal CERN. Prime specifiche Dal 1991 comparvero i primi documenti pubblici, ad opera di Berners-Lee, che descrivevano l’HTML, i tags e alcuni elementi per il design. Berners-Lee considerò l’HTML inizialmente come una applicazione di SGML, ma non venne formalmente definito come tale fino ad una pubblicazione del 1993, dal IETF, che fù la prima proposta di specifica per l’HTML: “Berners-Lee and Dan Connolly’s ”Hypertext Markup Language (HTML)” Internet-Draft, which included an SGML Document Type Definition to define the grammar”. Da qui vennero poi sviluppate e presentate svariate versioni come “HTML+ (Hypertext Markup Format)”, da Dave Raggett, che standardizzava caratteristiche già implementate come tabelle e fill-out forms. Nel 1994, l’IETF creò l’HTML Working Group, che completò nel 1995 “HTML 2.0”, la prima specifica considerata e trattata come standard. Dal 1996, ulteriori sviluppi da parte di IETF e di World Wide Web Consortium (W3C) furono spinti da parte di venditori di software commerciale. Nel 2000 l’HTML divenne uno standard (ISO/IEC 15445:2000). L’ultima specifica è stata pubblicata dal W3C nell’articolo “HTML 4.01 Recommendation” nel 1999 e rivista nel 2001. 3.2.2 Sintassi e struttura Ogni documento ipertestuale scritto in HTML deve essere contenuto in un file, la cui estensione deve essere .htm o .html. L’atomo principale della sintassi di questo linguaggio è l’elemento. Gli elementi sono le strutture del linguaggio a cui è delegata la funzione di formattare i dati o indicare al Web browser delle informazioni. Ogni elemento è racchiuso all’interno di tag, uno di apertura ed uno di chiusura. Quest’ultimo, per certi elementi, è opzionale. I tag sono dei segnalini (markup) costituiti da una sequenza di caratteri, racchiusi da due parentesi angolari (Esempio: < br >; il tag di questo esempio serve per indicare un ritorno a capo). Spesso le informazioni su cui “agisce” il tag devono essere racchiuse fra un tag di apertura ed uno di chiusura, quest’ultimo indicato apponendo il carattere slash (/) dopo la parentesi angolare aperta (Esempio: < b >testo testo testo< /b >. In questo caso, il testo compreso tra questi due tag verrà visualizzato in grassetto dal browser. Un documento HTML comincia con l’indicazione della DTD (Document Type Definition), la quale dice al browser l’URL delle specifiche html che stia- 30 CAPITOLO 3. W3SCHOOLS mo utilizzando per il nostro documento (indicando quindi, implicitamente, quali elementi, attributi ed entità possiamo utilizzare). Tutte le informazioni contenute nel documento devono essere indicate tra i tag < HT M L > e < /HT M L >. All’interno di questi due tag la sintassi HTML permette due sezioni: una racchiusa tra i tag < HEAD > e < /HEAD >, ed una racchiusa tra i tag < BODY > e < /BODY >. All’interno della prima sezione sono indicate delle informazioni generali riguardanti l’intero documento e che non vengono visualizzate dal browser. All’interno della sezione body sono indicate tutte le informazioni effettivamente presenti nel documento. 3.2.3 L’editing Il tag principale dell’HTML è probabilmente il tag < A >, che descrive un collegamento (o link) ad un altro documento ipertestuale. Sui browser grafici è possibile chiedere al computer di passare alla risorsa indicata dal link semplicemente facendo un clic con il mouse. L’HTML prevede tag specifici per far fronte a molte necessità di formattazione e per fornire molte funzionalità, come ad esempio la visualizzazione di immagini e filmati, o l’accompagnamento audio della pagina, la visualizzazione di tabelle, la visualizzazione di liste, la gestione delle informazioni da passare ai motori di ricerca o ancora l’aspetto grafico del documento. Un’ulteriore ed importante caratteristica di HTML è che esso è stato concepito per definire il contenuto logico e non l’aspetto finale del documento. I dispositivi che possono accedere ad un documento HTML sono molteplici e non sempre dotati di potenti capacità grafiche. Proprio per questo gli sviluppatori di HTML hanno optato per un linguaggio che descrivesse dal punto di vista logico, piuttosto che grafico il contenuto dei documenti. Questo significa che non esiste alcuna garanzia che uno stesso documento venga visualizzato in egual modo su due dispositivi. Se da una parte questo ha imposto in passato dei forti limiti agli sviluppatori di pagine Web, ha dall’altro garantito la massima diffusione di Internet ed evitato che essa diventasse un medium di èlite. Al giorno d’oggi pochi sviluppatori si occupano di scrivere una pagina web direttamente nel linguaggio HTML. Questo compito è invece spesso delegato ad un software detto editor WYSIWYG, che permette allo sviluppatore di occuparsi dell’aspetto grafico finale della pagina. 3.2.4 Sviluppi Attualmente i documenti HTML incorporano molte tecnologie, che offrono la possibilità di aggiungere al documento ipertestuale delle animazioni inter- 3.3. XML 31 attive o degli effetti particolari. Si tratta di linguaggi come CSS, JavaScript o Java, o di altre applicazioni multimediali di animazione vettoriale o di streaming audio. In futuro HTML verrà probabilmente soppiantato dai suoi successori XHTML e XML, che rendono il codice estensibile; questo significa che in XHTML e in XML è possibile definire e usare nuovi elementi, in aggiunta a quelli definiti in HTML. 3.3 XML L’XML, acronimo di eXtensible Markup Language, ovvero “Linguaggio di marcatura estensibile” è un metalinguaggio creato e gestito dal World Wide Web Consortium (W3C), e più precisamente dal presidente di tale “consorzio”, Michael Sunshine. È una semplificazione e adattamento dell’SGML, da cui è nato nel 1998, e permette di definire la grammatica di diversi linguaggi specifici derivati. 3.3.1 Storia Internet ed il Web, per la loro stessa natura non centralizzata ed aperta a macchine e persone di diversa natura, hanno bisogno di standard per poter essere utilizzabili e per poter evolvere senza forzature. A questo scopo è stato istituito il Worl Wide Web Consortium nel dicembre del 1994 con l’obiettivo di definire standard accettati dai maggiori produttori di software per il Web, primo fra tutti il linguaggio HTML. Tuttavia, l’assalto commerciale ad Internet degli anni ’90 e la rapida diffusione del Web ha scatenato una delle lotte più agguerrite sul piano tecnico e commerciale: la guerra dei browser tra Netscape e Microsoft. Ciascun contendente introduceva, con ogni nuova versione del proprio browser, una estensione proprietaria all’HTML ufficiale. Il risultato di tale battaglia era che un sito Web che voleva utilizzare le estensioni proprietarie di un browser rischiava di risultare inaccessibile agli altri browser. La situazione peggiorò con l’introduzione del Dynamic HTML, le cui implementazioni erano quasi totalmente arbitrarie. In questo panorama il W3C era costretto a rincorrere le evoluzioni de facto dell’HTML e doveva scegliere quali caratteristiche standardizzare e quali invece lasciare fuori dalle specifiche ufficiali dell’HTML. In questo contesto cominciò a delinearsi la necessità di un linguaggio di markup che offrisse maggiore libertà nella definizione dei tag pur rimanendo nell’ambito del rispetto di uno standard. Fu cosı̀ che nel 1996 si costituı̀ 32 CAPITOLO 3. W3SCHOOLS l’XML Working Group nell’ambito del W3C. Lo scopo del gruppo di lavoro era quello di definire un linguaggio che salvasse gli standard e offrisse libertà di estensione. La ricerca partı̀, come era già accaduto in passato per l’HTML, dal linguaggio SGML (Standard Generalized Markup Language), un meta-linguaggio per la definizione di linguaggi di markup. Questo linguaggio risultava però troppo complesso per gli scopi della ricerca e pertanto fu snellito da alcune caratteristiche e semplificato in alcuni punti per renderlo adatto allo scopo. Nel dicembre ’97 le specifiche di XML venivano pubblicate come Proposed Recommendation. Tuttavia, anche se gli obiettivi iniziali della nascita di XML erano rivolti alla soluzione di un problema di standard per il Web, ben presto ci si accorse che XML non era limitato al solo contesto Web. Esso risulta essere abbastanza generale per poter essere utilizzato nei più disparati contesti: dalla definizione della struttura di documenti allo scambio di informazioni tra sistemi diversi, dalla rappresentazione di immagini alla definizione di formati di dati. Questo aspetto rappresentava una rivoluzione. 3.3.2 A cosa serve l’XML Rispetto all’HTML, l’XML ha uno scopo ben diverso: mentre il primo è un linguaggio creato principalmente per la descrizione e la formattazione di pagine web e, più in generale, di ipertesti, il secondo è un meta linguaggio utilizzato per creare nuovi linguaggi, atti a descrivere documenti strutturati. Mentre l’HTML ha un insieme ben definito e ristretto di tag, con l’XML è invece possibile definirne di propri a seconda delle esigenze. L’XML è oggi molto utilizzato anche come mezzo per l’esportazione di dati tra diversi DBMS (Database Management System). 3.3.3 Sintassi La prima riga indica la versione di XML in uso e specifica la codifica ISO per la corretta interpretazione dei dati. L’XML non riconosce i caratteri speciali all’interno di una sua struttura: le lettere accentate, la & (e commerciale) ed altri vanno quindi sostituiti con le rispettive sequenze Unicode. 3.3.4 I Tag L’XML, come l’HTML, utilizza dei marcatori, detti tag, per assegnare una semantica al testo. L’XML è molto rigido sulla sintassi da seguire rispetto all’HTML ed è pertanto necessario rispettare alcune regole: i tag non possono 3.3. XML 33 iniziare con numeri o caratteri speciali e non possono contenere spazi; i tag devono essere bilanciati, ovvero non sono consentiti errori di annidamento. Per poter essere correttamente interpretato da un browser, un documento XML deve essere ben formato, deve cioè possedere le seguenti caratteristiche: • Un Prologo, che è la prima istruzione che appare scritta nel documento. • Un unico Elemento radice (ovvero il nodo principale) che contiene tutti gli altri nodi del documento. • All’interno del documento tutti i Tag devono essere bilanciati. 3.3.5 XML Well Formed e Valid Un documento XML viene considerato Well Formed se non contiene errori di sintassi, tutti tag sono bilanciati ed esiste un unico nodo radice che contiene tutti gli altri. Se il documento è Well Formed e in più rispetta i requisiti strutturali definiti nel DTD o nell’XML Schema si dice Valid. 3.3.6 Strumenti aggiuntivi per l’XML L’XML non si esaurisce qui: esistono diversi strumenti legati all’XML, ognuno con uno scopo differente: • DTD (acronimo di Document Type Definition): è un documento attraverso cui si specificano le caratteristiche strutturali di un documento XML attraverso una serie di “regole grammaticali”. In particolare definisce l’insieme degli elementi del documento XML, le relazioni gerarchiche tra gli elementi, l’ordine di apparizione nel documento XML e quali elementi e quali attributi sono opzionali o meno. • XML Schema: come la DTD, serve a definire la struttura di un documento XML. Oggi il W3C consiglia di adottarlo al posto della DTD stessa, essendo una tecnica più nuova ed avanzata. La sua sigla è XSD, acronimo di XML Schema Definition. • XLink: serve a collegare in modo completo due documenti XML; al contrario dei classici collegamenti ipertestuali che conosciamo in HTML, XLink permette di creare link multidirezionali e semanticamente avanzati. • XSL (acronimo di eXtensible Stylesheet Language): è il linguaggio con cui si descrive il foglio di stile di un documento XML. La sua versione estesa è l’XSLT (dove la T sta per Trasformations). 34 CAPITOLO 3. W3SCHOOLS • XPath: è un linguaggio con cui è possibile individuare porzioni di un documento XML e sta alla base di altri strumenti per l’XML come XQuery. A supporto di questo scopo principale, fornisce anche elementari funzionalità per trattare stringhe, numeri e dati booleani. Il suo funzionamento si basa sulla creazione di un albero a partire dal documento e la sintassi succinta permette di indirizzare una specifica parte attraverso i nodi dell’albero con la semplice parola path. • XPointer: serve ad identificare univocamente precise porzioni di un documento XML; consente poi il loro accesso ad altri linguaggi o oggetti di interfaccia. • XQuery: è un linguaggio di query concepito per essere applicabile a qualsiasi sorta di documento XML e si basa sull’utilizzo di XPath per la specificazione di percorsi all’interno di documenti. XQuery ha funzionalità che consentono di poter attingere da fonti di dati multiple per la ricerca, per filtrare i documenti o riunire i contenuti di interesse. • SAX (Simple API for XML): è un’interfaccia di programmazione, implementata in numerosi linguaggi, che permette di leggere e modificare i documenti XML. Attraverso SAX è possibile implementare dei parser XML specifici. SAX è event base, al contrario di DOM, e reagisce agli eventi di parsing facendo rapporto all’applicazione. È compito del programmatore implementare i metodi per reagire agli eventi di parsing. • DOM: è un’interfaccia di programmazione, come SAX, implementata in una moltitudine di linguaggi di programmazione, per la manipolazione di file XML. DOM costruisce partendo dal file XML un albero dove ogni nodo dell’albero corrisponde ad un elemento del file; per questo motivo è detta tree based. DOM è più facile ed immediata da utilizzare rispetto a SAX ed è pertanto preferita solitamente dai programmatori per manipolare un file XML; purtroppo l’albero generato da DOM va mantenuto completamente nella memoria RAM e di conseguenza non è possibile utilizzare questa interfaccia per manipolare file che siano più grandi della memoria disponibile sul computer. • XForms: come il suo nome lascia intendere, è un linguaggio nato per creare moduli (forms) di tipo HTML all’interno di un documento XML. • RSS: è uno standard che serve a creare un documento con una struttura di tipo XML univoca, atta allo sviluppo di un semplice scambio dati tra pagine Web ed accessibile da qualsiasi linguaggio di scripting. In 3.4. XSL 35 sostanza si tratta di un documento XML la cui struttura dei nodi ed i relativi tag hanno lo stesso nome. • SVG (Scalable Vector Graphics): è uno standard per la creazione di immagini vettoriali che sfrutta dei documenti formattati in XML. Serve inoltre a descrivere immagini bidimensionali, statiche e dinamiche. Leggendo le istruzioni contenute nel documento sorgente XML, l’interprete disegna le figure-base fino al completamento dell’immagine. 3.3.7 XML e le pagine web: XHTML L’HTML tradizionale non è un vero standard data la sua eccessiva flessibilità ed il suo funzionamento immutato anche in presenza di errori semantici, sintattici e grammaticali. Ad affiancarlo c’è XHTML, ovvero l’HTML tradizionale basato su XML, con la sua struttura rigida e con le sue stesse regole. Ad esempio in XHTML, al contrario che in HTML tradizionale, i tag vuoti vanno chiusi con uno slash (/) finale, gli attributi vuoti devono essere valorizzati con true o false, la chiusura dei tag dev’essere a specchio (se viene aperto un Tag e prima di chiuderlo ne viene aperto un altro, è necessario chiudere prima il secondo tag e poi il primo), molti Tag e molti attributi sono scomparsi, i caratteri speciali vanno gestiti, insieme ad altre peculiarità, ma soprattutto esiste una DTD dedicata. Una pagina XHTML (ovvero un codice XHTML, dato che l’estensione della pagina prescinde dal codice in questo caso) non funziona se scritta scorrettamente e inviata con il mime type corretto (application/xhtml+xml). Quando è inviata come text/html funziona perchè viene interpretata come html (con degli errori, quali i tag chiusi come < br/ >) solo che non rispetta lo standard e non gode dei suoi vantaggi, primo tra i quali la portabilità su browser e client differenti. 3.4 XSL L’XSL, acronimo di eXtensible Stylesheet Language, è il linguaggio di descrizione dei fogli di stile per i documenti in formato XML. Com’è noto, lo standard XML prevede che i contenuti di un documento siano separati dalla formattazione della pagina in cui verranno pubblicati. D’altra parte è proprio questa distinzione a costituire uno dei punti di forza dell’XML come metalinguaggio, in quanto massimizza la possibilità di associare molti e diversi linguaggi di marcatura agli elementi del documento, arricchendone le proprietá semantiche. L’XSL permette di visualizzare lo stesso file XML 36 CAPITOLO 3. W3SCHOOLS in formati diversi: come pagina web, come pagina stampabile oppure come traccia per un’esposizione orale. 3.4.1 Storia XML è una semplificazione del più complesso SGML (Standard Generalized Markup Language). Anche XSLT ha un suo antesignano: DSSSL (Document Style Semantics and Specification Language), che serve per elaborare i contenuti SGML e che appare tra le raccomandazioni W3C nei primi anni ’90. XSLT vede i natali qualche anno dopo. Nell’aprile 1999 viene proposto come linguaggio di trasformazione all’interno della bozza di descrizione di XSL e nel novembre dello stesso anno diventa ufficialmente una Raccomandazione. 3.4.2 Struttura L’XSL incorpora tre linguaggi: • XSL Transformations (XSLT): il linguaggio di trasformazione dell’XML; • XSL Formatting Objects (XSL-FO): usato per l’applicazione degli stili e del modo di apparizione a un documento XML. • XML Path (XPath): è usato nei fogli di stile XSLT per descrivere come accedere alle parti di un documento XML. Tutti questi linguaggi sono codificati e gestiti dal W3C. Attualmente sono disponibili diverse implementazioni XSL; le versioni recenti di tutti i principali browser, in particolare Internet Explorer e Mozilla, supportano la trasformazione di XML in HTML tramite XSL. Lo standard XSL-FO è molto meno diffuso. La maggior parte delle implementazioni disponibili (se non tutte) sono parziali. FOP, che fa parte del progetto Apache, può visualizzare una gran parte dello standard XSL-FO in vari formati, tra cui il dffuso PDF. Il pacchetto PassiveTeX è un’altra implementazione che usa TeX per convertire XSL-FO in PDF. 3.5 XSLT L’XSLT (eXtensible Stylesheet Language Transformations) è il linguaggio di trasformazione dell’XML; deriva direttamente dal linguaggio XSL, infatti i 3.5. XSLT 37 file di questo formato sono essenzialmente file di testo, contengono elementi ed attributi ed hanno l’estensione “.xsl”. XSLT è un linguaggio basato su XML che permette di definire delle regole per trasformare un documento XML in un altro documento XML o in un documento HTML. Utilizzando XSL possiamo ad esempio visualizzare il contenuto di un documento XML in HTML, XHTML o SVG. La trasformazione viene realizzata da un XSLT Processor che riceve come input il file XML da trasformare, il file XSL con la definizione dello stylesheet da applicare e produce come output il file trasformato. Un file XSL è formato da una serie di template (modelli) che contengono le regole di trasformazione dei tag del documento XML. Questi template vengono applicati ai tag corrispondenti dal XSLT Processor in maniera ricorsiva nel corso della trasformazione. 3.5.1 Storia L’XSLT è diventato uno standard web con una direttiva (Reccomandation) W3C del 16 novembre 1999. L’obiettivo principale per cui l’XSLT è stato creato è rendere possibile la trasformazione di un documento XML in un altro documento. 3.5.2 Struttura Ci possono essere due casi specifici di trasformazione: da un documento XML a un altro documento XML (adatto a specifiche applicazioni), oppure da un documento XML ad un altro formato (ad esempio HTML, XHTML, WML - il linguaggio delle pagine WAP - e RTF). L’XSLT può essere usato per entrambi. Per generare una trasformazione XSLT occorrono due file: il documento da trasformare (in XML) ed un documento contenente il foglio di stile XSL, che fornisce la semantica per la trasformazione. Il foglio di stile XSL vede un documento XML come una serie di nodi strutturati ad albero. È formato da un insieme di modelli (template) che contengono le regole di trasformazione dei tag del documento XML. Nella sintassi XSL, i template sono elementi, a ciascuno dei quali corrisponde l’attributo match, associato al nodo che verrà trasformato. È possibile anche aggiungere al documento trasformato elementi completamente nuovi o non prendere in considerazione determinati elementi del documento origine, riordinare gli elementi, fare elaborazioni in base al risultato di determinate condizioni, ecc. In termini strutturali, il foglio di stile XSL specifica la trasformazione di un albero di nodi in un altro albero di nodi. 38 CAPITOLO 3. W3SCHOOLS Un processore XSLT può trattare sette tipi di nodi presenti in un documento XML: • Elemento radice • Attributi • Commenti • Elementi • Namespace • Istruzioni di elaborazione • Testo La trasformazione avviene attraverso un apposito programma detto processore XSLT, che riceve in input il documento XML, da cui prende i contenuti (file 1), poi prende dal foglio di stile (file 2) la struttura e le regole di presentazione e produce in output il documento XML trasformato (file 3). Il processore XSLT segue la struttura gerarchica del documento di partenza (1): individua ciascun nodo grazie alle istruzioni contenute nel foglio di stile (2), che esegue ricorsivamente, nodo per nodo. Quando il processore trova una corrispondenza (matching), succede che al contenuto dell’elemento di (1) vengono applicate le regole del template contenuto in (2). Il primo elemento template contiene le regole di trasformazione dell’Elemento radice del file di input, normalmente indicato con “/”. Alcuni esempi di regole applicate dal processore XSLT: • Sostituire le tag in XML con le corrispondenti tag in HTML; • Ordinare il contenuto dei nodi XML secondo le istruzioni fornite dal foglio di stile XSL; • Nascondere - oppure mostrare - l’informazione in base al foglio di stile; • Convertire le tabelle in grafici o in immagini SVG (Scalable Vector Graphics). Un documento XML può essere associato a più fogli di stile XSL, ciascuno dei quali genererà un output diverso. Lo stesso procedimento vale anche al contrario: uno stesso foglio di stile può essere applicato a più documenti XML, allo scopo di produrre documenti di formato diverso. 3.6. DOM 3.6 39 DOM Document Object Model (DOM) è una forma di rappresentazione dei documenti strutturati come modello orientato agli oggetti. DOM è lo standard ufficiale del W3C per la rappresentazione di documenti strutturati in maniera da essere neutrali sia per la lingua che per la piattaforma. DOM è inoltre la base per una vasta gamma delle interfacce di programmazione delle applicazioni; alcune di esse sono standardizzate dal W3C. Un’API (Application Programming Interface), letteralmente è un’interfaccia per la programmazione di applicazioni; in parole povere è un insieme di funzioni, metodi e proprietá, che i programmi possono richiamare al fine di delegare il lavoro al sistema sottostante. Il DOM (Document Object Model) è un’API, indipendente dalla piattaforma, che descrive la struttura di un documento HTML (e XML), con il quale i costruttori di pagine per il Web possono accedere e manipolare tutti gli elementi della pagina stessa. Rifacendoci alla sua sigla, il DOM è un modello che descrive come i diversi oggetti di una pagina sono collegati tra loro. È importante sottolineare che il DOM è indipendente dalla piattaforma, ovvero è un’interfaccia definita dal W3C per essere lo strumento universale per tutti i creatori di pagine Web. Questo significa che il DOM definito dal W3C è indipendente dal tipo di browser, di versione e di sistema operativo. DOM è stato inizialmente supportato dai browser per modificare gli elementi in un documento HTML. DOM è stato un modo per accedere e aggiornare dinamicamente il contenuto, struttura e stile dei documenti. A causa delle incompatibilità nell’esecuzione di DOM fra i vari browser, il W3C ha fornito delle specifiche standard. DOM non mette limitazioni sulla struttura dei dati del documento. Con DOM, un documento ben formato può essere visto come un albero. La maggior parte dei parser XML (come Xerces) e i processori XSL (per esempio Xalan) sono stati sviluppati per usare la struttura ad albero. Questa implementazione richiede che l’intero contenuto di un documento venga analizzato e salvato in memoria. Quindi, DOM può essere usato molto bene per applicazioni dove gli elementi del documento devono essere trovati in modo casuale e modificati. Per le applicazioni basate su XML che usano un processo di lettura e scrittura per analisi, DOM presenta un grande spreco di memoria; per questo tipo di applicazioni si consiglia di usare il modello SAX 40 CAPITOLO 3. W3SCHOOLS 3.6.1 Livelli, specifiche e raccomandazioni Le specifiche DOM elaborate da W3C sono suddivise in livelli, ciascuno dei quali contiene moduli obbligatori o opzionali. Per sostenere di appartenere ad un certo “livello”, un’applicazione deve soddisfare tutti i requisiti di tale livello e dei livelli inferiori. La specifica attuale di DOM è al Livello 2, tuttavia alcune delle specifiche del Livello 3 ora sono già raccomandazioni del W3C. • Livello 0: include tutto quello che viene fornito a DOM per la creazione del Livello 1, per esempio: document.images, document.forms, document.layers, e document.all. Questa non è una specifica vera e propria convenzionale pubblicata dal W3C, piuttosto dà un riferimento a che cosa esisteva prima del processo di standardizzazione. • Livello 1: navigazione di un documento DOM e manipolazione del contenuto. • Livello 2: supporto al Namespace XML, viste filtrate e Eventi DOM. • Livello 3: consiste in 6 specifiche differenti: 1) il nucleo del Livello 3; 2) caricamento e salvataggio del Livello 3; 3) XPath del Livello 3; 4) viste e formattazione del Livello 3; 5) requisiti del Livello 3; 6) validazione del Livello 3, che potenzia ulteriormente DOM. All’interno del blog è possibile ritrovare linkate in dettaglio specifiche e recomendation del W3C. 3.7 JavaScript JavaScript è un linguaggio di scripting orientato agli oggetti comunemente usato nello sviluppo di siti web, per il lato client. Al momento “javascript” è una implementazione dello standard ECMAScript. Questo linguaggio è anche utilizzato per la possibilità di fare scripting su oggetti incapsulati in altre applicazioni. 3.7.1 Storia Fu originariamente sviluppato da Brendan Eich della Netscape Communications con il nome di Mocha e successivamente di LiveScript, ma in seguito è stato rinominato “JavaScript” ed è stato formalizzato con una sintassi più vicina a quella del linguaggio Java di Sun Microsystems. Il passaggio da LiveScript a JavaScript venne effettuato quando, per la prima volta, 3.7. JAVASCRIPT 41 Netscape incluse nel suo browser i supporti per le tecnologie Java. Inizialmente questo nome creò molta confusione in quanto diede l’impressione che fosse una qualche derivazione di Java e, tale cambiamento, venne considerato da molti come una manovra di marketing per attribuire a Java Script la nomina di linguaggio di programmazione-web del futuro. Per evitare problemi di marchio, Microsoft attribuı̀ alla propria implementazione il nome di JScript. JScript fu il primo ad essere supportato da internet explorer nella versione 3.0 rilasciata nell’Agosto 1996 che includeva anche funzioni “data” per evitare il problema del millenium bug. Netscape sottopose JavaScript all’ECMA International al fine di standardizzare il linguaggio. La versione standard fu chiamata ECMAScript. JavaScript è stato standardizzato per la prima volta tra il 1997 e il 1999 dalla ECMA con il nome ECMAScript. L’ultimo standard, del dicembre 1999, è ECMA-262 Edition 3, e corrisponde a JavaScript 1.5. è anche uno standard ISO. 3.7.2 Java, JavaScript, e JScript Il cambio di nome da LiveScript a JavaScript si ebbe più o meno nel periodo in cui Netscape stava includendo il supporto per la tecnologia Java nel suo browser Netscape Navigator. La scelta del nome si rivelò fonte di grande confusione. Non c’è una vera relazione tra Java e JavaScript; le loro somiglianze sono soprattutto nella sintassi (derivata in entrambi i casi dal linguaggio C); le loro semantiche sono piuttosto diverse, e in particolare i loro object model non hanno relazione e sono ampiamente incompatibili. Dato il successo di JavaScript come linguaggio per arricchire le pagine web, Microsoft sviluppò un linguaggio compatibile, conosciuto come JScript. La necessità di specifiche comuni fu alla base dello standard ECMA 262 per ECMAScript, di cui sono state pubblicate tre edizioni da quando il lavoro iniziò, nel novembre 1996. 3.7.3 Aspetti strutturali La caratteristica principale di Javascript è quella di essere un linguaggio interpretato. Il codice quindi non viene compilato, bensı̀ c’è un interprete (in questo caso il browser che si sta utilizzando) che esegue riga per riga in modalità runtime quanto trascritto nello script. In realtà la logica è la stessa dell’HTML con la differenza di avere una struttura simile a quella di un linguaggio compilato e quindi la possibilità di poter eseguire funzionalità complesse vicine anche ai normali linguaggi Object Oriented (creazione di oggetti, strutture di controllo, cicli, etc). Presenta quindi tutte le caratteristiche di un normale linguaggio interpretato e di conseguenza i suoi vantaggi 42 CAPITOLO 3. W3SCHOOLS e svantaggi. Da aggiungere il fatto che il codice javascript viene eseguito sul client quindi il server non viene sollecitato. Ciò risulta essere un vantaggio in quanto con la presenza di script particolarmente complessi il server non verrebbe sovraccaricato. Di conseguenza però nel caso di script che presentano una considerevole mole di dati il tempo per lo scaricamento diventa eccessivo. Inoltre lavorando solamente sul client ogni informazione che presuppone un accesso al db deve essere rimandato ad un linguaggio che effettua esplicitamente la query per poi restituire i risultati ad una variabili javascript; quindi operazioni del genere richiedono un caricamento della pagina stessa. Con l’avvento di Ajax anche questo limite è stato superato. 3.7.4 Uso JavaScript è un linguaggio di programmazione orientato a oggetti con una sintassi vagamente basata sul C. Come il C, ha il concetto di parole chiave riservate, che rendono quasi impossibile espandere il linguaggio (essendo eseguito direttamente dal sorgente). Come nel C, il linguaggio non ha propri costrutti di input o output; mentre il C si affida alle librerie I/O standard, un interprete JavaScript si basa su un programma ospite in cui è integrato. Ci sono molti programmi ospiti di questo tipo, di cui quelli relativi al Web sono gli esempi più noti. JavaScript, se integrato in un browser Web, si collega tramite interfacce chiamate DOM (Document Object Model) alle applicazioni, specialmente al lato server (web server) e al lato client (browser) delle applicazioni internet. Molti siti web usano la tecnologia JavaScript lato client per creare potenti applicazioni web dinamiche. Può usare Unicode e può valutare le espressioni regolari (introdotte nella versione 1.2, in Netscape Navigator 4 e Internet Explorer 4). Inoltre, le espressioni JavaScript contenute in una stringa possono essere valutate usando la funzione eval. Un uso principale del Javascript basato su web è la scrittura di piccole funzioni integrate nelle pagine HTML che interagiscono con il DOM del browser per compiere determinate azioni non possibili con il solo HTML statico, come aprire una nuova finestra, controllare i valori nei campi di ingresso, cambiare le immagini al passaggio del mouse, ecc. Sfortunatamente, i DOM dei vari browser non sono standardizzati, browser diversi espongono diversi oggetti o metodi allo script, ed è quindi spesso necessario scrivere differenti versioni di una funzione JavaScript per ciascuno dei browser. Al di fuori del Web, interpreti JavaScript sono integrati in diverse applicazioni. Adobe Acrobat e Adobe Reader supportano JavaScript nei file PDF. La piattaforma Mozilla, che è alla base di molti diffusi browser Web, usa JavaScript per implementare l’interfaccia utente e la logica di transazione 3.8. AJAX 43 dei suoi vari prodotti. Gli interpreti JavaScript sono integrati anche nelle applicazioni proprietarie prive di interfacce programmabili via script. Infine la tecnologia Windows Script Host di Microsoft supporta JavaScript (via JScript) un linguaggio di scripting per i sistemi operativi. 3.7.5 Filiazioni Un nuovo esempio di uso di JavaScript sono i Bookmarklet, piccole sezioni di codice all’interno dei segnalibri o Preferiti dei browser web. Il linguaggio di programmazione usato in Macromedia Flash (chiamato ActionScript) ha una forte somiglianza con JavaScript, dovuta alla loro relazione condivisa con ECMAScript. ActionScript ha quasi la stessa sintassi di JavaScript, ma il modello a oggetti è decisamente diverso. JavaScript for OSA (JavaScript OSA, or JSOSA), è un linguaggio di scripting per Macintosh basato sull’implementazione JavaScript 1.5 di Mozilla, è un componente freeware reso disponibile da Late Night Software. L’interazione con il sistema operativo e con le applicazioni di terze parti è gestita tramite un oggetto MacOS. A parte ciò, il linguaggio è virtualmente identico all’implementazione Mozilla, è stato proposto come alternativa al più usato linguaggio AppleScript. 3.8 AJAX Ajax, acronimo di Asynchronous JavaScript and XML, è una tecnica di sviluppo web per creare applicazioni web interattive. L’intento di tale tecnica è quello di ottenere pagine web che rispondono in maniera più rapida, grazie allo scambio in background di piccoli pacchetti di dati con il server, cosı̀ che l’intera pagina web non debba essere ricaricata ogni volta che l’utente effettua una modifica. Questa tecnica riesce, quindi, a migliorare l’interattività, la velocità e l’usabilità di una pagina web. Il loro progetto comprende anche un framework, che agevola il lavoro poichè lo divide in due parti separate: una si preoccupa della parte client e offre funzioni JavaScript per mandare informazioni al server, mentre l’altra si preoccupa della parte server, processa le richieste e le trasmette al browser. AJAX è asincrono nel senso che i dati sono richiesti dal server e caricati in background senza interferire nella visualizzazione e nel comportamento della pagina esistente. JavaScript è il linguaggio di scripting nel quale solitamente vengono effettuate le chiamate di funzioni AJAX. Le informazioni sono prelevate utilizzando l’oggetto XMLHttpRequest che è possibile far girare per i 44 CAPITOLO 3. W3SCHOOLS linguaggi di scripting nel browser moderni. Non c’è tuttavia alcuna richiesta che i contenuti asincroni debbano essere formattati in XML. AJAX è una tecnica cross-platform utilizzabile su diversi sistemi operativi, architetture e web browser, è basata su open standards come il JavaScript e il DOM. Ci sono svariate implementazioni libere e open source di parecchi frameworks e librerie. La tecnica Ajax utilizza una combinazione di: • HTML (o XHTML) e CSS per il markup e lo stile; • DOM (Document Object Model) manipolato attraverso un linguaggio ECMAScript come JavaScript e JScript per mostrare le informazioni ed interagirvi; • l’oggetto XMLHttpRequest per l’interscambio asincrono dei dati tra il browser dell’utente e il web server. In alcuni framework Ajax e in certe situazioni, può essere usato un oggetto Iframe invece di XMLHttpRequest per scambiare i dati con il server e, in altre implementazioni, tag < script > aggiunti dinamicamente (JSON); • in genere viene usato XML come formato di scambio dei dati, anche se di fatto qualunque formato può essere utilizzato, incluso testo semplice, HTML preformattato, JSON e perfino EBML. Questi file sono solitamente generati dinamicamente da script lato server. Come DHTML o LAMP, Ajax non è una tecnologia individuale, piuttosto è un gruppo di tecnologie utilizzate insieme. Le applicazioni web che usano Ajax richiedono browser che supportano le tecnologie necessarie (quelle dell’elenco sopra). Questi browser includono: Mozilla, Firefox, Internet Explorer, Opera, Konqueror e Safari. Tuttavia, per specifica, “Opera non supporta la formattazione degli oggetti XSL”. 3.8.1 Storia Il primo utilizzo pubblico del termine venne utilizzato da Jesse James Garrett nel febbraio 2005. Garrett utilizzò il termine quando realizzò la necessità di un termine unico per rappresentare una suite di tecnologie che veniva inviata ad un client. Nonostante il fatto che il termine Ajax fu coniato nel 2005, la maggior parte delle tecnologie che hanno permesso ad Ajax di cominciare una decade prima con le iniziative della Microsoft nello sviluppo del Remote Scripting. Riferendosi ad una idea come il “Inner-Browsing”, Netscape Evangelism ha 3.8. AJAX 45 pubblicato un articolo nel 2003 che presentava idee per implementare modelli in cui “all navigation occurs within a single page, as in a typical application interface”. Tecniche per il caricamento asincrono di contenuti su una pagina web esistente senza richiedere un reload completo risalgono al 1996 in cui fu inventato l’utilizzo dell’IFRAME element type, in Internet Explorer 3 e il LAYER element type in Netscape 4 nel 1997 poi abbandonato durante i primi sviluppi di Mozilla. Entrambi gli element types hanno un attributo “src” che può prendere un URL esterno e, caricando una pagina contenente JavaScript che manipola la pagina genitrice, possono essere raggiunti effetti tipo Ajax. Questo pacchetto di tecnologie lato-client era solitamente raggruppato insieme sotto il termine generico di DHTML. Anche Flash della Macromedia può, dalla versione 4, caricare file XML e CSV da un server remoto senza richiedere al browser di eseguire un refresh. Il World Wide Web Consortium ha molte Recommendations che permettono anche comunicazioni dinamiche tra un server e un “user agent”, se supportati correttamente. Questi includono: • gli oggetti definiti in HTML 4 sono definiti al fine di incapsulare nel codice contenuti di vario tipo; • the Document Object Model (DOM) di livello 3 salvano e caricano le Specifiche. 3.8.2 Principali utilizzi Alcuni utilizzi per interazioni Ajax sono i seguenti: Real-time form data validation: alcuni dati come lo user ID, i numeri seriali, i codici postali, o eventuali ulteriori codici che richiedono una validazione lato-server possono essere validati in una form prima che l’utente compili il form. Autocompletion: una specifica porzione di dati contenuti in un form come un indirizzo email, nome o città possono essere autocompletati mentre l’utente digita. Load on demand: basato su un evento del client, una pagina HTML può caricare dati in background, permettendo al browser di caricare pagine più velocemente. 46 CAPITOLO 3. W3SCHOOLS Sophisticated user interface controls and effects: controlli come grafi, menu, tabelle, editor di rich text, calendari e barre di progressione permettono una migliore interazione con l’utente e con le pagine HTML, generalmente senza richiedere all’utente di ricaricare la pagina. Refreshing data and server push: le pagine HTML possono sondare dati da un server per un aggiornamento come punteggi, quantità immagazzinate, condizioni climatiche o dati specifici dell’applicazione. Un client può utilizzare tecniche Ajax per prelevare un set di dati senza ricaricare l’intera pagina. Il “polling” non è il significato più efficiente per assicurarsi che i dati su una pagina siano i più aggiornati. Tecniche emergenti come “Comet” si stanno sviluppando per fornire un vero push over HTTP lato server, mantenendo una connessione persistente tra il client e il server. Partial submit: una pagina HTML può presentare contenuti in form a richiesta senza richiedere un refresh dell’intera pagina. Mashups: una pagina HTML può ottenere dati utilizzando un proxy latoserver o includendo uno script esterno per mixare contenuti esterni con le proprie applicazioni o i propri servizi sui contenuti. Per esempio, si possono miscelare contenuti o dati da una applicazione “third-party” come Google Maps con la propria applicazione. Page as an application: la tecnica Ajax può essere utilizzata per creare pagine singole simili ad applicazioni che assomigliano molto ad applicazioni tipo desktop. 3.8.3 Confronto con applicazioni tradizionali Le applicazioni web tradizionali consentono agli utenti di compilare moduli e, quando questi moduli vengono inviati, viene inviata una richiesta al webserver. Il web server agisce in base a ciò che è stato trasmesso dal modulo e risponde bloccando o mostrando una nuova pagina. Dato che molto codice HTML della prima pagina è identico a quello della seconda, viene sprecata moltissima banda. Dato che una richiesta fatta al web server deve essere trasmessa su ogni interazione con l’applicazione, il tempo di reazione dell’applicazione dipende dal tempo di reazione del web server. Questo comporta che l’interfaccia utente diventa molto più lenta di quanto dovrebbe essere. Le applicazioni Ajax, d’altra parte, possono inviare richieste al web server per ottenere solo i dati che sono necessari (generalmente usando SOAP e JavaScript per mostrare la risposta del server nel browser). Come risultato si 3.8. AJAX 47 Figura 3.1: Questa immagine mostra come un’applicazione web tradizionale elabora l’interazione dell’utente e come lo fa invece un’applicazione AJAX. ottengono applicazioni più veloci (dato che la quantità di dati interscambiati fra il browser ed il server si riduce). Anche il tempo di elaborazione da parte del web server si riduce poichè la maggior parte dei dati della richiesta sono già stati elaborati. Un esempio concreto: molti siti usano le tabelle per visualizzare i dati. Per cambiare l’ordine di visualizzazione dei dati, con un’applicazione tradizionale l’utente dovrebbe cliccare un link nell’intestazione della tabella che invierebbe una richiesta al server per ricaricare la pagina con il nuovo ordine. Il web server allora invierebbe una nuova query SQL al database ordinando i dati come richiesto, la eseguirebbe, prenderebbe i dati e ricostruirebbe da zero la pagina web reinviandola integralmente all’utente. Usando le tecnologie Ajax, questo evento potrebbe preferibilmente essere eseguito con uno JavaScript lato client che genera dinamicamente una vista dei dati con DHTML. Un altro esempio potrebbe essere la scelta di un nuovo nickname in fase di creazione di un account su un sito web, nel caso classico, se il nome che abbiamo scelto fosse già esistente, dovremmo compilare prima tutto il modulo ed accorgerci 48 CAPITOLO 3. W3SCHOOLS Figura 3.2: Questa immagine mostra come i componenti delle applicazioni AJAX interagiscono tra loro comparandolo con quello che accade nelle applicazioni web classiche. 3.9. RDF 49 solo dopo aver atteso il caricamento della pagina di conferma che il nome è già esistente e dobbiamo cambiarlo, invece con AJAX può essere introdotto un controllo sull’evento onChange o addirittura OnKeyUp della casella di testo che ci può informare tempestivamente che il nome inserito non è valido, magari evidenziando il testo in rosso (CSS + Javascript). 3.8.4 Pro e contro Come per le applicazioni DHTML, anche le applicazioni AJAX devono essere testate su più browser per verificarne la compatibilità (librerie come Sarissa di SourceForge possono tuttavia essere di aiuto). Inoltre è richiesto che nel client sia attivato Javascript. Il vantaggio di usare AJAX è la grande velocià alla quale un’applicazione risponde agli input dell’utente. Un problema abbastanza degno di nota è che, senza l’adozione di adeguate contromisure, le applicazioni AJAX possono rendere non utilizzabile il tasto “indietro” del browser: con questo tipo di applicazioni, infatti, non si naviga da una pagina all’altra, ma si aggiorna di volta in volta una singola parte del medesimo documento. Proprio per questo i browser, che sono programmi orientati alla pagina, non hanno possibilità di risalire ad alcuna di tali versioni “intermedie”. Google, nella sua Google Maps, ha sviluppato una possibile soluzione al problema: invece di usare XMLHttpRequest quando l’utente clicca sul bottone di ricerca, il risultato della ricerca viene inviato in un iframe invisibile, dal quale le informazioni sono portate nella pagina visibile. In ogni modo, un attento design delle applicazioni AJAX permette di risolvere totalmente o in parte questi aspetti negativi. 3.9 RDF Resource Description Framework (RDF) è una famiglia delle specifiche del World Wide Web Consortium (W3C) originalmente designate come un modello metadata, ma che è divenuto in uso come un metodo generale per modellare l’informazione, attraverso una varietà di formati di sintassi. Il modello di metadata RDF è basato sull’idea di creare statements riguardanti le risorse nella forma subject-predicate-object, chiamate “triples” nella terminologia di RDF. Il soggetto denota la risorsa, il predicato denota tratti o aspetti della risorsa e esprime una relazione tra il soggetto e l’oggetto. Per esempio, un modo per rappresentare la nozione “The sky has the color blue” in RDF si usa una tripla di questo tipo: un soggetto che denota “the sky”, un predicato che denota “has the color” e un oggetto che denota “blue”. 50 CAPITOLO 3. W3SCHOOLS Questo meccanismo (framework) per descrivere le risorse è la componente prncipale di quello che è stato proposto dal W3C per l’attività di Semantic Web: un passaggio rivoluzionario per il World Wide Web nel quale software automatizzato può immagazzinare, scambiare e utilizzare informazioni leggibili dalle macchine, distribuite attraverso il web, al fine di dare la possibilità all’utente di avere a che fare e condividere informazioni di grande efficienza e certezza. Il semplice modello di rappresentazione dei dati di RDF, concetti astratti hanno portato a incrementare l’utilizzo di applicazioni per la “gestione della conoscenza” (knowledge management) scollegate dell’attività di Semantic Web. Il Resource Description Framework (RDF) è un framework per la descrizione della conoscenza nel web. Esso è stato specificatamente creato, secondo una raccomandazione del W3C, per la descrizione dei metadati relativi alle risorse. L’RDF si basa su tre principi chiave: 1. Qualunque cosa può essere identificato da un Uniform Resource Identifier (URI) 2. The least power: utilizzare il linguaggio meno espressivo per definire qualunque cosa 3. Qualunque cosa può dire qualunque cosa su qualunque cosa RDF è sostanzialmente un modello formale di dati dotato di sintassi di interscambio, un sistema di schemi di tipo ed un linguaggio d’interrogazione. 3.9.1 Storia Ci sono svariati antenati di RDF. Tecnicamente il più vicino fu MCF, un progetto iniziato da Ramanathan V. Guha mentre era presso la Apple Computer e continuò, con contributi da Tim Bray, durante la sua permanenza presso la Netscape Communications Corporation. Idee provenienti dalla comunità Dublin Core, e dal PICS (Platform for Internet Content Selection, il primo sistema di labeling per i conenuti del Web ad opera del W3C) furono anche chiave nella realizzazione del progetto RDF. Il W3C pubblicò una specifica per il modello dati RDF e sintassi XML come una “Recommendation” nel 1999. Ulteriori sviluppi si ebbero in una nuova versione che fu pubblicata in un set di specifiche correlate nel 2004. Anche se ci sono diverse implementazioni basate sulle “Recommendation” del 1999, che non sono state del tutto aggiornate, l’adozione delle specifiche migliorate è stata rapida dal momento in cui furono sviluppate in pubblico, diversamente da altre precedenti tecnologie di W3C. La maggior parte dei 3.9. RDF 51 nuovi arrivati in ambito RDF non sono nemmeno a conoscenza che esistano le vecchie specifiche. MIME media type application/rdf+xml fu registrata da RFC 3870 e raccomanda che i documenti RDF seguano le nuove specifiche. In aggiunta per serializzare DRF come XML, il W3C introdusse Notation 3 (o N3) come una serializzazione non-XML del modello RDF models designato per essere più semplice per scrivere quando si comincia. 3.9.2 Principi e Data Model Qualunque cosa descritta da RDF è detta risorsa. Principalmente una risorsa è reperibile sul web, ma RDF può descrivere anche risorse che non si trovano direttamente sul web. Ogni risorsa è identificata da un URI, un identificatore univoco di risorse che può essere un Uniform Resource Locator (URL) o un Uniform Resource Name (URN). Il modello di dati RDF è formato da risorse, proprietá e valori. Le proprietá sono delle relazioni che legano tra loro risorse e valori, e sono anch’esse identificate da URI. Un valore, invece, o è una risorsa o è un tipo di dato primitivo. L’unità base per rappresentare un’informazione in RDF è lo statement. Uno statement è una tripla del tipo: Soggetto Predicato Oggetto dove il soggetto è una risorsa, il predicato è una proprietá e l’oggetto è un valore. Il data model RDF permette di definire un modello semplice per descrivere le relazioni tra le risorse, in termini di proprietá identificate da un nome e relativi valori. Tuttavia, RDF data model non fornisce nessun meccanismo per dichiarare queste proprietá, nè per definire le relazioni tra queste proprietá ed altre risorse. Per poter dichiarare un vocabolario è necessario definire classi e proprietá in un RDF-Schema. 3.9.3 Rappresentazione fisica del modello Un modello RDF è quindi rappresentabile da un grafo orientato sui cui nodi ci sono risorse o tipi primitivi e i cui archi rappresentano le proprietá. Un grafo RDF è rappresentato fisicamente mediante una serializzazione. Le principali serializzazioni adottabili per un grafo RDF sono: • XML: l’RDF è serializzato in un file XML • N-TRIPLE: si serializza il grafo come un insieme di triple soggetto predicato - oggetto 52 CAPITOLO 3. W3SCHOOLS • N3: si serializza il grafo descrivendo, una per volta, una risorsa e tutte le sue proprietá In particolare la serializzazione in XML può avvenire secondo due metodi, quello classico e quello abbreviato, più leggibile per l’uomo. 3.10 SVG Scalable Vector Graphics (SVG) è un linguaggio per descrivere immagini bi-dimensionali, sia statiche sia animate, e applicazioni in XML. SVG può essere puramente dichiarativo o può includere dello scripting. Le immagini possono contenere iperlink utilizzando dei semplici XLinks. Esso è un open standard creato dal SVG Working Group appartenente al World Wide Web Consortium. 3.10.1 Storia degli sviluppi SVG fu sviluppata dal W3C SVG Working Group a cominciare dal 1998. SVG è diventato una raccomandazione (standard) del World Wide Web Consortium nel settembre 2001. Al W3C Macromedia e Microsoft avevano introdotto il linguaggio VML (Vector Markup Language), mentre Adobe e Sun Microsystems proponevano un formato concorrente chiamato PGML: per arrivare alla raccomandazione è stato necessario un certo lavoro di compromesso. Il gruppo di lavoro fu presieduto da Chris Lilley del W3C. • SVG 1.0 diventò una W3C Recommendation il 4 settembre 2001. • SVG 1.1 diventò una W3C Recommendation il 14 gennaio 2003. La specifica SVG 1.1 è modularizzata al fine di permettere sottoinsiemi definiti come profili. Oltre a questo ci sono davvero poche differenze tra le 2 versioni. • SVG Tiny 1.2 diventò una W3C Candidate Recommendation il 10 agosto 2006. SVG Full 1.2 è una bozza di lavoro del W3C. SVG Tiny 1.2 fu inizialmente rilasciata come profilo e più avanti riorganizzata per essere una specifica completa, includendo tutte le parti necessarie di SVG 1.1 e SVG 1.2. Una simile bozza rivista per SVG 1.2 Full non è ancora stata rilasciata. Una caratteristica notevole aggiunta nella bozza di lavoro SVG Full 1.2 del W3C (non presente nel SVG Tiny 1.2) è la sintassi per i documenti a più pagine. 3.10. SVG 53 SVG è supportato nativamente dal web browser/web editor Amaya e da Mozilla Firefox dalla versione 1.5. Altri browser per visualizzare immagini SVG richiedono l’aggiunta di un plugin, come Adobe SVG Viewer o Corel SVG Viewer. Le immagini SVG possono essere visualizzate anche da editor e viewer autonomi. Una particolare versione di Mozilla, chiamata “Croczilla”, ora supporta alcune parti dello standard SVG, ma gran parte delle prestazioni non sono ancora ottenibili: in prospettiva comunque le immagini SVG dovrebbero essere visualizzabili senza l’aggiunta di alcun plug-in. Anche il web browser Konqueror del progetto KDE attualmente possiede una implementazione di SVG abbastanza completa chiamata ksvg e c’è da aspettarsi che in futuro questo supporto sarà adattato al web browser Safari della Apple Inc. Il browser Opera supporta SVG dalla release 8.5 Caratteristiche Opera. I programmi scritti in Java possono controllare la visualizzazione, la generazione e la manipolazione di grafici SVG servendosi del Batik SVG Toolkit. 3.10.2 Caratteristiche Riassumiamo quanto contenuto nella Overview of SVG del consorzio W3C. SVG permette di trattare tre tipi di oggetti grafici: • forme geometriche, cioè linee costituite da segmenti di retta e curve e aree delimitate da linee chiuse; • immagini della grafica raster e immagini digitali; • testi esplicativi, eventualmente cliccabili. Gli oggetti grafici possono essere raggruppati in oggetti più comprensivi, muniti di attributi di stile e aggiunti ad oggetti grafici precedentemente costruiti e visualizzati. Un testo può far parte di un qualsiasi namespace XML sottoponibile ad una applicazione; questa possibilità consente di aumentare la ricercabilità e l’accessibilità delle immagini SVG. Il repertorio delle operazioni attuabili include trasformazioni annidate, percorsi di clipping, Canale alpha, effetti di filtro, oggetti template ed estensibilità. Le figure espresse mediante SVG possono essere dinamiche e interattive. Il Document Object Model (DOM) per SVG, che include il completo XML DOM, consente una animazione in grafica vettoriale diretta ed efficiente attraverso i linguaggi ECMAScript e SMIL. Agli oggetti grafici SVG si possono assegnare event handlers tratti da un ampio repertorio: due esempi dal ruolo facilmente intuibile sono onmouseover e onclick. Grazie alla compatibilità di SVG con gli altri standard per il web e grazie al mutuo supporto di questi 54 CAPITOLO 3. W3SCHOOLS meccanismi, si possono dotare gli elementi SVG e gli altri elementi XML di una pagina web di prestazioni come lo scripting ricavate contemporaneamente da diversi spazi di nomi. Il sistema SVG rivaleggia con Macromedia Flash in termini di potenziale e di efficienza. Per un primo confronto rileviamo che, contrariamente a Flash, SVG è uno standard aperto, ma d’altra parte il plug-in Flash è molto più maturo e diffuso degli strumenti omologhi per SVG. 3.10.3 Utilizzo La maggior parte dei prodotti software per disegnare come Adobe Illustrator e Corel Draw nelle versioni più recenti sono in grado di esportare immagini descritte in SVG. Anche il pacchetto Draw della OpenOffice.org dalla versione 1.1 può esportare file SVG. Due strumenti grafici open source e multipiattaforma che usano il formato SVG sono Sodipodi e Inkscape. 3.10.4 Grafica vettoriale scalabile Le potenzialità di una grafica vettoriale scalabile sono notevoli: • la geometria di ciascun elemento grafico è definita matematicamente, anzichè essere trattata mediante rigidi quadri di pixel • È possibile ridimensionare a piacere qualsiasi elemento grafico, mantenendone la qualità. Più in particolare, nel visualizzare un dato oggetto grafico su supporti di differente natura (stampa, video, plotter, schermo di cellulare, ...), si è certi di ottenere sempre la massima qualità che quei supporti possono fornire. Tali potenzialità interessano praticamente tutte le applicazioni grafiche che non siano puramente raster, cioè basate su mappe di pixel (nella pratica immagini provenienti da fotocamere o da scansioni). Il vantaggio dell’SVG rispetto ad altri formati di grafica vettoriale consiste nella sua natura di standard aperto: in questo modo in linea di principio chiunque lo conosca è in grado di realizzare pagine SVG senza avere la necessità di un ambiente di sviluppo commerciale dedicato. Si noti che la natura di standard aperto è stata una delle ragioni della fortuna dell’HTML. Trattandosi di un formato derivato dall’XML, eredita da esso la facilità di generazione con mezzi automatici e tramite linguaggi di programmazione. Dal lato client è infine possibile operare sul modello ad oggetti del documento (il DOM) utilizzando codice ECMAScript (la standardizzazione di Javascript definita da ECMA). 3.10. SVG 55 Un file SVG è un semplice file di testo, che può essere visualizzato e editato con qualsiasi altro markup. 56 CAPITOLO 3. W3SCHOOLS Capitolo 4 Web 2.0 Web 2.0 è un termine usato per indicare un generico stato di evoluzione di Internet e in particolare del World Wide Web. Alcuni hanno tentato di definire il Web 2.0 come una serie di siti web con interfaccia, facilità e velocità d’uso tali da renderli simili alle applicazioni tradizionali che gli utenti sono abituati a installare nei propri personal computer. Per tali siti spesso vengono usate tecnologie di programmazione particolari, come AJAX (Gmail usa largamente questa tecnica per essere semplice e veloce) o Adobe Flex. I propositori del termine Web 2.0 affermano che questo differisce dal concetto iniziale di web, retroattivamente etichettato Web 1.0, perchè si discosta dai classici siti web statici, dall’e-mail, dall’uso dei motori di ricerca, dalla navigazione lineare e propone un World Wide Web più dinamico e interattivo. Un esempio potrebbe essere il social commerce, l’evoluzione dell’E-Commerce in senso interattivo, che consente una maggiore partecipazione dei clienti, attraverso blog, forum, sistemi di feedback, etc. Gli scettici replicano che il termine Web 2.0 non ha un vero e proprio significato, in quanto questo dipende esclusivamente da ciò che i propositori decidono che debba significare per cercare di convincere i media e gli investitori che stanno creando qualcosa di nuovo e migliore, invece di continuare a sviluppare le tecnologie esistenti. 4.1 Analisi storica Originariamente il web è stato concepito come modo per visualizzare documenti ipertestuali statici (creati con l’uso del linguaggio HTML); questo approccio può essere definito come Web 1.0. 57 58 CAPITOLO 4. WEB 2.0 In seguito, grazie all’integrazione con database e all’utilizzo di sistemi di gestione dei contenuti (CMS), Internet si è evoluta con siti dinamici (come ad esempio i forum o i blog); questo web dinamico è stato da alcuni definito Web 1.5. Attraverso l’utilizzo di linguaggi di programmazione come Javascript, degli elementi dinamici e dei fogli di stile (CSS) per gli aspetti grafici, si possono creare delle vere e proprie “applicazioni web” che si discostano dal vecchio concetto di semplice ipertesto e che puntano a somigliare ad applicazioni tradizionali per computer. Da un punto di vista strettamente tecnologico, il Web 2.0 è del tutto equivalente al Web 1.0, in quanto l’infrastruttura di rete continua ad essere costituita da TCP/IP e HTTP e l’ipertesto è ancora il concetto base delle relazioni tra i contenuti. La differenza, più che altro, sta nell’approccio con il quale gli utenti si rivolgono al Web, che passa fondamentalmente dalla semplice consultazione (seppure supportata da efficienti strumenti di ricerca, selezione e aggregazione) alla possibilità di contribuire popolando e alimentando il Web con propri contenuti. 4.2 Differenze e confronti con il Web 1.0 Nel descrivere le caratteristiche del Web 2.0 si procede spesso per confronto con il Web 1.0, indicando come nel passaggio di versione gli elementi fondamentali si sono evoluti o sono stati sostituiti da nuovi. Si tratta di un modo di rappresentare il Web 2.0 divulgativo e non prettamente tecnico, ma piuttosto efficace per riconoscere l’evoluzione dei sistemi su Internet. 4.3 Dai siti web personali ai blog Se prima la costruzione di un sito web personale richiedeva la padronanza di elementi di HTML e programmazione, oggi con i blog chiunque è in grado di pubblicare i propri contenuti, dotandoli anche di veste grafica accattivante, senza possedere alcuna particolare preparazione tecnica. Se prima le community web erano in stragrande maggioranza costituite da esperti informatici, oggi la situazione è completamente ribaltata. A farla da padroni sui blog sono scrittori, giornalisti, artisti o comunque “animi sensibili” con una preparazione informatica non particolarmente elevata. 4.4. DAI SISTEMI PER CONTENT MANAGEMENT AI WIKI 4.4 59 Dai sistemi per Content Management ai Wiki La tecnologia Wiki (Wikipedia ne è la più celebre applicazione) è il punto di arrivo del content management, in quanto ne implementa tutti i paradigmi. Se prima erano necessarie più applicazioni informatiche per la gestione del ciclo di vita dell’informazione (dall’intuizione alla fruizione), oggi una stessa tecnologia supporta al meglio tutto il processo. Si fruisce dell’informazione nell’ambiente stesso in cui essa è nata. 4.5 Dalla stickiness al syndication Le tecniche utilizzate fino a ieri per tenere più tempo i visitatori su un sito web (stickiness, letteralmente “l’appiccicosità” di un sito, cioè la capacità di tenere “incollati” gli utenti ad esso) stanno lasciando il posto ad altre concezioni di contatto con il fruitore. Attraverso le tecnologie di syndication RSS, Atom, tagging) chi realizza contenuti fa in modo che questi possano essere fruiti non solo sul sito, ma anche attraverso canali diversi. Un esempio di questi nuovi canali sono i feed, cioè delle liste di elementi con un titolo (es. notizie di un giornale, thread di un newsgroup), che permettono il successivo collegamento ai contenuti informativi. Questi ultimi possono essere aggiornati e consultati di frequente con programmi appositi o anche attraverso i browser e quindi consentono di essere sempre a conoscenza dei nuovi contenuti inseriti su un sito senza doverlo visitare direttamente. 4.6 Strumenti per la creazione di contenuti Tale possibilità di creazione e condivisione di contenuti su Web, tipica del Web 2.0, è data da una serie di strumenti (tool in inglese) on-line che permettono di utilizzare il web come se si trattasse di una normale applicazione. In pratica il Web di seconda generazione è un Web dove poter trovare quei servizi che finora erano offerti da pacchetti da installare sui singoli computer. Esempi di Web 2.0 sono FCKEditor e Writely, veri e propri elaboratori di testi e convertitori di formato, oppure NumSum, una sorta di foglio elettronico. Anche Google ha recentemente lanciato la sua suite di editor, chiamata Google Docs & Spreadsheet, e Microsoft sta per rilasciare una versione online della suite Office. Oltre alla creazione condivisa di contenuto on-line, il Web 2.0 è caratterizzato dalla pubblicazione immediata del contenuto e alla sua classificazione 60 CAPITOLO 4. WEB 2.0 Figura 4.1: . e indicizzazione nei motori di ricerca, in modo che l’informazione sia subito disponibile a beneficio dalla comunità, realizzando in maniera veloce il ciclo di vita del content management. Per la pubblicazione dei contenuti fanno da padrone sul Web (di oggi) i provider di blog come Blogger, Wordpress, Splinder, ma anche piattaforme commerciali come Microsoft Sharepoint Portal che nella prossima versione (3.0) accentuerà le sue caratteristiche di collaborazione diventando la parte server di Office 12. Altra applicazione del Web 2.0 sono i cosiddetti web desktop (webtop), una sorta di sistema operativo online su cui è possibile eseguire operazioni simili a quelle di un sistema operativo tradizionale.