стак этого сайта
RAE (Rust, Askama, Emacs)
Rust
Думаю, тут всё очевидно. Всё, что можно было написать на Расте без костылей, сделано на Расте. хД. Я активно использовал build.rs и прок-макросы для метапрограммирования. Вместо того чтобы деплоить сайт как ехешник + ассеты, я встроил все ресурсы прям в сам бинарник, отдавая предпочтение рендерингу в билд-тайме, там, где это возможно. Для этого, помимо прочего, я сделал сделающий трейт:
используя derive прок-макрос.
Emacs
Я использую org-mode для всех постов в блоге, а затем с помощью build.rs запустаю следующий пайплайн:
- Собрать все
.orgфайлы - Запарсить из них метаданные
- Ковертация в Markdown с помощью Emacs (init.el)
- Обработа (добавить alt-текст, id заголовков, составить оглавления, etc)
- Конвертация в HTML используя
pulldown-cmark - Подсветка ситаксиса в HTML-блоках кода с помощью
syntect - Сериализация полученного
Vec<Post>обратно в код Rust(вектор и map), который записывается в$OUT/baked.rs, благодозя чему во время рантайма полностью отсутсвуют расходы десериализации. - Успех!
Причина использовать org-mode, вместо markdown на этом сайте в основном сводится к тому, что мне просто навится этот формат, нравится встроенное выполнение кода прямо в тексте (потому что это круто!) и то, что его синтаксис лучше, чем тот непостоянный пиздец которым является markdown. Ещё TBLFM которым я ПОКА ЧТН использовала тут (но активно применяю в своём невыпущенном проекте по созданию мира «Li 1 A»). Однако, несмотря на это, в следующей итерации сайта (это кста 3-я) я планирую сделать свой собственный формат, вдохновлённый org-mode, gemtext и другими, и назвать его VUX (Vava’s Ultraopionated teXt).
Askama
Удивительно быстрая и эргономичная библиотека темплейтинга, которая сделала этот сайт возможным (хотя это не значит, что я не могла бы сделать всё это с помощью vy, хехе). Думаю, я продолжу использовать Askama для своих задач в проектах, где нужны шаблоны, не привязанные строго к HTML.
Others
- чистый CCS
- (n)vim. несмотря на мою любовь к emacs я всё ещё использую nvim для редактирования кода
- SPECTR (мой собственный язык дизайна, пока не опубликован)