Pagkabit Yui at YQL sa Bumuo ng mga Dynamic Widgets

Hunyo 17, 2009 at 11:14 am sa pamamagitan ng Jonathan LeBlanc | Sa Development | 14 Comments

Yahoo! Developer Network Jonathan LeBlanc ebanghelista Tungkol sa Author: Jonathan LeBlanc (nerbiyos: jcleblanc ) ay gumagana sa ang integration ng kasosyo ng group sa Yahoo! Developer Network bilang isang senior ebanghelista software engineer / teknolohiya. Tumututok sa relasyon kasosyo at pagsasanay, pati na rin ang panlabas na developer integration, Jonathan gumagana sa at nagpapalaganap ng mga umuusbong na teknolohiya upang aid sa pag-aampon at paggamit ng bagong panlipunang mga pamamaraan sa development. Bilang isang software engineer, gumagana ang Jonathan malawakan sa sosyal na pakikipag-ugnayan ng development sa web, pagbuo ng mga bagong pamamaraan para sa pag-uugnay ng mga social network drive ang ideal ng isang bukas na web. Bago Yahoo!, Jonathan nagtrabaho sa loob ng parehong media na produksyon at pantasiya product development koponan sa CBSSports.com, kung saan siya ay binuo sa mga produkto tulad ng ang Emmy award-winning martsa kabaliwan sa demand na video player. Ipinanganak at itataas sa Canada, Jonathan nagtapos mula sa Algonquin College of Applied Arts at Teknolohiya na may isang degree sa computer science at kasalukuyang nakatira sa Dublin, CA sa kanyang asawa .

Yui ay isang kamangha-mangha rich listahan ng pagmamanipula ng data at UI utilities sa kanyang library, ngunit pagdating up sa pantay rich at kagiliw-giliw na data ay karaniwang ang iyong responsibilidad bilang isang implementer. Sa parehong token, YQL ay rich pagkuha ng data at mga kakayahan sa pakikipag-ugnayan, ngunit ito ay walang mga gamit visualization ng Yui. Tumatagal ang visualization at kontrol ng mga tampok ng Yui at pagkabit sa mga ito sa raw data ng pipe ng YQL, maaari kaming bumuo ng mga hindi mapaniniwalaan o kapani-paniwala rich, interactive na mga widgets na walang ang kailangan upang lumikha ng anumang ng ang visualizations o imbakan ng mga data mekanismo ating sarili.

Bibigyan kita ng isang tour ng dalawang mga widget na binuo sa Yui at YQL sa post na ito. Isa ay nagpapakita ng publiko na nilalaman at ang iba pang mga builds sa na orihinal na widget na may isang server-side na bahagi na PHP upang ipakita ang mga pribadong mga data ng gumagamit sa pamamagitan ng pagpapatunay sa OAuth.

Access sa mga Public Data

Gamit ang Yui Kumuha ng utility , hindi namin magagawang upang gumawa ng mga hiling sa publiko YQL query URL nang walang pagkakaroon ng sakit ng pagharap sa ang parehong patakaran ng isyu ng pinagmulan na normal maiwasan sa amin mula sa paggawa ng mga XHR-based na mga kahilingan sa isang server na hindi sa parehong domain bilang ang nanggagaling kahilingan. Nasa ibaba ang isang maliit na sample code na showcases kung paano mo tawagan YQL gamit ang Yui Kumuha ng utility :

 <script type="text/javascript">
 var getYQLData = function na (query) {
     / / Ihanda ang URL para sa Yui GET kahilingan:
     var yqlPublicQueryURL = "http://query.yahooapis.com/v1/yql?";
     var sURL = yqlPublicQueryURL + "q =" + query
         + "& Format = JSON & callback = yqlWidget.getYQLDataCallback";

     / / GET kahilingan sa YQL sa ibinigay query
     var transactionObj = YAHOO.util.Get.script (sURL, {
         onSuccess: onYQLReqSuccess,
         onFailure: onYQLReqFailure,
         saklaw: ito
     });

     bumalik transactionObj;
 }
 </ Script>

Ang query URL ( sURL ) ay binubuo ng ilang iba't-ibang bahagi upang gumawa ng up ang kahilingan. Ang yqlPublicQueryURL variable ay naglalaman ng pampublikong URI para sa paggawa ng mga kahilingan sa YQL. Mayroon ding tatlong mga parameter ng query na namin ang pagpasa kasama sa URI na ito. Ang q parameter ay ang YQL query na ginagamit namin sa aming kahilingan (hal. select * from flickr.photos.search where text="YDN" YDN " format , ang format ay ang format na gusto ibinalik namin (JSON o XML) mula sa kahilingan , at kung namin Gusto sa wrap JSON ang ibinalik ng data sa isang function (a la JSONP) maaari naming tukuyin ang isang callback function na gamit callback callback parameter . Kapag tumatakbo ang function na ito, ang Kumuha ng utility ay gumawa ng isang kahilingan query.yahooapis.com query.yahooapis.com gamit sa tinukoy na query . Sa tagumpay, isang debug na mensahe ay ipapakita onSuccess onSuccess callback para sa Kumuha ng utility pagkatapos ng callback na tinukoy sa YQL query ay tinatawag upang i-parse ang nagbalik ng mga resulta JSON.

