Your SlideShare is downloading. ×
Web Offline
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Saving this for later?

Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime - even offline.

Text the download link to your phone

Standard text messaging rates apply

Web Offline

315
views

Published on

Descrição introdutória de uma arquitetura para o desenvolvimento de aplicações web com funcionalidades offline. …

Descrição introdutória de uma arquitetura para o desenvolvimento de aplicações web com funcionalidades offline.
Tecnologias envolvidas: HTML5, Javascript, Handlebards, etc.

Published in: Technology

0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
315
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
7
Comments
0
Likes
1
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Web Offline Bruno Gama Catão
  • 2. – Eu, quando meu cliente pediu isso ! “Hã ?!”
  • 3. Qual o Problema ? Sistema da PCCG 70 delegacias com acesso à Internet SEM software
  • 4. Requisitos do Sistema Quero ter acesso ao software em todas as delegacias Quero poder emitir relatórios em tempo real de qualquer local Características “especiais” Baixa qualificação dos usuários Frequente instabilidade da conexão com a Internet
  • 5. Resumindo Baixa Qualificação dos Usuários Não dá para instalar aplicativos complicados Acessar de qualquer lugar Tem “cheiro” de Internet Instabilidade da conexão Ninguém costa de ouvir: “Desculpe senhor, mas o sistema está fora do ar"
  • 6. “Quero algo que esteja na Internet, mas que funcione quando a Internet cair"
  • 7. Alternativas Arquiteturas Cliente / Servidor: Delphi, Java Webstart, Adobe AIR, WPF, … Problema: - Alô, é do TI ? Então, o programa não tá abrindo ! - Você fez alguma coisa diferente ? - Não, só abri uma página dizendo que ganhei um ringtone …
  • 8. Por que HTML5 ? HTML5 = HTML + CSS3 + JS AppCache + Web Storage !!! Não preciso instalar software no computador de ninguém ! Se a Internet não abrir chame o suporte e não o programador ;)
  • 9. AppCache + Web Storage =
  • 10. Vantagens Carregamento mais rápido Suporta instabilidades de conexão Bom para aplicativos móveis (o 3G não é tão bom assim) Coleta de dados …
  • 11. –Clarice Lispector “Bora programar galera !”
  • 12. AppCache 1/2 HTML Manifesto Browser 1 - Primeiro Acesso Eu tenho um manifesto ! 2 - Faz download Cache ————— arquivo 1 arquivo 2 …. 3 - Define 4 - Faz download Cache Local ————— arquivo 1 arquivo 2 …. 5 - Cria WEB LOCAL
  • 13. AppCache 2/2 HTML Manifesto Browser 1 - Outros Acessos Eu tenho um manifesto ! Cache ————— arquivo 1 arquivo 2 …. Cache Local ————— arquivo 1 arquivo 2 …. 3 - Acessa arquivos locais WEB LOCAL 2 - Tem cache ? NÃO HÁ COMUNICAÇÃO !
  • 14. Manifesto CACHE MANIFEST! ! /index.html! /imagens/logo.png! /javascript/script.js! /css/estilo.css
  • 15. HTML <html manifest="minha_app.appcache"> HTML Manifesto Eu tenho um manifesto !
  • 16. FIM
  • 17. O que falta ? Mime-type Como atualizar o conteúdo ? E a comunicação cliente / servidor ? Posso ter dados mistos (online / offline) ? E o banco de dados ?
  • 18. text/cache-manifest
  • 19. Mime-Type No Apache, adicionar ao .htaccess AddType text/cache-manifest .appcache! Em Java, criar um filtro (próximo slide) No IIS, Sei Lá !!!
  • 20. Atualização de Conteúdo O conteúdo é atualizado se a cache for invalidada Coisas que NÃO invalidam a AppCache: F5, Control F5, limpar a cache e limpar dados offline Como invalidar a cache ? Alterando o manifesto Page miss (404 ou 500) No Chrome: chrome://appcache-internals/
  • 21. Esqueci de Colocar um Arquivo no Manifesto
  • 22. F5
  • 23. – Dalai Lama “Tudo tem que estar no manifesto”
  • 24. Atualização Controlada Colocar um número de versão no manifesto ajuda ;) # Versao 1.0! CACHE MANIFEST! ! /index.html! /imagens/logo.png! /javascript/script.js! /css/estilo.css
  • 25. Dados Mistos Seção Network Recursos que estão na rede Seção Fallback Baixa da rede, mas se estiver offline usa esse arquivo
  • 26. Seção Network CACHE MANIFEST! ! /index.html! /imagens/logo.png! /javascript/script.js! /css/estilo.css! ! NETWORK:! http://www.google-analytics.com/ga.js
  • 27. Seção Network ;) CACHE MANIFEST! ! /index.html! /imagens/logo.png! /javascript/script.js! /css/estilo.css! ! NETWORK:! *
  • 28. Imagine o cenário … Seu aplicativo tem usuários Cada usuário tem sua fotografia Como seu sistema se comportará offline ? Você vai baixar todas as fotos ? Teria que atualizar o manifesto para cada nova foto
  • 29. Online
  • 30. Offline
  • 31. Solução Seção Fallback Forneça uma foto padrão para quando estiver offline
  • 32. Seção Fallback CACHE MANIFEST! ! /index.html! /imagens/logo.png! /javascript/script.js! /css/estilo.css! ! NETWORK:! *! ! FALLBACK:! /img/avatares/ /img/avatar-generico.png
  • 33. Seção Fallback
  • 34. Comunicação Cliente / Servidor Javascript !!! REST JSON Inversão de arquitetura
  • 35. Arquitetura Inversa Normalmente Lógica no servidor Cliente possui lógica apenas de apresentação Porém, precisamos de uma arquitetura inversa Por quê ?
  • 36. JavaScript Aprendam ! Javascript != Java Linguagem Funcional WEB => JavaScript node.js => Javascript server-side ! Vale a pena olhar …
  • 37. E o Banco de Dados Web Storage Session Storage Local Storage temporário permanente (5 a 10mb por página)
  • 38. PouchDB Dupla Dinâmica: PouchDB + CouchDB var db = new PouchDB('dbname'); ! db.put({ _id: 'dave@gmail.com', name: 'David', age: 67 }); ! db.changes().on('change', function() { console.log('Ch-Ch-Changes'); }); ! db.replicate.to('http://example.com/mydb');
  • 39. Bibliotecas require.js - http://requirejs.org jquery - http://jquery.com handlebars - http://handlebarsjs.com
  • 40. require.js
  • 41. jQuery Uniformização Busca de elementos por seletores CSS Suporte a plugins Ex: $(‘a’).hide( ); // Esconde todos os links $(‘h1’).css(‘color’, ‘red’); // Todos os títulos ficam vermelho
  • 42. Handlebars Templating Engine (ex: JSP, ASP, PHP, …) Facilita a produção de texto (normalmente HTML) TEMPLATE DADOS String+ = Normalmente HTML
  • 43. PROBLEMAS
  • 44. Problemas Cache-control:! no-store
  • 45. Problemas Muito inovador Falta de frameworks Falta de ferramentas
  • 46. Vantagens Muito inovador Acelera muito a velocidade do acesso Diminui bastante o processamento no servidor Aumenta as possibilidades de interação com o aplicativo
  • 47. Resultados
  • 48. docx gerado 100% em JavaScript ! DocxGenJS https://github.com/edi9999/docxtemplater
  • 49. Perguntas ?
  • 50. Referências Sérgio Lopes - http://sergiolopes.org/palestra- appcache-html5-offline W3Schools - http://www.w3schools.com/html/ html5_app_cache.asp Zeno Rocha - http://zenorocha.com/html5-local- storage/