The document discusses various strategies for building offline capabilities in HTML5 web applications, including:
1) The Application Cache API allows caching static resources to load pages offline but has limitations.
2) Data URIs and Web Storage allow storing limited amounts of dynamic data locally in a simple key-value format.
3) Web SQL Database provided an offline SQL database but is no longer part of HTML5; IndexedDB provides similar functionality with better performance.
The document discusses various strategies for enabling offline functionality in HTML5 web applications. It begins by describing past approaches like cookies, Flash cookies, and Google Gears. It then introduces the App Cache, which allows caching of static resources, and discusses some limitations. Other approaches covered include storing data locally using the Data URI scheme, Web Storage, and the Web SQL Database for structured storage. Code examples are provided for basic CRUD operations using Web Storage.
Offline strategies for HTML5 web applications - ConFoo13Stephan Hochdörfer
The document discusses various offline strategies for HTML5 web applications, including application caching, storing data locally using web storage, web SQL databases, and IndexedDB. It provides code examples and explanations of how to cache static resources, add, modify, and remove items from local storage using these different technologies. It also highlights some advantages and disadvantages of each approach.
The document discusses various strategies for building offline capabilities in HTML5 web applications. It covers using the Application Cache manifest to cache static resources, storing data locally using Web Storage or the Web SQL Database API, and an introduction to the IndexedDB API. It also highlights some gotchas with the Application Cache, such as files always being served from the cache and the need to reload the page to see new resources.
Offline Strategies for HTML5 Web Applications - oscon13Stephan Hochdörfer
This document discusses various strategies for enabling offline functionality in HTML5 web applications. It begins by explaining the differences between application caching and offline storage. It then covers using the application cache, web storage, web SQL database, IndexedDB, and file API for caching static resources and storing dynamic data locally. It notes pros and cons of each approach as well as browser support limitations. The document aims to help developers choose the best offline solutions for HTML5 applications.
Offline strategies for HTML5 web applications - frOSCon8Stephan Hochdörfer
The document discusses various strategies for enabling offline functionality in HTML5 web applications. It begins by introducing the speaker and defining what is meant by "offline" in this context. It then covers application caching using the cache manifest to store static resources locally. Other techniques discussed include storing dynamic data locally using Web Storage, Web SQL Database, IndexedDB, and the File API. For each approach, examples are provided of how to perform common operations like adding, modifying and retrieving data items. The techniques are also compared in terms of advantages and disadvantages.
The document discusses building scalable game payment systems using HTML5 and PayPal Digital Goods. It describes the architecture involving client and server-side components, PayPal Digital Goods, HTML5 LocalStorage, and jQuery. It then covers implementing the payment and inventory management flows, including fetching tokens, committing payments, verifying purchases, and retrieving local storage purchases. Finally, it discusses setting up product webhooks for functions like user identity, payment recording and verification, and inventory management.
How Hadoop Revolutionized Data Warehousing at Yahoo and FacebookAmr Awadallah
Hadoop was developed to solve problems with data warehousing systems at Yahoo and Facebook that were limited in processing large amounts of raw data in real-time. Hadoop uses HDFS for scalable storage and MapReduce for distributed processing. It allows for agile access to raw data at scale for ad-hoc queries, data mining and analytics without being constrained by traditional database schemas. Hadoop has been widely adopted for large-scale data processing and analytics across many companies.
Introduction to JavaScript for APEX Developers - Module 1: JavaScript BasicsDaniel McGhan
This module covers the following topics: 1) Why JavaScript? 2) Variables and data types 3) Operators 4) Conditionals and loops 5) Objects and functions 6) Developer tools
Building AOL's High Performance, Enterprise Wide Mail Application With Silver...goodfriday
Come join the Rich Internet Application engineering team from AOL and see first-hand how AOL created a rich, scalable mail application using Microsoft Silverlight 2.
Module 3: Working with the DOM and jQueryDaniel McGhan
These are the slides from the 3rd module in the "Introduction to JavaScript for APEX Developers" workshop. This module covers the following topics: 1) Understanding the DOM 2) What is jQuery? 3) Selecting, traversing, and manipulating the DOM 4) Events overview 5) Creating event listeners
This document discusses migrating 100,000 pages of content from a legacy CMS to Drupal. It provides an overview of planning the migration by asking important questions, using tools like the Migrate and Pathauto modules for importing content and rewriting URLs, dealing with issues like file management and testing the migrated site, and finally deploying the new Drupal site. The key steps are planning through asking the right questions, using modules and custom scripts for importing content and files and rewriting URLs, thorough testing, and a phased deployment approach.
1) The document discusses Asynchronous JavaScript and XML (AJAX) which allows for asynchronous communication between a browser and server without requiring the user to wait for processing a request.
2) Traditional HTTP processing uses synchronous request-response pairs while AJAX uses asynchronous JavaScript calls to update portions of a page without refreshing.
3) The key aspects of AJAX covered are the XMLHttpRequest object, opening the object to specify the request, handling the response, and properties/methods of the object. Server-side code can also be invoked using AJAX.
The XMLHttpRequest object is used to exchange data with a server asynchronously without reloading the page. It creates an XMLHttpRequest object using new XMLHttpRequest() or new ActiveXObject for older browsers, and sends a request to the server using open() and send() methods. The onreadystatechange event handler processes the server response when readyState changes to 4. The response is retrieved using responseText or responseXML properties. AJAX can be used to dynamically update parts of a page or retrieve data from a server database without reloading.
The document discusses HTML5 and provides information on several key aspects:
1) It introduces HTML5 and explains how it was developed as a cooperation between W3C and WHATWG with a focus on new features based on HTML, CSS, DOM and JavaScript.
2) It describes important multimedia elements like <video> and <audio> that allow embedding video and audio in a standard way, and covers supported formats in different browsers.
3) It outlines HTML5 graphics capabilities using <canvas> for drawing and inline SVG, as well as CSS3 effects.
4) It discusses HTML5 applications and features like web storage, app cache and web workers that improve application development and user experience.
All we know that REST services are almost everywhere now and nearly all new projects use it.
But do we really know how to design proper interfaces? What are pitfalls and how to avoid them?
I did many REST service designs and have a bunch of tips and tricks you definitely would like to use.
It will save you and your team a lot of time in future.
RDF Validation in a Linked Data World - A vision beyond structural and value ...Nandana Mihindukulasooriya
This document discusses RDF validation in a Linked Data context. It outlines factors to consider in designing an RDF validation process, including data source dynamics, publication strategy, and access control. It also covers procedural factors like the number of data sources and validation scope. Context factors like the validation purpose and data provenance must also be taken into account. The conclusion is that RDF validation for Linked Data needs to accommodate the particularities of the data sources, processes, and context involved.
Open Standards for the Semantic Web: XML / RDF(S) / OWL / SOAPPieter De Leenheer
This lecture elaborates on RDF, RDFS, and SOAP starting from a short recap of XML, and the history of the W3C and the development of "open standard recommendations". We also compare RDF triples with DOGMA lexons. We finalise by listing shortcomings of RDFS regarding semantics, and give short overview of the history of OWL as one answer to this. A full elaboration on OWL and description logic is for another lecture.
This document discusses Apache Olingo, an OData client and server. It provides an overview of the OData protocol, including that it is based on REST principles and supports JSON and AtomPub formats. It describes the OData architecture including its use of HTTP, entity data modeling, and URI conventions. The document demonstrates OData concepts like the service document, metadata, and Atom entry format. It outlines new features in OData 4.0 and concludes with a demonstration of OData using various code samples.
Galaxy is an open-source framework that allows users to integrate various computational tools and databases into a single workspace. It provides a web-based interface where users can run analyses and build workflows. Galaxy can integrate existing command line tools and web tools through a plugin architecture. It uses a flexible execution environment to run jobs on local or cluster resources through pluggable job runners. The project aims to support additional tool types and deeper customization while keeping the core open and extensible.
Evolving Hadoop into an Operational Platform with Data ApplicationsDataWorks Summit
The document discusses Cask Data Application Platform (CDAP), an open source platform for building data applications on Hadoop. It provides an overview of CDAP's key components including datasets, programs, and applications. Datasets are standardized containers that encapsulate data access patterns and data models through reusable APIs. Programs are containers for different processing paradigms like batch and real-time. Applications in CDAP compose multiple datasets and programs.
Interoperable Ajax Tools And Mashups Ferraiolorajivmordani
The document discusses the OpenAjax Alliance's efforts to promote interoperability between Ajax tools through the development of OpenAjax Metadata specifications. It describes how OpenAjax Metadata can be used to standardize documentation of Ajax library APIs and widget properties in a format readable by IDEs and other tools, addressing prior interoperability issues caused by each toolkit documenting in its own way. Examples of OpenAjax Metadata for JavaScript methods and widgets are provided to illustrate the standard elements and attributes.
Talend Open Studio Fundamentals #1: Workspaces, Jobs, Metadata and Trips & Tr...Gabriele Baldassarre
Introduction to Talend Open Studio for Data Integration, focusing on job architecture, metadata, workspaces, connection types and common use components. Rick Tips & Tricks sections
The document discusses upcoming features in Java EE 8 including enhancements to support HTML5, JSON processing, model-view-controller (MVC) architecture, and HTTP/2. Key areas of focus are improved JSON binding and processing APIs, support for server-sent events, an action-based MVC specification, and integration of HTTP/2 features in technologies like Servlet. The presentation also covers goals of easing development and enabling Java EE applications to better run in the cloud.
Stop Making The Web Harder Than It Is; Real-world REST, HATEOAS, and Hypermed...kiphampton
Developing for the Web shouldn't be hard. Yet, many smart developers make it more difficult than it needs to be by choosing tools and frameworks that do not fully take advantage of all that HTTP has to offer. This talk demonstrates how projects at all levels-- from the simplest brochureware site to the most advanced Hypermedia APIs--can be made simpler by getting back to the basics of HTTP. We introduce Tamarou's internal application development and publishing framework, Magpie (scheduled for public release to coincide with YAPC::NA) and step through a series of real-world examples to show how its resource-oriented approach to development keeps simple things simple and makes hard things easier.
Topics include:
* Why MVC is the wrong way to think about Web development.
* Why most frameworks that claim to be RESTful aren't (and how that makes life harder)
* An brief introduction to Resource-oriented development.
* A series of production-tested Magpie recipes covering the gamut of Web-dev from simple templated sites through advanced Hypermedia applications.
JSON and Oracle Database: A Brave New WorldDaniel McGhan
A world of apps built in JavaScript, using JSON as their data exchange format, relying on APIs to get the job done - does Oracle Database have a place in this world? Can it offer UI developers what they need to get their job done as productively and successfully as possible? Absolutely! In this session, attendees will explore the new support for JSON in Oracle Database SQL and PL/SQL and learn how to help front-end developers build secure, high-performance applications.
The document discusses the challenges of managing changes and versions for PeopleSoft environments. It describes how traditional version control tools only manage files and not PeopleSoft database objects. It introduces Stat ACM as a solution that can version both files and PeopleSoft objects natively. It highlights key Stat ACM capabilities like enforcing change control policies, providing audit trails of changes, facilitating rollbacks, and increasing efficiency through automation.
The document discusses HTML5 and its APIs. It provides an overview of several HTML5 APIs including the geolocation API, web storage API, web workers API, and WebSocket API. It also discusses how these new HTML5 features allow for more advanced web applications compared to older technologies like Flash. Finally, it mentions some libraries and tools for testing HTML5 browser support.
Building AOL's High Performance, Enterprise Wide Mail Application With Silver...goodfriday
Come join the Rich Internet Application engineering team from AOL and see first-hand how AOL created a rich, scalable mail application using Microsoft Silverlight 2.
Module 3: Working with the DOM and jQueryDaniel McGhan
These are the slides from the 3rd module in the "Introduction to JavaScript for APEX Developers" workshop. This module covers the following topics: 1) Understanding the DOM 2) What is jQuery? 3) Selecting, traversing, and manipulating the DOM 4) Events overview 5) Creating event listeners
This document discusses migrating 100,000 pages of content from a legacy CMS to Drupal. It provides an overview of planning the migration by asking important questions, using tools like the Migrate and Pathauto modules for importing content and rewriting URLs, dealing with issues like file management and testing the migrated site, and finally deploying the new Drupal site. The key steps are planning through asking the right questions, using modules and custom scripts for importing content and files and rewriting URLs, thorough testing, and a phased deployment approach.
1) The document discusses Asynchronous JavaScript and XML (AJAX) which allows for asynchronous communication between a browser and server without requiring the user to wait for processing a request.
2) Traditional HTTP processing uses synchronous request-response pairs while AJAX uses asynchronous JavaScript calls to update portions of a page without refreshing.
3) The key aspects of AJAX covered are the XMLHttpRequest object, opening the object to specify the request, handling the response, and properties/methods of the object. Server-side code can also be invoked using AJAX.
The XMLHttpRequest object is used to exchange data with a server asynchronously without reloading the page. It creates an XMLHttpRequest object using new XMLHttpRequest() or new ActiveXObject for older browsers, and sends a request to the server using open() and send() methods. The onreadystatechange event handler processes the server response when readyState changes to 4. The response is retrieved using responseText or responseXML properties. AJAX can be used to dynamically update parts of a page or retrieve data from a server database without reloading.
The document discusses HTML5 and provides information on several key aspects:
1) It introduces HTML5 and explains how it was developed as a cooperation between W3C and WHATWG with a focus on new features based on HTML, CSS, DOM and JavaScript.
2) It describes important multimedia elements like <video> and <audio> that allow embedding video and audio in a standard way, and covers supported formats in different browsers.
3) It outlines HTML5 graphics capabilities using <canvas> for drawing and inline SVG, as well as CSS3 effects.
4) It discusses HTML5 applications and features like web storage, app cache and web workers that improve application development and user experience.
All we know that REST services are almost everywhere now and nearly all new projects use it.
But do we really know how to design proper interfaces? What are pitfalls and how to avoid them?
I did many REST service designs and have a bunch of tips and tricks you definitely would like to use.
It will save you and your team a lot of time in future.
RDF Validation in a Linked Data World - A vision beyond structural and value ...Nandana Mihindukulasooriya
This document discusses RDF validation in a Linked Data context. It outlines factors to consider in designing an RDF validation process, including data source dynamics, publication strategy, and access control. It also covers procedural factors like the number of data sources and validation scope. Context factors like the validation purpose and data provenance must also be taken into account. The conclusion is that RDF validation for Linked Data needs to accommodate the particularities of the data sources, processes, and context involved.
Open Standards for the Semantic Web: XML / RDF(S) / OWL / SOAPPieter De Leenheer
This lecture elaborates on RDF, RDFS, and SOAP starting from a short recap of XML, and the history of the W3C and the development of "open standard recommendations". We also compare RDF triples with DOGMA lexons. We finalise by listing shortcomings of RDFS regarding semantics, and give short overview of the history of OWL as one answer to this. A full elaboration on OWL and description logic is for another lecture.
This document discusses Apache Olingo, an OData client and server. It provides an overview of the OData protocol, including that it is based on REST principles and supports JSON and AtomPub formats. It describes the OData architecture including its use of HTTP, entity data modeling, and URI conventions. The document demonstrates OData concepts like the service document, metadata, and Atom entry format. It outlines new features in OData 4.0 and concludes with a demonstration of OData using various code samples.
Galaxy is an open-source framework that allows users to integrate various computational tools and databases into a single workspace. It provides a web-based interface where users can run analyses and build workflows. Galaxy can integrate existing command line tools and web tools through a plugin architecture. It uses a flexible execution environment to run jobs on local or cluster resources through pluggable job runners. The project aims to support additional tool types and deeper customization while keeping the core open and extensible.
Evolving Hadoop into an Operational Platform with Data ApplicationsDataWorks Summit
The document discusses Cask Data Application Platform (CDAP), an open source platform for building data applications on Hadoop. It provides an overview of CDAP's key components including datasets, programs, and applications. Datasets are standardized containers that encapsulate data access patterns and data models through reusable APIs. Programs are containers for different processing paradigms like batch and real-time. Applications in CDAP compose multiple datasets and programs.
Interoperable Ajax Tools And Mashups Ferraiolorajivmordani
The document discusses the OpenAjax Alliance's efforts to promote interoperability between Ajax tools through the development of OpenAjax Metadata specifications. It describes how OpenAjax Metadata can be used to standardize documentation of Ajax library APIs and widget properties in a format readable by IDEs and other tools, addressing prior interoperability issues caused by each toolkit documenting in its own way. Examples of OpenAjax Metadata for JavaScript methods and widgets are provided to illustrate the standard elements and attributes.
Talend Open Studio Fundamentals #1: Workspaces, Jobs, Metadata and Trips & Tr...Gabriele Baldassarre
Introduction to Talend Open Studio for Data Integration, focusing on job architecture, metadata, workspaces, connection types and common use components. Rick Tips & Tricks sections
The document discusses upcoming features in Java EE 8 including enhancements to support HTML5, JSON processing, model-view-controller (MVC) architecture, and HTTP/2. Key areas of focus are improved JSON binding and processing APIs, support for server-sent events, an action-based MVC specification, and integration of HTTP/2 features in technologies like Servlet. The presentation also covers goals of easing development and enabling Java EE applications to better run in the cloud.
Stop Making The Web Harder Than It Is; Real-world REST, HATEOAS, and Hypermed...kiphampton
Developing for the Web shouldn't be hard. Yet, many smart developers make it more difficult than it needs to be by choosing tools and frameworks that do not fully take advantage of all that HTTP has to offer. This talk demonstrates how projects at all levels-- from the simplest brochureware site to the most advanced Hypermedia APIs--can be made simpler by getting back to the basics of HTTP. We introduce Tamarou's internal application development and publishing framework, Magpie (scheduled for public release to coincide with YAPC::NA) and step through a series of real-world examples to show how its resource-oriented approach to development keeps simple things simple and makes hard things easier.
Topics include:
* Why MVC is the wrong way to think about Web development.
* Why most frameworks that claim to be RESTful aren't (and how that makes life harder)
* An brief introduction to Resource-oriented development.
* A series of production-tested Magpie recipes covering the gamut of Web-dev from simple templated sites through advanced Hypermedia applications.
JSON and Oracle Database: A Brave New WorldDaniel McGhan
A world of apps built in JavaScript, using JSON as their data exchange format, relying on APIs to get the job done - does Oracle Database have a place in this world? Can it offer UI developers what they need to get their job done as productively and successfully as possible? Absolutely! In this session, attendees will explore the new support for JSON in Oracle Database SQL and PL/SQL and learn how to help front-end developers build secure, high-performance applications.
The document discusses the challenges of managing changes and versions for PeopleSoft environments. It describes how traditional version control tools only manage files and not PeopleSoft database objects. It introduces Stat ACM as a solution that can version both files and PeopleSoft objects natively. It highlights key Stat ACM capabilities like enforcing change control policies, providing audit trails of changes, facilitating rollbacks, and increasing efficiency through automation.
The document discusses HTML5 and its APIs. It provides an overview of several HTML5 APIs including the geolocation API, web storage API, web workers API, and WebSocket API. It also discusses how these new HTML5 features allow for more advanced web applications compared to older technologies like Flash. Finally, it mentions some libraries and tools for testing HTML5 browser support.
The document provides an overview of the key components that go into making a PHP and MySQL based web application. It discusses the use of HTML, CSS, JavaScript, jQuery, client-side and server-side scripting, AJAX, PHP, MySQL, code editors, tools for wireframing, image editing and more. It also covers aspects like hosting, version management, software deployment, traditional and agile development methodologies, and software documentation.
The current status of html5 technology and standardWonsuk Lee
The document discusses the current status of HTML5 technology and standards. It provides an overview of recent developments in the industry regarding HTML5, compares HTML5 to other technologies like Flash and Silverlight, and highlights examples of Google using HTML5 in products like Gmail and new features enabled by HTML5. It also covers the browser support and standardization status of HTML5, including details about the W3C working groups developing HTML5 and related standards.
Lecture on CodeIgniter, # OSS Essential Training Program at Chittagong University of Engineering Technology, February 2008, http://bdosdn.org/wsatcuet.php
This document discusses HTML5 on mobile devices. It begins by explaining why mobile web is growing and why HTML5 is well-suited for mobile. It then provides an overview of what HTML5 is and examples of features like forms, multimedia, geolocation that can be used on mobile. It also discusses considerations for mobile web development like responsive design and frameworks. The document recommends tools for mobile debugging and testing performance.
This document discusses visualizing data with HighCharts or D3 JavaScript libraries. It provides an agenda that includes an introduction, benefits of using these libraries, requirements, and a sample code example. The example uses SAS code to transform stock data from sashelp.stocks into JSON format and then visualize it on a web page using HighCharts to allow dynamic adjustment of time periods for the time series data. Key steps and considerations for implementing this solution are outlined.
An introduction to modern web technologies HTML5, including Offline, Storage, and Canvas Embedded JavaScript RESTful WebServices using MVC 3, jQuery, and JSON Going mobile with PhoneGap and HTML and CSS
It is not HTML5. but ... / HTML5ではないサイトからHTML5を考えるSadaaki HIRAI
This document provides an overview of HTML5 technologies including HTML5 markup, microdata/RDFa, WebFonts, Canvas, MediaQueries, performance optimizations like SPDY and HTTP 2.0. It discusses specifications from the W3C and implementations by companies. Tools for testing responsive design, fonts and browser compatibility are also mentioned. The document is written in Japanese and references the author's blog for code samples.
HTML5 introduces several new features including new semantic elements, support for embedded video and audio, canvas element for 2D/3D graphics, offline web applications, and drag and drop. It also removes some older HTML elements. HTML5 is still a work in progress but is supported by all major browsers. It aims to make web pages more compatible with new technologies and reduce the need for browser plug-ins.
The document discusses several key technologies for developing Java web applications, including Java Servlet technology, WebWork framework, Spring framework, and Apache Maven build tool. It provides an overview of how each technology addresses common problems like stateless communication, business logic implementation, view generation, and data access overhead. Examples are given showing how WebWork and Spring can be used together with Maven to build a simple "Hello World" application that follows the MVC pattern and leverages dependency injection.
Oracle Application Express & jQuery Mobile - OGh Apex Dag 2012crokitta
APEX& jQuery Mobile
Binnenkort zal Oracle versie de lang aangekondigde upgrade naar release 4.2 van Oracle Application Express beschikbaar maken. Een van de meest besproken nieuwe features die voor dit nieuwe release zijn aangekondigd is de integratie van het jQuery Mobile framework. Met de integratie van dit framework zal het mogelijk worden om met APEX applicaties te ontwikkelen, die geschikt zijn voor mobiele toestellen.
Wat is en hoe werkt jQuery Mobile en wat betekend dit voor het ontwikkelen in APEX. Dat zijn de onderwerpen die de presentatie aan bod komen. En waarom wachten tot het release van 4.2. Het is namelijk nu al mogelijk om jQuery Mobile in APEX te integreren en gebruiken. Hoe, wordt in een demo getoond. Deze sessie is waarschijnlijk de enige waarin u gevraagd zal worden om uw mobile telefoon aan te laten staan.
This document discusses HTML5 and provides an overview of its key features. It explains that HTML5 is not just the HTML language, but also includes related APIs that allow richer functionality. Some of the major areas covered include semantics and accessibility, rich internet applications using new APIs, and specific technologies like canvas, video/audio, web storage, and web workers. The document emphasizes that HTML5 is still evolving and aims to unify web development across browsers.
This presentation was created for future hackers at Yahoo! Open Hack events. It shows what HTML5 features are great for a 24 hour hack, useful tools, and suggestions.
The document summarizes the history and key features of HTML5. It discusses the evolution of HTML from 1991 to the present, including versions like HTML4.01. It also covers new HTML5 elements like <header>, <nav>, <section>, <article>, and <footer> that replace older <div> elements. Additionally, it provides overviews of new HTML5 APIs and features like geolocation, WebSockets, and Web Storage, as well as CSS3 properties like text-shadow, RGBa colors, gradients, and transitions.
The document is a presentation on HTML5 that covers:
- What HTML5 is and why to use it
- New HTML5 structural elements, forms, multimedia elements, and JavaScript APIs
- Demonstrations of HTML5 features like Canvas, SVG, Geolocation, Web Workers, and Web Sockets
- How CSS3 enhances HTML5 with features like media queries, colors, animations and more
- Strategies for implementing HTML5 into websites while maintaining compatibility
The document provides an overview of HTML5 and how to implement it with Drupal 7. It discusses new HTML5 elements, attributes, and forms; how to make Drupal 7 themes responsive with HTML5; differences between HTML4, XHTML, and HTML5; and how to use CSS3 with HTML5 for effects like shadows and gradients. The document includes links to HTML5 tools and resources for Drupal and recommends familiarity with HTML, CSS, Drupal theming, and modern browsers.
This document provides an overview of a presentation on web development given by Harshit Gupta. It discusses training in web development, topics covered including HTML, CSS, JavaScript, JDBC, and Servlets. It then provides more detailed descriptions of HTML fundamentals, CSS styling, JavaScript fundamentals, how to connect to databases using JDBC, and the purpose of Servlets in web development.
This document discusses Phing, an open source build tool for PHP projects that is based on Apache Ant. It provides instructions on how to install Phing globally using PEAR or with Composer. It also covers Phing basics like projects, targets, tasks and properties. Additionally, it demonstrates how to write custom tasks in PHP and use property files to customize builds.
This document discusses dependency injection (DI) and its benefits when applied in real world projects. It defines DI as a pattern that allows removal of hard-coded dependencies and makes dependencies changeable. The document explains that DI improves code reuse, testability, and maintainability by reducing tight coupling between classes. It presents different DI techniques like constructor injection and describes how to configure dependencies using annotations or XML configuration. The benefits of DI mentioned include easy unit testing, supporting multiple configurations of a class, and mocking external services.
The document discusses dependency injection, including what it is, why it is useful, and how it can be implemented. It defines dependency injection as objects receiving their dependencies from external sources rather than creating them internally. This allows for looser coupling, easier testing, and flexibility to use different implementations. The document covers different injection techniques like constructor injection and using a dependency injection container to manage object wiring.
This document discusses domain-specific languages (DSLs) and provides examples of internal and external DSLs. It explains that internal DSLs are implemented within a general-purpose language using techniques like fluent APIs, expression builders, functions, closures, and annotations. External DSLs have greater syntactic freedom but require developing a new language. Both types of DSLs aim to increase productivity by focusing on the domain rather than implementation details. The document also covers code generation from a DSL to executable code.
This document discusses various ways to install and configure Phing, the PHP build tool. It recommends installing Phing globally via PEAR or with Composer. It also covers best practices like using imports to structure targets, defining internal targets, creating custom tasks, prompting for input, and integrating Phing with Jenkins. The document emphasizes following conventions like naming the main build file build.xml and properties file build.properties.
This document discusses dependency injection and its real world applications. It begins by defining what dependencies are in software applications. It then discusses that dependencies themselves are not bad, but rather fixed dependencies can be problematic. The document advocates for using dependency injection and abstraction rather than directly instantiating dependencies. It provides examples of implementing constructor, setter, and interface injection. It also discusses using annotations, external configuration files, and internal configuration for dependency injection. The benefits of dependency injection for unit testing and allowing one class to have multiple implementations are covered.
The document discusses strategies for testing code that is otherwise difficult or impossible to test directly. It presents examples of untestable code involving object construction, external resources like databases and web services, and language issues like private methods. For each problem, it proposes solutions like dependency injection, mocking dependencies, overriding language functions, and using aspects and generative programming to make code more testable. The overall message is that writing testable code requires refactoring legacy code or designing new code for testability from the start.
This document provides an overview of the Phing build tool. It discusses what Phing is, how to install Phing using PEAR or Composer, Phing basics like projects, targets, tasks and properties. It provides examples of build files that demonstrate defining multiple targets, target dependencies, calling targets programmatically, using filesets and filters. Finally, it discusses some of the things Phing can be used for, like automating permission changes.
This document discusses strategies for testing code that is difficult or seemingly impossible to test, known as "untestable code". It provides examples of how to address issues like object construction that relies on external resources, dependencies, private methods, and language limitations. Specific techniques include using autoloading, custom stream wrappers, mocking databases/web services, reflection, and generative programming with frames to dynamically generate test and production code. The overall message is that with the right approaches, even legacy or "untestable" code can be made testable.
The document discusses strategies for testing code that is initially difficult or impossible to test, referred to as "untestable code". It provides examples of untestable code involving object construction, external resources like databases and web services, and language issues. It then describes approaches to make such code more testable, including refactoring, using mocks, dependency injection, stream wrappers, and generative programming with frames. The goal is to find ways to test existing legacy code without changing the code itself.
This document discusses a software generator framework for generative programming. Generative programming aims to deal with software system families by utilizing a generator, implementation components, and a domain-specific configuration language. The presented framework uses Java, Maven and Spring and allows defining features, frames, and content providers to generate customized software products based on an input configuration. It demonstrates how custom logic can be added through a content provider that replaces markers in frame files at generation time.
The document discusses dependency injection (DI) in PHP. It provides an overview of common DI containers and frameworks used in PHP projects, including Pimple, Bucket, Zend\Di, and Symfony. For each option, it demonstrates basic usage including constructor injection, setter injection, and retrieving services from the container. It also discusses concepts like shared services, configuration via XML, and injecting dependencies via interfaces or properties. The document serves as a high-level introduction to dependency injection in PHP.
Measuring Microsoft 365 Copilot and Gen AI SuccessNikki Chapple
Session | Measuring Microsoft 365 Copilot and Gen AI Success with Viva Insights and Purview
Presenter | Nikki Chapple 2 x MVP and Principal Cloud Architect at CloudWay
Event | European Collaboration Conference 2025
Format | In person Germany
Date | 28 May 2025
📊 Measuring Copilot and Gen AI Success with Viva Insights and Purview
Presented by Nikki Chapple – Microsoft 365 MVP & Principal Cloud Architect, CloudWay
How do you measure the success—and manage the risks—of Microsoft 365 Copilot and Generative AI (Gen AI)? In this ECS 2025 session, Microsoft MVP and Principal Cloud Architect Nikki Chapple explores how to go beyond basic usage metrics to gain full-spectrum visibility into AI adoption, business impact, user sentiment, and data security.
🎯 Key Topics Covered:
Microsoft 365 Copilot usage and adoption metrics
Viva Insights Copilot Analytics and Dashboard
Microsoft Purview Data Security Posture Management (DSPM) for AI
Measuring AI readiness, impact, and sentiment
Identifying and mitigating risks from third-party Gen AI tools
Shadow IT, oversharing, and compliance risks
Microsoft 365 Admin Center reports and Copilot Readiness
Power BI-based Copilot Business Impact Report (Preview)
📊 Why AI Measurement Matters: Without meaningful measurement, organizations risk operating in the dark—unable to prove ROI, identify friction points, or detect compliance violations. Nikki presents a unified framework combining quantitative metrics, qualitative insights, and risk monitoring to help organizations:
Prove ROI on AI investments
Drive responsible adoption
Protect sensitive data
Ensure compliance and governance
🔍 Tools and Reports Highlighted:
Microsoft 365 Admin Center: Copilot Overview, Usage, Readiness, Agents, Chat, and Adoption Score
Viva Insights Copilot Dashboard: Readiness, Adoption, Impact, Sentiment
Copilot Business Impact Report: Power BI integration for business outcome mapping
Microsoft Purview DSPM for AI: Discover and govern Copilot and third-party Gen AI usage
🔐 Security and Compliance Insights: Learn how to detect unsanctioned Gen AI tools like ChatGPT, Gemini, and Claude, track oversharing, and apply eDLP and Insider Risk Management (IRM) policies. Understand how to use Microsoft Purview—even without E5 Compliance—to monitor Copilot usage and protect sensitive data.
📈 Who Should Watch: This session is ideal for IT leaders, security professionals, compliance officers, and Microsoft 365 admins looking to:
Maximize the value of Microsoft Copilot
Build a secure, measurable AI strategy
Align AI usage with business goals and compliance requirements
🔗 Read the blog https://nikkichapple.com/measuring-copilot-gen-ai/
Cyber Security Legal Framework in Nepal.pptxGhimire B.R.
The presentation is about the review of existing legal framework on Cyber Security in Nepal. The strength and weakness highlights of the major acts and policies so far. Further it highlights the needs of data protection act .
Unlock your organization’s full potential with the 2025 Digital Adoption Blueprint. Discover proven strategies to streamline software onboarding, boost productivity, and drive enterprise-wide digital transformation.
Agentic AI - The New Era of IntelligenceMuzammil Shah
This presentation is specifically designed to introduce final-year university students to the foundational principles of Agentic Artificial Intelligence (AI). It aims to provide a clear understanding of how Agentic AI systems function, their key components, and the underlying technologies that empower them. By exploring real-world applications and emerging trends, the session will equip students with essential knowledge to engage with this rapidly evolving area of AI, preparing them for further study or professional work in the field.
Introducing FME Realize: A New Era of Spatial Computing and ARSafe Software
A new era for the FME Platform has arrived – and it’s taking data into the real world.
Meet FME Realize: marking a new chapter in how organizations connect digital information with the physical environment around them. With the addition of FME Realize, FME has evolved into an All-data, Any-AI Spatial Computing Platform.
FME Realize brings spatial computing, augmented reality (AR), and the full power of FME to mobile teams: making it easy to visualize, interact with, and update data right in the field. From infrastructure management to asset inspections, you can put any data into real-world context, instantly.
Join us to discover how spatial computing, powered by FME, enables digital twins, AI-driven insights, and real-time field interactions: all through an intuitive no-code experience.
In this one-hour webinar, you’ll:
-Explore what FME Realize includes and how it fits into the FME Platform
-Learn how to deliver real-time AR experiences, fast
-See how FME enables live, contextual interactions with enterprise data across systems
-See demos, including ones you can try yourself
-Get tutorials and downloadable resources to help you start right away
Whether you’re exploring spatial computing for the first time or looking to scale AR across your organization, this session will give you the tools and insights to get started with confidence.
Master tester AI toolbox - Kari Kakkonen at Testaus ja AI 2025 ProfessioKari Kakkonen
My slides at Professio Testaus ja AI 2025 seminar in Espoo, Finland.
Deck in English, even though I talked in Finnish this time, in addition to chairing the event.
I discuss the different motivations for testing to use AI tools to help in testing, and give several examples in each categories, some open source, some commercial.
Content and eLearning Standards: Finding the Best Fit for Your-TrainingRustici Software
Tammy Rutherford, Managing Director of Rustici Software, walks through the pros and cons of different standards to better understand which standard is best for your content and chosen technologies.
European Accessibility Act & Integrated Accessibility TestingJulia Undeutsch
Emma Dawson will guide you through two important topics in this session.
Firstly, she will prepare you for the European Accessibility Act (EAA), which comes into effect on 28 June 2025, and show you how development teams can prepare for it.
In the second part of the webinar, Emma Dawson will explore with you various integrated testing methods and tools that will help you improve accessibility during the development cycle, such as Linters, Storybook, Playwright, just to name a few.
Focus: European Accessibility Act, Integrated Testing tools and methods (e.g. Linters, Storybook, Playwright)
Target audience: Everyone, Developers, Testers
Multistream in SIP and NoSIP @ OpenSIPS Summit 2025Lorenzo Miniero
Slides for my "Multistream support in the Janus SIP and NoSIP plugins" presentation at the OpenSIPS Summit 2025 event.
They describe my efforts refactoring the Janus SIP and NoSIP plugins to allow for the gatewaying of an arbitrary number of audio/video streams per call (thus breaking the current 1-audio/1-video limitation), plus some additional considerations on what this could mean when dealing with application protocols negotiated via SIP as well.
Introducing the OSA 3200 SP and OSA 3250 ePRCAdtran
Adtran's latest Oscilloquartz solutions make optical pumping cesium timing more accessible than ever. Discover how the new OSA 3200 SP and OSA 3250 ePRC deliver superior stability, simplified deployment and lower total cost of ownership. Built on a shared platform and engineered for scalable, future-ready networks, these models are ideal for telecom, defense, metrology and more.
UiPath Community Berlin: Studio Tips & Tricks and UiPath InsightsUiPathCommunity
Join the UiPath Community Berlin (Virtual) meetup on May 27 to discover handy Studio Tips & Tricks and get introduced to UiPath Insights. Learn how to boost your development workflow, improve efficiency, and gain visibility into your automation performance.
📕 Agenda:
- Welcome & Introductions
- UiPath Studio Tips & Tricks for Efficient Development
- Best Practices for Workflow Design
- Introduction to UiPath Insights
- Creating Dashboards & Tracking KPIs (Demo)
- Q&A and Open Discussion
Perfect for developers, analysts, and automation enthusiasts!
This session streamed live on May 27, 18:00 CET.
Check out all our upcoming UiPath Community sessions at:
👉 https://community.uipath.com/events/
Join our UiPath Community Berlin chapter:
👉 https://community.uipath.com/berlin/
Droidal: AI Agents Revolutionizing HealthcareDroidal LLC
Droidal’s AI Agents are transforming healthcare by bringing intelligence, speed, and efficiency to key areas such as Revenue Cycle Management (RCM), clinical operations, and patient engagement. Built specifically for the needs of U.S. hospitals and clinics, Droidal's solutions are designed to improve outcomes and reduce administrative burden.
Through simple visuals and clear examples, the presentation explains how AI Agents can support medical coding, streamline claims processing, manage denials, ensure compliance, and enhance communication between providers and patients. By integrating seamlessly with existing systems, these agents act as digital coworkers that deliver faster reimbursements, reduce errors, and enable teams to focus more on patient care.
Droidal's AI technology is more than just automation — it's a shift toward intelligent healthcare operations that are scalable, secure, and cost-effective. The presentation also offers insights into future developments in AI-driven healthcare, including how continuous learning and agent autonomy will redefine daily workflows.
Whether you're a healthcare administrator, a tech leader, or a provider looking for smarter solutions, this presentation offers a compelling overview of how Droidal’s AI Agents can help your organization achieve operational excellence and better patient outcomes.
A free demo trial is available for those interested in experiencing Droidal’s AI Agents firsthand. Our team will walk you through a live demo tailored to your specific workflows, helping you understand the immediate value and long-term impact of adopting AI in your healthcare environment.
To request a free trial or learn more:
https://droidal.com/
Adtran’s SDG 9000 Series brings high-performance, cloud-managed Wi-Fi 7 to homes, businesses and public spaces. Built on a unified SmartOS platform, the portfolio includes outdoor access points, ceiling-mount APs and a 10G PoE router. Intellifi and Mosaic One simplify deployment, deliver AI-driven insights and unlock powerful new revenue streams for service providers.
2. Offline strategies for HTML5 web applications
About me
Stephan Hochdörfer, bitExpert AG
Department Manager Research Labs
enjoying PHP since 1999
[email protected]
@shochdoerfer
13. Offline strategies for HTML5 web applications
[...] we take the next step,
announcing 2014 as the target for
Recommendation.
Jeff Jaffe, Chief Executive Officer, World Wide Web Consortium
15. Offline strategies for HTML5 web applications
What does „offline“ mean?
Application Cache vs. Offline Storage
16. Offline strategies for HTML5 web applications
Application Cache for static resources
<! clock.html >
<!DOCTYPE HTML>
<html>
<head>
<title>Clock</title>
<script src="clock.js"></script>
<link rel="stylesheet" href="clock.css">
</head>
<body>
<p>The time is: <output id="clock"></output></p>
</body>
</html>
/* clock.css */
output { font: 2em sansserif; }
/* clock.js */
setTimeout(function () {
document.getElementById('clock').value = new Date();
}, 1000);
17. Offline strategies for HTML5 web applications
Application Cache for static resources
cache.manifest - must be served using the text/cache-manifest
MIME type.
CACHE MANIFEST
# 20120916
clock.html
clock.css
clock.js
18. Offline strategies for HTML5 web applications
Application Cache for static resources
<! clock.html >
<!DOCTYPE HTML>
<html manifest="cache.manifest">
<head>
<title>Clock</title>
<script src="clock.js"></script>
<link rel="stylesheet" href="clock.css">
</head>
<body>
<p>The time is: <output id="clock"></output></p>
</body>
</html>
19. Offline strategies for HTML5 web applications
Application Cache for static resources
CACHE MANIFEST
# 20120916
NETWORK:
data.php
CACHE:
/main/home
/main/app.js
/settings/home
/settings/app.js
http://myhost/logo.png
http://myhost/check.png
http://myhost/cross.png
20. Offline strategies for HTML5 web applications
Application Cache for static resources
CACHE MANIFEST
# 20120916
FALLBACK:
/ /offline.html
NETWORK:
*
22. Offline strategies for HTML5 web applications
Scripting the Application Cache
// Check if a new cache is available on page load.
window.addEventListener('load', function(e) {
window.applicationCache.addEventListener('updateready',
function(e) {
if(window.applicationCache.status ==
window.applicationCache.UPDATEREADY) {
// Browser downloaded a new app cache.
// Swap it in and reload the page
window.applicationCache.swapCache();
if (confirm('New version is available. Load it?)) {
window.location.reload();
}
} else {
// Manifest didn't changed.
}
}, false);
}, false);
24. Offline strategies for HTML5 web applications
Application Cache – Some gotchas!
1. Files are always(!) served from the
application cache.
25. Offline strategies for HTML5 web applications
Application Cache – Some gotchas!
2. The application cache only updates
if the content of the manifest itself
has changed!
26. Offline strategies for HTML5 web applications
Application Cache – Some gotchas!
3. If any of the files listed in the
CACHE section can't be retrieved, the
entire cache will be disregarded.
27. Offline strategies for HTML5 web applications
Application Cache – Some gotchas!
4. If the manifest file itself can't be
retrieved, the cache will ignored!
28. Offline strategies for HTML5 web applications
Application Cache – Some gotchas!
5. Non-cached resources will not load
on a cached page!
29. Offline strategies for HTML5 web applications
Application Cache – Some gotchas!
6. The page needs to be reloaded,
otherwise the new resources do not
show up!
30. Offline strategies for HTML5 web applications
Application Cache – Some gotchas!
7. To avoid the risk of caching
manifest files set expires headers!
32. Offline strategies for HTML5 web applications
The Data URI scheme
<!DOCTYPE HTML>
<html>
<head>
<title>The Data URI scheme</title>
<style type="text/css">
ul.checklist li {
marginleft: 20px;
background: white
url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAA
AFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAA
O9TXL0Y4OHwAAAABJRU5ErkJggg==') norepeat scroll left
top;
}
</style>
</head>
<body>
<img
src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAA
AFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAA
O9TXL0Y4OHwAAAABJRU5ErkJggg==" alt="Red dot">
</body>
</html>
36. Offline strategies for HTML5 web applications
Web Storage
Very convenient form of offline
storage: simple key-value store
37. Offline strategies for HTML5 web applications
Web Storage: 2 different types
localStorage vs. sessionStorage
38. Offline strategies for HTML5 web applications
Web Storage: localStorage example
var myVar = 123;
var myObj = {name: "Stephan"};
// write scalar value to localStorage
localStorage['myVar'] = myVar;
// read scalar value from localStorage
myVar = localStorage['myVar'];
// write object to localStorage
localStorage['myObj'] = JSON.stringify(myObj);
// read object from localStorage
myObj = JSON.parse(localStorage['myObj']);
39. Offline strategies for HTML5 web applications
Web Storage: sessionStorage example
var myVar = 123;
var myObj = {name: "Stephan"};
// write scalar value to sessionStorage
sessionStorage['myVar'] = myVar;
// read scalar value from sessionStorage
myVar = sessionStorage['myVar'];
// write object to sessionStorage
sessionStorage['myObj'] = JSON.stringify(myObj);
// read object from sessionStorage
myObj = JSON.parse(sessionStorage['myObj']);
40. Offline strategies for HTML5 web applications
Web Storage: Does my browser support it?
function supports_local_storage() {
try {
return 'localStorage' in window &&
window['localStorage'] !== null;
} catch(e){
return false;
}
}
41. Offline strategies for HTML5 web applications
Web Storage: Pro
Most compatible format up to now.
42. Offline strategies for HTML5 web applications
Web Storage: Con
The data is not structured.
52. Offline strategies for HTML5 web applications
IndexedDB
A nice compromise between Web
Storage and Web SQL Database giving
you the best of both worlds.
53. Offline strategies for HTML5 web applications
Web SQL Database vs. IndexedDB
Category Web SQL IndexedDB
Location Tables contain columns and objectStore contains Javascript objects and
rows keys
Query SQL Cursor APIs, Key Range APIs, and
Mechanism Application Code
Transaction Lock can happen on Lock can happen on database
databases, tables, or rows VERSION_CHANGE transaction, on an
on READ_WRITE objectStore READ_ONLY and
transactions READ_WRITE transactions.
Transaction Transaction creation is Transaction creation is explicit. Default is to
Commits explicit. Default is to rollback commit unless we call abort or there is an
unless we call commit. error that is not caught.
54. Offline strategies for HTML5 web applications
IndexedDB – Creating an ObjectStore
indexedDB.open = function() {
var request = indexedDB.open("todos");
request.onsuccess = function(e) {
var v = "2.0 beta";
todoDB.indexedDB.db = e.target.result;
var db = todoDB.indexedDB.db;
if (v!= db.version) {
var setVrequest = db.setVersion(v);
setVrequest.onfailure = todoDB.indexedDB.onerror;
setVrequest.onsuccess = function(e) {
if (db.objectStoreNames.contains("todo")) {
db.deleteObjectStore("todo");
}
var store = db.createObjectStore("todo",
{keyPath: "timeStamp"});
todoDB.indexedDB.getAllTodoItems();
};
} else {
todoDB.indexedDB.getAllTodoItems();
}
};
request.onfailure = todoDB.indexedDB.onerror;
};
55. Offline strategies for HTML5 web applications
IndexedDB – Adding data to ObjectStore
indexedDB.addTodo = function() {
var db = todoDB.indexedDB.db;
var trans = db.transaction(['todo'],
IDBTransaction.READ_WRITE);
var store = trans.objectStore('todo');
var data = {
"text": todoText,
"timeStamp": new Date().getTime()
};
var request = store.put(data);
request.onsuccess = function(e) {
todoDB.indexedDB.getAllTodoItems();
};
request.onerror = function(e) {
console.log("Failed adding items due to: ", e);
};
};
56. Offline strategies for HTML5 web applications
IndexedDB – Retrieving data
function show() {
var request = window.indexedDB.open("todos");
request.onsuccess = function(event) {
var db = todoDB.indexedDB.db;
var trans = db.transaction(["todo"],
IDBTransaction.READ_ONLY);
var request = trans.objectStore("todo").openCursor();
var ul = document.createElement("ul");
request.onsuccess = function(event) {
var cursor = request.result || event.result;
// If cursor is null, enumeration completed
if(!cursor) {
document.getElementById("todos").appendChild(ul);
return;
}
var li = document.createElement("li");
li.textContent = cursor.value.text;
ul.appendChild(li);
cursor.continue();
}
}
}
57. Offline strategies for HTML5 web applications
IndexedDB – Deleting data
indexedDB.deleteTodo = function(id, text) {
var db = todoDB.indexedDB.db;
var trans = db.transaction(["todo"],
IDBTransaction.READ_WRITE);
var store = trans.objectStore("todo");
var request = store.delete(id);
request.onsuccess = function(e) {
todoDB.indexedDB.getAllTodoItems();
};
request.onerror = function(e) {
console.log("Error Adding: ", e);
};
};
63. Offline strategies for HTML5 web applications
File API – Creating a file
function onInitFs(fs) {
fs.root.getFile('log.txt',
{create: true, exclusive: true},
function(fileEntry) {
// fileEntry.name == 'log.txt'
// fileEntry.fullPath == '/log.txt'
}, errorHandler);
}
window.requestFileSystem(window.TEMPORARY, 5*1024*1024
/*5MB*/, onInitFs, errorHandler);
64. Offline strategies for HTML5 web applications
File API – Reading a file
function onInitFs(fs) {
fs.root.getFile('log.txt', {},
function(fileEntry) {
fileEntry.file(function(file) {
var reader = new FileReader();
reader.onloadend = function(e) {
var txtArea =
document.createElement('textarea');
txtArea.value = this.result;
document.body.appendChild(txtArea);
};
reader.readAsText(file);
}, errorHandler);
}, errorHandler);
}
window.requestFileSystem(window.TEMPORARY, 5*1024*1024
/*5MB*/, onInitFs, errorHandler);
65. Offline strategies for HTML5 web applications
File API – Writing to a file
function onInitFs(fs) {
fs.root.getFile('log.txt', {create: true},
function(fileEntry) {
fileEntry.createWriter(function(fileWriter) {
fileWriter.onwriteend = function(e) {
console.log('Write completed.');
};
fileWriter.onerror = function(e) {
console.log('Write failed: ' + e.toString());
};
var bb = new BlobBuilder();
bb.append('Lorem Ipsum');
fileWriter.write(bb.getBlob('text/plain'));
}, errorHandler);
}, errorHandler);
}
window.requestFileSystem(window.TEMPORARY, 5*1024*1024
/*5MB*/, onInitFs, errorHandler);
66. Offline strategies for HTML5 web applications
File API – Appending data to a file
function onInitFs(fs) {
fs.root.getFile('log.txt', {create: false},
function(fileEntry) {
fileEntry.createWriter(function(fileWriter) {
fileWriter.seek(fileWriter.length);
var bb = new BlobBuilder();
bb.append('Hello World');
fileWriter.write(bb.getBlob('text/plain'));
}, errorHandler);
}, errorHandler);
}
window.requestFileSystem(window.TEMPORARY, 5*1024*1024
/*5MB*/, onInitFs, errorHandler);
67. Offline strategies for HTML5 web applications
File API – Deleting a file
function onInitFs(fs) {
fs.root.getFile('log.txt', {create: false},
function(fileEntry) {
fileEntry.remove(function() {
console.log('File removed.');
}, errorHandler);
}, errorHandler);
}
window.requestFileSystem(window.TEMPORARY, 5*1024*1024
/*5MB*/, onInitFs, errorHandler);
68. Offline strategies for HTML5 web applications
File API – Creating directories
function onInitFs(fs) {
fs.root.getDirectory('MyFolder', {create: true},
function(dirEntry) {
// do stuff...
}, errorHandler);
}
window.requestFileSystem(window.TEMPORARY, 5*1024*1024
/*5MB*/, onInitFs, errorHandler);
70. Offline strategies for HTML5 web applications
File API – Browser support?
Up to now: Chrome only
71. Offline strategies for HTML5 web applications
File API – Browser support?
But: idb.filesystem.js
73. Offline strategies for HTML5 web applications
Am I online?
document.body.addEventListener("online", function () {
// browser is online!
}
document.body.addEventListener("offline", function () {
// browser is not online!
}
74. Offline strategies for HTML5 web applications
Am I online? Another approach...
$.ajax({
dataType: 'json',
url: 'http://myappurl.com/ping',
success: function(data){
// ping worked
},
error: function() {
// ping failed > Server not reachable
}
});