Pagse-set up ang widget na ito sa iyong sariling site o blog ay bilang simpleng bilang-download ang code js-yql-display -display na folder sa github sa http://github.com/jonleblanc/yql-utilities/tree/master at instantiating ang widget gusto ito:

 <-! Widget file isama ->
 <script type="text/javascript" src="yql_js_widget.js"> </ script>

 <-! Widget estilo ->
 <style>
 div.imgCnt {border: 1px solid rgb (96, 96, 96);
     margin: 5px 5px 5px 0pt; karosa: kaliwa;
	 background-kulay: rgb (241, 241, 241); lapad: 100px;
	 taas: 140px;}
 div.imgCnt img {border: 0; margin: 5px;}
 div.imgCnt div.imgTitle {padding: 5px; font-size: 11px;
     text-ihanay: center;}
 </ Style>

 <script type="text/javascript">
 var config = {'debug': true};
 var format = '<div class="imgCnt" align="center">'
     + '<A href = "http://www.flickr.com/photos/ {ari} / {id} /"'
     + 'Target = "_blank"> <img src = "http://farm3.static.'
     + 'Flickr.com / {server} / {id} _ {lihim}. Jpg? V = 0 "'
     + 'Lapad = "80" na taas = "80" /> </ a>'
     + '<div Class="imgTitle">'
     + '<A href = "http://www.flickr.com/photos/ {ari} /'
     + '{Id }/">{ pamagat} </ a>'
     + '</ Div> </ div>';
 var yqlQuery =
     'Piliin ang * mula sa flickr.photos.search kung saan teksto = "YDN";
 var insertEl = 'widgetContainer';
 yqlWidget.push (yqlQuery, config, format, insertEl);
 </ Script>

Anumang bilang ng mga pampublikong YQL query ay maaaring ginawa gamit ang halimbawa sa itaas - ang lahat ng papeles para sa kung paano ang configuration script gumagana ay matatagpuan sa github. Kung nagpapatakbo namin ang code sa itaas madali maaari naming ipakita ang aming pinakabagong mga larawan Flickr:

Flickr larawan display

Kaya, kung bakit ang lahat ng mga pagpapakaabala higit sa paggamit ng YQL at Yui-sama tulad nito? Well, para sa akin ang mga utilities na ito dalhin sa akin medyo malapit sa isang tradisyonal na uri ng MVC (Modelo Tingnan ang Controller) ng disenyo pattern. YQL ay isang kahanga-hangang mga data ng pagsasama-sama at manipulasyon tool, ngunit sa pagtatapos ng araw ito lang ang data. Namin ipasok ang controller pag-andar na gamit ng mga utilities Yui tulad Kumuha ng utility o manager ang Connection, pagkatapos ay maaari naming bumuo ng aming pagtatanghal layer sa itaas ng na ang paggamit ng mga widgets tulad ng DataTable at Tsart.

pribadong update stream

Access Pribadong Data ng Gumagamit

Hayaan ang galugarin ang pagpapares ng Yui at YQL kaunti karagdagang sa pamamagitan ng paglalaan ng pundasyon na binuo sa pampublikong JavaScript query widget at attach ang isang server-side na bahagi upang patotohanan at tindahan ng isang OAuth session. Paggamit ng Y! OS PHP SDK, hindi namin ma-extend ang JavaScript widget upang ipakita ang update na stream at personal na mga detalye ng badge ng gumagamit na orihinal na napatotohanan ng widget. Dahil kami gamit ang PHP SDK sa parehong domain bilang aming mga widget sa aming mga napatotohanan tawag sa YQL, hindi na namin kailangang mag-alala tungkol sa parehong pinagmulan isyu patakaran. Ito ay nangangahulugan na maaari naming palitan ang paggamit ng mga utility Yui Kumuha sa Yui Connection Manager . Ang benepisyo sa gamit ang Connection Manager dito ay na maaari naming gamitin ang isang karaniwang ajax kahilingan at ang mga kaganapan handlers ng utility sa halip ng isang callback sa loob ng YQL query. Ang aming bagong kahilingan function na magiging hitsura ng isang bagay tulad nito:

 <script type="text/javascript">
 var getYQLData = function na (query) {
     / / Maghanda ang mga data ng URL & post para sa Yui POST Connection Manager:
     var sURL = "private_data_fetch.php";
     var postData = "q =" + query;

     / / Tukuyin ang mga callbacks sa Connection Manager kaganapan
     var callback = {
         tagumpay: parseYQLResults,
         kabiguan: onYQLReqFailure
     };

     / / POST kahilingan sa YQL sa ibinigay query
     var transactionObj = YAHOO.util.Connect.asyncRequest ('POST',
	     sURL, callback, postData);

     bumalik transactionObj;
 }
 </ Script>

