стак этого сайта

RAE (Rust, Askama, Emacs)

Rust

Думаю, тут всё очевидно. Всё, что можно было написать на Расте без костылей, сделано на Расте. хД. Я активно использовал build.rs и прок-макросы для метапрограммирования. Вместо того чтобы деплоить сайт как ехешник + ассеты, я встроил все ресурсы прям в сам бинарник, отдавая предпочтение рендерингу в билд-тайме, там, где это возможно. Для этого, помимо прочего, я сделал сделающий трейт:

pub trait PostSerialize {
    /// Сериализовать этот пост в валидный стринговый литерал Раста
    fn to_rust_literal(&self) -> String;

    /// Сериализировать слайс постов в литерал Vec Раста
    fn serialize_list(posts: &[Self]) -> String
    where
        Self: Sized;

    /// Сериализовать слайс постов в ветки match (для поиска
    /// по паре (lang, slug))
    fn serialize_map(posts: &[Self]) -> String
    where
        Self: Sized;
}

используя derive прок-макрос.

Emacs

Я использую org-mode для всех постов в блоге, а затем с помощью build.rs запустаю следующий пайплайн:

Причина использовать org-mode, вместо markdown на этом сайте в основном сводится к тому, что мне просто навится этот формат, нравится встроенное выполнение кода прямо в тексте (потому что это круто!) и то, что его синтаксис лучше, чем тот непостоянный пиздец которым является markdown. Ещё TBLFM которым я ПОКА ЧТН использовала тут (но активно применяю в своём невыпущенном проекте по созданию мира «Li 1 A»). Однако, несмотря на это, в следующей итерации сайта (это кста 3-я) я планирую сделать свой собственный формат, вдохновлённый org-mode, gemtext и другими, и назвать его VUX (Vava’s Ultraopionated teXt).

Askama

Удивительно быстрая и эргономичная библиотека темплейтинга, которая сделала этот сайт возможным (хотя это не значит, что я не могла бы сделать всё это с помощью vy, хехе). Думаю, я продолжу использовать Askama для своих задач в проектах, где нужны шаблоны, не привязанные строго к HTML.

Others