Про любовь к минимализму и статическую генерацию контента

Зайчатки разума

Записная книжка айтишника

Про любовь к минимализму и статическую генерацию контента

2018-10-11 22:52:15 — Evgeniy Shumilov

  Для начала я хотел рассказать, как появился этот блог. Когда-то давно, когда мониторы были большими, но не по диагонали, а в толщину, интернет был по талонам картам, а никакого "вконтакте" и "фейсбука" ещё не было, меня, как и многих других моих знакомых, переполняло желание некоего самовыражения. Нужна была какая-то среда, где можно было поделиться плодами маразума с себе подобными, где можно было что-то обсудить, пообщаться, да и просто оставить себе какую-то заметку, к которой неплохо будет вернуться через несколько лет. Сначала я создал страницу на boom.ru (сейчас на этом домене живёт совсем другой сервис). Все эти frontpage, dreamweaver, миллион мельтешащих гифок на чёрном фоне и плохоструктурированный поток сознания кажется были вечность назад. Всё было бы ничего, но странице явно не хватало аудитории. Затем был блог на li.ru - куча "друзей", часть из которых в других городах, кое с кем я даже встретился лично. Попытки написать свою книгу, одобрение со стороны читателей, нехватка времени и мотивации, куча общения. Потом захотелось чего-то "своего". По совету друга (Иван, спасибо тебе) открыл для себя CMS под названием MaxSite. Это был очень интересный, достаточно функциональный комбаин, для которого было достаточное количество плагинов, тем, документации и всего прочего полезного. Фактически это был легковесный аналог WordPress, написанный человеком, делавшим плагины для оптимизации потребления ресурсов WordPress. Всё было настроено, перенесена куча статей из блога с li.ru, но в какой-то момент я перестал обновлять блог до свежей версии, кто-то воспользовался уязвимостью и начал рассылать спам с моего статического айпишника. К тому моменту я уже несколько месяцев ничего не выкладывал и вместо того, чтобы искать баги, просто завернул всё в архив и снёс с инстанса. С тех пор не поднимал ничего, ограничиваясь постами в VK.

  ВКонтакте конечно, даёт кучу просмотров и огромную аудиторию, но с какого-то момента снова захотелось чего-то более личного и приватного, чего-то, что будет служить записной книжкой для всякого айтишного и не очень. Подумав, я понял, что это что-то должно отвечать нескольким требованиям:

  • компактность и переносимость
  • открытый код
  • минимум зависимостей
  • возможность жить десятилетиями без обновления платформы
  • поддержка тегов
  • возможность подключения комментариев
  • возможность подключения подсветки синтаксиса

  Идеальным решением, удовлетворяющим все эти требования очевидно, являются системы генерации статического контента. Вчера я решил изучить этот вопрос подробнее. Подёргав за хвост google, я обнаружил ресурс https://www.staticgen.com/, где собрано множество подобных систем, описаны их краткие характеристики, даны ссылки и, что самое главное, указан язык, на котором каждая система написана. Для начала я решил попробовать pelican, поскольку он написан на python и работает с шаблонизатором Jinja2, с которым я сталкивался, когда писал всякие мелочи на pyton + bottle. Поскольку мне нужна переносимость, было решено завернуть пеликана в докер контейнер. Варианты образа и с ванильным python3 и с pypy после установки всех зависимостей начинали занимать больше 700мб, что в мои понятия о минимализме, компактности и переносимости не укладывалось, поэтому жирный пеликан, переваливаясь с боку на бок, отправился в пешее путешествие на йух в тёплые края - осенняя миграция.

  Далее я планировал взяться за hugo - всё-таки бинарник на go для контейнера подходит куда лучше. Но тут мне на глаза попался генератор, написанный на bash. Честно говоря, я не рассчитывал найти что-то достойное в этой области - множество людей относятся к тем, кто пишет на shell, как к инвалидам. Когда работал в Xsolla, помню, один из разработчиков, заглянув в скрипты, мне посочувствовал - мол, как же вы бедные живёте без классов? Это меня тогда крайне позабавило. О вкусе гуталина можно спорить, если твой дядя работает на гуталиновой фабрике. Одним словом, что-то более-менее сложное и красивое на шелле пишут нечасто, но я решил дать шанс статическим генераторам и не пожалел. Правда, перед тем, как я нашёл то, что мне понравилось, я перебрал все, написанные на шелле. Результат сейчас перед вами - https://github.com/cfenollosa/bashblog. Что могу отметить из плюсов:

  • код хорошо документирован - достаточное количество комментариев в нужных местах
  • нормальные говорящие имена функций и переменных
  • всё что нужно - вынесено в отдельный конфиг, чтобы не править сам скрипт
  • возможность подключения гугл аналитики
  • возможность подключения disqus
  • возможность использования твиттера для комментирования
  • поддержка html и markdown (опционально и отдельным скриптом)
  • возможность подключения хэдера и футера отдельным файлом
  • черновики (drafts - пока не пробовал)
  • автоматическая генерация rss
  • один файл, содержащий всё необходимое
  • смешной размер
  • быстрая работа
  • использование для редактирования любого редактора (да здравствует Vim, Emacs и прочие)
  • практически нулевые зависимости (для *nix естественно)
  • автоматические бекапы при каждой генерации
  • низкий порог входа

  Минусы:

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

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

Теги: ностальгия, minimalism, web, shell, blog, bashblog

comments powered by Disqus