Your SlideShare is downloading. ×
0
2012: ql.io and Node.js
2012: ql.io and Node.js
2012: ql.io and Node.js
2012: ql.io and Node.js
2012: ql.io and Node.js
2012: ql.io and Node.js
2012: ql.io and Node.js
2012: ql.io and Node.js
2012: ql.io and Node.js
2012: ql.io and Node.js
2012: ql.io and Node.js
2012: ql.io and Node.js
2012: ql.io and Node.js
2012: ql.io and Node.js
2012: ql.io and Node.js
2012: ql.io and Node.js
2012: ql.io and Node.js
2012: ql.io and Node.js
2012: ql.io and Node.js
2012: ql.io and Node.js
2012: ql.io and Node.js
2012: ql.io and Node.js
2012: ql.io and Node.js
2012: ql.io and Node.js
2012: ql.io and Node.js
2012: ql.io and Node.js
2012: ql.io and Node.js
2012: ql.io and Node.js
2012: ql.io and Node.js
2012: ql.io and Node.js
2012: ql.io and Node.js
2012: ql.io and Node.js
2012: ql.io and Node.js
2012: ql.io and Node.js
2012: ql.io and Node.js
2012: ql.io and Node.js
2012: ql.io and Node.js
2012: ql.io and Node.js
2012: ql.io and Node.js
2012: ql.io and Node.js
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

2012: ql.io and Node.js

5,368

Published on

June 2012 presentation on ql.io and working with the system inside Node.js applications.

June 2012 presentation on ql.io and working with the system inside Node.js applications.

