耦合銳和YQL的建立動態構件
2009年6月17日,11:14上午由喬納森·勒布朗| 開發 | 14評論
作者簡介: 喬納森·勒布朗(嘰嘰喳喳: jcleblanc )的工作夥伴整合組在雅虎 作為一名高級軟件工程師/技術推廣 開發網絡 。 合作夥伴關係和培訓,以及外部開發一體化為重點,喬納森與促進新興技術,以幫助在新的社會發展技術的採用和利用。 作為一個軟件工程師,喬納森工程廣泛與社會在網絡上的互動發展,發展聯繫起來的社會網絡來推動一個開放的網絡的理想的新方法。 雅虎之前,喬納森媒體CBSSports.com,在那裡他開發的產品上,如榮獲艾美獎殊榮的視頻點播播放器上瘋狂三月的生產和幻想的產品開發團隊內工作。 喬納森在加拿大出生和長大,畢業於阿岡昆的應用藝術與技術學院計算機科學學士學位,並與他的妻子目前住在都柏林,CA。
YUI有一個非常豐富的數據操縱和公用事業在其圖書館的UI列表,但同樣豐富有趣的數據,一般是作為實施者的責任。 YQL的同樣的道理,有豐富的數據抓取和互動的能力,但它缺乏YUI的可視化工具。 以YUI的可視化和控制功能和耦合YQL的原始數據管他們,我們可以建立無需創建任何可視化的數據存儲機制自己的令人難以置信的豐富的,互動的部件。
我給你一個建在這個崗位與YUI和YQL的兩個部件的巡演。 一個顯示公開可用的內容後,服務器端PHP組件通過使用OAuth認證用戶的私人數據顯示,與原有的部件和其他版本。
訪問公共數據
使用YUI的獲取效用 ,我們能夠向公眾請求YQL的疼痛,是不是對相同來源政策問題的處理,通常會阻止我們的XHR基於請求到服務器,而無需查詢網址同一域發起請求。 下面是一個小的展示你將如何調用YQL的使用YUI的獲取實用的代碼示例:
<script type="text/javascript"> VAR getYQLData =功能(查詢) / /準備YUI的GET請求的URL: VAR yqlPublicQueryURL =“http://query.yahooapis.com/v1/yql?”; VAR SURL = yqlPublicQueryURL +“Q =”查詢 +“&格式= json的回調= yqlWidget.getYQLDataCallback”; / /使GET請求提供查詢YQL transactionObj = YAHOO.util.Get.script(SURL,{ 的onSuccess:onYQLReqSuccess, onYQLReqFailure onFailure處: 適用範圍:本 }); 返回transactionObj; } </ SCRIPT>
查詢網址( sURL )幾個不同的部分組成,以彌補請求。 yqlPublicQueryURL變量包含要求YQL的公共URI。 也有三個查詢參數,我們傳遞這個URI。 q參數是YQL的查詢使用,我們在我們的要求(如select * from flickr.photos.search where text="YDN" ) format是我們想從請求返回(JSON或XML)的格式,如果我們要包裝的JSON返回一個函數中的數據( JSONP )使用callback參數,我們可以定義一個回調函數。 此功能運行時,獲取實用工具將一個請求query.yahooapis.com指定的查詢。 成功,調試消息將顯示在get工具,然後在YQL的查詢定義的回調將被稱為解析返回的JSON結果onSuccess回調。
設立自己的網站或博客上的部件,如下載代碼從github上的簡單js-yql-display在文件夾http://github.com/jonleblanc/yql-utilities/tree/master和實例部件如這樣的:
<! - widget文件包括: - > <script type="text/javascript" src="yql_js_widget.js"> </ SCRIPT> <! - 小部件樣式 - > <STYLE> div.imgCnt {邊界:1px固體RGB(96,96,96); 保證金:5PX 5PX 5PX 0pt;浮動:左; 背景顏色:RGB(241,241,241);寬度:100像素; 高度:140px單擊;} div.imgCnt IMG {邊界:0;保證金:5PX;} div.imgCnt div.imgTitle {填充:5PX的字體大小:11px; 文本對齊:中心;} </ STYLE> <script type="text/javascript"> CONFIG = {'調試':真}; VAR格式=的<div class="imgCnt" ALIGN="CENTER"> +“的<a href =”{雇主} / {id}的http://www.flickr.com/photos/ /“” +“目標=”_blank“> <IMG SRC =”http://farm3.static。 + flickr.com / {服務器} / {id}的{秘密}。JPG?V = 0“ +“寬度=”80“=”80“/> </ A> + <div class="imgTitle">“ +“的<a href =”http://www.flickr.com/photos/ {業主} / + {ID} /“> {標題} </ A> +'</ DIV> </ DIV>'; VAR yqlQuery = “選擇*從flickr.photos.search的文本=”YN系列“; insertEl ='widgetContainer“; yqlWidget.push(yqlQuery,配置,格式,insertEl); </ SCRIPT>
可以使用上面的例子-如何配置腳本的作品,可以發現所有的文件github上任何公共YQL的查詢數量。 如果我們運行上面的代碼,我們可以很容易地顯示我們最新的Flickr照片:
那麼,為什麼這樣比使用YQL的和YUI一起上做文章? 嗯,對我來說這些公用事業帶給我相當接近傳統的MVC(模型 - 視圖 - 控制器)設計模式的類型。 YQL是一個精彩的數據匯總和操縱的工具,但在這一天結束,它只是數據。 我們獲取實用程序或連接管理器使用YUI的公用事業,如插入控制器的功能,那麼我們就可以使用類似部件上建立我們的表現層數據表和圖表 。
訪問私有的用戶數據
讓我們來探討YUI和YQL的遠一點的配對,以建立公眾的JavaScript查詢部件的基礎和附加服務器端組件,驗證和存儲OAuth的會議。 使用的Y!操作系統的PHP SDK ,我們是能夠擴展的JavaScript小部件顯示更新流和原本身份驗證部件的用戶的個人徽章 細節。 由於我們使用相同的域上為我們的部件,使我們的認證呼籲YQL的的PHP SDK,我們不再需要擔心的相同來源政策問題。 這意味著我們可以交換使用銳獲取實用 YUI連接管理 。 使用的效益連接管理器 ,我們可以使用一個標準的Ajax請求的事件處理程序和實用工具,而不是在YQL的查詢回調。 我們新的請求函數看起來像這樣:
<script type="text/javascript"> VAR getYQLData =功能(查詢) / /準備銳連接管理器POST URL後的數據: SURL =“private_data_fetch.php”; POSTDATA =“Q =”查詢; / /定義連接管理器事件回調 VAR回調= { 成功parseYQLResults, 故障:onYQLReqFailure }; / /使POST請求提供查詢YQL transactionObj = YAHOO.util.Connect.asyncRequest('POST', SURL,回調,POSTDATA); 返回transactionObj; } </ SCRIPT>
連接管理器是用來使AJAX請求的PHP SDK(其安置引用private_data_fetch.php作為POST參數的查詢,在上面的代碼)。 SDK反過來使得用戶的個人數據和轉儲了JSON字符串作為請求返回的身份驗證的請求。 然後所有你需要做的是使用YUI JSON的實用解析JSON字符串;稱為YAHOO.util.JSON.parse()後,你的交易結果,您的數據可以以同樣的方式在數據處理第一個例子。
YQL的,因為被稱為請求時生成的結果,有沒有必要容納自己這個數據。 YQL的,能夠從任何可用的源數據,這樣你就可以建立這些部件如每次刷新顯示的動態結果。
在這篇文章中展示的部件都是自由github上可供下載和貢獻
http://github.com/jonleblanc/yql-utilities/tree/master 。 這些部件包括:
-
js-yql-display:JavaScript小部件顯示公眾YQL的數據 -
php-yql-display的JavaScript / PHP部件顯示私人YQL的數據,
共享和擴展: 書籤del.icio.us Digg它! | reddit!
14評論
很抱歉,評論已被封閉,在這個時候。




