Давно хотел победить спам, приходящий в комментарии на моём сайте. Беглый гуглопоиск выдал только варианты с Акисметом от Романа Ворушина, а также намеки на другие варианты с модерацией.
Но так как Акисмет меня не впечатлил (не люблю прикручивать то что не контролирую полностью), пришлось смотреть в сторону написания своего приложения с комментариями. Ранее не хотел этого делать, поскольку считал изобретение велосипеда делом неправильным, но рост спама вынудил и я приступил к изучению Django documentation.
Вот тут то меня и посетило прозрение. Оказывается я заблуждался в том, что для кастомизации комментариев придется полностью писать своё приложение. Это не так.
Давно пользуюсь галереей photologue, но как часто случается, чужой функционал неповоротлив и избыточен. А хочется чего-то легкого и понятного. Так как ничего подходящего мною в сети не найдено, решил последовать советам бывалых и написать свой собственный велосипед.
Открыв свою настольную книжку Django - Разработка веб-приложений на Python, внимательно изучив и "протопав" все шаги своими руками 0_о, понимаю, что книга безбожно отстает. Предложенное решение мне откровенно не нравится.
В связи с этим начинаю обрабатывать полумёртвый код "напильником".
При создании очередного проекта на Django 1.4, во время выполнения syncdb вылезла ошибка вида:
TypeError: decode() argument 1 must be string, not None
Погуглив на эту тему нашел совет выполнить перед запуском syncdb следующую команду:
export LANG="ru_RU.UTF-8"
Метод в моём случае помог (VDS Debian squeeze).
Причина как я понял скрывается в неспособности Python определить язык системы по умолчанию. Очень странно, поскольку ошибка появилась не сразу, первоначальные запуски syncdb проходили нормально.
Не секрет, что в Яндексе активно используется Python и Django, но вот почему и как? Об этом рассказывает в своем докладе разработчик справочных сервисов Яндекса - Руслан Гроховецкий.
В продолжение заметки о стандартном приложении comments из коробки Django.
С ростом количества комментариев может возникнуть ситуация, что стандартное оповещение перестанет удовлетворять и захочется более подробной информации с "доставкой на дом".
Можно конечно воспользоваться возможностью создания своего приложения на основе стандартного, но зачастую затраты не оправдывают себя. А минимально "допилить" для получения максимума информации можно и стандартное comments.
Недавно в процессе оформления и настройки блога Prosvetika.ru, столкнулся с бесплатным хостингом блогов под крылом Google - Blogger.com
Довольно занимателный "конструктор" для блоггеров, но как всегда со своими тараканами и особенностями.
Одной из них является отсутствие sitemap в формате xml. Для англоязычных блогов это не страшно, поскольку гугл с удовольствием съедает в качестве sitemap фид блога. Но для нас - рускоязычных, гугла мало, нам Яндекс подавай. А этот поисковик привередливый и фид кушать не желает. Свои фиды он предлагает размещать в поиске по блогам.
Погуглив на эту тему в интернете, я понял, что большинство продвинутых блоговодов выкладывают заранее сгенерированные sitemap.xml на сторонние хостигни и скармливают их через robots.txt нашему Яше. Это сколько полуручной работы!? о_0
Мне как и любому нормальному человеку такой подход не по душе.
Поэтому сел и сделал свой генератор sitemap.xml из Atom фида.
Открыв недавно лог ошибок Апача обнаружил его заполненным на 90% одной ошибкой:
194: DeprecationWarning: The syndication feed() view is deprecated. Please use the new class based view API.
Если точнее, то это предупреждение. И о чем же оно мне сообщает?
Давно искал плагин TinyMCE для подсветки программного кода. Ничего подходящего, чтобы без php и только на javascript не нашел.
Хотя конечно есть highlight.js, который на лету подкрашивает DOM элементы страницы. Но мне она не приглянулась. Всетаки при каждом просмотре мучать DOM не хочется.
И вот наконец я наткнулся на заметку в которой описан метод скрещивания TiniMCE, SyntaxHL и highlight. Описанное решение у меня в django-админке не пошло. Но идея мне понравилась и я сел писать свой плагин.
Вот и закончились наконец выборы. Кто-то начал собирать вещички на ПМЖ, кто-то вспомнил про работу. Мне же события последних дней напомнили как я организовывал на сайте свои "маленькие выборы" - Рейтинг самых читаемых статей.
Как и все организаторы выборов моей заботой стало качество подсчетов и неминуемость записи результатов. В итоге я отмел все сторонние предложения и решил заморочаться сам.
Что из этого вышло видно на сайте.
Количество просмотров считается относительно точно, рейтинг статей по количеству прочтений опирается на количество просмотров.
После запуска сайта на новом хостинге VDS, периодически мониторю нагрузки на сервер с помощью htop.
Это аналог стандартного монитора процессов top. Выглядит так:
По началу все было ровно и красиво, но в определенный момент начал "скакать" подозрительный процесс вида:
sshd: unknown [net]
Процесс с завидной периодичностью появляется на доли секунды, сжирает 100% CPU и исчезает.