Published in: Technology
0 Comments
3 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
5,368
On Slideshare
0
From Embeds
0
Number of Embeds
5
Actions
Shares
0
Downloads
24
Comments
0
Likes
3
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide
  • Mashing up multiple data sourcesPerformance issuesAdd slides showing performance hits
  • Most mobile applications will, on average, make at least 5+ HTTP data requests per UI paint.
  • Language based on a SQL-like syntax which exports all data to JSON
  • If you’re using the web endpoint you would make HTTP GET requests to the API endpoint, inserting your query in the request. A JSON response will be returned to you.
  • If you download the standalone server version of ql.io, it will sit on top of your existing node server (or within your node applications) and be able to query your internal data and/or external data sources
  • A create table call (to define a data source) may be included in the HTTP request to the ql.io web source or defined in a .ql file, which is added into the /tables directory of your application.
  • Update / Delete requests not currently supported, but are being actively worked on.
  • create table slideshare on select get from "http://www.slideshare.net/rss/user/{user}" resultset "rss.channel";create table github.users on select get from "http://github.com/api/v2/json/user/show/{user}";user = "jcleblanc";slides = select * from slideshare where user="{user}";twitter = select * from github.users where user="{user}";return { "slides": "{slides}", "twitter": "{twitter}"}
  • Route files are also stored with the .ql extension but are placed under the routes directory
  • var script = "create table geocoder " + " on select get from 'http://maps.googleapis.com/maps/api/geocode/json?address={address}&sensor=true' " + " resultset 'results.geometry.location'" + "select lat as lattitude, lng as longitude from geocoder where address='Mt. Everest'";engine.execute(script, function(emitter) {emitter.on('end', function(err, res) {console.log(res.body[0]); });});
  • var script = "create table geocoder " + " on select get from 'http://maps.googleapis.com/maps/api/geocode/json?address={address}&sensor=true' " + " resultset 'results.geometry.location'" + "select lat as lattitude, lng as longitude from geocoder where address='Mt. Everest'";engine.execute(script, function(emitter) {emitter.on('end', function(err, res) {console.log(res.body[0]); });});
  • Transcript

    • 1. ql.io and Node.js: Next GenerationOpen Source Web Querying System Jonathan LeBlanc Developer Evangelist: X.commerce Email: jleblanc@x.com Twitter: @jcleblanc Github: github.com/jcleblanc
    • 2. Topics We’ll Be Covering Overview of ql.io Language Specifications Monkey Patching & Enhancements Integrating Into Your Node Applications Tools and More
    • 3. Topics We’ll Be Covering Overview of ql.io Language Specifications Monkey Patching & Enhancements Integrating Into Your Node Applications Tools and More
    • 4. ql.io: The Problem is API Overload
    • 5. ql.io: Developing for Mobile
    • 6. ql.io: Reducing Workload + Processing Reduced Documentation Reduced Code Length Reduced Result Syncing
    • 7. ql.io: Increasing Performance (Requests)
    • 8. ql.io: Error Handling and Reporting
    • 9. ql.io: Open Standard Foundation
    • 10. ql.io: Using the System Web Endpoint Standalone Server
    • 11. ql.io: Quering the Web Endpoint HTTP GET http://ql.io/q?s=QUERY
    • 12. ql.io: Using the Standalone Server Data (internal) ql.io Node Host Data (external)
    • 13. Topics We’ll Be Covering Overview of ql.io Language Specifications Monkey Patching & Enhancements Integrating Into Your Node Applications Tools and More
    • 14. Language: Defining a Data Source Include in Request Include in .ql Table
    • 15. Language: Create Table for Data Source create table TABLE_NAME on select get from "http://api.com/?val1={val1}" using defaults val1="VALUE", val2="VALUE”;
    • 16. Language: Sample Github Issues Table create table github.issues on select get from "https://github.com/api/v2/json/ issues/list/{user}/{repository}/ {state}/" using defaults state="open";
    • 17. Language: Obtain Data From New Tables select * from TABLE_NAME where val1="VALUE" and val2="VALUE" limit 10 offset 3;
    • 18. Language: Sample Github Table Call select * from github.issues where user="jcleblanc" and repository="reddit-php-sdk"; { "comments": 0, "body": "http://www.phpdoc.org/", "title": "Use standardized documentation", "updated_at": "2011/12/11 13:49:07 -0800", "html_url": "https://github.com/jcleblanc/reddit-php-sdk/issues/3", "state": "open” }
    • 19. Language: Insert Request insert into bitly.shorten (longUrl) values (http://ql.io/docs); "http://bit.ly/uZIvmY"
    • 20. Language: Nested Selects select ItemID, ViewItemURLForNaturalSearch, Location from details where itemId in (select itemId from finditems where keywords=mini cooper); [ "330730216553", "http://www.ebay.com/itm/Clubman-Auto-Sunroof-Prem-…", "Huntingdon Valley, Pennsylvania" ],
    • 21. ql.io: The Test Console Test Console: http://ql.io/console
    • 22. Language: Including Script Routes user = "jcleblanc"; slides = select * from slideshare where user="{user}"; twitter = select * from github.users where user="{user}"; return { "slides": "{slides}", "twitter": "{twitter}" } via route /social using method post;
    • 23. Language: Using Script Routes curl --header "content-type: application/x-www-form-urlencoded" -d "user=jcleblanc" http://localhost:3000/social
    • 24. Topics We’ll Be Covering Overview of ql.io Language Specifications Monkey Patching & Enhancements Integrating Into Your Node Applications Tools and More
    • 25. Patching: Including the Monkey Patch create table TABLE_NAME on select get from "http://api.com/?val1={val1}" using defaults val1="VALUE" using patch "patch.js";
    • 26. Patching: Validating Input Parameters exports[validate param] = function(args, param, value) { switch(param) { case duration : return !isNaN(value - 0) default: return true; } }
    • 27. Patching: The Body Patch exports[patch body] = function() { return { type: application/json, content: JSON.stringify({message : aok}) }; }
    • 28. Patching: The Response Patch exports[patch response] = function(args){ var body = args.body; //modify response body return body; }
    • 29. Topics We’ll Be Covering Overview of ql.io Language Specifications Monkey Patching & Enhancements Integrating Into Your Node Applications Tools and More
    • 30. Node.js: Installing the Package npm install ql.io-engine
    • 31. Node.js: Including the Engine var Engine = require(ql.io-engine); var engine = new Engine({ connection: close });
    • 32. Node.js: Building the Script
    • 33. Topics We’ll Be Covering Overview of ql.io Language Specifications Monkey Patching & Enhancements Integrating Into Your Node Applications Tools and More
    • 34. Tools: API Masher Visualization Engine: https://github.com/jcleblanc/api-masher Technology Backbone – ql.io – jQuery – Mustache Templates
    • 35. Tools: API Masher var format = “<li><a href=‘{{link}}’ target=‘_blank’> <img src=‘{{media:content.media:thumbnail.url}}’ width=‘{{media:content.media:thumbnail.width}}’ height=‘{{media:content.media:thumbnail.height}}’ /></a> <br /><span class=‘small’> <a href=‘{{link}}’ target=‘_blank’>{{title}}</a></span></li>”;
    • 36. Tools: API Masher var query = “create table slideshare on select get from ‘http://www.slideshare.net/rss/user/{user}’ resultset ‘rss.channel’; select * from slideshare where user=“jcleblanc” var insertEl = “widgetContainer”; parser.push(query, format, insertEl); parser.render();
    • 37. Tools: API Masher Results Showcase Website: http://jcleblanc.com
    • 38. Tools: External API Tables Tables Source: https://github.com/jcleblanc/ql.io-tables
    • 39. ql.io: The Link
    • 40. Thank You!http://slidesha.re/ql-io-node Jonathan LeBlanc Developer Evangelist: X.commerce Email: jleblanc@x.com Twitter: @jcleblanc Github: github.com/jcleblanc

    ×