О статических сайтах
Где-то в начале 2000 года я завёл первый блог, который представлял из себя XML файл с постами, редактируемый текстовым редактором, и набор XSLT шаблонов, с помощью которых создавались статические HTML файлы. Тогда XSLT был вдиковинку, было интересно, но быстро надоело.
Сейчас способов вести блог столько, что сложно выбрать какой-нибудь один. Я уже пробовал и LiveJournal, и Tumblr, и Blogger, и что-то своё пытался поднять — всё чем-то не нравится (вариант поднять что-нибудь своё не нравится из-за своей низкой эффективности). Теперь на глаза попался пост о генераторе статических сайтов. Идея та же: зачем делать динамическим то, что можно сделать статическим, но инструменты улучшились.
Выбор я остановил на Poole, потому что он поддерживает Markdown и написан на Питоне. Для редактирования использую vim (в котором провожу
большую часть времени около компьютера), небольшой скрипт отправляет введённый
текст в репозиторий git, на удалённой стороне которого и запускается
poole.py
, когда скрипт делает git push
. От меня нужно только выполнить
команду blog
, набрать текст и закрыть редактор. Или можно открыть в виме любой
текстовый файл и нажать F9, чтобы он отправился в блог отдельным постом. Это даже проще, чем открыть панель управления блоггера, залогиниться и справиться с его визуальным редактором.
Poole легко расширяется макросами на Питоне. В примерах есть генерация Sitemap и RSS ленты, легко добавляются другие функции, вроде подкастинга и комментариев Disqus. Я пока доволен.
Расширение функциональности
В постах можно использовать собственные функции, описываемые в файле macros.py. Например, функция для встраивания видео с YouTube по-новому выглядит так:
def youtube(video_id):
return u'<iframe class="youtube-player" ' +\
u'type="text/html" ' +\
u'width="540" height="300" ' +\
u'src="http://www.youtube.com/embed/' +\
unicode(video_id) +\
u'" frameborder="0"></iframe>'
Используется так:
Официальное видео:
{{ youtube('evqME-Pm6uo') }}
Следить за развитием событий можно через RSS ленту или почтовую рассылку.