From: Sergey Matveev Date: Fri, 28 Jul 2023 18:40:40 +0000 (+0300) Subject: Блог умеет показывать картинки X-Git-Url: http://www.git.stargrave.org/?a=commitdiff_plain;h=9cc5319171865781fd1809aeb35b1887c45026d6;p=stargrave-blog.git Блог умеет показывать картинки Во время написания 8b084f928564cd3b23edc8bfd8dcf5d6c1d1892e я захотел поделиться фотографией того, что раньше выглядело как аккуратненький сервер. Но это надо куда-то выкладывать фотографию, желательно чтобы не просто файло-помойка была, ссылаться на неё. Иногда ведь были позывы поделиться снимком экрана. В общем, добавил в свой движок для блока показывать картинки. Для добавления дополнительной информации к коммиту (который является постом в блоге) в Git можно в отдельной ветке в файле с названием равном хэшу коммита разместить произвольную информацию. Собственно это git-notes. Комментарии у меня хранятся именно как git-note, в который дописываются recfile-отформатированные записи. Но картинки это бинарные файлы, к тому же к которым надо бы название/alt добавлять и намекать на формат изображения. Была идея превратить файл в notes-like ветке в директорию, в которой названия файлов это alt-текст плюс расширение указывающее тип. Но хранить изображения хотелось бы в отдельном репозитории, ибо это уже опциональная информация, жутко тяжёлая по определению. Начал думать о подключении в движке ещё одного репозитория, в котором выбирать нужную ветку и искать директорию с файлами. Легко делать сложно. И только после этого дошло: а зачем Git то? Не нашёл ответа. В итоге для хранения картинок просто указываю путь к директории с картинками. Поддиректориями являются хэши записей в блоге. Внутри них -- просто обычные файлы. И раздавать директорию можно обычным HTTP-сервером, ничего не надо просасывать через движок блога. По сути он теперь просто проверяет есть ли директория с именем коммита и список файлов превращает в список элементов, а в 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 вполне. ---