Hello World!
“Doesn’t matter if you can dream it or not, all that matters is if you can begin it or not? Take that first step.”
Vikrmn, Corpkshetra
В своём первом блоге хочется написать пару строк о том, без чего не получилось бы реализовать данный замысел, высказать мысли о выборе сервисов и поблагодарить комьюнити, которое разрабатывают и поддерживают данные технологии. Итак, поехали.
Генератор статических сайтов Nikola ¶
Основной критерий выбора: он должен использовать Python. Пожалуй, самый известный из генераторов статических сайтов для Python - Pelican . К сожалению, я не успел его опробовать. В интернете есть замечательная статья о тонкостях настройки Pelican https://the-bosha.ru/2016/05/04/generator-staticheskih-blogov-pelican/. Моё внимание привлёк Nicola. И в принципе, очень доволен выбором. Огромным преимуществом для меня была встроенная поддержка Jupyter notebooks (о чём расскажу ниже). Плюсом есть поддержка и доброжелательность комьюнити. К примеру, на свой вопрос я получил мгновенный ответ через Nikola Generator Twitter .
Полезные ссылки:
- Официальная документация https://getnikola.com/handbook.html
- PyPI link https://pypi.python.org/pypi/Nikola/
- How I customized my Nikola-powered site
- Nikola: the static blog engine A.K.A. How I build Shisaa.jp
- Starting a Personal Blog with Nikola
- Nikola, one kickass Site and Blog generator
И, конечно, 'last but not least' - этот генератор назван в честь выдающегося ученого и изобретателя Николы Теслы. Есть и определённые минусы, не всё гладко с отображением кириллицы (по крайней мере, я с этим столкнулся и пришлось подбирать шрифт), не всё в документации прописано прозрачно и многие моменты пробовал интуитивно. Но всё это мелочи по сравнению с огромным потенциалом, заложенным в данный генератор статических сайтов.
С помощью jupyter notebook (запустив онлайн или установив на компьютер), вы сможете создавать документы notebooks (по сути, JSON c расширение ipynb), которые содержат как программный код, который можно интерактивно запускать, вносить изменения (например, на Python), так и расширенный текст, и диаграммы. Данными документами очень удобно делиться в интернете или конвертировать в различные форматы, например, HTML, Markdown, reST, pdf. Кроме этого, это и удобная оболочка c 'магическими командами', которая позволяет тесно взаимодейстовать с Python.
%ll
Пример использования Jupyter Notebook. В ходе работы над оформлением одного из сайтов, возникла необходимость просмотреть количество незакрытых div. Конечно, это удобно сделать с помощью любого текстового редактора, например, моего любимого Sublime Text3. Но, чтобы показать как выделяется код в документе Jupyter notebook, напишем модуль на Python.
x = 0
with open('index.html') as f:
for line in f:
if '<div' in line:
x += 1
if '</div' in line:
x -= 1
print(x)
import json
help('json.load')
Ccылки:
Для меня удобство Jupyter Notebook состоит в том, что в своих блогах я планирую показывать Python код. Поэтому установив и запустив Jupyter Notebook App на компьютере, можно в браузере формировать участки в формате Markdown и вставлять Python код, сохранять в формате .ipynb и затем Nikola конвертирует результат в HTML.
Пример:
(nikola) vitaliy@comp:~/Documents/my_blog$ nikola new_post -i "first.ipynb" -f ipynb --tags='web','site generator'
В интернете есть масса информации по использованию GitHub Pages как бесплатного хостинга для статических сайтов. Пример, https://htmlacademy.ru/blog/99-github-as-hosting. Для этого необходимо лишь зарегистрироваться на Github. Отмечу, что Nikola уже с коробки умеет делать deploy на GitHub Pages.