Hakyll для начинающих

в 11:03, , рубрики: haskell, блогосфера

Однажды вы, как и я какое-то время назад, решаете создать свою персональную страничку с блогом (ну или без). Существует множество способов достигнуть задуманного, в зависимости от вашего опыта программирования, уровня лени ну и степени гикнутости. Но лично мне кажется, что заводить хостинг и домен и создавать серьезный “взрослый” сайт просто чтобы показать себя как-то слишком избыточно. Потому для достижения данной цели вы можете пойти более простым путем — сделать статический сайт.

Статические сайты быстрые, безопасные, легкие в публикации и могут управляться через систему контроля версий. Jasper Van der Jeugt

Я надеюсь, что не нужно приводить доказательства сказанному Йеспером, так как все и так достаточно понятно.

В тот день, когда я принял решение сделать свою персональную страничку, я обнаружил что возможно разместить оную на github. Для публикации будет достаточно вызвать git push -u origin master из своего репозитория, так что все должно быть достаточно просто. Но для начала, нам нужно найти какой-нибудь builder статических сайтов, чтобы с его помощью одни раз все настроить, запушать и затем время от времени добавлять свои новые посты, информацию о проектах, ну и что бы вам там хотелось. Настроить популярнейшее решение Jekyll на моей Windows машине оказалось как-то слишком проблематично, потому немного полазив в интернете я нашел замечательную альтернативу — Hakyll. А так как у меня давно уже чесались руки попробовать что-нибудь сделать на Хаскелле я решил что стоит попробовать. Если вам интересно последовать по моим стопам, добро пожаловать.

Шаг 1. Установка.

Хорошим началом для нас будет заиметь у себя Haskell Platform. После инсталяции мы получим:

  • Глазго компилятор — один из наиболее известных, если я не ошибаюсь.
  • Интерактивную среду — одновременно в консольном виде и обернутую в WinGHC приложение.
  • Cabal — менеджер пакетов для Хаскелла. (Тут я бы хотел отметить что в моем скромном представлении это все таки менеджер пакетов, хотя в интернете можно почитать и другие мнения на этот счет).

Мне кажется, что если вы не имели опыта с Хаскеллом дл этого, вам просто необходимо запустить ghci и попробовать что это такое. Альтернативным способом будет попробовать первый раз на tryhaskell.
Если вы захотите изучить Хаскелл подробнее, могу порекомендовать просто таки замечательнейшую книгу "Обучи себя Хаскеллу во Имя Добра". Но я раскрою вам маленький секрет. Вам не нужно знать Хаскелл для того, чтобы сделать свой блог на Хакелле. Если у вас уже есть определенный опыт программирования и вы даже знаете что такое система контроля версий (а я уверен что есть и знаете) этого будет более чем достаточно, чтобы закончить читать все нижеописанное. Я бы даже сказал что вам скорее всего пригодились бы навыки html и css чтобы настроить внешний вид собранного по-умолчанию сайта под свои предпочтения, но об этом чуть позже.

Шаг 2. Обзаводимся Hakyll

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

> cabal update
> cabal install cabal-install

Понадобиться некоторое время на то, чтобы информация о пакетах обновилась и мы были готовы ко второй волшебной команде:

> cabal install hakyll

Готово! Или нет. Мы вообщем-то должны были получить хакилл после вызова упомянутой команды, но я лично получил ошибку, о том, что каких-то директорий не оказалось, и прочие ужасы. Я к сожалению не тратил время на то, чтобы детально выяснить в чем же таки дело, и просто спросил у всезнающего гугла. Он предложил выполнить последнюю команду в несколько ином виде:

> cabal install --flags="-unixFilter" --constraint="directory installed" hakyll-X.X.X.X 

Вместо X.X.X.X должна естественно быть версия пакета, посмотреть какая последняя вы можете тут: Осмелюсь лишь предположить что ошибка могла произойти только потому что мы используем с вами Windows, и некоторые вещя для нас чуть менее предназначены, чем для других ОС.

Шаг 3. Инициализируем сайт.

Несмотря на то, что данные шаги достаточно хорошо описаны на официальной странице проекта, я повторюсь здеся для целостности. Предыдущий шаг должен был вознаградить нас пакетом hakyll, и потому мы открываем с вами в консоли местоположение нашей будущей великолепной персональной странички и делаем следующее:

> hakyll-init our_amazing_personal_site
> cd our_amazing_personal_site

Посмотрим что у нас вышло. А вышли у нас следующие вещи:

  • site.hs содержит хаскелл код который позже будет скомпилирован в исполняемый файл чтобы дать нам возможность собрать сайт и запустить, к примеру, локально сервер чтобы оный сайт посмотреть
  • index.html содержит контент нашей домашней странички
  • contact.markdown будет скомпилирован в страницу “контакты”
  • about.rst будет скомпилирован в страницу “о нас”
  • templates папочка содержит шаблоны которые в последствии помогут построить различные страницы сайта
  • images вполне очевидно содержит картинки
  • posts содержит примеры постов в .markdown формате
  • css содержит стили для нашего сайта

Безусловно что вы можете поменять здесь все что вам вздумается, но перед тем как делать это, все таки убедитесь что вы знаете хаскелл и изучили содержимое файла site.hs. Ну и конечно сейчас самое время пройтись и посмотреть что содержится в других файлах.

Теперь мы скомпилируем исполняемый файл:

> ghc --make site.hs
> site build

Вы наверняка обратили внимание, что еще больше файлов появились в найшей папке. Взлянем на них:

  • site.o, site.hi и site.exe продукт компиляции site.hs файла
  • _site содержит собранный сайт готовый быть открытым в вашем любимом браузере. Ура! :)
  • _cache будет содержать кеши по мере того, как мы будем гулять по нашему сайту локально

Если вы поставили хакилл с превью сервером вызывайте:

> site preview

и торопитесь на локальный хост, чтобы увидеть что же у нас вышло. Если ваш 8000 порт оказался занят, то вызывайте:

> site server --port=5050

и еще раз пытайтесь посмотреть на результат.

Шаг 4. Публикация.

Я надеюсь что у вас уже есть свой аккаунт на github, ну или если нет, то самое время обзавестись оным. В любом случаем, после регистрации (ну или входа) содаем репозиторий со следующим именем: [your github username].github.com

Теперь запускаем gitBush заходим в папочку _site созданную хакиллом и делаем следующее:

$ git init
$ git add .
$ git commit -m "my amazing personal page with hakyll init"
$ git remote add origin [repository address github gently provided you with]
$ git push -u origin master

Фух… У нас вышло :) Теперь посетите свой репозиторий и убедитесь что пуш прошел отлично. Ну и наконец посетите свою новую замечательную страничку, просто вбив в браузере [your github username].github.com!

Эпилог.

Если вы считаете что статья хоть чуток годная, пишите в личку ну или оставляйте комментарии. Спасибо :)

Автор: fxdxPZ

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js