O documento discute as soluções HTML5 para aplicações offline e armazenamento de dados, incluindo AppCache para armazenar recursos offline, Local Storage e Session Storage para armazenamento de dados não estruturados no cliente, e Indexed DB para armazenamento de dados estruturados. O documento fornece exemplos de código para demonstrar como usar essas APIs do HTML5 para permitir que aplicações funcionem offline e armazenem dados localmente no navegador.
IndexedDB is an HTML5 API that allows us to store/retrieve large amount of data on user’s browser. It does not have any storage limit, and is hence better than other browser storages.
[@NaukriEngineering] Git Basic Commands and HacksNaukri.com
This presentation is not to explain why we use Git and the benefits of using Git over SVN.
But, it is about how to use the simplest and basic functionalities of Git. And small hacks to make our lives easy.
Vocẽ já pensou em criar testes end-to-end (ou testes de UI) mas se deparou com um ambiente onde o codigo de front e back está distribuído em vários repositórios? Vou explicar o que você precisa fazer para executar seus testes com docker.
https://gdg-floripa.github.io/devfest/
Posts relacionados à palestra com o passo-a-passo:
Parte 1: https://medium.com/@barbaracabral/configurando-selenium-grid-com-docker-parte-1-a08106f3efa7
Parte 2: https://medium.com/@barbaracabral/configurando-selenium-grid-com-docker-parte-2-25023d25b71a
O documento descreve a plataforma de serviços da Netflix, incluindo: (1) O serviço de discovery Eureka que permite aos serviços se registrarem e se comunicarem; (2) O cliente load balancer Ribbon que distribui chamadas entre instâncias dos serviços; (3) A biblioteca Feign que facilita a comunicação REST entre serviços; (4) O circuit breaker Hystrix que provê tolerância a falhas e metrics.
Uma visão geral da estratégia de middleware da MicrosoftOsvaldo Daibert
O documento fornece uma visão geral da estratégia de middleware da Microsoft, apresentando o AppFabric como uma nova plataforma de middleware para aplicações distribuídas que integra capacidades como roteamento, mensagens, cache e workflows, permitindo escalabilidade em nuvem e ambiente local.
O documento apresenta a plataforma Windows Azure da Microsoft, incluindo seus principais serviços como Compute, Storage, Database e Service Bus. A plataforma oferece um ambiente virtualizado na nuvem para executar aplicativos de forma escalável e disponível.
O documento descreve a introdução à linguagem PHP para programação web server-side. Ele explica como configurar o ambiente de desenvolvimento usando XAMPP e Apache em Debian, e discute páginas estáticas versus dinâmicas. Também apresenta a sintaxe básica de PHP, incluindo variáveis, comentários, ecoar, e variáveis globais como $_SERVER.
IndexedDB is an HTML5 API that allows us to store/retrieve large amount of data on user’s browser. It does not have any storage limit, and is hence better than other browser storages.
[@NaukriEngineering] Git Basic Commands and HacksNaukri.com
This presentation is not to explain why we use Git and the benefits of using Git over SVN.
But, it is about how to use the simplest and basic functionalities of Git. And small hacks to make our lives easy.
Vocẽ já pensou em criar testes end-to-end (ou testes de UI) mas se deparou com um ambiente onde o codigo de front e back está distribuído em vários repositórios? Vou explicar o que você precisa fazer para executar seus testes com docker.
https://gdg-floripa.github.io/devfest/
Posts relacionados à palestra com o passo-a-passo:
Parte 1: https://medium.com/@barbaracabral/configurando-selenium-grid-com-docker-parte-1-a08106f3efa7
Parte 2: https://medium.com/@barbaracabral/configurando-selenium-grid-com-docker-parte-2-25023d25b71a
O documento descreve a plataforma de serviços da Netflix, incluindo: (1) O serviço de discovery Eureka que permite aos serviços se registrarem e se comunicarem; (2) O cliente load balancer Ribbon que distribui chamadas entre instâncias dos serviços; (3) A biblioteca Feign que facilita a comunicação REST entre serviços; (4) O circuit breaker Hystrix que provê tolerância a falhas e metrics.
Uma visão geral da estratégia de middleware da MicrosoftOsvaldo Daibert
O documento fornece uma visão geral da estratégia de middleware da Microsoft, apresentando o AppFabric como uma nova plataforma de middleware para aplicações distribuídas que integra capacidades como roteamento, mensagens, cache e workflows, permitindo escalabilidade em nuvem e ambiente local.
O documento apresenta a plataforma Windows Azure da Microsoft, incluindo seus principais serviços como Compute, Storage, Database e Service Bus. A plataforma oferece um ambiente virtualizado na nuvem para executar aplicativos de forma escalável e disponível.
O documento descreve a introdução à linguagem PHP para programação web server-side. Ele explica como configurar o ambiente de desenvolvimento usando XAMPP e Apache em Debian, e discute páginas estáticas versus dinâmicas. Também apresenta a sintaxe básica de PHP, incluindo variáveis, comentários, ecoar, e variáveis globais como $_SERVER.
O documento apresenta uma introdução ao desenvolvimento web, abordando:
1) As características dos clientes e servidores na arquitetura cliente-servidor;
2) A evolução da web ao longo do tempo, desde a criação da HTML até o desenvolvimento de novas tecnologias como JavaScript, CSS e DHTML;
3) Tópicos importantes como a "guerra dos navegadores", a necessidade de padronização e o surgimento de novas especificações como HTML4, CSS e DOM.
O documento descreve o SAPO Vídeos, uma plataforma de vídeos online da SAPO que permite upload e compartilhamento de conteúdo gerado pelos usuários através de múltiplas interfaces como web, mobile e APIs. A arquitetura da aplicação é baseada em software livre como Lighttpd, Apache, PHP, MySQL e utiliza tecnologias como Smarty, memcache e mencoder.
O documento discute a experiência de adotar o MongoDB em produção, incluindo desafios iniciais como erros de memória, atualizações necessárias do driver e configurações. Também aborda tópicos como replica sets, sharding, segurança e a versão 2.0 do MongoDB.
1. O documento discute os 12 e 15 Fatores que definem aplicações prontas para a nuvem. Estes fatores incluem estadoless, portabilidade, descartabilidade e outros princípios para construir software escalável.
2. O documento fornece uma breve história dos 12 Fatores, originalmente criados por Adam Wiggins para Heroku.
3. Os principais fatores discutidos incluem configurações como variáveis de ambiente, logs efêmeros, serviços de apoio declarativos e ambientes de desenvolvimento e produção similares.
This document summarizes a presentation on ASP.NET Web API given by Pedro Félix. The presentation introduced ASP.NET Web API, describing its programming model based on HTTP and focus on building APIs exposed via the web. It also covered the architectural components involved, including routing, controllers, request/response handling, and extensibility points.
Ha proxy + consul = balance de carga transparente para conteinersguitoper
O documento descreve como usar HAProxy e Consul para fornecer balanceamento de carga transparente para containers Docker. Consul é usado para descoberta de serviços e armazenamento de dados, enquanto HAProxy é configurado dinamicamente usando Consul Template para direcionar tráfego para containers registrados no Consul. O documento inclui exemplos de comandos Docker para executar containers do Consul, Registrator e HAProxy/Consul Template para implementar esta solução.
Com o Amazon API Gateway e AWS Lambda é possível construir API de forma escalavel, sem utilização de servidor. Nessa sessão será abordado arquiteturas, boas práticas e integrações entre os serviços.
Deep dive em aceleração de entrega de conteúdo, APIs e Aplicações utilizando ...Amazon Web Services LATAM
O documento apresenta o serviço Lambda@Edge da AWS, que permite executar código Node.js nos Pontos de Presença da AWS CloudFront para customizar conteúdo próximo aos usuários. Lambda@Edge permite validar acesso, reescrever URLs, entregar imagens responsivas e realizar A/B testing de forma global e sem servidores. O documento demonstra como Lambda@Edge pode melhorar a experiência do usuário final de forma escalável e com baixo custo.
O documento apresenta uma introdução ao desenvolvimento web com ASP.NET, cobrindo a evolução da plataforma .NET, ferramentas de desenvolvimento, um exemplo de aplicação, e conceitos importantes como o que roda no servidor versus cliente, PostBacks e acesso a banco de dados com ADO.NET.
The twelve factor app - Princípios e boas práticas aplicados no mundo realJosé Filipe Lyra
O sucesso no desenvolvimento de software se baseia em boas práticas e simplicidade acima de tudo.
Assim, desenvolvemos nossos projetos baseados nos princípios do "The twelve factor app" (https://12factor.net).
Nesta apresentação mostramos como usamos estes princípios no desenvolvimento da API de anúncios do VivaReal usando tecnologias como Spring Boot, Docker e Kubernetes.
Autores: Glendon Leitão e José Filipe Lyra
O documento apresenta uma introdução sobre arquitetura RIA usando o .NET RIA Services. Discute os conceitos de arquitetura RIA, apresenta as camadas do .NET RIA Services e conclui demonstrando como ele facilita a construção de aplicações RIA unificando a lógica do cliente e servidor.
Levando Serverless para o Edge - ARC301 - Sao Paulo SummitAmazon Web Services
O documento discute o uso de serverless na borda (edge computing) com o Lambda@Edge da AWS. Em três pontos:
1) O Lambda@Edge permite executar funções Lambda em locações globais e próximas aos usuários finais.
2) Isso melhora a experiência do usuário ao trazer código para a borda da rede de distribuição de conteúdo CloudFront.
3) Funções podem ser usadas para gerar respostas, rotear solicitações e modificar cabeçalhos de resposta na borda global.
Este documento discute diagramas de distribuição (deployment) em UML e modelação da arquitectura física. Um diagrama de distribuição captura a topologia de hardware de um sistema e especifica a distribuição de componentes de software entre os nós de hardware. Elementos chave incluem nós que representam dispositivos de hardware e conexões que mostram como os nós se conectam. Um exemplo ilustra um sistema na internet com clientes, servidores web e de aplicações.
Palestra apresentada na XLVII Jornada de Desenvolvimento Tecnológico promovida pela Faculdade de Computação e Informática da Universidade Presbiteriana Mackenzie em 13.10.2014
O documento fornece informações sobre como criar aplicações offline em HTML5 utilizando as especificações AppCache, Local Storage e WebSQL Database. Explica como configurar o manifest para armazenar recursos localmente, como referenciá-lo e testar o funcionamento offline. Também descreve as restrições e limitações destas tecnologias e fornece links para recursos adicionais.
O documento discute as atualizações e o roadmap da Magic Software para a América do Sul em 2011. Apresenta as atualizações do Magic xpa Studio e da plataforma uniPaaS, incluindo suporte a .NET, interface WPF e execução na nuvem híbrida. A visão é fornecer uma plataforma de aplicativo como serviço para aplicações multi-canal de forma escalonável e segura.
Desenvolvendo para web ASP.Net (Overview para iniciantes)Fernando Gonçalves
O documento apresenta uma introdução às tecnologias ASP.Net, cobrindo a evolução da plataforma, ferramentas de desenvolvimento, um exemplo de aplicação e conceitos-chave como o que ocorre no servidor e no cliente. É dado ênfase a demonstrações práticas de acesso a banco de dados, ASP.Net Ajax e integração com o Twitter.
Com o Amazon API Gateway e AWS Lambda é possível construir API de forma escalável, sem utilização de servidor. Nessa sessão será abordado arquiteturas, boas práticas e integrações entre os serviços.
O documento apresenta o serviço AWS Lambda e Amazon API Gateway. AWS Lambda permite executar código sem servidores em resposta a eventos, enquanto API Gateway permite criar, publicar, monitorar e proteger APIs. Juntos, eles permitem construir aplicações serverless escaláveis e seguras. O documento também fornece exemplos de uso e demonstrações das funcionalidades.
O documento apresenta o serviço AWS Lambda e Amazon API Gateway. AWS Lambda permite executar código sem servidores enquanto Amazon API Gateway facilita a criação e gestão de APIs RESTful que podem integrar-se com AWS Lambda para processamento sem servidores. O documento demonstra como construir aplicações serverless utilizando esses serviços da AWS.
Em um mundo cada vez mais digital, a segurança da informação tornou-se essencial para proteger dados pessoais e empresariais contra ameaças cibernéticas. Nesta apresentação, abordaremos os principais conceitos e práticas de segurança digital, incluindo o reconhecimento de ameaças comuns, como malware e phishing, e a implementação de medidas de proteção e mitigação para vazamento de senhas.
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...Faga1939
Este artigo tem por objetivo apresentar como ocorreu a evolução do consumo e da produção de energia desde a pré-história até os tempos atuais, bem como propor o futuro da energia requerido para o mundo. Da pré-história até o século XVIII predominou o uso de fontes renováveis de energia como a madeira, o vento e a energia hidráulica. Do século XVIII até a era contemporânea, os combustíveis fósseis predominaram com o carvão e o petróleo, mas seu uso chegará ao fim provavelmente a partir do século XXI para evitar a mudança climática catastrófica global resultante de sua utilização ao emitir gases do efeito estufa responsáveis pelo aquecimento global. Com o fim da era dos combustíveis fósseis virá a era das fontes renováveis de energia quando prevalecerá a utilização da energia hidrelétrica, energia solar, energia eólica, energia das marés, energia das ondas, energia geotérmica, energia da biomassa e energia do hidrogênio. Não existem dúvidas de que as atividades humanas sobre a Terra provocam alterações no meio ambiente em que vivemos. Muitos destes impactos ambientais são provenientes da geração, manuseio e uso da energia com o uso de combustíveis fósseis. A principal razão para a existência desses impactos ambientais reside no fato de que o consumo mundial de energia primária proveniente de fontes não renováveis (petróleo, carvão, gás natural e nuclear) corresponde a aproximadamente 88% do total, cabendo apenas 12% às fontes renováveis. Independentemente das várias soluções que venham a ser adotadas para eliminar ou mitigar as causas do efeito estufa, a mais importante ação é, sem dúvidas, a adoção de medidas que contribuam para a eliminação ou redução do consumo de combustíveis fósseis na produção de energia, bem como para seu uso mais eficiente nos transportes, na indústria, na agropecuária e nas cidades (residências e comércio), haja vista que o uso e a produção de energia são responsáveis por 57% dos gases de estufa emitidos pela atividade humana. Neste sentido, é imprescindível a implantação de um sistema de energia sustentável no mundo. Em um sistema de energia sustentável, a matriz energética mundial só deveria contar com fontes de energia limpa e renováveis (hidroelétrica, solar, eólica, hidrogênio, geotérmica, das marés, das ondas e biomassa), não devendo contar, portanto, com o uso dos combustíveis fósseis (petróleo, carvão e gás natural).
O documento apresenta uma introdução ao desenvolvimento web, abordando:
1) As características dos clientes e servidores na arquitetura cliente-servidor;
2) A evolução da web ao longo do tempo, desde a criação da HTML até o desenvolvimento de novas tecnologias como JavaScript, CSS e DHTML;
3) Tópicos importantes como a "guerra dos navegadores", a necessidade de padronização e o surgimento de novas especificações como HTML4, CSS e DOM.
O documento descreve o SAPO Vídeos, uma plataforma de vídeos online da SAPO que permite upload e compartilhamento de conteúdo gerado pelos usuários através de múltiplas interfaces como web, mobile e APIs. A arquitetura da aplicação é baseada em software livre como Lighttpd, Apache, PHP, MySQL e utiliza tecnologias como Smarty, memcache e mencoder.
O documento discute a experiência de adotar o MongoDB em produção, incluindo desafios iniciais como erros de memória, atualizações necessárias do driver e configurações. Também aborda tópicos como replica sets, sharding, segurança e a versão 2.0 do MongoDB.
1. O documento discute os 12 e 15 Fatores que definem aplicações prontas para a nuvem. Estes fatores incluem estadoless, portabilidade, descartabilidade e outros princípios para construir software escalável.
2. O documento fornece uma breve história dos 12 Fatores, originalmente criados por Adam Wiggins para Heroku.
3. Os principais fatores discutidos incluem configurações como variáveis de ambiente, logs efêmeros, serviços de apoio declarativos e ambientes de desenvolvimento e produção similares.
This document summarizes a presentation on ASP.NET Web API given by Pedro Félix. The presentation introduced ASP.NET Web API, describing its programming model based on HTTP and focus on building APIs exposed via the web. It also covered the architectural components involved, including routing, controllers, request/response handling, and extensibility points.
Ha proxy + consul = balance de carga transparente para conteinersguitoper
O documento descreve como usar HAProxy e Consul para fornecer balanceamento de carga transparente para containers Docker. Consul é usado para descoberta de serviços e armazenamento de dados, enquanto HAProxy é configurado dinamicamente usando Consul Template para direcionar tráfego para containers registrados no Consul. O documento inclui exemplos de comandos Docker para executar containers do Consul, Registrator e HAProxy/Consul Template para implementar esta solução.
Com o Amazon API Gateway e AWS Lambda é possível construir API de forma escalavel, sem utilização de servidor. Nessa sessão será abordado arquiteturas, boas práticas e integrações entre os serviços.
Deep dive em aceleração de entrega de conteúdo, APIs e Aplicações utilizando ...Amazon Web Services LATAM
O documento apresenta o serviço Lambda@Edge da AWS, que permite executar código Node.js nos Pontos de Presença da AWS CloudFront para customizar conteúdo próximo aos usuários. Lambda@Edge permite validar acesso, reescrever URLs, entregar imagens responsivas e realizar A/B testing de forma global e sem servidores. O documento demonstra como Lambda@Edge pode melhorar a experiência do usuário final de forma escalável e com baixo custo.
O documento apresenta uma introdução ao desenvolvimento web com ASP.NET, cobrindo a evolução da plataforma .NET, ferramentas de desenvolvimento, um exemplo de aplicação, e conceitos importantes como o que roda no servidor versus cliente, PostBacks e acesso a banco de dados com ADO.NET.
The twelve factor app - Princípios e boas práticas aplicados no mundo realJosé Filipe Lyra
O sucesso no desenvolvimento de software se baseia em boas práticas e simplicidade acima de tudo.
Assim, desenvolvemos nossos projetos baseados nos princípios do "The twelve factor app" (https://12factor.net).
Nesta apresentação mostramos como usamos estes princípios no desenvolvimento da API de anúncios do VivaReal usando tecnologias como Spring Boot, Docker e Kubernetes.
Autores: Glendon Leitão e José Filipe Lyra
O documento apresenta uma introdução sobre arquitetura RIA usando o .NET RIA Services. Discute os conceitos de arquitetura RIA, apresenta as camadas do .NET RIA Services e conclui demonstrando como ele facilita a construção de aplicações RIA unificando a lógica do cliente e servidor.
Levando Serverless para o Edge - ARC301 - Sao Paulo SummitAmazon Web Services
O documento discute o uso de serverless na borda (edge computing) com o Lambda@Edge da AWS. Em três pontos:
1) O Lambda@Edge permite executar funções Lambda em locações globais e próximas aos usuários finais.
2) Isso melhora a experiência do usuário ao trazer código para a borda da rede de distribuição de conteúdo CloudFront.
3) Funções podem ser usadas para gerar respostas, rotear solicitações e modificar cabeçalhos de resposta na borda global.
Este documento discute diagramas de distribuição (deployment) em UML e modelação da arquitectura física. Um diagrama de distribuição captura a topologia de hardware de um sistema e especifica a distribuição de componentes de software entre os nós de hardware. Elementos chave incluem nós que representam dispositivos de hardware e conexões que mostram como os nós se conectam. Um exemplo ilustra um sistema na internet com clientes, servidores web e de aplicações.
Palestra apresentada na XLVII Jornada de Desenvolvimento Tecnológico promovida pela Faculdade de Computação e Informática da Universidade Presbiteriana Mackenzie em 13.10.2014
O documento fornece informações sobre como criar aplicações offline em HTML5 utilizando as especificações AppCache, Local Storage e WebSQL Database. Explica como configurar o manifest para armazenar recursos localmente, como referenciá-lo e testar o funcionamento offline. Também descreve as restrições e limitações destas tecnologias e fornece links para recursos adicionais.
O documento discute as atualizações e o roadmap da Magic Software para a América do Sul em 2011. Apresenta as atualizações do Magic xpa Studio e da plataforma uniPaaS, incluindo suporte a .NET, interface WPF e execução na nuvem híbrida. A visão é fornecer uma plataforma de aplicativo como serviço para aplicações multi-canal de forma escalonável e segura.
Desenvolvendo para web ASP.Net (Overview para iniciantes)Fernando Gonçalves
O documento apresenta uma introdução às tecnologias ASP.Net, cobrindo a evolução da plataforma, ferramentas de desenvolvimento, um exemplo de aplicação e conceitos-chave como o que ocorre no servidor e no cliente. É dado ênfase a demonstrações práticas de acesso a banco de dados, ASP.Net Ajax e integração com o Twitter.
Com o Amazon API Gateway e AWS Lambda é possível construir API de forma escalável, sem utilização de servidor. Nessa sessão será abordado arquiteturas, boas práticas e integrações entre os serviços.
O documento apresenta o serviço AWS Lambda e Amazon API Gateway. AWS Lambda permite executar código sem servidores em resposta a eventos, enquanto API Gateway permite criar, publicar, monitorar e proteger APIs. Juntos, eles permitem construir aplicações serverless escaláveis e seguras. O documento também fornece exemplos de uso e demonstrações das funcionalidades.
O documento apresenta o serviço AWS Lambda e Amazon API Gateway. AWS Lambda permite executar código sem servidores enquanto Amazon API Gateway facilita a criação e gestão de APIs RESTful que podem integrar-se com AWS Lambda para processamento sem servidores. O documento demonstra como construir aplicações serverless utilizando esses serviços da AWS.
Em um mundo cada vez mais digital, a segurança da informação tornou-se essencial para proteger dados pessoais e empresariais contra ameaças cibernéticas. Nesta apresentação, abordaremos os principais conceitos e práticas de segurança digital, incluindo o reconhecimento de ameaças comuns, como malware e phishing, e a implementação de medidas de proteção e mitigação para vazamento de senhas.
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...Faga1939
Este artigo tem por objetivo apresentar como ocorreu a evolução do consumo e da produção de energia desde a pré-história até os tempos atuais, bem como propor o futuro da energia requerido para o mundo. Da pré-história até o século XVIII predominou o uso de fontes renováveis de energia como a madeira, o vento e a energia hidráulica. Do século XVIII até a era contemporânea, os combustíveis fósseis predominaram com o carvão e o petróleo, mas seu uso chegará ao fim provavelmente a partir do século XXI para evitar a mudança climática catastrófica global resultante de sua utilização ao emitir gases do efeito estufa responsáveis pelo aquecimento global. Com o fim da era dos combustíveis fósseis virá a era das fontes renováveis de energia quando prevalecerá a utilização da energia hidrelétrica, energia solar, energia eólica, energia das marés, energia das ondas, energia geotérmica, energia da biomassa e energia do hidrogênio. Não existem dúvidas de que as atividades humanas sobre a Terra provocam alterações no meio ambiente em que vivemos. Muitos destes impactos ambientais são provenientes da geração, manuseio e uso da energia com o uso de combustíveis fósseis. A principal razão para a existência desses impactos ambientais reside no fato de que o consumo mundial de energia primária proveniente de fontes não renováveis (petróleo, carvão, gás natural e nuclear) corresponde a aproximadamente 88% do total, cabendo apenas 12% às fontes renováveis. Independentemente das várias soluções que venham a ser adotadas para eliminar ou mitigar as causas do efeito estufa, a mais importante ação é, sem dúvidas, a adoção de medidas que contribuam para a eliminação ou redução do consumo de combustíveis fósseis na produção de energia, bem como para seu uso mais eficiente nos transportes, na indústria, na agropecuária e nas cidades (residências e comércio), haja vista que o uso e a produção de energia são responsáveis por 57% dos gases de estufa emitidos pela atividade humana. Neste sentido, é imprescindível a implantação de um sistema de energia sustentável no mundo. Em um sistema de energia sustentável, a matriz energética mundial só deveria contar com fontes de energia limpa e renováveis (hidroelétrica, solar, eólica, hidrogênio, geotérmica, das marés, das ondas e biomassa), não devendo contar, portanto, com o uso dos combustíveis fósseis (petróleo, carvão e gás natural).
A linguagem C# aproveita conceitos de muitas outras linguagens,
mas especialmente de C++ e Java. Sua sintaxe é relativamente fácil, o que
diminui o tempo de aprendizado. Todos os programas desenvolvidos devem
ser compilados, gerando um arquivo com a extensão DLL ou EXE. Isso torna a
execução dos programas mais rápida se comparados com as linguagens de
script (VBScript , JavaScript) que atualmente utilizamos na internet
As classes de modelagem podem ser comparadas a moldes ou
formas que definem as características e os comportamentos dos
objetos criados a partir delas. Vale traçar um paralelo com o projeto de
um automóvel. Os engenheiros definem as medidas, a quantidade de
portas, a potência do motor, a localização do estepe, dentre outras
descrições necessárias para a fabricação de um veículo
21. OFFLINE ...
Armazenamento de
recursos no cliente
Permite obtê-los sem
conexão
Hybrid Apps & Mobile
UIWebView (iOS)
WebView (Android)
22. ... & STORAGE
Evita full HTTP
roundtrips
Menor consumo de
banda
STANDALONE* Hybrid
Apps & Mobile
23. HTML5 AppCache
Define recursos que DEVEM ser armazenados em
cache
Define recursos que NÃO DEVEM ser armazenados em
cache
Definição de recursos alternativos
24. AppCache Manifest
Arquivo “plain text”
Começa com CACHE MANIFEST
Os recursos podem ser declarados diretamente na
“raiz” ou em um grupo CACHE
Adicione um comentário para versionamento e controle
de expiração
25. AppCache Manifest
offline.appcache
CACHE MANIFEST
# Version 1
CACHE:
# Todas as páginas aqui, por favor
img/logo.png
css/index.css
js/index.js
js/cachecontrol.js
# Cache de recursos distribuidos (CDN)
http://code.jquery.com/jquery.min.js
http://yui.yahooapis.com/combo?3.6.0/build/cssfonts/cssfonts-min.css&3.6.0/build...
26. AppCache Manifest
Cache de recursos distribuidos
Tem parâmetros na URL?
Não funcionará.
Encontre ou crie URLs sem parâmetro e tudo vai ficar
bem
27. AppCache Manifest
offline.appcache
CACHE MANIFEST
# Version 1
CACHE:
# Todas as páginas aqui, por favor
img/logo.png
css/index.css
js/index.js
# Cache de recursos distribuidos (CDN)
http://code.jquery.com/jquery.min.js
http://yui.yahooapis.com/3.6.0/build/cssreset/cssreset-min.css
http://yui.yahooapis.com/3.6.0/build/cssfonts/cssfonts-min.css
http://yui.yahooapis.com/3.6.0/build/cssbase/cssbase-min.css
28. AppCache Manifest
Tem algum recurso que NÃO deve ser cacheado?
Você pode definir recursos ou “prefixos” que não
devem ser adicionados o AppCache
Com conexão, o navegador tentará obter o recurso da
maneira tradicional
Declare em um grupo NETWORK
29. AppCache Manifest
offline.appcache
CACHE MANIFEST
# Version 1
CACHE:
# ...
# Ainda está tudo aqui :)
NETWORK:
# A ‘/’ no fim do caminho serve como ‘/*’ (wildcard)
realtime/
api/
live/chat.php
utils/sendmail.aspx
30. AppCache Manifest
Feedback sobre o que não pode ser acessado offline
Declare recursos alternativos em um grupo FALLBACK:
Qualquer recurso (HTML, CSS, JavaScript) pode ter
uma versão alternativa
Qualquer “prefixo” pode apontar para um recurso
alternativo
31. AppCache Manifest
offline.appcache
CACHE MANIFEST
# Version 1
CACHE:
# ...
# Ainda está tudo aqui :)
NETWORK:
# ...
# Ainda está tudo aqui :)
FALLBACK:
chat.jsp offline.html
img/top.jpg img/offline_badge_top.jpg
events/ notconnected.html
http://www.facebook.com/plugins/ notconnected.html
http://platform.twitter.com/ notconnected.html
32. AppCache - Utilização
Configure seu servidor para responder o manifesto
com MIME text/cache-manifest - *.appcache
Adicione o atributo “manifest” em todos os HTMLs que
devem estar disponíveis offline
Cuidado: algum recurso respondeu 404?
Nada vai para o cache!
34. AppCache
Server
A C E M*
B D F
Client (browser)
35. AppCache
A C
B D
Server
A C E M*
B D F M*
Client (browser)
36. AppCache
A C
B D
HTTP cache
A C E
B D F
A C
App Cache
B D
Server
A C E M*
B D F M*
Client (browser)
37. AppCache
A C
B D
HTTP cache
A C E
B D F
App Cache
Server
A C E M*
B D F M*
Client (browser)
38. AppCache
A C
B D
HTTP cache
A E C
B F D
A E
App Cache
B F
Server
A C E M*
B D F M*
Client (browser)
39. AppCache - Expiração
Mudou uma imagem? Incremente o número de versão
no comentário
Detecte alterações no AppCache Manifest e reconstrua
o cache
Faça isso com JavaScript
Assegure-se de recarregar a página para obter os
novos recursos
40. AppCache - Expiração
js/cachecontrol.js
window.applicationCache.addEventListener(‘updateready’, function(event) {
if(window.applicationCache.status == window.applicationCache.UPDATEREADY) {
// Um novo manifesto foi detectado, vamos pegar os recursos de novo:
window.applicationCache.swapCache();
// Já temos os novos recursos. Vamos mostrá-los:
if(confirm(‘Nova versão online. Deseja carregar agora?’)) {
window.location.reload();
} else {
// Merece uma mensagem avisando que a versão é obsoleta, não acham?
}
}
}, false);
41. AppCache - Expiração
Cuidado: impeça que o navegador adicione o
AppCache Manifesto ao HTTP Cache!
“access plus 0 seconds”
42. Online & Offline Events
Agumas coisas só devem funcionar com uma conexão
ativa. E se a conexão cair?
A mudança de status na atividade da conexão deve
disparar um evento no navegador
Podemos capturar esse evento com JavaScript
43. Online & Offline Events
js/cachecontrol.js
// Aquele código ainda está por aqui :)
window.addEventListener(‘offline’ function(event) {
// Event Listeners impedindo novos requests
// salvaremos tudo localmente
}, false);
window.addEventListener(‘online’ function(event) {
// Enviar o que está no armazenamento local para o servidor. SYNC!
// Remover Event Listeners e deixar novos requests serem feitos
}, false);
45. Local Storage
É como um cookie, só que melhor
Para guardar dados não-estruturados
“Same origin”
http://exemplo.com:80 ≠ http://exemplo.com:8080
46. Local Storage
js/cachecontrol.js
// Aquele código ainda está por aqui :)
// salvaremos tudo localmente COM LOCAL STORAGE
// Só podemos salvar Strings (DOMString)
localStorage.setItem(‘userId’, ‘77634810’);
// Mas isso é uma String não?
localStorage.setItem(‘newContractFormData20120605091422’, JSON.stringify({
email : ‘bla@foo.com’,
company: ‘Foo Enterprises LLC’,
createdAt: ‘2012-6-5 09:14:22’
}));
47. Local Storage - API
.setItem ( key, value );
.getItem( key );
.removeItem( key );
.clear( );
48. Local Storage
Use .clear( ) e .removeItem( key ) somente se
necessário
Usuário pode descartar dados armazenados pelas
configurações do navegador (limpar dados de
aplicações)
49. Session Storage
Idêntico ao Local Storage, só que persiste por uma
“sessão”
Fechou a janela, acabou
Fechou a aba, acabou (*)
50. Indexed DB
Feito para armazenar dados estruturados (object store)
Assíncrono e transacional
“Full-featured document based schemaless NoSQL”
51. Indexed DB - Utilização
Criaremos a “base”
Criaremos um “Object Store” na “base”
52. Indexed DB - Utilização
js/cachecontrol.js
// Aquele código ainda está por aqui :)
var idb = {};
idb.db = null;
idb.open = function() {
var idbDatabase = indexedDB.open(‘caelum’, ‘Indexed DB Caelum Online’);
idbDatabase.onsuccess = function(event) {
idb.db = event.target.result;
var v = ‘1.0’;
if (v != idb.db.version) {
var setVersionTransaction = idb.db.setVersion(v);
setVersionTransaction.onsuccess = function(event) {
var store = idb.db.createObjectStore(‘comentarios’, { keyPath: ‘createdAt’});
}
}
};
};
53. Indexed DB - Utilização
Abriremos a base
Vamos inserer um objeto no Object Store
54. Indexed DB - Utilização
js/cachecontrol.js
// Aquele código ainda está por aqui :)
idb.createComentario = function(comentario) {
var transaction = idb.db.transaction([‘caelum’], IDBTransaction.READ_WRITE, 0);
var store = transaction.objectStore(‘comentarios’);
var commit = store.put({
content : comentario,
createdAt : new Date().getTime()
});
commit.onsuccess = function(event) {
// callback
}
};
55. Indexed DB - Utilizção
Vamos fazer um “SELECT *”, mas usando um cursor
56. Indexed DB - Utilização
js/cachecontrol.js
// Aquele código ainda está por aqui :)
idb.getComentarios = function() {
var transaction = idb.db.transaction([‘caelum’], IDBTransaction.READ_WRITE, 0);
var store = transaction.objectStore(‘comentarios’);
var keyRange = IDBKeyRange.lowerBound(0);
var cursor = store.openCursos(keyRange);
cursor.onsuccess = function(event) {
var current = e.target.result;
// Paramos o cursor com Explicit Boolean Comparison
// para evitar outros valores válidos
if(!!current == false) {
return;
}
// callback
};
};
57. E quando a conexão voltar?
Mande os dados nos callbacks por XHR, por exemplo
Cuidado: leitura assíncrona, requisições XHR,
callbacks, você sabe onde isso vai parar se não souber
muito bem o que está fazendo...
58. Perguntas? Eu tenho...
Quanto posso armazenar?
App Cache Indeterminado
Local Storage 5MB mínimo
Session Storage 5MB mínimo
Indexed DB Indeterminado
59. Perguntas? Eu tenho...
Funciona em que navegador?
Internet
Chrome Firefox Opera Safari
Explorer
App
4 3.5 10 10.60 4
Cache
Local
4 3.5 8 10.50 4
Storage
Session
5 2 8 10.50 4
Storage
Indexed
12 16 10 -- --
DB
60. Perguntas? Eu tenho...
Mas você citou “MOBILE”
Android
iOS (Safari) Opera Mini
Browser
App Cache 3.2 -- 2.1
Local Storage 3.2 -- 2.1
Session
3.2 -- 2.1
Storage
Indexed DB -- * -- ? -- *
Mesmo tendo sido visitado antes, com recursos no cache do navegador, a inexistência da conexão impede a exibição da página\n
\n
\n
\n
\n
\n
\n
\n
Mesmo com recursos em cache é impossível obtê-los para exibição, é preciso uma conexão ativa para que o navegador faça a requisição e só então o navegador verifica se o recurso armazenado está em cache para utilizá-lo\n
Quando imaginamos a WWW como a plataforma de aplicações ENTERPRISE do futuro, temos que contornar essa situação de alguma maneira\nAté aplicações desktop client/server sofrem com isso: “Desculpa senhor, estamos sem sistema”\n
Viagens, conexões ruins, blind spots\nApps que devem carregar uma página mesmo sem conexão\n
Armazenamento local\n
\n
\n
Declare todos as páginas no manifesto, assim toda sua app é cacheada a partir da home\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
Mesmo com o cache atualizado, a aplicação ainda utilizará o cache antigo se não chamarmos swapCache\n
\n
\n
\n
\n
Cookie 4095 bytes, enviado em todas requisições\nlocalStorage no mínimo 5MB, não é enviado\n
Foi feito para salvar Strings, mas podemos abusar do JSON Parsing\n
\n
\n
Não é consistente até mesmo em um mesmo navegador\n
\n
\n
indexedDB.open(nome, descrição), onsuccess para usar a base\nObject Store +- tabela\nPrecisa mudar a versão do idb para criar uma\n
\n
indexedDB.open(nome, descrição), onsuccess para usar a base\nObject Store +- tabela\nPrecisa mudar a versão do idb para criar uma\n
\n
\n
\n
App Cache pode ser limitado a 10% do espaço em disco disponível\nIndexed DB é indeterminado por definição\n
\n
Você pode usar UIWebView / WebView e armazenar no device? WebSQL?\n