Сегодня по поводу внезапно случившегося дня рождения я собираюсь поделиться с вами работой последних несколько месяцев — полностью переделанным блогом.
Переделке подверглось абсолютно всё: от дизайна до кода генератора страниц. Конечно, основной язык остался тем же — Haskell. Ведь блог — это, пожалуй, единственно место, где я могу пописать на самом лучшем (по моему скромному мнению) языке. Из интересных библиотек, задействованных в разработке:
- Shake — библиотека для создания систем сборки проектов, очень быстрая и простая. Позволяет за небольшое время определить, какие из файлов требуют перекомпиляции, и обновить только их.
- Lucid — EDSL для создания HTML шаблонов в Haskell. Удобно и работает быстро.
- Lens — «как jQuery, но для работы со структурами данных в Haskell,» — утверждает автор библиотеки. Спорно, но иногда весьма удобно. Библиотека каких-то нереальных размеров на все случаи жизни, я же воспользовался лишь крошечной её частью. Иногда приходилось потрудиться, чтобы свести все типы и получить работающий код.
- Pandoc — единственная библиотека, которая осталась на месте, так как других альтернатив нет и не нужно. Позволяет читать документы в огромном количестве различных форматов. Мне же нужна только поддержка markdown, потому что все посты я пишу в этом формате.
Как оказалось, связка Shake+Lucid работает быстрее, чем Hakyll. Точных цифр не скажу, но генерация всех html-страниц сократилась с 40-50 секунд до 5, но это ещё связано с тем что я кеширую результат парсинга markdown.
Библиотеки и фреймворки, не относящиеся к Haskell:
- PostCSS (и куча плагинов к нему) — очень интересная система, работает довольно шустро. Кто ещё думает, взять sass или less для своего будущего проекта, тому, возможно, стоит задуматься о такой альтернативе. Что-то мне подсказывает, что за этой системой будущее.
- Google Closure Library — вот это совсем не модная и не молодая библиотека. Но после того как я посмотрел на минимальный скомпилированный Dart-скрипт (160 кб) и соответствующий результат, полученный из этой библиотеки (7 кб), выбор был очевиден. Возможно, в будущем я перепишу всё на vanilla js, чтобы всё сделать ещё меньше. В процессе разработки я ещё посмотрел на PureScript, но тоже отверг из-за размера получающегося в конце js-файла.
В общем, от старого блога остались только посты и фотки. Надеюсь, новый дизайн вам понравится так же, как и мне. Каждый его байт с любовью написан в css без каких-либо вспомогательных фреймворков, чтобы размер страницы, а значит и использованного трафика, был как можно меньшим. Конструктивная критика приветствуется, баги будут вычищаться в процессе использования.
Хочется что-то добавить или сказать? Я всегда рад обсудить. Пишите на me@dikmax.name.