SlideShare a Scribd company logo
1 of 29
Progressive
Web App e
TWA
Una soluzione marketer ad un problema da
Developers
Francesco Giammanco
SEO su Yandex e tools Yandex
Consulente SEO e Marketing
internazionale
Formazione Marketing Turismo
Project Manager Web Agency modulare e
“Palermo Ladies Open”.
Cos’è una PWA?
• Applicazione web che si
comporta come una pagina web
• Offre funzionalità extra (sito
offline visibile, push notifications)
• Facile: si attiva con un clic
• Sicura: richiede il protocollo
HTTPS
• Installabile su Desktop
Vantaggi
• Le funzioni base non
richiedono un Developer
• Si adatta al contenuto del
sito.
• Permette di realizzare
strategie marketing low cost.
• Offre servizi in app senza
spese.
Svantaggi
• Non tutti i browser li
accettano.
• Aggiornamenti lenti (vedi
Apple).
• Usa più batteria.
• Facile ma poco conosciuta.
Il SEO e le PWA
(fattori indiretti di ranking)
• Aumento dell’accessibilità (traffic
migliora il ranking), meno passaggi per
accedere al sito.
• Migliore esperienza (le push notifications
e le altre funzioni possono migliorare
l’esperienza dell’utente).
• Aspetto grafico più accattivante nei
browser.
Il SEO e le PWA
(fattori di ranking)
• Sito funziona in modalità offline
(uptime del server per gli utenti
pari al 100%)
• Migliore performance e velocità
• Caching del browser
Lighthouse
(tool integrato di Chrome)
Utilizza Lighthouse per
monitorare lo stato della tua
Progressive Web App
Premi “Ctrl + Shift + I” mentre
sei su una finestra di Chrome,
alla casella “Audits”
To Do List
Tutti gli strumenti per montare una PWA
• Creare il Service Worker (file javascript)
• Creare Manifest.json
• Script da inserire nelle pagine del sito.
Service-Worker.js
(lo potete trovare anche come sw.js)
• E’ il file che gestisce la cache del browser
• Devi inserire uno script in ogni pagina dove
vuoi che sia attivo.
• Inserisci il file nella root del sito.
Service-Worker.js
• Inserisci il codice nello spazio
designato dal tuo tema grafico (prima
della fine di <head>)
• Hai un tema che non lo permette?
Inserisci lo script in <head> o nel
footer delle pagine.
• NON aggiungerlo in function.php
Visita http://bit.ly/2XsEB4Q per copiare il codice
Service-Worker.js
• Inserisci lo script in un file che
chiamerai service-worker.js
• Inserisci il file nella root del sito.
Premi “ Ctrl + Shift + I ” su Chrome,
poi vai su Application > Service
worker per vedere se è installato
correttamente.
Visita http://bit.ly/2XsEB4Q per copiare il codice
Service-Worker.js
La prima sezione di codice:
• Installa il service worker,
• crea una o più cache dedicate,
• Inserisci i file che vuoi far gestire
dalla cache.
Visita http://bit.ly/2XsEB4Q per copiare il codice
Service-Worker.js
Seconda sezione di codice:
Cloniamo le richieste, perché una
verrà utilizzata dalla cache, una dal
browser.
Se il browser ha una versione in cache
della pagina la presenterà al posto di
caricarne una nuova.
Visita http://bit.ly/2XsEB4Q per copiare il codice
Manifest.json
• Crea un file Manifest.json
• Il file ha effetto sulla directory in cui è inserito e in tutte le sub
directory.
• Se vuoi che influenzi l’intero sito inseriscilo nella root.
• Il file deve essere personalizzato.
• Inserisci uno script su una sezione del sito che influenzi tutte le
pagine.
Manifest.json
• Crea un file Manifest.json
• Il file ha effetto sulla directory in cui è inserito
e in tutte le sottodirectory.
• Se vuoi che influenzi l’intero sito inseriscilo
nella root.
• Il file deve essere personalizzato.
Visita http://bit.ly/2XsEB4Q per copiare il codice
Manifest.json
• Crea un file Manifest.json
• Il file ha effetto sulla directory in cui è inserito e in tutte le sottodirectory.
• Se vuoi che influenzi l’intero sito inseriscilo nella root.
• Il file deve essere personalizzato.
Visita http://bit.ly/2XsEB4Q per copiare il codice
Manifest.json
• Controlla sul pannello Application di Chrome
che il file sia installato correttamente.
• Se tutto è andato correttamente, spunterà un
popup (differente su ogni browser) che
avviserà della possibilità di installare la
progressive web app del sito.
Manifest.json
Successivamente, una volta installata la
app sullo smartphone (o sul desktop),
sarà possible aprire le pagine del sito
dall’app,
anche durante una normale navigazione
su Google.
Cos’è una TWA?
• le Trusted Web Activities (TWA)
permette di pubblicare i siti sugli sugli
store (Windows, Android, iOS).
• Utilizzare una sezione di un sito
come app.
• Avere un servizio integrato (app)
integrato nel database di un e-
commerce.
Come si realizza una TWA
Ci sono vari metodi:
• Realizzarla a partire dale
conoscenze delle PWA
https://developers.google.com
/web/updates/2019/02/using-
twa (CORRETTO)
• Utilizzare un repository
Google e completare
l’operazione da se (CORRETTO
MA PIGRO)
• Utilizzare servizi terzi per
ricevere un APK pronta
(VELOCE MA SVANTAGGIOSO)
Utilizzeremo il metodo
“pigro”
• il metodo “corretto” ha
senso se dovete crescere come
developer.
• Il metodo veloce lascia il
“segno” del metodo utilizzato
(URL della App).
• Inseriremo la TWA anche su
iOS Store? No, richiederebbe
un passaggio ulteriore.
Iniziamo!
• Avere i permessi per creare file e cartelle nello
spazio in cui è installato il tuo sito WordPress
• Devi avere i requisiti su Lighthouse per generare
la chiamata “Add to Homescreen”
• Devi poter pubblicare app su Google Play
https://play.google.com/apps/publish/
• Scaricare Android Studio
• Scaricare da GitHub il file ZIP presente in
https://github.com/GoogleChromeLabs/svgomg-
twa
Crea la tua App
• Vai su https://play.google.com/apps/publish/
• Clicca su CREA APPLICAZIONE
• Inserisci le informazioni che servono per terminare la
prima parte della creazione dell’app
• Vai su Firma dell’app e copia Fingerprint SHA-256 del certificato
• Vai a generare il Digital Statement Asset tramite
https://developers.google.com/digital-asset-
links/tools/generator
Digital Statement Asset
• Apri https://developers.google.com/digital-asset-links/tools/generator
• Copia da Google Play Fingerprint SHA-256
Inserisci:
• 1) l’URL del sito,
• 2) il nome dellApp di Google Play
• 3) Fingerprint SHA-256 del certificato
• Genera il codice che va dentro la cartella (da creare) /.well-known/assetlinks.json
Crea la tua App
• Apri Android Studio e vai su File > New > Import Project
e caricare il progetto scaricato da GitHub.
• Modifica il file AndroidManifest.XML inserendo i dati
che combacino con la scheda dell’app e l’URL del sito da
inserire
• Vai su New > Image Asset per caricare le icone e le
immagini di presentazione dell’app
• Firma la app (genera una key) tramite il pannello Build >
Generate Signed Bundle / Apk
Crea la tua App
• Carica la tua app su Release dell’app
dentro il tuo progetto su Google Play
• Fornisci tutte le informazioni richieste
dai singoli pannelli.
• Non realizzare Beta o altro, dovresti
generare varianti della key su Android
Studio.
Link utili
This TWA stuff rocks!
https://medium.com/@svenbudak/this-twa-stuff-
rocks-finally-i-got-my-pwa-on-google-play-store-
b92fe8dae31f
Realizzare una PWA da zero per WordPress
https://www.francescogiammanco.it/progressive-web-
app-lighthouse/
Realizzare una TWA da zero
https://www.francescogiammanco.it/trasformare-un-
sito-in-twa/
TWA di GoogleChromeLabs
https://github.com/GoogleChromeLabs/svgomg-twa
Web App Manifest Generator
https://app-manifest.firebaseapp.com/
Ringraziamenti
• Francesco Grasso
• Lo Staff di WordCamp Catania
• WordPress Meetup Palermo

