SlideShare una empresa de Scribd logo
1 de 27
Descargar para leer sin conexión
HTML5, il lato client della forza...




Marco Vito Moscaritolo
marco@agavee.com
@mavimo
/usr/bin/whoami
             Marco Vito Moscaritolo
             “Sviluppatore” web server side con
             tendenze a testare tutte le nuove
             tecnologie che si trovano nella rete con
             particolare interesse verso le tecnologie
             mobile
             (altrimenti che ci faccio qui?)


             Twitter:     @mavimo
             Mail:        marco@agavee.com
             Blog:        http://mavimo.org
Tanti device, tanti OS differenti (e per ognuno più versioni), e noi?



                   IMPAZIAMO!
usa la forza
“HTML5” è crossplatform... figo!
                  Qualche cosa ci viene in aiuto,
                  HTML5 è una definizione che
                  verosimilmente possiamo
                  considerare standard (e anche i
                  vendor di device se ne sono resi
                  conto)!

                  HTML5 non è solo quello che si
                  vede, ma (sopratutto?) quello
                  che NON si vede
Nel client
HTML5, quindi tutti i fantastici tag   Javascript non è più un
che conosciamo, ma non ci interessa    “abbellimento”, sta diventando
questo (in questo caso!)               sempre più utile (e fondamentale)
                                       per realizzare le webapp

                                       - WebSocket
                                       - WebStorage
                                       - WebSQL (R.I.P. † )
                                       - IndexedDB
                                       - Manifest file

                                       (File API, WebWorkers, … ci sono
                                       ma nel mobile per ora non hanno
                                       molto senso/interesse)
Nota:




Parliamo di WebApp, ma nel caso specifico
    di siti/servizi web fruibili da mobile
Una webapp per il mobile, ok...

                   ...come faccio?

Ottimizzo la mia applicazione   Creo un applicazione apposita
corrente per funzionare su      per la versione mobile
dispositivi mobile
Applicazione ottimizzata
Tutto viene sempre fornito al
browser che eventualmente lo
presenterà in maniera differente.

Non fornisco un esperienza d'uso
necessariamente ottimizzata

Devo “mediare” con l'interfaccia
classica della mia webapp
Applicazione ad-hoc
Posso replicare l'interfaccia del
sistema nell'applicazione
(esperienza utente più simile a
quella calssica del device)

Posso modificare il
comportamento dell'applicazione
in funzione del device con cui
accedo (idem come sopra)
Messaggio subliminale
Messaggio subliminale                            Messaggio subliminale
                         Messaggio subliminale
Messaggio subliminale                            Messaggio subliminale
                         Messaggio subliminale
Messaggio subliminale                            Messaggio subliminale

Applicazione custom
Messaggio subliminale
                         Messaggio subliminale
                                                 Messaggio subliminale
                         Messaggio subliminale
Messaggio subliminale                            Messaggio subliminale
                         Messaggio subliminale
Messaggio subliminale


Messaggio subliminale
                        è meglio
                         Messaggio subliminale
                                                 Messaggio subliminale


                                                 Messaggio subliminale
                         Messaggio subliminale
Messaggio subliminale                            Messaggio subliminale
                         Messaggio subliminale
Messaggio subliminale                            Messaggio subliminale
                         Messaggio subliminale
Browser detection                    www.mysite.tdl



Riconoscere il browser che sta
arrivando sul sito della webapp ed
eventualmente redirigerlo nella
sezione/sito apposito

                                     mobi.mysite.tdl




http://wurfl.sourceforge.net/

http://detectmobilebrowser.com/
WebSocket (1)
WebSocket (2) – Sul client
Usabili fin da ora               var socket = new io.Socket(null {
                                   port: 8080,
                                   rememberTransport: false
Supportati su diversi device     });
mobile (Android, iOS)
                                 socket.connect();

Permettono comunicazioni
                                 socket.on('message', function(obj){
in tempo reale verso/da            // Do some stuff
server (servizi in push)         });


Facili (proprio FACILI) da       socket.on('connect', onConnectFn);
implementare con alcune          socket.on('disconnect', onDisconnectFn);
                                 socket.on('reconnect', onReconnectFn);
librerie come http://socket.io
                                 // ...
WebSocket (3) - Sul server
Servizi che         var http = require('http'),
permettano di         io = require('socket.io'),
                      Server, // … ;
mantenre
persistenza della
                    server = http.createServer( … );
