bbs.kldp.org 주제들 뽑아오기

땡찬의 이미지

안녕하세요~

kldp.org 에서 메인화면의 테이블 좌즉에 보면 bbs.kldp.org 의 프로그래밍 q&a 의 최근 주제들이 나옵니다. 저두 이것을 써보고 싶은데 제가 제대로 찾아보지 않았는지 phpbb.com 에서는 자료를 찾을수가 없습니다.
혹시 관리자분이 직접 db에서 뽑아오게 만드신 건가요? 일단 아닐거라 믿으면서..
최근 주제를 뽑아오는 방법을 알고 싶습니다. phpbb.com 에 관련 문서가 있다면 링크를 알려주시면 감사하겠습니다.

혹시라도 직접 구현하신거라면, 소스를 좀 얻을 수 있을까요?

권순선의 이미지

phpbb의 rdf 모듈을 설치해서 30초마다 가져오게 했고요. rdf 모듈은 http://www.phpbb.com/phpBB/viewtopic.php?t=75316 에 있습니다. 옵션이 좀 있으니 한번 읽어 보세요. 누구나 헤드라인 중계를 하실 수 있습니다. ( http://bbs.kldp.org/rdf.php )

다음 php 코드를 페이지에 넣으시면 됩니다. 안내 페이지를 별도로 하나 만든다, 만든다 생각만 하고 있으면서도 귀찮아서 안하고 있었는데.... :)

<?
// 
// 헤드라인 생중계용 php 스크립트
// 만든이: 임 은재<eunjea@kldp.org>
//
// 사용법: 이 파일의 내용을 php 소스에 추가하거나 include()로 포함시키면 됩니다.
//

$link_prefix    =    "<li>";
$link_postfix    =    "<br>\n";
$cache_file    =    "/tmp/kldpbbs.cache";
$cache_time    =    3600; //이 시간은 초단위이므로 짧게 지정하시면 자주 갱신합니다.
$max_items    =    10; //가져올 헤드라인 갯수
$target        =    "_new";

$backend    =    "http://bbs.kldp.org/rdf.php";

$items        =    0;
$time        =    split(" ", microtime());

srand((double)microtime()*1000000);
$cache_time_rnd    =    300 - rand(0, 600);

if ( (!(file_exists($cache_file))) || ((filectime($cache_file) + $cache_time - $time[1]) + $cache_time_rnd < 0) || (!(filesize($cache_file))) ) {

    $fpread = fopen($backend, 'r');
    if(!$fpread) {
        echo "파일 읽기 오류<br>\n";
        exit;
    } else {

        $fpwrite = fopen($cache_file, 'w');
        if(!$fpwrite) {
            echo "파일 쓰기 오류<br>\n";
            exit;
        } else {

            while(! feof($fpread) ) {

                $buffer = ltrim(Chop(fgets($fpread, 256)));

                if (($buffer == "<item>") && ($items < $max_items)) {
                    $title = ltrim(Chop(fgets($fpread, 256)));
                    $link = ltrim(Chop(fgets($fpread, 256)));
                    $description = ltrim(Chop(fgets($fpread, 256)));

                    $title = ereg_replace( "<title>", "", $title );
                    $title = ereg_replace( "</title>", "", $title );
                    $link = ereg_replace( "<link>", "", $link );
                    $link = ereg_replace( "</link>", "", $link );

                    fputs($fpwrite, "$link_prefix<A HREF=\"$link\" TARGET=\"$target\">$title</A>$link_postfix");

                    $items++;
                }


            }
        }
        fclose($fpread);
    }
    fclose($fpwrite);
}
if (file_exists($cache_file)) {
    include($cache_file);
}
?>
땡찬의 이미지

감사합니다~
덕분에 쉽게 해결됐습니다.

아래는 여담입니다.
Mod 중에 있는것 같아서 찾아보다가 Mod 분류해논것을 하나씩 보는데. Syndication 이라는 게 있더군요.
근데 야후영한사전에서 Syndication을 검색했더니 무슨 알수없는 말이 나오더군요.(사실 정확히는 SugarCube 라는 ircbot 으로 -ydic Syndication 이라고 친 결과)

Quote:

-ydic Syndication
syndication [sndkin] n. 신디케이트 조직