Ang Connection Manager ay ginagamit upang gumawa ng mga kahilingan AJAX sa PHP SDK (na ang mga private_data_fetch.php ay housed sa private_data_fetch.php sa loob ng code sa itaas) sa query bilang isang parameter ng ​​POST. Ang SDK naman ay gumagawa ng isang napatunayang na kahilingan para sa mga personal na data ng gumagamit at lungkot ang isang string JSON bilang bumalik ang kahilingan. Pagkatapos lahat ng kailangan mong gawin ay parse ng JSON string gamit ang utility Yui JSON; matapos YAHOO.util.JSON.parse() YAHOO.util.JSON.parse () sa mga resulta ng transaksyon, ang iyong data ay maaaring tratuhin sa parehong paraan tulad ng ang data sa unang halimbawa.

Dahil ang YQL bumubuo ng mga resulta kapag ang kahilingan ay tinatawag, hindi na kailangan sa bahay ang data na ito para sa iyong sarili. YQL maaaring pull ang mga data mula sa anumang magagamit na mapagkukunan upang maaari mong bumuo ng mga widgets tulad ng mga display ng mga dynamic na mga resulta sa bawat refresh.

Pareho ng mga widget na showcased sa post na ito ay malayang magagamit para sa download at kontribusyon sa github sa
http://github.com/jonleblanc/yql-utilities/tree/master . Mga widgets ay:

  • js-yql-display : JavaScript widget upang ipakita ang mga pampublikong YQL data
  • php-yql-display : JavaScript / PHP widget upang ipakita ang mga pribadong YQL data

Ibahagi at i- extend: Bookmark sa del.icio.us | Digg ito ! | reddit!

