The Reactor Model: An Experiment in Declarative Concurrent Programming
|
|
- Richard Hines
- 6 years ago
- Views:
Transcription
1 The Reactor Model: An Experiment in Declarative Concurrent Programming *John Field (IBM Research) Maria-Cristina Marinescu (U. Carlos III, Madrid) Christian Stefansen (Google) Datalog 2.0, Oxford 17 March 2010
2 Do these apps have anything in common? cloud-based web 2.0 embedded network real-time data analysis
3 Yes. collection of distributed, concurrent components components are loosely coupled by messages, persistent data irregular concurrency, driven by realworld data ( reactive ) high data volumes fault-tolerance important
4 Why this is hard: an AJAX parable Zip Database City ZIP code Submit State Zip Lookup Servlet Merchant Credit Server Credit Card Number Submit Form + JScript Code Form Submission Servlet User Credit Servers
5 Web programming: state of the art requires extensive rewriting when moving applications between tiers or updating functionalty; doesn t compose, scale well babble of languages same logical data; many different physical representations <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" " function gethttpobject() { xhtml1/dtd/xhtml1-strict.dtd"> var xmlhttp; <html xmlns=" > <?php /*@cc_on <head> (@_jscript_version >= 5) <title>zip Code to City and State * using Connects XmlHttpRequest</title> to the database. try { <script language="javascript" type="text/javascript"> * Return false if connection failed. xmlhttp = new ActiveXObject("Msxml2.XMLHTTP"); var url = "getcitystate.php?param="; */ // The server-side script } catch (e) { function handlehttpresponse() { function db_connect() { try { if (http.readystate == 4) { $database_name = 'mysql'; // Set this to your Database Name xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); if (http.responsetext.indexof('invalid') == -1) { $database_username = 'root'; // Set this to your MySQL username } catch (E) { // Use the XML DOM to unpack the city and state data # $database_password = ''; // Set this to your MySQL password xmlhttp = false; var xmldocument = http.responsexml; # Table structure for table `zipcodes` $result = mysql_pconnect('localhost',$database_username, $database_password); } var city = xmldocument.getelementsbytagname('city').item(0).firstchild.data; # if (!$result) return false; } var state = xmldocument.getelementsbytagname('state').item(0).firstchild.data; if (!mysql_select_db($database_name)) return document.getelementbyid('city').value = city; CREATE TABLE `zipcodes` ( return $result; xmlhttp = false; document.getelementbyid('state').value = state; `zipcode` mediumint(9) NOT '0', } isworking = false; $conn = db_connect(); // Connect to `city` database tinytext NOT NULL, if (!xmlhttp && typeof XMLHttpRequest!= 'undefined') { } if ($conn) { `state` char(2) NOT NULL default '', try { } $zipcode = $_GET['param']; // The `areacode` parameter smallint(6) passed to us NOT NULL default xmlhttp '0', = new XMLHttpRequest(); } $query = "select * from zipcodes PRIMARY where zipcode KEY (`zipcode`), = '$zipcode'"; xmlhttp.overridemimetype("text/xml"); var isworking = false; $result = mysql_query($query,$conn); UNIQUE KEY `zipcode_2` (`zipcode`), } catch (e) { function updatecitystate() { $count = mysql_num_rows($result); KEY `zipcode` (`zipcode`) xmlhttp = false; if (!isworking && http) { if ($count > 0) { ) TYPE=MyISAM; } var zipvalue = document.getelementbyid("zip").value; $city = mysql_result($result,0,'city'); } http.open("get", url + escape(zipvalue), true); $state = mysql_result($result,0,'state'); return xmlhttp; http.onreadystatechange = handlehttpresponse; } } isworking no = true; notion of } var http = gethttpobject(); // We create the HTTP Object http.send(null); if (isset($city) && isset($state)) { </script> } component // $return_value = $city. ",". $state; </head> } $return_value = '<?xml version="1.0" standalone="yes"?><zip><city>'.$city.'</city><state>'.$state.'</state></zip>'; <body> } <form action="post"> interface for fragile plumbing else { <p> $return_value = "invalid".",".$_get['param']; // Include Zip for debugging ZIP code: purposes composition } <input type="text" size="5" name="zip" id="zip" onblur="updatecitystate();" /> header('content-type: text/xml'); </p> echo $return_value; // This will become the response value for the XMLHttpRequest City: object?>6 <input type="text" name="city" id="city" /> State: <input type="text" size="2" name="state" id="state" /> </form> </body> </html> required to compose
6 A prettier picture: app composed from encapsulated, distributed components FormController ZipController DB InputWidget (city) InputWidget (card) SessionController Acct (merchant) InputWidget (state) ButtonWidget (next) InputWidget (zip) Acct (user) Acct ButtonWidget (submit) Acct
7 Web apps just one instance of reactive distributed applications have distributed control integrate front-end, back-end, and database data typically combine presentation logic, business logic, data query and access functionality can evolve and migrate between tiers dynamic instantiation of logical processes complex failure modes
8 Our (long-term) goals develop programming models for reactive distributed applications which have same model for presentation, business logic, data access simplify composition, evolution, and application maintenance target applications: web applications, distributed business applications, software supply chains this talk: initial experiments on a highly declarative model for this class of application some ideas have been incorporated in more recent work on a new scripting language for distributed applications (Thorn)
9 Reactors: key attributes Synthesis of ideas from synchronous languages: event handling, synchronization datalog: expressive data query language NB: here we are using datalog for computation, not just query actor model: simple model for dynamic creation of processes, asynchronous process interaction transactions: system evolves (only) from consistent state to consistent state concurrent computations isolated from one another XForms: declarative specification of web forms
10 Basic reactor: database with external updates Δ + : (1, 5667, 2) Δ - : (1, 2344, 4) Δ + : (1, 5667, 2) Δ + : (5, 9364, 2) (1, 1277, 3) Δ - : (1, 2344, 4) (1, 1277, 3) Δ + : (1, 5667, 2) (1, 1277, 3) update bundle Δ + : additions Δ - : deletions (3, 7623, 7) (1, 2344, 4) s 0 (3, 7623, 7) (1, 2344, 4) (5, 9634, 2) s 1 (3, 7623, 7) (5, 9634, 2) s 2 time reactor encapsulates state in the form of fixed set of relations (sets of tuples) each update is a bundle of additions (Δ + ) and deletions (Δ - ), applied atomically Δ + and Δ - must be disjoint state updates arrive asynchronously, and are queued in most basic form of reaction, updates simply applied to previous state (s i-1 ) to yield new state (s i )
11 Inside a reaction: stimulus and response stimulus state response state (1, 1277, 3) Δ + : (5, 9364, 2) (1, 1277, 3) (1, 1277, 3) (3, 7623, 7) (3, 7623, 7) (3, 7623, 7) (1, 2344, 4) (1, 2344, 4) (1, 2344, 4) (5, 9634, 2) (5, 9634, 2) S i-1 ^s i s i ^s i+1 Mi-1 Mi Mi+1 time s i (response state): observable state of reaction i ^s i (stimulus state): result of applying update to s i -1 ( pre-state ) in the absence of any computational rules, s i = ^s i
12 Adding computation via rules -r ^r r ^s 0 s 0 ^s 1 s 1 ^s 2 s 2 rules...-r......^r......r... reaction s computation defined using datalog-style rules rules define value of each relation r, s,... as function of r, -s,... (pre-state values: values of r, s,... in previous reaction) ^r, ^s,... (stimulus values: result of applying update bundle to r, -s,...) r, s,... (can appear recursively in rules) reactor computation (reaction) is atomic: intermediate states of rule evaluation not visible to other reactors
13 only public relations can be updated from outside Reactor rule evaluation public orders: (int, int, int). log: (int, int, int). public ephemeral updatelog: (). contents of ephemeral relations do not persist between reactions public ephemeral relations can be used to model events log(orderid, itemid, qty) <- orders(orderid, itemid, qty). qty), updatelog(). not log(orderid, itemid, qty) <- not orders(orderid, itemid, qty). LHS negation denotes deletion rules evaluated whenever state is updated no change made to relation unless necessary to satisfy a rule semantics ensures unique solution rule declaration order irrelevant easy to compose rules to yield new functionality without concern for data or control dependencies ( aspect -like) extension of standard datalog semantics as usual, negation requires care
14 Multiple reactors R 1 : R 2 : R 3 : reactor s computation can generate new state updates for other reactors or the same reactor and can dynamically instantiate new reactors
15 Reactor references DB rdatabase: (ref DB).... rdatabase(new) <-... db.order(...) <- rdatabase(db), relations may contain references to other reactors reactors may be instantiated dynamically rules may refer to relations of remote reactors via references
16 Asynchronous interaction via future state (r^) -r ^r r r^ ^s 0 s 0 ^s 1 s 1 ^s 2 s 2...-r......^r......r......r^... future state value: r^ r^ defines asynchronous state updates (to this or other reactors via references) rules compute r^ as function of r, -r, ^r
17 Running example: order entry application asynchronous interaction synchronous interaction City ZIP code Next State Zip Lookup Servlet Zip Database synchronous interaction Merchant Credit Server Form + JScript Code Credit Card Number Submit synchronous interaction Form + JScript Code asynchronous interaction Form Submission Servlet User Credit Servers
18 Running example: order entry application City State ZIP code Submit Form + JScript Code Form Submission Servlet
19 Order entry: validation and FormController submission reactor references for composition InputWidget (city) Δ + SessionController InputWidget (state) Δ + Δ + Δ + InputWidget (zip) asynchronous request from FormController Δ + ButtonWidget (submit) asynchronous user inputs
20 references to UI widgets and session server FormController Order entry: validation and rcity: (ref InputWidget). rstate: (ref InputWidget). rzip: (ref InputWidget). rsubmit: (ref ButtonWidget). rsession: (ref SessionController). submission (private) ephemeral relation holds result of validation for current reaction only ButtonWidget (submit) nullary ephemeral relation used to model UI events ephemeral validated: (string, string, string). public ephemeral buttonpressed: () validated(z, c, s) <- zw.val(z), cw.val(c), sw.val(s), z <> "", c <> "", s <> "", rzip(zw), rcity(cw), rstate(sw). sc.commitorder^(z, c, s) <- buttonpressed(sb), validated(z, c, s), rsubmit(sb), rsession(sc). SessionController... public ephemeral commitorder: (string, string, string).... references to relations of remote reactors set of listeners that are notified when button pressed reference to future state of remote reference: spawns asynchronous reaction public label: (string). public listeners: (ref FormController) public ephemeral pressed: (). rf,buttonpressed(self) <- listeners(rf), pressed(). InputWidget (zip) public label: (string). public val: label: (string). (string). public val: label: (string). (string). public val: (string). public ephemeral filled: (). public ephemeral filled: (). public ephemeral filled: ()
21 Running example: order entry application Zip Database City ZIP code Next State Zip Lookup Servlet Form + JScript Code Form Submission Servlet
22 Order entry: adding AJAX -style asynchronous response from AjaxController asynchronous request from FormController zip lookup database accessed synchronously with receipt of request Δ + FormController Δ + AjaxController DB InputWidget (city) SessionController InputWidget (state) InputWidget (zip) ButtonWidget (submit) widgets updated synchronously with response
23 Order entry: adding AJAX -style FormController... rajax: (ref AjaxController). zip lookup public ephemeral formfilled: () public ephemeral lookupresult: (string, string). zc.lookupreq^(z, self) <- formfilled(zw), zw.val(z), rzip(zw), rajax(ac). cw.val(c), sw.val(s) <- loookupresult(c, s), rcity(cw), rstate(sw).... InputWidget (zip) when zip field is filled, asynchronous lookup public label: (string). request made public to val: label: (string). (string). AjaxController public val: label: (string). (string). public val: (string). public ephemeral filled: (). public ephemeral filled: (). public ephemeral filled: () AjaxController rdatabase: (ref DB). public ephemeral lookupreq: (string, ref FormController). when response received, widget fields are updated fc.lookupresult^(c, s) <- lookupreq(z, fc), db(z, c, s), rdatabase(db). DB response sent asynchronously after DB lookup public zipcitystate: (string, string, string).
24 Running example: order entry application Zip Database City ZIP code Next State Zip Lookup Servlet Merchant Credit Server Credit Card Number Submit Form + JScript Code Form Submission Servlet User Credit Servers
25 Order entry: dynamic widget instantiation FormController ZipController DB InputWidget (city) InputWidget (card) SessionController InputWidget (state) ButtonWidget (next) InputWidget (zip) ButtonWidget (submit) dynamically instantiate new widgets when next button pressed
26 Order entry: dynamic widget instantiation FormController new widgets instantiated when next button pressed... rnext: (ref ButtonWidget) rcard: (ref InputWidget). rsubmit: (ref ButtonWidget). old widget reference removed... City State rcard(new), rsubmit(new), not rnext(_) <- buttonpressed(nb), validated(_,_,_), -rnext(nb). sc.commitorder^(z, c, s, cc) <- buttonpressed(sb), rsubmit(sb) validated(z, c, s), cw.val(cc), cc <> "", rcard(cw) rsession(sc). NB: must refer to prestate to ensure stratification ZIP code Next Credit Card Number Submit Form + JScript Code... commitorder now validates and sends credit card info
27 Order entry: adding synchronous / atomic account transfer FormController ZipController DB InputWidget (city) InputWidget (card) SessionController Acct (merchant) InputWidget (state) ButtonWidget (next) InputWidget (zip) ButtonWidget (submit) transfer between user and merchant accts must occur synchronously and atomically Acct (user) Acct Acct
28 Order entry: adding synchronous / atomic account transfer SessionController Acct (merchant)... cardaccts: (ref Acct, string). rmerchantacct: (ref Acct). ordertotal: (int). ephemeral ruseracct: (ref Acct). ruseracct(ua) <- commitorder(_,_,_,cc), cardaccts(ua, cc). ua.balance(b - amt) := ua.-balance(b), ordertotal(amt), commitorder(_,_,_,_), ruseracct(ua). ma.balance(b + amt) := ma.-balance(b), ordertotal(amt), commitorder(_,_,_,_), rmerchantacct(ma). syntactic sugar for asserting new value; retracting old value for singleton cell predicate FAIL is syntactic sugar for a predefined inconsistency, hence can be used to define consistency constraints public balance: (int). FAIL <- balance(x), balance(y), x <> y. FAIL <- balance(x), x < 0. Acct (user) Acct (user) examples of inconsistent rules: r(...) <-. not r(...) <-. such rules are mutually unsatisfiable public balance: (int). public balance: (int). public balance: (int). FAIL <- balance(x), balance(y), FAIL x <> <- y. balance(x), balance(y), FAIL FAIL x <- <> balance(x), <- y. balance(x), x < balance(y), 0. FAIL x <- <> balance(x), y. x < 0. FAIL <- balance(x), x < 0. reactions that yield inconsistency roll back to pre-state
29 Reactor semantics: some issues (I) Handling reactor references: given reference of form c.r(x) <-... rewrite as r (c, x) <-... Head negation: compute positive and negative information separately explicitly check for consistency before committing result translate rules to datalog with goal (rhs) negation only Rules required to be stratified to ensure unique solution stratification check must account for remote references
30 Reactor semantics: some issues (II) Scope extrusion semantics for composite synchronous reactions defines which reactor instances are affected scope of reaction extrudes to reactor R whenever another reaction attempts to write to response state of relation of R Optimistic concurrency control composite reactions operate on snapshots of reactor state reaction rolls back, update re-queued if states of reactors have changed prior to commitment Reactor instantiation: in each reaction... for each new instance in rule head......generate a globally unique reference for each combination of values bound to variables in the rules modeled using functors
31 Related work actor model transactional languages (Argus, Camelot) synchronous languages (Esterel, Lustre, Signal,...) concurrent constraint programming process calculi (Pi calculus, Join calculus, Ambient calculus,...) tierless web programming models (Links, Hop, Google Web Toolkit...) stream-oriented web programming models (Flapjax,...) modern relational databases (triggers, constraints,...) various web services standards event-condition-action rules Axml <your missing reference goes here>
32 Review data, rather than ports or channels as interface to process expressive data query and transformation declarative, data-driven, compositional specification of functionality in an ``aspect-like'' manner constraints/assertions expressible in core language synchronous and asynchronous interaction in same model simple transactional model dynamic process creation
33 Details Theoretical Computer Science 09
34 Questions?
35 Head Negation public orders: (int, int, int). log: (int, int, int) log(id, itemid, qty) <- orders(id, itemid, qty). not log(id, itemid, qty) <- not orders(id, itemid, qty). transforms to (roughly) public orders: (int, int, int). log: (int, int, int) ephemeral ordersδ + : (int, int, int). ephemeral ordersδ - : (int, int, int). ephemeral logδ + : (int, int, int). ephemeral logδ - : (int, int, int). logδ + (id, itemid, qty) <- ^orders(id, itemid, qty), ordersδ + (id, itemid, qty). logδ - (id, itemid, qty) <- not ^orders(id, itemid, qty), ^log(id, itemid, qty), not ordersδ + (id, itemid, qty). if (logδ + logδ = ) then log := ^log logδ + \ logδ +
36 Reactor syntax REACTOR ::= def reactor-type-name = { {DECL.}* } ENUM ::= enum enum-type-name = { {atom-name,}+ } DECL ::= ( RELATION-DECL RULE-DECL ). RELATION-DECL ::= [public public write public read] [ephemeral] rel-name : ( {TYPE,}* ) RULE-DECL ::= HEAD-CLAUSE <- {BODY-CLAUSE,}+ HEAD-CLAUSE ::= [not] [var-name.]rel-name[^] ( {(_ var-name),}* ) BODY-CLAUSE ::= [not][var-name.][^ -]rel-name ( {(_ var-name),}* ) BASIC-PREDICATE BASIC-PREDICATE ::= EXP (< > <> =) EXP TYPE ::= int string enum-type-name ref reactor-type-name EXP ::= var-name NUMERIC-LITERAL STRING-LITERAL EXP (+ - * / %) EXP new reactor-name self
Ajax Simplified Nicholas Petreley Abstract Ajax can become complex as far as implementation, but the concept is quite simple. This is a simple tutorial on Ajax that I hope will ease the fears of those
More informationThorn: From Scripting to Robust Concurrent Components
Thorn: From Scripting to Robust Concurrent Components IBM Research Bard Bloom John Field* Nate Nystrom Purdue Brian Burg Johan Östlund Gregor Richards Jan Vitek Tobias Wrigstad Cambridge Rok Strniša JAOO
More informationTHE VERSATILE ACTOR: TOWARD COMPOSITIONAL PROGRAMMING OF DISTRIBUTED APPLICATIONS
THE VERSATILE ACTOR: TOWARD COMPOSITIONAL PROGRAMMING OF DISTRIBUTED APPLICATIONS PsiEta 2010 John Field, IBM Research 2010 IBM Collaborators 2 Actors Carlos Varela Thorn Bard Bloom Brian Burg Jakob Dam
More informationJavaScript + PHP AJAX. Costantino Pistagna
JavaScript + PHP AJAX Costantino Pistagna What s is Ajax? AJAX is not a new programming language It s a new technique for better and faster web applications. JavaScript can communicate
More informationUse of PHP for DB Connection. Middle and Information Tier. Middle and Information Tier
Use of PHP for DB Connection 1 2 Middle and Information Tier PHP: built in library functions for interfacing with the mysql database management system $id = mysqli_connect(string hostname, string username,
More informationUse of PHP for DB Connection. Middle and Information Tier
Client: UI HTML, JavaScript, CSS, XML Use of PHP for DB Connection Middle Get all books with keyword web programming PHP Format the output, i.e., data returned from the DB SQL DB Query Access/MySQL 1 2
More informationUr/Web: A Simple Model for Programming the Web. Adam Chlipala MIT CSAIL POPL 2015 January 15, 2015
Ur/Web: A Simple Model for Programming the Web Adam Chlipala MIT CSAIL POPL 2015 January 15, 2015 Ur / Web Ur A new general-purpose typed functional language λ Web Tools for implementing modern three-tier
More informationCreate-A-Page Design Documentation
Create-A-Page Design Documentation Group 9 C r e a t e - A - P a g e This document contains a description of all development tools utilized by Create-A-Page, as well as sequence diagrams, the entity-relationship
More informationCollage: A Declarative Programming Model for Compositional Development and Evolution of Cross-Organizational Applications
Collage: A Declarative Programming Model for Compositional Development and Evolution of Cross-Organizational Applications Bruce Lucas, IBM T J Watson Research Center (bdlucas@us.ibm.com) Charles F Wiecha,
More informationAJAX and PHP AJAX. Christian Wenz,
AJAX and PHP Christian Wenz, AJAX A Dutch soccer team A cleaner Two characters from Iliad A city in Canada A mountain in Colorado... Asynchronous JavaScript + XML 1 1 What is AJAX?
More informationWritten Presentation: JoCaml, a Language for Concurrent Distributed and Mobile Programming
Written Presentation: JoCaml, a Language for Concurrent Distributed and Mobile Programming Nicolas Bettenburg 1 Universitaet des Saarlandes, D-66041 Saarbruecken, nicbet@studcs.uni-sb.de Abstract. As traditional
More informationJava SE7 Fundamentals
Java SE7 Fundamentals Introducing the Java Technology Relating Java with other languages Showing how to download, install, and configure the Java environment on a Windows system. Describing the various
More informationJavaScript CS 4640 Programming Languages for Web Applications
JavaScript CS 4640 Programming Languages for Web Applications 1 How HTML, CSS, and JS Fit Together {css} javascript() Content layer The HTML gives the page structure and adds semantics Presentation
More informationAn Introduction to AJAX. By : I. Moamin Abughazaleh
An Introduction to AJAX By : I. Moamin Abughazaleh How HTTP works? Page 2 / 25 Classical HTTP Process Page 3 / 25 1. The visitor requests a page 2. The server send the entire HTML, CSS and Javascript code
More informationXMLHttpRequest. CS144: Web Applications
XMLHttpRequest http://oak.cs.ucla.edu/cs144/examples/google-suggest.html Q: What is going on behind the scene? What events does it monitor? What does it do when
More informationJavaScript CS 4640 Programming Languages for Web Applications
JavaScript CS 4640 Programming Languages for Web Applications 1 How HTML, CSS, and JS Fit Together {css} javascript() Content layer The HTML gives the page structure and adds semantics Presentation
More informationajax1.html 1/2 lectures/7/src/ ajax1.html 2/2 lectures/7/src/
ajax1.html 1/2 3: ajax1.html 5: Gets stock quote from quote1.php via Ajax, displaying result with alert(). 6: 7: David J. Malan 8: Dan Armendariz 9: Computer Science E-75 10: Harvard Extension School 11:
More informationAjax Application Design
Ajax Application Design Reuven M. Lerner Abstract Asynchronous is the operative word with Ajax, and here's what it's all about. During the past few months, I've used this column to explore a number of
More informationTransactum Business Process Manager with High-Performance Elastic Scaling. November 2011 Ivan Klianev
Transactum Business Process Manager with High-Performance Elastic Scaling November 2011 Ivan Klianev Transactum BPM serves three primary objectives: To make it possible for developers unfamiliar with distributed
More informationCSC 405 Computer Security. Web Security
CSC 405 Computer Security Web Security Alexandros Kapravelos akaprav@ncsu.edu (Derived from slides by Giovanni Vigna and Adam Doupe) 1 The XMLHttpRequest Object Microsoft developers working on Outlook
More informationAt the Forge Beginning Ajax Reuven M. Lerner Abstract How to put the A (asynchronous) in Ajax. Many programmers, myself included, have long seen JavaScript as a way to change the appearance of a page of
More informationEnterprise Software Architecture & Design
Enterprise Software Architecture & Design Characteristics Servers application server, web server, proxy servers etc. Clients heterogeneous users, business partners (B2B) scale large number of clients distributed
More informationAn Introduction to Software Architecture. David Garlan & Mary Shaw 94
An Introduction to Software Architecture David Garlan & Mary Shaw 94 Motivation Motivation An increase in (system) size and complexity structural issues communication (type, protocol) synchronization data
More informationExecutive Summary. It is important for a Java Programmer to understand the power and limitations of concurrent programming in Java using threads.
Executive Summary. It is important for a Java Programmer to understand the power and limitations of concurrent programming in Java using threads. Poor co-ordination that exists in threads on JVM is bottleneck
More informationXAP: extensible Ajax Platform
XAP: extensible Ajax Platform Hermod Opstvedt Chief Architect DnB NOR ITUD Hermod Opstvedt: XAP: extensible Ajax Platform Slide 1 It s an Ajax jungle out there: XAML Dojo Kabuki Rico Direct Web Remoting
More informationAjax Ajax Ajax = Asynchronous JavaScript and XML Using a set of methods built in to JavaScript to transfer data between the browser and a server in the background Reduces the amount of data that must be
More informationIntroduction to Scheme
How do you describe them Introduction to Scheme Gul Agha CS 421 Fall 2006 A language is described by specifying its syntax and semantics Syntax: The rules for writing programs. We will use Context Free
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 informationContents. Demos folder: Demos\14-Ajax. 1. Overview of Ajax. 2. Using Ajax directly. 3. jquery and Ajax. 4. Consuming RESTful services
Ajax Contents 1. Overview of Ajax 2. Using Ajax directly 3. jquery and Ajax 4. Consuming RESTful services Demos folder: Demos\14-Ajax 2 1. Overview of Ajax What is Ajax? Traditional Web applications Ajax
More informationIntroduction to Ajax
Introduction to Ajax with Bob Cozzi What is AJAX? Asynchronous JavaScript and XML A J a X Asynchronous data retrieval using the XMLHttpRequest object from JavaScript Data is retrieved from the server as
More informationFunctional Programming. Pure Functional Languages
Functional Programming Pure functional PLs S-expressions cons, car, cdr Defining functions read-eval-print loop of Lisp interpreter Examples of recursive functions Shallow, deep Equality testing 1 Pure
More informationWHY WE NEED AN XML STANDARD FOR REPRESENTING BUSINESS RULES. Introduction. Production rules. Christian de Sainte Marie ILOG
WHY WE NEED AN XML STANDARD FOR REPRESENTING BUSINESS RULES Christian de Sainte Marie ILOG Introduction We are interested in the topic of communicating policy decisions to other parties, and, more generally,
More informationType of Classes Nested Classes Inner Classes Local and Anonymous Inner Classes
Java CORE JAVA Core Java Programing (Course Duration: 40 Hours) Introduction to Java What is Java? Why should we use Java? Java Platform Architecture Java Virtual Machine Java Runtime Environment A Simple
More informationAjax. Ronald J. Glotzbach
Ajax Ronald J. Glotzbach What is AJAX? Asynchronous JavaScript and XML Ajax is not a technology Ajax mixes well known programming techniques in an uncommon way Enables web builders to create more appealing
More informationCSE 130 Programming Language Principles & Paradigms Lecture # 20. Chapter 13 Concurrency. + AJAX Discussion
Chapter 13 Concurrency + AJAX Discussion Introduction Concurrency can occur at four levels: Machine instruction level (Processor) High-level language statement level Unit level Program level (OS) Because
More informationHow browsers talk to servers. What does this do?
HTTP HEADERS How browsers talk to servers This is more of an outline than a tutorial. I wanted to give our web team a quick overview of what headers are and what they mean for client-server communication.
More informationAjax Ajax Ajax = Asynchronous JavaScript and XML Using a set of methods built in to JavaScript to transfer data between the browser and a server in the background Reduces the amount of data that must be
More informationModule 5 JavaScript, AJAX, and jquery. Module 5. Module 5 Contains 2 components
Module 5 JavaScript, AJAX, and jquery Module 5 Contains 2 components Both the Individual and Group portion are due on Monday October 30 th Start early on this module One of the most time consuming modules
More informationWorld Wide Web PROGRAMMING THE PEARSON EIGHTH EDITION. University of Colorado at Colorado Springs
PROGRAMMING THE World Wide Web EIGHTH EDITION ROBERT W. SEBESTA University of Colorado at Colorado Springs PEARSON Boston Columbus Indianapolis New York San Francisco Upper Saddle River Amsterdam Cape
More informationquiz 1 details wed nov 17, 1pm see handout for locations covers weeks 0 through 10, emphasis on 7 onward closed book bring a , 2-sided cheat she
quiz 1 details wed nov 17, 1pm see handout for locations covers weeks 0 through 10, emphasis on 7 onward closed book bring a 8.5 11, 2-sided cheat sheet 75 minutes 15% of final grade resources old quizzes
More informationMediaCMD HTTP/Ajax Interface
MediaCMD HTTP/Ajax Interface (c) copyright 1998-2018 Drastic Technologies Ltd. All Rights Reserved. www.drastic.tv 1 MediaCMD HTTP/Ajax Interface...1 Overview...4 Full MediaCmd Ajax/XML Access...5 VVWXMLMediaCmd
More informationSoftware Architecture and Engineering: Part II
Software Architecture and Engineering: Part II ETH Zurich, Spring 2016 Prof. http://www.srl.inf.ethz.ch/ Framework SMT solver Alias Analysis Relational Analysis Assertions Second Project Static Analysis
More informationModule7: AJAX. Click, wait, and refresh user interaction. Synchronous request/response communication model. Page-driven: Workflow is based on pages
INTERNET & WEB APPLICATION DEVELOPMENT SWE 444 Fall Semester 2008-2009 (081) Module7: Objectives/Outline Objectives Outline Understand the role of Learn how to use in your web applications Rich User Experience
More informationTIME SCHEDULE MODULE TOPICS PERIODS. HTML Document Object Model (DOM) and javascript Object Notation (JSON)
COURSE TITLE : ADVANCED WEB DESIGN COURSE CODE : 5262 COURSE CATEGORY : A PERIODS/WEEK : 4 PERIODS/SEMESTER : 52 CREDITS : 4 TIME SCHEDULE MODULE TOPICS PERIODS 1 HTML Document Object Model (DOM) and javascript
More informationVarargs Training & Software Development Centre Private Limited, Module: HTML5, CSS3 & JavaScript
PHP Curriculum Module: HTML5, CSS3 & JavaScript Introduction to the Web o Explain the evolution of HTML o Explain the page structure used by HTML o List the drawbacks in HTML 4 and XHTML o List the new
More informationReal Application Security Administration
Oracle Database Real Application Security Administration Console (RASADM) User s Guide 12c Release 2 (12.2) E85615-01 June 2017 Real Application Security Administration Oracle Database Real Application
More informationA.A. 2008/09. What is Ajax?
Internet t Software Technologies AJAX IMCNE A.A. 2008/09 Gabriele Cecchetti What is Ajax? AJAX stands for Asynchronous JavaScript And XML. AJAX is a type of programming made popular in 2005 by Google (with
More informationComprehensive Angular 2 Review of Day 3
Form Validation: built in validators: added to template: required minlength maxlength pattern form state: state managed through NgModel classes: control has been visited: ng-touched or ng-untouched control
More informationNotes General. IS 651: Distributed Systems 1
Notes General Discussion 1 and homework 1 are now graded. Grading is final one week after the deadline. Contract me before that if you find problem and want regrading. Minor syllabus change Moved chapter
More informationFall Semester (081) Module7: AJAX
INTERNET & WEB APPLICATION DEVELOPMENT SWE 444 Fall Semester 2008-2009 (081) Module7: AJAX Dr. El-Sayed El-Alfy Computer Science Department King Fahd University of Petroleum and Minerals alfy@kfupm.edu.sa
More informationWhen the Servlet Model Doesn't Serve. Gary Murphy Hilbert Computing, Inc.
When the Servlet Model Doesn't Serve Gary Murphy Hilbert Computing, Inc. glm@hilbertinc.com Motivation? Many decision makers and programmers equate Java with servlets? Servlets are appropriate for a class
More informationAt the Forge Prototype Reuven M. Lerner Abstract Prototype eases the burden of using JavaScript in Ajax. During the last few months, we have looked at ways to use JavaScript, a version of which is included
More informationCMPT 354 Database Systems I
CMPT 354 Database Systems I Chapter 8 Database Application Programming Introduction Executing SQL queries: Interactive SQL interface uncommon. Application written in a host language with SQL abstraction
More informationCERTIFICATE IN WEB PROGRAMMING
COURSE DURATION: 6 MONTHS CONTENTS : CERTIFICATE IN WEB PROGRAMMING 1. PROGRAMMING IN C and C++ Language 2. HTML/CSS and JavaScript 3. PHP and MySQL 4. Project on Development of Web Application 1. PROGRAMMING
More informationThe course is supplemented by numerous hands-on labs that help attendees reinforce their theoretical knowledge of the learned material.
Lincoln Land Community College Capital City Training Center 130 West Mason Springfield, IL 62702 217-782-7436 www.llcc.edu/cctc WA2442 Introduction to JavaScript Objectives This intensive training course
More informationTransbase R PHP Module
Transbase R PHP Module Transaction Software GmbH Willy-Brandt-Allee 2 D-81829 München Germany Phone: +49-89-62709-0 Fax: +49-89-62709-11 Email: info@transaction.de http://www.transaction.de Version 7.1.2.30
More informationAJAX Programming Chris Seddon
AJAX Programming Chris Seddon seddon-software@keme.co.uk 2000-12 CRS Enterprises Ltd 1 2000-12 CRS Enterprises Ltd 2 What is Ajax? "Asynchronous JavaScript and XML" Originally described in 2005 by Jesse
More informationB.H.GARDI COLLEGE OF MASTER OF COMPUTER APPLICATION. Ch. 1 :- Introduction Database Management System - 1
Basic Concepts :- 1. What is Data? Data is a collection of facts from which conclusion may be drawn. In computer science, data is anything in a form suitable for use with a computer. Data is often distinguished
More informationFunctional Programming. Pure Functional Languages
Functional Programming Pure functional PLs S-expressions cons, car, cdr Defining functions read-eval-print loop of Lisp interpreter Examples of recursive functions Shallow, deep Equality testing 1 Pure
More informationIdentity, State and Values
Identity, State and Values Clojure s approach to concurrency Rich Hickey Agenda Functions and processes Identity, State, and Values Persistent Data Structures Clojure s Managed References Q&A Functions
More informationDOT NET Syllabus (6 Months)
DOT NET Syllabus (6 Months) THE COMMON LANGUAGE RUNTIME (C.L.R.) CLR Architecture and Services The.Net Intermediate Language (IL) Just- In- Time Compilation and CLS Disassembling.Net Application to IL
More informationAJAX(Asynchronous Javascript + XML) Creating client-side dynamic Web pages
AJAX(Asynchronous Javascript + XML) Creating client-side dynamic Web pages AJAX = Asynchronous JavaScript and XML.AJAX is not a new programming language, but a new way to use existing standards. AJAX is
More information<Insert Picture Here>
Oracle Forms Modernization with Oracle Application Express Marc Sewtz Software Development Manager Oracle Application Express Oracle USA Inc. 540 Madison Avenue,
More informationEnhancing Datalog with Epistemic Operators to Reason About Systems Knowledge in
Enhancing Datalog with Epistemic Operators to Enhancing ReasonDatalog About Knowledge with Epistemic in Distributed Operators to Reason About Systems Knowledge in Distributed (Extended abstract) Systems
More informationJinx Malware 2.0 We know it s big, we measured it! Itzik Kotler Yoni Rom
Jinx Malware 2.0 We know it s big, we measured it! Itzik Kotler Yoni Rom This is how your browser looks like before Jinx has loaded This is how your browser looks like after Jinx has loaded Did you see
More informationA synchronous J avascript A nd X ml
A synchronous J avascript A nd X ml The problem AJAX solves: How to put data from the server onto a web page, without loading a new page or reloading the existing page. Ajax is the concept of combining
More informationPlatform as a Service lecture 2
Politecnico di Milano Platform as a Service lecture 2 Building an example application in Google App Engine Cloud patterns Elisabetta Di Nitto Developing an application for Google App Engine (GAE)! Install
More informationPersistent Data Structures and Managed References
Persistent Data Structures and Managed References Clojure s approach to Identity and State Rich Hickey Agenda Functions and processes Identity, State, and Values Persistent Data Structures Clojure s Managed
More informationCS50 Quiz Review. November 13, 2017
CS50 Quiz Review November 13, 2017 Info http://docs.cs50.net/2017/fall/quiz/about.html 48-hour window in which to take the quiz. You should require much less than that; expect an appropriately-scaled down
More informationFlang typechecker Due: February 27, 2015
CMSC 22610 Winter 2015 Implementation of Computer Languages I Flang typechecker Due: February 27, 2015 Project 3 February 9, 2015 1 Introduction The third project is to implement a type checker for Flang,
More information1. true / false By a compiler we mean a program that translates to code that will run natively on some machine.
1. true / false By a compiler we mean a program that translates to code that will run natively on some machine. 2. true / false ML can be compiled. 3. true / false FORTRAN can reasonably be considered
More informationSetting Up a Development Server What Is a WAMP, MAMP, or LAMP? Installing a WAMP on Windows Testing the InstallationAlternative WAMPs Installing a
Setting Up a Development Server What Is a WAMP, MAMP, or LAMP? Installing a WAMP on Windows Testing the InstallationAlternative WAMPs Installing a LAMP on Linux Working Remotely Introduction to web programming
More informationComputer Science nd Exam Prof. Papa Tuesday, April 28, 2016, 6:00pm 7:20pm
Computer Science 571 2 nd Exam Prof. Papa Tuesday, April 28, 2016, 6:00pm 7:20pm Name: Student ID Number: 1. This is a closed book exam. 2. Please answer all questions on the test Frameworks and Agile
More informationCS 342 Lecture 7 Syntax Abstraction By: Hridesh Rajan
CS 342 Lecture 7 Syntax Abstraction By: Hridesh Rajan 1 Reading SICP, page 11-19, Section 1.1.6 Little Schemer, Chapter 2 2 The Idea of Syntax Abstraction Problem. Often programming tasks are repetitive,
More informationReminder from last time
Concurrent systems Lecture 5: Concurrency without shared data, composite operations and transactions, and serialisability DrRobert N. M. Watson 1 Reminder from last time Liveness properties Deadlock (requirements;
More informationCredits: Some of the slides are based on material adapted from
1 The Web, revisited WEB 2.0 marco.ronchetti@unitn.it Credits: Some of the slides are based on material adapted from www.telerik.com/documents/telerik_and_ajax.pdf 2 The old web: 1994 HTML pages (hyperlinks)
More informationCourses For Event Java Advanced Summer Training 2018
Courses For Event Java Advanced Summer Training 2018 Java Fundamentals Oracle Java SE 8 Advanced Java Training Java Advanced Expert Edition Topics For Java Fundamentals Variables Data Types Operators Part
More informationAJAX. Introduction. AJAX: Asynchronous JavaScript and XML
AJAX 1 2 Introduction AJAX: Asynchronous JavaScript and XML Popular in 2005 by Google Create interactive web applications Exchange small amounts of data with the server behind the scenes No need to reload
More informationManual Trigger Sql Server 2008 Insert Update Delete Selection
Manual Trigger Sql Server 2008 Insert Update Delete Selection Since logon triggers are server-scoped objects, we will create any necessary additional objects in master. WHERE dbs IN (SELECT authenticating_database_id
More informationINTRODUCTION TO.NET. Domain of.net D.N.A. Architecture One Tier Two Tier Three Tier N-Tier THE COMMON LANGUAGE RUNTIME (C.L.R.)
INTRODUCTION TO.NET Domain of.net D.N.A. Architecture One Tier Two Tier Three Tier N-Tier THE COMMON LANGUAGE RUNTIME (C.L.R.) CLR Architecture and Services The.Net Intermediate Language (IL) Just- In-
More informationJavaScript. Training Offer for JavaScript Introduction JavaScript. JavaScript Objects
JavaScript CAC Noida is an ISO 9001:2015 certified training center with professional experience that dates back to 2005. The vision is to provide professional education merging corporate culture globally
More informationEnterprise Web based Software Architecture & Design
IMPORTANT NOTICE TO STUDENTS These slides are NOT to be used as a replacement for student notes. These slides are sometimes vague and incomplete on purpose to spark class discussions Enterprise Web based
More informationJAVA COURSES. Empowering Innovation. DN InfoTech Pvt. Ltd. H-151, Sector 63, Noida, UP
2013 Empowering Innovation DN InfoTech Pvt. Ltd. H-151, Sector 63, Noida, UP contact@dninfotech.com www.dninfotech.com 1 JAVA 500: Core JAVA Java Programming Overview Applications Compiler Class Libraries
More informationWeb Applications. Software Engineering 2017 Alessio Gambi - Saarland University
Web Applications Software Engineering 2017 Alessio Gambi - Saarland University Based on the work of Cesare Pautasso, Christoph Dorn, Andrea Arcuri, and others ReCap Software Architecture A software system
More informationCase Study: Dodging the Pitfalls of Enterprise Ajax Applications
www.thinwire.com Case Study: Dodging the Pitfalls of Enterprise Ajax Applications A Quick Introduction: Joshua Gertzen Lead Architect of the ThinWire Ajax RIA Framework Core Technology Architect for CCS
More informationDeveloping Applications with Java EE 6 on WebLogic Server 12c
Developing Applications with Java EE 6 on WebLogic Server 12c Duration: 5 Days What you will learn The Developing Applications with Java EE 6 on WebLogic Server 12c course teaches you the skills you need
More informationFunctional Programming. Pure Functional Programming
Functional Programming Pure Functional Programming Computation is largely performed by applying functions to values. The value of an expression depends only on the values of its sub-expressions (if any).
More informationDelivery Options: Attend face-to-face in the classroom or remote-live attendance.
XML Programming Duration: 5 Days Price: $2795 *California residents and government employees call for pricing. Discounts: We offer multiple discount options. Click here for more info. Delivery Options:
More informationRemote Health Service System based on Struts2 and Hibernate
St. Cloud State University therepository at St. Cloud State Culminating Projects in Computer Science and Information Technology Department of Computer Science and Information Technology 5-2017 Remote Health
More informationStatic Webpage Development
Dear Student, Based upon your enquiry we are pleased to send you the course curriculum for PHP Given below is the brief description for the course you are looking for: - Static Webpage Development Introduction
More informationIBM Rational Software
IBM Rational Software Development Conference 2008 Introduction to the Jazz Technology Platform: Architecture Overview and Extensibility Scott Rich Distinguished Engineer, Jazz Architect IBM Rational SDP21
More informationAJAX. Lab. de Bases de Dados e Aplicações Web MIEIC, FEUP 2010/11. Sérgio Nunes
AJAX Lab. de Bases de Dados e Aplicações Web MIEIC, FEUP 2010/11 Sérgio Nunes Server calls from web pages using JavaScript call HTTP data Motivation The traditional request-response cycle in web applications
More informationPaxos Made Live. An Engineering Perspective. Authors: Tushar Chandra, Robert Griesemer, Joshua Redstone. Presented By: Dipendra Kumar Jha
Paxos Made Live An Engineering Perspective Authors: Tushar Chandra, Robert Griesemer, Joshua Redstone Presented By: Dipendra Kumar Jha Consensus Algorithms Consensus: process of agreeing on one result
More informationWeb Engineering (CC 552)
Web Engineering (CC 552) Introduction Dr. Mohamed Magdy mohamedmagdy@gmail.com Room 405 (CCIT) Course Goals n A general understanding of the fundamentals of the Internet programming n Knowledge and experience
More informationAbstract. 1. Introduction. 2. AJAX overview
Asynchronous JavaScript Technology and XML (AJAX) Chrisina Draganova Department of Computing, Communication Technology and Mathematics London Metropolitan University 100 Minories, London EC3 1JY c.draganova@londonmet.ac.uk
More information10.1 Overview of Ajax
10.1 Overview of Ajax - History - Possibility began with the nonstandard iframe element, which appeared in IE4 and Netscape 4 - An iframe element could be made invisible and could be used to send asynchronous
More informationwemx WebService V1.0
wemx WebService 2 wemx WebService WEMX WEBSERVICE... 1 1. WEB SERVICE INTRODUCTION... 6 1.1. SYSTEM PAGE... 6 1.2. USER PAGE... 7 1.3. WEB SERVICE API... 8 2. SYSTEM PAGE PROVIDED BY THE WEB SERVICE...
More informationOracle Database. Installation and Configuration of Real Application Security Administration (RASADM) Prerequisites
Oracle Database Real Application Security Administration 12c Release 1 (12.1) E61899-04 May 2015 Oracle Database Real Application Security Administration (RASADM) lets you create Real Application Security
More informationComp 426 Midterm Fall 2013
Comp 426 Midterm Fall 2013 I have not given nor received any unauthorized assistance in the course of completing this examination. Name: PID: This is a closed book exam. This page left intentionally blank.
More information