Working with JSON in RPG. (YAJL Open Source JSON Tool)
|
|
|
- Joleen Morris
- 9 years ago
- Views:
Transcription
1 Working with JSON in RPG (YAJL Open Source JSON Tool) Presented by Scott Klement , Scott Klement "A computer once beat me at chess, but it was no match for me at kick boxing." Emo Philips The Agenda Agenda for this session: 1. What is JSON? Why use JSON? Syntax Overview 2. The YAJL JSON reader/writer Why YAJL? Scott's RPG interface 3. Generating JSON in RPG Code Example 4. Reading JSON in RPG Code Example 2
2 Ugggh, Another Thing to Learn! This is pretty much how I felt about JSON at first! ugggh, I just learned XML. Do I need to learn something new?! But, as I learned more, I started to love it. Now I much prefer JSON over XML. 3 Much Like XML JSON is a format for encapsulating data as it's sent over networks Much Like XML. JSON is self-describing (field names are in the data itself) and human-readable. Much Like XML Very popular in Web Services and AJAX Much Like XML Can be used by all major programming languages Much Like XML So why is it better than XML..? 4
3 Much Different Than XML JSON is simpler: only supports UTF-8, whereas XML supports a variety of encodings. doesn't support schemas, transformations. doesn't support namespaces method of "escaping" data is much simpler. JSON is faster more terse (less verbose). About 70% of XML's size on average simpler means faster to parse dead simple to use in JavaScript 5 JSON is Quickly Becoming Important Over 70% of all APIs in ProgrammableWeb's API directory are RESTful, increasingly at the expense of SOAP. More than 55% of those same APIs support JSON output, with 20% opting not to offer XML at all. Source: 1 in 5 APIs Say "Bye XML", Adam DuVander, May 25,
4 JSON Evolved from JavaScript Originally JSON was the language used to describe "initializers" for JavaScript objects. Used to set the initial values of JavaScript Objects (data structures), and arrays. Even for arrays nested in data structures or vice-versa. Conceptually similar to "CTDATA" in RPG, except supports nested data as well. Unlike JavaScript, however, JSON does not support "methods" (executable routines in the object) so it's objects are equivalent to RPG data structures. var DaysOfWeek = [ "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday" ]; 7 JSON Syntax Summary Arrays start/end with square brackets [ "Monday", "Tuesday", "Wednesday", "Thursday", "Friday" ] Objects (data structures in RPG) start/end with curly braces { x, x, x, x } { "first": "Scott", "last": "Klement", "sex": "male" } Strings are in double-quotes. Quotes and control characters are escaped with backslashes. Numbers and true/false are not quoted. { "name": "Henry \"Hank\" Aaron", "home_runs": 755, "retired": true } Names are separated from values with a colon (as above) Successive elements (array elements or fields in an object) are separated by commas. (as above) Data can be nested (arrays inside objects and/or objects inside arrays). 8
5 JSON and XML to Represent a DS D list ds qualified D dim(2) D custno 4p 0 D name 25a For example, this is an array of a data structure in RPG. [ { "custno": 1000, "name": "ACME, Inc" }, { "custno": 2000, "name": "Industrial Supply Limited" } ] This is how the same array might be represented (with data inside) in a JSON document. <list> <cust> <custno>1000</custno> <name>acme, Inc</name> </cust> <cust> <custno>2000</custno> <name>industrial Supply Limited</name> </cust> </list> And it s approximately the same as this XML document. 9 The YAJL Open Source Tool YAJL = Yet Another JSON Library Created by Lloyd Hilaiel (who works for Mozilla) completely Open Source (very permissive ISC license) Extremely fast. (Fastest one we benchmarked) Written in C. Bindings available for Ruby, Python, Perl, Lua, Node.js and others Ported to IBM i (ILE C) by Scott Klement & David Russo. Available at V5R4 or higher. Works entirely in UTF-8 Unicode YAJLR4 = Scott's ILE RPG language bindings Simplifies calling YAJL from ILE RPG Replaces C macros with RPG subprocedures Handles UTF-8/EBCDIC translation for you 10
6 YAJL Provides YAJL provides sets of routines for: Generating JSON data Parsing JSON data in an event-driven (SAX-like) manner Parsing JSON in a tree (DOM-like) manner I have found the tree-style routines to be easier to work with, so will use them in my examples. 11 Example of Writing JSON For an example, an RPG program that lists invoices in a date range in JSON format, like this: { } "success": true, "errmsg": "", "list": [ { "invoice": "70689", "date": "03/01/2014", "name": "SCOTT KLEMENT", "amount": 14.80, "weight": 3.5 }, { another invoice }, { another invoice },...etc... ] 12
7 Example of Writing JSON Or if an error occurs, it'd return an abbreviated document like this: { } "success": false, "errmsg": "Error Message Here", "list": [ ] To keep it simple, we'll just have it write the result to an IFS file. Though, you can also use this in a web service, if desired (code download from ScottKlement.com will have an example of this) 13 RPG Writing JSON -- Definitions H DFTACTGRP(*NO) ACTGRP('KLEMENT') OPTION(*SRCSTMT) H BNDDIR('YAJL') DECEDIT('0.') /include yajl_h D row ds qualified D inv 5a D date 8s 0 D name 25a D amount 9p 2 D weight 9p 1 Numbers in JSON must start a digit (not the decimal point) The BNDDIR and copy book are needed to access YAJL's routines D cust D sdate D edate D dateusa s 4s 0 inz(4997) s 8s 0 inz( ) s 8s 0 inz( ) s 10a varying To keep example simple, query criteria is hardcoded. D success s 1n D errmsg s 500a varying 14
8 RPG Writing JSON -- Mainline exec SQL declare C1 cursor for select aiordn, aiidat, aisnme, aidamt, ailbs from ARSHIST where aicust=:cust and aiidat between :sdate and :edate; exec SQL open C1; exec SQL fetch next from C1 into :row; exsr JSON_Start; dow sqlstt='00000' or %subst(sqlstt:1:2)='01'; exsr JSON_AddRow; exec SQL fetch next from C1 into :row; enddo; exec SQL close C1; exsr JSON_Finish; exsr JSON_Save; *inlr = *on; Using SQL to get list of invoices from sales history file At the start of the list, output JSON start (subroutine) For each invoice found, add the 'row' data structure to JSON document At the end of the list, call subroutines to finish the JSON data & save it. 15 YAJL Routines Used To generate the JSON data we'll use the following YAJL procedures: yajl_genopen() / yajl_genclose() = Open/Close JSON generator. The genopen routine has a parm of *ON or *OFF tells whether JSON is "pretty" or "compact" yajl_beginobj() / yajl_endobj() = start or end JSON object (data struct) yajl_beginarray() / yajl_endarray() = start or end JSON array yajl_addbool() = add a boolean (true/false) value to JSON yajl_addchar() = add a character string to JSON yajl_addnum() = add a numeric value to JSON yajl_savebuf() = write JSON document to IFS 16
9 JSON_Start Routine begsr JSON_Start; yajl_genopen(*on); // use *ON for easier to read JSON // *OFF for more compact JSON yajl_beginobj(); yajl_addbool('success': success ); yajl_addchar('errmsg': errmsg ); yajl_beginarray('list'); endsr; { "success": false, "errmsg": "Error Message Here", "list": [ yajl_beginobj yajl_addbool yajl_addchar yajl_beginarray 17 JSON_addRow Routine begsr JSON_addRow; dateusa = %char( %date(row.date:*iso) : *usa ); yajl_beginobj(); yajl_addchar('invoice': row.inv ); yajl_addchar('date': dateusa ); yajl_addchar('name': %trim(row.name)); yajl_addnum('amount': %char(row.amount)); yajl_addnum('weight': %char(row.weight)); yajl_endobj(); { } "invoice": "XYX", "date": "12/31/2013", "name": "John Doe", "amount": , "weight": endsr; Each time this runs, it adds a new JSON element to the end of the document. Since we have not yet called JSON_endArray(), each object is a new element in the array that was started in the JSON_start subroutine. 18
10 JSON_Finish & JSON_Save begsr JSON_Finish; yajl_endarray(); yajl_endobj(); endsr; Finish off the array and the object that began in JSON_start. begsr JSON_Save; endsr; yajl_savebuf('/tmp/example.json': errmsg); if errmsg <> ''; // handle error endif; yajl_genclose(); Save result to IFS file Close JSON generator (frees up memory) 19 RPG Writing JSON "Pretty" Output { } "success": true, "errmsg": "", "list": [ { "invoice": "70689", "date": "09/01/2010", "name": "JIM JOHNSON", "amount": 14.80, "weight": 3.5 }, { "invoice": "70695", "date": "09/01/2010", "name": "BILL VIERS", "amount": 9.80, "weight": 3.2 } ] Result with yajl_genopen(*on) ("pretty" JSON data) Includes line breaks and indenting to make it easy as possible for humans to read. This extra formatting isn't needed for computer programs to read it, however. 20
11 RPG Writing JSON "Compact" output Result with yajl_genopen(*off) ("compact" JSON data) No line breaks or indenting. Makes file size smaller, so it transmits over the network a little bit faster. But, is the exact same document. {"success":true,"errmsg":"","list":[{"invoice":"70689","date":"09/01/ 2010","name":"JIM JOHNSON","amount":14.80,"weight":3.5},{"invoice":"7 0695","date":"09/01/2010","name":"BILL VIERS","amount":9.80,"weight": 3.2}]} 21 What if I Wanted a Web Service? Although there isn't time to go into detail about how to code RESTful web services in this presentation, the gist would be: Get input parameters from the URL. Create the JSON document in exactly the same way. Use JSON_copyBuf() instead of JSON_saveBuf() JSON_copyBuf() copies the JSON data into a memory buffer or program variable instead of writing it to the IFS. You could then return it from your web service. An example of this is provided in the sample code on Scott's web site, here: 22
12 Reading JSON Data With YAJL YAJL provides two ways of reading JSON data: event-based (like SAX in XML) APIs tree-based (like DOM in XML) APIs This talk will discuss the tree-based method, since I have found it much easier to use. A tree is the JSON data loaded into memory and organized in a hierarchical fashion. 23 Populating the YAJL tree To load JSON data from IFS into the tree parser, call yajl_stmf_load_tree(), as follows: docnode = yajl_stmf_load_tree( '/tmp/example.json' : errmsg ); There is also yajl_buf_load_tree() if you prefer to load from a buffer or RPG variable. The return value is a YAJL 'node' that represents the outermost element of the JSON document. (the tree's "trunk") A 'node' represents data at one level of the document, and can be used to retrieve 'child nodes' that are within the current 'node'. (To understand better, see the diagram on the next slide.) 24
13 Diagram of a JSON Tree When YAJL loads the JSON data into the tree, it gives me the document node (docnode) invno (char string) date (char string) array index 1 (object) name (char string) docnode success (true/false) errmsg (char string) list (array) amount (number) weight (number) invno (char string) date (char string) Given any node, I can retrieve it's "children". So with docnode, I can get the nodes for the 'success', 'errmsg' and 'list' elements. array index 2 (object) and with the node for 'list', I can get the array elements, etc name (char string) amount (number) weight (number) 25 Retrieving A "Child Node" yajl_object_find() will get a child node by field name. yajl_is_true() returns whether a true/false value is true. yajl_is_false() returns whether a true/false value is false. // { "success": true } succnode = yajl_object_find( docnode : 'success' ); if yajl_is_true( succnode ); // success! else; // failure endif; 26
14 Get a String Value From a Node yajl_get_string() = returns a string value from a node // { "success": false, "errmsg": "invalid start date" } succnode = yajl_object_find( docnode : 'success' ); if yajl_is_false( succnode ); errmsgnode = yajl_object_find( docnode: 'errmsg' ); msg = yajl_get_string(errmsgnode); // msg now contains "invalid start date" endif; For numeric values, there's also yajl_get_number() 27 Processing an Array yajl_array_loop() = loops through all elements in a JSON array // { "list": [ invoice1, invoice2, invoice 3 ] } list = yajl_object_find( docnode : 'list' ); i = 0; dow YAJL_ARRAY_LOOP( list: i: node ); // code here is repeated for each array element. // each time through, node and i are updated // to point to reflect the current array element. enddo; yajl_array_elem() (not demonstrated here) can be used if you prefer to get each element by it's array index number. 28
15 Processing an Object (DS) yajl_object_loop() = loops through all sub-fields in an object, and returns the field name ("key"), child node ("val") and index for each. This is, equivalent to calling yajl_object_find() separately for each field name. // { "invoice": 123, "name": "Scott Klement", "amount": } i = 0; dow YAJL_OBJECT_LOOP( docnode: i: key: val ); // code here is repeated for each field in the object // each time through, key, val and i are updated // to point to reflect the current field enddo; 29 Freeing Up Resources (When Done) When yajl_stmf_load_tree() ran, all of the JSON details were loaded into memory. To free up that memory, you must call yajl_tree_free() yajl_tree_free( docnode ); You must pass the document node into yajl_tree_free(), so be sure to save it when you call yajl_xxxx_load_tree(). yajl_tree_free() will free up all of the child nodes as well as the document node. So be sure that you do not refer to any of the nodes after calling it. 30
16 Reading JSON RPG Example To put together all of the YAJL tree concepts shown in the preceding slides, I have provided an RPG example. Reads the same JSON file (from IFS) that we created earlier Loads the JSON data into an RPG data structure. After all is loaded, loops through and prints the data (just to demonstrate reading) 31 RPG Reading JSON (1 of 6) H DFTACTGRP(*NO) ACTGRP('KLEMENT') OPTION(*SRCSTMT) H BNDDIR('YAJL') /include yajl_h D list_t ds qualified D template D inv 5a D date 8s 0 D name 25a D amount 9p 2 D weight 9p 1 The 'result' data structure will be populated from the JSON data D result ds qualified D success 1n D errmsg 500a varying D list likeds(list_t) dim(999) D i s 10i 0 D j s 10i 0 D dateusa s 10a D errmsg s 500a varying inz('') 32
17 RPG Reading JSON (2 of 6) D docnode s like(yajl_val) D list s like(yajl_val) D node s like(yajl_val) D val s like(yajl_val) D key s 50a varying Variables that represent JSON nodes are defined as 'yajl_val' Technically, under the covers, these are pointers to the data structures that YAJL uses internally. However, there's no need for the RPG program to be concerned with how it works, and it's not necessary to do any sort of pointer logic on these fields. They are just placeholders for the JSON nodes. 33 RPG Reading JSON (3 of 6) // load the example.json document into a tree. docnode = yajl_stmf_load_tree( '/tmp/example.json' : errmsg ); if errmsg <> ''; // handle error endif; // get the 'success' field into 'result' DS // result.success is an RPG named indicator, and will be // *ON if success=true, *OFF if success=false node = YAJL_object_find(docNode: 'success'); result.success = YAJL_is_true(node); // get the 'errmsg' field into 'result' DS node = YAJL_object_find(docNode: 'errmsg'); result.errmsg = YAJL_get_string(node); 34
18 RPG Reading JSON (4 of 6) list = YAJL_object_find(docNode: 'list'); i = 0; dow YAJL_ARRAY_LOOP( list: i: node ); 'node' contains the array element that represents an invoice object in the list. j = 0; dow YAJL_OBJECT_LOOP( node: j: key: val); // when 'load_subfield' is run, "key" will contain // the JSON field name, and "val" will contain // a YAJL node from which the value can be extracted exsr load_subfield; enddo; enddo; yajl_object_loop is called for each array 'node' to get it's subfields. 35 RPG Reading JSON (5 of 6) begsr load_subfield; endsr; select; when key = 'invoice'; result.list(i).inv = yajl_get_string(val); when key = 'date'; dateusa = yajl_get_string(val); result.list(i).date = %dec(%date(dateusa:*usa):*iso); when key = 'name'; result.list(i).name = yajl_get_string(val); when key = 'amount'; result.list(i).amount = yajl_get_number(val); when key = 'weight'; result.list(i).weight = yajl_get_number(val); endsl; 36
19 RPG Reading JSON (6 of 6) Just for the sake of having some output, here's a quick & dirty routine to print the invoice list (with O-specs) D prt ds likeds(list_t).. for i = 1 to YAJL_ARRAY_SIZE(list); prt = result.list(i); except print; endfor;.. OQSYSPRT E PRINT O PRT.INV 5 O PRT.DATE 17 ' - - ' O PRT.NAME 44 O PRT.AMOUNT L 56 O PRT.WEIGHT L RPG Reading JSON -- Output The output of the program would look as follows: JIM JOHNSON BILL VIERS JOSE MENDOZA RICHARD KERBEL JACKIE OLSON LISA XIONG JOHN HANSON JOHN ESSLINGER LORI SKUZENSKI KURT KADOW PENNY STRAW WOLSKI STEVE KENNETH HALE ALEX AGULIERA JIM JOHNSON DAVE DRESEN
20 This Presentation You can download YAJL and the sample code presented in this session from: You can download a PDF copy of this presentation from: Thank you! 39
XML Processing and Web Services. Chapter 17
XML Processing and Web Services Chapter 17 Textbook to be published by Pearson Ed 2015 in early Pearson 2014 Fundamentals of http://www.funwebdev.com Web Development Objectives 1 XML Overview 2 XML Processing
Part II of The Pattern to Good ILE. with RPG IV. Scott Klement
Part II of The Pattern to Good ILE with RPG IV Presented by Scott Klement http://www.scottklement.com 2008, Scott Klement There are 10 types of people in the world. Those who understand binary, and those
Accesssing External Databases From ILE RPG (with help from Java)
Accesssing External Databases From ILE RPG (with help from Java) Presented by Scott Klement http://www.scottklement.com 2008-2015, Scott Klement There are 10 types of people in the world. Those who understand
PL/JSON Reference Guide (version 1.0.4)
PL/JSON Reference Guide (version 1.0.4) For Oracle 10g and 11g Jonas Krogsbøll Contents 1 PURPOSE 2 2 DESCRIPTION 2 3 IN THE RELEASE 3 4 GETTING STARTED 3 5 TWEAKS 4 6 JSON PATH 6 7 BEHAVIOR & ERROR HANDLING
Smooks Dev Tools Reference Guide. Version: 1.1.0.GA
Smooks Dev Tools Reference Guide Version: 1.1.0.GA Smooks Dev Tools Reference Guide 1. Introduction... 1 1.1. Key Features of Smooks Tools... 1 1.2. What is Smooks?... 1 1.3. What is Smooks Tools?... 2
Intro to Embedded SQL Programming for ILE RPG Developers
Intro to Embedded SQL Programming for ILE RPG Developers Dan Cruikshank DB2 for i Center of Excellence 1 Agenda Reasons for using Embedded SQL Getting started with Embedded SQL Using Host Variables Using
Introduction to Web services for RPG developers
Introduction to Web services for RPG developers Claus Weiss [email protected] TUG meeting March 2011 1 Acknowledgement In parts of this presentation I am using work published by: Linda Cole, IBM Canada
Exercise 1: Python Language Basics
Exercise 1: Python Language Basics In this exercise we will cover the basic principles of the Python language. All languages have a standard set of functionality including the ability to comment code,
Three Approaches to Web. with RPG
Three Approaches to Web with RPG Presented by Scott Klement http://www.scottklement.com 2013-2016, Scott Klement "A computer once beat me at chess, but it was no match for me at kick boxing." Emo Philips
DataDirect XQuery Technical Overview
DataDirect XQuery Technical Overview Table of Contents 1. Feature Overview... 2 2. Relational Database Support... 3 3. Performance and Scalability for Relational Data... 3 4. XML Input and Output... 4
Real SQL Programming 1
Real 1 We have seen only how SQL is used at the generic query interface an environment where we sit at a terminal and ask queries of a database. Reality is almost always different: conventional programs
Data Tool Platform SQL Development Tools
Data Tool Platform SQL Development Tools ekapner Contents Setting SQL Development Preferences...5 Execution Plan View Options Preferences...5 General Preferences...5 Label Decorations Preferences...6
GUI and Web Programming
GUI and Web Programming CSE 403 (based on a lecture by James Fogarty) Event-based programming Sequential Programs Interacting with the user 1. Program takes control 2. Program does something 3. Program
Web Development using PHP (WD_PHP) Duration 1.5 months
Duration 1.5 months Our program is a practical knowledge oriented program aimed at learning the techniques of web development using PHP, HTML, CSS & JavaScript. It has some unique features which are as
RPG User Defined Functions (UDFs) and Table Functions (UDTFs) Scott Klement
RPG User Defined Functions (UDFs) and Table Functions (UDTFs) Presented by Scott Klement http://www.scottklement.com 2009-2015, Scott Klement There are 10 types of people in the world. Those who understand
Ecma/TC39/2013/NN. 4 th Draft ECMA-XXX. 1 st Edition / July 2013. The JSON Data Interchange Format. Reference number ECMA-123:2009
Ecma/TC39/2013/NN 4 th Draft ECMA-XXX 1 st Edition / July 2013 The JSON Data Interchange Format Reference number ECMA-123:2009 Ecma International 2009 COPYRIGHT PROTECTED DOCUMENT Ecma International 2013
General principles and architecture of Adlib and Adlib API. Petra Otten Manager Customer Support
General principles and architecture of Adlib and Adlib API Petra Otten Manager Customer Support Adlib Database management program, mainly for libraries, museums and archives 1600 customers in app. 30 countries
Embedding SQL in High Level Language Programs
Embedding SQL in High Level Language Programs Alison Butterill IBM i Product Manager Power Systems Agenda Introduction Basic SQL within a HLL program Processing multiple records Error detection Dynamic
NewsletterAdmin 2.4 Setup Manual
NewsletterAdmin 2.4 Setup Manual Updated: 7/22/2011 Contact: [email protected] Contents Overview... 2 What's New in NewsletterAdmin 2.4... 2 Before You Begin... 2 Testing and Production...
Semistructured data and XML. Institutt for Informatikk INF3100 09.04.2013 Ahmet Soylu
Semistructured data and XML Institutt for Informatikk 1 Unstructured, Structured and Semistructured data Unstructured data e.g., text documents Structured data: data with a rigid and fixed data format
ANDROID APPS DEVELOPMENT FOR MOBILE GAME
ANDROID APPS DEVELOPMENT FOR MOBILE GAME Lecture 7: Data Storage and Web Services Overview Android provides several options for you to save persistent application data. Storage Option Shared Preferences
Dynamic Decision-Making Web Services Using SAS Stored Processes and SAS Business Rules Manager
Paper SAS1787-2015 Dynamic Decision-Making Web Services Using SAS Stored Processes and SAS Business Rules Manager Chris Upton and Lori Small, SAS Institute Inc. ABSTRACT With the latest release of SAS
Consuming Web Services from RPG using HTTPAPI. Presented by. Scott Klement. http://www.scottklement.com. 2004-2009, Scott Klement
Consuming Web Services from RPG using HTTPAPI Presented by Scott Klement http://www.scottklement.com 2004-2009, Scott Klement There are 10 types of people in the world. Those who understand binary, and
Name: Class: Date: 9. The compiler ignores all comments they are there strictly for the convenience of anyone reading the program.
Name: Class: Date: Exam #1 - Prep True/False Indicate whether the statement is true or false. 1. Programming is the process of writing a computer program in a language that the computer can respond to
PHP Tutorial From beginner to master
PHP Tutorial From beginner to master PHP is a powerful tool for making dynamic and interactive Web pages. PHP is the widely-used, free, and efficient alternative to competitors such as Microsoft's ASP.
Advantages of PML as an iseries Web Development Language
Advantages of PML as an iseries Web Development Language What is PML PML is a highly productive language created specifically to help iseries RPG programmers make the transition to web programming and
A programming language for implementing integrations
A programming language for implementing integrations Background The beginning of an XML document may look like: 2003-11-24 The most natural
Lecture 21: NoSQL III. Monday, April 20, 2015
Lecture 21: NoSQL III Monday, April 20, 2015 Announcements Issues/questions with Quiz 6 or HW4? This week: MongoDB Next class: Quiz 7 Make-up quiz: 04/29 at 6pm (or after class) Reminders: HW 4 and Project
Debugging Complex Macros
Debugging Complex Macros Peter Stagg, Decision Informatics It s possible to write code generated by macros to an external file. The file can t be access until the SAS session has ended. Use the options
Channel Access Client Programming. Andrew Johnson Computer Scientist, AES-SSG
Channel Access Client Programming Andrew Johnson Computer Scientist, AES-SSG Channel Access The main programming interface for writing Channel Access clients is the library that comes with EPICS base Written
CSCI 3136 Principles of Programming Languages
CSCI 3136 Principles of Programming Languages Faculty of Computer Science Dalhousie University Winter 2013 CSCI 3136 Principles of Programming Languages Faculty of Computer Science Dalhousie University
Documentation to use the Elia Infeed web services
Documentation to use the Elia Infeed web services Elia Version 1.0 2013-10-03 Printed on 3/10/13 10:22 Page 1 of 20 Table of Contents Chapter 1. Introduction... 4 1.1. Elia Infeed web page... 4 1.2. Elia
Perl in a nutshell. First CGI Script and Perl. Creating a Link to a Script. print Function. Parsing Data 4/27/2009. First CGI Script and Perl
First CGI Script and Perl Perl in a nutshell Prof. Rasley shebang line tells the operating system where the Perl interpreter is located necessary on UNIX comment line ignored by the Perl interpreter End
Oracle Database: SQL and PL/SQL Fundamentals NEW
Oracle University Contact Us: + 38516306373 Oracle Database: SQL and PL/SQL Fundamentals NEW Duration: 5 Days What you will learn This Oracle Database: SQL and PL/SQL Fundamentals training delivers the
10CS73:Web Programming
10CS73:Web Programming Question Bank Fundamentals of Web: 1.What is WWW? 2. What are domain names? Explain domain name conversion with diagram 3.What are the difference between web browser and web server
Oracle Database: SQL and PL/SQL Fundamentals
Oracle University Contact Us: 1.800.529.0165 Oracle Database: SQL and PL/SQL Fundamentals Duration: 5 Days What you will learn This course is designed to deliver the fundamentals of SQL and PL/SQL along
Introducing DocumentDB
David Chappell Introducing DocumentDB A NoSQL Database for Microsoft Azure Sponsored by Microsoft Corporation Copyright 2014 Chappell & Associates Contents Why DocumentDB?... 3 The DocumentDB Data Model...
In the March article, RPG Web
RPG WEB DEVELOPMENT Using Embedded SQL to Process Multiple Rows By Jim Cooper In the March article, RPG Web Development, Getting Started (www.icebreak4rpg.com/articles. html), the wonderful and exciting
Using Database Metadata and its Semantics to Generate Automatic and Dynamic Web Entry Forms
Using Database Metadata and its Semantics to Generate Automatic and Dynamic Web Entry Forms Mohammed M. Elsheh and Mick J. Ridley Abstract Automatic and dynamic generation of Web applications is the future
Extensible Markup Language (XML): Essentials for Climatologists
Extensible Markup Language (XML): Essentials for Climatologists Alexander V. Besprozvannykh CCl OPAG 1 Implementation/Coordination Team The purpose of this material is to give basic knowledge about XML
Unified XML/relational storage March 2005. The IBM approach to unified XML/relational databases
March 2005 The IBM approach to unified XML/relational databases Page 2 Contents 2 What is native XML storage? 3 What options are available today? 3 Shred 5 CLOB 5 BLOB (pseudo native) 6 True native 7 The
Analytics March 2015 White paper. Why NoSQL? Your database options in the new non-relational world
Analytics March 2015 White paper Why NoSQL? Your database options in the new non-relational world 2 Why NoSQL? Contents 2 New types of apps are generating new types of data 2 A brief history of NoSQL 3
Web Browser Session Restore Forensics A valuable record of a user s internet activity for computer forensic examinations
A valuable record of a user s internet activity for computer forensic examinations Each session of activity in a Mozilla browser is recorded by the browser so that in the event of the browser crashing
Big Data Analytics in LinkedIn. Danielle Aring & William Merritt
Big Data Analytics in LinkedIn by Danielle Aring & William Merritt 2 Brief History of LinkedIn - Launched in 2003 by Reid Hoffman (https://ourstory.linkedin.com/) - 2005: Introduced first business lines
Teradata SQL Assistant Version 13.0 (.Net) Enhancements and Differences. Mike Dempsey
Teradata SQL Assistant Version 13.0 (.Net) Enhancements and Differences by Mike Dempsey Overview SQL Assistant 13.0 is an entirely new application that has been re-designed from the ground up. It has been
Client Side Binding of Dynamic Drop Downs
International Journal of Scientific and Research Publications, Volume 5, Issue 9, September 2015 1 Client Side Binding of Dynamic Drop Downs Tanuj Joshi R&D Department, Syscom Corporation Limited Abstract-
High Performance XML Data Retrieval
High Performance XML Data Retrieval Mark V. Scardina Jinyu Wang Group Product Manager & XML Evangelist Oracle Corporation Senior Product Manager Oracle Corporation Agenda Why XPath for Data Retrieval?
WESTMORELAND COUNTY PUBLIC SCHOOLS 2011 2012 Integrated Instructional Pacing Guide and Checklist Computer Math
Textbook Correlation WESTMORELAND COUNTY PUBLIC SCHOOLS 2011 2012 Integrated Instructional Pacing Guide and Checklist Computer Math Following Directions Unit FIRST QUARTER AND SECOND QUARTER Logic Unit
PHP and XML. Brian J. Stafford, Mark McIntyre and Fraser Gallop
What is PHP? PHP and XML Brian J. Stafford, Mark McIntyre and Fraser Gallop PHP is a server-side tool for creating dynamic web pages. PHP pages consist of both HTML and program logic. One of the advantages
Last Week. XML (extensible Markup Language) HTML Deficiencies. XML Advantages. Syntax of XML DHTML. Applets. Modifying DOM Event bubbling
XML (extensible Markup Language) Nan Niu ([email protected]) CSC309 -- Fall 2008 DHTML Modifying DOM Event bubbling Applets Last Week 2 HTML Deficiencies Fixed set of tags No standard way to create new
Introduction to Python
WEEK ONE Introduction to Python Python is such a simple language to learn that we can throw away the manual and start with an example. Traditionally, the first program to write in any programming language
agileworkflow Manual 1. agileworkflow 2. The repository 1 of 29 Contents Definition
agileworkflow Manual Contents 1. Intro 2. Repository 3. Diagrams 4. Agents 4.1. Dispatcher Service 4.2. Event Service 4.3. Execution Service 5. Variables 6. Instances 7. Events 7.1. External 7.2. File
Ficha técnica de curso Código: IFCAD320a
Curso de: Objetivos: LDAP Iniciación y aprendizaje de todo el entorno y filosofía al Protocolo de Acceso a Directorios Ligeros. Conocer su estructura de árbol de almacenamiento. Destinado a: Todos los
Mobility Information Series
SOAP vs REST RapidValue Enabling Mobility XML vs JSON Mobility Information Series Comparison between various Web Services Data Transfer Frameworks for Mobile Enabling Applications Author: Arun Chandran,
ARC: appmosphere RDF Classes for PHP Developers
ARC: appmosphere RDF Classes for PHP Developers Benjamin Nowack appmosphere web applications, Kruppstr. 100, 45145 Essen, Germany [email protected] Abstract. ARC is an open source collection of lightweight
Exchanger XML Editor - Canonicalization and XML Digital Signatures
Exchanger XML Editor - Canonicalization and XML Digital Signatures Copyright 2005 Cladonia Ltd Table of Contents XML Canonicalization... 2 Inclusive Canonicalization... 2 Inclusive Canonicalization Example...
Jonathan Worthington Scarborough Linux User Group
Jonathan Worthington Scarborough Linux User Group Introduction What does a Virtual Machine do? Hides away the details of the hardware platform and operating system. Defines a common set of instructions.
Thomas Jefferson High School for Science and Technology Program of Studies Foundations of Computer Science. Unit of Study / Textbook Correlation
Thomas Jefferson High School for Science and Technology Program of Studies Foundations of Computer Science updated 03/08/2012 Unit 1: JKarel 8 weeks http://www.fcps.edu/is/pos/documents/hs/compsci.htm
References & SQL Tips
References & SQL Tips Speaker: David Larsen ([email protected]), Software Engineer at Lagoon Corporation Topic: SQL Tips and Techniques on the IBM i Date: Wednesday, January 14th, 2015 Time: 11:00
Microsoft' Excel & Access Integration
Microsoft' Excel & Access Integration with Office 2007 Michael Alexander and Geoffrey Clark J1807 ; pwiueyb Wiley Publishing, Inc. Contents About the Authors Acknowledgments Introduction Part I: Basic
LabVIEW Internet Toolkit User Guide
LabVIEW Internet Toolkit User Guide Version 6.0 Contents The LabVIEW Internet Toolkit provides you with the ability to incorporate Internet capabilities into VIs. You can use LabVIEW to work with XML documents,
Web Services for RPGers
Web Services for RPGers Presented by Scott Klement http://www.scottklement.com 2010-2015, Scott Klement "A computer once beat me at chess, but it was no match for me at kick boxing." Emo Philips Our Agenda
We will learn the Python programming language. Why? Because it is easy to learn and many people write programs in Python so we can share.
LING115 Lecture Note Session #4 Python (1) 1. Introduction As we have seen in previous sessions, we can use Linux shell commands to do simple text processing. We now know, for example, how to count words.
Design: Metadata Cache Logging
Dana Robinson HDF5 THG 2014-02-24 Document Version 4 As an aid for debugging, the existing ad-hoc metadata cache logging functionality will be made more robust. The improvements will include changes to
Programming Languages
Programming Languages Programming languages bridge the gap between people and machines; for that matter, they also bridge the gap among people who would like to share algorithms in a way that immediately
Chapter 9, More SQL: Assertions, Views, and Programming Techniques
Chapter 9, More SQL: Assertions, Views, and Programming Techniques 9.2 Embedded SQL SQL statements can be embedded in a general purpose programming language, such as C, C++, COBOL,... 9.2.1 Retrieving
SQL and Programming Languages. SQL in Programming Languages. Applications. Approaches
SQL and Programming Languages SQL in Programming Languages Read chapter 5 of Atzeni et al. BD: Modelli e Linguaggi di Interrogazione and section 8.4 of Garcia-Molina The user does not want to execute SQL
Excel Spreadsheets from RPG With Apache's POI / HSSF
Excel Spreadsheets from RPG With Apache's POI / HSSF Presented by Scott Klement http://www.scottklement.com 2007-2012, Scott Klement There are 10 types of people in the world. Those who understand binary,
Introduction to Java Applications. 2005 Pearson Education, Inc. All rights reserved.
1 2 Introduction to Java Applications 2.2 First Program in Java: Printing a Line of Text 2 Application Executes when you use the java command to launch the Java Virtual Machine (JVM) Sample program Displays
Data processing goes big
Test report: Integration Big Data Edition Data processing goes big Dr. Götz Güttich Integration is a powerful set of tools to access, transform, move and synchronize data. With more than 450 connectors,
Databricks Cloud Platform Native REST API 1.0
Databricks Cloud Platform Native REST API 1.0 Overview This document describes the Databricks Native API that can be used by third party applications to interact with the Spark clusters managed by Databricks
Introduction to Web Programming with RPG. Presented by. Scott Klement. http://www.scottklement.com. 2006-2009, Scott Klement.
Introduction to Web Programming with RPG Presented by Scott Klement http://www.scottklement.com 2006-2009, Scott Klement Session 11C There are 10 types of people in the world. Those who understand binary,
Human Translation Server
Human Translation Server What is HTS Key benefits Costs Getting started Quote Confirmation Delivery Testing environment FAQ Functions reference Request a quotation Confirm the order Getting project status
StreamServe Persuasion SP4 Service Broker
StreamServe Persuasion SP4 Service Broker User Guide Rev A StreamServe Persuasion SP4 Service Broker User Guide Rev A 2001-2009 STREAMSERVE, INC. ALL RIGHTS RESERVED United States patent #7,127,520 No
Lecture 9 Chrome Extensions
Lecture 9 Chrome Extensions 1 / 22 Agenda 1. Chrome Extensions 1. Manifest files 2. Content Scripts 3. Background Pages 4. Page Actions 5. Browser Actions 2 / 22 Chrome Extensions 3 / 22 What are browser
HOW-TO. Access Data using BCI. Brian Leach Consulting Limited. http://www.brianleach.co.uk
HOW-TO Access Data using BCI http://www.brianleach.co.uk Contents Introduction... 3 Notes... 4 Defining the Data Source... 5 Check the Definition... 7 Setting up the BCI connection... 8 Starting with BCI...
Internationalization & Pseudo Localization
DATA SHEET 08 01 2012 Internationalization & Pseudo Localization Use Lingotek pseudo localization to test localizability of websites, software, and online content such as mobile apps, elearning, surveys,
6. SQL/XML. 6.1 Introduction. 6.1 Introduction. 6.1 Introduction. 6.1 Introduction. XML Databases 6. SQL/XML. Creating XML documents from a database
XML Databases Silke Eckstein Andreas Kupfer Institut für Informationssysteme Technische Universität http://www.ifis.cs.tu-bs.de in XML XML Databases SilkeEckstein Institut fürinformationssysteme TU 2 Creating
Fundamentals of Web Programming a
Fundamentals of Web Programming a Universal Description, Discovery, and Integration Teodor Rus [email protected] The University of Iowa, Department of Computer Science a Copyright 2009 Teodor Rus. These
1/20/2016 INTRODUCTION
INTRODUCTION 1 Programming languages have common concepts that are seen in all languages This course will discuss and illustrate these common concepts: Syntax Names Types Semantics Memory Management We
Reports and Documents Generator for SharePoint ver.: 2.2
Reports and Documents Generator for SharePoint ver.: 2.2 User Guide Version 2.2 Contents 1. Overview... 3 2. Licensing... 4 3. Installation instructions... 4 3.1. Requirements... 4 3.2. Installation...
Chapter 6: Programming Languages
Chapter 6: Programming Languages Computer Science: An Overview Eleventh Edition by J. Glenn Brookshear Copyright 2012 Pearson Education, Inc. Chapter 6: Programming Languages 6.1 Historical Perspective
Why NoSQL? Your database options in the new non- relational world. 2015 IBM Cloudant 1
Why NoSQL? Your database options in the new non- relational world 2015 IBM Cloudant 1 Table of Contents New types of apps are generating new types of data... 3 A brief history on NoSQL... 3 NoSQL s roots
PROBLEM SOLVING SEVENTH EDITION WALTER SAVITCH UNIVERSITY OF CALIFORNIA, SAN DIEGO CONTRIBUTOR KENRICK MOCK UNIVERSITY OF ALASKA, ANCHORAGE PEARSON
PROBLEM SOLVING WITH SEVENTH EDITION WALTER SAVITCH UNIVERSITY OF CALIFORNIA, SAN DIEGO CONTRIBUTOR KENRICK MOCK UNIVERSITY OF ALASKA, ANCHORAGE PEARSON Addison Wesley Boston San Francisco New York London
REST web services. Representational State Transfer Author: Nemanja Kojic
REST web services Representational State Transfer Author: Nemanja Kojic What is REST? Representational State Transfer (ReST) Relies on stateless, client-server, cacheable communication protocol It is NOT
How To Use X Query For Data Collection
TECHNICAL PAPER BUILDING XQUERY BASED WEB SERVICE AGGREGATION AND REPORTING APPLICATIONS TABLE OF CONTENTS Introduction... 1 Scenario... 1 Writing the solution in XQuery... 3 Achieving the result... 6
Parsing Technology and its role in Legacy Modernization. A Metaware White Paper
Parsing Technology and its role in Legacy Modernization A Metaware White Paper 1 INTRODUCTION In the two last decades there has been an explosion of interest in software tools that can automate key tasks
The release notes provide details of enhancements and features in Cloudera ODBC Driver for Impala 2.5.30, as well as the version history.
Cloudera ODBC Driver for Impala 2.5.30 The release notes provide details of enhancements and features in Cloudera ODBC Driver for Impala 2.5.30, as well as the version history. The following are highlights
Redundant Storage Cluster
Redundant Storage Cluster For When It's Just Too Big Bob Burgess radian 6 Technologies MySQL User Conference 2009 Scope Fundamentals of MySQL Proxy Fundamentals of LuaSQL Description of the Redundant Storage
Illustration 1: Diagram of program function and data flow
The contract called for creation of a random access database of plumbing shops within the near perimeter of FIU Engineering school. The database features a rating number from 1-10 to offer a guideline
Server-Side JavaScript Injection Bryan Sullivan, Senior Security Researcher, Adobe Secure Software Engineering Team July 2011
Server-Side JavaScript Injection Bryan Sullivan, Senior Security Researcher, Adobe Secure Software Engineering Team July 2011 Abstract This whitepaper is presented in support of the BlackHat USA 2011 talk,
Duration Vendor Audience 5 Days Oracle End Users, Developers, Technical Consultants and Support Staff
D80198GC10 Oracle Database 12c SQL and Fundamentals Summary Duration Vendor Audience 5 Days Oracle End Users, Developers, Technical Consultants and Support Staff Level Professional Delivery Method Instructor-led
SQL Basics for RPG Developers
SQL Basics for RPG Developers Chris Adair Manager of Application Development National Envelope Vice President/Treasurer Metro Midrange Systems Assoc. SQL HISTORY Structured English Query Language (SEQUEL)
Creating a TEI-Based Website with the exist XML Database
Creating a TEI-Based Website with the exist XML Database Joseph Wicentowski, Ph.D. U.S. Department of State July 2010 Goals By the end of this workshop you will know:...1 about a flexible set of technologies
XML Databases 6. SQL/XML
XML Databases 6. SQL/XML Silke Eckstein Andreas Kupfer Institut für Informationssysteme Technische Universität Braunschweig http://www.ifis.cs.tu-bs.de 6. SQL/XML 6.1Introduction 6.2 Publishing relational
Web Services and XML for RPGers
Web Services and XML for RPGers COMMON PID 570176 (Saturday Workshop, Monorail C) Presented by Scott Klement http://www.scottklement.com 2011-2012, Scott Klement "A computer once beat me at chess, but
Introduction to XML Applications
EMC White Paper Introduction to XML Applications Umair Nauman Abstract: This document provides an overview of XML Applications. This is not a comprehensive guide to XML Applications and is intended for