14 Comments

  1. [...] Hindi sigurado kung ano ang gagawin? Well, mayroon silang ilang mga halimbawa gamit ang data lindol. O maaari mong tingnan ang kanilang gabay sa gusali ng mga widgets. [...]

    Pingback sa pamamagitan ng Hacking pampublikong data sa YQL sa Hacker silid-pahingahan / Open Source Bridge: Ang conference para sa mga open source mamamayan / Hunyo 17-19, 2009 / Portland , O - June 17 , 2009 #

  2. Ginawa mo na tingin sa akin tungkol sa pagbuo ng isang subclass ng datasource upang hawakan ang YQL kahilingan. Maaari mong makita ang mga ito sa trabaho sa halimbawa na ito kasama ang widget DataTable.

    Salamat para sa mga ideya.

    Puna sa pamamagitan ng Satyam - Hunyo 21, 2009 #

  3. Iyan ay isang mahusay na halimbawa - matalo ka sa akin dito:). Ako ay pagkuha ng isang tumingin sa paggamit ng YQL bilang isang source ng data para sa iba't-ibang mga bahagi Yui at ito ay isang perpektong halimbawa ng na. Ang karagdagang benepisyo ay na hindi mo upang mapanatili ang data source sa isang database.

    - Jon

    Puna sa pamamagitan ng Jonathan LeBlanc - Hunyo 22, 2009 #

  4. Salamat. Pa rin, ito ay nagpapakita ng isang menor de edad kahinaan sa ang tugon mula sa YQL: ito ay hindi magbigay ng anumang mga meta-data tungkol sa mga resulta.

    Hulaan ko lamang na ang unang tala sa query.results ay isang magandang template para sa lahat ng pahinga, ngunit maaaring hindi tunay, mayroong talaga walang dahilan upang ipalagay na ito.

    Bukod dito, ito ay hindi magbigay ng datatype impormasyon, ang dapat kong ma-parse ang mga petsa, numero at booleans sa kanilang sariling mga uri ng JavaScript, ngunit hindi ko maliban kung ang developer ang nagsasabi sa akin, na kung saan ay isang awa dahil ang impormasyon ay marahil doon pa rin. Maaari kong tanungin para sa isang DESC, ngunit ang paggawa ng dalawang kahilingan ay duplicate ang latency oras, naman, talaga.

    Puna sa pamamagitan ng Satyam - Hunyo 22, 2009 #

  5. Jon,

    Ang Yui plano upang suportahan ang mga lokal na-function / function na nilikha gamit ang mga closures bilang jsonp callbacks sa hinaharap?

    Ang tanging paraan na nakikita ko jsonp suportado sa pamamagitan ng global function.

    Vipul

    Puna sa pamamagitan ng Vipul - Hunyo 24, 2009 #

  6. Marahil hindi kinakailangang banggitin, ngunit Yui ng JSON util buhay sa ilalim ng YAHOO.lang, hindi YAHOO.util.

    Karaniwang pagkakamali. Nagawa ko ito sa aking sarili ng isang mga ilang beses.

    Puna sa pamamagitan ng Luke - Hunyo 24, 2009 #

  7. Hi Luke, ikaw ay ganap na karapatan - ito Mukhang kopya ko / paste masyadong mabilis na kapag pagsusulat na bahagi ng ang post. Ko verify na sa check sa code sa loob ng github tama ito ay sumasangguni sa ilalim lang kaya widget ay hindi kailangan ng isang update at dapat na magagamit.

    Salamat para sa pagturo na out.

    - Jon

    Puna sa pamamagitan ng Jonathan LeBlanc - Hulyo 1, 2009 #

  8. Vipul - upang maging matapat na hindi ako tiyak, ang koponan ng Yui ay marahil ay mas mahusay na sa answer na kaysa sa I.

    Puna sa pamamagitan ng Jonathan LeBlanc - Hulyo 2, 2009 #

  9. [...] Jonathan LeBlanc sa Yui 3: YUIBlog kontribyutor Jonathan LeBlanc, isang teknikal na mangangaral ng Ebanghelyo sa koponan ng Yahoo Developer Network, ay sa South Carolina [...]

    Pingback sa pamamagitan ng Sa ang Wild para sa Hulyo 17, 2009 »Blog sa Yahoo! User Interface - Hulyo 17 , 2009 #

  10. [...] Para sa isang mas malalalim na paliwanag kung ano ay binuo gamit ang tool na tumagal ng isang tumingin sa aking post sa blog Yui sa http://www.yuiblog.com/blog/2009/06/17/yui- at yql / [...]

    Pingback sa pamamagitan ng pagkabit Yui at YQL upang bumuo JavaScript Widgets | Ang hubad teknologo - Hulyo 17 , 2009 #

  11. Hi Jon,

    Ko ng ilang mga paghahanap ngunit nabigong mahanap ang anumang python batay lib / code / halimbawa upang ma-access ang mga pribadong data. Alam mo ba kung sa tulad "bagay" na umiiral?

    Salamat.

    Puna sa pamamagitan ng Antonio - Setyembre 10, 2009 #

  12. Antonio,

    Mayroong isang Yahoo! Buksan ang Strategy Python SDK magagamit kung saan ay dapat makatulong sa iyo ng access ang mga pribadong mga data sa Yahoo! profile ng gumagamit. SDK Iyon ay matatagpuan sa http://github.com/yahoo/yos-social-python/tree

    - Jon

    Puna sa pamamagitan ng Jonathan LeBlanc - Setyembre 14, 2009 #

  13. Hello,
    Ako nasubukan "access Public Data" at may tanong. Kapag binuo ng isang query at reterned data na lahat ay ok, ngunit kung ano ang aming gagawin kung walang data upang bumalik o ang "Public Server" ay hindi gumagana sa sandaling. At kung kami ay may isang ilang mga "push" at isang "render" na function na upang gumawa ng access sa ilang mga difrent server, kung ang gitna push ay hindi magbabalik ng data, ang lahat ng susunod na "push" ay itigil ang trabaho! Paano mapigilan ito. Salamat!

    Puna sa pamamagitan ng Jovchev - Oktubre 8, 2009 #

  14. [...] YQLDataSource para Yui 2: "Salamat sa Jonathan LeBlanc na artikulo sa ang Yui Blog ko naisip na ito ay cool na isang YQLDataSource upang gawing mas madali upang gamitin ang mga YQL data sa Yui 2 [...]

    Pingback ni Sa sa Wild para sa Marso 11, 2010 »Yahoo! User Interface Blog (YUIBlog ) - March 12, 2010 #

Paumanhin, ang form ng komento ay sarado sa oras na ito.

Host sa pamamagitan ng Yahoo!

Copyright © 2006-2012 Yahoo! Inc. Lahat ng karapatan ay reserbado. Patakaran sa Privacy - Mga Tuntunin ng Serbisyo

Pinapatakbo ng WordPress sa Yahoo! Web Hosting .