Presentazione del corso - Università degli Studi di Milano
Transcript
Presentazione del corso - Università degli Studi di Milano
Dall‟XML a „Casting, RSS, XHTML, JSON… le tecnologie WEB convergono Corso di laurea in Comunicazione Digitale Laboratorio di sistemi e reti A.A. 2010-2011 Simone Bassis [email protected] Laboratorio di sistemi e reti (Comunicazione Digitale) - A.A. 2010-2011 S. Bassis ([email protected]) Università di Milano – D.S.I. Abbiamo già detto che … o Il problema di Internet, dal punto di vista del quantitativo di dati è da sempre la catalogazione dei contenuti o Una catalogazione necessita di essere o Semplice o Aggiornata o Affidabile • In base ai criteri di ricerca Laboratorio di sistemi e reti (Comunicazione Digitale) - A.A. 2010-2011 S. Bassis ([email protected]) Università di Milano – D.S.I. 510 1 I motori di ricerca o o Sono stati il primo tentativo di “catalogare” la rete Funzionano molto bene o Facili da usare o Sempre disponibili o Si aggiornano da soli o Ma hanno un problema non indifferente o L‟immagine del contenuto all‟interno dell‟archivio di un motore di ricerca potrebbe non essere sufficientemente aggiornata Laboratorio di sistemi e reti (Comunicazione Digitale) - A.A. 2010-2011 S. Bassis ([email protected]) Università di Milano – D.S.I. 511 La dinamicità di Internet o Fintanto che su Internet il contenuto principale è stato rappresentato da pagine statiche e contenuti poco variabili non c‟è stato nessun problema o Oggi, purtroppo, la dinamicità dei dati sulla rete è altissima (e continua ad aumentare) o o o o Quotidiani Previsioni del tempo Siti per annunci di nuove versioni di software Contenuti prodotti dagli utenti finali • • • • Forum Blog Pagine personali … Laboratorio di sistemi e reti (Comunicazione Digitale) - A.A. 2010-2011 S. Bassis ([email protected]) Università di Milano – D.S.I. 512 2 Soluzioni possibili o I motori di ricerca si passano in rivista tutta Internet ogni giorno o Impraticabile • Anche se ai giorni d‟oggi c‟è di dice di essere in grado di farlo o Per alcuni contenuti (tipo news) non sarebbe comunque sufficiente o L‟utente si prende la briga di controllare periodicamente le pagine web dei siti che gli interessano o Tedioso o L‟interfaccia non è uniforme (si perde tempo) o Vado a vedere un sito anche se non c‟è nulla di nuovo Laboratorio di sistemi e reti (Comunicazione Digitale) - A.A. 2010-2011 S. Bassis ([email protected]) Università di Milano – D.S.I. 513 La soluzione praticabile o Chi produce il contenuto mette a disposizione una pagina speciale in cui viene pubblicato un riassunto del contenuto o Facile o Veloce o Trasparente • Può essere costruita automaticamente mentre si crea il contenuto o Non c‟è interfaccia imposta • La pagina non si deve leggere direttamente, può essere recuperata insieme ad altre e poi rappresentata in maniera uniforme e automatica Laboratorio di sistemi e reti (Comunicazione Digitale) - A.A. 2010-2011 S. Bassis ([email protected]) Università di Milano – D.S.I. 514 3 Perché „casting ? Main Entry: broadcast Function: verb Inflected Form(s): broadcast also broad·cast·ed; broad·cast·ing o Transitive verb 1. To scatter or sow (as seed) over a broad area 2. To make widely known 3. To transmit or make public by means of radio or television o Intransitive verb 1. To transmit a broadcast 2. To speak or perform on a broadcast program o Quindi, per associazione o Webcasting: fare quanto detto sopra via web Laboratorio di sistemi e reti (Comunicazione Digitale) - A.A. 2010-2011 S. Bassis ([email protected]) Università di Milano – D.S.I. 515 E il contenuto ? o Nulla si è detto sulla natura del contenuto da distribuire o Testo • Webcasting (newsfeeding) o Audio • Podcasting (indovinate chi lo ha inventato …) o Video • Videocasting Laboratorio di sistemi e reti (Comunicazione Digitale) - A.A. 2010-2011 S. Bassis ([email protected]) Università di Milano – D.S.I. 516 4 RSS o RSS: Really Simple Syndication news o http://www.rssboard.org/ All‟epoca RDF Site Summary Resource Description Framework (RDF) è lo strumento base proposto da W3C per la codifica, lo scambio e il riutilizzo di metadati strutturati e consente l'interoperabilità tra applicazioni che si scambiano informazioni sul Web. o Quando siamo in presenza di un „cast, la pagina di riassunto viene pubblicata il formato XML all‟interno di un namespace definito a priori o In pratica, andiamo a prenderci un XML di cui sappiamo già a priori quali saranno i nomi dei tag e la sintassi o Attenzione: tag e sintassi sono stati variati con le varie versioni, la versione attuale è la 2.0 (v. 2.0.11) o http://en.wikipedia.org/wiki/RSS_(file_format) Syndication • Nella diffusione radiotelevisiva è la vendita dei diritti di trasmissione di programmi radiotelevisivi a singole emittenti televisive locali, senza passare attraverso una rete di emittenti televisive nazionali • è il fenomeno che si crea quando, in ambito giornalistico o editoriale, un giornalista decide di vendere il proprio pezzo, tramite una agenzia specializzata, a più giornali o riviste • Offerta di contenuti informativi, messi a disposizione degli utenti, per essere prelevati ed redistribuiti Laboratorio di sistemi eventualmente e reti (Comunicazione Digitale) - A.A. 2010-2011 517 S. Bassis ([email protected]) Università di Milano – D.S.I. RSS 2.0 DTD <!ELEMENT rss (channel)> <!ATTLIST rss version CDATA #FIXED "2.0"> <!-- A channel can apparently either have one or more items, or just a title, link, and description of its own --> <!ELEMENT channel ((item+)| (title,link,description,(language|copyright| managingEditor|webMaster|pubDate|lastBuildDate| category|generator|docs|cloud|ttl|image| textInput|skipHours|skipDays)*))> <!ELEMENT item ((title|description)+,link?, (author|category|comments|enclosure|guid|pubDate|source)*)> <!ELEMENT <!ELEMENT <!ATTLIST <!ELEMENT <!ATTLIST author (#PCDATA)> category (#PCDATA)> category domain CDATA #IMPLIED> cloud (#PCDATA)> cloud domain CDATA #IMPLIED port CDATA #IMPLIED path CDATA #IMPLIED registerProcedure CDATA #IMPLIED protocol CDATA #IMPLIED> <!ELEMENT comments (#PCDATA)> <!ELEMENT copyright (#PCDATA)> <!ELEMENT description (#PCDATA)> Laboratorio di sistemi e reti (Comunicazione Digitale) - A.A. 2010-2011 S. Bassis ([email protected]) Università di Milano – D.S.I. 518 5 RSS 2.0 DTD <!ELEMENT docs (#PCDATA)> <!ELEMENT enclosure (#PCDATA)> <!ATTLIST enclosure url CDATA #REQUIRED length CDATA #REQUIRED type CDATA #REQUIRED> <!ELEMENT generator (#PCDATA)> <!ELEMENT guid (#PCDATA)> <!ATTLIST guid isPermaLink (true|false) "true"> <!ELEMENT height (#PCDATA)> <!ELEMENT image (url,title,link,(width|height|description)*)> <!ELEMENT language (#PCDATA)> <!ELEMENT lastBuildDate (#PCDATA)> <!ELEMENT link (#PCDATA)> <!ELEMENT managingEditor (#PCDATA)> <!ELEMENT name (#PCDATA)> <!ELEMENT pubDate (#PCDATA)> <!ELEMENT skipDays (#PCDATA)> <!ELEMENT skipHours (#PCDATA)> <!ELEMENT source (#PCDATA)> <!ATTLIST source url CDATA #REQUIRED> <!ELEMENT textInput (title,description,name,link)> <!ELEMENT title (#PCDATA)> <!ELEMENT ttl (#PCDATA)> <!ELEMENT url (#PCDATA)> <!ELEMENT webMaster (#PCDATA)> <!ELEMENT width (#PCDATA)> Laboratorio di sistemi e reti (Comunicazione Digitale) - A.A. 2010-2011 S. Bassis ([email protected]) Università di Milano – D.S.I. 519 Niente panico però o Non tutti i tag vengono utilizzati sempre o Per motivi di compatibilità ci si limita a quelli specificati dalla versione 0.91, che sono molti meno o E neppure quelli vengono utilizzati sempre tutti http://my.netscape.com/publish/formats/rss-0.91.dtd o Peccato che di versioni attualmente in uso ce ne siano ben 9 o E nessuna è completamente compatibile con le precedenti Laboratorio di sistemi e reti (Comunicazione Digitale) - A.A. 2010-2011 S. Bassis ([email protected]) Università di Milano – D.S.I. 520 6 RSS 0.91 <!ELEMENT rss (channel)> <!ATTLIST rss version CDATA #REQUIRED> <!-- must be "0.91"> --> <!ELEMENT channel (title | description | link | language | item+ | rating? | image? | textinput? | copyright? | pubDate? | lastBuildDate? | docs? | managingEditor? | webMaster? | skipHours? | skipDays?)*> <!ELEMENT title (#PCDATA)> <!ELEMENT description (#PCDATA)> <!ELEMENT link (#PCDATA)> <!ELEMENT image (title | url | link | width? | height? | description?)*> <!ELEMENT url (#PCDATA)> <!ELEMENT item (title | link | description)*> <!ELEMENT textinput (title | description | name | link)*> <!ELEMENT name (#PCDATA)> <!ELEMENT rating (#PCDATA)> <!ELEMENT language (#PCDATA)> <!ELEMENT width (#PCDATA)> <!ELEMENT height (#PCDATA)> <!ELEMENT copyright (#PCDATA)> <!ELEMENT pubDate (#PCDATA)> <!ELEMENT lastBuildDate (#PCDATA)> <!ELEMENT docs (#PCDATA)> <!ELEMENT managingEditor (#PCDATA)> <!ELEMENT webMaster (#PCDATA)> <!ELEMENT hour (#PCDATA)> <!ELEMENT day (#PCDATA)> <!ELEMENT skipHours (hour+)> <!ELEMENT skipDays (day+)> Laboratorio di sistemi e reti (Comunicazione Digitale) - A.A. 2010-2011 S. Bassis ([email protected]) Università di Milano – D.S.I. 521 La struttura di un RSS o Il root element è rss o All‟interno di rss c‟è un elemento channel o L‟elemento channel contiene o Degli elementi per identificare il canale • Title • Link • Description • o o item per referenziare dei contenuti Un elemento item contiene dei tag per identificare il contenuto o Title o Link o Description (facoltativo) o o … Uno o più elementi … Per tutti gli altri tag si può fare riferimento al seguente URL o http://www.rssboard.org/rss-specification Laboratorio di sistemi e reti (Comunicazione Digitale) - A.A. 2010-2011 S. Bassis ([email protected]) Università di Milano – D.S.I. 522 7 Un semplice RSS <?xml version="1.0" encoding="ISO-8859-1" ?> <rss version="2.0"> <channel> <title>W3Schools Home Page</title> <link>http://www.w3schools.com</link> <description>Free web building tutorials</description> <item> <title>RSS Tutorial</title> <link>http://www.w3schools.com/rss</link> <description>New RSS tutorial on W3Schools</description> </item> <item> <title>XML Tutorial</title> <link>http://www.w3schools.com/xml</link> <description>New XML tutorial on W3Schools</description> </item> </channel> </rss> Laboratorio di sistemi e reti (Comunicazione Digitale) - A.A. 2010-2011 S. Bassis ([email protected]) Università di Milano – D.S.I. 523 E uno un po‟ più lungo <?xml version="1.0" encoding="iso-8859-1" ?> <rss version="2.0"> <channel> <title>Repubblica.it > Homepage</title> <link>http://www.repubblica.it</link> <description>Repubblica.it: il quotidiano online in tempo reale. </description> <copyright>Copyright 2006 - Gruppo Editoriale l'Espresso</copyright> <language>it-IT</language> <managingEditor>[email protected]</managingEditor> <webMaster>[email protected]</webMaster> <lastBuildDate>Sun, 19 Nov 2006 14:48:05 GMT</lastBuildDate> [...] <generator>Atex Presweb Builder 4.3</generator> [...] <ttl>30</ttl> Laboratorio di sistemi e reti (Comunicazione Digitale) - A.A. 2010-2011 S. Bassis ([email protected]) Università di Milano – D.S.I. 524 8 E uno un po‟ più lungo <image> <url>http://www.repubblica.it/images/logo_repubblica.gif</url> <title>Repubblica.it</title> <link>http://www.repubblica.it</link> <width>134</width> <height>19</height> </image> <item> [...] <link>http://www.repubblica.it/2006/11/link_reference</link> [...] <title><![CDATA[ omissis ]]></title> <description><![CDATA[ big omissis ]]></description> <author>[email protected]</author> <category domain="http://www.repubblica.it">politica</category> <pubDate>Sun, 19 Nov 2006 13:21:15 GMT</pubDate> </item> [...] </channel> </rss> Laboratorio di sistemi e reti (Comunicazione Digitale) - A.A. 2010-2011 S. Bassis ([email protected]) Università di Milano – D.S.I. 525 Tag aggiuntivi o Può capitare che vengano aggiunti dei tag non aderenti alle specifiche RSS per rendere più espressivo il contenuto o Adattarlo a certi programmi/browser o Dare informazioni aggiuntive o o Li si trova in un formato del tipo “xxx:…” Esistono delle specifiche per estendere il namespace o RDF : Resource Description Framework • http://www.w3.org/RDF/ • http://www.w3schools.com/rdf/ o Un esempio o http://rss.slashdot.org/Slashdot/slashdot Laboratorio di sistemi e reti (Comunicazione Digitale) - A.A. 2010-2011 S. Bassis ([email protected]) Università di Milano – D.S.I. 526 9 Podcast/Videocast o Non cambia assolutamente nulla o Tra i vari tag troveremo un link ad un contenuto multimediale (mp3/mov/avi) o Per farlo possono essere usati i seguenti tag o Enclosure • http://www.deejay.it/deejay_chiama_italia.xml • http://www.capital.it/capital/podcast/rss/mondiali o Guid • http://feeds.feedburner.com/mtvnews/DailyHeadlines/Audio Laboratorio di sistemi e reti (Comunicazione Digitale) - A.A. 2010-2011 S. Bassis ([email protected]) Università di Milano – D.S.I. 527 Podcast e tag aggiuntivi o Quasi sempre negli RSS per podcasting vengono aggiunti tag ad uso e consumo di certe applicazioni o Li si trova nel formato “itunes:…” dove itunes rappresenta il namespace <rss xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" version="2.0"> o Sono dei metadati aggiuntivi, non necessari per fruire del servizio, però possono essere utili per ottenere informazioni da fornire all‟utente http://www.apple.com/itunes/podcasts/specs.html Laboratorio di sistemi e reti (Comunicazione Digitale) - A.A. 2010-2011 S. Bassis ([email protected]) Università di Milano – D.S.I. 528 10 RSS o ATOM? o RSS vs. ATOM o Standard de facto vs. Standard IETF o È vero • Risolve molte ambiguità di RSS – Dovute a retro-compatibilità con versioni precedenti • È modulare • Offre un formato standard dei contenuti • È rivolto all‟internazionalizzazione o Ma… • Attualmente viene usato in 15% dei siti web Laboratorio di sistemi e reti (Comunicazione Digitale) - A.A. 2010-2011 S. Bassis ([email protected]) Università di Milano – D.S.I. 529 Esercizio 45 Si vada a prendere un newsfeed RSS a piacere e si visualizzino in maniera testuale i titoli dei suoi contenuti. Qualche puntatore per chi avesse poca fantasia o http://www.repubblica.it/rss/homepage/rss2.0.xml o http://images.apple.com/trailers/rss/newtrailers.rss Laboratorio di sistemi e reti (Comunicazione Digitale) - A.A. 2010-2011 S. Bassis ([email protected]) Università di Milano – D.S.I. 530 11 Esercizio 46 Si vada a prendere un podcast a piacere e si scarichi il contenuto multimediale del primo elemento nella lista dei contenuti. Qualche puntatore per chi avesse poca fantasia o o o http://www.deejay.it/deejay_chiama_italia.xml http://www.capital.it/capital/podcast/rss/mondiali http://feeds.feedburner.com/mtvnews/DailyHeadlines/Audio Laboratorio di sistemi e reti (Comunicazione Digitale) - A.A. 2010-2011 S. Bassis ([email protected]) Università di Milano – D.S.I. 531 XHTML: formato di convergenza HTML XML o È nato per descrivere dati e la loro struttura intrinseca o È nato per visualizzare dati o Tutti i documenti XML devono rispettare in modo rigoroso certe regole sintattiche o Le regole sintattiche possono essere rispettate in modo blando Perché non fondere la capacità espressiva di HTML con la correttezza formale ed estensibilità di XML? Laboratorio di sistemi e reti (Comunicazione Digitale) - A.A. 2010-2011 S. Bassis ([email protected]) Università di Milano – D.S.I. 532 12 XHTML o eXtensible HyperText Markup Language o Intersezione tra HTML e XML, o meglio o Una riformulazione di HTML in XML o È inteso essere il successore di HTML 4.01 basato su XML 1.0 o E‟ già uno standard W3C o XHTML 1.0 dal 26 gennaio 2000 o XHTML 1.1 dal 31 maggio 2001 o XHTML 2.0 (draft specification dal 26 luglio 2006) • Ancora non si sono messi d‟accordo • Difficilmente riuscirà a tener testa a HTML5 Laboratorio di sistemi e reti (Comunicazione Digitale) - A.A. 2010-2011 S. Bassis ([email protected]) Università di Milano – D.S.I. 533 A proposito di HTML5 o Inzialmente sviluppato da WHATWG o o o E‟ attualmente un draft W3C o o http://dev.w3.org/html5/spec/Overview.html Migliora il disaccoppiamento tra o o o o struttura, definita dal markup visualizzazione (tipo di carattere, colori, eccetera), definite dalle direttive di stile, contenuti di una pagina web, definiti dal testo vero e proprio Quali novità? o o Nuovi markup Nuove API • • o una breve parentesi Web Hypertext Application Technology Working Group, fondato nel 2004 da Apple, Mozilla Foundation e Opera Software http://www.whatwg.org/specs/web-apps/current-work/multipage/ A supporto di Javascript, Geolocalizzazione, Web SQL Database, … Cross-document messaging, MIME type e protocol handler, HTML5 Storage (al posto dei cookie)… Quindi? o o Rimanete aggiornati Molte API saranno introdotte anche in Java per allinearsi a HTML5 o Non stiamo perdendo tempo con tecnologie obsolete • Capite queste, le nuove saranno un gioco da ragazzi! Laboratorio di sistemi e reti (Comunicazione Digitale) - A.A. 2010-2011 S. Bassis ([email protected]) Università di Milano – D.S.I. 534 13 Perché XHTML ? o Per permettere a molti piccoli apparecchi portatili di interagire con il web o Non dotati di risorse sufficienti ad interpretare il linguaggio HTML o Per alleggerire il carico di parser o user-agent in generale o Per interpretarne più facilmente il contenuto o Per poter restituire un errore in caso di pagine non ben formate o È possibile includere nuovi tag attraverso namespace XML o MathML o Scalable Vector Graphics o … Laboratorio di sistemi e reti (Comunicazione Digitale) - A.A. 2010-2011 S. Bassis ([email protected]) Università di Milano – D.S.I. 535 Un nuovo formato? o Fortunatamente no o Le differenze sintattiche principali tra XHTML 1.0 e HTML 4.01 sono minime o I tag XHTML devono essere annidati correttamente o I tag XHTML devono sempre essere chiusi n.b. anche quelli vuoti <br /> <img … /> o I tag XHTML vanno scritti in minuscolo o Gli attributi XHTML (compresi quelli numerici) devono essere scritti tra apici doppi o I documenti XHTML devono avere un solo root element (<html>) o E attenzione ai caratteri speciali es: no “&” ma “&” Laboratorio di sistemi e reti (Comunicazione Digitale) - A.A. 2010-2011 S. Bassis ([email protected]) Università di Milano – D.S.I. 536 14 Un esempio SI NO <html> <head> <title>BAD XHTML</title> <BODY> <h1>Bad HTML </H1> <br> <b><i>Acquisti</b></i> <br> <UL> <li> Coffee <li> Tea </UL> </BODY> <html> <head> <title>CORRECT</title> </head> <body> <h1>Bad HTML </h1> <br /> <b><i>Acquisti</i></b> <br /> <ul> <li> Coffee </li> <li> Tea </li> </ul> </body> </html> Laboratorio di sistemi e reti (Comunicazione Digitale) - A.A. 2010-2011 S. Bassis ([email protected]) Università di Milano – D.S.I. 537 DTD o Pensavamo di essercene liberati ? o Il DTD definisce o la struttura sintattica di un documento XHTML o Quali tag e attributi possono essere utilizzati o Quali tag sono mandatory (obbligatori) o Attenzione: non esiste un unico DTD in realtà anche HTML 4.01 ne prevede tre Laboratorio di sistemi e reti (Comunicazione Digitale) - A.A. 2010-2011 S. Bassis ([email protected]) Università di Milano – D.S.I. 538 15 Diversi DTD o Per questioni di compatibilità con vecchie versioni HTML o XHTML 1.0 Transitional: nato per favorire la migrazione dal HTML 3.2 • Permette l‟uso di tag deprecati o XHTML 1.0 Strict: separa il contenuto dal layout (definito mediante i CSS) • Come HTML 4.01 ma secondo le regole XML • È il più rigoroso tra i tre DTD o XHTML 1.0 Frameset: per suddividere la finestra visualizzata dal browser in diversi frame • Retrocompatibile anche con i frame • Ora deprecati Laboratorio di sistemi e reti (Comunicazione Digitale) - A.A. 2010-2011 S. Bassis ([email protected]) Università di Milano – D.S.I. 539 Forma generale Un documento minimale deve contenere: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html> <head> <title>simple document</title> </head> <body> <p>a simple paragraph</p> </body> </html> Laboratorio di sistemi e reti (Comunicazione Digitale) - A.A. 2010-2011 S. Bassis ([email protected]) Università di Milano – D.S.I. 540 16 DOCTYPE o o Sta per Document Type Declaration Dichiara al browser il DTD di riferimento o XHTML 1.0 Strict • <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> o XHTML 1.0 Transitional • <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> o XHTML 1.0 Frameset • <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd"> Laboratorio di sistemi e reti (Comunicazione Digitale) - A.A. 2010-2011 S. Bassis ([email protected]) Università di Milano – D.S.I. Attenzione. Anche il formato doctype potrebbe cambiare con HTML5 541 Namespace e coding o E‟ possibile specificare la codifica o E andrebbe indicato il namespace usato <?xml version="1.0" encoding="UTF-8"?> xmlns=“http://www.w3.org/1999/xhtml” <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1strict.dtd"> <html xmlns=“http://www.w3.org/1999/xhtml”> <head> <title>simple document</title> </head> <body> <p>a simple paragraph</p> </body> </html> Laboratorio di sistemi e reti (Comunicazione Digitale) - A.A. 2010-2011 S. Bassis ([email protected]) Università di Milano – D.S.I. 542 17 Conversione HTML - XHTML o È sufficiente 1. Ripulire il codice • • Utilizzando i tag appropriati Rispettando la sintassi XML (chiudendo tutti i tag) 2. Aggiungere il DOCTYPE o Esistono programmi (Validator) per controllare che il documento sia conforme ad uno schema DTD o http://validator.w3.org/ o o Nemmeno il sito del corso di laboratorio rimane valido Esistono tool automatici per ripulire un codice HTML o http://www.w3.org/People/Raggett/tidy/ Laboratorio di sistemi e reti (Comunicazione Digitale) - A.A. 2010-2011 S. Bassis ([email protected]) Università di Milano – D.S.I. 543 Disseminazione di XHTML o Lato web-server: Completa o Similarità tra HTML 4.01 e XHTML 1.0 o È possibile pubblicare documenti XHTML compatibili con HTML • Diventa una nuova versione di HTML (text/html) • Trattata dai browser come HTML o Lato client: solo parziale o La maggior parte dei browser (e.g. IE 7) disabilita (di default) il riconoscimento della semantica XHTML o Alcune documenti di tipo “application/xhtml+xml” vengono scaricati piuttosto che visualizzati • Nell‟ottica di avere un processore xhtml associato a file xhtml o Parecchi browser hanno comportamenti impredicibili in funzione di MIME type diversi http://www.w3.org/People/mimasa/test/xhtml/media-types/results http://www.webdevout.net/browser-support Laboratorio di sistemi e reti (Comunicazione Digitale) - A.A. 2010-2011 S. Bassis ([email protected]) Università di Milano – D.S.I. 544 18 Parlando di MIME Type o o o Secondo le specifiche si dovrebbe usare application/xhtml+xml Alternativamente application/xml o text/xml text/html non andrebbe usato o Codifiche di default diverse o Rendering diverso o Altri aspetti • o Es. agli elementi <script> e <style> in XHTML inviati come text/html devono essere applicati degli escape usando stringhe complicate Alcuni browser trattano in modo simile text/* e application/* altri no o In questo caso fanno scaricare una pagina piuttosto che visualizzarla o O chiedono all‟utente quale programma deve essere usato per aprirla Laboratorio di sistemi e reti (Comunicazione Digitale) - A.A. 2010-2011 S. Bassis ([email protected]) Università di Milano – D.S.I. 545 Alcuni siti che usano XHTML o Alcuni abbastanza noti o http://www.repubblica.it/ o http://w3school.org/ o http://wikipedia.org/ o Altri un po‟ meno o http://www.mtv.it/ o http://www.105.net/ o http://www.comingsoon.it/ o Altri ancora si spacciano come XHTML-compliant o Ma non lo sono o E sono molti più di quanto pensiate Laboratorio di sistemi e reti (Comunicazione Digitale) - A.A. 2010-2011 S. Bassis ([email protected]) Università di Milano – D.S.I. 546 19 Esercizio 47 Visualizzare tutti i titoli di livello 1 e 2 (<h1> e <h2>) del documento che trovate all‟URL http://w3schools.com/xhtml/ Se ne faccia una versione utilizzando DOM. Volendo potete provare a fornirne una variante attraverso SAX, StAX, o semplicemente usando il riconoscimento di sottostringhe Laboratorio di sistemi e reti (Comunicazione Digitale) - A.A. 2010-2011 S. Bassis ([email protected]) Università di Milano – D.S.I. 547 Esercizio 48 Usando il metodo GET si richieda una pagina dinamica su http://www.wikipedia.org corrispondente ad un argomento che vi interessa. Scaricate tutte le immagini referenziate all‟interno della pagina ottenuta. Suggerimento: per capire quali parametri usare nella richiesta GET, controllate come è strutturato il <form> all’interno della pagina principale Provate a ripetere l’esercizio usando il metodo POST su Google di una ricerca che abbia come target una immagine, forzando Google stesso a ritornare un’immagine Laboratorio di sistemi e reti (Comunicazione Digitale) - A.A. 2010-2011 S. Bassis ([email protected]) Università di Milano – D.S.I. 548 20 Esercizio 49 o Partendo dal feed RSS http://www.repubblica.it/rss/homepage/rss2.0.xml 1. Visualizzate i titoli degli <item>, 2. Fate in modo che l‟utente scelga un titolo 3. Richiedete la pagina in cui risiede l‟articolo corrispondente al titolo 4. Di questa pagina visualizzate il contenuto dei tag da <h1> a <h6> (se presenti) in maniera testuale Laboratorio di sistemi e reti (Comunicazione Digitale) - A.A. 2010-2011 S. Bassis ([email protected]) Università di Milano – D.S.I. 549 E XHTML 1.1 ?? o XHTML 1.1: Module-based XHTML o è una riformulazione di XHTML 1.0 Strict o Non accetta né tag o attributi deprecati né la struttura a frameset. o Supporta i tag del cosiddetto markup ruby (il set di caratteri delle lingue orientali) o Il layout è controllato solamente da CSS o Fornisce un framework di modularizzazione http://www.w3.org/TR/xhtml-modularization/ XHTML2 altro non è se non una rivisitazione dei moduli XHTML1.1 Laboratorio di sistemi e reti (Comunicazione Digitale) - A.A. 2010-2011 S. Bassis ([email protected]) Università di Milano – D.S.I. 550 21 Modularizzazione o Per certe applicazione XHTML è troppo complesso, per altre troppo semplice o Si definiscono piccoli insiemi (moduli) ben definiti di elementi XHTML per o Scegliere quali elementi saranno usati utilizzando moduli standard o Aggiungere estensioni ad XHTML, usando XML, sempre rimanendo nello standard o Semplificare XHTML per dispositivi particolari, come cellulari, palmari, … o Estendere XHTML per applicazioni più complesse aggiungendo funzionalità (usando XML) come MathML, SVG, Voice and Multimedia o Definire nuovi profili, come XHTML Basic (una versione ipersemplificata di XHTML per cellulari, palmari,…). Laboratorio di sistemi e reti (Comunicazione Digitale) - A.A. 2010-2011 S. Bassis ([email protected]) Università di Milano – D.S.I. 551 Le tecnologie convergono o Il web come una piattaforma di sviluppo o E non solo un modo di fruire i dati o Dopo 15 anni di evoluzione o Grazie a una serie di recenti tecnologie • Pagine dinamiche POST/GET • RSS • XHTML o Sempre più nelle nuvole o dai web service • Coi più svariati protocolli • Non sempre ben supportati o al cloud computing • Nelle sue forme diverse • Tramite l‟ausilio di API definite ad hoc • Si è al giorno d‟oggi affermato prepotentemente Laboratorio di sistemi e reti (Comunicazione Digitale) - A.A. 2010-2011 S. Bassis ([email protected]) Università di Milano – D.S.I. 552 22 Ma le pagine web sono infide o Il contenuto è a volte progettato espressamente per i browser o che, si sa, sono dei programmi estremamente sofisticati o Se vogliamo implementare qualche cosa di semplice occorre fare delle semplificazioni o Siamo già parzialmente sicuri sulla conformazione della pagina o Sappiamo che una pagina non è quello che sembra o Il nostro programma però non funzionerà più non appena la pagina verrà variata (anche se di poco) Laboratorio di sistemi e reti (Comunicazione Digitale) - A.A. 2010-2011 S. Bassis ([email protected]) Università di Milano – D.S.I. 553 Il caso di wikipedia … o Quanti di voi sono andati a vedere “che cosa restituisce wikipedia” ? o Molto spesso siamo superficiali e tentiamo di scrivere subito un programma che faccia tutto quanto o Neanche Brian Kernighan scrive programmi che funzionano al primo colpo o o Bisogna andare passo passo e controllare che ogni volta i risultati siano quelli attesi A volte, farlo con un programma potrebbe essere scomodo o Considerate l‟opportunità di farlo con telnet (o putty, web-sniffer, HTTP-Live Header di Firefox, firebug…) Laboratorio di sistemi e reti (Comunicazione Digitale) - A.A. 2010-2011 S. Bassis ([email protected]) Università di Milano – D.S.I. 554 23 La homepage $ telnet www.wikipedia.org 80 Trying 145.97.39.155... Connected to rr.knams.wikimedia.org. Escape character is '^]'. GET http://www.wikipedia.org/ HTTP/1.0 HTTP/1.0 200 OK Date: Sun, 26 Nov 2006 21:31:11 GMT Server: Apache X-Powered-By: PHP/5.1.4 Cache-Control: s-maxage=3600, must-revalidate, max-age=0 Last-Modified: Sat, 25 Nov 2006 03:46:29 GMT Content-Type: text/html; charset=utf-8 X-Cache: MISS from sq30.wikimedia.org X-Cache-Lookup: HIT from sq30.wikimedia.org:80 Age: 59 X-Cache: HIT from knsq7.knams.wikimedia.org X-Cache-Lookup: HIT from knsq7.knams.wikimedia.org:80 Via: 1.0 sq30.wikimedia.org:80 (squid/2.6.STABLE5), 1.0 knsq7.knams.wikimedia.org:80 (squid/2.6.STABLE5) Connection: close [...] Laboratorio di sistemi e reti (Comunicazione Digitale) - A.A. 2010-2011 S. Bassis ([email protected]) Università di Milano – D.S.I. 555 Il codice del form <form action="http://www.wikipedia.org/search-redirect.php" id="searchform"> <fieldset style="border: 1px solid #aaaaaa; background-color: #f9f9f9; padding: 0.7em; width: auto; margin-top: 0.5em;"> <input type="text" name="search" size="20" id="searchInput" style="vertical-align: top; padding: 0; margin: 0; font-size: 1.2em;" /> <select name="language" style="vertical-align: top; padding: 0; margin: 0 0.4em;" > <option value="de" lang="de" xml:lang="de">Deutsch</option> <option value="en" lang="en" xml:lang="en" selected="selected">English</option> <option value="es" lang="es" xml:lang="es">Español</option> <option value="fr" lang="fr" xml:lang="fr">Français</option> <option value="it" lang="it" xml:lang="it">Italiano</option> <option value="nl" lang="nl" xml:lang="nl">Nederlands</option> <option value="ja" lang="ja" xml:lang="ja">æ¥æ¬èª</option> <option value="pl" lang="pl" xml:lang="pl">Polski</option> <option value="pt" lang="pt" xml:lang="pt">Português</option> <option value="ru" lang="ru" xml:lang="ru">Ð ÑÑÑкий</option> <option value="sv" lang="sv" xml:lang="sv">Svenska</option> <option value="zh" lang="zh" xml:lang="zh">ä¸-æ</option> </select> <input type="submit" name="go" value=" > " class="searchButton" style="vertical-align: top; padding: 0; margin: 0; font-size: 1.2em;" /> <input type="hidden" name="go" value="Go" /> </fieldset> </form> Laboratorio di sistemi e reti (Comunicazione Digitale) - A.A. 2010-2011 S. Bassis ([email protected]) Università di Milano – D.S.I. 556 24 Proviamo con una GET $ telnet www.wikipedia.org 80 Trying 145.97.39.155... Connected to rr.knams.wikimedia.org. Escape character is '^]'. GET http://www.wikipedia.org/search-redirect.php?language=it&search=c64&go=Go HTTP/1.0 HTTP/1.0 302 Moved Temporarily Date: Sun, 26 Nov 2006 21:36:04 GMT Server: Apache X-Powered-By: PHP/5.1.4 Location: http://it.wikipedia.org/wiki/Special:Search?search=c64&go=Go Content-Type: text/html X-Cache: MISS from sq23.wikimedia.org X-Cache-Lookup: MISS from sq23.wikimedia.org:80 X-Cache: MISS from knsq1.knams.wikimedia.org X-Cache-Lookup: MISS from knsq1.knams.wikimedia.org:80 Via: 1.0 sq23.wikimedia.org:80 (squid/2.6.STABLE5), 1.0 knsq1.knams.wikimedia.org:80 (squid/2.6.STABLE5) Connection: close Connection closed by foreign host. Laboratorio di sistemi e reti (Comunicazione Digitale) - A.A. 2010-2011 S. Bassis ([email protected]) Università di Milano – D.S.I. 557 Redirezioni e richieste aggiuntive da gestire $ telnet www.wikipedia.org 80 Trying 145.97.39.155... Connected to rr.knams.wikimedia.org. Escape character is '^]'. GET http://it.wikipedia.org/wiki/Special:Search?search=c64&go=Go HTTP/1.0 HTTP/1.0 403 Forbidden Date: Sun, 26 Nov 2006 21:38:26 GMT Server: Apache X-Powered-By: PHP/5.1.4 Content-Type: text/html X-Cache: MISS from sq28.wikimedia.org X-Cache-Lookup: MISS from sq28.wikimedia.org:80 X-Cache: MISS from knsq3.knams.wikimedia.org X-Cache-Lookup: MISS from knsq3.knams.wikimedia.org:80 Via: 1.0 sq28.wikimedia.org:80 (squid/2.6.STABLE5), 1.0 knsq3.knams.wikimedia.org:80 (squid/2.6.STABLE5) Connection: close Please provide a User-Agent headerConnection closed by foreign host. Laboratorio di sistemi e reti (Comunicazione Digitale) - A.A. 2010-2011 S. Bassis ([email protected]) Università di Milano – D.S.I. 558 25 Un‟altra redirezione ??? $ telnet www.wikipedia.org 80 Trying 145.97.39.155... Connected to rr.knams.wikimedia.org. Escape character is '^]'. GET http://it.wikipedia.org/wiki/Special:Search?search=c64&go=Go HTTP/1.0 User-Agent: my_java_program/1.0 HTTP/1.0 302 Moved Temporarily Date: Sun, 26 Nov 2006 21:40:11 GMT Server: Apache X-Powered-By: PHP/5.1.1 Vary: Accept-Encoding,Cookie Expires: Thu, 01 Jan 1970 00:00:00 GMT Cache-Control: private, s-maxage=0, max-age=0, must-revalidate Location: http://it.wikipedia.org/wiki/C64 Content-Type: text/html X-Cache: MISS from sq19.wikimedia.org X-Cache-Lookup: MISS from sq19.wikimedia.org:80 X-Cache: MISS from knsq1.knams.wikimedia.org X-Cache-Lookup: MISS from knsq1.knams.wikimedia.org:80 Via: 1.0 sq19.wikimedia.org:80 (squid/2.6.STABLE5), 1.0 knsq1.knams.wikimedia.org:80 (squid/2.6.STABLE5) Connection: close Connection closed by foreign host. Laboratorio di sistemi e reti (Comunicazione Digitale) - A.A. 2010-2011 S. Bassis ([email protected]) Università di Milano – D.S.I. 559 E finalmente … $ telnet www.wikipedia.org 80 Trying 145.97.39.155... Connected to rr.knams.wikimedia.org. Escape character is '^]'. GET http://it.wikipedia.org/wiki/C64 HTTP/1.0 User-Agent: my_java_program/1.0 HTTP/1.0 200 OK Date: Sun, 26 Nov 2006 21:42:02 GMT Server: Apache X-Powered-By: PHP/5.1.2 Content-Language: it Vary: Accept-Encoding,Cookie Cache-Control: private, s-maxage=0, max-age=0, must-revalidate Last-Modified: Sun, 26 Nov 2006 15:31:54 GMT Content-Type: text/html; charset=utf-8 X-Cache: MISS from sq22.wikimedia.org X-Cache-Lookup: MISS from sq22.wikimedia.org:80 X-Cache: MISS from knsq6.knams.wikimedia.org X-Cache-Lookup: MISS from knsq6.knams.wikimedia.org:80 Via: 1.0 sq22.wikimedia.org:80 (squid/2.6.STABLE5), 1.0 knsq6.knams.wikimedia.org:80 (squid/2.6.STABLE5) Connection: close <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="it" lang="it" dir="ltr"> <head> Laboratorio di sistemi e reti (Comunicazione Digitale) - A.A. 2010-2011 S. Bassis ([email protected]) Università di Milano – D.S.I. 560 26 Per chi vuole essere pignolo … … in grado però di processare la pagina con 1 sola istruzione $ telnet www.wikipedia.org 80 | sed -ne 's/^.*< *img .*src="\([^"]*\)".*$/\1/gp' GET http://it.wikipedia.org/wiki/C64 HTTP/1.0 User-Agent: my_java_program/1.0 http://upload.wikimedia.org/wikipedia/commons/thumb/8/81/Wikimedia-logo.svg/17px-Wikimedialogo.svg.png http://upload.wikimedia.org/wikipedia/commons/thumb/9/9d/Commodore64.jpg/350px-Commodore64.jpg /skins-1.5/common/images/magnify-clip.png http://upload.wikimedia.org/wikipedia/commons/thumb/1/17/C64_artistic_closeup.jpg/180pxC64_artistic_closeup.jpg /skins-1.5/common/images/magnify-clip.png http://upload.wikimedia.org/wikipedia/commons/thumb/6/67/C64.jpg/180px-C64.jpg /skins-1.5/common/images/magnify-clip.png http://upload.wikimedia.org/wikipedia/it/thumb/c/c9/C64_enduro_racer.gif/180pxC64_enduro_racer.gif /skins-1.5/common/images/magnify-clip.png … Connection closed by foreign host. http://upload.wikimedia.org/wikipedia/commons/thumb/6/67/C64.jpg/180px-C64.jpg /skins-1.5/common/images/magnify-clip.png http://upload.wikimedia.org/wikipedia/commons/thumb/7/7d/Commodore64_DTV_mugshotx600.jpg/180px-Commodore64_DTV_mugshot-x600.jpg /skins-1.5/common/images/magnify-clip.png http://upload.wikimedia.org/wikipedia/it/thumb/2/22/Commodore_Logo%281985%29.png/75pxCommodore_Logo%281985%29.png /skins-1.5/common/images/poweredby_mediawiki_88x31.png /images/wikimedia-button.png Laboratorio di sistemi e reti (Comunicazione Digitale) - A.A. 2010-2011 S. Bassis ([email protected]) Università di Milano – D.S.I. 561 Come Mungere dati da una pagina web o Non è quasi mai semplice o Chi fa il sito vuole che voi lo usiate, così vedrete anche la pubblicità 1. Comprendere il contenuto o o Esaminare i tag, i form e i vari input al loro interno Capire quali sono i parametri • 2. Fare delle prove o o 3. Possibilmente con telnet (o altri programmi…) Verificare quali header sono richiesti, se il server accetta una GET o una POST… Riuscire a capire la struttura della pagina o o o Potrebbe non essere XHTML Ci sono numerosi tool per la visualizzazione di un albero DOM A volte ci ridurremo a cercare delle stringhe per trovare il contenuto • • 4. Ce ne sono anche di nascosti (hidden) Qualche volta (spesso) potrebbe capitare per un progetto Identificate i tag più robusti (mai fidarsi delle posizioni delle stringhe…) Cercare di seguire il percorso eventualmente fatto da un browser o Redirect ed errori devono essere gestiti Laboratorio di sistemi e reti (Comunicazione Digitale) - A.A. 2010-2011 S. Bassis ([email protected]) Università di Milano – D.S.I. 562 27 Programmare per la rete o Oramai, programmare in rete non vuol più dire scrivere dei programmi che interagiscono tra loro, salvo le dovute eccezioni o P2P o Programmi di gestione della rete stessa o Vuol dire sempre ed esclusivamente interagire con una infrastruttura web o Ci sono così tanti dati la fuori, pronti da prendere, perché mai dovremmo crearne anche di nostri? o E non ci si limita solo ai dati • Pensate ai web-service o al cloud computing Laboratorio di sistemi e reti (Comunicazione Digitale) - A.A. 2010-2011 S. Bassis ([email protected]) Università di Milano – D.S.I. 563 Dai motori di ricerca… o La prima grande sorgente di informazioni disponibile o Indicizzano il contenuto della rete e ci permettono di reperirlo in base a svariati criteri Laboratorio di sistemi e reti (Comunicazione Digitale) - A.A. 2010-2011 S. Bassis ([email protected]) Università di Milano – D.S.I. 564 28 …a Google o Molto più di un motore di ricerca o Google fa molto di più che non solo cercare pagine o o o o o Calcoli Conversioni di valute e grandezze Ricerche su titoli di mercato Addirittura afferma di prevedere il futuro :O Le pagine NON sono XHTML, tuttavia google stesso ci aiuta o http://code.google.com/intl/it-CH/ Laboratorio di sistemi e reti (Comunicazione Digitale) - A.A. 2010-2011 S. Bassis ([email protected]) Università di Milano – D.S.I. 565 …e oltre o o Esistono sconfinati (più o meno) database di contenuti già organizzati e che possono essere interrogati via web XHTML o o o o o o http://www.m-w.com/ http://www.wikipedia.org/ http://www.cddb.com/ (http://www.gracenote.com/) http://www.archive.org/ http://msdn.microsoft.com/ Non XHTML o http://www.imdb.com/ o http://www.amazon.com/ o http://www.internic.net/whois.html Laboratorio di sistemi e reti (Comunicazione Digitale) - A.A. 2010-2011 S. Bassis ([email protected]) Università di Milano – D.S.I. 566 29 Per chi ha voglia di approfondire Non solo il software in grado di eseguire ricerche mirate sul popolare motore di ricerca… R. Dornfest, P. Bausch, T. Calishain “Google Hacks” 3° edizione, O’Reilly ISBN 0-59-652706-3 Laboratorio di sistemi e reti (Comunicazione Digitale) - A.A. 2010-2011 S. Bassis ([email protected]) Università di Milano – D.S.I. 567 Esercizio 50 Cercate di capire come funziona il form di Google e poi effettuate una ricerca per “Università di Milano” Ricordatevi che: 1. Gli spazi vanno indicati come “%20” 2. Le lettere accentate non vengono riconosciute Visualizzare il primo link restituito. La pagina non è XHTML (sarebbe stato troppo facile) però possiamo sempre cercare delle sottostringhe per identificare il contenuto Tutti i link principali sono marcati con un <h#>, con # un numero da 1 a 6, ma potrebbero esserci anche altre vie molto più semplici Laboratorio di sistemi e reti (Comunicazione Digitale) - A.A. 2010-2011 S. Bassis ([email protected]) Università di Milano – D.S.I. 568 30 Esercizio 51 Si provi a fare la stessa operazione dell‟Esercizio 50 con yahoo.com. Yahoo.com è XHTML (per fortuna) Suggerimento: date un’occhiata attenta al sorgente della pagina dopo aver effettuato una ricerca. Esiste la possibilità (spesso non nota) di richiedere la pagina in un formato “alternativo” Laboratorio di sistemi e reti (Comunicazione Digitale) - A.A. 2010-2011 S. Bassis ([email protected]) Università di Milano – D.S.I. 569 Il web visto dall’altra parte o Molto spesso si pensa solo a progettare dei client per la rete o A volte può essere interessante e utile sviluppare un programma che viene contattato da un browser web o Per manipolare contenuti o fruire di servizi remoti o Fornire interfacce davvero platform independent o E non stiamo parlando solo di proxy Laboratorio di sistemi e reti (Comunicazione Digitale) - A.A. 2010-2011 S. Bassis ([email protected]) Università di Milano – D.S.I. 570 31 Content aggregation o Molto spesso è interessante sviluppare uno pseudo web server per l‟aggregazione di contenuti presi dalla rete o Le pagine di tale web server non risiedono fisicamente sul nodo, ma vengono create partendo da dati presi (da più sorgenti) disponibili su Internet Di tutto questo il browser ne è all‟oscuro o o Richiede un servizio e tale gli viene erogato o Senza entrare nei dettagli di come questo venga implementato Laboratorio di sistemi e reti (Comunicazione Digitale) - A.A. 2010-2011 S. Bassis ([email protected]) Università di Milano – D.S.I. 571 Esempio di content aggregation o È possibile sviluppare content aggregator all‟interno del quale ogni pagina viene poi convertita in un RSS di riferimento Se sono interessato a http://feeds.aol.com/rss_2.0/entertainment/movies/newintheaters_mf.rss Potrei usare una dicitura del tipo http://localhost/rss?http://feeds.aol.com/rss_2.0/entertainment/movi es/newintheaters_mf.rss o o Potrei passare al browser più RSS (RSS reader) L‟RSS che verrà fornito al browser potrebbe essere arricchito di una serie di link ottenuti, ad esempio, dalla ricerca del titolo del film tramite google o yahoo Laboratorio di sistemi e reti (Comunicazione Digitale) - A.A. 2010-2011 S. Bassis ([email protected]) Università di Milano – D.S.I. 572 32 Esercizio 52 Realizzare un programma che svolga le funzioni di un server web ma che in realtà rielabora informazioni di Google. Alla richiesta di un URL del tipo http://localhost/myapp?key=val dove myapp indica il nome dell‟applicazione Java, il termine val viene cercato su Google e la pagina risultante rielaborata, quando key=“search”. Il browser deve visualizzare solo i link relativi ai titoli dei documenti riportati nella prima pagina Laboratorio di sistemi e reti (Comunicazione Digitale) - A.A. 2010-2011 S. Bassis ([email protected]) Università di Milano – D.S.I. 573 Esercizio 53 Si modifichi l‟applicativo sviluppato per l‟Esercizio 52 in modo da avere due chiavi. La prima è la stessa dell‟Esercizio precedente, mentre la seconda (“items”) indica il numero di item che vengono restituiti dal server a seguito della ricerca. Laboratorio di sistemi e reti (Comunicazione Digitale) - A.A. 2010-2011 S. Bassis ([email protected]) Università di Milano – D.S.I. 574 33 XML o non XML o o Abbiamo visto parecchi pregi di XML E un difetto o È un po‟ troppo verboso o Spesso ci basterebbe un linguaggio per scambiare dati più light o Che sia testuale e leggibile per gli esseri umani o Che sia semplice da parsare e generare per le macchine o JSON (RFC4627) o È uno standard de facto • Addirittura Google e Yahoo offrono feed JSON • Nonostante nato nella State Software da parte di Douglas Crockford o Per rappresentare strutture dati semplici e array associativi • Nonostante nato come dialetto di JavaScript e AJAX o È indipendente dal linguaggio di programmazione • Ma usa convenzioni che sono familiari per i programmatori di linguaggi della famiglia C – C, C++, C#, Java, JavaScript, Perl, Python Laboratorio di sistemi e reti (Comunicazione Digitale) - A.A. 2010-2011 S. Bassis ([email protected]) Università di Milano – D.S.I. 575 JSON Utile quando si ha a che fare con: o Numeri o o Stringhe o o Una sequenza ordinata di valori, separati da virgole e incluse in parentesi quadre Oggetti o o true and false Array o o double-quoted Unicode con backslash escaping) Booleani o o interi, reali o floating point null Una collezione di coppie chiave:valore, separate da virgole e incluse in parentesi graffe { <Person firstName="John" lastName="Smith"> } "firstName": "John", <address> "lastName": "Smith", <streetAddress>21 2nd Street</streetAddress> "address": { <city>New York</city> "streetAddress": "21 2nd Street", <state>NY</state> <postalCode>10021</postalCode> "city": "New York", </address> "state": "NY", <phoneNumber type="home">212 555 1234</phoneNumber> "postalCode": "10021" <phoneNumber type="fax">646 555-4567</phoneNumber> }, </Person> "phoneNumbers": [ { "type": "home", "number": "212 555-1234" }, { "type": "fax", "number": "646 555-4567" } ] Per altri tipi di dati più complessi Laboratorio di sistemi e reti (Comunicazione Digitale) - A.A. 2010-2011 S. Bassis ([email protected]) Università di Milano – D.S.I. meglio usare XML 576 34 La sintassi di JSON Tipo Inizia con oggetto { Finisce con } Contiene o è Membri membro esempio {…} Coppia, altri membri coppia Nome (stringa) valore Nome e valore separati da “:” “FirstName”:“Enrico” nome Il nome dell‟attributo : Una stringa “username” valore : Il valore attuale Stringa, numero, oggetto, array, null, booleano “C. Enrico Rossi”, true, 01234, [...], {...} array [ ] elementi [“mobile”, “web”, “apps”] elemento Valori, altri elementi Risposta: JSON-Time (Richiesta HTTP e risposta JSON) { "tz": "US\/Central", "hour": 15, "datetime": "Tue, 05 Aug 2008 15:02:27 -0500", "second": 27, "error": false, "minute": 2 Richiesta: http://json-time.appspot.com/time.json?tz=US/Central } Laboratorio di sistemi e reti (Comunicazione Digitale) - A.A. 2010-2011 S. Bassis ([email protected]) Università di Milano – D.S.I. 577 JSON e Java o o o Parsare file JSON è già semplice E Java al solito ci offre diverse classi (package org.json) JSONObject è una collezione non ordinata di coppie nome-valore. o o Forma esterna: stringa delimitata da parentesi graffe con “:” tra nomi e valori, e “,” tra valori e nomi. Forma interna: oggetto con metodi get() e opt() per accedere ai valori (e a valori opzionali) per nome, e put() per aggiungere o modificare valori per nome. • o JSONArray è una sequenza ordinata di valori o o Forma esterna: stringa delimitata da parentesi quadre con “,” che separano I valori. Forma interna: oggetto con metodi get() e opt() per accedere ai valori per indice, e put() per aggiungere o modificare valori. • o o o o I valori possono essere: Boolean, JSONArray, JSONObject, Number, e String, o l‟oggetto JSONObject.NULL I valori possono essere: Boolean, JSONArray, JSONObject, Number, e String, o l‟oggetto JSONObject.NULL JSONStringer è un tool per produrre rapidamente testo JSON JSONWriter è un tool per convertire testo JSON in stream JSONTokener prende una stringa sorgente e ne estrae caratteri e token Esistono poi classi per convertire file JSON in altri formati standard (tra cui XML) o Date uno sguardo a http://www.json.org/java/index.html o alle API standard Laboratorio di sistemi e reti (Comunicazione Digitale) - A.A. 2010-2011 S. Bassis ([email protected]) Università di Milano – D.S.I. 578 35 Esercizio 54 Si utilizzi il package org.json per interagire con il servizio json-time disponibile al link http://json-time.appspot.com/ Si usino conseguentemente le classi definite nel package per rappresentare i dati scambiati Laboratorio di sistemi e reti (Comunicazione Digitale) - A.A. 2010-2011 S. Bassis ([email protected]) Università di Milano – D.S.I. 579 36
Documenti analoghi
non bloccante - Università degli Studi di Milano
o Allegato: un riferimento di tipo Object
• Semplifica l’accesso alle informazioni sullo stato