Блог умеет показывать картинки
Во время написания
8b084f928564cd3b23edc8bfd8dcf5d6c1d1892e я захотел
поделиться фотографией того, что раньше выглядело как аккуратненький
сервер. Но это надо куда-то выкладывать фотографию, желательно чтобы не
просто файло-помойка была, ссылаться на неё. Иногда ведь были позывы
поделиться снимком экрана. В общем, добавил в свой движок для блока
показывать картинки.
Для добавления дополнительной информации к коммиту (который является
постом в блоге) в Git можно в отдельной ветке в файле с названием равном
хэшу коммита разместить произвольную информацию. Собственно это
git-notes. Комментарии у меня хранятся именно как git-note, в который
дописываются recfile-отформатированные записи. Но картинки это бинарные
файлы, к тому же к которым надо бы название/alt добавлять и намекать на
формат изображения. Была идея превратить файл в notes-like ветке в
директорию, в которой названия файлов это alt-текст плюс расширение
указывающее тип.
Но хранить изображения хотелось бы в отдельном репозитории, ибо это уже
опциональная информация, жутко тяжёлая по определению. Начал думать о
подключении в движке ещё одного репозитория, в котором выбирать нужную
ветку и искать директорию с файлами. Легко делать сложно. И только после
этого дошло: а зачем Git то? Не нашёл ответа. В итоге для хранения
картинок просто указываю путь к директории с картинками. Поддиректориями
являются хэши записей в блоге. Внутри них -- просто обычные файлы. И
раздавать директорию можно обычным HTTP-сервером, ничего не надо
просасывать через движок блога. По сути он теперь просто проверяет есть
ли директория с именем коммита и список файлов превращает в список <img>
элементов, а в Atom ленте это превращается в enclosure.
Делаю сертификаты для нового домена img.blog.stargrave.org через
zeasypki (
47b11bfd222d9f3f03664035e4fb4ca32cfa75de). Среди них ECDSA
(для всякого старья), EdDSA и ГОСТ, который на уровне TLS 1.3
поддерживается моей сборкой Go (http://www.gostls13.cypherpunks.ru/).
Делаю записи в DNS через zdns (
d4eadab571bf5e8ea00d19598f129a708a322d15)
(сертификаты надо сделать заранее, чтобы DANE записи появились в зоне).
Добавляю знание о нём в свой HTTP-сервер godlighty
(http://www.godlighty.stargrave.org/). Пишу скрипт для rsync-а ~blog/img
директории на сервер. Правлю код sgblog. Добавляю пару строчек в
конфигурационный файл на сервере: ImgPath:
/home/www/www/img.blog.stargrave.org, ImgDomain: img.blog.stargrave.org.
Добавляю первую картинку, загружаю, перезапускаю sgblog, радуюсь.
В Atom ленте для enclosure стоит указывать MIME-тип. Поэтому sgblog по
расширению должен уметь определять его. Пока просто сделал hard-code
словарика со всеми поддерживаемыми форматами которые я мог бы раздавать.
То бишь, JPEG XL и WebP (так как много чего у меня в нём есть, без
оригинального файла из которого он был сделан).
Так как я люблю, чтобы серверы были дружелюбны к зеркалированию полному,
то директория раздающая картинки должна читаться через WebDAV. godlighty
его поддерживает частично: например lftp не работает с ним. Но cadaver и
rclone вполне.