More Related Content

What's hot

Generazione Dinamica di Codice in .NET
Generazione Dinamica di Codice in .NETGenerazione Dinamica di Codice in .NET
Generazione Dinamica di Codice in .NET
Stefano Ottaviani
 
Le novità di Visual Studio 2015 per lo sviluppatore ASP.NET
Le novità di Visual Studio 2015 per lo sviluppatore ASP.NETLe novità di Visual Studio 2015 per lo sviluppatore ASP.NET
Le novità di Visual Studio 2015 per lo sviluppatore ASP.NET
Emanuele Bartolesi
 

What's hot (20)

Frontend Development with Blazor
Frontend Development with BlazorFrontend Development with Blazor
Frontend Development with Blazor
 
Generazione Dinamica di Codice in .NET
Generazione Dinamica di Codice in .NETGenerazione Dinamica di Codice in .NET
Generazione Dinamica di Codice in .NET
 
Creare App per Office 365 con ASP.NET MVC 5
Creare App per Office 365 con ASP.NET MVC 5Creare App per Office 365 con ASP.NET MVC 5
Creare App per Office 365 con ASP.NET MVC 5
 
Blazor - i limiti sono fatti per essere superati
Blazor - i limiti sono fatti per essere superatiBlazor - i limiti sono fatti per essere superati
Blazor - i limiti sono fatti per essere superati
 