[...]不知道該怎麼辦? 那麼,他們有一些例子使用地震數據。 或者你可以看看他們的指導,對建築構件。 [...]
通告的由黑客黑客休息室/開源大橋與YQL的公共數據:開源公民/ 2009/6月17-19日,波特蘭,或會議 - 6月17日,2009 #
你一言我認為發展的DataSource處理YQL的請求的一個子類。 在這項工作中,你可以看到例如連同DataTable小部件。
感謝您的想法。
薩蒂揚- 6月21日,2009 #
這是一個很好的例子 - 你打我吧:)。 我考慮到作為一個不同的YUI組件的數據源使用YQL的一看,這是一個完美的例子。 額外的好處是,你不必保持在數據庫中的數據源。
- 喬恩
評論由喬納森勒布朗 - 6月22日,2009 #
謝謝。 無論如何,它顯示了在YQL的響應輕微的弱點:它沒有提供任何有關結果的元數據。
我只能猜測,在query.results的第一條記錄是好的模板了所有的休息,但可能是不正確的,實在沒有理由認為它是如此。
此外,它不提供的數據類型的信息,我應該能夠解析到本地JavaScript類型的日期,數字和布爾值,但我不能,除非開發人員告訴我,這是一個遺憾,因為這些信息可能是反正有。 我可以問一個倒序,但做兩方面的要求,將複製的延遲時間,可惜,真的。
薩蒂揚- 6月22日,2009 #
喬恩,
YUI的計劃,以支持本地函數/功能是否使用封在未來的JSONP回調?
我看到JSONP支持的唯一途徑是通過全球性的功能。
vipul
Vipul - 6月24日,2009 #
也許沒有必要提,但YUI的JSON的UTIL下YAHOO.lang生活,而不是YAHOO.util。
常見的錯誤。 我做了自己幾次。
評論由盧克 - 6月24日,2009 #
嗨盧克,你是絕對正確的 - 它看起來像我複製/粘貼太快寫作時後,部分。 我驗證了在檢查代碼在github上正確地在郎引用的部件將需要更新,應該是可用的。
感謝您指出了這一點。
- 喬恩
評論由喬納森勒布朗 - 7月1日起,二零零九年#
vipul - 說實話我不能肯定,YUI團隊可能會比我更好地回答這個問題
評論由喬納森勒布朗 - 7月2日,二零零九年#
[...]喬納森·勒布朗銳3:YUIBlog撰稿人喬納森·勒布朗,雅虎開發者網絡團隊技術的傳播者,是在南卡羅來納州[...]
2009»7月17日,雅虎用戶接口博客 - 在野外 pingback的7月17日,2009 #
[...]對於更深入的解釋是建立與此工具對YUI博客看看我的崗位在http://www.yuiblog.com/blog/2009/06/17/yui-和YQL / [...]
pingback的通過耦合YUI和YQL的建設的JavaScript小部件|赤裸技師 - 7月17日,2009 #
您好喬恩
我做了一些搜索,但未能找到任何基於Python的lib /代碼/例如訪問私有數據。 你知道,如果這樣的“東西”存在?
謝謝。
安東尼奧- 9月10日,2009 #
安東尼奧,
是雅虎開放戰略的Python SDK提供的,這應該可以幫助您訪問私人雅虎用戶的個人資料數據。 該SDK位於http://github.com/yahoo/yos-social-python/tree
- 喬恩
評論由喬納森勒布朗 - 9月14日,2009 #
您好!
我測試的“訪問公共數據”,有一個問題。 當生成一個查詢,,和reterned數據是好的,但我們做什麼,如果沒有數據返回或“公共服務器”是不行的時刻。 如果我們有一些“推”和“渲染”功能使訪問一些difrent服務器,如果中間推不返回數據,所有的下一個“推”是停止工作! 如何防止這種情況。 謝謝!
評論Jovchev - 10月8日,二零零九年#
[...] YQLDataSource銳2:“感謝喬納森·勒布朗的銳博客上的文章,我認為這會很酷有YQLDataSource,以使其更容易使用YQL的數據,在銳2 [...]
2010»3月11日,雅虎的用戶界面博客(YUIBlog)的 - 在野外 pingback的3月12日,2010 #