Позднее Ctrl + ↑

Почему заметки в РСС Эгеи могут повторяться

Потому что у вашего блога несколько адресов-синонимов и не настроен редирект на канонический адрес. Сейчас объясню.

Об определении новых заметок

Иногда люди жалуются, что от некоторых блогов на Эгее заметки «приходят по два раза» (или даже больше). Такое, например, было у Максима Ильяхова.

Чтобы разобраться, в чём дело, важно сначала понять, что заметки по РСС никуда не «приходят». РСС — это просто формат, в котором отдаётся лента. Читалка смотрит, не появилось ли в ленте новое, и, если появилось, показывает вам это как непрочитанное. Разумеется, каждая заметка в ленте встречается один раз — можете сами в этом убедиться на любом проблемном блоге. Но что-то заставляет читалку при очередном взгляде на ленту считать, что заметки из неё она ещё не видела, и нужно показать вам их как новые.

Чтобы понять, видела читалка заметку или нет, она смотрит не в текст заметки, а в РСС-тег <guid>. Этот тег должен содержать некий глобально уникальный идентификатор заметки. Традиционно для этого используют просто адрес заметки, и в этом случае ещё ставится атрибут isPermaLink.

Например, у этой заметки в ленте написано так:

<guid isPermaLink="true">
  http://ilyabirman.ru/meanwhile/all/aegea-rss-duplication/
</guid>

Об адресах-синонимах

Мой блог доступен по нескольким другим адресам, например:

И по всем возможным сочетаниям этих доменов и путей, с www и без. Однако у меня настроены редиректы. Если вы зайдёте не по каноническому адресу, вы автоматически перейдёте на канонический — попробуйте сами.

Когда редиректы не настроены, по нескольким адресам открывается одно и то же, при этом браузер остаётся по тому адресу, по которому вы зашли и никуда не переходит.

Это ошибка в настройке сервера: кроме владельца сайта никто не знает, что эти адреса — синонимы, и для внешнего мира всё выглядит так, будто есть несколько сайтов с одинаковым содержимым. Наверное, поисковики умеют такое отслеживать и понимать, но РСС-читалке неоткуда знать, что ilyabirman.ru и ilbi.ru — это один сайт (не пойдёт же она их постранично сравнивать).

Так почему возникают дубликаты-то?

Предположим, у меня бы не было редиректов, и кто-то бы подписался на РСС с сайта ilbi.ru/blog. Тогда в его РСС-ленте «уникальный» идентификатор этой заметки выглядел бы уже вот так:

<guid isPermaLink="true">
  http://ilbi.ru/blog/all/aegea-rss-duplication/
</guid>

Само по себе это не было бы проблемой, ведь для каждого конкретного подписчика эти адреса действительно уникальны. Если кто-то подписался на ilbi.ru/blog, то в его РСС-потоке неоткуда же взяться заметке с адресом ilyabirman.ru? Есть: из кеша!

Когда читалка первый раз просит у Эгеи РСС конкретного блога, Эгея генерирует его, отдаёт читалке и сохраняет себе локально, в кеш. Поэтому когда читалка (эта же или другая) спрашивает ещё раз, Эгея просто отдаёт готовый файл, ничего не генерируя. Когда автор добавляет или редактирует заметку, Эгея удаляет устаревший кеш, и следующий соберёт только тогда, когда какая-то читалка её попросит.

Получается, что когда читалка обращается за РССом, Эгея отдаёт его из кеша, где все идентификаторы зависят от того, по какому адресу у неё спрашивали РСС первый раз после последнего изменения. Когда читалка, которая в прошлый раз видела десять заметок с идентификатором ilyabirman.ru/что-то, видит десять новых заметок с идентификаторами ilbi.ru/что-то, она думает, что перед ней новьё — вот и показывает всё это как непрочитанное.

Так падажжи

Тут у вас могут возникнуть вопросы.

— Что мешает Эгее во избежание этой проблемы писать идентификаторы всегда с одним адресом, даже если она доступна по нескольким?

