24 дня индивеба: Пост

Вчера я писал о том, как разместить страницу с базовой информацией про себя в интернете. Это уже неплохо: у тебя больше контроля над тем, как можно представить себя в Сети. Можно добавить себе галочку, как в Твиттере, можно сделать анкету в духе раннего ВКонтакте. Впрочем, можно пойти дальше и «вернуть стену», а именно — начать миниатюрный блог!

В защиту примитивизма

В интернете существует много сервисов, позволяющий создать «свой блог»: Blogger (принадлежит Гуглу), WordPress.com (принадлежит Automattic), LiveJournal (сервис), Ghost (сервис). Всё, что написано в таких блогах, лежит на серверах этих компаний — и если они тебя забанят, то получить обратно свои же тексты будет крайне непросто.

Помимо сервисов, в мире есть много «движков» блогов с открытым кодом, самые популярные это WordPress и Ghost. Оба требуют настроенной базы данных и возможности запускать программы на сервере (PHP в случае WordPress, Node.js в случае Ghost). Эти опции уже лучше, и в целом могут быть неплохим вариантом: приятный интерфейс, интеграции с другими программами, автоматическая генерация разных лент, поиск, теги.

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

Блог — это набор постов, обычно упорядоченных по времени создания.

Пост — это кусочек HTML.

Это можно собрать вручную.

В чём же смысл в том, чтобы делать это вручную, хотя бы поначалу? Я вижу для этого несколько причин.

Во-первых, мне кажется, что разработчики часто нездорово отдаляются от того, что происходит на самом деле. За слоями настроек вебпака, транспиляцией, GraphQL-схемами, да даже конфигурацией идеального набора плагинов для Вордпресса легко упустить, что в итоге нужно просто отдать читателю HTML, в котором будет что-то интересное. Мы легко увлекаемся блестящими штуками, и возвращение, хотя бы ненадолго, к земле, к «просто HTML» может сдвинуть перспективу.

Во-вторых, использование движка, в котором жёстко запрограммировано, что существуют Посты, у которых есть Теги, Дата и Статус Публикации, ограничивает то, что ты можешь придумать. Веб сам по себе нейтрален, блоги не были придуманы Тимом Бернерсом-Ли, они появились практически самостоятельно. Обычно такие движки (и уж тем более платформы-сервисы) предполагают, что пользователь будет публиковать посты, в которых будет текст и картинки. Если же вернуть себе возможность публиковать «сырой» HTML, то можно создавать вещи, которые не очень вписываются в этот формат. Например, календарик Индивеба — это просто HTML и немного CSS. Обратно-хронологический формат тоже подходит не для всего — может ты захочешь сделать гипертекстовую книгу, где нужно переходить по ссылкам, выбирая, что будет дальше,.

Чем технологии проще, тем меньше они настаивают на том, как их нужно использовать.

Как оформить пост

С точки зрения микроформатов, пост это элемент с классом h-entry. Вот так можно разметить коротенький пост, навроде тех, что бывают в Твиттере:

<article class="h-entry">
<a class="u-author" href="/">Тим</a> написал <time class="dt-published">2019-10-29</time>:
<p class="p-name p-content">
программисты be like: эээээ<br>
а потом: ааааа
</p>
</article>

Класс dt-published помечает, когда запись была опубликована, u-author — ссылка на автора, p-name и p-content в данном случае совпадают, но если бы это была статья с настоящим заголовком, то классы стояли бы на разных тегах. Например так:

<article class="h-entry">
<h2 class="p-name">Мини-пост внутри поста</h2>
<div class="e-content">
<p>
Обычно в таких случаях люди используют Lorem Ipsum,
но я люблю своих читателей, и пишу только крафтовые тексты, набранные
вручную. Никакого лорем, никакого янни.
</p>
<p>Впрочем, долорем сит амет. Дура лекс, сед лекс, так сказать.</p>
</div>
<footer>
Написал и опубликовал <a class="u-author" href="/">Тим Маринин</a>
<time class="dt-published">2019-12-03</time>.
</footer>
</article>

Во втором примере p-content заменилось на e-content. Префикс определяет, как нужно использовать это свойство. Всего в текущей версии микроформатов используется 5 префиксов:

  • h-* — вложенный объект (например, можно вложить h-entry внутрь h-feed)
  • p-* — просто текст, например, текст заметки
  • u-* — ссылка на что-либо (в примере — ссылка на автора)
  • dt-* — дата и время
  • e-* — текст с разметкой внутри

Добавлять эту мета-информацию (это пост, этот пост был опубликован тогда-то, автор поста тот-то и тот-то) стоит для того, чтобы пост могла прочитать и машина. Тогда сообщество может разрабатывать инструменты, которые используют эту разметку: например, читалка, которая собирает посты с разных сайтов в одну ленту.

На своём же сайте стоит завернуть посты (h-entry) в h-feed. Проверить, что пост получится распарсить можно при помощи онлайн-инструмента, но проверить h-feed он пока не может.

Кто-то на этом моменте вспомнит про RSS и Atom — и это справедливо, микроформаты частично вдохновлены Atom. Я рассматриваю микроформаты и индивеб в целом как логичное продолжение этой истории. Проблема RSS и Atom в том, что они заставляют авторов поддерживать несколько отдельных представлений контента: одно для людей, другое для машин. Это приводит к странной динамике, где сайты отдают в RSS либо не тот контент, что на сайте, либо только кусочек контента.

Кому это интересно

Но зачем вообще писать и публиковать в вебе?

Я уверен, что в мире существует множество людей, которым интересны те же самые вещи, что и мне. Для многих написать твит или отправить фоточку в инстаграм — это понятное действие, «я хочу поделиться этим со своими друзьями и подписчиками». Для этого же стоит постить и на свой сайт. Но есть и другие причины.

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

Поэтому меня удивляет, когда знакомые говорят, что «мне нечего опубликовать на своём сайте». Никто никому не обязан быть полезным. Веб — нейтрален, и если хочется постить шутки про вебпак, а длинные рассуждения про индивеб не хочется, то можно спокойно постить шутки на своём сайте.

Так что загляни в свой твиттер, инстаграм, вконтакт — всё это можно постить и на своём сайте.

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

День 2: страница · День 4: прагматизм

Тим опубликовал

Если понравился этот пост, то подпишись на мой Патреон