Sviluppo di applicazioni web in ambito mobile
Sviluppo di applicazioni web in ambito mobileSviluppo di applicazioni web in ambito mobile
Sviluppo di applicazioni web in ambito mobile
 
Corso Base Wordpress 22-40 | installazione (2 di 4)
Corso Base Wordpress 22-40 | installazione (2 di 4)Corso Base Wordpress 22-40 | installazione (2 di 4)
Corso Base Wordpress 22-40 | installazione (2 di 4)
 
Php for ASP.NET Developers
Php for ASP.NET DevelopersPhp for ASP.NET Developers
Php for ASP.NET Developers
 
ASP.NET performance optimization
ASP.NET performance optimizationASP.NET performance optimization
ASP.NET performance optimization
 
Blazor Focus Week Bari
Blazor Focus Week BariBlazor Focus Week Bari
Blazor Focus Week Bari
 
Il PaaS di Google
Il PaaS di GoogleIl PaaS di Google
Il PaaS di Google
 
Le novità di Visual Studio 2015 per lo sviluppatore ASP.NET
Le novità di Visual Studio 2015 per lo sviluppatore ASP.NETLe novità di Visual Studio 2015 per lo sviluppatore ASP.NET
Le novità di Visual Studio 2015 per lo sviluppatore ASP.NET
 
Spa with Blazor
Spa with BlazorSpa with Blazor
Spa with Blazor
 
Blazor with .net 5 - di Gerardo Greco
Blazor with .net 5 - di Gerardo GrecoBlazor with .net 5 - di Gerardo Greco
Blazor with .net 5 - di Gerardo Greco
 
Ottimizzare WordPress su Windows/IIS
Ottimizzare WordPress su Windows/IISOttimizzare WordPress su Windows/IIS
Ottimizzare WordPress su Windows/IIS
 
Angular js o React? Spunti e idee per la scelta di un framework
Angular js o React? Spunti e idee per la scelta di un frameworkAngular js o React? Spunti e idee per la scelta di un framework
Angular js o React? Spunti e idee per la scelta di un framework
 
Pubblicazione pagina asp net su server iis con
Pubblicazione pagina asp net su server iis conPubblicazione pagina asp net su server iis con
Pubblicazione pagina asp net su server iis con
 
Selenium e testing web - di Alessio Benedetti
Selenium e testing web - di Alessio BenedettiSelenium e testing web - di Alessio Benedetti
Selenium e testing web - di Alessio Benedetti
 
ASP.NET Core - dove siamo arrivati
ASP.NET Core - dove siamo arrivatiASP.NET Core - dove siamo arrivati
ASP.NET Core - dove siamo arrivati
 
Tech Webinar: Come ottimizzare il workflow nello sviluppo di Web App
Tech Webinar: Come ottimizzare il workflow nello sviluppo di Web AppTech Webinar: Come ottimizzare il workflow nello sviluppo di Web App
Tech Webinar: Come ottimizzare il workflow nello sviluppo di Web App
 
