Реинкарнация сайта

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

Как было раньше

Когда-то давно, в самом начале, сайт работал на моей собственной Alroniks CMS, затем был генератор статических сайтов Dockpad (проект умер), после была попытка запустить сайт на MODX, но неуспешная. Какое-то время сайт работал на Laravel, но и его я устал обслуживать. Попробовал использовать Ghost и оказалось, что с JavaScript у нас какая-то природная несовместимость.

Можно было бы взять Wordpress и не заморачиваться, но для него нужно покупать и обслуживать хостинг, а хотелось чего-то простого с минимальными затратами. Генератор статических в таком случае – идеальное решение и для новой версии был выбран Hugo, высокопроизводительный, написанный на языке Go, генератор с огромным количеством функций и возможностей.

Подобных генераторов сейчас достаточно много и можно найти на том языке программирования, с которым вы лучше знакомы и я рекомендовал бы так поступать. Я выбрал на Go, потому что нравится этот язык и мои последние pet-проекты написаны преимущественно на нём, несмотря на то, что рабочий проект на PHP/JS.

Так же не стоит забывать про Jekyll, один из первых и, наверное, самый успешный генератор статических сайтов, но мне он не подошёл, так как с миром Ruby я вообще не пересекаюсь. В довесок, мне важно было обеспечить работу сайта на двух языках, русском и английском, и реализовать это с Jekyll мне показалось сложнее. Поэтому Hugo.

Почему именно генератор

Прелесть статического сайта в том, что он не требует ничего для своего запуска, так как это набор готовых (сгенерированных) html-страничек. Достаточно разместить их где-нибудь в интернете и всё. Для этих целей подходит любой файловый хостинг с возможностью привязать доменное имя (можно и без). Я знаю примеры, когда размещали на Amazon S3, есть специализированные сервисы вроде Netlify, а так же бесплатный GitHub Pages.

Второй важный момент – это система контроля версий. В случае со статическим сайтом, под контролем версий можно держать как сами исходники сайта, так и его сгенерированные копии. Это позволяет с помощью git отлеживать всю историю изменений, видеть, какие данные изменялись в процессе, что сильно упрощает поиск возможных ошибок. Совместная работа над содержимым – это тоже благодаря VCS.

И третий аспект – это текстовый редактор. Весь сайт – это файлы, а значит можно использовать любой удобный редактор на любой операционной системе.

Как всё работает

Содержимое сайта – это файл в формате Markdown. Эти файлы и файлы конфигурации для Hugo размещаются в репозитории source-klimchuk. Всё, что касается оформления сайта, т.е. стили, какие-то javascript-скрипты, изображения и дополнительные служебные файлы вынесены в отдельный репозиторий с темой – hugo-theme-klimchuk. Это сделано для того, чтобы не смешивать в истории технические изменения и изменения содержимого и обеспечить возможность независимо работать над оформлением и содержимым.

Сгенерированные копии, а их две, по одной для каждого языка, размещаются в своих отдельных репозиториях на GitHub. Это обусловленно тем, что GitHub Pages поддерживает только один домен для репозитория, а у меня их два. Вообще Hugo поддерживает многоязычные сайты и можно было бы сделать всё на одном домене, но с подразделами вида site.com/ru, но мне больше нравится, когда klimchuk.by целиком на русском языке, а klimchuk.com – на английском, поэтому пришлось немного усложнить схему.

Для того, что иметь возможность удобно писать заметки для своего сайта, я использую сервис Forestry, совместимый с сайтами на Hugo (есть поддержка и других популярных генераторов). Это требует дополнительной настройки, но шаг не обязательный, справится любой текстовый редактор.

Такая распределенная система репозиториев и сервисов предполагает необходимость автоматизации и естественно я её так же реализовал. Если коротко, то всё работает благодаря CircleCI, который отслеживает изменения на GitHub и запускает сборку и публикацию страниц сайта. Подробнее об автоматизации сайта я расскажу в следующей заметке.

Пару слов о содержимом

Если раньше сайт представлял собой простой блог с заметками и пару слов о себе, то в новой версии я решил немного расширить и разделить разные по сути области своей жизни. Теперь у сайта три больших раздела – Заметки, Места и Проекты. Немного о каждом из них.

Заметки

Этот раздел практически не менялся, а мигрировал со старого сайта. Это обычный блог, где есть заметки, разнесенные по нескольким категориями.

Места

Это новый раздел, в котором я решил отдельно собирать заметки и фото мест, где мне довелось когда-либо побывать. Как правило, это поездки с семьей или рабочие командировки, а так же вело-поездки неспортивного типа. Список буду постепенно пополнять и за прошлые годы, но скорее для себя, чтобы не забыть.

Проекты

Этот раздел пока никак не представлен на сайте, тем не менее в свободное от работы время я активно делаю что-то новое в качестве хобби и хочу этим делиться. Здесь я будут подробно описывать сами проекты, как я их делал и зачем. Один из последних таких проектов – pravilna.by.

Нынешнюю версию сайта я делаю в некотором смысле по принципам agile, когда сначала реализуется MVP, а затем доводится до приемлемого состояния. Так что вполне себе возможно, что со временем могут появиться новые разделы, а старые – исчезнуть.

To be continued.

На чытанне спатрэбілася 4 хвіліны Нататка змяшчае 786 слоў

Сябры, акрамя блога, я амаль што рэгулярна пішу адмысловую рассылку пра праграмванне і тэхналогіі, дзе раз на двы тыдні збіраю самыя цікавыя навіны тэхналогій і раблю агляд цікавых інструментаў, якія мне трапіліся. Таму хутчэй падпісвайцеся, каб не прапусціць штосці цікавае наступным разам!