hardsign: (Default)
[personal profile] hardsign

Первый вопрос, который возникает при проектировании системы блоггинга, — как хранить посты.

Поскольку непременным условием использования любой программы является её тесная интеграция с существующими сервисами, нужно уметь подстраиваться под формат этих сервисов. Вот прямо сейчас у меня под руками есть Livejournal/Dreamwidth и Telegram, и форматы сообщений в них радикально отличаются. Значит, должно быть какое-то универсальное представление, которое легко можно конвертировать в любой целевой формат.

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

Казалось бы, проблема решена? Да, но возникли две новых.

Во-первых, в исходном файле могут быть ошибки.

Во-вторых, в Markdown есть не все возможности, которые нужны в блоге — например, хитрая работа с изображением типа мелкое изображение плюс полноразмерное по клику.

Решение видится так:

  • Отдаём редактирование внешней программе, например, моей нежно любимой Typora. Особо продвинутые пользователи могут использовать даже vi.
  • Прикручиваем предпросмотр на базе браузера, а для особо продвинутых пользователей — хоть линтер с сообщениями об ошибке.
  • Добавляем в формат некоторые расширения, совместимые со стандартом, но интерпретируемые особенным образом. Например, все абзацы после заголовка, где первое слово отделено двоеточием, считаем служебными полями типа Tags: fidonet, бред, markdown. А свойства галереи указываем как текст в изображении, который стандартом Markdown никак не интерпретируется.
  • Когда и если проект станет совсем большим, кто-нибудь напишет для него собственный WISYWYG-редактор со всеми атрибутами красивой жызни.

Как всегда приглашаются желающие высказаться.

Profile

hardsign: (Default)
hardsign

January 2026

S M T W T F S
     12 3
45678910
11 12 13 14 151617
18192021222324
25262728293031

Style Credit

Expand Cut Tags

No cut tags
Page generated Jan. 15th, 2026 10:08 pm
Powered by Dreamwidth Studios