Realizzazione di siti web betaingegneria Marco Barbato – Studio di Ingegneria Web: http://www.betaingegneria.it Mail: marco@betaingegneria.it Who I am Scopo del corso Strumenti Risorse Copyright (C) 2010 - Marco Barbato
Copyright (C) 2010 - Marco Barbato Who I am Laurea in Ingegneria Elettronica Mi sono occupato di Automazione Industriale e Robotica Da 10 anni mi occupo di tecnologie per il Web Lavoro con la PA, con l'industria e faccio fromazione superiore e universitaria Mi occupo anche di musica Copyright (C) 2010 - Marco Barbato
Copyright (C) 2010 - Marco Barbato Scopo del corso Acquisire familiarità ed usare la lingua franca del web (XHTML) e gli stili (CSS) Definire l'architettura di un sito Integrare il sito nel web (accesso a ws, a risorse remote, ...) Separare contenuti e presentazione, differenziare la presentazione a seconda del dispositivo di accesso Varie ed eventuali Copyright (C) 2010 - Marco Barbato
Copyright (C) 2010 - Marco Barbato Strumenti Non faremo ricorso se non alla fine per causa di forza maggiore a tool di sviluppo visuale (Adobe Dreamweaver) Useremo strumenti open source per la valutazione dell'accessibilità Useremo strumenti standard per la valutazione della qualità del codice Copyright (C) 2010 - Marco Barbato
Copyright (C) 2010 - Marco Barbato Risorse http://www.w3.org (sito del consorzio Web) http://www.betaingegneria.it (il mio sito contiene parecchie risorse relative al web) Altri riferimenti web o bibliografici ve li darò durante il corso Copyright (C) 2010 - Marco Barbato
Copyright (C) 2010 - Marco Barbato Breve storia del web Web <> Internet (dispense) 1989: Tim Berners-Lee fa girare al CERN di Ginevra una proposta per la gestione delle informazioni. Nel 1990 scrive WorldWideWeb, il primo web browser su una stazione NeXTStep La più antica pagina web conservata al CERN TBL inventa l'HTML, il protocollo http e il primo server web httpd. Copyright (C) 2010 - Marco Barbato
Copyright (C) 2010 - Marco Barbato Il Web cresce... Nel 1993 TBL e lo sviluppo del web si spostano negli USA al MIT di Boston. 1994: W3C 1996: Google (da gogol, 1 seguito da 100 zeri) 1999: esplode l'e-commerce. Si parla per la prima volta di Web 2.0. Nasce il blog 2001: Wikipedia 2004: Facebook, Gmail 2005: Youtube, Google Maps Copyright (C) 2010 - Marco Barbato
Copyright (C) 2010 - Marco Barbato Ma cos'è il web? Il Web è un servizio di Internet che consente di scambiare dati (testo strutturato, files di vario tipo MIME) attraverso il protocollo HTTP. W3C dixit: 1. A uniform naming scheme for locating resources on the Web (e.g., URIs). 2. Protocols, for access to named resources over the Web (e.g., HTTP). 3. Hypertext, for easy navigation among resources (e.g., HTML). Copyright (C) 2010 - Marco Barbato
Copyright (C) 2010 - Marco Barbato Il protocollo HTTP Altri servizi di Internet: mail, ftp, IRC, gopher... HTTP è un protocollo client / server: chi ha anche il solo compito di scrivere pagine web è utile che abbia almeno una vaga idea di come funzioni. Una sessione HTTP si articola in due fasi: REQUEST e RESPONSE: REQUEST è un'interrogazione che parte dal client verso il server RESPONSE è la risposta del server Copyright (C) 2010 - Marco Barbato
Copyright (C) 2010 - Marco Barbato HTTP Il client (un browser o un altro programma) lanciano una request verso il server web La richiesta contiene l'URI della risorsa, i dati contingenti della richiesta e alcuni dati di contorno (tipo di browser, codifica, lingua, etc) Il server raccoglie la richiesta, la elabora (lui o qualcun altro), costruisce un flusso di uscita (header + body) e lo restituisce al client. La sessione si chiude qui: non c'è memoria. Copyright (C) 2010 - Marco Barbato
Copyright (C) 2010 - Marco Barbato Approfondimento 1/1 URI Uniform Resource Identifier è un sistema di coordinate nel mondo delle risorse: http://www.sito.it/risorsa?parametri http: protocollo www.sito.it: è l'host risorsa: file o programma parametri: ad es: input a,b per avere a+b Dobbiamo immaginare il web come un insieme di documenti e servizi dotato di coordinate. Copyright (C) 2010 - Marco Barbato
Copyright (C) 2010 - Marco Barbato Approfondimento 1/2 REQUEST Http header (dal browser al server): GET / HTTP/1.1 Host: bach User-Agent: Mozilla/5.0 (X11; U; Linux i686; it; rv:1.9.0.19) Gecko/2010040118 Ubuntu/8.10 (intrepid) Firefox/3.0.19 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Language: it-it,it;q=0.8,en-us;q=0.5,en;q=0.3 Accept-Encoding: gzip,deflate Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7 Keep-Alive: 300 Connection: keep-alive If-Modified-Since: Thu, 23 Sep 2010 06:39:21 GMT If-None-Match: "99903-3b0a-490e785a6f840" Cache-Control: max-age=0 MIME type: etichetta che identifica cosa c'è dentro ad un file (Multipurpose Internet Mail Extensions) Copyright (C) 2010 - Marco Barbato
Copyright (C) 2010 - Marco Barbato Aprofondimento 1/3 Problema della rappresentazione dei caratteri: un amico di penna giapponese è un bel problema. Con un inglese sarebbe OK. Per gli inglesi basta ASCII. Con 7 bit fanno tutto. Già con francesi e italiani è complicato: àèìòùç non bastano 7 bit. Ok, 8. Coi greci, gli arabi e gli israeliani siamo daccapo. Con le lingue orientali siamo fritti. Unicode + UTF : si possono codificare e trasmettere tutti i caratteri. Copyright (C) 2010 - Marco Barbato
Copyright (C) 2010 - Marco Barbato UNICODE / UCS È un tabellone che contiene un'associazione tra un carattere ed un codice esadecimale E' arrivato alla versione 5.2.0 nel 2009, trae le origini da ISO 10646 del 1989) Prevede una codifica a 21 bit (2 milioni di caratteri), ma quasi tutti i caratteri sono mappati da U+0000 a U+FFFF (Basic Multilingual Plane), che con 65536 caratteri copre già praticamente tutto (cinese, matematica, etc) Copyright (C) 2010 - Marco Barbato
Copyright (C) 2010 - Marco Barbato UTF Unicode Transformation Format è una codifica a lunghezza variabile dei caratteri Unicode. Repertorio: un elenco di caratteri col loro nome. Codice: mappa tra un carattere e un numero > 0 Codifica (Encoding): come il codice viene rappresentato in un file o in un flusso tcp/ip (sito w3c: ”used to transform the document character stream into a byte stream”: es. UTF-8 Esercizi Copyright (C) 2010 - Marco Barbato
Copyright (C) 2010 - Marco Barbato Torniamo all'header GET è uno dei comandi del protocollo con cui un client chiede una risorsa; Accept-Language scrive le preferenze di lingua del browser Accept dice quali mime type il browser gestisce Accept-Charset quale codifica il browser usa per visualizzare i caratteri In sostanza mandiamo la carta d'identità del browser. Copyright (C) 2010 - Marco Barbato
Copyright (C) 2010 - Marco Barbato RESPONSE Il server web httpd di solito fa da passamano, prende i file e li spedisce al client uno alla volta (html, stili, immagini, audio, etc). Se è richiesta l'elaborazione httpd passa i parametri all'application server che risponde con un flusso HTML: httpd fa ancora una volta il passamano. Copyright (C) 2010 - Marco Barbato
Copyright (C) 2010 - Marco Barbato Esempio di RESPONSE HTTP/1.1 304 Not Modified Date: Thu, 23 Sep 2010 17:38:41 GMT Server: Apache/2.2.9 (Ubuntu) PHP/5.2.6-2ubuntu4.6 with Suhosin-Patch mod_python/3.3.1 Python/2.5.2 mod_perl/2.0.4 Perl/v5.10.0 Connection: Keep-Alive Keep-Alive: timeout=15, max=100 Etag: "d9814-3b0b-490f09b20a000" Il server si presenta con il suo header, dice la versione (1.1) il codice di risposta (304), la data e l'ora, alcune informazioni sul sistema operativo del server Copyright (C) 2010 - Marco Barbato
Copyright (C) 2010 - Marco Barbato RESPONSE (continua) Non è finita: all'header nel flusso http segue il corpo che è il documento HTML vero e proprio. Se è un file nel file system del server si dice pagina web statica (in questo corso impareremo a costruire solo pagine statiche) Se è un file costruito al volo è una pagina web dinamica. A volte anche le pagine dinamiche sono statiche (cache). Copyright (C) 2010 - Marco Barbato
Esempio del corpo XHTML <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html lang="it"> <head> <title>betaingegneria - studio d'Ingegneria Marco Barbato</title> <link type="text/css" rel="stylesheet" href="style.css" /> <script type="text/javascript" src="script.js"></script> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" /> </head> <body> .... </body> </html> Questo è XHTML 1.0 Ma anche HTML ha una storia Copyright (C) 2010 - Marco Barbato
Copyright (C) 2010 - Marco Barbato Storia di HTML Da HTML a HTML 5: sito del Consorzio Web. 1989 HTML (TBL) - 1991 HTML+ 1993 NCSA Mosaic 1994 HTML 2 (Netscape, W3C) 1995 HTML 3 (Microsoft IE, CSS) 1997 HTML 3.2 – 1998 HTML 4.0 2000 XHTML 1.0 – 2008 HTML 5 Copyright (C) 2010 - Marco Barbato
Copyright (C) 2010 - Marco Barbato Cominciamo con HTML 4.01 Internationalization Accessibility Tables (sia come contenitori di dati che per layout: obbrobrio! → XHTML 1.0) <OBJECT> Style Sheets Scripting Printing (<LINK />) Copyright (C) 2010 - Marco Barbato
Copyright (C) 2010 - Marco Barbato Struttura di HTML Versione <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> Elemento (tag) HTML Elemento HEAD Elemento BODY A seconda della versione del browser e dell'html che usiamo, ci sono permessi errori La maggior parte delle cose che la pagina web mostra è nella sezione BODY. Copyright (C) 2010 - Marco Barbato
Copyright (C) 2010 - Marco Barbato Generalità sui tag Vi sono tag che viaggiano in coppia (<A></A>) o da soli (<META />) Un tag è formato da un nome e da degli attributi <a href=”index.html” target=”parent”>Indice</a> Cercheremo di usare tag semantici che si associano alla funzione più che all'aspetto. Ad esempio <i></i> di permette di fare l'inclinato. Ma lasciamo queste cose agli stili e usiamo <em></em> (emphasize) Copyright (C) 2010 - Marco Barbato
Copyright (C) 2010 - Marco Barbato La sezione BODY È la più immediata perché ”si vede subito” Con HTML 4.02 usiamo i tag in maiuscolo, con xhtml 1.0 il minuscolo Qui ha luogo l'impaginazione del sito, ciò che vedremo del sito: testo, titoli, immagini, video, form (moduli interattivi), link (collegamenti ipertestuali) Adotterremo sempre una separazione netta tra contenuto e aspetto usando i CSS. Copyright (C) 2010 - Marco Barbato
Copyright (C) 2010 - Marco Barbato Tag di testo Tag semantici (di testo strutturato) Intestazioni <H1></H1> fino a 6 livelli <EM>,<STRONG>,<DFN>,<CODE>,<ACRONYM> Tag visuali Paragrafi <P>, <PRE> Tag visuali usati soprattutto in XHTML <div> Copyright (C) 2010 - Marco Barbato
Copyright (C) 2010 - Marco Barbato Liste Per ottenere delle liste non ordinate <ul> <li>carta</li> <li>penna</li> <li>calamaio</li> </ul> e ordinate <ol> <li>Zoff</li> <li>Gentile</li> </ol> Copyright (C) 2010 - Marco Barbato
Copyright (C) 2010 - Marco Barbato Tabelle In HTML <= 4.02 sono state usate a sproposito; hanno un significato semantico: contenere dati; invece sono state usate per impaginare. Acqua passata. <table> <thead /><tr /><th /> intestazioni <tbody /><tr /><td /> celle </table> L'oggetto tabella è molto complesso e ci torneremo studiando il DOM. Copyright (C) 2010 - Marco Barbato
Copyright (C) 2010 - Marco Barbato Link: generalità È l'elemento principe del web: il collegamento ipertestuale! <a href=”uri”>testo</a> Se uri ha un # davanti ci muoviamo all'interno della presente risorsa; in questo caso cerchiamo un tag <a name=”uri” /> URI può essere assoluto (specifico protocollo, host e risorsa) o relativo (solo la risorsa, protocollo e host vengono sottointesi). Esercizio 1 - Esercizio 2 Copyright (C) 2010 - Marco Barbato
Link 2: relazioni tra documenti LINK è un elemento da usarsi solo nella sezione HEAD. Lo usiamo per collegare fogli di stile Per dire al browser qual è il foglio di stile più adatto alla piattaforma su cui gira (pc, braille, smartphone) Per dire ai motori di ricerca dove trovare versioni del sito in altre lingue versioni pdf del sito l'indice del sito Copyright (C) 2010 - Marco Barbato
Copyright (C) 2010 - Marco Barbato Link 3: accessori Per l'accessibilità esistono due strumenti legati al tag àncora <a>: Tasto di accesso (ACCESSKEY): posso attivare un link con la tastiera anziché con il mouse; ad esempio se ACCESSKEY=”A” attiverò il link con la sequenza ALT+SHIFT+A Testo alternativo (ALT): questo testo viene letto da un sintetizzatore vocale. Utile anche per le immagini Copyright (C) 2010 - Marco Barbato
Copyright (C) 2010 - Marco Barbato Link: plug in Determinati tipi MIME sono gestiti nativamente dal browser. I tipi che non lo sono di solito si associano ad un plug in (spina) che ne permette la lettura all'interno del browser. Se il plug in non è disponibile (il browser on digerisce il file), viene forzato il salvataggio della risorsa sul proprio computer. Dal lato server si può controllare il comportamento del browser forzando il salvataggio tramite una direttiva nell'header Copyright (C) 2010 - Marco Barbato
Copyright (C) 2010 - Marco Barbato Oggetti multimediali <img src=”uri” /> (abituiamoci alla sintasi xhtml 1.0) <object /> è più generale: può definire una immagine (al posto di img), un'applet Java, un video... Se cominciamo a includere mp3 dobbiamo pensare che l'mp3 il browser lo potrà suonare solo se ha il plug-in apposito installato. Copyright (C) 2010 - Marco Barbato
Copyright (C) 2010 - Marco Barbato Digressione Youtube usa una tecnologia particolare: di solito si deve attendere che sia terminato il download di tutti gli oggetti perché il browser possa renderizzarli. Ma mp3 e video darebbero comunque luogo a ritardi, per cui si adotta una tecnologia che permette di sentire vedere mano a mano che il file viene scaricato (streaming) Copyright (C) 2010 - Marco Barbato
Copyright (C) 2010 - Marco Barbato Frames Solo en passant, è uno strumento deprecato. <FRAMESET cols="20%,80%"> <FRAMESET rows="30%,70%"> <FRAME src="overview.html" name="pListFrame"> <FRAME src="allclasses.html" name="pFrame"> </FRAMESET> <FRAME src="summary.html" name="classFrame"> </FRAMESET> <NOFRAMES><H2>Frame Alert</H2> <P>This document is designed to be viewed using the frames feature. If you see this message, you are using a non-frame-capable web client. <BR> Link to <A HREF="overview-summary.html">Non-frame version.</A></NOFRAMES> Nella slide seguente il risultato. Serve per caricare più pagine web nella stessa finestra. Bandito come strumento per siti accessibili Copyright (C) 2010 - Marco Barbato
Visualizzazione del frameset Copyright (C) 2010 - Marco Barbato
Copyright (C) 2010 - Marco Barbato FORMS Uno degli strumenti più usati (compila un modulo per l'iscrizione, username e password, seleziona una nazione, rispondi ad un questionario, ...) Ci porta ad andare ancora più a fondo nello studio di HTTP Ci introduce a DOM e a JavaScript: il modulo può essere reso più interattivo con JavaScript e con AJAX. Copyright (C) 2010 - Marco Barbato
Copyright (C) 2010 - Marco Barbato Un esempio di FORM Questo modulo permette di autenticarsi in un sito <form action="login.php" method="post"> <fieldset> <legend>Username</legend> <input type="text" name="uname" size="8" /> </fieldset> <fieldset> <legend>Password</legend> <input type="password" name="paswd" size="8" /> </fieldset> <fieldset> <input type="submit" value="Entra" /> </fieldset> </form> Questo form ha molti oggetti e attributi che devono essere compresi bene. Copyright (C) 2010 - Marco Barbato
Copyright (C) 2010 - Marco Barbato Attributi di FORM action: URI della risorsa cui è affidata l'elaborazione dei dati. È sempre un programma method: con quale comando di protocollo i dati vengono inviati al server. Conosciamo già GET, che consente di invocare un URI completo. Un altro comando è POST il quale fa pervenire i dati al server tramite il suo standard input. Una differenza tra get e post è che con get vediamo transitare i dati sulla barra degli indirizzzi. Copyright (C) 2010 - Marco Barbato
Copyright (C) 2010 - Marco Barbato Approfondimento Stuttura di un messaggo GET GET /examples/basic/method.php?uname=ppp&paswd=ppp HTTP/1.1 Host: bach User-Agent: Mozilla/5.0 (X11; U; Linux i686; it; rv:1.9.0.19) .... Struttura di un messaggio POST POST /examples/basic/method.php HTTP/1.1 Host: bach ... Content-Type: application/x-www-form-urlencoded Content-Length: 19 uname=ppp&paswd=ppp Query string: *[nome=valore]& Copyright (C) 2010 - Marco Barbato
Copyright (C) 2010 - Marco Barbato Campi di un modulo Testo / Password Checkbox / Radio Lista di selezione (combo box) Lista di selezione multipla File Pulsanti / button Con fieldset posso visualizzare i campi in modo compatto Copyright (C) 2010 - Marco Barbato
Copyright (C) 2010 - Marco Barbato Conclusione A questo punto abbiamo gli elementi fondamentali per costruire un sito web. Non siamo ancora in grado di agire in profondità sull'aspetto del sito e dobbiamo migliorare l'interattività con l'utente. Per queste cose ci sono 2 strumenti: i CSS e il Javascript Copyright (C) 2010 - Marco Barbato
CSS Cascading Style Sheets Nel mezzo del cammin di nostra vita mi ritovai per una selva oscura che la diritta via era smarrita Dante, Divina Commedia, Inf, I, 1-3 Nulla meglio di questa terzina introduce il difficile argomento dei CSS (versione 2). Di per sé l'argomento è una scienza esatta, ma l'aspetto commerciale rende veramente una selva oscura il comportamento delle regole CSS nei vari browser. Ci vuole pazienza e dedizione. Copyright (C) 2010 - Marco Barbato
Copyright (C) 2010 - Marco Barbato CSS: regole, selettori I Cascading Style Sheet si chiamano così perché possono essere sovrapposti per creare effetti nella pagina web. Un foglio di style è un file che contiene uno o più selettori fatti così: selettore { regola1; regola2; ...} regola = proprietà: valore; Si possono definire anche operatori tra selettori Dispense Copyright (C) 2010 - Marco Barbato
Copyright (C) 2010 - Marco Barbato DOM Document Object Model Modellazione di un documento (libro, giornale, fumetto, ...) come un oggetto. W3C ”a platform- and language-neutral interface that allows programs and scripts to dynamically access and update the content, structure and style of documents” Adottando questa piattaforma siamo in grado di analizzare e modificare un documento XHTML. Copyright (C) 2010 - Marco Barbato
Copyright (C) 2010 - Marco Barbato DOM /2 <TABLE> <TBODY> <TR> <TD>Shady Grove</TD> <TD>Aeolian</TD> </TR> <TR> <TD>Over the River, Charlie</TD> <TD>Dorian</TD> </TR> </TBODY> </TABLE> Copyright (C) 2010 - Marco Barbato
Copyright (C) 2010 - Marco Barbato DOM /3 In sostanza trasformiamo un documento in un albero. Le strutture ad albero sono pane per i denti dei linguaggi di programmazione. Con i CSS navighiamo quest'albero per stabilire delle regole di rendering. Con Javascript navighiamo quest'albero per compiere delle azioni sul documento. Il papà di DOM si chiamava DHTML. Copyright (C) 2010 - Marco Barbato
Copyright (C) 2010 - Marco Barbato XML Ancora un po' di storia: HTML è un derivato di un linguaggio di tag generale l'SGML (Standard Generalized Markup Language (ISO 8879:1986 SGML)). SGML si pone l'ambizioso obiettivo di rappresentare un documento come un oggetto strutturato e di fornire un appiglio per i linguaggi di programmazione affinché lo possano processare come una struttura dati. Copyright (C) 2010 - Marco Barbato
Copyright (C) 2010 - Marco Barbato XML /2 XML è un altro derivato (o profilo, o sottoinsieme, o dialetto) di SGML che è più facile da trattare di SGML per i parser (analizzatori di testo). X sta per eXtensible. XML è un linguaggio strutturato che permette di rappresentare dati, un foglio XML può essere comparato ad un vero database. Si può usare XML anche per fare pagine web! (esempio) oggi tutti i browser supportano XML + XSLT (esercizi sulle trasformazioni) Copyright (C) 2010 - Marco Barbato
Copyright (C) 2010 - Marco Barbato XHTML XHTML è una versione di HTML definita in modo molto rigoroso come un documento XML. Dobbiamo essere grati dell'avvento di XHTML perché è un tentativo di rendere rigoroso il lavoro del web master, che non deve più impazzire perché determinati tag si comportano in modo diverso da browser a browser (ovviamente non tutti la pensano così). Con XHTML posso trattare la pagina web come se fosse una struttura dati Copyright (C) 2010 - Marco Barbato
Copyright (C) 2010 - Marco Barbato XHTML /2 Posso infatti elaborare una pagina web con un programma, ad esempio per leggerla e mettere via i dati in campi di una tabella di database. Questo tipo di attività si chiama interoperabilità e preferisce in ogni caso lo scambio dati tramite XML. Posso definire dei tag specializzati (custom) tramite le Document Type Definition DTD. Copyright (C) 2010 - Marco Barbato
Copyright (C) 2010 - Marco Barbato Una parola sul W3C Il Consorzio Web, nato a Boston nel 1994 su iniziativa di TBL, conta 356 membri (2009). Tutto ciò che riguarda il web viene proposto, elaborato, codificato da questo organismo di riferimento per il mercato. Eventuali fughe in avanti vengono man mano discusse, razionalizzate e, se accettate, espresse in uno standard. Copyright (C) 2010 - Marco Barbato
Copyright (C) 2010 - Marco Barbato XHTML reprise I documenti devono essere ben-formati (4.1) I tag sono scritti in minuscolo (4.2) I tag devono essere rigorosamente chiusi (i tag singoli si scrivono con <x /> (4.6)) (4.3) I valori degli attributi vanno chiusi tra ” (4.4) NON sono ammessi attributi minimizzati (e.g. checked) (4.5) L'identificatore di tag (frammento) è id (4.10) Copyright (C) 2010 - Marco Barbato
Copyright (C) 2010 - Marco Barbato XHTML /3 Uso delle tabelle: non ci sono direttive, ma le direttive WAI-WCAG sull'accessibilità impongono che non le si usi per scopi di layout. I tag non devono avere overlap (ed es. È proibito <p><a></p></a>) (esempio) L'identificatore pubblico è xhtml1.0 strict (DTD) La presentazione è esclusivamente demandata ai CSS Gli script possibilimente vanno all'esterno. Copyright (C) 2010 - Marco Barbato
Copyright (C) 2010 - Marco Barbato Validatori Il W3C mette a disposizione uno strumento per validare la correttezza del codice XHTML. Una volta validato, se un bowser (user agent) non lo visualizza come ci si aspetta è per un buco nel browser. http://validator.w3.org Anche i CSS hanno un validatore ufficiale:http://jigsaw.w3.org/css-validator/ sviluppato da Mozilla Copyright (C) 2010 - Marco Barbato
Copyright (C) 2010 - Marco Barbato Namespaces Spazi di nomi: sono definizioni di insiemi particolari di tag. XHTML permette, ad esempio, di definire in un documento pezzi che si esprimono con tag non standard. <p>The following is MathML markup:</p> <math xmlns="http://www.w3.org/1998/Math/MathML"> <apply> <log/> <logbase> <cn> 3 </cn> </logbase> <ci> x </ci> </apply> </math> Ovviamente non è detto che il motore grafico del browser digerisca... Copyright (C) 2010 - Marco Barbato
Copyright (C) 2010 - Marco Barbato Javascript Javascript è un OOL interpretato, l'interprete è a bordo dei browser. Serve per migliorare l'interattività lato client. Definiamo le strutture di controllo, le funzioni built-in, le strutture dati di Javascript. Javascript è stato usato intensivamente dal 2005 in poi (DOM level 3), prima si facevano script abbastanza semplici per controllare le form ad esempio. Dopo esserci sgrezzati, studieremo la libreria jQuery. Copyright (C) 2010 - Marco Barbato
Copyright (C) 2010 - Marco Barbato Javascript esempio 1 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="it" lang="it"> <head> <title>Esempio Javascript</title> <script type="text/javascript"> function ciao() {alert('Ciao'); return true; } </script> <style type="text/css"> span.boo {font-weight: bold; color: #f00;} </style> </head> <body> <p>Come attivare un <span onclick="return ciao();" class="boo">alert</span></p> </body> </html> Un interessante esercizio con cui giocare, testare il browser e i validatori XHTML/CSS Copyright (C) 2010 - Marco Barbato
Copyright (C) 2010 - Marco Barbato Javascript /2 La sintassi è praticamente identica a Java (strutture if, for, while, case, operatori prefissi, postfissi, dichiaratori di classe, accesso a membri e metodi delle classi, polimorfismo) Non abbiamo il tempo di spingerci molto in là, ma faremo qualche esempio con jQuery e con le API di GoogleMaps (se c'è tempo). Il Javascript consente di accedere ad un oggetto del DOM e agire su di esso e sul suo stile con i metodi consentiti. Copyright (C) 2010 - Marco Barbato
Copyright (C) 2010 - Marco Barbato Javascript /3 Si possono definire anche classi, al modo di Java, potenziando il browser senza limiti. Ovviamente se l'interprete Javascript a bordo del browser è abbastanza moderno. Queste due risorse forniscono un manuale e alcuni esercizi di complessità crescente. http://www.javascriptkit.com/jsref/index.shtml Esercizi Copyright (C) 2010 - Marco Barbato
Copyright (C) 2010 - Marco Barbato Cose da sviluppare Navigabilità del sito, albero di navigazione, chiarezza delle sezioni e degli strumenti Web services Media diversi: come trattarli, esempi col telefonino Copyright (C) 2010 - Marco Barbato
Come strutturare i siti Ci sono delle caratteristiche desiderabili per un sito: Pulizia (niente rumore, distinzione chiara nelle aree delle pagine web, comandi e etichette chiare) Orientamento (dove sono nel sito?) Per cercare una informazione mi serve sapere com'è fatto il sito?? Possibilità di interazione Possibilità di personalizzazione Copyright (C) 2010 - Marco Barbato
Copyright (C) 2010 - Marco Barbato Strutture chiare Google all'inizio aveva solo il logo, la <input text /> e due pulsanti (”Search” e ”I feel lucky”). Sfondo bianco. La sua banalità l'ha fatto il motore vincente. Ora ha sviluppato un miriade di funzioni, e ha dovuto fornire un discreto menu in alto. Ma continua ad avere una notevole semplicità nonostante sia estremamente complesso. Trovo spesso noioso raggiungere Analytics. Copyright (C) 2010 - Marco Barbato
Copyright (C) 2010 - Marco Barbato Strutture chiare /2 SI può parlare di politica, di news, di turismo, di siderurgia o medicina: un menu serve sempre. Un logo identifica a colpo d'occhio un brand, una realtà. Contenuti dinamici importanti da mettere nella home (se ce ne sono) Una funzione di ricerca, di tagging, note di copyright, una barra breadcrumb. O un albero di navigazione (mappa del sito). Copyright (C) 2010 - Marco Barbato
Copyright (C) 2010 - Marco Barbato Strutture chiare /3 Ma per il turismo? Voglio sapere: dove devo andare (→ Google Maps), che tempo fa (→ webservice meteo), dove posso dormire (database alberghi e ristori), cosa posso fare una volta arrivato (offerte di svago, benessere e cultura), quanto spendo (→ listini aggiornati, offerte, form di interrogazione del database). Voglio trovare le info anche se non sono davanti al pc (mobile) Copyright (C) 2010 - Marco Barbato
Copyright (C) 2010 - Marco Barbato Web 2.0 Web Semantico: infrastruttura comune che consente ai dati di essere condivisi e riutilizzati da applicazioni, imprese e community. Nel Web classico sono i documenti (risorse) ad essere condivisi, qui ci si vuole spingere ad entrare nei documenti e a condividerne gli elementi che li costituiscono. La fondamentale filosofia della circolazione dei dati (ovviamente con le necessarie regole) unita alla partecipazione nella loro produzione è stata etichettata genericamente con Web 2.0. Copyright (C) 2010 - Marco Barbato
Copyright (C) 2010 - Marco Barbato Web 2.0 /2 Non è più comunicazione verticale (il webmaster pubblica e io leggo) ma orizzontale (tutti possono pubblicare o postare un commento o un tag, o elaborare dati) Strumenti Web 2.0 sono il social tagging, il blog, il page rank di Google, gli RSS, il wiki che fornisce strumenti di publishing. La definizione è di Tim O'Reilly. Interessante leggere il suo articolo [it]. Copyright (C) 2010 - Marco Barbato
Copyright (C) 2010 - Marco Barbato Accessibility ”The power of the Web is in its universality. Access by everyone regardless of disability is an essential aspect” [TBL, WAI] Dall'inventore del Web fino alle organizzazioni, tutti hanno preso in considerazione i benefici di un web accessibile a tutti. Ma cosa vuol dire precisamente accessibilità? Semplicemente la facoltà di usare il web e potervi contribuire da parte delle persone disabili e anziane [WAI] Copyright (C) 2010 - Marco Barbato
Copyright (C) 2010 - Marco Barbato Accessibilty /2 La legislazione italiana è più precisa sulla definizione. Nel 2004 il Parlamento vara la Legge 4/2004 promossa dal Ministro delle Infrastrutture Lucio Stanca dell'allora governo Berlusconi. La legge enuncia 22 Requisiti per poter definire un sito come accessibile; definisce metodologie e criteri di valutazione; è prevista l'applicazione da uno logo a seconda del grado di aderenza ai requisiti. Sono requisiti più stretti delle linee guida del WAI-WCAG. Copyright (C) 2010 - Marco Barbato