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

42
Y!Pipes & YQL 활용하기 Yahoo! Developer Network 정진호 2009.08.25

Upload: jinho-jung

Post on 01-Sep-2014

2.909 views

Category:

Technology


0 download

DESCRIPTION

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

TRANSCRIPT

Page 1: YDN KR Tech Talk : Pipes 와 YQL 활용하기

Y!Pipes & YQL활용하기

Yahoo! Developer Network

정진호2009.08.25

Page 2: YDN KR Tech Talk : Pipes 와 YQL 활용하기

강사 소개 : 정진호, 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

Page 3: YDN KR Tech Talk : Pipes 와 YQL 활용하기

멋진 웹 Apps위해 필요한 것들

1

Data 소스

Open APIRSS,XML

HTML

2

Data 가공

PHPASPJSP기타

3

멋진 UI

FlashSilverlightCSS/JS

YUI

멋진 아이디어

Page 4: YDN KR Tech Talk : Pipes 와 YQL 활용하기

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

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

Page 5: YDN KR Tech Talk : Pipes 와 YQL 활용하기

그런데 삽질은 하고 싶지 않아요!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

?

?

?

?

Page 6: YDN KR Tech Talk : Pipes 와 YQL 활용하기

YQL의 역할

SELECT* FROMInternet

YQL

Page 7: YDN KR Tech Talk : Pipes 와 YQL 활용하기

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

Page 8: YDN KR Tech Talk : Pipes 와 YQL 활용하기

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

Page 9: YDN KR Tech Talk : Pipes 와 YQL 활용하기

NHN

DAUM

Yahoo!

MS

Web Data

RSS

JSON

HTML

PHP

Badge

멋진 UI

FlashSilverlightCSS/JS

YUI

Pipes 작업 흐름

Page 10: YDN KR Tech Talk : Pipes 와 YQL 활용하기

Y!Pipes 화면 구성

Canvas

DebuggerHelp

Library선택된 모듈

Page 11: YDN KR Tech Talk : Pipes 와 YQL 활용하기

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

Page 12: YDN KR Tech Talk : Pipes 와 YQL 활용하기

Widget 블로그에 넣기

Page 13: YDN KR Tech Talk : Pipes 와 YQL 활용하기

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

Page 14: YDN KR Tech Talk : Pipes 와 YQL 활용하기

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

Page 15: YDN KR Tech Talk : Pipes 와 YQL 활용하기

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

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

Page 16: YDN KR Tech Talk : Pipes 와 YQL 활용하기

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

YQL

Page 17: YDN KR Tech Talk : Pipes 와 YQL 활용하기

Yahoo! Query Language

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

Page 18: YDN KR Tech Talk : Pipes 와 YQL 활용하기

Yahoo! 프로필

프로필

친구업데이트

Page 19: YDN KR Tech Talk : Pipes 와 YQL 활용하기

YQL : social.profile

select * from social.profile where guid=me

Page 20: YDN KR Tech Talk : Pipes 와 YQL 활용하기

flickr : 사진 검색

Page 21: YDN KR Tech Talk : Pipes 와 YQL 활용하기

YQL : flickr.photos.search

Page 23: YDN KR Tech Talk : Pipes 와 YQL 활용하기

IP/지역 알아내기

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

Page 24: YDN KR Tech Talk : Pipes 와 YQL 활용하기

트위터 읽기

Page 25: YDN KR Tech Talk : Pipes 와 YQL 활용하기

트위터 읽기

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

Page 26: YDN KR Tech Talk : Pipes 와 YQL 활용하기

[ 따라하기]

YQL Flickr Widget만들기

Page 27: YDN KR Tech Talk : Pipes 와 YQL 활용하기

YQL : Flickr Search

Page 28: YDN KR Tech Talk : Pipes 와 YQL 활용하기

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);?>

Page 29: YDN KR Tech Talk : Pipes 와 YQL 활용하기

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

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

Page 30: YDN KR Tech Talk : Pipes 와 YQL 활용하기

실행결과 + YUI

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

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

Page 31: YDN KR Tech Talk : Pipes 와 YQL 활용하기

Insert / Update / Delete

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

•사용자 정의 Open Data Table 활용

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

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

Page 32: YDN KR Tech Talk : Pipes 와 YQL 활용하기

[ 따라하기]

INSERT 하기

Page 33: YDN KR Tech Talk : Pipes 와 YQL 활용하기

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 !!! ');

Page 34: YDN KR Tech Talk : Pipes 와 YQL 활용하기

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>

Page 35: YDN KR Tech Talk : Pipes 와 YQL 활용하기

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 !!! ');

Page 36: YDN KR Tech Talk : Pipes 와 YQL 활용하기

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

Page 38: YDN KR Tech Talk : Pipes 와 YQL 활용하기

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

Page 39: YDN KR Tech Talk : Pipes 와 YQL 활용하기

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

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

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

Page 40: YDN KR Tech Talk : Pipes 와 YQL 활용하기

Community Open Data Tablehttp://datatables.org/

Page 41: YDN KR Tech Talk : Pipes 와 YQL 활용하기

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

Evan Williams,@ev

Page 42: YDN KR Tech Talk : Pipes 와 YQL 활용하기

ThanksDeveloper.yahoo.com

ydnkrblog.com