- PVSM.RU - https://www.pvsm.ru -

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

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

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

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

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

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

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

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

Мне кажется, что если вы не имели опыта с Хаскеллом дл этого, вам просто необходимо запустить ghci и попробовать что это такое. Альтернативным способом будет попробовать первый раз на tryhaskell [7].
Если вы захотите изучить Хаскелл подробнее, могу порекомендовать просто таки замечательнейшую книгу "Обучи себя Хаскеллу во Имя Добра [8]". Но я раскрою вам маленький секрет. Вам не нужно знать Хаскелл для того, чтобы сделать свой блог на Хакелле. Если у вас уже есть определенный опыт программирования и вы даже знаете что такое система контроля версий (а я уверен что есть и знаете) этого будет более чем достаточно, чтобы закончить читать все нижеописанное. Я бы даже сказал что вам скорее всего пригодились бы навыки 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

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

> site server --port=5050

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

Шаг 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

Источник [11]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/haskell/31485

Ссылки в тексте:

[1] хостинг: https://www.reg.ru/?rlink=reflink-717

[2] Jasper Van der Jeugt: http://jaspervdj.be/

[3] Jekyll: http://jekyllrb.com/

[4] Hakyll: http://jaspervdj.be/hakyll/

[5] Haskell Platform: http://www.haskell.org/platform/windows.html

[6] мнения: http://ivanmiljenovic.wordpress.com/2010/03/15/repeat-after-me-cabal-is-not-a-package-manager/

[7] tryhaskell: http://tryhaskell.org/

[8] Обучи себя Хаскеллу во Имя Добра: http://learnyouahaskell.com/

[9] локальный хост: http://localhost:8000/

[10] результат: http://localhost:5050/

[11] Источник: http://habrahabr.ru/post/175877/