О статических сайтах

2010.05.19

Где-то в начале 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 ленту или почтовую рассылку.