1. RSS란?RDF Site Summary or Really Simple Syndication의 줄인말로 뉴스나 블로그등과 같이 컨텐츠가 자주 업데이트가 되는 사이트들이 업데이트된 정보를 쉽게 사용자들에게 제공하기 위해 만들어진 포맷입니다. XML(Extensible Markup Language) 기반으로 되어 있으며 간단하게 제목, 내용, 날짜 등의 배포에 필요한 최소한의 정보를 통해 쉽게 작성할 수 있도록 구성되어 있으며 현재 0.9, 1.0, 2.0 등 다양한 버전으로 서비스가 되고 있습니다.뉴스나 블로그등의 사이트에서 'RSS Feed',
RSS 서비스를 제공하고 있는 사이트에서 좀 더 시간이 지나면 브라우저,메일 클라이언트,웹메일등에서 모두 RSS Reader 기능을 제공할 것이고 그때가 되면 좀 더 손 쉽게 자신이 원하는 정보를 빠르게 조회하여 볼 수 있을 것입니다.
[ RSS 메뉴 클릭시에 출력되는 XML 구문 예 ] 2. RSS는 왜 그리고 어디에 사용되나?RSS는 가장 성공적인 XML 서비스로써 웹사이트를 통해 콘텐츠 정보를 교환하는 커뮤니티 표준으로 자리를 잡아 가고 있습니다. 본인은 RSS를 웹의 가장 큰 특징인 HyperText 기능의 웹서비스 형태로의 발전이라고 생각합니다. 웹이 정보를 오픈시켰다면 RSS는 해당 정보를 배달시켜 줄 것입니다.RSS를 운영자와 사용자의 입장에서 보았을때, 서비스 운영자는 신규 또는 추천 정보를 고객에서 보다 손쉽게(이메일 정보 발송을 위한 컨텐츠 구성과 이메일 발송과 같은 작업이 필요 없이) 제공할 수 있으며 사용자는 관심있는 정보를 쉽고 빠르게 조회 할 수 있게 됩니다. 혹자의 경우는 RSS 서비스를 하게 되면 웹사이트를 직접 방문하는 사용자가 줄어 들게 되지 않냐고 이야기 합니다. 그러나 서비스 운영자가 RSS 서비스와 같은 형태의 Deep Link로 인하여 메인 페이지에 노출되는 광고의 Impression 이 줄어 드는 것을 일정 부분 포기한다면, 대신 관련 컨텐츠에 관심이 많은 구독자를 얻게 될 것입니다. 오히려 해당 컨텐츠를 주기적으로 모니터하는 구독자로 인하여 발생하는 Traffic을 걱정해야 할것입니다. 중요한 것은 이미 수많은 정보들이 사용자에게 오픈되어 기다리고 있고, 이 정보의 바다 속에서 경쟁 업체보다 어떻게 빠르고 정확하게 서비스를 제공하느냐, 원하는 정보를 보다 쉽고 빠르게 얻을 수 있느냐 일것입니다. RSS는 당신의 정보를 쉽고 빠르게 제공해 줄 것입니다. 웹이 신문과 방송보다 정보를 빠르게 제공하고 있으며, 이와 같이 가장 빠른 웹의 정보중에서 RSS는 당신이 원하는 정보(뉴스,키워드검색 정보등)를 더욱 빠르고 쉽게 배달해 주는 좋은 도구 역활을 할 것입니다. 아래는 RSS 주요 사용 분야입니다.
3. RSS Readers(Aggregators)
4. 관련 정보
구글의 성공은 정보화시대 속에서 정보의 정확성과 편의성이 얼마나 중요한 가를 다시 한번 생각하게 합니다. | ||||
| RSS 강좌 - RSS에 대하여 - 아이헬퍼스 | ![]() |
| 웹에 홈페이지를 만들고 쉽다면 HTML 문법을 공부해야 하는 것 처럼 해당 컨텐츠를 RSS를 통하여 배포하고 싶다면 당연히 RSS 구문을 익히셔야 합니다. 다행인 것은 RSS 구문은 HTML 문법만큼 간단하여 쉽게 익힐 수 있습니다.
그러나 RSS를 사용함에 있어 알고 있어야 하는 것이 있습니다. RSS는 크게 두가지의 버전이 공존합니다. 간단함을 지향하는 RSS 0.9x,RSS 2.0 와 좀 더 확장성이 강한 RSS 1.0 입니다. 두가지 버전 모두 동일한 기본 구조와 XML을 기반으로 하고 있습니다.
1. RSS의 내력 및 버전별 비교RSS 0.9는 Netscape 사의 포털 서비스를 위한 다소 복잡한 형식으로 제작 되었고, 그 후에 웹블로그 제품과 기타 다른 제품에 사용을 위하여 UserLand Software에서 좀 더 간단한 RSS 0.91 발표하였습니다.그 비슷한 시기에 RSS-DEV Working Group은 RDF(Resource Description Framework) 기반으로 한 RSS 1.0를 제작하였고, RSS 1.0 역시 RSS 0.9를 기본으로 하고 있습니다. 그 후에 UserLand 는 0.92,0.93.0.94 그리고 2.0을 발표하였습니다.
2. RSS 2.0RSS 2.0 이 RSS 0.9x 버전를 모두 포함하고 있기에 RSS 0.9x 버전에 대한 설명은 생략하도록 하겠습니다. 이전 버전에 대하여 관심이 있는 분들은 관련정보를 참고해 주십시요.
Required channel elements
Optional channel elements
Item Element RSS 0.92까지는 아이템의 수가 제한 되어 있었으나 RSS2.0에 오면서 숫자에 제한이 없어 졌습니다. 아이템에 해당하는 모든 Element는 선택사항입니다.
3. RSS 1.0RSS 1.0에서 RSS는 "RDF Site Summary"를 의미합니다. RSS 1.0은 RDF를 사용하고 XML-Namespaces( RSS Modules )을 이용하여 큰 마찰 없이 확장을 가능하게 해 줍니다. 모듈로써는 Dublin Core Module이 가장 잘 알려져 있습니다. RSS 1.0은 아래의 샘플 코드에서 보는 것 처럼 RSS 0.9x 와 거의 비슷하나 몇가지 다른 요소를 가지고 있습니다.
앞에서 이야기 한 것 처럼 두 버전 모두 장단점을 가지고 있습니다. 그러나 본인은 RSS를 "Really Simple Syndication" 에 무게를 더 두고 싶고, RSS 1.0은 부족하지만 여기서 마치도록 하겠습니다. 자세한 것은 관련정보의 자료를 참고하여 주십시요.
4. 관련정보 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| RSS 강좌 - RSS 0.9x,2.0 그리고 1.0 - 아이헬퍼스 | ![]() |
| 운영하고 있는 사이트에 RSS 서비스( PHP,ASP 등과 같은 Script를 사용하여 HTML 구문을 작성하는 것과 동일한 방법으로, RSS 규약에 맞는 구문을 출력하는 프로그램을 개발하여 URL를 배포하는 것이 RSS 서비스 제공의 전부입니다. 그 만큼 RSS 서비스 제공은 상당히 간단합니다. 그러나 해당 강좌는 RSSWriter Class를 직접 작성하고, 클래스를 이용하여 개발하여 RSS 규약에 대한 이해를 좀 더 돕고자 합니다. 1. RSSWriter Class 만들기코드가 좀 길지만 대부분이 set 메서드이니 조금만 시간을 투자하면 금방 이해하실 수 있을 것입니다.Class 구현에서 가장 중점을 둔 부분은 RSS 중에서 Optional Element를 배열변수로 선언하여 Class 사용자가 Optional Element를 좀 더 유연하게 처리할 수 있도록 한 부분입니다. function setChannelOptionalElements($ChannelOptionalElements){ $this->$ChannelOptionalElements = $ChannelOptionalElements; }Optional Channel Element,Item Element 등과 같은 Element 에 대한 처리를 위와 같이 배열변수로 선언하고 값을 배열 형태로 직접 대입하는 방법과 setLanguage,setCopyright 등과 같은 함수를 사용하여 개별적으로 값을 대입하는 두가지 방법을 제공하였습니다. 코드가 아래와 같이 길어지게 된 것도 RSS에서 사용하는 모든 Element에 대한 개별적인 Set 메서드를 제공하였기 때문입니다.
[ RSSWriter.class.php 코드 ] 2. RSSWriter Class을 이용한 Sample 코드아래의 샘플코드들은 소스코드를 다운로드 받아 PHP가 실행 가능한 디렉토리에 압출을 풀어 설치하신 후에 웹브라우저에서 XML 구문을 확인하거나 RSS Aggregator(Reader)를 통하여 직접 확인하시면 됩니다.
$rss = new RSSWriter("아이헬퍼스","http://www.ihelpers.co.kr","eBiz Total Solution"); 위 코드에서 보는 것처럼 생성자에서 Required Channel Element를 Parameter로 입력하도록 하였으며, Item에 해당하는 배열은 addItem 함수를 사용하여 배열에 저장한 후에 println 함수로 출력 처리하였습니다.demosimple.php 와 demoarray.php의 두 샘플코드는 RSSWriter Class 이용에 대한 각기 다른 사용 예이니 참고하여 주십시요.
[ demosimple.php 코드 ]
[ demoarray.php 코드 ] 3. 아이헬퍼스의 RSS 서비스다음은 현재 아이헬퍼스에서 제공하는 RSS 서비스 ( http://www.ihelpers.co.kr/rss.php?q=all )의 코드중 일부분입니다. DB 정보를 RSS로 제공하는 예로 보시면 도움이 될 것입니다.function cmp ($a, $b) { return strcmp($b["REGI_DATE"],$a["REGI_DATE"]); } 현재 사용하고 있는 MySQL 버전이 Union기능을 제공하지 않기에(MySQL의 Union 기능은 4.x 부터 제공됨 ) Table 단위로 자료를 모와 usort 함수를 사용하여 날짜순으로 정리하여, 자료의 최대 출력 개수를 10개로 제한하고 등록일로 부터 14일 이전의 자료만 조회 하도록 작성하였습니다.
[ demoarray.php 코드 ] 4. 웹사이트에 RSS 서비스 배포RSS 서비스를 개발하였다면 이젠 사이트를 통하여 URL 정보를 배포하시면 됩니다. RSS의 경우는 아래와 같은 일반적인 서비스 표현의 방법이 있으니, 서비스 사용자가 제공 서비스를 쉽게 인식할 수 있도록 보편적인 방식에서 크게 벗어나지 않는 방법으로 배포하십시요.
5. 소스코드 | ||||||||
| RSS 강좌 - RSSWriter Class 제작 및 활용 - 아이헬퍼스 | ![]() |
| 이번 시간 부터는 뉴스,블로그등의 사이트에서 제공하는 RSS 서비스를 읽는 RSS Reader를 제작하는 방법에 대하여 설명하도록 하겠습니다. RSS 서비스를 제공하는 것이 그렇게 어렵지 않지만 해당 서비스를 읽는 프로그램을 작성하는 것은 그렇게 쉽지 않습니다. PHP로 웹메일 솔루션을 구현하려고 할때 메일발송 부분은 간단하나 메일을 읽는 부분은 POP3,IMAP 프로토콜과 통신하고 인코딩(Base64,QP등)된 메일정보에 대한 디코딩처리와 같이 어려운 부분이 많은 것 처럼 말입니다.
다음은 RSS Reader의 주요 작업 순서입니다.
해당 강좌에서는 먼저 XML 기반의 RSS 문서를 파싱하는 방법에 대하여 설명하도록 하겠습니다. 아래의 rss.xml 파일은 아이헬퍼스에서 제공하는 RSS 서비스의 내용입니다. 여러분은 해당 구문을 어떻게 파싱하시겠습니까? 이번 강좌의 목표가 아래의 rss.xml 파일을 파싱하여 배열로 저장하는 것입니다.
1. XML Parser functionXML(eXtensible Markup Language)은 인터넷과 같은 다양한 환경이 존재하는 곳에서 자료 교환을 위한 최선의 솔루션(형식)이며, 뉴스,날씨,증권등의 정보를 다양한 CP로 부터 얻어와야 하는 곳에서 많이 사용되고 있습니다. RSS는 이와 같은 XML의 가장 성공한 예입니다.먼저 PHP에서 XML 구문 분석을 위한 "XML Parser function"에 대하여 알아보도록 하겠습니다. 대부분의 환경은 이미 "XML parser functions"이 설치 되어 있을 것이라고 생가합니다. 그러나 혹시 모르니 아래의 구문으로 설치여부를 점검해 주시고 설치가 되지 않은 분은 메뉴얼을 참고하여 주십시요.
XML 주요 함수에 대한 자세한 설명은 메뉴얼 참고해 주시고, 여기서는 XML Parser 함수를 이용하여 날씨정보( http://www.kma.go.kr/weather/xml/current.xml )와 RSS 정보( rss.xml 파일)를 분석하는 방법을 예제를 통하여 배워 보도록 하겠습니다. 'weather.xml'은 날씨정보를 XML형식으로 제공하는 예입니다.아마도 패턴 매칭을 잘 사용하는 개발자의 경우에도 XML 문장들을 파싱하여 웹과 Application으로 서비스 하는 것은 그렇게 간단한 문제는 아닐 것입니다. 그러나 XML Parser 함수를 이용하면 주요 함수인(xml_parser_create, xml_set_element_handler, xml_set_character_data_handler)를 사용하여 간단하고 깔끔하게 원하는 정보를 얻어 올 수 있습니다.
[ weather.xml ]
[ weather.php ] 앞에서는 XML에 대한 이해를 위하여 날씨정보 XML 구문을 파싱하는 예제를 간단하게 소개하였습니다. RSS 구문도 XML 형식이기에 날씨정보에서와 같이 XML Parser function을 사용하여 간단하게 구문 분석을 할 수 있습니다. 음... 아래의 코드를 설명하려고 하니 뭘 설명해야 할지 모르겠군요. startElement,endElement 함수을 주의 깊게 보시고,직접 해당 함수로 이것 저것 해 보는 것이 가장 좋을 듯 하군요. ( 소스코드는 아래에 있으니 꼭 다운로드 받아서 직접 연습해 보십시요. )
[ rss.xml 파일에 대한 XML Parser function을 사용한 분석 예제 ] 2.RSSParser ClassRSSParser 클래스는 RSS구문을 분석하는 함수들과 분석된 배열정보를 호출하는 GET 함수로 구성되어 있습니다. 코드를 보시면 _create,_add 등과 같이 함수명 앞에 "_" 를 붙인 함수들을 보실 수 있을 것입니다.이것은 PHP가 접근제어자(public, private, protect )를 제공하지 않아 클래스 내부에서만 사용되는 함수에 대한 구분을 위해 사용하였습니다.RSS Reader(Aggregator)를 만들기 위하여 RSSParser클래스와 앞으로 소개할 클래스들에 대하여 모두 이해하고 직접 제작할 필요는 없습니다. 이미 이와 관련되어 좋은 모듈들이 많이 나와 있고 해당 강좌에서 제시하고 있는 클래스들을 사용하시면 쉽게 제작을 할 수 있습니다. 빠르게 RSS Reader 기능을 구현하고 싶은 분들은 아래의 샘플코드에 대한 이해만으로도 충분히 구현을 하실 수 있을 것입니다. RSS에 대하여 깊게 이해 하고 싶은 분들은 제시된 클래스 구문을 분석하시면 많은 도움이 될 것입니다.
[ RSSParser Class 코드 ]
[ RSSParser Class을 이용한 샘플코드 ] 3. 소스코드 | ||||||||||
| RSS강좌 - RSSParser Class 제작하기 - 아이헬퍼스 | ![]() |
|
앞에서 배운 지식을 바탕으로 간단한 RSS Reader를 제작해 보도록 하겠습니다. 먼저 아래의 데모를 한번씩들 실행하여 보시기 바랍니다. 그리고 구독하고 있는 채널이 있다면 다른 RSS URL로 테스트도 해 보시구요. 아마도 해당 강좌를 보신 후에는 이 보다 멋진 RSS Reader(Aggregator)를 작성하실 수 있을 것입니다. 1. 데모보기Simple RSS Reader - http://www.ihelpers.co.kr/lib/jmrss/simplereader.php?URL=http://rss.joins.com/joins_news_list.xml 2. URL 통신저번 시간에는 RSS 파싱하는 방법에 대하여 소개를 하였습니다. 이번에는 RSS Reader 구현을 위한 URL 통신 방법과 그외의 핵심 기능에 대하여 알아보도록 하겠습니다.그럼 URL로 RSS 구문을 어떻게 가지고 올까요? 저의 경우는 대부분의 경우는 HTTP 모듈을 사용하나, PHP에서는 fopen 함수를 사용하여 복잡한 과정 없이 웹상의 정보를 로컬디렉토리의 파일정보 처리하는 것 처럼 너무도 쉽게 구현 할수 있습니다. HTTP의 헤더정보를 같이 좀더 세부적인 처리를 원하는 분은 소스코드에 포함된 "httpclass.php" 클래스를 분석해 보시기 바랍니다. 해당 강좌의 모든 코드는 HTTP 모듈을 사용하였습니다.
3. RSSReader ClassRSSReader 클래스는 RSSParser 클래스,URLCache 클래스,httpclass 클래스 사용하며, 특히 RSSParser 클래스를 상속받아 사용하고 있습니다. 클래스를 만들면서도 상속에 대한 문제점으로 사용여부를 두고 갈등을 했었지만, RSSParser에 포함된 GET 함수들을 모두 다시 작성할 생각을 하니 너무 귀찮아서 PHP에서 처음으로 상속을 사용해 보았습니다. 혹시 아직도 PHP에서 Class 나 상속기능을 사용해 보지 않으신 분은 참고하여 보시면 일정 부분 도움이 될것입니다.RSSReader 변수(Property)
4. URLCache에 대하여브라우저가 Cache를 사용하지 않아 매번 접속시마다 변경이 잘 되지 않는 이미지를 다운로드 받아야 한다면 이처럼 웹이 발전되지 않았을 것입니다. 아마도 제작한 RSS Reader에서 Cache를 사용하지 않는다면, 채널을 구독하고 있는 사용자들의 주기적인 접속은 웹서버에 대한 공격으로 변신하여 웹서버 관리자의 얼굴을 하얗게 변하게 할 것입니다. 10,000명의 구독자에 의하여 프로그램이 1분 단위로 채널에 접속하여 정보의 갱신여부만 확인한다고 생각하면 이 만큼의 시스템 자원 낭비가 어디 있겠습니까? RSS Reader의 경우는 시간이 많이 소요되는 Network 통신을 해야 하기에, 이 문제를 최소화 할 수 있는 Cache의 사용은 RSS Reader 프로그램 개발시에 상당히 중요한 부분이라고 생각합니다. Cache 사용은 "URL Cache를 사용하여 웹을 더욱 빠르게" 강좌와 소스코드에 포함되어 있는 URLCache 클래스를 참고하여 주십시요. 5. Simple RSS Reader강좌 시작에서 본 간단한 RSS Reader 코드입니다.
[ simplereader.php ] 6. 소스코드 | ||||||
| RSS강좌 - RSSReader Class 제작 및 Reader 만들기 - 아이헬퍼스 | ![]() |
| RSS강좌 목표가 RSS Reader(Aggregator) 구현보다는 RSS에 대한 이해이다 보니 너무 깊게 설명하여, 단순하게 RSS 기능 구현이 목적인 분들은 좀 복잡하다 생각하실 수 있을 것 같아, 이번시간에는 RSS 모듈을 통하여 개발자가 쉽게 RSS를 사용하는 방법을 소개하려고 합니다.
앞의 강좌에서 사용한 RSSReader 클래스( 꽤 쓸만함) 사용하는 것도 좋지만, PHP에는 PEAR(PHP Extension and Application Repository)라는 아주 좋은 솔루션이 있습니다. 그럼 PEAR에 대한 간략한 소개와 PEAR 중의 XML/RSS 클래스 사용방법을 알아 보도록 하겠습니다. 1. PEAR 소개PEAR는 "PHP Extension and Application Repository" 의 약자로써 Malin Bakken에 의하여 1999.11.12에 시작하여, 현재는 다양한 클래스등을 제공하여 PHP 개발자들이 좀 더 편리하게 개발할수 있는 환경을 제공하고 있습니다.PHP 설치시 기본적으로 PEAR가 설치지 않기에( 버전과 설치 옵션에 따라서 차이가 있슴) 여러분의 시스템에 현재 PEAR가 설치되어 있지 않을 수 있습니다. PEAR의 설치와 보다 자세한 설명은 아래의 사이트를 참고하여 주십시요. 2. XML/RSS 설치 및 메뉴얼PEAR 클래스 중에서 XML_RSS를 설치해 보도록 하겠습니다. 사이트에서 직접 소스를 다운로드 받아서 설치하거나, 아님 아래의 예처럼 온라인상에서 바로 설치도 가능합니다. "pear" 의 사용방법은 "c:\pear\pear help" 로 pear 명령어들에 대한 간단한 설명을 볼수 있습니다.
PEAR 메뉴얼 : http://pear.php.net/manual/en/package.xml.xml-rss.php 3. RSS Reader 기능 구현XML/RSS Package 사용에 대한 간단한 예와 "RSS강좌 - RSSReader Class 제작 및 Reader 만들기"에서 구현한 간단한 RSS Reader를 XML_RSS을 이용하여 구현해 보도록 하겠습니다. 코드들은 앞의 강좌에서 소개한 코드들과 거이 차이가 없고 간단하니 별도의 설명은 하지 않겠습니다.
[ demopear.php ]
[ pearreader.php ] | ||||||
출처 : http://blog.naver.com/wooseokint1/110002791161
실전예제 :
[WEB/ASP / DotNet] - 블로그 XML RSS 구현 (WINDOWS+IIS+ASP환경)
[WEB/AJAX] - Ajax를 이용한 RSS 리더(for RSS 2.0)
'XML' 카테고리의 다른 글
| RSS (0) | 2007/10/08 |
|---|---|
| xmlhttp 자세한 설명 (0) | 2007/06/07 |
| XMLHTTP의 동기, 비동기 (0) | 2007/06/07 |
| XAML 에 대하여.. (0) | 2007/06/07 |
| 새로운 AJAX - Asynchronous Javascript And XML (0) | 2007/06/07 |
| xmlrpc 관련 참조 (0) | 2007/06/07 |





최근에 달린 댓글
링크
최근에 받은 트랙백
태그목록