Судя по комментариям к прошлому посту, я написал слишком много текста, из которого сложно понять, что же там происходит. Поэтому что-бы съекономить ваше время я сделал коротенькое слайдшоу в котором покажу, как происходит процесс написания поста в blogofile.
Все посты у меня храняться как файлы на локальном диске. Все что находится в папке _post публикуется. А в папке _drafts, например, храняться супер-секретные черновики
Я открываю проект в Sublime Text. Здесь я пишу посты в формате .markdown
Там же я редактирую шаблоны, и скрипты на Python которые генерируют из постов и шаблонов готовый блог
Потом я запускаю build скрипт, который генерирует статичный html файл для каждой страницы блога (всего 100+ файлов, генерируются за <2 секунды)
Я могу открыть файлы на своем компьютере браузером, и быстро посмотреть как будет выглядеть блог после изменений
Потом я запускаю скрипт, который синхронизирует изменения по ftp на хостинг. После чего их видите вы :)
Когда мне надо отредактировать пост вне моего компьютера, я это открываю пост из DropBox, с помощью прекрасного Online Markdown редактора Dillinger. После чего я запускаю build скрипт по ssh.
Администрирую коментарии я отвечая на email которые присылает мне сервис Disqus
Старые комменты вставляются в html. Если посетитель не спаммер (и не крутой seo-оптимизатор), то блок с комментами заменяется виджет сервиса Disquss, который позволяет добавлять и подгружать новые комменты с помощью Javascript.
У Disquss есть киллер фича - reply на уведомление о комментарии по email станет ответом на коммент. Reply со словом Spam, добавит коммент в спам, и.т.д. Чертовски удобно.
В общем примерно так. Только при build'e выполняется еще куча других операций - например оптимизируются css, генерируются уменьшенные копии изображений, дополняются ссылки в зависимости от параметров, создаются оглавления, рамки для картинок и.т.д.
Не самый User Friendly способ, но воопервых мне так удобнее. Да и преимуществ множество.
PS: достиг сингулярности пока писал статью в блог о том как писал статью в блог.