모드를 뒤지다가 저런 알 수 없는 게 나와서 그냥 지나쳤는데 저거 였군요. 역시 있는것일줄 알았습니다.

잘쓰겠습니다. :D

all my trouble's gone

hurryon의 이미지

Quote:

XML 페이지를 표시할 수 없습니다.
XSL 스타일시트를 사용하여 XML 입력을 볼 수 없습니다. 오류를 수정한 다음 새로고침 단추를 누르거나 나중에 다시 시도하십시오.

--------------------------------------------------------------------------------

item 끝 태그가 title 시작 태그와 일치하지 않습니다. 68 줄, 3 위치

</item>
--^

으흠. 오전에 RSS 을 이용하는 방법이 있길래 등록해 놓고 잘 쓰고 있습
니다만...으흠...점심 먹고 와도...헤드라인이 그대로...음냐. 15분 마다
긁어 오도록 해 놓았는데...

음냐.

뭔가 좀 변경을 하신 듯 한데...으흠...확인을 부탁합니다.

그리고 제목이외에 내용까지도 2-3 줄 정도 제공해 주셨으면 더 보기가
편할거 같습니다.

위의 RSS 을 참고 하실길...으흠...우리나라에선 RSS로 뉴스나 정보꺼리을
제공해 주는 싸이트가 아직까지는 없는거 같습니다. 제가 아무리 찾아
보아도 한빛미디어 싸이트 이외에는 없더군요. 물론 블로그 시스템들을
이용한 블러거들의 싸이트야 지원을 하지만요. 한미르쪽의 블로그도
지원.

뉴스싸이트나 신문사 싸이트에서 빨리 RSS new feed 을 해 주실 바라면서
쓰적입니다.

:-)

권순선의 이미지

지금 현재 rdf.php를 IE로 보았을 때 오류가 있다고 이야기하는 것은 http://bbs.kldp.org/viewtopic.php?p=70794 때문입니다. 제목이 길어서 중간에 잘라줘야 하는데 2바이트 문자라서 제대로 잘리지를 않았기 때문이죠.

그래도 중계하는데는 문제가 없을 텐데요? http://kldp.org 초기화면에서도 같은 코드를 사용하고 있답니다. 제목이 이상하게 잘린 글이 있긴 해도 생중계 기능 자체는 동작을 하거든요. 사실은 고쳐야 하는데 귀찮아서 놔두고 있답니다. :-)

권순선의 이미지

제목이 길 경우 한글이 이상하게 잘리는 문제를 방금 해결 하였으므로 말씀하신 것과 같은 오류는 더이상 발생하지 않을 것입니다. 참고하세요....

cdpark의 이미지

KLDP blog의 news feed에서도 KLDP BBS의 내용을 볼 수 있을까요? :)

권순선의 이미지

cdpark wrote:
KLDP blog의 news feed에서도 KLDP BBS의 내용을 볼 수 있을까요? :)

약간의 문제가 있습니다. KLDP BBS는 euc-kr이고 KLDP blog는 utf-8이라 KLDP blog에서 그대로 syndicate하게 되면 글자가 깨집니다. 그러므로 euc-kr인 놈을 utf-8로 변환해야 하는데 현재 drupal의 news feed 모듈이 그것까지는 해주지 않는고로 그냥 별도의 블럭으로 넣어주는 수밖에 없습니다.

어쨌든 가능하긴 한데 KLDP blog에 사용자가 별로 없어서 그냥 놔두고 있지요. cdpark 님이 좋은 글좀 올려 주시면 곧바로 사용하실 수 있도록 해 드리겠습니다. :) :) :)

cdpark의 이미지

급한대로 iconv나 recode 등의 도움을 받는 건 어떨까요?
rss 파일을 받은 후에 위 유틸리티로 인코딩을 바꾸면 될 듯 싶네요.
(필요하다면 첫 줄도 갈아치우고)

drupal 쪽을 고치더라도 kldp.org 대문에서 blog.kldp.org를 중계하려면 또 utf-8 -> euc-kr 변환도 필요할테니깐요.

(물론 XML 관련 루틴에서 xml의 encoding 부분을 해석해서 처리하는게 왕도이지만... 땜빵의 길도 있습니다.)

