Micropress 0.2

Как я писал раньше, этот блог ведётся с помощью micropress — блогогенератора, который я написал для своих небольших задач.

Что было раньше?

  • открытый код (python)
  • бесплатно
  • открытые компоненты
  • шаблоны совместимые с Jinja2
  • markdown
  • micropress прост (500 строк кода)
  • совместимость с постами Octopress
  • модульность (конфиг в ~, шаблоны можно положить в git, заметки в dropbox и т.д.)

Ко всему хорошему, что он умел, я добавил ещё несколько очень важных фич.

Обратная пейджинация

Большинство статических генераторов ведёт отсчёт страниц от меньшего к большему. Т.е. индексная страниц — 0, предыдущая — 1, пред. пред. — 2 и т.д. Навреняка у вас последняя страница N. Что тут плохого для статики? То, что добавляя новую страницу на главную, меняется нумерация и вам приходится каждый раз перегенерировать всю эту кашу, поисковики с двойным усердием переиндексируют всё по новой, а мы тратим впустую ресурсы.

Что я решил для micropress? Обратная пейджинация это: страница с самым старым постом — 1, а дальше по нарастающей. По логике это правильно, теперь мы перегенерируем последнюю страницу. Всё летает, только на предпоследней странице постов меньше. Ведь не всегда у нас чётное количество записей в блоге, раз не в конце, так вначале. Но это незаметно, логически верно, а самое главное быстро!

Live preview

Как вы набираете посты в блог? Меня вот эти все markdown preview в редакторах всегда жутко бесили. Показывают они одно, а на сайте стиль другой. Да и не в каждом редакторе есть Preview для markdown.

Ах, ещё ведь нужно в консоли запустить мини веб сервер, для превьюшек. Больше нет!

Я встроил live preview в micropress. Как это работает? Мы просто сохраняем пост1, программа это отлавливает, генерирует новую страничку, а браузер сам определяет изменение и показывает в онлайне то, что мы написали.

Вот видео, как это работает. Это очень быстро!

Автоматическая синхронизация

Создали пост, исправили, превью, залили, исправили, регенерируем, заливаем. Надоело? Мне тоже.

Live preview это хорошо, подумал я, но ведь есть ситуации, когда править уже нужно версию на основном домене.

Поэтому появилась такая фича: в заголовке пишем autosync: true, эта строка говорит micropress о том, что после сохранения, блог нужно регенерировать и автоматически загружать правки на сервер.

Теперь, когда пост завершён, а live preview вам уже не нужен, мы просто меняем autosync: false в заголовке — на true. Больше никаких действий! Изменения вливаются сами c помощью rsync, как только вы сохраните текст в вашем любимом редакторе.

Это не значит, что preview не будет работать — будет, просто в нём уже нет необходимости, результат мы смотрим на сайте, а не в предпросмотре.

Ключ ssh вы указываете в конфиге ~/.microrc, micropress знает, что у вас может стоять на нём passphrase, поэтому подтягивает сам в окружение всё нужное из ssh-agent.

Дата публикации

Мелочь, а неприятно. Раньше нужно было вбивать время публикации, это нужно для фидов. Теперь если вы выкладываете пост с помощью автосинхронизации и время в нём не указано, то это поле автоматически заполняется.

Наверное не все редакторы автоматически подгрузят изменённый пост, но это уже проблема редакторов.

Установка

Для mac пользователей максимальная автоматизация:

sudo pip install micropress — установит программу
micropress init — создаст базовый шаблон и конфигурацию

В ~/.microrc — ляжет конфиг. В ~/Documents/Micropress/ — файлы с шаблонами и постами (вы можете в конфиге указать путь к dropbox). В веб браузере по адресу http://127.0.0.1:8080 будет работать предпросмотр.

Останется только прописать в конфигурационном файле путь, куда следует выгружать контент и начать писать в блог.

В LaunchAgent автоматически пропишутся два скрипта, один для preview, второй для отлавливания изменений. Никаких действий больше, просто пишем и сохраняем.

Таким должен быть блогогенератор гика.

Для linux, init.d сервисов пока нет, но если будет нужно:

micropress watch — для для отслеживания изменений
micropress preview — для предпросмотра

Что дальше?

Если у кого нибудь будет интерес, то я с радостью помогу с установкой, проконсультирую по созданию шаблона и т.д. Чем больше фидбека, тем больше действий с моей стороны. Будет интерес — будут релизы.


  1. Некоторые редакторы по умолчанию не модифицируют файлы, а удаляют и создают по новой, это мешает работе. Например в конфиг vim рекомендую добавить строки set noswapfile и set nowritebackup, для корректной работы в режиме наблюдателя. 


comments powered by Disqus