Обновление блога

Вооружившись новыми знаниями, я переписал блог с нуля и перевёл его с домашнего сервака на нормальный хостинг. Этот пост - первый написанный через новую админку, которую я запилил на днях.

Пока что основных видимых нововведений 3:

  • Новый дизайн
  • RSS-лента (доступна по адресу [http://vizvamitra.ru/articles/feed])
  • Полноценные комментарии disqus'а

Среди невидимых отмечу одну оптимизацию: в mongodb 2.6 появилась возможность записывать результаты аггрегации/map-reduce'а сразу в коллекцию, в связи с чем я переделал логику подсчёта тэгов. Сейчас тэги хранятся в двух местах: в самой записи поста в виде массива строк и в коллекции tags в виде следующей структуры:

{
  "_id": "8734081734...",
  "name": "rails",
  "count": 7
}

При создании/редактировании поста в случае, если тэги изменились, происходит их пересчёт с занесением в коллекцию тэгов (реализован через ActiveJob, так что не тормозит сохранение поста). На главной странице в виджете с популярными тэгами вместо того, чтобы каждый раз считать, я беру самые популярные тэги из этой коллекции.

При поиске же постов по тэгу уже используется массивы тэгов, содержащиеся в постах. Денормализация ради производительности.

Он это, конечно, не всё. Внутри всё переписано с нуля и текущее состояние дел - только начало