Cache Pattern for Offline Web Applications
|
|
- Dwayne Jenkins
- 6 years ago
- Views:
Transcription
1
2 Cache Pattern for Offline Web Applications Robert Kroeger June 27, 2009 Post your questions for this talk on Google Moderator: code.google.com/events/io/questions
3 Why Mobile Web Applications? Pro: server-side features that cannot be accommodated in a mobile device Mobile devices have limited storage Mobile devices have limited CPU Pro: ease of distribution No app store approval process Launch on your schedule Update frequently But: use of wireless connections can make this much too slow 3
4 The Connection Problem EDGE/3G Internet Server High latency Flaky Connection 4
5 Caching Keeps Mobile Web Apps Responsive No Synchronous Connection From Web UI to Server Mobile Device Web application UI Internet Server Update UI Mobile Device Update Cache Web application UI Devicelocal Cache Internet Server 5 Modify Cache Push To Server
6 Implementing Cache Pattern Storing the data Cached Content to UI Cache Changes from server Changes from UI Browser platform DB Updates bound for Server 6
7 Cache Storage: Structured Storage Structured storage capability in HTML5 and Gears A SQL database Local to the client Can access in absence of network connection Keep the cached contents here Persistent across browser restarts ACID properties maintain consistent database state 7
8 The Asynchronous Programming Model Structured Storage: Gears!= HTML5 Gears JavaScript Thread Function call database action Return HTML5 JavaScript Thread SQL Execution Thread database action Function call Other JavaScript Function call (back) 8
9 Portability? Gears vs HTML5 Structured Storage SQL database Synchronous Programming model Asynchronous programming model Android Platform iphone HTML5 Structured Storage Google Gears Database 9
10 Web Storage Portability Layer (WSPL) One API For Gears and HTML5 Statement HTML5 Structured Storage Common API Results Transactions Google Gears Asynchronous worker Code to one common API Asynchronous programming model Gears worker implements the asynchronous programming model above synchronous database Available at code.google.com/ webstorageportabilitylayer 10
11 Build Portable Cache above WSPL Cached Content to UI Cache Changes from server Changes from UI Browser platform WSPL API DB Updates bound for Server Asynchronous interface 11
12 Asynchronous Cache Architecture Request Cached Content: getvalues Cached Content to UI: valuecallback Acknowledge UI Change: ackcallback Changes from UI Action: applyuichange Get Apply Changes Cache Server Merge Ack Changes execute callback Server response: ackchange Server response: insertupdate Updates bound for Server: sendxhrpost Queries bound for Server: sendxhrpost WSPL API 12
13 SimpleNotes A Concrete Example of the Cache Pattern Toy application keep notes server side left as audience exercise Demonstrates use of the WSPL library Included with WSPL Three different pages in the application List Notes Page Time Time Subject... Subject New Click Back View Note Subject Note content Save Edit Edit Note Subject Note content 13
14 Key Cache Design Aspects Hit Determination: what data is cached? A contiguous range of notes Refresh: when to update the cached data with server changes? Every request for a list of notes Eviction: what to discard to make room for new data Coherency: how to merge server changes into cache Always send updates ahead of queries Reapply actions for unacknowledged updates 14
15 Simple Notes Tables google.wspl.simplenotes.cache.create_cached_notes_ = new google.wspl.statement( 'CREATE TABLE IF NOT EXISTS cached_notes (' + 'notekey INTEGER UNIQUE PRIMARY KEY,' + 'subject TEXT,' + 'body TEXT' + ');' ); Separate write buffer: actions vs state google.wspl.simplenotes.cache.create_write_buffer_ = new google.wspl.statement( 'CREATE TABLE IF NOT EXISTS write_buffer (' + 'sequence INTEGER UNIQUE PRIMARY KEY AUTOINCREMENT,' + 'notekey INTEGER,' + 'status INTEGER,' + 'subject TEXT,' + 'body TEXT' + ');' ); google.wspl.simplenotes.cache.determine_min_key_ = new google.wspl.statement( 'SELECT MIN(noteKey) as minnotekey FROM cached_notes;'); google.wspl.simplenotes.cache.determine_max_key_ = new google.wspl.statement( 'SELECT MAX(noteKey) as maxnotekey FROM cached_notes;'); 15
16 Simple Notes Creation google.wspl.simplenotes.cache.prototype.startcache = function(callback) { var statc = 0; var self = this; var perstatcallback = function(tx, result) { google.logger('perstatcallback'); if (statc == 4) { self.start_ = (result.isvalidrow())? result.getrow().minnotekey : -1; self.serverstart_ = self.start_; // Temporary. Remove when server exists. } else if (statc == 5) { self.end_ = (result.isvalidrow())? result.getrow().maxnotekey : -1; self.serverend_ = self.end_; // Temporary. Remove when server exists. } statc++; }; this.dbms_.executeall([ google.wspl.simplenotes.cache.create_cached_notes_, google.wspl.simplenotes.cache.create_write_buffer_, google.wspl.simplenotes.cache.create_update_trigger_, google.wspl.simplenotes.cache.create_replay_trigger_, google.wspl.simplenotes.cache.determine_min_key_, google.wspl.simplenotes.cache.determine_max_key_], {onsuccess: perstatcallback, onfailure: this.logerror_}, {onsuccess: callback, onfailure: this.logerror_}); google.logger('finished startcache'); }; Asynchronous here too 16
17 getvalues Hit Call Flow Request Cached Content: getvalues Cached Content to UI: valuecallback Acknowledge UI Change: ackcallback Changes from UI Action: applyuichange createtransaction Get Apply Changes Cache Server Merge Ack Changes execute intransactiongetnotes execute callback accumulateresults Server response: ackchange Server response: insertupdate Updates bound for Server: sendxhrpost Queries bound for Server: sendxhrpost WSPL API 17
18 getvalues Example Code (1) google.wspl.simplenotes.cache.prototype.getvalues = function(type, query, valuescallback) { // Reduce any query to what would be available from the server query[0] = Math.max(this.serverStart_, query[0]); query[1] = Math.min(this.serverEnd_, query[1]); if (type == 'list') { this.getnotelist_(query[0], query[1], valuescallback); } else if (type == 'fullnote') { this.getonenote_(query[0], valuescallback); } }; Same idea as getnotelist_ 18
19 getvalues Example Code (2) google.wspl.simplenotes.cache.prototype.getnotelist_ = function(start, end, valuescallback) { var notes = []; var accumulateresults = function(tx, result) { for(; result.isvalidrow(); result.next()) { notes.push(result.getrow()); } }; var intransactiongetnotes = function(tx) { tx.execute(google.wspl.simplenotes.cache.list_cached_notes_. createstatement([start, end]), { onsuccess: accumulateresults, onfailure: this.logerror_}); }; Need a cache membership scheme var hit = this.iscachehit_(start, end); this.dbms_.createtransaction(intransactiongetnotes, {onsuccess: function() { valuescallback(notes, hit); }, onfailure: this.logerror_}); if (hit) { this.fetchfromserver(this.start_, this.end_); // Refresh } else { this.fetchfromserver(math.min(this.start_, start), Math.max(this.end_, end)); this.lastmiss_ = {callback: valuescallback, start: start, end: end}; } }; In transaction getnotelist intransactiongetnotes accumulateresults valuescallback 19
20 Hitting and Missing iscachehit Application Specific Simple approach here: cache contains a contiguous range of notes. google.wspl.simplenotes.cache.prototype.iscachehit_ = function(start, end) { return start >= this.start_ && end <= this.end_; }; Cache maintains the start and end values in JavaScript Cache grows its range by making a server request for the missing values. Avoid database accesses 20
21 applyuichange Call Flow Request Cached Content: getvalues Cached Content to UI: valuecallback Acknowledge UI Change: ackcallback Changes from UI Action: applyuichange executeall Get Apply Changes Cache ackcallback Server Merge Ack Changes execute callback Server response: ackchange Server response: insertupdate Updates bound for Server: sendxhrpost Queries bound for Server: sendxhrpost Update via a trigger WSPL API updatetrigger 21
22 applyuichange Code google.wspl.simplenotes.cache.insert_ui_update_ = new google.wpsl.statement( 'INSERT INTO write_buffer (' + 'notekey, status, subject, body )' + 'VALUES(?,?,?,?);'); google.wspl.simplenotes.cache.prototype.applyuichange = function(notekey, subject, body, ackcallback) { var self = this; var update = [notekey, 2 8, subject, body]; var stat = google.wspl.simplenotes.cache.insert_ui_update_.createstatement( update); this.dbms_.execute(stat, null, {onsuccess: function() { ackcallback(notekey); }, onfailure: function (error) { self.logerror_(error); ackcallback(-1); }}); }; 22
23 Why Triggers: Avoid Ping-Ponging Long Transactions Are Bad JavaScript Thread SQL Execution Thread onclick txget In transaction select txmodify update end of tx Read-modifiy-write operations are inefficient A trigger runs entirely inside SQL thread JavaScript Thread SQL Execution Thread onclick In transaction txmodify trigger update end of tx 23
24 applyuichange Trigger Code google.wspl.simplenotes.cache.create_update_trigger_ = new google.wspl.statement( 'CREATE TRIGGER IF NOT EXISTS updatetrigger ' + 'AFTER INSERT ON write_buffer ' + 'BEGIN ' + ' REPLACE INTO cached_notes ' + ' SELECT notekey, subject, body ' + ' FROM write_buffer WHERE status & 8 = 8; ' + ' UPDATE write_buffer SET status = status & ~ 8; ' + 'END;' ); status: a bit-field of states 1 The update is inflight to the server 2 The update needs to be (re)sent to the server 8 The update needs to replayed against the cache Update cache from write_buffer Trigger is only way to execute several statements 24
25 insertupdate Call Flow Request Cached Content: getvalues Cached Content to UI: valuecallback Acknowledge UI Change: ackcallback Changes from UI Action: applyuichange Callback if servicing a cache miss Get Apply Changes createtransaction Cache callback execute Server Merge Ack Changes intrans executeall afterinsert Server response: ackchange Server response: insertupdate Updates bound for Server: sendxhrpost Queries bound for Server: sendxhrpost Coherency: replay actions WSPL API replaytrigger 25
26 insertupdate Code google.wspl.simplenotes.cache.prototype.insertupdate = function(notes) { var self = this; var stats = []; var start = notes[0].notekey; var end = notes[0].notekey; for (var i = 0; i < notes.length; i++) { stats.push(google.wspl.simplenotes.cache.insert_note_. createstatement([notes[i].notekey, notes[i].subject, notes[i].body])); start = Math.min(start, notes[0].notekey); end = Math.max(end, notes[0].notekey); } stats.push(google.wspl.simplenotes.cache.evict_.createstatement([start, end])); stats.push(google.wspl.simplenotes.cache.force_replay_); var intrans = function(tx) { self.start_ = start; self.end_ = end; tx.executeall(stats); }; Must update here to align JS change with transaction boundary var afterinsert = function(tx) { if (this.lastmiss_ && this.iscachehit_(this.lastmiss_.start, this.lastmiss_.end)) { this.lastmiss_.callback(notes); this.lastmiss_ = undefined; } }; this.dbms_.createtransaction(intrans, {onsuccess: afterinsert, onerror: this.logerror_}); }; Callback if this update from the server satisfies a pending request 26
27 fetchfromserver Call Flow Handling Cache Misses and Refresh Request Cache-miss Content: getvalues Cached Content to UI: valuecallback Acknowledge UI Change: ackcallback Changes from UI Action: applyuichange executeall Get Apply Changes Cache accumulateupdates Server Merge Ack Changes ackandpost execute callback Server response: ackchange Server response: insertupdate Updates bound for Server: sendxhrpost Queries bound for Server: sendxhrpost WSPL API 27
28 fetchfromserver Code google.wspl.simplenotes.cache.prototype.fetchfromserver = function(start, end) { var now = this.dbms_.getcurrenttime(); if (start >= this.start_ && end <= this.end_ && now - this.lastrefresh_ < google.wspl.simplenotes.cache.time_between_refresh_) { return; } var updates = []; var self = this; var flag = 1; var sql = []; sql.push(google.wspl.simplenotes.cache.get_updates_to_resend_); sql.push(google.wspl.simplenotes.cache.mark_as_inflight_); var accumulateupdates = function(tx, rs) { if (flag == 1) { for(; rs.isvalidrow(); rs.next()) { updates.push(['u', rs.getrow()]); } flag++; } }; var ackandpost = function() { updates.push(['q', {start: start, end: end}]); self.sendxhrpost(updates); }; this.dbms_.executeall(sql, {onsuccess: accumulateupdates, onfailure: this.logerror_}, {onsuccess: ackandpost, onfailure: this.logerror_}); }; 28
29 Maintaining Server Consistency Resend failures before queries, then reapply actions Time! 1 Q In Flight 1 2 Q ackchange Write Buffer sendxhrpost ackchange fetchfromserver applyuichange fetchfromserver applyuichange insertupdate 29
30 Miscellaneous Tidbits Messages to server JSON-encoded via XHR POST See the WSPL open source distribution for the remaining missing bits Asynchronous model decouples the execution order from the display order Triggers crucial to rapid development SimpleNotes glosses over some hard problems: Database too slow to serve as application model Too much data traffic 30
31 Summary Cache pattern workable in real products: Mobile Gmail for iphone and Android. WSDL library same Workable local storage solution across iphone and Android 31
32 Q & A Post your questions for this talk on Google Moderator: code.google.com/events/io/questions
33
Beyond Cookies: Persistent Storage for Web Applications. Brad Neuberg Google
Beyond Cookies: Persistent Storage for Web Applications Brad Neuberg Google What? What? 4K What? 4K 100K What? 4K 100K 500K What? 4K 100K 500K >1 MB What? Name/Value Storage Database Static Files Why?
More informationCopyright is owned by the Author of the thesis. Permission is given for a copy to be downloaded by an individual for the purpose of research and
Copyright is owned by the Author of the thesis. Permission is given for a copy to be downloaded by an individual for the purpose of research and private study only. The thesis may not be reproduced elsewhere
More informationIT Best Practices Audit TCS offers a wide range of IT Best Practices Audit content covering 15 subjects and over 2200 topics, including:
IT Best Practices Audit TCS offers a wide range of IT Best Practices Audit content covering 15 subjects and over 2200 topics, including: 1. IT Cost Containment 84 topics 2. Cloud Computing Readiness 225
More informationUsing HTML5 Offline Storage. Brady Eidson Safari and WebKit Engineer
Using HTML5 Offline Storage Brady Eidson Safari and WebKit Engineer 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 So what can I do without the cloud? 22 What You ll Learn Make apps accessible offline
More informationCreating a Client-Side Search Engine with Gears. Brad Neuberg, Gears
Creating a Client-Side Search Engine with Gears Brad Neuberg, Gears Agenda Gears PubTools Search Gears Modules Search Architecture Dojo Tips, Tricks, and Code JavaScript CSS HTML 5 HTML What is Gears?
More informationAsynchronous JavaScript + XML (Ajax)
Asynchronous JavaScript + XML (Ajax) CSE 190 M (Web Programming), Spring 2008 University of Washington References: w3schools, Wikipedia Except where otherwise noted, the contents of this presentation are
More informationIntroduction to Gears. Brad Neuberg Google
Introduction to Gears Brad Neuberg Google JavaScript CSS HTML What is Gears? JavaScript CSS HTML What is Gears? JavaScript CSS HTML What is Gears? JavaScript CSS HTML What is Gears? JavaScript CSS HTML
More informationPerformance Case Study
Performance Case Study @Fabian_Frank Yahoo! Search, Engineer Youthmedia.eu, Volunteer A Dynamic Website self-contained App self-contained App self-contained App node v0.4.x multi-core
More informationCreating a Client-Side Search Engine with Gears and Dojo. Brad Neuberg, Google
Creating a Client-Side Search Engine with Gears and Dojo Brad Neuberg, Google Agenda Gears PubTools Search Gears Modules Search Architecture Dojo Tips, Tricks, and Code JavaScript CSS HTML What is Gears?
More informationAJAX for Mobile Devices
AJAX for Mobile Devices Using Apache Projects to get the job done Roland Tritsch Director PS FUSE ACCU 2009 - Apr., 23rd - Oxford (UK) Why is this relevant? Mobile is the next Desktop! The only bright
More informationWeb Application with AJAX. Kateb, Faris; Ahmed, Mohammed; Alzahrani, Omar. University of Colorado, Colorado Springs
Web Application with AJAX Kateb, Faris; Ahmed, Mohammed; Alzahrani, Omar University of Colorado, Colorado Springs CS 526 Advanced Internet and Web Systems Abstract Asynchronous JavaScript and XML or Ajax
More informationMongoDB Web Architecture
MongoDB Web Architecture MongoDB MongoDB is an open-source, NoSQL database that uses a JSON-like (BSON) document-oriented model. Data is stored in collections (rather than tables). - Uses dynamic schemas
More informationTableau Server - 101
Tableau Server - 101 Prepared By: Ojoswi Basu Certified Tableau Consultant LinkedIn: https://ca.linkedin.com/in/ojoswibasu Introduction Tableau Software was founded on the idea that data analysis and subsequent
More informationWeb application Architecture
1 / 37 AJAX Prof. Cesare Pautasso http://www.pautasso.info cesare.pautasso@usi.ch @pautasso Web application Architecture 5 / 37 Client Server Backend Response Database File System 2013 Cesare Pautasso
More informationWeb Programming Step by Step
Web Programming Step by Step Lecture 19 Ajax Reading: 10.1-10.2 Except where otherwise noted, the contents of this presentation are Copyright 2009 Marty Stepp and Jessica Miller. Synchronous web communication
More information<Insert Picture Here> RDBMS-based Coverage Collection and Analysis
RDBMS-based Coverage Collection and Analysis James Roberts Coverage-driven Flow Grading coverage merge coverage merge Vault Analysis coverage merge Coverage-driven Flow Grading coverage
More informationActive Endpoints. ActiveVOS Platform Architecture Active Endpoints
Active Endpoints ActiveVOS Platform Architecture ActiveVOS Unique process automation platforms to develop, integrate, and deploy business process applications quickly User Experience Easy to learn, use
More informationDesigning dashboards for performance. Reference deck
Designing dashboards for performance Reference deck Basic principles 1. Everything in moderation 2. If it isn t fast in database, it won t be fast in Tableau 3. If it isn t fast in desktop, it won t be
More informationComet and WebSocket Web Applications How to Scale Server-Side Event-Driven Scenarios
Comet and WebSocket Web Applications How to Scale Server-Side Event-Driven Scenarios Simone Bordet sbordet@intalio.com 1 Agenda What are Comet web applications? Impacts of Comet web applications WebSocket
More informationBuilding Offline Mobile Apps with Oracle JET and MCS
Building Offline Mobile Apps with Oracle JET and MCS JavaScript Persistence and Offline Sync Library for Cordova or Browser based applications MCS Sync Express Lyudmil Pelov @lpelov Oracle A-Team Nov,
More informationController/server communication
Controller/server communication Mendel Rosenblum Controller's role in Model, View, Controller Controller's job to fetch model for the view May have other server communication needs as well (e.g. authentication
More informationA Library and Proxy for SPDY
A Library and Proxy for SPDY Interdisciplinary Project Andrey Uzunov Chair for Network Architectures and Services Department of Informatics Technische Universität München April 3, 2013 Andrey Uzunov (TUM)
More informationProject Zygote. Rapid prototyping for the Internet of Things
Project Zygote Rapid prototyping for the Internet of Things The Problem we set out to solve How to make interconnecting things easier? What IoT means to us Seamless interconnection between any IoT enabled
More informationModule 6 Node.js and Socket.IO
Module 6 Node.js and Socket.IO Module 6 Contains 2 components Individual Assignment and Group Assignment Both are due on Wednesday November 15 th Read the WIKI before starting Portions of today s slides
More information0.9: Faster, Leaner and Dijit? July 25, 2007 Dylan Schiemann. presented by
0.9: Faster, Leaner and Dijit? July 25, 2007 Dylan Schiemann presented by Key Features Browser support Package/build system Easy widget building Declarative widget creation Rich built-in widget set Comprehensive
More information! The final is at 10:30 am, Sat 6/4, in this room. ! Open book, open notes. ! No electronic devices. ! No food. ! Assignment 7 due 10pm tomorrow
Announcements ECS 89 6/1! The final is at 10:30 am, Sat 6/4, in this room! Open book, open notes! No electronic devices! No food! Assignment 7 due 10pm tomorrow! No late Assignment 7 s! Fill out course
More informationNODE.JS MOCK TEST NODE.JS MOCK TEST I
http://www.tutorialspoint.com NODE.JS MOCK TEST Copyright tutorialspoint.com This section presents you various set of Mock Tests related to Node.js Framework. You can download these sample mock tests at
More informationSample Kentico Website Audit
Sample Kentico Website Audit XYX CORPORATION NOVEMBER 2017 Wakefly, Inc. 293 Boston Post Road West Suite 140, MARLBOROUGH, MA 01752 www.wakefly.com Overview 2 Code Audit Synopsis for www.xyzcorp.com The
More informationDistributed Systems. Lec 10: Distributed File Systems GFS. Slide acks: Sanjay Ghemawat, Howard Gobioff, and Shun-Tak Leung
Distributed Systems Lec 10: Distributed File Systems GFS Slide acks: Sanjay Ghemawat, Howard Gobioff, and Shun-Tak Leung 1 Distributed File Systems NFS AFS GFS Some themes in these classes: Workload-oriented
More informationBuild Native-like Experiences in HTML5
Developers Build Native-like Experiences in HTML5 The Chrome Apps Platform Joe Marini - Chrome Developer Advocate About Me Joe Marini Developer Relations Lead - Google Chrome google.com/+joemarini @joemarini
More informationAjax- XMLHttpResponse. Returns a value such as ArrayBuffer, Blob, Document, JavaScript object, or a DOMString, based on the value of
Ajax- XMLHttpResponse XMLHttpResponse - A Read only field Returns a value such as ArrayBuffer, Blob, Document, JavaScript object, or a DOMString, based on the value of XMLHttpRequest.responseType. This
More informationDetermining the Best Approach
2 Determining the Best Approach The remaining chapters of this book cover the capabilities of the BlackBerry application platform and then dig into each application development option in detail. Before
More informationMySQL & NoSQL: The Best of Both Worlds
MySQL & NoSQL: The Best of Both Worlds Mario Beck Principal Sales Consultant MySQL mario.beck@oracle.com 1 Copyright 2012, Oracle and/or its affiliates. All rights Safe Harbour Statement The following
More informationGFS Overview. Design goals/priorities Design for big-data workloads Huge files, mostly appends, concurrency, huge bandwidth Design for failures
GFS Overview Design goals/priorities Design for big-data workloads Huge files, mostly appends, concurrency, huge bandwidth Design for failures Interface: non-posix New op: record appends (atomicity matters,
More informationAsynchronous Method Calls White Paper VERSION Copyright 2014 Jade Software Corporation Limited. All rights reserved.
VERSION 7.0.10 Copyright 2014 Jade Software Corporation Limited. All rights reserved. Jade Software Corporation Limited cannot accept any financial or other responsibilities that may be the result of your
More informationHTML 5: Fact and Fiction Nathaniel T. Schutta
HTML 5: Fact and Fiction Nathaniel T. Schutta Who am I? Nathaniel T. Schutta http://www.ntschutta.com/jat/ @ntschutta Foundations of Ajax & Pro Ajax and Java Frameworks UI guy Author, speaker, teacher
More informationUsing GWT and Eclipse to Build Great Mobile Web Apps
Using GWT and Eclipse to Build Great Mobile Web Apps Chris Ramsdale Product Manager, GWT and Google Plugin for Eclipse Feedback: http://goo.gl/mn6y4 Twitter: #io2011 #gwt Why Are We Here? 3 The Problems
More informationCross-compiling C++ to JavaScript. Challenges in porting the join.me common library to HTML5
Cross-compiling C++ to JavaScript Challenges in porting the join.me common library to HTML5 JUNE 24, 2015 LEVENTE HUNYADI join.me at a glance 2 join.me at a glance 3 join.me characteristics Application
More informationWeb Application Development Using Spring, Hibernate and JPA
Web Application Development Using Spring, Hibernate and JPA Duration: 5 Days Price: CDN$3275 *Prices are subject to GST/HST Course Description: This course provides a comprehensive introduction to JPA
More informationInvestigating Source Code Reusability for Android and Blackberry Applications
Investigating Source Code Reusability for Android and Blackberry Applications Group G8 Jenelle Chen Aaron Jin 1 Outline Recaps Challenges with mobile development Problem definition Approach Demo Detailed
More informationController/server communication
Controller/server communication Mendel Rosenblum Controller's role in Model, View, Controller Controller's job to fetch model for the view May have other server communication needs as well (e.g. authentication
More informationQuestions answered in this lecture: CS 537 Lecture 19 Threads and Cooperation. What s in a process? Organizing a Process
Questions answered in this lecture: CS 537 Lecture 19 Threads and Cooperation Why are threads useful? How does one use POSIX pthreads? Michael Swift 1 2 What s in a process? Organizing a Process A process
More informationKaazing Gateway: An Open Source
Kaazing Gateway: An Open Source HTML 5 Websocket Server Speaker Jonas Jacobi Co-Founder: Kaazing Co-Author: Pro JSF and Ajax, Apress Agenda Real-Time Web? Why Do I Care? Scalability and Performance Concerns
More information10/18/2017. Announcements. NoSQL Motivation. NoSQL. Serverless Architecture. What is the Problem? Database Systems CSE 414
Announcements Database Systems CSE 414 Lecture 11: NoSQL & JSON (mostly not in textbook only Ch 11.1) HW5 will be posted on Friday and due on Nov. 14, 11pm [No Web Quiz 5] Today s lecture: NoSQL & JSON
More informationCloud Programming on Java EE Platforms. mgr inż. Piotr Nowak
Cloud Programming on Java EE Platforms mgr inż. Piotr Nowak Distributed data caching environment Hadoop Apache Ignite "2 Cache what is cache? how it is used? "3 Cache - hardware buffer temporary storage
More informationBuilding mobile app using Cordova and AngularJS, common practices. Goran Kopevski
Building mobile app using Cordova and AngularJS, common practices Goran Kopevski Agenda What is cordova? How to choose proper JS framework Building mobile app using Cordova and AngularJS Common fails,
More informationJava vs JavaScript. For Enterprise Web Applications. Chris Bailey IBM Runtime Technologies IBM Corporation
Java vs JavaScript For Enterprise Web Applications Chris Bailey IBM Runtime Technologies 1 What Languages do you use? 120 Percentage of Audience 100 80 60 40 20 0 Java 2 JavaScript Both What Runtimes do
More informationJquery.ajax Call Returns Status Code Of 200 But Fires Jquery Error
Jquery.ajax Call Returns Status Code Of 200 But Fires Jquery Error The request returns http 200 OK, but the xhr status is 0, error. jquery Ajax Request to get JSON data fires error event to make an ajax
More informationA demo Wakanda solution (containing a project) is provided with each chapter. To run a demo:
How Do I About these examples In the Quick Start, you discovered the basic principles of Wakanda programming: you built a typical employees/companies application by creating the datastore model with its
More informationCS 498RK FALL RESTFUL APIs
CS 498RK FALL 2017 RESTFUL APIs Designing Restful Apis blog.mwaysolutions.com/2014/06/05/10-best-practices-for-better-restful-api/ www.vinaysahni.com/best-practices-for-a-pragmatic-restful-api Resources
More informationJS Event Loop, Promises, Async Await etc. Slava Kim
JS Event Loop, Promises, Async Await etc Slava Kim Synchronous Happens consecutively, one after another Asynchronous Happens later at some point in time Parallelism vs Concurrency What are those????
More informationReal-Time SignalR. Overview
Real-Time SignalR Overview Real-time Web applications feature the ability to push server-side content to the connected clients as it happens, in real-time. For ASP.NET developers, ASP.NET SignalR is a
More informationCopyright 2012, Oracle and/or its affiliates. All rights reserved.
1 ADF Mobile The Data Layer 2 Mobile Device Device Services ADF Mobile Architecture Device Native Container HTML5 & JavaScript Presentation Phone Gap Native View ADF Mobile XML View ADF Controller Local
More informationJKO Content Development Kit
Handset Developer Guide Version 2.1 JKO Content Development Kit JKO Content Development Kit JKO Content Development Kit JKO Content Development Kit 12 November 2012 https://connect.tribalgroup.com/image%20library/forms/allitems.aspx?rootfolder=%2fimage
More informationTime Series Live 2017
1 Time Series Schemas @Percona Live 2017 Who Am I? Chris Larsen Maintainer and author for OpenTSDB since 2013 Software Engineer @ Yahoo Central Monitoring Team Who I m not: A marketer A sales person 2
More informationReplication features of 2011
FOSDEM 2012 Replication features of 2011 What they were How to get them How to use them Sergey Petrunya MariaDB MySQL Replication in 2011: overview Notable events, chronologically: MySQL 5.5 GA (Dec 2010)
More informationLab 3: Using Worklight Server and Environment Optimization Lab Exercise
Lab 3: Using Worklight Server and Environment Optimization Lab Exercise Table of Contents Lab 3 Using the Worklight Server and Environment Optimizations... 3-4 3.1 Building and Testing on the Android Platform...3-4
More informationManjunath Subburathinam Sterling L2 Apps Support 11 Feb Lessons Learned. Peak Season IBM Corporation
Manjunath Subburathinam Sterling L2 Apps Support 11 Feb 2014 Lessons Learned Peak Season Agenda PMR Distribution Learnings Sterling Database Miscellaneous 2 PMR Distribution Following are the areas where
More information5 System architecture
5 System architecture This chapter provides an overview of the system architecture. The first section presents a superficial explanation of the entire systems architecture. In section two, architectural
More informationWeb Application Development Using Spring, Hibernate and JPA
Web Application Development Using Spring, Hibernate and JPA Duration: 5 Days US Price: $2795 UK Price: 1,995 *Prices are subject to VAT CA Price: CDN$3,275 *Prices are subject to GST/HST Delivery Options:
More informationBuilding Native Mapping Apps with PhoneGap: Advanced Techniques Andy
Building Native Mapping Apps with PhoneGap: Advanced Techniques Andy Gup @agup Agenda Application life-cycle Working with UI frameworks Security Geolocation Offline Expectations Experience with PhoneGap
More informationWhy Discuss JavaScript? CS312: Programming Languages. Lecture 21: JavaScript. JavaScript Target. What s a Scripting Language?
Why Discuss JavaScript? CS312: Programming Languages Lecture 21: JavaScript Thomas Dillig JavaScript is very widely used and growing Any AJAX application heavily relies on JavaScript JavaScript also has
More informationNODE.JS SERVER SIDE JAVASCRIPT. Introduc)on Node.js
NODE.JS SERVER SIDE JAVASCRIPT Introduc)on Node.js Node.js was created by Ryan Dahl starting in 2009. For more information visit: http://www.nodejs.org 1 What about Node.js? 1. JavaScript used in client-side
More informationFREQUENTLY ASKED QUESTIONS ABOUT CLASS LOGISTICS AND TELECONFERENCE TECHNOLOGY
FREQUENTLY ASKED QUESTIONS ABOUT CLASS LOGISTICS AND TELECONFERENCE TECHNOLOGY 1. CAN I GET CEUS FOR TAKING LLA? A: LLA has been approved for Continuing Education Credits (CEUs) by a variety of professional
More informationSALESFORCE DMP SUPERTAG USER GUIDE 00. SuperTag User Guide VER. 2, UPDATED 1/16. Rights Reserved, Proprietary &
SALESFORCE DMP SUPERTAG USER GUIDE 00 SuperTag User Guide VER. 2, UPDATED 1/16 SALESFORCE DMP SUPERTAG USER GUIDE 01 CONTENTS I. Introduction 2 SuperTag Overview 2 Benefits of Managing Tags with SuperTag
More informationOFFLINE MODE OF ANDROID
OFFLINE MODE OF ANDROID APPS @Ajit5ingh ABOUT ME new Presenter( Ajit Singh, github.com/ajitsing, www.singhajit.com, @Ajit5ingh ) AGENDA Why offline mode? What it takes to build an offline mode Architecture
More informationWeb Application Development Using Spring, Hibernate and JPA
Web Application Development Using Spring, Hibernate and JPA Duration: 5 Days Price: 1,995 + VAT Course Description: This course provides a comprehensive introduction to JPA (the Java Persistence API),
More informationContents Getting Started... 3 About Scribe Online and Connectors... 3 Scribe Online Services... 3 CDK Components... 3 Audience... 4 Prerequisites...
Contents Getting Started... 3 About Scribe Online and Connectors... 3 Scribe Online Services... 3 CDK Components... 3 Audience... 4 Prerequisites... 4 Requirements... 4 CDK Workflow... 5 Scribe Online
More informationCS312: Programming Languages. Lecture 21: JavaScript
CS312: Programming Languages Lecture 21: JavaScript Thomas Dillig Thomas Dillig, CS312: Programming Languages Lecture 21: JavaScript 1/25 Why Discuss JavaScript? JavaScript is very widely used and growing
More informationScaling Without Sharding. Baron Schwartz Percona Inc Surge 2010
Scaling Without Sharding Baron Schwartz Percona Inc Surge 2010 Web Scale!!!! http://www.xtranormal.com/watch/6995033/ A Sharding Thought Experiment 64 shards per proxy [1] 1 TB of data storage per node
More information,
Weekdays:- 1½ hrs / 3 days Fastrack:- 1½hrs / Day [Class Room and Online] ISO 9001:2015 CERTIFIED ADMEC Multimedia Institute www.admecindia.co.in 9911782350, 9811818122 Welcome to one of the highly professional
More informationSimple AngularJS thanks to Best Practices
Simple AngularJS thanks to Best Practices Learn AngularJS the easy way Level 100-300 What s this session about? 1. AngularJS can be easy when you understand basic concepts and best practices 2. But it
More informationArchitecting C++ apps
Architecting C++ apps with a multi-device application platform John JT Thomas Director of Product Management jt@embarcadero.com @FireMonkeyPM blogs.embarcadero.com/jtembarcadero/ What is a multi-device
More informationCHAPTER 3 - PROCESS CONCEPT
CHAPTER 3 - PROCESS CONCEPT 1 OBJECTIVES Introduce a process a program in execution basis of all computation Describe features of processes: scheduling, creation, termination, communication Explore interprocess
More information2015 NALIT Professional Development Seminar September 30, Tools for Mobile App Development
2015 NALIT Professional Development Seminar September 30, 2015 Tools for Mobile App Development Kyle Forster, IT Manager North Dakota Legislative Council Mobile App ND Legis Daily Daily legislative agenda
More informationRaima Database Manager Version 14.1 In-memory Database Engine
+ Raima Database Manager Version 14.1 In-memory Database Engine By Jeffrey R. Parsons, Chief Engineer November 2017 Abstract Raima Database Manager (RDM) v14.1 contains an all new data storage engine optimized
More informationProtocol Buffers, grpc
Protocol Buffers, grpc Szolgáltatásorientált rendszerintegráció Service-Oriented System Integration Dr. Balázs Simon BME, IIT Outline Remote communication application level vs. transport level protocols
More information(Partition Map) Exchange - under the hood
(Partition Map) Exchange - under the hood Notes: Contents: Following notation is used: words written in italics and wihout spacing mean class names without package name, for example, GridCache MapEntry
More informationSTARCOUNTER. Technical Overview
STARCOUNTER Technical Overview Summary 3 Introduction 4 Scope 5 Audience 5 Prerequisite Knowledge 5 Virtual Machine Database Management System 6 Weaver 7 Shared Memory 8 Atomicity 8 Consistency 9 Isolation
More informationMarkLogic Server. Database Replication Guide. MarkLogic 6 September, Copyright 2012 MarkLogic Corporation. All rights reserved.
Database Replication Guide 1 MarkLogic 6 September, 2012 Last Revised: 6.0-1, September, 2012 Copyright 2012 MarkLogic Corporation. All rights reserved. Database Replication Guide 1.0 Database Replication
More informationProgramming for Digital Media. Lecture 7 JavaScript By: A. Mousavi and P. Broomhead SERG, School of Engineering Design, Brunel University, UK
Programming for Digital Media Lecture 7 JavaScript By: A. Mousavi and P. Broomhead SERG, School of Engineering Design, Brunel University, UK 1 Topics Ajax (Asynchronous JavaScript and XML) What it is and
More informationPutting together the platform: Riak, Redis, Solr and Spark. Bryan Hunt
Putting together the platform: Riak, Redis, Solr and Spark Bryan Hunt 1 $ whoami Bryan Hunt Client Services Engineer @binarytemple 2 Minimum viable product - the ideologically correct doctrine 1. Start
More informationSystem Workers. 1 of 11
System Workers System workers allow JavaScript code to call any external process (a shell command, PHP, etc.) on the same machine. By using callbacks, Wakanda makes it possible to communicate both ways.
More informationSystemWorker.exec( )
1 28/06/2012 11:18 System workers allow JavaScript code to call any external process (a shell command, PHP, etc.) on the same machine. By using callbacks, Wakanda makes it possible to communicate both
More informationImplementing Oath s CMP JS
Implementing Oath s CMP JS A Guide For Third Party Publishers - V1.1 Table of contents Implementing Oath s CMP JS A Guide For Third Party Publishers - V1.1........ 1 What s new in this version?...............................
More informationMillWheel:Fault Tolerant Stream Processing at Internet Scale. By FAN Junbo
MillWheel:Fault Tolerant Stream Processing at Internet Scale By FAN Junbo Introduction MillWheel is a low latency data processing framework designed by Google at Internet scale. Motived by Google Zeitgeist
More informationCS371m - Mobile Computing. Persistence - Web Based Storage CHECK OUT g/sync-adapters/index.
CS371m - Mobile Computing Persistence - Web Based Storage CHECK OUT https://developer.android.com/trainin g/sync-adapters/index.html The Cloud. 2 Backend No clear definition of backend front end - user
More informationCustom Embedded Tabs, on page 1 Configure Cisco Jabber for Android on Chromebook, on page 8 Cisco Jabber Mobile App Promotion, on page 9
Custom Embedded Tabs, on page 1 Configure Cisco Jabber for Android on Chromebook, on page 8 Cisco Jabber Mobile App Promotion, on page 9 Custom Embedded Tabs Applies to Cisco Jabber for desktop and mobile
More informationCSE506: Operating Systems CSE 506: Operating Systems
CSE 506: Operating Systems Disk Scheduling Key to Disk Performance Don t access the disk Whenever possible Cache contents in memory Most accesses hit in the block cache Prefetch blocks into block cache
More informationDESIGN TRANSFORMATIONAL IPAD APPS
DESIGN TRANSFORMATIONAL IPAD APPS Thank you for participating in a workshop at MicroStrategy World 2019. If you missed or did not finish an exercise and want to complete it after the conference, use this
More informationGuide to Business Continuity Preparedness
Guide to Business Continuity Preparedness Released June 22, 2016 Revised June 6, 2018 duo.com Table of contents 1. Overview Why do I need this guide? Planning for success 2. Types of outages How do I know
More informationUse Page Speed to Optimize Your Web Site for Mobile
Use Page Speed to Optimize Your Web Site for Mobile Bryan McQuade and Libo Song, May 10, 2011 Hashtags: #io2011 #DevTools Feedback: http://goo.gl/ce1zu Page Speed Background Help developers optimize their
More informationSOASTA (mpulse )
SOASTA 55.1.2 (mpulse 7950.23.1022) August 7, 2015 Table of Contents SOASTA 55.1.2 (mpulse 7950.23.1022)... 1 SOASTA 55 (mpulse 7950.24.1)... 2 Features... 2 Bugs Fixed... 3 SOASTA 55.1.2 (mpulse 7950.23.1022)
More informationSupport Offline Mobile Web Apps with HTML5 API's
Support Offline Mobile Web Apps with HTML5 API's Kim Dalsgaard @kimdalsgaard Application Cache Local Storage Web SQL Database Indexed Database Application Cache Offline Web applications From the specification
More informationDistributed File Systems II
Distributed File Systems II To do q Very-large scale: Google FS, Hadoop FS, BigTable q Next time: Naming things GFS A radically new environment NFS, etc. Independence Small Scale Variety of workloads Cooperation
More informationRESTful APIs ECS 189 WEB PROGRAMMING. Browser s view. Browser s view. Browser s view. Browser s view. Which will It be for photobooth?
RESTful APIs ECS 189 WEB PROGRAMMING 5/19! We re implementing what is called a RESTful API! ReST stands for representational state transfer! The term was coined in 2000 by Roy Fielding, who at the time
More informationUsing Web Workers to Improve the Performance of Metro HTML5- JavaScript* Apps
Using Web Workers to Improve the Performance of Metro HTML5- JavaScript* Apps Objective This article provides an introduction on how to use web workers inside HTML5-JavaScript* Metro apps. We will discuss
More informationManual Trigger Sql Server 2008 Examples Insert Update
Manual Trigger Sql Server 2008 Examples Insert Update blog.sqlauthority.com/2011/03/31/sql-server-denali-a-simple-example-of you need to manually delete this trigger or else you can't get into master too
More informationThis tutorial is intended to make you comfortable in getting started with the Firebase backend platform and its various functions.
Firebase About the Tutorial Firebase is a backend platform for building Web, Android and IOS applications. It offers real time database, different APIs, multiple authentication types and hosting platform.
More informationYour Speakers. Iwan e1 Rahabok Linkedin.com/in/e1ang
Your Speakers Iwan e1 Rahabok virtual-red-dot.info e1@vmware.com @e1_ang Linkedin.com/in/e1ang 9119 9226 Sunny Dua vxpresss.blogspot.com duas@vmware.com @sunny_dua Linkedin.com/in/duasunny 2 Need more
More information