Не только внешний мир без редиректа не знает, что ilyabirman.ru и ilbi.ru — это одно и тоже. Эгея, чтобы узнать, на каком сервере она работает, смотрит, по какому адресу её открыли — больше ей это узнать неоткуда. Если её открыли по адресу ilbi.ru, то в её вселенной просто не существует набора символов «ilyabirman.ru», чтобы засунуть его в РСС. То, что он оказывается в кеше — чистая случайность.

Конечно, можно вести отдельный список всех адресов, по которым данная копия движка когда-либо открывалась, и всегда ставить в РСС первый из них. Но это ужасный костыль, и если автор от одного из синонимов откажется в будущем, а он как раз окажется первым в этом списке, у него просто сломается РСС, и он никогда не поймёт, почему.

— Что мешает в качестве уникальных идентификаторов отдавать какую-то случайную (но постоянную для заметки) шестнадцатиричную фигню, чтобы вообще не завязываться на адреса?

Помимо того, что это тоже костыль и усложнение движка, проблема ещё вот в чём. Отдавать именно адрес заметки в качестве идентификатора принято в мире РСС — я за всю жизнь не видел ленты с другими идентификаторами. Я боюсь, что какие-то читалки могут на это полагаться, и что-нибудь в них сломается, если сделать иначе.

Помимо этих я могу придумать ещё много вариантов того, как обойти эту проблему, но все они имеют серьёзные недостатки. Ну, например: можно хранить раздельные кеши для всех адресов, по которым заходят в блог — и занимать в несколько раз больше места на диске, чем нужно. Или: не кешировать РСС вообще — и увеличивать нагрузку на сервер не по делу. Но главное, мне не нравится сама идея пытаться из последних сил работать в шизофреническом окружении.

Вывод

РСС ломается, потому что вы делаете странное: у вас сайт одновременно и один, и несколько. Настройте редиректы, сбросьте кеш и всё будет хорошо.

Что почитать на выходных — 158

Авиационный выпуск:

  1. Научно-технические мифы, часть 1. Почему летают самолеты? Вот мне всегда школьное объяснение казалось странным.
  2. Почему авиастроительные корпорации делают одинаковые самолеты? Простые соображения — удобство обслуживания, безопасность, снижение шума.

И заодно:

  1. Четыре совета для повышения эффективности b2b-продаж. Миша Танский советует.

Идея для сексшопа

Этот файл лежит у меня на рабочем столе уже месяц, и я не знаю, куда его деть, поэтому ловите:

Это надо прямыми руками нарисовать, конечно. Анальную пробку пик (точёных) подобрать более подходящей формы. Сделать бубновый презерватив узнаваемее, а шлёпалку треф сделать шлёпалкой по попе, а не по ковру. Сердечко вроде и так норм, но хочется превратить в какой-то объект, но при этом не шлёпалку вторую. Что там ещё бывает, наклейки для сосков? (Я просто не в курсе — предпочитаю, когда не заклеены.)

Кстати, словосочетание «анальная пробка» в этом блоге встречается впервые за 15 лет его существования, а вот соски уже встречались.

Аудио по четвергам: 4ware

Помните, я выкладывал трек Чаба You and me? А тут у Дедмауса, оказывается, не так давно появилось что-то напоминающее его по звукам и остинатности, но при этом совсем другое и очень сладкое. Прог:

Deadmau5: 4ware

Что почитать на выходных — 157

Вот:

  1. Почему Шилов — плохой художник, а Брюллов — хороший? Повысить разрешение.
  2. Полное интервью с главным инженером SpaceX. «Даже авиакомпании до́роги в сравнении с [нами]. От Илона я часто слышу: „Знаешь какая цена у Теслы S? Пускай машина будет исходной точкой, стройте ракеты по примеру машин, насколько это возможно“». «Маск размышляет так: „каковы физические пределы скорости производства машин?“ Он смотрит на видео, где производятся банки для колы: погуглите сами, там всё просто смазано от скорости». «Основная часть цены автомобиля — это не стоимость материалов, а фабрика, которая их производит.»
  3. Шумность контура.
  4. Сунь Цзы — Искусство войны. Дмитрий Кучев делится цитатами из книги.
  5. Spelling pronunciation.

