2

Gostatic: ещë один прекрасный блог-движок#

 3 years ago
source link: https://solovyov.net/blog/2013/gostatic/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

Gostatic: ещë один прекрасный блог-движок#

Очевидно, что раз написав движок для блога, остановиться уже невозможно. Я чувствую себя Асприном, который пишет очередную МИФическую историю (я даже попытался сделать отсылку на них в названии, но не думаю, что получилось).

Короче, ещë один. Зачем? Предыдущий тоже генерировал статику и хорошо при этом назывался, зачем менять? Ну, он тормозил. Скажем, в неудачный момент (кеш сбросился, етц) он мог 20 секунд генерировать мой блог. Раздражает, конечно. А еще мне что-то захотелось написать его на го, чтоб 1 бинарник в результате и никаких гвоздей с установкой чего-то там.

Я даже внимательно смотрел вокруг, думал может чьë-то чужое творение использую, не всë же велосипеды строить. Ну вот сейчас нашëл Stog, на окамле, его я раньше не видел. Был еще какой-то на окамле, у меня его не получилось собрать и он не умел зависимости (страниц друг от друга). Еще есть Hakyll, он компилируемый, умеет зависимости и вроде бы довольно быстрый, но у него есть критический минут - он на хаскеле. Ну т.е. круто, конечно, супер, но мне хватило уже конфигурации xmonad, плюс установки окружения в 40 минут и тому подобного. Не знаю, не решился я связать судьбу, смалодушничал.

Все остальные еще хуже, конечно, практически никто не умеет зависимостей, плюс пишут все эти генераторы если не на руби, то на питоне. Я даже пробовал как-то несколько разных, и оказалось, что Cyrax еще очень и очень быстрый. :)

Тем более велосипеды манят. :) Короче, я построил свой. На мой вкус, довольно быстрый - сайт из 250 страниц он рендерит за 0.3 секунды полностью. Еще 0.3 секунды рендерится мой цсс из бутстрапа (подлый тормоз!). Надо сказать, что на линуксе всë быстрее - там нормальная файловая система.

Умеет зависимости, маркдаун, конфигурируется через простой декларативный синтаксис - каждый файл имеет зависимости в виде других файлов и проходит систему фильтров. Никаких плагинов нет, к сожалению, всë либо уже сделано внутри функциями на Го, либо вызовами внешних команд. Внешние команды пока умеют только менять контент. Я думал над тем, как бы можно было это улучшить (т.е. сделать систему плагинов через вызовы команд), но ничего клëвого не придумал и решил, что мне пока не надо.

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

Интересно, что написал-то я его на Go, но горутины не использовал - так выходит только медленнее, всë завязано на ввод/вывод. Хотя только что перечитал про тормоза лесса и подумал, что надо разными горутинами процессить и писать на диск, первых иметь пул, а вторую - всего одну. Может позже поиграюсь.

Короче, он умеет всë, что надо. Вдруг кому захочется - пользуйтесь, в репозитории есть пример, еще есть мой блог на гитхабе, он сложнее внутри. В том же репозитории в README есть ссылки на бинарные сборки. Если вдруг у кого проснëтся желание улучшать, я буду вообще счастлив, так что велкам.


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK