yurikhan: (Default)

До чего же всё плохо с тем, что называется syndication.

Во-первых, читалки. Подавляющее большинство — на PHP с базой MySQL. В лучшем случае — с PostgreSQL, но всё равно PHP. Есть одна на Go с базой Google App Engine Datastore. What is this I don’t even. (Нет, десктопные читалки рассматривать принципиально не будем, потому что они не дают гарантию непропуска постов.)

Казалось бы, чего сидишь, ниша открыта, напиши RSS-читалку с архитектурой, которая не будет оскорблять твои чувства.

Да только дело в том, что сами форматы данных (RSS 0.9, RSS 1.0, RSS 0.91, RSS 2.0 и Atom вместе с ними) — тяжело больны антипаттерном «само выросло». Сначала у item’ов вообще были только название и ссылка. Потом добавилось описание, предполагаемое коротким и неформатированным. Потом внезапно оказалось, что люди пихают туда HTML! Иногда даже забывая сохранить well-formedness окружающего XML’я. Окей, сняли ограничения на длину, задокументировали, что блин, раз уж вы туда пишете HTML, то эскейпьте его по правилам XML’я. Ну и под конец Atom — «пишите хоть плейн текст, хоть заэскейпленный HTML, хоть валидный XHTML, но явно подпишите, какой именно формат вы используете».

Естественно, при прочих равных софт на стороне производителя генерирует тот формат, к которому проще привести входные данные. А входные данные у большинства[citation needed] блогов — не валидируемый и потому массово невалидный HTML. '<[CDATA[' + post_body + ']]>' и не волнует, пусть кто-то другой с этим потом мучается.

Поэтому всякий, кто решает сейчас писать RSS-читалку, через некоторое время погружается в бочку этого самого… дёгтя.

Пойду засуну свой инстанс Tiny Tiny RSS в контейнер от греха подальше. Тем более что оно, оказывается, перешло с нормальной модели релизов «вот вам полурегулярные orig.tar.gz, собирайте себе пакеты под что хотите» на rolling-модель «текущая стабильная версия — это то, что сейчас в master’е».

yurikhan: (Default)

Если вы делаете вот так:

<?xml version="1.0" encoding="utf-8"?>
<foo>
    …
    <description>какой-то &lt;b&gt;форматированный&lt;/b&gt; текст</description>
    …
</foo>

или так:

<?xml version="1.0" encoding="utf-8"?>
<foo>
    …
    <description><![CDATA[какой-то <b>форматированный</b> текст]]></description>
    …
</foo>

то эти лучи поноса — вам.

Read more... )
yurikhan: (Default)

Люди, которые проектируют какую-нибудь XML-схему, сначала описывают какой-нибудь элемент как содержащий текст (xsd:string), а потом говорят «Oops, а нам надо туда форматированный текст… ну пофиг, зафигачим туда кусок HTML, обёрнутый в <![CDATA[…]]>» — заслуживают выделенного круга ада. Google KML, I’m looking at you.

(Правильный путь, разумеется, включать xhtml как подсхему.)

Profile

yurikhan: (Default)
Yuri Khan

May 2017

S M T W T F S
 123 456
78910 111213
14 151617181920
21 222324252627
28293031   

Links

Syndicate

RSS Atom

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated 2017-05-29 17:08
Powered by Dreamwidth Studios