Хотите стать спонсором рубрики? Пишите: ilyabirman@ilyabirman.ru

Аудио по четвергам: «Здесь и сейчас»

Simon Patterson & Sarah Howells: Here & Now (Micky Noise Remix)

Этот трек я украл у Даниила Соколовского (подпишитесь на его блог о создании музыки). Вроде бы современный попсовый пситранс, который бы 10 лет назад прошёл под тегом «прогрессив», но что-то в этом треке есть.

Заодно нашёл оригинал (транс):

Simon Patterson & Sarah Howells: Here & Now

Очень хороший, хотя транс я не слушаю. И интересно сравнивать с ремиксом.

So far, it could’ve been anywhere
But it’s here and now, and it’s too far to go back
So close, couldn’t see you anywhere
But you’re here and now, and there’s no way to go back
In here right now we’ll fall into the black

But it’s here and now
I’m not innocent I want you to know
Hold me down and don’t ever leave me alone
Make no promises break all of the rules
And reach for the heart

Cause you’re here and now

Схема метро Минска

Дорогие друзья, пришло время показать вам новую, прекрасную схему метро Минска.

Арт-директор — я, дизайнеры — Иван Звягин и Константин Евстратенко.

В центре показаны достопримечательности и ориентиры, парки и река, улицы и расположение выходов из метро, а за его пределами — только названия станций. Благодаря этому схема получилась равномерно заполненной, привлекательной для туристов и полезной для минчан. Жмите на картинки, чтобы рассмотреть и почитать подробнее.

Логика и квантовая физика

Антон Жиянов пишет в твиттере:

Я уже привык, что люди, которые в логику не очень, пытаются выдать своё непонимание за широту кругозора. Я уже писал, например, о том, как люди приплетают нечёткую логику. Ну, а Антон вот решил приплести квантовую физику. Он пытается намекнуть на то, что знания логики недостаточно, чтобы делать выводы о физике. В этом он совершенно прав, однако из конкретного примера, который он приводит, видно, что Антон, к сожалению, слаб не только в логике, но и в самой квантовой физике. И для того, чтобы сделать этот вывод, мне достаточно лишь знания логики — сам я в физике тоже мало понимаю.

Дело в том, что «знание некоторых принципов легко возмещает незнание некоторых фактов».

Чтобы заниматься квантовой физикой, нужно иметь какой-то одинаково понимаемый всеми и непротиворечивый набор терминов, и логика нужна именно для этого.

Нельзя просто сказать «электрон одновременно находится в двух местах» и продолжать решать задачи как ни в чём не бывало. Именно потому, что в этом высказывании есть проблема с логикой, мы вообще вынуждены изучать происходящее явление более подробно и находить формальный аппарат для его описания. Если в мире квантовой физики высказывание «этот электрон находится одновременно в местах A и B» может быть верным, то в этом мире придётся придумать, чем эта ситуация отличается от ситуации «в местах A и B расположены два разных электрона». Так мы постепенно придём к более глубокому, чем обывательские, пониманию слов «электрон» и «место».

Если ты просто зевака из твиттера, то ты можешь просто сделать вид, что знаешь случай, в котором логика не работает. Но если ты физик, ты не можешь себе такого позволить. Если бы логика могла иногда соблюдаться, а иногда нет, то высказывание «электрон одновременно находится в двух местах» никому бы не казалось странным, все бы думали «ну ок, тут логика не соблюдается, чё такого». Но физики подобные формулировки могут использовать разве что в иллюстративных целях. Когда речь идёт о решении задач, они переходят к формулам, точно и непротиворечиво выражающим изучаемые свойства.

Пока не научишься логике, за квантовую физику браться рановато.

См. также:

Учите токипону

Учите токипону, она хорошая и простая (поэтому так и называется):

o kama sona e toki pona. ona li pona pona. nimi ona li toki pona tan ni.

Ранее Ctrl + ↓