권순선의 이미지

어제 땜빵으로 좀 닭질을 해보긴 했는데 잘 안돼서 잠시 접었습니다. drupal 4.2가 아직 정식으로 릴리즈되지 않았으므로 지금 고쳐봐야 그때 또 고칠 부분이 생길 가능성이 크고, kldp blog에 사용자도 그다지 많지 않으므로 일단 hold하겠습니다. :)

cdpark의 이미지

권순선 wrote:
제목이 길 경우 한글이 이상하게 잘리는 문제를 방금 해결 하였으므로 말씀하신 것과 같은 오류는 더이상 발생하지 않을 것입니다. 참고하세요....

고쳐야 되는 부분을 정리해주실 수 있나요? 저도 drupal을 설치 중이라.. (닭질의 반복을 줄이려고요.)

cdpark의 이미지

Drupal의 import.module에서
$xml_parser = xml_parser_create();
$xml_parser = xml_parser_create("utf-8");으로 바꿔주면 UTF-8 소스(그리고 당연히 US-ASCII 소스도)에서 제대로 feeding을 받을 수 있습니다. (독일어/프랑스어 등을 포함한 ISO-8859-1 소스는 깨지겠죠? :) ) 실험도 끝냈고요.

xml_parser_crate()는 아쉽게도 아직은 EUC- 계열은 지원하지 않습니다.

KLDP BBS는 EUC-KR로 feed를 제공하니, 중간에 변환 루틴만 넣으면 해결되네요.

권순선의 이미지

권순선 wrote:
어제 땜빵으로 좀 닭질을 해보긴 했는데 잘 안돼서 잠시 접었습니다. drupal 4.2가 아직 정식으로 릴리즈되지 않았으므로 지금 고쳐봐야 그때 또 고칠 부분이 생길 가능성이 크고, kldp blog에 사용자도 그다지 많지 않으므로 일단 hold하겠습니다. :)

제가 고친 부분은 drupal쪽이 아니고, bbs.kldp.org 쪽입니다. rdf 부분에서 제목을 뽑아낼 때 글자가 깨지는 경우가 있어서 jsboard의 코드를 베껴 넣은 것이지요.

rdf.php (rdf export mod입니다. phpBB를 사용할 경우 별도로 받아서 설치해 주어야 합니다.)에서 다음 부분을 고치면 됩니다. diff 결과는 다음과 같습니다.

kss@bbs:/kldp/bbs$ diff rdf.php rdf.php.org
43d42
< $count = ( $count > 50 ) ? 50: $count;
101c100
<                       'TOPIC_TITLE' => preg_replace("/(([\x80-\xFE].)*)[\x80-\xFE]?$/","\\1",$topic['topic_title']))
---
>                       'TOPIC_TITLE' => $topic['topic_title'])
122c121
< ?>
---
> ?>
cdpark의 이미지

권순선 wrote:

제가 고친 부분은 drupal쪽이 아니고, bbs.kldp.org 쪽입니다.

drupal에서 comment를 달 때, 따로 제목을 정해주지 않으면 본문의 일부를 잘라서 제목으로 씁니다. 그런데 무조건 뎅강 잘라 쓰기 때문에 당연히(!) 문제가 생깁니다. 전 이 버그는 잡으신 줄 알았는데, kldp blog에도 남아 있군요. (방금 확인.)

http://bbs.kldp.org/viewtopic.php?t=22177
이 코드를 적용하면 될 듯 싶습니다. mb_strcut() 함수로 다 갈아치우는 게 더 나을지도 모르겠지만요. drupal 쪽엔 버그리포트 해 놨으니 좀 더 기다려보죠.

KDLP BLOG는 어느 버젼이죠? RC? CVS?

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo]. PHP 소스 코드는 다음과 같이 사용할 수 있습니다: <?php ... ?> 또는 <% ... %>.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo]. PHP 소스 코드는 다음과 같이 사용할 수 있습니다: <?php ... ?> 또는 <% ... %>.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo]. PHP 소스 코드는 다음과 같이 사용할 수 있습니다: <?php ... ?> 또는 <% ... %>.
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo]. PHP 소스 코드는 다음과 같이 사용할 수 있습니다: <?php ... ?> 또는 <% ... %>.
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.