The document provides an overview of HTML5 APIs, including new APIs introduced in HTML5 like Web Storage, Geolocation, Web SQL, Application Cache, Web Workers, Audio, Video, Canvas, Web Socket, Desktop Notifications, Drag & Drop, File System API, History API, and more. It discusses tools like Modernizr that can be used to detect browser support for these new APIs and polyfill missing functionality. The document also covers specific APIs in more detail, such as local storage, geolocation, offline web apps using the cache manifest, and using the Google Maps JavaScript API.
The document discusses HTML5 mobile APIs and how they can be used to access device capabilities from a browser. It covers features like geolocation, storage, video, and canvas. It provides examples of using local storage and offline caching via the cache manifest to build offline-capable web applications.
The keynote is parse of my Mobile Web Applications course. Full details on the course are available on: http://mobileweb.ynonperek.com
Writing hybrid apps with phonegap can solve a lot of the problems with traditional mobile web apps. In this keynote I describe why hybrid is important, and how phonegap is used to create cross platform hybrid apps.
This document provides an agenda and slides for a presentation on tips and tricks for developing XPages applications. The presentation is given by Matt White and Tim Clark and covers various configuration, client-side, server-side, and debugging techniques. Some of the topics discussed include designer tweaks, source control, mobile development best practices, managed beans, custom validators, debugging with the log file viewer and debugger tools.
soft-shake.ch - Windows Phone 7 „Mango“ – what’s new for Developers?soft-shake.ch
Sascha Corti
Just a year after Windows Phone 7 was released to the market, Microsoft is updating the already widely popular platform to a new release called “Mango”, which adds a lot of highly anticipated features, especially for developers.
This session will introduce you to what’s new in the Mango platform for you as a developer. Many samples will show you the latest additions including background agents, the new on-device database, how to make your application run in the background and how to create augmented-reality applications or create multiple live tiles per application, that can be easily updated from within the running app.
http://soft-shake.ch/2011/conference/sessions/microsoft/2011/09/06/windows-phone-7-mango.html
Sascha Corti
With Internet Explorer 9, Microsoft has entered the league of HTML 5 browsers and with its active participation in the W3C working groups, the company proves its engagements towards the new and emerging standards. Developers however are often left wondering where the boundaries are drawn between HTML5 web site, plug-in based rich internet application and smart client or “app”.
This session intends to answer this question and uses many examples to show you some of the most important enhancements introduced by HTML5, CSS3, SVG, DOM, WOFF and ECMA script. You will learn now the standards are still evolving and how Microsoft is contributing.
http://soft-shake.ch/2011/conference/sessions/microsoft/2011/09/06/introduction-to-html5.html
This document provides a summary of 29 tips for developing and debugging XPages applications. It discusses tips such as enabling debugging, using error logging, debugging Java code, controlling partial refreshes, building URLs, working with Dojo widgets, exporting to Excel from XPages, using JSON, accessing data from multiple databases, and using Extension Library widgets and JDBC functionality. The document is presented as a training session on XPages development best practices.
HTML5 is a draft specification from the W3C that adds new elements like canvas, video and audio to HTML. It is not finished yet and continues to evolve. HTML5 introduces elements like article, section and aside to structure content. It also supports new media capabilities like playing video and audio natively in the browser without plugins. HTML5 is supported in Internet Explorer 9 and later, and also in other modern browsers like Chrome and Firefox.
XPages101 - Building an XPages app - Lotusphere 2011Tim Clark
This document provides an overview and agenda for a presentation on building a simple application using XPages. It introduces the presenters and describes the sample loan tracking application being demonstrated. The presentation will cover setting up the initial database structure, adding a user interface with OneUI, creating views to display and enter data, navigation features, and using the Extension Library. Attendees are encouraged to download the presentation materials and code snippets for follow along.
The document discusses HTML5 mobile APIs and how they can be used to access device capabilities from a browser. It covers features like geolocation, storage, video, and canvas. It provides examples of using local storage and offline caching via the cache manifest to build offline-capable web applications.
The keynote is parse of my Mobile Web Applications course. Full details on the course are available on: http://mobileweb.ynonperek.com
Writing hybrid apps with phonegap can solve a lot of the problems with traditional mobile web apps. In this keynote I describe why hybrid is important, and how phonegap is used to create cross platform hybrid apps.
This document provides an agenda and slides for a presentation on tips and tricks for developing XPages applications. The presentation is given by Matt White and Tim Clark and covers various configuration, client-side, server-side, and debugging techniques. Some of the topics discussed include designer tweaks, source control, mobile development best practices, managed beans, custom validators, debugging with the log file viewer and debugger tools.
soft-shake.ch - Windows Phone 7 „Mango“ – what’s new for Developers?soft-shake.ch
Sascha Corti
Just a year after Windows Phone 7 was released to the market, Microsoft is updating the already widely popular platform to a new release called “Mango”, which adds a lot of highly anticipated features, especially for developers.
This session will introduce you to what’s new in the Mango platform for you as a developer. Many samples will show you the latest additions including background agents, the new on-device database, how to make your application run in the background and how to create augmented-reality applications or create multiple live tiles per application, that can be easily updated from within the running app.
http://soft-shake.ch/2011/conference/sessions/microsoft/2011/09/06/windows-phone-7-mango.html
Sascha Corti
With Internet Explorer 9, Microsoft has entered the league of HTML 5 browsers and with its active participation in the W3C working groups, the company proves its engagements towards the new and emerging standards. Developers however are often left wondering where the boundaries are drawn between HTML5 web site, plug-in based rich internet application and smart client or “app”.
This session intends to answer this question and uses many examples to show you some of the most important enhancements introduced by HTML5, CSS3, SVG, DOM, WOFF and ECMA script. You will learn now the standards are still evolving and how Microsoft is contributing.
http://soft-shake.ch/2011/conference/sessions/microsoft/2011/09/06/introduction-to-html5.html
This document provides a summary of 29 tips for developing and debugging XPages applications. It discusses tips such as enabling debugging, using error logging, debugging Java code, controlling partial refreshes, building URLs, working with Dojo widgets, exporting to Excel from XPages, using JSON, accessing data from multiple databases, and using Extension Library widgets and JDBC functionality. The document is presented as a training session on XPages development best practices.
HTML5 is a draft specification from the W3C that adds new elements like canvas, video and audio to HTML. It is not finished yet and continues to evolve. HTML5 introduces elements like article, section and aside to structure content. It also supports new media capabilities like playing video and audio natively in the browser without plugins. HTML5 is supported in Internet Explorer 9 and later, and also in other modern browsers like Chrome and Firefox.
XPages101 - Building an XPages app - Lotusphere 2011Tim Clark
This document provides an overview and agenda for a presentation on building a simple application using XPages. It introduces the presenters and describes the sample loan tracking application being demonstrated. The presentation will cover setting up the initial database structure, adding a user interface with OneUI, creating views to display and enter data, navigation features, and using the Extension Library. Attendees are encouraged to download the presentation materials and code snippets for follow along.
This document discusses advanced CSS styling techniques including responsive design using media queries, CSS3 features such as rounded corners, shadows and gradients, CSS transitions and animations, and the Twitter Bootstrap framework. It provides examples and explanations of how to use media queries to serve different styling based on device characteristics, introduces new CSS3 features, demonstrates how to create transitions between states, and discusses keyframe animations.
This document discusses various techniques for transferring data between a client and server, including JSON, web sockets, and AJAX. JSON is introduced as a widely supported format for data interchange. Web sockets allow for full-duplex communication between client and server, while AJAX can be used to make asynchronous requests. Requirements for communication protocols include wide server/client support, ease of debugging, and ability to pass firewalls. JSON meets these requirements as it is text-based, simple, and supported across many platforms. The document demonstrates using JSON to return flight data from a server to a client and discusses jQuery functions like $.get and $.ajax for making requests. It also covers concepts like the same-origin policy and techniques like JSON
Backbone.js helps structure you javascript application code in a scalable way.
In this keynote I demonstrate how to use it in a simple walk-through example, and discuss the advantages of using an MVC framework.
The document discusses the history and development of HTML5. It notes that HTML 4.0 and 4.01 were released in 1997 and 1999, but the W3C decided not to further evolve HTML in 1998. This led to the creation of XHTML 1.0 and 1.1 from 2000-2001. In 2004 the WHATWG was founded to continue developing web standards, releasing specifications for HTML5. In 2006 the W3C began working with the WHATWG on HTML5. The specification is currently developed by both groups. HTML5 adds new elements, forms functionality, multimedia features like video without plugins, and APIs to enable richer web applications.
This document provides an overview of Scalable Vector Graphics (SVG), including what SVG is, why it is useful, browser support, basic shapes and drawing, styling, animations, and scripting SVG with JavaScript. SVG is an XML-based format for describing 2D vector graphics that can be scaled to any size without loss of quality. It allows embedding graphics into web pages without using image files. The document covers the basics of drawing in SVG using simple shapes, text, paths, and gradients. It also discusses animating SVG graphics using SMIL animations and manipulating SVG dynamically with JavaScript.
This document discusses JavaScript code architecture and module patterns using RequireJS. It begins with an introduction to RequireJS and how it can be used to dynamically load modules and their dependencies. Next, it covers defining modules with and without dependencies, and how to return maker functions from modules to create "classes". The document concludes with notes on best practices for modules and an overview of RequireJS configuration options to integrate third-party libraries.
The document provides an overview and agenda for an Advanced JavaScript course. It covers JavaScript history from 1995-1996, how JavaScript is used today both on the client-side and server-side with Node.js. It also discusses JavaScript language fundamentals like data types, objects, arrays, functions and prototypes. The agenda includes deep dives into these topics with examples and exercises to practice working with objects, arrays, functions and prototypes in JavaScript.
This document discusses various optimizations that can be made to improve website performance, including page load optimizations, JavaScript optimizations, and CSS optimizations. It recommends measuring and optimizing page load times, JavaScript execution, and CSS processing to enhance user experience. Specific techniques mentioned include reducing the number of HTTP requests, file sizes, and network distance as well as leveraging caching, browser parsing, and other strategies.
This document provides an overview and introduction to JavaScript. It covers the history and development of JavaScript, key concepts like its interpreter-based nature and loosely typed objects. The document outlines JavaScript's core types including numbers, strings, Booleans, null, undefined and objects. It also discusses syntax elements like identifiers, reserved words, comments, loops and branches, functions, and objects & arrays. The overall summary is that this document serves as an introductory guide to the JavaScript programming language, its core concepts and syntax.
This document provides a summary of JavaScript DOM manipulations and events. It discusses how browsers render pages by creating DOM and render trees. It also covers how JavaScript can manipulate the DOM tree and add interactivity through event handling. Key topics include the event loop, capturing vs bubbling, and the DOM API for finding elements and modifying the document.
This document provides an introduction and overview of web programming. It discusses the history and architecture of the web, including how HTML, CSS, and JavaScript are used on the client-side and server-side. It covers the basic structure of HTML documents and how to add common elements like text, links, images and lists. It also introduces CSS for styling HTML elements with selectors, properties and positioning. Finally, it demonstrates some popular development tools and libraries like jQuery, Kendo UI, and ExtJS that can be used to build user interfaces.
This document provides an overview of HTML5 history and features. It discusses the evolution of HTML standards from early versions to HTML5, including key events like the browser wars. It outlines the vision and rules of HTML5, such as using <!DOCTYPE html> and removing closing tags from void elements. New HTML5 features covered include semantic elements, APIs, and tools to support HTML5 development.
This document discusses optimizing jQuery and front-end performance. It covers minimizing HTTP requests, file size, and blocking behavior to improve dependency loading. It discusses optimizing initial page rendering through proper asset ordering, lazy loading, and reducing flash of unstyled content. It also discusses minimizing reflows and repaints as well as JavaScript optimizations to improve post-load responsiveness. The document provides an overview of jQuery internals and techniques for optimizing jQuery code.
This document discusses optimizing jQuery and front-end performance. It covers minimizing HTTP requests, file size, and blocking behavior to improve dependency loading. It discusses optimizing initial page rendering through asset ordering, lazy loading, and avoiding reflows and repaints. The document also covers post-load responsiveness techniques like JavaScript optimizations. It provides an overview of jQuery internals and optimizations like chaining selections and avoiding empty sets. Tools mentioned include Google Closure Compiler, dynaTrace AJAX Edition, and Cuzillion.
The document discusses the Wix PHP Application Framework, which includes:
- A PHP framework bundle for Symfony2 that is adjusted for developing powerful Wix apps
- An AngularJS client-side framework that includes wrappers for the Wix SDK and support for deep linking and routing
- Tools for developing Wix apps including debugging tools, a user document class, and support for settings styles
This document provides an overview of the PEAR DB abstraction layer. It allows for portable database programming in PHP by providing a common API that works across different database backends like MySQL, PostgreSQL, Oracle, etc. It handles tasks like prepared statements, transactions, error handling, and outputting query results in a standardized way. PEAR DB aims to simplify database programming and make applications less dependent on the underlying database system.
This document discusses approaches for storing data on the client side beyond a page refresh without transmitting it to the server. It reviews the history of cookies, Flash cookies, Gears, and other approaches. It then summarizes modern approaches like Application Cache, Web Storage, Web SQL Database, IndexedDB, and the File API which allow persistent local storage on the client. It concludes with tips for using these storage options and libraries to help manage offline data.
The document provides instructions for installing and testing a WebGUI developer workshop that demonstrates how to create macros, content handlers, and utilize other WebGUI plugins like URL handlers and assets, allowing developers to extend WebGUI's functionality and build custom applications. It outlines steps for installing the workshop files, accessing the virtual machine, and includes examples of simple "Hello World" macros and content handlers to get started with WebGUI development.
Caching involves temporarily storing data that is likely to be used again to improve performance. In web applications, caching can occur at different levels: page caching caches entire pages, action caching caches actions along with filters, and fragment caching caches parts of views. Ruby on Rails provides built-in support for caching through page, action, and fragment caching. Page caching is fastest but ignores parameters, action caching runs filters before caching, and fragment caching is used when parts of pages change independently. Caching improves performance by reducing load on application servers.
This document discusses advanced CSS styling techniques including responsive design using media queries, CSS3 features such as rounded corners, shadows and gradients, CSS transitions and animations, and the Twitter Bootstrap framework. It provides examples and explanations of how to use media queries to serve different styling based on device characteristics, introduces new CSS3 features, demonstrates how to create transitions between states, and discusses keyframe animations.
This document discusses various techniques for transferring data between a client and server, including JSON, web sockets, and AJAX. JSON is introduced as a widely supported format for data interchange. Web sockets allow for full-duplex communication between client and server, while AJAX can be used to make asynchronous requests. Requirements for communication protocols include wide server/client support, ease of debugging, and ability to pass firewalls. JSON meets these requirements as it is text-based, simple, and supported across many platforms. The document demonstrates using JSON to return flight data from a server to a client and discusses jQuery functions like $.get and $.ajax for making requests. It also covers concepts like the same-origin policy and techniques like JSON
Backbone.js helps structure you javascript application code in a scalable way.
In this keynote I demonstrate how to use it in a simple walk-through example, and discuss the advantages of using an MVC framework.
The document discusses the history and development of HTML5. It notes that HTML 4.0 and 4.01 were released in 1997 and 1999, but the W3C decided not to further evolve HTML in 1998. This led to the creation of XHTML 1.0 and 1.1 from 2000-2001. In 2004 the WHATWG was founded to continue developing web standards, releasing specifications for HTML5. In 2006 the W3C began working with the WHATWG on HTML5. The specification is currently developed by both groups. HTML5 adds new elements, forms functionality, multimedia features like video without plugins, and APIs to enable richer web applications.
This document provides an overview of Scalable Vector Graphics (SVG), including what SVG is, why it is useful, browser support, basic shapes and drawing, styling, animations, and scripting SVG with JavaScript. SVG is an XML-based format for describing 2D vector graphics that can be scaled to any size without loss of quality. It allows embedding graphics into web pages without using image files. The document covers the basics of drawing in SVG using simple shapes, text, paths, and gradients. It also discusses animating SVG graphics using SMIL animations and manipulating SVG dynamically with JavaScript.
This document discusses JavaScript code architecture and module patterns using RequireJS. It begins with an introduction to RequireJS and how it can be used to dynamically load modules and their dependencies. Next, it covers defining modules with and without dependencies, and how to return maker functions from modules to create "classes". The document concludes with notes on best practices for modules and an overview of RequireJS configuration options to integrate third-party libraries.
The document provides an overview and agenda for an Advanced JavaScript course. It covers JavaScript history from 1995-1996, how JavaScript is used today both on the client-side and server-side with Node.js. It also discusses JavaScript language fundamentals like data types, objects, arrays, functions and prototypes. The agenda includes deep dives into these topics with examples and exercises to practice working with objects, arrays, functions and prototypes in JavaScript.
This document discusses various optimizations that can be made to improve website performance, including page load optimizations, JavaScript optimizations, and CSS optimizations. It recommends measuring and optimizing page load times, JavaScript execution, and CSS processing to enhance user experience. Specific techniques mentioned include reducing the number of HTTP requests, file sizes, and network distance as well as leveraging caching, browser parsing, and other strategies.
This document provides an overview and introduction to JavaScript. It covers the history and development of JavaScript, key concepts like its interpreter-based nature and loosely typed objects. The document outlines JavaScript's core types including numbers, strings, Booleans, null, undefined and objects. It also discusses syntax elements like identifiers, reserved words, comments, loops and branches, functions, and objects & arrays. The overall summary is that this document serves as an introductory guide to the JavaScript programming language, its core concepts and syntax.
This document provides a summary of JavaScript DOM manipulations and events. It discusses how browsers render pages by creating DOM and render trees. It also covers how JavaScript can manipulate the DOM tree and add interactivity through event handling. Key topics include the event loop, capturing vs bubbling, and the DOM API for finding elements and modifying the document.
This document provides an introduction and overview of web programming. It discusses the history and architecture of the web, including how HTML, CSS, and JavaScript are used on the client-side and server-side. It covers the basic structure of HTML documents and how to add common elements like text, links, images and lists. It also introduces CSS for styling HTML elements with selectors, properties and positioning. Finally, it demonstrates some popular development tools and libraries like jQuery, Kendo UI, and ExtJS that can be used to build user interfaces.
This document provides an overview of HTML5 history and features. It discusses the evolution of HTML standards from early versions to HTML5, including key events like the browser wars. It outlines the vision and rules of HTML5, such as using <!DOCTYPE html> and removing closing tags from void elements. New HTML5 features covered include semantic elements, APIs, and tools to support HTML5 development.
This document discusses optimizing jQuery and front-end performance. It covers minimizing HTTP requests, file size, and blocking behavior to improve dependency loading. It discusses optimizing initial page rendering through proper asset ordering, lazy loading, and reducing flash of unstyled content. It also discusses minimizing reflows and repaints as well as JavaScript optimizations to improve post-load responsiveness. The document provides an overview of jQuery internals and techniques for optimizing jQuery code.
This document discusses optimizing jQuery and front-end performance. It covers minimizing HTTP requests, file size, and blocking behavior to improve dependency loading. It discusses optimizing initial page rendering through asset ordering, lazy loading, and avoiding reflows and repaints. The document also covers post-load responsiveness techniques like JavaScript optimizations. It provides an overview of jQuery internals and optimizations like chaining selections and avoiding empty sets. Tools mentioned include Google Closure Compiler, dynaTrace AJAX Edition, and Cuzillion.
The document discusses the Wix PHP Application Framework, which includes:
- A PHP framework bundle for Symfony2 that is adjusted for developing powerful Wix apps
- An AngularJS client-side framework that includes wrappers for the Wix SDK and support for deep linking and routing
- Tools for developing Wix apps including debugging tools, a user document class, and support for settings styles
This document provides an overview of the PEAR DB abstraction layer. It allows for portable database programming in PHP by providing a common API that works across different database backends like MySQL, PostgreSQL, Oracle, etc. It handles tasks like prepared statements, transactions, error handling, and outputting query results in a standardized way. PEAR DB aims to simplify database programming and make applications less dependent on the underlying database system.
This document discusses approaches for storing data on the client side beyond a page refresh without transmitting it to the server. It reviews the history of cookies, Flash cookies, Gears, and other approaches. It then summarizes modern approaches like Application Cache, Web Storage, Web SQL Database, IndexedDB, and the File API which allow persistent local storage on the client. It concludes with tips for using these storage options and libraries to help manage offline data.
The document provides instructions for installing and testing a WebGUI developer workshop that demonstrates how to create macros, content handlers, and utilize other WebGUI plugins like URL handlers and assets, allowing developers to extend WebGUI's functionality and build custom applications. It outlines steps for installing the workshop files, accessing the virtual machine, and includes examples of simple "Hello World" macros and content handlers to get started with WebGUI development.
Caching involves temporarily storing data that is likely to be used again to improve performance. In web applications, caching can occur at different levels: page caching caches entire pages, action caching caches actions along with filters, and fragment caching caches parts of views. Ruby on Rails provides built-in support for caching through page, action, and fragment caching. Page caching is fastest but ignores parameters, action caching runs filters before caching, and fragment caching is used when parts of pages change independently. Caching improves performance by reducing load on application servers.
<p>Your Drupal 8 site is fantastic: you've spent hours/weeks/months working on it, the work is flawless and the customer is delighted - what are you going to need to fly this thing? Which PHP tips, tricks and tunings will help your site perform exceptionally at scale. </p>
<p>There are some significant differences in PHP/FPM performance tuning between Drupal 7 and Drupal 8, and this session will help you understand them. The old adage is true: the more things change, the more they stay the same - we'll revisit some of the 'tried and true' tips to keep your sites up and performant in the crush of traffic that occurs when your content goes viral. </p>
<p>Join us to learn about:</p>
<ul>
<li>Brief glance over Best Practices for Performance Tuning</li>
<li>PHP tuning including OPcache and APC User Cache</li>
<li>Varnish, Memcache, and Database tips</li>
<li>The Software Stack, with Drupal 8 integration tips.</li>
</ul>
Kharkivpy#3: Javascript and Python backendMax Klymyshyn
The document discusses managing assets like JavaScript, CSS, and templates for web projects. It recommends adding asset management tools to define conventions and bundle assets. This improves the maintainability of code and makes it easier to manage dependencies and test updates. It also covers techniques like bundling browser-specific assets, using Sass/SCSS for stylesheets, and deploying assets to a CDN like Amazon CloudFront.
This document summarizes different caching techniques that can be used with PHP, including caching content, database caching, and memory caching using APCU, Memcached, and Redis. It provides code examples for storing, getting, and deleting values from the cache with each technique. Specifically, it shows how to cache objects in memory and check the cache before querying a database to improve performance.
Windows Azure Web Sites- Things they don’t teach kids in school - Comunity D...Maarten Balliauw
Microsoft has a cloud platform which runs .NET, NodeJS and PHP. All 101 talks out there will show you the same: it’s easy to deploy, it scales out on demand and it runs WordPress. Great! But what about doing real things? In this session, we’ll explore the things they don’t teach kids in school. How about trying to find out the architecture of this platform? What about the different deployment options for Windows Azure Web Sites, the development flow and some awesome things you can do with the command line tools? Did you know you can modify the automated build process? Join me in this exploration of some lesser known techniques of the platform.
Complex applications need a persistent database to store, search and join data: till now a dedicated server was needed to do this, and no offline usage of the app was possible. With the introduction of HTML5 and the concept of Web Databases, we don’t need an external server anymore: everything is stored within the user browser and thus the web app can be used offline as well as online.
High Performance Ajax Applications 1197671494632682 2Niti Chotkaew
The document provides tips for developing high performance Ajax applications. It discusses planning for performance, measuring performance, optimizing page load speed, and optimizing JavaScript performance. Specific tips include making fewer HTTP requests, minifying assets, lazy-loading code, optimizing the initial rendering, reducing the amount of symbolic lookup in JavaScript, and optimizing regular expressions and string concatenation.
The document discusses techniques for optimizing JavaScript and AJAX performance. It recommends planning for performance from the start, measuring performance during development, reducing unnecessary code, optimizing assets, and handling long-running processes by breaking work into chunks. Specific tips include minimizing HTTP requests, leveraging caching, optimizing regular expressions, and using innerHTML for document modifications instead of DOM methods.
Intro to Windows Server AppFabric
by Ron Jacobs, Senior Technical Evangelist at Microsoft
Windows Server AppFabric is a set of integrated technologies that make it easier to build, scale and manage Web and composite applications that run on IIS.
This presentation will help SQL Server developers and DBAs get up to speed on AppFabric. You'll also learn how Windows AppFabric caching can help you scale your Data Tier.
You will learn:
•The core capabilities of Windows Server AppFabric
•How the distributed nature of AppFabric’s cache allows large amounts of data to be stored in-memory for extremely fast access and help you scale your SQL Data Tier
•How to get started with Windows Server AppFabric
A fairly short (26 slides) presentation covering the GlassFish community and product (v2 and upcoming modular v3) as well as Java EE 5 and upcoming Java EE 6.
This document provides tips for improving the performance of ASP.NET applications. It discusses ways to optimize ASP.NET pages by reducing page size, minimizing viewstate, and adding caching. It also recommends optimizing database queries, using asynchronous calls judiciously, and profiling SQL to identify inefficient queries. Configuration tips include enabling compression, removing unnecessary HTTP modules, and setting the application pool start mode to AlwaysRunning.
This document outlines a presentation on caching enhancement in ASP.NET 4.0. The presentation agenda covers ASP.NET caching techniques like data, object, output, page and fragment caching. It discusses the new object caching option using System.Runtime.Caching in .NET 4.0. The document also summarizes how to create custom cache providers, select cache providers dynamically and limitations of caching in ASP.NET. It concludes with providing resources on ASP.NET 4 caching and AppFabric scaling.
This document provides an overview of regular expressions (regex). It begins by stating that regex can help find patterns in text and briefly outlines the history of regex from mathematics to its introduction in Unix. It then explains that regex can be used as an alternative to shell wildcards and that many Unix tools incorporate regex. The document proceeds to list programming languages that use regex and provides some basic regex rules including matching single characters, character classes, quantifiers, and assertions. It provides examples to demonstrate matching patterns using these rules.
This document provides an overview of front-end HTML5 web development, including its history from 2004 to becoming a W3C recommendation in 2014. It discusses using new HTML5 features to build complex client-side apps and focuses on teaching attendees how to write front-end code focused on JavaScript to develop modern web applications, demonstrating examples along the way.
The document discusses various statistics related to website load times and how they impact user behavior and business metrics. It states that 47% of consumers expect a page to load within 2 seconds and 73% of mobile users have encountered sites that were too slow. A 1 second delay can result in a 7% loss in conversions. It also discusses studies by Glasses Direct, Walmart and Google on how delays of 50-400 milliseconds can negatively impact conversion rates. The document emphasizes that page load time affects bounce rates, time on site, conversions, user satisfaction and that businesses should care about and measure load times.
This document outlines a course on responsive web design for mobile. The goals are to build a responsive website that works well on any device, understand responsive tools, and learn responsive design techniques. Students should know HTML for content and CSS for styling. The course includes three mobile design challenges to complete the learning.
How to write multi threaded applications using Qt:
In the slides you'll learn about 3 alternatives, all of which allow running tasks simultaneously in Qt applications, and understand the use cases leading to choosing each.
This document discusses improving text editing for Perl developers. It outlines some annoyances with basic text editors like slowing down development. An effective text editor can help developers by providing code snippets, file templates, auto-completion and other features to reduce typing and errors. The document recommends using the Janus text editor plugin collection for Vim, which provides these kinds of features to make editing Perl code faster and easier. It provides instructions for installing Janus and highlights some of its initial capabilities.
This 24-hour course covers the architectural differences system analysts must consider when designing mobile or mobile web applications. It discusses topics like the mobile ecosystem, application layers, device layers, communication networks, and security. The course will help participants understand how to manage sessions, use location services, send push notifications, optimize for networks and address vulnerabilities, through in-depth topics, real-world case studies and a suggested 6-session schedule.
The document discusses key differences between developing for mobile versus desktop. Mobile devices are always connected, have limited battery life, and users expect seamless app switching. Developers must consider interruptions and optimize for battery usage. Each mobile app runs in a sandbox and can communicate through URL schemes or by integrating with OS services. Background execution is more limited on iOS but both platforms allow some background activities like downloading content or playing audio. Developers must respect user expectations and not abuse background capabilities.
This document discusses optimizing mobile networks and applications for speed. It begins with an overview of networking basics and how mobile networks work. It then discusses factors that affect speed like latency, bandwidth, TCP protocols, and cellular network routing. The document provides recommendations for optimizing like leveraging WiFi, anticipating latency, saving bandwidth and battery. It also covers HTTP optimizations, browser APIs and protocols like XHR, SSE and WebSockets. The goal is to understand how networks impact applications and how to design for optimal mobile performance.
The document discusses mobile web architecture and hybrid mobile applications. It begins with an introduction to hybrid apps and PhoneGap. It then covers various HTML5 features that are useful for building hybrid apps like users and sessions, location services, cameras, videos, audio and push notifications. It explains the hybrid architecture of combining web views with native wrappers. It also provides examples of implementing location services, cameras, audio/video and push notifications in a hybrid mobile app.
This document discusses misusing cryptography. It begins with an agenda covering why cryptography is misused and how random number generators and crypto algorithms can be misused. It then discusses examples of what can go wrong, such as a game developer unintentionally allowing hackers to easily determine the secret code protecting scores. The document emphasizes that cryptography is complex and should not be casually misused, as failures can result in compromises like hacked systems and lost jobs. It provides recommendations for proper cryptographic practices.
This document provides an introduction to Selenium, an open source tool for automating web application testing. Selenium allows testing of web applications across different browsers without needing to modify the source code. It works by issuing commands to browser drivers to simulate user interactions such as clicking links, filling forms, and verifying page content. The document outlines how to set up and run automated tests using the Selenium Ruby bindings and RSpec testing framework.
Slides cover how to get started testing your web application. Technologies and concepts explained:
- Unit tests (mocha, jasmine, karma)
- System tests (Selenium)
- Code coverage (istanbul)
- CI servers
This document discusses web accessibility and provides guidance on making websites accessible to people with disabilities. It covers goals of accessibility, challenges for different disabilities, relevant laws, and technical details on how to make elements like images, audio, video, forms, tables, and overall site structure and navigation accessible. The document provides guidelines on topics like alt text, captions, text size and color contrast, keyboard navigation, time limits, languages, and using semantic HTML.
The document provides an overview and introduction to AngularJS. It discusses key Angular concepts like data binding, directives, filters, controllers and scopes. It also covers using Angular for client-side routing and communicating with servers to retrieve data. Example code snippets are provided to demonstrate concepts like controllers, directives and routing. Labs and exercises are included to apply the concepts by building sample Angular applications.
This document discusses JavaScript memory management and common memory leaks. It covers topics like memory lifecycle, garbage collection, detecting memory leaks using dev tools, and ways to minimize memory usage like avoiding global variables and detached DOM nodes. Common sources of memory leaks are discussed such as unbound arrays and objects, multiple copies of functions, and detached DOM nodes not removed from memory. Tools for profiling memory usage like the Chrome Task Manager and Heap Profiler are also presented.
Design Patterns help us solve problems in tried and tested ways.
Turns out they also help us understand our framework better, for framework developers also use patterns.
In these slides you'll see how Design Patterns are implemented by Qt framework, to better both understand patterns and Qt
Essentials of Automations: The Art of Triggers and Actions in FMESafe Software
In this second installment of our Essentials of Automations webinar series, we’ll explore the landscape of triggers and actions, guiding you through the nuances of authoring and adapting workspaces for seamless automations. Gain an understanding of the full spectrum of triggers and actions available in FME, empowering you to enhance your workspaces for efficient automation.
We’ll kick things off by showcasing the most commonly used event-based triggers, introducing you to various automation workflows like manual triggers, schedules, directory watchers, and more. Plus, see how these elements play out in real scenarios.
Whether you’re tweaking your current setup or building from the ground up, this session will arm you with the tools and insights needed to transform your FME usage into a powerhouse of productivity. Join us to discover effective strategies that simplify complex processes, enhancing your productivity and transforming your data management practices with FME. Let’s turn complexity into clarity and make your workspaces work wonders!
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdfPaige Cruz
Monitoring and observability aren’t traditionally found in software curriculums and many of us cobble this knowledge together from whatever vendor or ecosystem we were first introduced to and whatever is a part of your current company’s observability stack.
While the dev and ops silo continues to crumble….many organizations still relegate monitoring & observability as the purview of ops, infra and SRE teams. This is a mistake - achieving a highly observable system requires collaboration up and down the stack.
I, a former op, would like to extend an invitation to all application developers to join the observability party will share these foundational concepts to build on:
In his public lecture, Christian Timmerer provides insights into the fascinating history of video streaming, starting from its humble beginnings before YouTube to the groundbreaking technologies that now dominate platforms like Netflix and ORF ON. Timmerer also presents provocative contributions of his own that have significantly influenced the industry. He concludes by looking at future challenges and invites the audience to join in a discussion.
Dr. Sean Tan, Head of Data Science, Changi Airport Group
Discover how Changi Airport Group (CAG) leverages graph technologies and generative AI to revolutionize their search capabilities. This session delves into the unique search needs of CAG’s diverse passengers and customers, showcasing how graph data structures enhance the accuracy and relevance of AI-generated search results, mitigating the risk of “hallucinations” and improving the overall customer journey.
Maruthi Prithivirajan, Head of ASEAN & IN Solution Architecture, Neo4j
Get an inside look at the latest Neo4j innovations that enable relationship-driven intelligence at scale. Learn more about the newest cloud integrations and product enhancements that make Neo4j an essential choice for developers building apps with interconnected data and generative AI.
Climate Impact of Software Testing at Nordic Testing DaysKari Kakkonen
My slides at Nordic Testing Days 6.6.2024
Climate impact / sustainability of software testing discussed on the talk. ICT and testing must carry their part of global responsibility to help with the climat warming. We can minimize the carbon footprint but we can also have a carbon handprint, a positive impact on the climate. Quality characteristics can be added with sustainability, and then measured continuously. Test environments can be used less, and in smaller scale and on demand. Test techniques can be used in optimizing or minimizing number of tests. Test automation can be used to speed up testing.
20 Comprehensive Checklist of Designing and Developing a WebsitePixlogix Infotech
Dive into the world of Website Designing and Developing with Pixlogix! Looking to create a stunning online presence? Look no further! Our comprehensive checklist covers everything you need to know to craft a website that stands out. From user-friendly design to seamless functionality, we've got you covered. Don't miss out on this invaluable resource! Check out our checklist now at Pixlogix and start your journey towards a captivating online presence today.
Introducing Milvus Lite: Easy-to-Install, Easy-to-Use vector database for you...Zilliz
Join us to introduce Milvus Lite, a vector database that can run on notebooks and laptops, share the same API with Milvus, and integrate with every popular GenAI framework. This webinar is perfect for developers seeking easy-to-use, well-integrated vector databases for their GenAI apps.
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!SOFTTECHHUB
As the digital landscape continually evolves, operating systems play a critical role in shaping user experiences and productivity. The launch of Nitrux Linux 3.5.0 marks a significant milestone, offering a robust alternative to traditional systems such as Windows 11. This article delves into the essence of Nitrux Linux 3.5.0, exploring its unique features, advantages, and how it stands as a compelling choice for both casual users and tech enthusiasts.
Unlocking Productivity: Leveraging the Potential of Copilot in Microsoft 365, a presentation by Christoforos Vlachos, Senior Solutions Manager – Modern Workplace, Uni Systems
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...Neo4j
Leonard Jayamohan, Partner & Generative AI Lead, Deloitte
This keynote will reveal how Deloitte leverages Neo4j’s graph power for groundbreaking digital twin solutions, achieving a staggering 100x performance boost. Discover the essential role knowledge graphs play in successful generative AI implementations. Plus, get an exclusive look at an innovative Neo4j + Generative AI solution Deloitte is developing in-house.
Cosa hanno in comune un mattoncino Lego e la backdoor XZ?Speck&Tech
ABSTRACT: A prima vista, un mattoncino Lego e la backdoor XZ potrebbero avere in comune il fatto di essere entrambi blocchi di costruzione, o dipendenze di progetti creativi e software. La realtà è che un mattoncino Lego e il caso della backdoor XZ hanno molto di più di tutto ciò in comune.
Partecipate alla presentazione per immergervi in una storia di interoperabilità, standard e formati aperti, per poi discutere del ruolo importante che i contributori hanno in una comunità open source sostenibile.
BIO: Sostenitrice del software libero e dei formati standard e aperti. È stata un membro attivo dei progetti Fedora e openSUSE e ha co-fondato l'Associazione LibreItalia dove è stata coinvolta in diversi eventi, migrazioni e formazione relativi a LibreOffice. In precedenza ha lavorato a migrazioni e corsi di formazione su LibreOffice per diverse amministrazioni pubbliche e privati. Da gennaio 2020 lavora in SUSE come Software Release Engineer per Uyuni e SUSE Manager e quando non segue la sua passione per i computer e per Geeko coltiva la sua curiosità per l'astronomia (da cui deriva il suo nickname deneb_alpha).
Sudheer Mechineni, Head of Application Frameworks, Standard Chartered Bank
Discover how Standard Chartered Bank harnessed the power of Neo4j to transform complex data access challenges into a dynamic, scalable graph database solution. This keynote will cover their journey from initial adoption to deploying a fully automated, enterprise-grade causal cluster, highlighting key strategies for modelling organisational changes and ensuring robust disaster recovery. Learn how these innovations have not only enhanced Standard Chartered Bank’s data infrastructure but also positioned them as pioneers in the banking sector’s adoption of graph technology.
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...James Anderson
Effective Application Security in Software Delivery lifecycle using Deployment Firewall and DBOM
The modern software delivery process (or the CI/CD process) includes many tools, distributed teams, open-source code, and cloud platforms. Constant focus on speed to release software to market, along with the traditional slow and manual security checks has caused gaps in continuous security as an important piece in the software supply chain. Today organizations feel more susceptible to external and internal cyber threats due to the vast attack surface in their applications supply chain and the lack of end-to-end governance and risk management.
The software team must secure its software delivery process to avoid vulnerability and security breaches. This needs to be achieved with existing tool chains and without extensive rework of the delivery processes. This talk will present strategies and techniques for providing visibility into the true risk of the existing vulnerabilities, preventing the introduction of security issues in the software, resolving vulnerabilities in production environments quickly, and capturing the deployment bill of materials (DBOM).
Speakers:
Bob Boule
Robert Boule is a technology enthusiast with PASSION for technology and making things work along with a knack for helping others understand how things work. He comes with around 20 years of solution engineering experience in application security, software continuous delivery, and SaaS platforms. He is known for his dynamic presentations in CI/CD and application security integrated in software delivery lifecycle.
Gopinath Rebala
Gopinath Rebala is the CTO of OpsMx, where he has overall responsibility for the machine learning and data processing architectures for Secure Software Delivery. Gopi also has a strong connection with our customers, leading design and architecture for strategic implementations. Gopi is a frequent speaker and well-known leader in continuous delivery and integrating security into software delivery.
“An Outlook of the Ongoing and Future Relationship between Blockchain Technologies and Process-aware Information Systems.” Invited talk at the joint workshop on Blockchain for Information Systems (BC4IS) and Blockchain for Trusted Data Sharing (B4TDS), co-located with with the 36th International Conference on Advanced Information Systems Engineering (CAiSE), 3 June 2024, Limassol, Cyprus.
2. Web Tech History
1991 HTML
1994 HTML2
1996 CSS1 + JavaScript
1997 HTML4
1998 CSS2
2000 XHTML1
2002 Tableless Web Design
2005 Ajax
2009 HTML5
Tuesday, February 26, 13
3. HTML5 What
Syntactical Features (audio, video)
Semantical Features (section, article)
New APIs
Tuesday, February 26, 13
4. HTML5 How
Progressive Enhancements
Existing web sites can move to HTML5
Old browsers will still be able to use the page
Modernizr: http://www.modernizr.com/
Tuesday, February 26, 13
5. HTML5 New APIs
Web Storage Geolocation
Web SQL Device Orientation
Application Cache Form Enhancements
Web Workers Audio, Video
Web Socket Canvas
Desktop Notifications Web GL
Drag & Drop History API
File System API And More...
Tuesday, February 26, 13
6. Modernizr: Before We
Begin
Script Loader
Feature Detector
Tuesday, February 26, 13
17. Local Storage
Before HTML5: cookies were used to store data
on the client side
Cookies Disadvantages:
Limited size (4k)
Sent with every request
Complex to use
Tuesday, February 26, 13
18. Local Storage
A JavaScript API for
storing client side data
Can store up to 5MB
(per site)
Simple API
Never run out of space
Tuesday, February 26, 13
19. Local Storage
Store Data
window.localStorage.setItem(“key”, “value”);
Read Data
window.localStorage.getItem(“key”);
Remove Data
window.localStorage.removeItem(“key”);
Tuesday, February 26, 13
20. Local Storage
Can also use direct access on the storage object,
so this code also works:
window.localStorage.username = “Jimmy”;
var username = window.localStorage.username;
console.log(‘Hello ‘ + username);
Tuesday, February 26, 13
21. Local Storage
Methods:
clear()
key(idx)
length()
Tuesday, February 26, 13
22. Session Storage
Interface is the same as localStorage
Lifetime is only for the current browser window or
tab (or browser session)
Best used for temporary preferences that should
not be shared between tabs
Tuesday, February 26, 13
23. Storage Lab
We’ll implement an address book app
Keeps a list of contacts info: name, phone number,
email
Provide add/view/delete contacts
Tuesday, February 26, 13
24. Storage Lab
Use the starter:
https://github.com/ynonp/advanced-fed-
examples/tree/master/contacts
Tuesday, February 26, 13
25. Offline Web App
Online-Offline Apps
Sync with the Cloud, but can suffer a downtime
(Think Google Gears)
Can run completely offline app as a standalone
Mobile - Save bandwidth
Tuesday, February 26, 13
26. Offline Web App
GET MANIFEST
CACHE MANIFEST
index.html
style/main.css
script/main.js
Tuesday, February 26, 13
27. Cache Manifest File
Lists all the files that should be stored for offline
access
Enable with:
<html manifest="example.appcache">
Tuesday, February 26, 13
28. example.appcache
CACHE MANIFEST
Required header
index.html
CACHE MANIFEST
stylesheet.css
A list of cached files
images/logo.png
scripts/main.js
Tuesday, February 26, 13
29. Demo
Caching A Website
Tuesday, February 26, 13
30. Offline Web App
The cache manifest is divided to sections, the
default is called CACHE
Every file listed in the default CACHE section will
be cached by the browser forever (or until
explicitly deleted by the user)
Tuesday, February 26, 13
31. Offline Web App
The NETWORK section lists files that should never
be cached
Best used for dynamic content (think gmail)
Tuesday, February 26, 13
32. Offline Web App
The FALLBACK section lists fallback content that
should be used if network is not available
So, if you’re trying to read a message while offline,
you can get a nice formatted error page
Tuesday, February 26, 13
33. Manifest Cache
Cache the file locally,
CACHE
never refresh
Files should not be
NETWORK
cached
Cache a fallback
FALLBACK
content
Tuesday, February 26, 13
34. Offline App Exercise
A Dynamic reader with two pages
First lists available articles, the second displays a
given article
Use your favorite server side technology and jQM
Which files do you put in each manifest section ?
Tuesday, February 26, 13
35. Manifest - The Good
Can store any file
locally
Provides offline/online
app functionality
Transparent to the user
Tuesday, February 26, 13
36. Manifest - The Bad
Not suitable for data
storage
Complex update logic
Tuesday, February 26, 13
37. Web SQL
The final storage option for offline apps is the Web
SQL
Allows using a local database to better store
relational data
Best suited for hierarchical lists apps
Tuesday, February 26, 13
38. Q&A
Storage
Geo Location
Video
Canvas
Tuesday, February 26, 13
39. Geo Location
Detect where your user
is now
Show nearby places
Display location aware
data
Tuesday, February 26, 13
40. Technologies
GPS
A-GPS
Cell Information
WiFi Positioning
Tuesday, February 26, 13
41. GPS
Global Positioning
System
Accuracy error: 2-10m
Requires clear sky view
Time to position:
5 seconds - 5 minutes
Tuesday, February 26, 13
42. A-GPS
Uses both GPS chip
and network
information to get
location
Much faster to get
location
Tuesday, February 26, 13
43. Cell Information
Uses cell towers to
calculate a device’s
location
Accuracy: A block or
up to some km
Time to location:
immediate
Tuesday, February 26, 13
44. WiFi Positioning
Detect location using a
list of wireless routers
in your area
Relies on existing
router databases
Tuesday, February 26, 13
45. Location API
Supported Platforms:
iPhone 3.0+
Android 2.0+
Tuesday, February 26, 13
46. Location API
function get_location() {
navigator.geolocation.getCurrentPosition(show_map);
}
function show_map(position) {
var lat = position.coords.latitude;
var long = position.coords.longitude;
var when = position.timestamp;
// show me the map
}
Tuesday, February 26, 13
47. Location API
navigator.geolocation is the entry point for
all location related calls
Location querying is async, so a callback is
supplied
User will be asked permission to share location
Tuesday, February 26, 13
48. Location API
iPhone browser asks
user permissions
before sharing location
Tuesday, February 26, 13
49. Location API
Location API uses
callbacks to perform
error handling
When working with
location, always
consider errors
Tuesday, February 26, 13
50. Location API
getCurrentPosition(
successCallback,
optional errorCallback,
optional config
);
Tuesday, February 26, 13
51. The Coord object
coords.latitude
coords.longitude
coords.altitude
coords.accuracy
coords.altitudeAccuracy
coords.heading
coords.speed
timestamp
Tuesday, February 26, 13
52. The Coord Object
Not all fields will be available at all times
Sizes are specified in meters and degrees
timestamp is a DOMTimestamp (acts like a Date
object)
Tuesday, February 26, 13
53. Location Config
last parameter to getCurrentPosition is a config
object
there are 3 configuration options available:
timeout
maximumAge
enableHighAccuracy
Tuesday, February 26, 13
54. Using Config
window.navigator.geolocation.getCurrentPosition(
successCallback,
failureCallback,
How long to wait before giving up
{ timeout : 0, (in ms)
maximumAge : 60000, Try to use a cached value aged
(in ms)
enableHighAccuracy : false }); Use the most accurate
positioning method
Tuesday, February 26, 13
55. Handle Errors
The errorCallback takes a single argument called
error object
The object has two fields:
error.code & error.message
Use error.message for debug only
Tuesday, February 26, 13
57. Show The Map
On the iPhone, a redirect to a google maps url
starts the map application
The Good: easy to use
The Bad:
user leaves the app
Tuesday, February 26, 13
58. Google Maps API
A JS API to display
embedded maps in
web sites
Works on both desktop
and mobile devices
(Almost) Free to use
Tuesday, February 26, 13
59. Google Maps API
Assign a special empty div that will contain the
map. recommended size of the div is entire page.
Display the map by creating a google.maps.Map
object
Place markers on the map using
google.maps.Marker
Full documentation:
http://developer.google.com/apis/maps/
documentation/javascript/
Tuesday, February 26, 13
60. Google Maps API
Maps Workflow:
Choose a div
Create a new google.maps.Map(...)
Remember to set minimum height on the div
Tuesday, February 26, 13
61. Objects To Note
google.maps.LatLng - represents a latitude/
longitude pair
Methods:
lat() returns the lat value
lng() returns the long value
Tuesday, February 26, 13
62. Objects To Note
google.maps.Map( element, options )
Interesting Methods:
panBy( x, y ) - move the map by x,y
panTo( latlng ) - move the map to latlng
setZoom( zoom )
Tuesday, February 26, 13
64. Demo
Show Location On Map
Tuesday, February 26, 13
65. Location Tracking
Receive notifications about location changes
Can use for navigation apps, sport apps, and more
Browser must remain open
Tuesday, February 26, 13
66. Location Tracking
use watchPosition to start watching a user’s
position
The method returns a watch id. Keep it. When
tracking is no longer needed, use clearWatch
with the watch id to stop.
The callback of watchPosition will get called
every time location has changed
Tuesday, February 26, 13
67. Exercise: Where’s My
Car
Write a parking reminder app
One button titled “parked” which marks current
location and keeps it in local storage
Another button titled “find” which shows a map
leading to your car
Keep data in local storage
Tuesday, February 26, 13
68. Q&A
Storage
Geo Location (iPhone, Android)
Video & Audio (iPhone, Android)
Canvas (iPhone, Android)
Tuesday, February 26, 13
70. Video Tag
HTML5 introduces a <video> tag to embed
videos in a web page.
Different browsers support different video
formats. The <video> tag can specify multiple
formats.
Tuesday, February 26, 13
71. Video Formats
Video formats are like
languages
The same video can be
encoded in different
formats
A browser must “speak
the language” to be
able to play the video
Tuesday, February 26, 13
72. Video Converter
Miro is a free open
source video player
and converter
http://
www.getmiro.com
Tuesday, February 26, 13
73. Browser Support
HTML5 spec does not define a video codec to use
h.264 is the most widely supported. Plays on
iPhone and Android
Tuesday, February 26, 13
74. The Markup
Poster image file name
<video poster=”star.png”>
<source src=”zebra.mp4” />
Video file name. Usually mp4
</video> for mobile devices
Tuesday, February 26, 13
75. Limitations
Video will start playing in a dedicated “player”
window, when the user taps it
It is not possible to auto play the video on mobile
It is not possible to embed other content on the
video on mobile
Tuesday, February 26, 13
76. Audio Tag
Structured like a Video tag
iPhone and Android support MP3
No autoplay
Tuesday, February 26, 13
77. Lab
Audio SoundBoard
Use Animal Sounds:
http://apps.ynonperek.com/
audio.zip
Images: http://
apps.ynonperek.com/images.zip
Use starter:
https://github.com/ynonp/
mobileweb-examples/blob/
master/html5/SoundBoard/
audioboard_starter.html
Tuesday, February 26, 13
78. Q&A
Storage
Geo Location
Video & Audio
Canvas (iPhone, Android)
Tuesday, February 26, 13
80. HTML5 Canvas
A 2d graphics canvas
for HTML apps
Games
Dynamic images
Client-side painting
(saves bandwidth)
Tuesday, February 26, 13
81. Hello Canvas
An HTML element <canvas> on the markup
JS code to do actual painting
Tuesday, February 26, 13
82. Hello Canvas
The canvas element has no content and no border
of its own
A canvas keeps a painting context on which we
perform the drawing
First example uses context.fillText()
examples/canvas/intro.html
Tuesday, February 26, 13
83. Basic Drawing
Context object provides the drawing functions.
Each takes coordinates and data.
Drawing style is determined by setting attributes
on the context object.
Most style properties are plain text strings
Tuesday, February 26, 13
85. Drawing Rectangles
Let’s start with drawing
rectangles fillRect(x, y, w, h)
note fillRect draws a strokeRect(x, y, w, h)
filled rectangle, while clearRect(x, y, w, h)
strokeRect draws just
the outline
fillStyle and strokeStyle
determine the colors
Tuesday, February 26, 13
87. Drawing Paths
A composite shape on the canvas is called “path”
Paths are made of lines, arcs, curves and
rectangles
A path can be filled or stoked. Nothing is painted
until either fill() or stroke() is called
Tuesday, February 26, 13
88. Drawing Paths
moveTo(x, y)
Lines are painted with
lineTo and moveTo lineTo(x, y)
stroke() performs the
actual drawing
Tuesday, February 26, 13
89. Lines Example
ctx.beginPath();
ctx.strokeStyle = "hsl(249, 41%, 50%)";
ctx.lineWidth = 6;
ctx.moveTo(0, 0);
ctx.lineTo(20, 10);
ctx.lineTo(0, 20);
ctx.stroke();
Cool Color Selector:
http://mothereffinghsl.com/
Tuesday, February 26, 13
90. Using The Image
It’s possible to use an image drawn in a canvas for
other elements
get the image url using:
canvas.toDataURL()
use image url as a source attribute of an img tag
Extra: draw on a hidden canvas
Tuesday, February 26, 13
91. Drawing Circles
use arc() and arcTo() to arc(x, y, radius,
draw circles or parts of startAngle,
them endAngle,
antiClockWise)
Degrees are specified
in radians. arcTo(x1, y1,
Math.PI = 180 deg x2, y2,
radius)
remember to fill() or
stroke()
Tuesday, February 26, 13
92. Exercise 1
Draw the image on the
right
Use moveTo and arc
Bonus: add colors
Tuesday, February 26, 13
93. Exercise 2
Draw the image on the
right
Place pins randomly
across the screen
Tuesday, February 26, 13
94. Advanced Canvas
Transformations
Image Filters
Tuesday, February 26, 13
95. Transformations
supported translate(x, y)
transformations:
translation, scaling, rotate(angle)
rotation scale(x, y)
Transformations affect
all drawing code
performed after them
Tuesday, February 26, 13
96. Translation
Move the origin of the canvas to another point on
the canvas
The new point is now (0, 0)
This can make drawing code simpler
Tuesday, February 26, 13
97. Translation Example
Use translation to paint
the four painted
rectangles on the right
examples/html5/canvas/translate.html
Tuesday, February 26, 13
98. Scaling
scales the rendering context size
x and y are scale factors
translate before scale to maintain position
Tuesday, February 26, 13
99. Scale Example
examples/html5/canvas/scale.html
Tuesday, February 26, 13
100. Rotation
Rotates a shape around its (0, 0) point of origin
Angle is specified in radians.
Math.PI = 180 deg (half a circle)
Math.PI / 4 = 45 deg
Translate before rotate to maintain position
Tuesday, February 26, 13
101. Example: Rotation
ctx.translate(75,75);
for (var i=1;i<6;i++){
ctx.save();
ctx.fillStyle = 'rgb('+(51*i)+','+(255-51*i)+',255)';
for (var j=0;j<i*6;j++){ // draw individual dots
ctx.rotate(Math.PI*2/(i*6));
ctx.beginPath();
ctx.arc(0,i*12.5,5,0,Math.PI*2,true);
ctx.fill();
}
ctx.restore();
}
Tuesday, February 26, 13
102. Example: Rotation
The background was
painted with a gradient ctx.save();
fill var grad = ctx.createLinearGradient(0, 0,
150, 0);
grad.addColorStop(0, "#888");
grad.addColorStop(1, "#eee");
Notice the save() and ctx.fillStyle = grad;
restore() at the ctx.fillRect(0, 0, 150, 150);
ctx.fill();
beginning and end. ctx.restore();
Now we can put the
code inside a function,
and it won’t affect
outside code
Tuesday, February 26, 13
103. Exercise
Draw the clock on the
right
Use rotate and
translate to simplify
calculations
Bonus: Show the time
Tuesday, February 26, 13
105. Drawing Images on
Canvas
It’s possible to paint a png or jpeg image on a
canvas using drawImage
Canvas also lets JS code take the pixels from the
image into an array. Using this array, we can
transform the pixels and write the result to a new
canvas
The operation is called filtering
Tuesday, February 26, 13
106. Image Drawing API
drawImage(image, x, y)
paint an entire image object on the canvas at position (x,y)
drawImage(image, x, y, w, h)
paint an entire image object on the canvas, scaling it to size (w,h)
drawImage(image, sx, sy, sw, sh, dx, dy, dw, dh)
paint a slice of the image on a canvas, can use dw,dh to scale
Tuesday, February 26, 13
107. Drawing Images and
File API
Use input type=”file” to upload a photo from the
phone’s camera or gallery
Access the image and paint it on a canvas using
HTML5 File API
Tuesday, February 26, 13
108. Reading The Photo
FileReader is used to read a photo from the input
field
reader.readAsDataURL( input_field ) - reads the
data
reader emits load event when done
Example: http://jsfiddle.net/influenztial/qy7h5/
Tuesday, February 26, 13
109. Image Filters
For the next few slides, we’ll create a Filters
object. Each filter is a function of that Filters
object
The Filters object is responsible for reading pixel
data and interacting with the canvas
A filter function takes pixel data and
manipulates it
Tuesday, February 26, 13
110. Filters Code
When testing on
desktop, some canvas.toDataURL()
browsers will throw ctx.getImageData(sx, sy, sw, sh)
security exceptions if ctx.putImageData(data, dx, dy)
the page is read locally.
Code:
examples/html5/canvas/filters.html
Tuesday, February 26, 13
111. Canvas Exercise
Implement a mobile drawing app using the canvas
and touch events
App should have a footer with a selection of
colors. Tapping a color sets current color
Tapping anywhere on screen should draw in the
selected color
Bonus: share photo on server
Tuesday, February 26, 13
117. And The Fun Part
7 Dragging Events:
dragstart, drag,
dragenter, dragleave, dragover
drop
dragend
Tuesday, February 26, 13
118. For drop events:
cancel defaults for
dragover and dragenter
Tuesday, February 26, 13
119. Demo1: Dropzone
Prevent default from bad events
Handle good event
http://jsbin.com/oberec/1/edit
Tuesday, February 26, 13
120. Alerting Drop Zone
Use dragenter and dragleave to alert user they’re
in the drop zone
Demo:
http://jsbin.com/oberec/4/edit
Tuesday, February 26, 13
121. Transferring Data
function handleDragStart(e) {
e.dataTransfer.setData('text/html', this.innerHTML);
}
function handleDrop(e) {
e.stopPropagation();
this.innerHTML = e.dataTransfer.getData('text/html');
return false;
}
Tuesday, February 26, 13
122. Other dataTransfer
Use e.dataTransfer.files to get data dragged from
desktop
function handleDrop(e) {
e.stopPropagation();
e.preventDefault();
var files = e.dataTransfer.files;
for (var i = 0, f; f = files[i]; i++) {
// Read the File objects in this FileList.
}
}
Tuesday, February 26, 13
123. Other dataTransfer
Use setData to allow dragging “out of” the
browser
var file = document.getElementById("dragout");
file.addEventListener("dragstart",function(evt){
evt.dataTransfer.setData("DownloadURL",fileDetails);
},false);
Tuesday, February 26, 13