test

test

by yeda | 2008/03/21 15:38 | 트랙백(312) | 덧글(0)

TrackBack의 기술적 정의

1 Intro #TrackBack의 기술적 정의

이 문서는 TrackBack에 대한 것을 설명한 것이며, TrackBack은 웹사이트 사이의 P2P 통신과 이를 알리는 프레임웍이다. TrackBack의 원리는 ‘TrackBack Ping’이라는 요청의 원리에 출발한다. 즉, 어떤 자원 A는 다른 자원 B에 연관되거나 연결되어 있다고 알리는 것이다. TrackBack이라는 것은 표준 URI인 ‘TrackBack Ping URL’에 의해 표현되는 자원이라고 정의할 수 있다.

TrackBack을 이용하면, 웹사이트들은 서로 연관된 자원끼리 통신이 가능하다. 예를 들면, 어떤 블로거 A가 블로거 B에게 자신이 A의 포스트에 관심이나 관계가 있는 포스팅을 했음을 알리고 싶다면, 블로거 A는 블로거 B에게 TrackBack Ping을 보낸다. 이런 행위는 다음의 두 가지를 수행하게 된다.

1) 블로거 B는 그의 블로그에 올린 특정 글이 언급이 된 모든 사이트들을 자동적으로 리스팅할 수 있으며, 블로거 B의 사이트를 방문하는 모든 사람들에게 블로거 A의 글을 포함한 모든 관련된 글을 보여줄 수 있다.

2) TrackBack Ping은 블로거 B와 블로거 A에게 견고하고 명확한 링크를 제공하는데, 이는 리퍼러로그 같은 외부적인 방문자의 행동을 일방적으로 기록하는 링크와는 대조적으로 제공하게 된다. 상호성이 존재하는 링크이다.


2 Sending a Trackback Ping #

TrackBack은 REST 모델을 사용하는데, REST는 표준 HTTP를 통한 요청을 말한다. TrackBack Ping을 보내기 위해서 클라이언트는 서버에 표준 HTTP 요청을 하고, 간단한 XML 포맷의 응답을 받게 된다.

TrackBack 시스템에서 TrackBack Ping을 받는 URL을 ‘Trakback Ping URL’이라고 한다. ‘http://www.example.com/trackback/5’같은 형식으로 되어 있다. 여기서 ‘5’는 ‘TrackBack ID’이다. 서버는 TrackBack Ping URL이 어떤 포맷이라도 이해할 수 있도록 되어 있으며, 그러므로 클라이언트는 특정 포맷에 의존적이지 않아도 된다.

Ping을 보내려면 클라이언트는 TrackBack Ping URL로 HTTP POST 요청을 보낸다. 이때 클라이언트는 반드시 Content-Type HTTP 헤더를 보내야 하는데, ‘application/x-www-form-urlencoded’의 형식으로 보내야 한다. 또 보내는 콘텐츠에는 ‘제목, 인용포스트, 블로그명’을 콘텐트 타입 헤더에 정의된 캐릭터셋으로 보내야 한다.

예를 들자면 다음과 같다.

POST http://www.example.com/trackback/5
Content-Type: application/x-www-form-urlencoded; charset=utf-8

title=Foo+Bar&url=http://www.bar.com/&excerpt=My+Excerpt&blog_name=Foo

요청 가능한 콘텐트 파라미터는 다음과 같다.

1) Title(제목)
TrackBack 포스팅의 제목

2) Excerpt(인용문)
인용문의 제목

3) URL
해당 포스팅의 Permalink

4. Blog Name
TrackBack을 보낸 포스트의 블로그명
위의 모든 항목들은 반드시 캐릭터셋에 명시된 방법으로 인코딩해서 보내야 한다
TrackBack 프로토콜에서 각 필드들의 길이 제한은 없으나, 서버는 임의로 길이를 제한하여 자르거나 무시할 수 있다.

성공적으로 Ping을 받게되면, 서버는 반드시 다음과 같은 포맷으로 응답을 주어야 한다.

<xml version="1.0" encoding="utf-8"?>
<response>
<error>0</error>
</response>


만일 Ping이 실패하게 되면, 서버는 다음과 같은 HTTP 응답을 보내야 한다.

<xml version="1.0" encoding="utf-8"?>
<response>
<error>1</error>
<message>The error message</message>
</response>


3 Auto-Discovery of TrackBack Ping URLs #

TrackBack 클라이언트는 특정한 URL 또는 weblog 입장을 위한 TrackBack 핑 URL 결정의 방법을 필요로 한다.서버 구현에 의하여 생성하는 페이지에 있는 끼워넣어진 RDF를 포함해야 한다; RDF는 메타데이터에 관한 entry를 의미하고 TrackBack ping URL를 자동 발견하는 것을 클라이언트가 허용한다.


예제 RDF는 다음과 같다.:
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"

xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">

<rdf:Description

rdf:about="http://www.foo.com/archive.html#foo"
dc:identifier="http://www.foo.com/archive.html#foo"
dc:title="Foo Bar"
trackback:ping="http://www.foo.com/tb.cgi/5" />

</rdf:RDF>


NOTE: validators가 XHTML에서 포함되는 RDF에 보내온 정보를 받아들이지 못하기 때문에, 페이지를 유효하게 하는 원하는 경우에 당신은 HTML 코멘트로 RDF를 둘러싸야한다.


<!--

<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
...
</rdf:RDF>
-->


이것은 완전한 해결책이 아니다, 그러나 임시적인 수정으로 작동한다.


The dc: 엘리먼트 표준 더블린 핵심 요소이다; the trackback:ping element은 http://madskills.com/public/xml/rss/module/trackback/에 RSS 1.0/2.0를 위한 TrackBack 모델에서 온다.


URL my_url를 주어, 클라이언트는 이 단계를 따라야 한다:


1.my_url페이지에서 검색할때 http get request로 보낸다.
2.포함된 RDF를 위한 페이지 내용을 검사하십시오. 페이지는 포함된 RDF의 다수 경우를 포함할 수 있다.
3. RDF블록으로 부터 ping url을 트랙백을 추출한다. 이것이 트랙백 ping url이다.


일단 클라이언트가 TrackBack ping URL를 결정하면, TrackBack 핑을 보낼 수 있다 ("TrackBack ping ulr"을 보십시오).

4 Examples #

독립된 실행환경은 다음 사이트에서 다운 받을수 있다.
http://www.movabletype.org/downloads/tb-standalone.tar.gz.


http://www.perl.com/language/misc/Artistic.html.


설치 및 사용법
http://www.movabletype.org/docs/tb-standalone.html.


Sample Auto-Discovery
The Net::TrackBack Perl 단위는 TrackBack 자동검색을 하기를 쉬운 공용영역을 제공한다


use Net::TrackBack::Client;

my $url = 'http://www.example.com/weblog/';
my $client = Net::TrackBack::Client->new;
my $data = $client->discover($url);
if (Net::TrackBack->is_message($data)) {

## An error occurred trying to fetch $url.
die $data->message;

} else {

## $data is a reference to an array of Net::TrackBack::Data objects.
for my $resource (@$data) {

print $resource->ping, "\n";

}

}

5 Authors #

Six Apart, http://www.sixapart.com/

6 Version #1.2

by yeda | 2008/03/21 10:59 | 트랙백(350) | 덧글(0)

◀ 이전 페이지          다음 페이지 ▶