410 likes | 424 Views
YQL is a highly rich and dynamic utility for capturing data from any place on the web. When we couple this functionality with YUI we have wonderful functionality for designing apps and sites easily and that scale around MVC design patterns.
E N D
Browser MVC with YQL and YUI Jonathan LeBlanc Technology Evangelist Yahoo! Developer Network Twitter: @jcleblanc
Geo Maker Available At: http://icant.co.uk/geomaker/index.php 2
Yahoo! Social Updates Available At: www.nakedtechnologist.com/ php_widget_oauth/ yql_php_widget.html 3
Christian Heilmann‟s Website Available At: http://icant.co.uk/ 4
Fetching Dynamic Data with YQL Browser MVC Model Component 5
YQL Query Structure SELECT * FROM Internet 7
YQL Test Console Available At: http://developer.yahoo.com/yql/console 8
Running Queries - SELECT Query Structure SELECTmyColumn, myTitle FROMmyTable WHEREmyColumn = 'value' ANDmyTitle = 'title„ LIMIT3 OFFSET10 9
Running Queries - INSERT / UPDATE / DELETE Modify Data on the Internet Create Tweets, Add Blog Entries, Update Databases Current Tables Using I/U/D Twitter Status, bit.ly URL Shortner, Yahoo! Profile Status / Update Stream, Amazon SimpleDB 10
Running Queries - INSERT Query Structure INSERT INTObitly.shorten (login, apiKey, longUrl) VALUES (‟ME', 'API_KEY', 'http://yahoo.com') 11
Running Queries - UPDATE Query Structure UPDATE social.profile.status SET status="Using YQL UPDATE" WHEREguid=“NJFIDHVPVVISDXZKT7UKED2WHU” 12
Running Queries - DELETE Query Structure DELETE FROM twittertable WHERE tweetid="12345" AND username="twitter_username" AND password="twitter_password 13
Running Queries – Sub-selects with the IN clause SELECT * FROM flickr.photos.search WHERE (lat, lon) IN (SELECT centroid.latitude, centroid.longitude FROM geo.places WHERE text="SFO") 14
Running Queries – Available Tables YQL Command: SHOW Tables Number of Standard Tables: 105 Number of Community Tables: 600 Total Number of Tables: 705 Contribute Tables to: http://www.github.com/yql/yql-tables/ 15
Running Queries – Table Syntax YQL Command: DESC tablename 16
Running Queries – URL Format http://query.yahooapis.com/v1/yql?[params] http://query.yahooapis.com/v1/public/yql?[params] Params • q=[QUERY] • format=[XML / JSON] • diagnostics=[true / false] • debug=[true / false] • env=[.env file link] • callback=[function name] 17
Running Queries – URL Format http://query.yahooapis.com/v1/yql?[params] http://query.yahooapis.com/v1/public/yql?[params] Params • q=[QUERY] • format=[XML / JSON / JSONP / JSONP-X] • diagnostics=[true / false] • debug=[true / false] • env=[.env file link] • callback=[function name] 18
YQL Open Data Tables Wrap Your Own API or Data Source 19
Open Data Tables – XML File Syntax <?xml version="1.0" encoding="UTF-8"?> <table xmlns="http://query.yahooapis.com/v1/schema/tabl e.xsd"> <meta></meta> <bindings></bindings> </table> 20
Open Data Tables – XML File Syntax <?xml version="1.0" encoding="UTF-8"?> <table xmlns="http://query.yahooapis.com/v1/schema/tabl e.xsd"> <meta></meta> <bindings></bindings> </table> 21
Open Data Tables – XML File Syntax <?xml version="1.0" encoding="UTF-8"?> <table xmlns="http://query.yahooapis.com/v1/schema/table.xsd"> <meta> <author>Jonathan LeBlanc</author> <description>My Table</description> <documentationURL>www.site.com</documentationURL> <sampleQuery>SELECT * FROM {table} </sampleQuery> </meta> <bindings></bindings> </table> 22
Open Data Tables – XML File Syntax <?xml version="1.0" encoding="UTF-8"?> <table xmlns="http://query.yahooapis.com/v1/schema/tabl e.xsd"> <meta></meta> <bindings></bindings> </table> 23
Open Data Tables – XML File Syntax <?xml version="1.0" encoding="UTF-8"?> <table xmlns="http://query.yahooapis.com/v1/schema/table.xsd"> <meta></meta> <bindings> <select itemPath="" produces="XML" > <urls> <urlenv="all”>http://www.site.com/{user}</url> </urls> <inputs> <key id="user" type="xs:string" paramType="path" required="true" /></inputs> </select> </bindings> </table> 24
Open Data Tables – Invoking a Table Definition The USE clause USE 'http://github.com/yql/yql- tables/raw/master/google/google.buzz.upd ates.xml' AS buzz.updates; SELECT * FROM buzz.updates WHERE user='nakedtechnologist' 25
Google Buzz Table Available At: http://github.com/yql/yql-tables
YQL Execute Extending Open Data Tables 27
YQL Execute – Use Benefits Augment data - city / state to APIs that just return zip code Create APIs from web pages - celebrity birthdays scraped from IMDB Data Transformations - convert the results from xml to Google's kml format Move business logic of your application to the cloud 28
YQL Execute – XML File Syntax <?xml version="1.0" encoding="UTF-8"?> <table xmlns="http://query.yahooapis.com/v1/schema/table.xsd" > <meta></meta> <bindings> <select itemPath="" produces="XML" > <urls></urls> <inputs></inputs> </select> </bindings> </table> 29
YQL Execute – XML File Syntax <?xml version="1.0" encoding="UTF-8"?> <table xmlns="http://query.yahooapis.com/v1/schema/table.xsd" > <meta></meta> <bindings> <select itemPath="" produces="XML" > <urls></urls> <inputs></inputs> <execute></execute> </select> </bindings> </table> 30
Global Disaster Alert and Coordination System Table Available At: http://github.com/yql/yql-tables
YUI Data Handling & Manipulation Browser MVC Controller Component 32
YUI Visualization: Controller DATA PROCESSING GET Connection Manager HANDLING & MANIPULATION DOM Event Uploader 33
YUI Visualization: Controller (GET Utility) <script type="text/javascript"> //public YQL query URL varyqlPublicQueryURL = "http://query.yahooapis.com/v1/public/yql?"; //YQL Query varsQuery = 'SELECT * FROM maps.map WHERE zip="94085"'; //prepare the URL params for YQL query varsURL = yqlPublicQueryURL + "q=" + encodeURI(sQuery) + "&format=json&callback=getYQLDataCallback"; //make GET request to YQL with provided query vartransactionObj = YAHOO.util.Get.script(sURL, { onSuccess : onYQLReqSuccess, onFailure : onYQLReqFailure, scope : this }); return transactionObj; </script> 34
YUI Visualization: Controller (Connection Manager) <script type="text/javascript"> //YQL Query varsQuery = 'select lastUpdated, link, loc_iconURL, loc_longForm, profile_nickname, profile_pr ofileUrl, publishedTime from social.updates where guid=me | sort(field="lastUpdated") | reverse()'; //prepare the URL & post data for the Yahoo! connection manager POST varsURL = "private_data_fetch.php"; varpostData = "q=" + sQuery; //define connection manager event callbacks var callback = { success:parseYQLResults, failure:onYQLReqFailure }; //make POST request to YQL with provided query vartransactionObj = YAHOO.util.Connect.asyncRequest('POST', sURL, callback, postData); </script> 35
YUI Visualization Browser MVC View Component 36
YUI Visualization: View VISUALIZATION UTILITIES Animation Button Calendar Color Picker Carousel Charts Data Table ImageLoader Layout Manager Menu ProgressBar Slider Stylesheet SWF Utility TabView TreeView 37
YUI Visualization: Pseudo They Go Both Ways Drag and Drop ImageCropper Rich Text Editor 38
Conclusion Build applications faster (and that run faster) 39
This Presentation http://www.slideshare.net/jcleblanc YQL Documentation http://developer.yahoo.com/yql YUI Documentation http://developer.yahoo.com/yui YQL Console http://developer.yahoo.com/yql/console YQL Github Account (Contribute Tables) http://github.com/yql/yql-tables
Thank You Questions? 41