connessione con     server.listen(8080);
costo macchina
molto basso         var io = io.listen(server);
                    io.on('connection', function(client) {
                      client.send({ … });
Node.JS sembra
                      client.broadcast({ … });
fatto apposta :)
                     client.on('message', onMessageFn);

                      client.on('disconnect', onDisconnectFn);
                    });
WebStorage
Permette di salvare dati sul      var nv =
client sottoforma di coppia       localStorage['num_view'];
key-value
                                  if (typeof nv == 'undefined')
Facile da usare, supportato         nv = 0
su molti device
                                  nv += 1;
Limiti di spazio utilizzabile e
sopratutto non permette
ricerche nei valori inseriti      localStorage['num_view'] = nv;
WebSQL (1)
 Sintassi SQL-like

 Supportato sui vari device mobile (Yeah!)

 Il W3C ha deciso di abbandonarlo in favore di IndexedDB (che non è
 supportato da nessun browser mobile) #fail #quasifail #happy

var db = openDatabase('whymca', '1.0', 'WHYMCA database', 2 * 1024 * 1024);

db.transaction(function (tx) {
  tx.executeSql('CREATE TABLE IF NOT EXISTS attendee (id unique, name, mail)');
  tx.executeSql('INSERT INTO attendee (id, name, mail)
                                      VALUES (1, "Marco", "marco@agavee.com)');
});
WebSQL (2)
Ho smesso anni fa di scrivere SQL, non me lo ricordo più, mica dovrò
studiarmelo nuovamente??!!??!!

http://persistencejs.org/ (*)
http://code.google.com/p/orm-html5/
http://impel.simulacre.org/

var allTasks = Task.all().filter("done", '=', true).prefetch("category")
                         .order("name", false).limit(10);

allTasks.list(null, function (results) {
    results.forEach(function (r) {
        console.log(r.name)
        window.task = r;
    });
});
IndexedDB (1)
Non supportato dai browser
mobile attuali, MA parecchi
vendor si stanno attrezzando al
riguardo

Database documentale, e dato
che sono che sono tornati tanto
di moda ora, con il “NoSQL”

Sintassi molto verbosa la anche
se abbastanza semplice nelle
operazioni che si fanno
normalmente
IndexedDB (2)
Permette di storare oggetti sul
server così come sono archiviati
sul client (DB documentale con
struttura come IndexedDB)

Tramite interrogazione diretta da
remoto è possibile inserire /
leggere i dati presenti nel DB

Permette connessioni persistenti
per ricevere da remoto le
notifiche in push dei risultati
della ricerca http://goo.gl/t57zD
Ma quindi i dati e l'applicazione?
Che fine fanno?
Cambio di paradigma rispetto
alle applicazioni “classiche”

Controller e model finiscono sul
client che “si sincronizza” con il
server... chi ci lavora deve
abituarsi a qusto cambio, quindi
all'inizio prendiamo
consapevolezza che sbaglieremo
parecchio
Testate
                         Sperimentate
                        NON aspettate
                          (alcune cose si possono già usare ora)




    NON pensate di sapere le cose
  (cambiano talmente in fretta che le vostre certezze cadono in men che non si dica)



Mettetevi in discussione, altrimenti...
La forza può fare brutti scherzi
Demo
(se avanza un attimo di tempo)
Domande?




Marco Vito Moscaritolo
                @mavimo
         marco@agavee.com
Refs
Alcuni links:

http://www.openmobilealliance.org/Technical/release_program/docs/Browsin
http://validator.w3.org/mobile/
http://www.w3.org/TR/mobile-bp/
http://www.w3.org/TR/mwabp/
https://github.com/janmonschke/backbone-couchdb/
https://developer.mozilla.org/en/IndexedDB
http://www.jsday.it (cercate slideshare ed i video)

Más contenido relacionado

Destacado

Html5 game, websocket e arduino
Html5 game, websocket e arduinoHtml5 game, websocket e arduino
Html5 game, websocket e arduinomonksoftwareit
 
HTML5 e Css3 - 1 | WebMaster & WebDesigner
HTML5 e Css3 - 1 | WebMaster & WebDesignerHTML5 e Css3 - 1 | WebMaster & WebDesigner
HTML5 e Css3 - 1 | WebMaster & WebDesignerMatteo Magni
 
Introduzione a Twitter Bootstrap
Introduzione a Twitter BootstrapIntroduzione a Twitter Bootstrap
Introduzione a Twitter BootstrapGiulio Bonanome
 
follow-ap DAY 4: HTML5 e jQuery
follow-ap DAY 4: HTML5 e jQueryfollow-ap DAY 4: HTML5 e jQuery
follow-ap DAY 4: HTML5 e jQueryQIRIS
 
Introduzione a jQuery
Introduzione a jQueryIntroduzione a jQuery
Introduzione a jQuerySandro Marcon
 
SMAU 2009 - Scenari futuri del Video-on-the-Web in HTML 5 - Roberto Ellero, ...
SMAU 2009 - Scenari futuri del Video-on-the-Web in HTML 5 - Roberto Ellero, ...SMAU 2009 - Scenari futuri del Video-on-the-Web in HTML 5 - Roberto Ellero, ...
SMAU 2009 - Scenari futuri del Video-on-the-Web in HTML 5 - Roberto Ellero, ...Roberto Ellero
 
Html5 e css3 nuovi strumenti per un nuovo web
Html5 e css3 nuovi strumenti per un nuovo webHtml5 e css3 nuovi strumenti per un nuovo web
Html5 e css3 nuovi strumenti per un nuovo webMassimo Bonanni
 
Html e Css - 3 | WebMaster & WebDesigner
Html e Css - 3 | WebMaster & WebDesignerHtml e Css - 3 | WebMaster & WebDesigner
Html e Css - 3 | WebMaster & WebDesignerMatteo Magni
 
HTML5 e Css3 - 3 | WebMaster & WebDesigner
HTML5 e Css3 - 3 | WebMaster & WebDesignerHTML5 e Css3 - 3 | WebMaster & WebDesigner
HTML5 e Css3 - 3 | WebMaster & WebDesignerMatteo Magni
 
HTML5 e Css3 - 4 | WebMaster & WebDesigner
HTML5 e Css3 - 4 | WebMaster & WebDesignerHTML5 e Css3 - 4 | WebMaster & WebDesigner
HTML5 e Css3 - 4 | WebMaster & WebDesignerMatteo Magni
 
HTML5 e Css3 - 3 | WebMaster & WebDesigner
HTML5 e Css3 - 3 | WebMaster & WebDesignerHTML5 e Css3 - 3 | WebMaster & WebDesigner
HTML5 e Css3 - 3 | WebMaster & WebDesignerMatteo Magni
 
HTML5 Forms: Cosa possiamo fare Oggi
HTML5 Forms: Cosa possiamo fare OggiHTML5 Forms: Cosa possiamo fare Oggi
HTML5 Forms: Cosa possiamo fare OggiSkillsAndMore
 
Ancora anatomia, le pagine HTML(5)
Ancora anatomia, le pagine HTML(5)Ancora anatomia, le pagine HTML(5)
Ancora anatomia, le pagine HTML(5)nois3lab
 
HTML5 Italy: Mai più CSS, fogli di stile moderni con LESS - Salvatore Romeo
HTML5 Italy: Mai più CSS, fogli di stile moderni con LESS - Salvatore RomeoHTML5 Italy: Mai più CSS, fogli di stile moderni con LESS - Salvatore Romeo
HTML5 Italy: Mai più CSS, fogli di stile moderni con LESS - Salvatore Romeomarcocasario
 

Destacado (20)

Html5 game, websocket e arduino
Html5 game, websocket e arduinoHtml5 game, websocket e arduino
Html5 game, websocket e arduino
 
Html5
Html5Html5
Html5
 
Html5 - Un anno dopo
Html5 - Un anno dopoHtml5 - Un anno dopo
Html5 - Un anno dopo
 
HTML5 e Css3 - 1 | WebMaster & WebDesigner
HTML5 e Css3 - 1 | WebMaster & WebDesignerHTML5 e Css3 - 1 | WebMaster & WebDesigner
HTML5 e Css3 - 1 | WebMaster & WebDesigner
 
Introduzione a Twitter Bootstrap
Introduzione a Twitter BootstrapIntroduzione a Twitter Bootstrap
Introduzione a Twitter Bootstrap
 
follow-ap DAY 4: HTML5 e jQuery
follow-ap DAY 4: HTML5 e jQueryfollow-ap DAY 4: HTML5 e jQuery
follow-ap DAY 4: HTML5 e jQuery
 
Introduzione a jQuery
Introduzione a jQueryIntroduzione a jQuery
Introduzione a jQuery
 
HTML 5 e browser legacy
HTML 5 e browser legacyHTML 5 e browser legacy
HTML 5 e browser legacy
 
SMAU 2009 - Scenari futuri del Video-on-the-Web in HTML 5 - Roberto Ellero, ...
SMAU 2009 - Scenari futuri del Video-on-the-Web in HTML 5 - Roberto Ellero, ...SMAU 2009 - Scenari futuri del Video-on-the-Web in HTML 5 - Roberto Ellero, ...
SMAU 2009 - Scenari futuri del Video-on-the-Web in HTML 5 - Roberto Ellero, ...
 
Responsive design
Responsive designResponsive design
Responsive design
 
Domino e HTML5, #dd13
Domino e HTML5, #dd13Domino e HTML5, #dd13
Domino e HTML5, #dd13
 
Html5 e css3 nuovi strumenti per un nuovo web
Html5 e css3 nuovi strumenti per un nuovo webHtml5 e css3 nuovi strumenti per un nuovo web
Html5 e css3 nuovi strumenti per un nuovo web
 
Html e Css - 3 | WebMaster & WebDesigner
Html e Css - 3 | WebMaster & WebDesignerHtml e Css - 3 | WebMaster & WebDesigner
Html e Css - 3 | WebMaster & WebDesigner
 
HTML5 e Css3 - 3 | WebMaster & WebDesigner
HTML5 e Css3 - 3 | WebMaster & WebDesignerHTML5 e Css3 - 3 | WebMaster & WebDesigner
HTML5 e Css3 - 3 | WebMaster & WebDesigner
 
HTML5 e Css3 - 4 | WebMaster & WebDesigner
HTML5 e Css3 - 4 | WebMaster & WebDesignerHTML5 e Css3 - 4 | WebMaster & WebDesigner
HTML5 e Css3 - 4 | WebMaster & WebDesigner
 
HTML5 Security
HTML5 SecurityHTML5 Security
HTML5 Security
 
HTML5 e Css3 - 3 | WebMaster & WebDesigner
HTML5 e Css3 - 3 | WebMaster & WebDesignerHTML5 e Css3 - 3 | WebMaster & WebDesigner
HTML5 e Css3 - 3 | WebMaster & WebDesigner
 
HTML5 Forms: Cosa possiamo fare Oggi
HTML5 Forms: Cosa possiamo fare OggiHTML5 Forms: Cosa possiamo fare Oggi
HTML5 Forms: Cosa possiamo fare Oggi
 
Ancora anatomia, le pagine HTML(5)
Ancora anatomia, le pagine HTML(5)Ancora anatomia, le pagine HTML(5)
Ancora anatomia, le pagine HTML(5)
 
HTML5 Italy: Mai più CSS, fogli di stile moderni con LESS - Salvatore Romeo
HTML5 Italy: Mai più CSS, fogli di stile moderni con LESS - Salvatore RomeoHTML5 Italy: Mai più CSS, fogli di stile moderni con LESS - Salvatore Romeo
HTML5 Italy: Mai più CSS, fogli di stile moderni con LESS - Salvatore Romeo
 

Similar a HTML5, il lato client della forza...

Asynchronous Java ME and XML
Asynchronous Java ME and XMLAsynchronous Java ME and XML
Asynchronous Java ME and XMLAndrea Castello
 
AngularJS – Reinventare le applicazioni web
AngularJS – Reinventare le applicazioni webAngularJS – Reinventare le applicazioni web
AngularJS – Reinventare le applicazioni webLuca Milan
 
Alla ricerca della ricerca - JeffConf Milan 2017
Alla ricerca della ricerca - JeffConf Milan 2017Alla ricerca della ricerca - JeffConf Milan 2017
Alla ricerca della ricerca - JeffConf Milan 2017Bagubits
 
Da A a Bot con un pizzico di Cognitive
Da A a Bot con un pizzico di CognitiveDa A a Bot con un pizzico di Cognitive
Da A a Bot con un pizzico di CognitiveAlessio Iafrate
 
Drupal Day 2012 - Applicazioni mobile multipiattaforma integrate con Drupal 7...
Drupal Day 2012 - Applicazioni mobile multipiattaforma integrate con Drupal 7...Drupal Day 2012 - Applicazioni mobile multipiattaforma integrate con Drupal 7...
Drupal Day 2012 - Applicazioni mobile multipiattaforma integrate con Drupal 7...DrupalDay
 
Introduzione a Node.js
Introduzione a Node.jsIntroduzione a Node.js
Introduzione a Node.jsMichele Capra
 
MS Days 08 Applicazioni RIA con Silverlight 2 e WCF
MS Days 08 Applicazioni RIA con Silverlight 2 e WCFMS Days 08 Applicazioni RIA con Silverlight 2 e WCF
MS Days 08 Applicazioni RIA con Silverlight 2 e WCFFabrizio Bernabei
 
Lotus Foundations Start 1.1 Un anno dopo..
Lotus Foundations Start 1.1 Un anno dopo..Lotus Foundations Start 1.1 Un anno dopo..
Lotus Foundations Start 1.1 Un anno dopo..Enzo Stanzione
 
Corso WebApp iOS - Lezione 06: Web Development for iOS Devices
Corso WebApp iOS - Lezione 06:   Web Development for iOS DevicesCorso WebApp iOS - Lezione 06:   Web Development for iOS Devices
Corso WebApp iOS - Lezione 06: Web Development for iOS DevicesAndrea Picchi
 
Introduzione alla localizzazione web
Introduzione alla localizzazione webIntroduzione alla localizzazione web
Introduzione alla localizzazione webQabiria
 
Javascript - 1 | WebMaster & WebDesigner
Javascript - 1 | WebMaster & WebDesignerJavascript - 1 | WebMaster & WebDesigner
Javascript - 1 | WebMaster & WebDesignerMatteo Magni
 
UI composition @ dotNetMarche
UI composition @ dotNetMarcheUI composition @ dotNetMarche
UI composition @ dotNetMarcheMauro Servienti
 
Web Application Insecurity L D2007
Web Application Insecurity  L D2007Web Application Insecurity  L D2007
Web Application Insecurity L D2007jekil
 
Lezione WordPress Università degli Studi di Milano: Installazione e Gestione
Lezione WordPress Università degli Studi di Milano: Installazione e GestioneLezione WordPress Università degli Studi di Milano: Installazione e Gestione
Lezione WordPress Università degli Studi di Milano: Installazione e Gestionealessandro gasparotto
 

Similar a HTML5, il lato client della forza... (20)

Asynchronous Java ME and XML
Asynchronous Java ME and XMLAsynchronous Java ME and XML
Asynchronous Java ME and XML
 
m-v-vm @ UgiAlt.Net
m-v-vm @ UgiAlt.Netm-v-vm @ UgiAlt.Net
m-v-vm @ UgiAlt.Net
 
Html5
Html5Html5
Html5
 
AngularJS – Reinventare le applicazioni web
AngularJS – Reinventare le applicazioni webAngularJS – Reinventare le applicazioni web
AngularJS – Reinventare le applicazioni web
 
Alla ricerca della ricerca - JeffConf Milan 2017
Alla ricerca della ricerca - JeffConf Milan 2017Alla ricerca della ricerca - JeffConf Milan 2017
Alla ricerca della ricerca - JeffConf Milan 2017
 
UI Composition
UI CompositionUI Composition
UI Composition
 
Da A a Bot con un pizzico di Cognitive
Da A a Bot con un pizzico di CognitiveDa A a Bot con un pizzico di Cognitive
Da A a Bot con un pizzico di Cognitive
 
Drupal Day 2012 - Applicazioni mobile multipiattaforma integrate con Drupal 7...
Drupal Day 2012 - Applicazioni mobile multipiattaforma integrate con Drupal 7...Drupal Day 2012 - Applicazioni mobile multipiattaforma integrate con Drupal 7...
Drupal Day 2012 - Applicazioni mobile multipiattaforma integrate con Drupal 7...
 
Node and the Cloud
Node and the CloudNode and the Cloud
Node and the Cloud
 
Introduzione a node.js
Introduzione a node.jsIntroduzione a node.js
Introduzione a node.js
 
Introduzione a Node.js
Introduzione a Node.jsIntroduzione a Node.js
Introduzione a Node.js
 
MS Days 08 Applicazioni RIA con Silverlight 2 e WCF
MS Days 08 Applicazioni RIA con Silverlight 2 e WCFMS Days 08 Applicazioni RIA con Silverlight 2 e WCF
MS Days 08 Applicazioni RIA con Silverlight 2 e WCF
 
Lotus Foundations Start 1.1 Un anno dopo..
Lotus Foundations Start 1.1 Un anno dopo..Lotus Foundations Start 1.1 Un anno dopo..
Lotus Foundations Start 1.1 Un anno dopo..
 
IBM Lotus Foundations, un anno dopo dalle premesse alle promesse.
IBM Lotus Foundations, un anno dopo dalle premesse alle promesse.IBM Lotus Foundations, un anno dopo dalle premesse alle promesse.
IBM Lotus Foundations, un anno dopo dalle premesse alle promesse.
 
Corso WebApp iOS - Lezione 06: Web Development for iOS Devices
Corso WebApp iOS - Lezione 06:   Web Development for iOS DevicesCorso WebApp iOS - Lezione 06:   Web Development for iOS Devices
Corso WebApp iOS - Lezione 06: Web Development for iOS Devices
 
Introduzione alla localizzazione web
Introduzione alla localizzazione webIntroduzione alla localizzazione web
Introduzione alla localizzazione web
 
Javascript - 1 | WebMaster & WebDesigner
Javascript - 1 | WebMaster & WebDesignerJavascript - 1 | WebMaster & WebDesigner
Javascript - 1 | WebMaster & WebDesigner
 
UI composition @ dotNetMarche
UI composition @ dotNetMarcheUI composition @ dotNetMarche
UI composition @ dotNetMarche
 
Web Application Insecurity L D2007
Web Application Insecurity  L D2007Web Application Insecurity  L D2007
Web Application Insecurity L D2007
 
Lezione WordPress Università degli Studi di Milano: Installazione e Gestione
Lezione WordPress Università degli Studi di Milano: Installazione e GestioneLezione WordPress Università degli Studi di Milano: Installazione e Gestione
Lezione WordPress Università degli Studi di Milano: Installazione e Gestione
 

HTML5, il lato client della forza...

  • 1. HTML5, il lato client della forza... Marco Vito Moscaritolo marco@agavee.com @mavimo
  • 2. /usr/bin/whoami Marco Vito Moscaritolo “Sviluppatore” web server side con tendenze a testare tutte le nuove tecnologie che si trovano nella rete con particolare interesse verso le tecnologie mobile (altrimenti che ci faccio qui?) Twitter: @mavimo Mail: marco@agavee.com Blog: http://mavimo.org
  • 3. Tanti device, tanti OS differenti (e per ognuno più versioni), e noi? IMPAZIAMO!
  • 5.
  • 6. “HTML5” è crossplatform... figo! Qualche cosa ci viene in aiuto, HTML5 è una definizione che verosimilmente possiamo considerare standard (e anche i vendor di device se ne sono resi conto)! HTML5 non è solo quello che si vede, ma (sopratutto?) quello che NON si vede
  • 7. Nel client HTML5, quindi tutti i fantastici tag Javascript non è più un che conosciamo, ma non ci interessa “abbellimento”, sta diventando questo (in questo caso!) sempre più utile (e fondamentale) per realizzare le webapp - WebSocket - WebStorage - WebSQL (R.I.P. † ) - IndexedDB - Manifest file (File API, WebWorkers, … ci sono ma nel mobile per ora non hanno molto senso/interesse)
  • 8. Nota: Parliamo di WebApp, ma nel caso specifico di siti/servizi web fruibili da mobile
  • 9. Una webapp per il mobile, ok... ...come faccio? Ottimizzo la mia applicazione Creo un applicazione apposita corrente per funzionare su per la versione mobile dispositivi mobile
  • 10. Applicazione ottimizzata Tutto viene sempre fornito al browser che eventualmente lo presenterà in maniera differente. Non fornisco un esperienza d'uso necessariamente ottimizzata Devo “mediare” con l'interfaccia classica della mia webapp
  • 11. Applicazione ad-hoc Posso replicare l'interfaccia del sistema nell'applicazione (esperienza utente più simile a quella calssica del device) Posso modificare il comportamento dell'applicazione in funzione del device con cui accedo (idem come sopra)
  • 12. Messaggio subliminale Messaggio subliminale Messaggio subliminale Messaggio subliminale Messaggio subliminale Messaggio subliminale Messaggio subliminale Messaggio subliminale Messaggio subliminale Applicazione custom Messaggio subliminale Messaggio subliminale Messaggio subliminale Messaggio subliminale Messaggio subliminale Messaggio subliminale Messaggio subliminale Messaggio subliminale Messaggio subliminale è meglio Messaggio subliminale Messaggio subliminale Messaggio subliminale Messaggio subliminale Messaggio subliminale Messaggio subliminale Messaggio subliminale Messaggio subliminale Messaggio subliminale Messaggio subliminale
  • 13. Browser detection www.mysite.tdl Riconoscere il browser che sta arrivando sul sito della webapp ed eventualmente redirigerlo nella sezione/sito apposito mobi.mysite.tdl http://wurfl.sourceforge.net/ http://detectmobilebrowser.com/
  • 15. WebSocket (2) – Sul client Usabili fin da ora var socket = new io.Socket(null { port: 8080, rememberTransport: false Supportati su diversi device }); mobile (Android, iOS) socket.connect(); Permettono comunicazioni socket.on('message', function(obj){ in tempo reale verso/da // Do some stuff server (servizi in push) }); Facili (proprio FACILI) da socket.on('connect', onConnectFn); implementare con alcune socket.on('disconnect', onDisconnectFn); socket.on('reconnect', onReconnectFn); librerie come http://socket.io // ...
  • 16. WebSocket (3) - Sul server Servizi che var http = require('http'), permettano di io = require('socket.io'), Server, // … ; mantenre persistenza della server = http.createServer( … ); connessione con server.listen(8080); costo macchina molto basso var io = io.listen(server); io.on('connection', function(client) { client.send({ … }); Node.JS sembra client.broadcast({ … }); fatto apposta :) client.on('message', onMessageFn); client.on('disconnect', onDisconnectFn); });
  • 17. WebStorage Permette di salvare dati sul var nv = client sottoforma di coppia localStorage['num_view']; key-value if (typeof nv == 'undefined') Facile da usare, supportato nv = 0 su molti device nv += 1; Limiti di spazio utilizzabile e sopratutto non permette ricerche nei valori inseriti localStorage['num_view'] = nv;
  • 18. WebSQL (1) Sintassi SQL-like Supportato sui vari device mobile (Yeah!) Il W3C ha deciso di abbandonarlo in favore di IndexedDB (che non è supportato da nessun browser mobile) #fail #quasifail #happy var db = openDatabase('whymca', '1.0', 'WHYMCA database', 2 * 1024 * 1024); db.transaction(function (tx) { tx.executeSql('CREATE TABLE IF NOT EXISTS attendee (id unique, name, mail)'); tx.executeSql('INSERT INTO attendee (id, name, mail) VALUES (1, "Marco", "marco@agavee.com)'); });
  • 19. WebSQL (2) Ho smesso anni fa di scrivere SQL, non me lo ricordo più, mica dovrò studiarmelo nuovamente??!!??!! http://persistencejs.org/ (*) http://code.google.com/p/orm-html5/ http://impel.simulacre.org/ var allTasks = Task.all().filter("done", '=', true).prefetch("category") .order("name", false).limit(10); allTasks.list(null, function (results) { results.forEach(function (r) { console.log(r.name) window.task = r; }); });
  • 20. IndexedDB (1) Non supportato dai browser mobile attuali, MA parecchi vendor si stanno attrezzando al riguardo Database documentale, e dato che sono che sono tornati tanto di moda ora, con il “NoSQL” Sintassi molto verbosa la anche se abbastanza semplice nelle operazioni che si fanno normalmente
  • 21. IndexedDB (2) Permette di storare oggetti sul server così come sono archiviati sul client (DB documentale con struttura come IndexedDB) Tramite interrogazione diretta da remoto è possibile inserire / leggere i dati presenti nel DB Permette connessioni persistenti per ricevere da remoto le notifiche in push dei risultati della ricerca http://goo.gl/t57zD
  • 22. Ma quindi i dati e l'applicazione? Che fine fanno? Cambio di paradigma rispetto alle applicazioni “classiche” Controller e model finiscono sul client che “si sincronizza” con il server... chi ci lavora deve abituarsi a qusto cambio, quindi all'inizio prendiamo consapevolezza che sbaglieremo parecchio
  • 23. Testate Sperimentate NON aspettate (alcune cose si possono già usare ora) NON pensate di sapere le cose (cambiano talmente in fretta che le vostre certezze cadono in men che non si dica) Mettetevi in discussione, altrimenti...
  • 24. La forza può fare brutti scherzi
  • 25. Demo (se avanza un attimo di tempo)
  • 26. Domande? Marco Vito Moscaritolo @mavimo marco@agavee.com