Le novità di Ionic 4- Il framework basato su Angular per sviluppare applicazi...
Le novità di Ionic 4- Il framework basato su Angular per sviluppare applicazi...Le novità di Ionic 4- Il framework basato su Angular per sviluppare applicazi...
Le novità di Ionic 4- Il framework basato su Angular per sviluppare applicazi...
 

Similar to WordCamp Catania 2019 PWA e TWA

Cert04 70-484 - essentials of developing windows store apps
Cert04   70-484 - essentials of developing windows store appsCert04   70-484 - essentials of developing windows store apps
Cert04 70-484 - essentials of developing windows store apps
DotNetCampus
 
Smau Bari 2013 Massimo Chirivì
Smau Bari 2013 Massimo ChirivìSmau Bari 2013 Massimo Chirivì
Smau Bari 2013 Massimo Chirivì
SMAU
 

Similar to WordCamp Catania 2019 PWA e TWA (20)

Csp@scuola smarttv corso1
Csp@scuola smarttv corso1Csp@scuola smarttv corso1
Csp@scuola smarttv corso1
 
Meetup Fluent Design e Progressive Web App
Meetup Fluent Design e Progressive Web AppMeetup Fluent Design e Progressive Web App
Meetup Fluent Design e Progressive Web App
 
Meetup Progressive Web App
Meetup Progressive Web AppMeetup Progressive Web App
Meetup Progressive Web App
 
Intel AppUp Webinar Italiano html5
Intel AppUp Webinar Italiano html5Intel AppUp Webinar Italiano html5
Intel AppUp Webinar Italiano html5
 
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...
 
Introduzione a GAE - Alessandro Aglietti e Lorenzo Bugiani
Introduzione a GAE - Alessandro Aglietti e Lorenzo BugianiIntroduzione a GAE - Alessandro Aglietti e Lorenzo Bugiani
Introduzione a GAE - Alessandro Aglietti e Lorenzo Bugiani
 
Cert04 70-484 - essentials of developing windows store apps
Cert04   70-484 - essentials of developing windows store appsCert04   70-484 - essentials of developing windows store apps
Cert04 70-484 - essentials of developing windows store apps
 
Manuale EasyPHP e Wordpress
Manuale EasyPHP e WordpressManuale EasyPHP e Wordpress
Manuale EasyPHP e Wordpress
 
Introduzione alla localizzazione web
Introduzione alla localizzazione webIntroduzione alla localizzazione web
Introduzione alla localizzazione web
 
Sviluppare estensioni per google chrome
Sviluppare estensioni per google chromeSviluppare estensioni per google chrome
Sviluppare estensioni per google chrome
 
Wp app studio_new
Wp app studio_newWp app studio_new
Wp app studio_new
 
Installa web master su wordpress
Installa web master su wordpressInstalla web master su wordpress
Installa web master su wordpress
 
SMAU Milano 2014 GAE 24/10/2014 - IWA Italy
SMAU Milano 2014 GAE 24/10/2014 - IWA ItalySMAU Milano 2014 GAE 24/10/2014 - IWA Italy
SMAU Milano 2014 GAE 24/10/2014 - IWA Italy
 
EtnaDev 2015 - Windows Bridge
EtnaDev 2015 - Windows BridgeEtnaDev 2015 - Windows Bridge
EtnaDev 2015 - Windows Bridge
 
Microsoft Fast - Overview
Microsoft Fast - OverviewMicrosoft Fast - Overview
Microsoft Fast - Overview
 
Sviluppare una app mobile net oriented
Sviluppare una app mobile net orientedSviluppare una app mobile net oriented
Sviluppare una app mobile net oriented
 
La sicurezza delle Web Application - SMAU Business Bari 2013
La sicurezza delle Web Application - SMAU Business Bari 2013La sicurezza delle Web Application - SMAU Business Bari 2013
La sicurezza delle Web Application - SMAU Business Bari 2013
 
Smau Bari 2013 Massimo Chirivì
Smau Bari 2013 Massimo ChirivìSmau Bari 2013 Massimo Chirivì
Smau Bari 2013 Massimo Chirivì
 
