ydn kr tech talk : pipes 와 yql 활용하기

Post on 01-Sep-2014

2.909 Views

Category:

Technology

0 Downloads

Preview:

Click to see full reader

DESCRIPTION

멋진 웹 Apps위해 필요한 것들 그런데 삽질은 하고 싶지 않아요!Pipes : Data의 수집과 가공을 한방에!YQL : Pipes를 개선, SQL 형식의 웹 데이터 처리 도구“더 많이 나누어 줄 수록 더 좋은 일이 생겼습니다”

TRANSCRIPT

Y!Pipes & YQL활용하기

Yahoo! Developer Network

정진호2009.08.25

강사 소개 : 정진호, Jinho Jung

• 일–야후 개발자 네트워크

Technical Evangelist

– YDN KR Blog 운영‣ ydnkrblog.com

– YDN KR Twitter 운영‣ twitter.com/ydnkr

• 개인– phpschool.com (’98~05, 8년)

– lovesera.com 운영 (2001년~)

– Twitter, @phploveme

멋진 웹 Apps위해 필요한 것들

1

Data 소스

Open APIRSS,XML

HTML

2

Data 가공

PHPASPJSP기타

3

멋진 UI

FlashSilverlightCSS/JS

YUI

멋진 아이디어

Flickr의 멋진 사진을 찾아서관련된 지역 정보와 함께

지도 위에서 보여 주고 싶어요.아! 날씨도 함께~

그런데 삽질은 하고 싶지 않아요!var map = new YMap(document.getElementById('map')); … var currentGeoPoint = new YGeoPoint( _c.Lat, _c.Lon ); map.addMarker(currentGeoPoint); …

… if (flickcurl_prepare(fc, "flickr.photos.geo.correctLocation", parameters, count)) { … } …

http://search.yahooapis.com/ ImageSearchService/V1/imageSearch? appid=YahooDemo&query=Corvette&results=2

http://weather.yahooapis.com/ forecastrss?p=FRXX0076&u=c

?

?

?

?

YQL의 역할

SELECT* FROMInternet

YQL

Data의 수집과 가공을 한방에!

비주얼 에디터 기반의웹 데이터 가공 도구

NHN

DAUM

Yahoo!

MS

Web Data

RSS

JSON

HTML

PHP

Badge

멋진 UI

FlashSilverlightCSS/JS

YUI

Pipes 작업 흐름

Y!Pipes 화면 구성

Canvas

DebuggerHelp

Library선택된 모듈

Output 데이터http://pipes.yahoo.com/phploveme/yuiyql

Widget 블로그에 넣기

DEMO : Daum + Naver Blog 검색pipes.yahoo.com/phploveme/yuiyql

Yahoo Pipes 따라하기• DEMO Pipes URL – http://pipes.yahoo.com/phploveme/yuiyql

• Daum Blog 검색 URL– http://apis.daum.net/search/blog?apikey=[APIKEY]&q=트위터

• Naver Blog 검색 URL– http://openapi.naver.com/search?key=[APIKEY]&target=blog&query=트위터

• 사용한 모듈 – 검색어 입력

User Input - Text Input– 검색 URL 만들기

Url - URL Builder String - Private String Source - Fetch Feed

– 검색 결과 조합 Operator - Union Operator - Sort

Pipes 장점•다양한 데이터 소스 이용•손쉬운 프로토타입 제작•빠른 네트워크 Access

•코딩 불필요•풍부한 모듈 및 샘플

Pipes를 개선, SQL 형식의 웹 데이터 처리 도구developer.yahoo.com/yql

YQL

Yahoo! Query Language

•사용가능한 데이터 소스–social, flickr, geo, local, weather –mybloglog, search, upcoming, yahoo–HTML, RSS, XML, JSON, CSV + Community Open Data Table(177)

Yahoo! 프로필

프로필

친구업데이트

YQL : social.profile

select * from social.profile where guid=me

flickr : 사진 검색

YQL : flickr.photos.search

IP/지역 알아내기

select * from ip.location where ip='222.122.195.6'

트위터 읽기

트위터 읽기

select * from twitter.user.status where id='ydnkr'

[ 따라하기]

YQL Flickr Widget만들기

YQL : Flickr Search

YQL : Flickr Photo Widget , yql-image.php<?php$yql = "select * from flickr.photos.search where safe_search='true' and text='yahoo korea'";

$uri = "http://query.yahooapis.com/v1/public/yql?q=".urlencode($yql)."&format=xml";$sxml = simplexml_load_file($uri);

