Re: forth и RSS

classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

Re: forth и RSS

Andrey Cherezov
Добрый день, Andrey Matveev!
(ставлю в CC: spf-dev@ - может кому еще пригодится)

Да, я тоже для этой цели использую xslt (последние лет 6), и всем
рекомендую.
В ForthScript (fs.exe) есть его поддержка (через ~ac/lib/lin/xml/* -
привязки к libxml и libxslt)
Например, rss форума Eserv ( http://forum.etype.net/forum_rss.xml )
генерируется такой строкой:
{S" connection.f" INCLUDED SqlInit S" forum_rss.sql" SqlQueryXmlFileDb
S" forum_rss.xsl" XSLTm}

Где connection.f:
S" Driver={MySQL ODBC 3.51
Driver};server=localhost;DB=phpbb;user=***;password=***" >STR STR@

http://forum.etype.net/forum_rss.xsl мог бы быть на порядок проще, но на
него возложена работа
по некоторому причесыванию BB-разметки, используемого в постах форума (Рувим
прислал мне реализацию). Остальные xsl (ниже) намного проще.

Обратный пример сборки страниц из rss: http://www.forth.org.ru/ 
собирается на лету из
десятка RSS (без кэширования, поэтому выдача страницы тормозит
пропорционально
суммарной загрузке этих серверов :)
Из fs.ini (все *.xsl можно взять по http там же):

: NewNewNews
  S" http://del.icio.us/rss/for/forth_news[...]" \ кросс.посты
del.icio.us зверски тормозят и отстают от постов
  S" rdf2rss_old.xsl" XSLTurl
;
: FileNews
  S"
http://sourceforge.net/export/rss2_projnews.php?group_id=17919&rss_fulltext=1"
  S" rss_sf.xsl" XSLTurl
;
: ProjectStats
  S" http://sourceforge.net/export/rss2_projsummary.php?group_id=17919"
  S" rss_sf_stat.xsl" XSLTurl
;
: WikiNews
  S" http://wiki.forth.org.ru/RecentChanges?format=rss&days=30"
  S" rss2html.xsl" XSLTurl
;
: SpfWikiNews
  S" http://spf.wiki.sourceforge.net/space/xmla?v=rss_2_0"
  S" rss_sf.xsl" XSLTurl
;
: Tracker \ трекер ~day'я, не используется: сначала поломался, потом
закрылся паролем
  S"
http://www.activekitten.com/trac/spf/report/1?format=rss&USER=anonymous"
  S" rsst.xsl" XSLTurl
;
: DevNews
  S" http://www.eserv.ru/ru/rss/spfd_rss.f"
  S" rsst.xsl" XSLT1
;
: DevNews2
  S" http://www.eserv.ru/ru/rss/spf_rss.f"
  S" rsst.xsl" XSLT1
;
: Azamat \ Forth Blog
  S" http://my.opera.com/forth/xml/rss/blog/"
  S" rsst.xsl" XSLT1
;
: MainScript
  " {PATH_INFO}" STR@ S" /" COMPARE 0=
  IF
     S" rss.xml" S" rss.xsl"
  ELSE
    [...]
  THEN XSLT
;
Упомянутые выше rss'ы с eserv.ru, как
http://www.eserv.ru/ru/rss/spf_rss.f, тоже генерятся
одной строкой ForthScript'ом по ChangeLog'ам (которые генерируются
перлом по CVS'у):
{S" ...\www.forth.org.ru\log\SpfSrcChangeLog.xml" S" rss_spf.xsl" XSLTn}

Когда я делал newshub (весной 2000го, первый "социальный" новостной сайт
в мире :)
RSS'ов не было ни у одного новостного сайта (да и слова такого никто не
слышал еще),
но новости легко извлекались из обычных html-страниц обычными regexp'ами.
В общем, тема простая, поэтому "велосипеды", конечно, давно изобретены для
всех возможных случаев.

Сообщение Ruvim Pinka от 23.12.2008 12:33:

>> Поиск по *rss*.f в каталоге devel/  выдает
>>
>> http://www.forth.org.ru/devel/~ygrek/lib/spec/rss.f
>>   -- парсинг
>>
>> http://www.forth.org.ru/devel/~ygrek/prog/web/irc/plugins/rss.f
>>   -- пример использования  (плагин к irc-боту)
>
> http://www.forth.org.ru/devel/~ygrek/prog/web/trac/rss.f
>   -- пример генерации
>
> Но сам я делал и рекомендую делать на основе XSLT :)
>
> Т.е., программа генерит только простой xml-документ (например, выборка
> из реляционной базы данных в виде таблички в формате xml), а
> формирование RSS (а лучше даже Atom) — через XSLT-преобразование.
>
> Тоже и в обратном направлении: из ленты через XSLT-преобразование
> сделать простой xml-документ на обработку программе, или даже
> преобразовать сразу не в xml, а в исходный код на форте, который далее
> просто выполнить.
>
>> [hidden email], wrote on 23.12.2008 13:13
>>> Андрей, а Вам случаем не попадалась либа для создания и парсинга RRS
>>> лент?
>>> Может кто уже изобрел велосипед :)


------------------------------------------------------------------------------
_______________________________________________
Spf-dev mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/spf-dev