Portofino per Jug Padova
Portofino per Jug PadovaPortofino per Jug Padova
Portofino per Jug Padova
 
Creare PWA con Angular
Creare PWA con AngularCreare PWA con Angular
Creare PWA con Angular
 

WordCamp Catania 2019 PWA e TWA

  • 1. Progressive Web App e TWA Una soluzione marketer ad un problema da Developers
  • 2. Francesco Giammanco SEO su Yandex e tools Yandex Consulente SEO e Marketing internazionale Formazione Marketing Turismo Project Manager Web Agency modulare e “Palermo Ladies Open”.
  • 3. Cos’è una PWA? • Applicazione web che si comporta come una pagina web • Offre funzionalità extra (sito offline visibile, push notifications) • Facile: si attiva con un clic • Sicura: richiede il protocollo HTTPS • Installabile su Desktop
  • 4. Vantaggi • Le funzioni base non richiedono un Developer • Si adatta al contenuto del sito. • Permette di realizzare strategie marketing low cost. • Offre servizi in app senza spese.
  • 5. Svantaggi • Non tutti i browser li accettano. • Aggiornamenti lenti (vedi Apple). • Usa più batteria. • Facile ma poco conosciuta.
  • 6. Il SEO e le PWA (fattori indiretti di ranking) • Aumento dell’accessibilità (traffic migliora il ranking), meno passaggi per accedere al sito. • Migliore esperienza (le push notifications e le altre funzioni possono migliorare l’esperienza dell’utente). • Aspetto grafico più accattivante nei browser.
  • 7. Il SEO e le PWA (fattori di ranking) • Sito funziona in modalità offline (uptime del server per gli utenti pari al 100%) • Migliore performance e velocità • Caching del browser
  • 8. Lighthouse (tool integrato di Chrome) Utilizza Lighthouse per monitorare lo stato della tua Progressive Web App Premi “Ctrl + Shift + I” mentre sei su una finestra di Chrome, alla casella “Audits”
  • 9. To Do List Tutti gli strumenti per montare una PWA • Creare il Service Worker (file javascript) • Creare Manifest.json • Script da inserire nelle pagine del sito.
  • 10. Service-Worker.js (lo potete trovare anche come sw.js) • E’ il file che gestisce la cache del browser • Devi inserire uno script in ogni pagina dove vuoi che sia attivo. • Inserisci il file nella root del sito.
  • 11. Service-Worker.js • Inserisci il codice nello spazio designato dal tuo tema grafico (prima della fine di <head>) • Hai un tema che non lo permette? Inserisci lo script in <head> o nel footer delle pagine. • NON aggiungerlo in function.php Visita http://bit.ly/2XsEB4Q per copiare il codice
  • 12. Service-Worker.js • Inserisci lo script in un file che chiamerai service-worker.js • Inserisci il file nella root del sito. Premi “ Ctrl + Shift + I ” su Chrome, poi vai su Application > Service worker per vedere se è installato correttamente. Visita http://bit.ly/2XsEB4Q per copiare il codice
  • 13. Service-Worker.js La prima sezione di codice: • Installa il service worker, • crea una o più cache dedicate, • Inserisci i file che vuoi far gestire dalla cache. Visita http://bit.ly/2XsEB4Q per copiare il codice
  • 14. Service-Worker.js Seconda sezione di codice: Cloniamo le richieste, perché una verrà utilizzata dalla cache, una dal browser. Se il browser ha una versione in cache della pagina la presenterà al posto di caricarne una nuova. Visita http://bit.ly/2XsEB4Q per copiare il codice
  • 15. Manifest.json • Crea un file Manifest.json • Il file ha effetto sulla directory in cui è inserito e in tutte le sub directory. • Se vuoi che influenzi l’intero sito inseriscilo nella root. • Il file deve essere personalizzato. • Inserisci uno script su una sezione del sito che influenzi tutte le pagine.
  • 16. Manifest.json • Crea un file Manifest.json • Il file ha effetto sulla directory in cui è inserito e in tutte le sottodirectory. • Se vuoi che influenzi l’intero sito inseriscilo nella root. • Il file deve essere personalizzato. Visita http://bit.ly/2XsEB4Q per copiare il codice
  • 17. Manifest.json • Crea un file Manifest.json • Il file ha effetto sulla directory in cui è inserito e in tutte le sottodirectory. • Se vuoi che influenzi l’intero sito inseriscilo nella root. • Il file deve essere personalizzato. Visita http://bit.ly/2XsEB4Q per copiare il codice
  • 18. Manifest.json • Controlla sul pannello Application di Chrome che il file sia installato correttamente. • Se tutto è andato correttamente, spunterà un popup (differente su ogni browser) che avviserà della possibilità di installare la progressive web app del sito.
  • 19. Manifest.json Successivamente, una volta installata la app sullo smartphone (o sul desktop), sarà possible aprire le pagine del sito dall’app, anche durante una normale navigazione su Google.
  • 20. Cos’è una TWA? • le Trusted Web Activities (TWA) permette di pubblicare i siti sugli sugli store (Windows, Android, iOS). • Utilizzare una sezione di un sito come app. • Avere un servizio integrato (app) integrato nel database di un e- commerce.
  • 21. Come si realizza una TWA Ci sono vari metodi: • Realizzarla a partire dale conoscenze delle PWA https://developers.google.com /web/updates/2019/02/using- twa (CORRETTO) • Utilizzare un repository Google e completare l’operazione da se (CORRETTO MA PIGRO) • Utilizzare servizi terzi per ricevere un APK pronta (VELOCE MA SVANTAGGIOSO)
  • 22. Utilizzeremo il metodo “pigro” • il metodo “corretto” ha senso se dovete crescere come developer. • Il metodo veloce lascia il “segno” del metodo utilizzato (URL della App). • Inseriremo la TWA anche su iOS Store? No, richiederebbe un passaggio ulteriore.
  • 23. Iniziamo! • Avere i permessi per creare file e cartelle nello spazio in cui è installato il tuo sito WordPress • Devi avere i requisiti su Lighthouse per generare la chiamata “Add to Homescreen” • Devi poter pubblicare app su Google Play https://play.google.com/apps/publish/ • Scaricare Android Studio • Scaricare da GitHub il file ZIP presente in https://github.com/GoogleChromeLabs/svgomg- twa
  • 24. Crea la tua App • Vai su https://play.google.com/apps/publish/ • Clicca su CREA APPLICAZIONE • Inserisci le informazioni che servono per terminare la prima parte della creazione dell’app • Vai su Firma dell’app e copia Fingerprint SHA-256 del certificato • Vai a generare il Digital Statement Asset tramite https://developers.google.com/digital-asset- links/tools/generator
  • 25. Digital Statement Asset • Apri https://developers.google.com/digital-asset-links/tools/generator • Copia da Google Play Fingerprint SHA-256 Inserisci: • 1) l’URL del sito, • 2) il nome dellApp di Google Play • 3) Fingerprint SHA-256 del certificato • Genera il codice che va dentro la cartella (da creare) /.well-known/assetlinks.json
  • 26. Crea la tua App • Apri Android Studio e vai su File > New > Import Project e caricare il progetto scaricato da GitHub. • Modifica il file AndroidManifest.XML inserendo i dati che combacino con la scheda dell’app e l’URL del sito da inserire • Vai su New > Image Asset per caricare le icone e le immagini di presentazione dell’app • Firma la app (genera una key) tramite il pannello Build > Generate Signed Bundle / Apk
  • 27. Crea la tua App • Carica la tua app su Release dell’app dentro il tuo progetto su Google Play • Fornisci tutte le informazioni richieste dai singoli pannelli. • Non realizzare Beta o altro, dovresti generare varianti della key su Android Studio.
  • 28. Link utili This TWA stuff rocks! https://medium.com/@svenbudak/this-twa-stuff- rocks-finally-i-got-my-pwa-on-google-play-store- b92fe8dae31f Realizzare una PWA da zero per WordPress https://www.francescogiammanco.it/progressive-web- app-lighthouse/ Realizzare una TWA da zero https://www.francescogiammanco.it/trasformare-un- sito-in-twa/ TWA di GoogleChromeLabs https://github.com/GoogleChromeLabs/svgomg-twa Web App Manifest Generator https://app-manifest.firebaseapp.com/
  • 29. Ringraziamenti • Francesco Grasso • Lo Staff di WordCamp Catania • WordPress Meetup Palermo