<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Python, Java, Life, etc

    A blog of technology and life.

    BlogJava 首頁 新隨筆 聯系 聚合 管理
      30 Posts :: 0 Stories :: 9 Comments :: 0 Trackbacks

    Lilina:RSS聚合器構建個人門戶(Write once, publish anywhere)

    最近搜集RSS解析工具中找到了MagPieRSS 和基于其設計的Lilina;Lilina的主要功能:

    1 基于WEB界面的RSS管理:添加,刪除,OPML導出,RSS后臺緩存機制(避免對數據源服務器產生過大壓力),ScriptLet: 類似于Del.icio.us it的收藏夾即時訂閱JS腳本;

    2 前臺發布:將自己的首頁改成了用Lilina發布我常看的幾個朋友的網志,也省去了很多更新自己網頁的工作,需要php 4.3 + mbstring iconv
    lilina.png
    開源軟件對i18n的支持越來越好了,php 4.3.x,'--enable-mbstring' '--with-iconv'后比較好的同時處理了UTF-8和其他中文字符集發布的RSS
    需要感謝Steve在PHP進行轉碼方面MagPieRSS進行和XML Hacking工作。至少目前為止:Add to my yahoo還不能很好的處理utf-8字符集的RSS收藏

    記得年初Wen Xin在CNBlog的研討會上介紹了個人門戶的概念,隨著RSS在CMS技術中的成熟,越來越多的服務可以讓個人用戶根據自己需求構建門戶,也算是符合了互聯網的非中心化趨勢吧,比如利用Add to My Yahoo!功能,用戶可以輕松的實現自己從更多數據源進行新聞訂閱。想象一下把你自己的del.icio.us書簽收藏 / flickr圖片收藏 / Yahoo!新聞都通過這樣一個RSS聚合器聚合/發布起來。其傳播效率將有多快。

    好比軟件開發通過中間平臺/虛擬機實現:一次寫成,隨處運行(Write once, run anywhere),通過RSS/XML這個中間層,信息發布也實現了:一次寫成,隨處發布(Write once, publish anywhere...)

    安裝Lilina需要PHP 4.3 以上,并帶有iconv mbstring等函數的支持,請確認一下

    另外就是一個需要能通過服務器端向外部服務器發送RPC請求,這點51.NET不支持。感覺PowWeb的服務很不錯,很多缺省的包都安裝好了:

    iconv
    iconv support enabled
    iconv implementation unknown
    iconv library version unknown

    Directive Local Value Master Value
    iconv.input_encoding ISO-8859-1 ISO-8859-1
    iconv.internal_encoding ISO-8859-1 ISO-8859-1
    iconv.output_encoding ISO-8859-1 ISO-8859-1

    mbstring
    Multibyte Support enabled
    Japanese support enabled
    Simplified chinese support enabled
    Traditional chinese support enabled
    Korean support enabled
    Russian support enabled
    Multibyte (japanese) regex support enabled

    將安裝包解包(下載文件擴展名是.gz 其實是.tgz,需要重命名一下):上傳到服務器相應目錄下,注意:相應cache目錄和當前目錄的可寫入屬性設置,然后配置一下conf.php中的參數即可開始使用。

    何東給我的建議:
    1)右邊的一欄,第一項的sources最好跟hobby、友情鏈接一樣,加個圖片。
    2)一堆檢索框在那兒,有些亂,建議只有一個,其它的放到一個二級頁面上。
    3)把聯系方式及cc,分別做成一條或一個圖片,放在右邊一欄中,具體的內容可以放到二級頁面上,因為我覺得好象沒有多少人會細讀這些文字。
    4)如果可能,把lilina的頭部鏈接漢化一下吧?

    一些改進計劃:
    1 刪除過長的摘要,可以通過尋找第2個"

    " 實現;
    2 分組功能:將RSS進行組輸出;

    修改默認顯示實現:Lilina缺省顯示最近1天發表的文章,如果需要改成其他時間周期可以找到:
    $TIMERANGE = ( $_REQUEST['hours'] ? $_REQUEST['hours']*3600 : 3600*24 ) ;

    進行改動。

    RSS是一個能將自己的所有資源:WIKI / BLOG / 郵件聚合起來的輕量級協議,以后無論你在何處書寫,只要有RSS接口就都可以通過一定方式進行再次的匯聚和發布起來,從而大大提高了個人知識管理和發布/傳播效率。

    以前對RSS理解非常淺:不就是一個DTD嘛,真了解起解析器來,才知道namespace的重要性,一個好的協議也應該是這樣的:并非沒有什么可加的,但肯定是沒有什么可“減”的了,而真的要做到這個其實很難很難……。

    我會再嘗試一下JAVA的相關解析器,將其擴展到WebLucene項目中,更多Java相關Open Source RSS解析器資源

    另外找到的2個使用Perl進行RSS解析的包:
    使用XML::RSS::Parser::LiteXML::RSS::Parser 解析RSS

    XML::RSS::Parser::Lite的代碼樣例如下:

    #!/usr/bin/perl -w
    # $Id$
    # XML::RSS::Parser::Lite sample

    use strict;
    use XML::RSS::Parser::Lite;
    use LWP::Simple;


    my $xml = get("http://www.klogs.org/index.xml");
    my $rp = new XML::RSS::Parser::Lite;
    $rp->parse($xml);

    # print blog header
    print "<a href=\"".$rp->get('url')."\">" . $rp->get('title') . " - " . $rp->get('description') . "</a>\n";

    # convert item to <li>
    print "<ul>";
    for (my $i = 0; $i < $rp->count(); $i++) {
    my $it = $rp->get($i);
    print "<li><a href=\"" . $it->get('url') . "\">" . $it->get('title') . "</a></li>\n";
    }
    print "</ul>";

    安裝:
    需要SOAP-Lite

    優點:
    方法簡單,支持遠程抓取;

    缺點:
    只支持title, url, description這3個字段,不支持時間字段,

    計劃用于簡單的抓取RSS同步服務設計:每個人都可以出版自己訂閱的RSS


    XML::RSS::Parser代碼樣例如下:
    #!/usr/bin/perl -w
    # $Id$
    # XML::RSS::Parser sample with Iconv charset convert

    use strict;
    use XML::RSS::Parser;
    use Text::Iconv;
    my $converter = Text::Iconv->new("utf-8", "gbk");


    my $p = new XML::RSS::Parser;
    my $feed = $p->parsefile('index.xml');

    # output some values
    my $title = XML::RSS::Parser->ns_qualify('title',$feed->rss_namespace_uri);
    # may cause error this line: print $feed->channel->children($title)->value."\n";
    print "item count: ".$feed->item_count()."\n\n";
    foreach my $i ( $feed->items ) {
    map { print $_->name.": ".$converter->convert($_->value)."\n" } $i->children;
    print "\n";
    }

    優點:
    能夠直接將數據按字段輸出,提供更底層的界面;

    缺點:
    不能直接解析遠程RSS,需要下載后再解析;

    2004-12-14:
    從cnblog的Trackback中了解到了Planet RSS聚合器

    Planet的安裝:解包后,直接在目錄下運行:python planet.py examples/config.ini 就可以在output目錄中看到缺省樣例FEED中的輸出了index.html,另外還有opml.xml和rss.xml等輸出(這點比較好)

    我用幾個RSS試了一下,UTF-8的沒有問題,但是GBK的全部都亂碼了,planetlib.py中和XML字符集處理的只有以下代碼:看來所有的非UTF-8都被當作iso8859_1處理了:
    try:
    data = unicode(data, "utf8").encode("utf8")
    logging.debug("Encoding: UTF-8")
    except UnicodeError:
    try:
    data = unicode(data, "iso8859_1").encode("utf8")
    logging.debug("Encoding: ISO-8859-1")
    except UnicodeError:
    data = unicode(data, "ascii", "replace").encode("utf8")
    logging.warn("Feed wasn't in UTF-8 or ISO-8859-1, replaced " +
    "all non-ASCII characters.")

    近期學習一下Python的unicode處理,感覺是一個很簡潔的語言,有比較好的try ... catch 機制和logging

    關于MagPieRSS性能問題的疑慮:
    對于Planet和MagPieRSS性能的主要差異在是緩存機制上,關于使用緩存機制加速WEB服務可以參考:可緩存的cms設計

    可以看到:Lilina的緩存機制是每次請求的時候遍歷緩存目錄下的RSS文件,如果緩存文件過期,還要動態向RSS數據源進行請求。因此不能支持后臺太多的RSS訂閱和前端大量的并發訪問(會造成很多的I/O操作)。

    Planet是一個后臺腳本,通過腳本將訂閱的RSS定期匯聚成一個文件輸出成靜態文件。

    其實只要在MagPieRSS前端增加一個wget腳本定期將index.php的數據輸出成index.html,然后要求每次訪問先訪問index.html緩存,這樣不就和Planet的每小時生成index.html靜態緩存一樣了嗎。

    所以在不允許自己配置服務器腳本的虛擬主機來說Planet根本是無法運行的。

    更多關于PHP中處理GBK的XML解析問題請參考:
    MagPieRSS中UTF-8和GBK的RSS解析分析

    2004-12-19
    正如在SocialBrain 2005年的討論會中,Isaac Mao所說:Blog is a 'Window', also could be a 'Bridge',Blog是個人/組織對外的“窗口”,而RSS更方便你將這些窗口組合起來,成為其間的“橋梁”,有了這樣的中間發布層,Blog不僅從單點發布,更到P2P自助傳播,越來越看到了RSS在網絡傳播上的重要性。

    Posted by chedong at December 11, 2004 12:34 AM Edit
    Last Modified at December 19, 2004 04:40 PM

    Trackback Pings

    TrackBack URL for this entry:
    http://www.chedong.com/cgi-bin/mt3/mt-tb.cgi/27

    Listed below are links to weblogs that reference Lilina:RSS聚合器構建個人門戶(Write once, publish anywhere):

    ? MagPieRSS中UTF-8和GBK的RSS解析分析(附:php中的面向字符編程詳解) from 車東BLOG
    第一次嘗試MagpieRSS,因為沒有安裝iconv和mbstring,所以失敗了,今天在服務器上安裝了iconv和mtstring的支持,我今天仔細看了一下lilina中的rss_fetch的用法:最重要的是制定RSS的輸出格式為'MAGPIE_OU... [Read More]

    Tracked on December 19, 2004 12:37 AM

    ? 用 lilina 和 blogline 來看 blog from Philharmania's Weblog
    看到一篇介紹 lilina 的文章后就自己安裝了一個試了下。lilina 是一個用 PHP 語 [Read More]

    Tracked on December 26, 2004 01:57 PM

    ? CNBlog作者群RSS征集中 from CNBlog: Blog on Blog
    在CNBLOG上搭建了Lilina RSS聚合器,請各位志愿者將各自網志或者和與cnblog相關專欄的RSS提交給我 — 直接在評論中回復即可。 推廣使用RSS聚合工具主要的目的 . [Read More]

    Tracked on December 26, 2004 07:42 PM

    ? 關于加快 lilina 顯示速度的一些設置 from Kreny's Blog
    我的 lilina 在設定了幾位朋友的 blog 和一些 news 以后,發現打開速度異常的慢,于是請教了車東,解決了問題。 解決的關鍵在于:

    直接將以下語句加入到 index.php 頭部即可,LILINA中你 .
    [Read More]

    Tracked on January 14, 2005 06:14 PM

    ? MT的模板修改和界面皮膚設置 from 車東BLOG
    分類索引: 首頁缺省有按月歸檔的索引,沒有分類目錄的索引,看了手冊里面也沒有具體的參數定義,只好直接看SOURCE:嘗試著把Monthly改成Category,居然成了 :-) 還到了Movable Style的MT樣式站,... [Read More]

    Tracked on January 17, 2005 01:25 PM

    Comments

    請問如果更改默認顯示7天的新聞,謝謝。

    Posted by: honren at December 12, 2004 10:20 PM

    我使用lilina已經一段時間了。
    http://news.yanfeng.org
    稍微改了一點UI。
    如果你能改進它,那就好了。

    Posted by: mulberry at December 13, 2004 09:24 AM

    老車同志,沒覺得你使用lilina以來,主頁的訪問速度具慢嗎?放棄吧,至少沒必要當作首頁,lilina還在技術還不成熟`~

    Posted by: kalen at December 16, 2004 10:33 AM

    可以考慮一下用drupal

    Posted by: shunz at December 28, 2004 06:46 PM

    可以試試我做的:http://blog.terac.com

    每3小時抓取blog,然后每個選5條最新的,排序,聚合,生成靜態xml,用xsl格式化顯示。。。

    Posted by: andy at January 6, 2005 12:53 PM

    車東同志,這樣做不好:P
    rss本來就在網上,你聚合它在你的網頁上不僅損害了你自己主頁的質量,而且迷惑了搜索引擎,造成你痛斥的“門戶網站損害創作熱情”的效果。還是不要聚合的好!

    posted on 2005-02-17 03:00 pyguru 閱讀(814) 評論(0)  編輯  收藏 所屬分類: Build Website
    主站蜘蛛池模板: 亚洲人成网网址在线看| 亚洲精品无码av人在线观看| 亚洲综合色区中文字幕| 在线a免费观看最新网站| 666精品国产精品亚洲| 最近免费中文字幕大全免费 | 一级毛片aa高清免费观看| 国产精品免费看香蕉| 成人亚洲国产精品久久| 亚洲国产成人五月综合网| 一级特黄a大片免费| 亚洲毛片αv无线播放一区| 国产免费无码一区二区| 亚洲av成人无码久久精品| 69国产精品视频免费| 亚洲人成在线精品| 精品国产免费观看久久久 | 亚洲精品无码鲁网中文电影| 免费在线中文日本| 亚洲成a人片在线观看播放| 噼里啪啦电影在线观看免费高清 | 成人免费乱码大片A毛片| 亚洲av无码乱码国产精品fc2| 2021在线观看视频精品免费| 亚洲 日韩经典 中文字幕| 免费欧洲美女牲交视频| 东北美女野外bbwbbw免费| 亚洲男人的天堂在线播放| 久久精品无码一区二区三区免费| 色费女人18女人毛片免费视频| 中文字幕不卡亚洲 | 免费人成在线观看播放国产| 韩日电影在线播放免费版| 亚洲一区二区中文| 好吊妞视频免费视频| 一出一进一爽一粗一大视频免费的 | 一级毛片免费观看不卡视频| 亚洲av无码专区在线电影天堂| 中文字幕亚洲乱码熟女一区二区| 成人免费大片免费观看网站| 免费无码一区二区|