> OS: Unix 계열 (확인:Linux, OS X)
> Lang: C++
> 마지막 변경: 2007-12-14

블로그에서 RSS를 가져오는 간단한 클래스입니다. 공개되어 있는 가벼운 xml 라이브러리를 사용할려고 했는데, 데이터가 크면 오류가 나서 간단하게 만들어 보았습니다. 소스파일을 하나로 만들려다 보니 다른 라이브러리를 쓰지 않았습니다. 사용 가능한 socket, string, list 클래스들을 활용하시면 간단해 질 것입니다.

티스토리, 다음, 네이버에서 몇 개의 블로그들을 테스트를 해 보았습니다. 우선 아래의 파일을 다운로드 받으신 후에 압축을 풀면 소스 파일(brss.cpp, brss.h), makefile, 테스트 용 test_brss.cpp 네개의 파일이 있습니다.


make를 하시면 테스트 파일이 컴파일 되며, test_brss.cpp는 아래와 같습니다.

#include <stdio.h>
#include "brss.h"

int main(int argc, char* argv[])
{
    if(argc != 3)
    {  
        printf("\nUSAGE: test_brss [url] [domain]\n");
        return 0;
    }  

    char aszBuff[128];
    CBlogRss* pRSS = new CBlogRss;

    if(pRSS->GetData(argv[1], argv[2]) == false)
    {  
        printf("Fail to get data[%d]\n", pRSS->GetErrorLine());
    }  
    else
    {  
        T_BlogInfo* pBlog = pRSS->GetBlogInfo();

        printf("Blog %s, %s, %s, %d [E:%d]\n",
            pBlog->aszTitle, pBlog->aszLink, pBlog->aszDesc,
            pRSS->GetPostCount(), pRSS->GetErrorLine());
    }  

    for(int i = 0; i < pRSS->GetPostCount(); i++)
    {  
        T_BlogPost* pPost = pRSS->GetBlogPost(i);

        sprintf(aszBuff, "%d-%02d-%02d %02d:%02d",
            pPost->tTime.nYear, pPost->tTime.nMonth, pPost->tTime.nDay,
            pPost->tTime.nHour, pPost->tTime.nMin);

        printf(" > post %d: %s (%s) @ %s\n", i+1, pPost->aszTitle,
            pPost->aszLink, aszBuff);
        //printf(" > %s\n", pPost->pszDescription);
    }  

    delete pRSS;

    return 0;
}

테스트를 실행 하실려면 사용법은 아래와 같습니다.
> ./test_brss [blog_url] [path]

[blog_url] 에서 접속할 블로그 도메인을 'http://'나 주소 맨뒤에 '/'를 생략하고 입력합니다. [path]는 도메인을 제외한 주소입니다. 아래의 예를 보시면 쉽게 이해할 수 있을 것입니다.
사용자 삽입 이미지


소스를 보시면 아시겠지만 제가 만드는 것들이 다 그렇듯이 아주 아껴서 주석을 넣고, 필요한 만큼 대충 파싱을 하고, 대충 오류를 확인합니다. 아직  몇 개의 블로그 밖에 테스트를 하지 못했습니다. 버그나 사용시 오류가 있으면 댓글로 알려 주시면 감사하겠습니다.

가끔 뭘 올리기는 하는데 도움을 드릴려고 올리는 것인지, 테스트를 부탁 드리는 것인지 저도 혼동이 오네요. 당연한 이야기겠지만 사용하는데는 어떠한 제한도 없습니다.

'기타' 카테고리의 다른 글

프로그래밍 언어 인기 순위  (21) 2008.01.09
OS X APM 설치툴 - MAMP  (6) 2007.12.27
블로그 RSS 읽어오는 C++ class  (7) 2007.12.14
OS X용 정규 표현식 테스트 어플리케이션 - Reggy  (1) 2007.12.12
cocoa 이름의 유래  (6) 2007.11.30
맥용게임 Doukutsu  (3) 2007.11.21
모든 댓글을 환영합니다. (욕설과 광고는 삭제합니다.)
  1. Favicon of http://devmac.net/blog BlogIcon DEVMAC 2007.12.16 00:38  댓글주소  수정/삭제  댓글쓰기

    아, 저 질문 하나 드려도 될까요?
    만일, form에 버튼을 하나 달린... 간단한 cocoa app를 만들어, 그 버튼을 눌렀을때...
    위의 소스를 make 명령을 실행하여 컴파일하고... 또 실행파일을 실행해서 결과를 받아올 수 있을까요?
    물론 애초에 RSS feeder를 gui app를 작성하면 되겠지만,
    cocoa app에서 특정 unix command를 실행하고, 그 결과를 받아 올수 있을까 궁금해지네요.

    • Favicon of https://www.cocoadev.co.kr BlogIcon cocoadev 2007.12.16 09:45 신고  댓글주소  수정/삭제

      NSTask를 이용해서 실행하고 결과값은 파이프를 통해서 가지고 오면 될 것 같습니다.

      제 포스트 중 http://www.cocoadev.co.kr/61에 비슷한 내용이 있습니다.

  2. Favicon of http://devmac.net/blog BlogIcon DEVMAC 2007.12.16 23:26  댓글주소  수정/삭제  댓글쓰기

    이를 어째~
    감히 cocoadev님의 포스트를 뛰엄뛰엄 보고 있었다는 것이 들통 나버렸군요. -_-;;;

  3. Favicon of http://kuna.wo.tc BlogIcon 쿠나 2009.05.18 22:27  댓글주소  수정/삭제  댓글쓰기

    오오.. 텍스트큐브용 댓글 실시간 알리미를 제작해보려고 했는데, 큰 도움 될것 같습니다 ^^. 잘 쓸게요 :)

  4. cherryzone12 2010.08.26 20:20  댓글주소  수정/삭제  댓글쓰기

    잘 참고해서 쓸께요 ㅎㅎ 감사합니다 ㅎㅎ