Programming, electronics, lifestyle

23 Oct 2020

Платформа для собственного блога

Статья о про выбор платформы для собственного блога и дальнейшие планы.

2013: Blogger

История началась в феврале 2013 года. Я был студентом Аэрокоса (СГАУ – Самарский университет), и уже 4 года занимался веб-разработкой. Тогда мне пришла идея писать заметки. Делать это на собственной платформе вроде WordPress не хотелось. На фоне Livejournal с его отвратительно перегруженным дизайном и рекламой во всех щелях вполне изящным казалось решение от Google – платформа Blogger. Её я и использовал.

Тогда я не совсем понимал для чего мне нужна эта платформа и публиковал туда в основном мысли, заметки, а также копировал чужие материалы, чтобы они были как бы у меня (если что случится с источником у меня будет доступ к этому материалу). Единственные пару статей, что я тогда опубликовал там, были статья о ремонте бампера моей машины и статья о покупки GoPro в Америке.

На Blogger я даже публиковал рекламу от Google, но через некоторое время её заблокировали за мои нажатия по рекламным объявлениям. Сейчас бы я таким даже не занялся…

Через какое-то время я перестал публиковать контент на Blogger.

2018: GitBook

GitBook – сервис содержащий собственный хостинг и генератор статических сайтов из файлов (страниц) написанных на языке Markdown. Особенностью сервиса является его интеграция в git-репозиторий (например на GitHub). Ввиду особенности очень удобно использовать этот сервис для создания сайта с документацией внутри проекта.

image

Пример Markdown кода

В 2018 году, когда я работал в компании CopterExpress я начал использовать отдельный репозиторий у себя в GitHub для ведения заметок и публиковать его с помощью GitBook.

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

2019: Medium

В 2019 году я попробовал Medium.

Medium – площадка для профессиональных блогеров с платной подпиской на некоторые статьи. Изначально моё знакомство с этой платформой мне очень понравилось из-за дизайна и шрифтов сервиса.

Однако в дальнейшем я столкнулся с проблемой отображения таблиц и исходного кода в статьях: Medium совершенно неприспособлен для этого.

Надо заметить, что на этой площадке я впервые изначально начал писать не заметки, а полноценные статьи (например статью Переезжай пока молодой). Наверно тогда и появилось, то самое понимание для чего мне это нужно. И вот несколько правил, что я вывел:

  1. Нужна нормальная визуализация таблиц, кода и других элементов.
  2. Я хочу писать материал в Markdown (Что такое Markdown?), тк в таком формате очень удобно хранить (версионировать) и редактировать руками статьи (наиболее приближено к HTML). А с WYSIWYG редакторами сколько я не имел дело, всегда это заканчивается трешем в HTML коде.
  3. Я желаю публиковать без редактора.
  4. Я не хочу дарить трафик какой-то платформе.
  5. Хочу красивый и простой дизайн, оптимизированный под мобильники.
  6. Хочу объединить весь материал, что у меня был прежде.

2020: GitHub Pages

GitHub Pages – сервис, который позволяет публиковать статичный HTML код из GitHub репозитория на их хостинге.

Тема очень прикольная тк это всё находится на GitHub – святом граале всех OpenSource разрабов мира. А ещё тут же появился аналог TravisGitHub Actions – инструмент для сборки кода.

Вместе эти два инструмента позволяю собирать из кода сайт и публиковать его только средствами GitHub сервисов. Одним недостающим элементом был генератор статических сайтов из Markdown кода. После некоторого изучения темы и запуска с десятка разных я остановился на Hugo. Если честно, мне понравилась тема Ink.

Затем я быстренько написал CI/CD рельсы на GitHub Actions и получилась следующая структура:

  1. Скрытый репозиторий на GitHub, где хранятся исходники статей, черновики, а также тема Ink и CI/CD.
  2. Публичный репозиторий на GitHub, к которому я привязал GitHub Pages и прикрепил домен urpylka.com.

Разбиение на два репозитория связано с ограничениями работы GitHub Pages в закрытых репозиториях GitHub на бесплатных аккаунтах.

Далее я реализовал следующее логику:

  • При коммите в скрытую репу, запускается скрипт для сборки статического сайта.
  • Если сгенерированный код отличается от того, что находится в публичном репозитории он заливается в него форс-коммитом (перетирая старый коммит).

Тем самым в публичном репозитории всегда чистенько, если я что-то удалил или изменил история этого не доступна окружающим.

Также написал несколько скриптов на Python для трансфера изображений и статей из старых источников.

Ссылки по теме:

2021: SWE ?

На данный момент я столкнулся с несколькими ограничениями.

  1. У меня используется сторонняя система комментариев – Disqus. И хотя она прикольная и все дела, я придерживаюсь мнения: «Если вы не платите за товар, то вы и есть товар». А это не особо круто и хочется свои комментарии.
  2. Зачастую мне нужно выборочно предоставить доступ к какой-то недописанной статье другу для ревью, при этом не публикуя эту статью. (Сейчас у меня лишь два варианта либо публиковать, либо нет).
  3. Хочется добавить статистику просмотров статьи под заголовок.
  4. Нет возможности публиковать вставку с YouTube (по крайней мере в Markdown).
  5. Нет категорий (теги – не категории).
  6. Правка текста непосредственно на сайте отсутствует.
  7. Пока это не горит, но вообще хотелось бы иметь возможность использовать серверную логику в каких-то динамических статьях, возможно это решается AJAX + REST API.

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

В итоге я написал движок Simple Web Engine (SWE) на базе MariaSQL и PHP. Он основан на Rewrite модуле веб-сервера и ядре авторизации и подбора шаблона отображения.

Работать с этим движком ранее я не стал благодаря отсутствию встроенного Markdown процессора.

PS Конечно, можно было использовать Drupal или другие фреймворки, но мне очень понравилось городить своё и разбираться в этом. Благодаря этому я получил огромную гибкость и полный контроль на происходящим.

Так что сейчас я в раздумиях, что делать дальше с блогом и своим движком.