Как я блог на кренделёк переводил



Наконец-то у меня дошли руки, и я сделал себе статический блог. Раньше я писал посты в aakinshin.blogspot.ru на Google Blogger aka blogspot, но много чего мне в нём не нравилось, отбивалось всё желание писать. Теперь всё работает через GitHub, писать посты можно в MarkDown, шаблоны делать через Razor, кастомизировать всё по своему вкусу. И мультиленг нормальный =). Под катом можно найти техническую информацию.

Что не так с Blogspot

Чудо-блогодвижок от Google раздражал меня по многим причинам. Обозначу некоторые из них:

  • Нет нормального редактора. Приходится верстать всё в HTML в примитивной форме без подсветки синтаксиса и валидаций.
  • Нет нормального предварительного просмотра. Google рендерит только картинку будущего поста, в которую даже потыкать нельзя. А временами ещё и подтягивает местоположение по ip и рендерит всё в местной локали: скажем, если пользоваться функцией просмотра из Израиля, то велика вероятность увидеть большое количество иврита и right-to-left-вёрстку.
  • Нет возможности кастомизировать URL-ы. Я перфекционист, и хочу, чтобы адреса постов формировались согласно моим представлениям об этом мире. Скажем, мне не нравится .html в конце адреса. Указание текущего года и месяца в адресе также считаю лишним. А ещё хочется раскладывать посты по категориям, которые также бы присутствовали в URL-е.
  • Нет возможности вести мультиленг-блог. Т. е., чтобы была возможность сделать русскую и английскую версию поста и легко между ними переключаться. Ну и, соответственно, чтобы были отдельные подверсии блога только с русскими и только английскими постами.
  • Нет удобных возможностей для редактирования шаблона. Наверное, если потратить приличное количество времени, то можно в тамошнем редакторе что-то хорошее сделать, но мои попытки обернулись провалом.
  • Нет возможности прикрутить любимый мною git, чтобы нормально работать с версиями.

В общем, решил я сделать себе статический блог.

Jekyll

Интернет подсказал мне, что многие крутые ребята ведут свои блоги на Jekyll. Отличное решение, приведу понравившиеся мне возможности:

  • Можно поднять блог через GitHub, прикрутить для отображения кастомный домен.
  • Можно отлаживать блог локально без доступа к интернету.
  • Можно писать посты в Markdown, а по мере надобности прибегать к HTML+CSS.
  • Можно самому сформировать всю нужную разметку шаблонов на Liquid.
  • Можно относительно легко импортировать старые посты из Blogger.
  • Можно прописывать все конфиги в YML.
  • Можно расширять функциональность движка собственными плагинами.

В общем, всё было хорошо, ушли все проблемы, которые мне мешали жить во вселенной blogspot. Впрочем, возникли некоторые трудности:

  • Из коробки было далеко не всё, что я хотел видеть в своём новом бложике. Пришлось писать плагины. Jekyll написан на Ruby. И плагины тоже нужно писать на Ruby. Пришлось на старости лет освоить новый язык. Мне даже понравилось, прикольный код получается. Но после написания нескольких плагинчиков пришло осознание, что мне далеко до такого уровня Ruby-мастерства, на котором я смогу сделать эти плагины нормально. Эх, вот можно было бы нужный функционал писать на C#, было бы счастье.
  • Liquid прикольный, но на нём далеко не всё делается настолько просто, настолько хотелось бы. Вот дали бы мне мой любимый Razor, жить было бы легче.

И я понял, что мне в идеале нужен аналог Jekyll, но только на .NET-стеке.

Pretzel

Ещё немного поиска в интернете — и я нашёл его! Отличный проект под названием pretzel. Совместим с Jekyll, можно писать функционал на C# и верстать шаблоны на Razor. Увы, проект немного сыроват, многие нужные штуки не работали. Пришлось чутка поконтрибьютить в проект, чтобы мой Jekyll-блог на нём завёлся. Затем ушло какое-то время, чтобы сделать нормальный мультиленг и сверстать всё так, чтобы выглядело хотя бы более или менее вменяемо. С базовой частью я наконец-то справился, блог завёлся и опубликовался в интернете. Остался, правда, небольшой набор тикетов (например, пагинатор, странички для тегов и категорий, косяки в вёрстке и т. п.), но я надеюсь решить их в рабочем режиме. Главное — теперь есть удобный инструмент для написания постов. За последние месяцы у меня накопилось много интересных заметок, планирую оформить их в обозримом будущем в письменном виде. Надеюсь, моя писанина окажется полезной для других разработчиков.

Поделиться:
Исходный код поста находится на GitHub:
https://github.com/AndreyAkinshin/aakinshin.net/blob/master/ru/_posts/notes/migration-to-pretzel.md