header('Content-Type: text/html; charset=utf-8');

foreach($sxml->results->photo as $photo){ $uri = 'http://farm' .$photo['farm'] .'.static.flickr.com/' .$photo['server'].'/' .$photo['id'].'_' .$photo['secret'] .'_m.jpg'; $html[] = $photo['title'].'<br/>'; $html[] = '<img src="'.$uri.'"/><br/>';}echo implode("\n", $html);?>

실행결과http://sandbox.jemr.net/yql-image.php

Source : http://sandbox.jemr.net/yql-image.phps

실행결과 + YUI

http://sandbox.jemr.net/yql-image-yui.php

소스,http://sandbox.jemr.net/yql-image-yui.phps

Insert / Update / Delete

•웹상의 데이터 수정가능• Remote Web Service 가능–트위터 업데이트, 블로그 포스팅

•사용자 정의 Open Data Table 활용

use ‘http://mysite.com/table.xml’ as tableName;

select * from tableName where key=‘value’...

[ 따라하기]

INSERT 하기

Twitter Insert 3 단계• 1. Open Data Table (XML) 정의– Ex: http://sandbox.jemr.net/yql-twitter-status.xml

• 2. YQL 실행

• 3. Twitter 에서 실행 결과 확인

use "http://sandbox.jemr.net/yql-twitter-status.xml" as table; insert into table (username, password, status) values('yqltesting','****','YQL-Twitter Test !!! ');

1. Open Data Table 정의 yql-twitter-status.xml<?xml version="1.0" encoding="UTF-8"?>

<table xmlns="http://query.yahooapis.com/v1/schema/table.xsd"><meta> <sampleQuery>select * from {table}</sampleQuery></meta><bindings> <select itemPath="" produces="XML"> <urls><url>http://twitter.com/statuses/show/{id}.xml</url></urls> <inputs> <key id="username" type="xs:string" required="false" paramType="variable" /> <key id="id" type="xs:string" required="false" paramType="path" /> </inputs> <execute><![CDATA[ var r = null; if (username) { var query = y.query('select * from twitter.user.timeline where id="'+username+'";'); var result = <twitter/>; for each (var twit in query.results.entry) { result.appendChild(twit); } response.object = result; } else { r = request.get().response; response.object = r; } ]]></execute> </select> <insert itemPath="" produces="XML"> <urls><url>http://twitter.com/statuses/update.xml</url></urls> <inputs> <key id="username" type="xs:string" required="true" paramType="variable" /> <key id="password" type="xs:string" required="true" paramType="variable" /> <key id="status" type="xs:string" required="true" paramType="variable" /> </inputs> <execute><![CDATA[ var r = null; y.include("http://yqlblog.net/samples/base64.js"); var authheader = "Basic " + Base64.encode(username+":"+password); var content = "status="+status; r = request.header("Authorization", authheader).post(content).response; response.object = r; ]]></execute> </insert> <delete itemPath="" produces="XML"> <urls><url>http://twitter.com/statuses/destroy/{updateid}.xml</url></urls> <inputs> <key id="username" type="xs:string" required="true" paramType="variable" /> <key id="password" type="xs:string" required="true" paramType="variable" /> <key id="updateid" type="xs:string" required="true" paramType="path" /> </inputs> <execute><![CDATA[ var r = null; y.include("http://yqlblog.net/samples/base64.js"); var authheader = "Basic " + Base64.encode(username+":"+password); response.object = request.header("Authorization", authheader).del().response; ]]></execute> </delete></bindings></table>

2. INSERT into Twitter use "http://sandbox.jemr.net/yql-twitter-status.xml" as table; insert into table (username, password, status) values('yqltesting','***','YQL-Twitter Test !!! ');

3. Twitter 결과 확인http://twitter.com/yqltesting

커뮤니티 데이터 테이블 : Slideshare.netselect * from slideshare.transcript where url="http://www.slideshare.net/phploveme/ignite-seoul-intro"

결론• YQL을 이용한 개발– 간단한 소스코드– 데이터 처리의 분리– 모든 데이터에 대한 일관된 Syntax

– Interactive 개발 환경•빠른 어플리케이션을 위해

–parallel requests 이용–Request / Data Size : 필요한 만큼만

Community Open Data Tablehttp://datatables.org/

“더 많이 나누어 줄 수록더 좋은 일이 생겼습니다”- 에반 윌리엄스 , Twitter 창업자

Evan Williams,@ev

ThanksDeveloper.yahoo.com

ydnkrblog.com

top related