Мощь python и лень

Вот, что и требовалось доказать – стоило перестать лениться и откладывать «на потом», как за вечер бот из предыдущего поста научился понимать Atom (в необходимой мере) и постить в Blogger (благодаря чему обновляется ещё одно зеркало зеркало моего блога). А всё благодаря более-менее продуманной архитектуре, да удобству python и Twisted в качестве средства разработки. И зачем люди ещё пишут на PHP сложные системы…

Кстати, у Blogger’а выяснилась пара забавных моментов. Первый – это то, он строго следует спецификациям Atom при создании и редактировании сообщений. Но при этом, если отправлять ему содержимое поста с типом xhtml, завернутое в <div xmlns="http://www.w3.org/1999/xhtml">...</div>, то назад он возвращает содержимое завёрнутое как html, но при этом сохраняет этот самый div. Логика загадочна для меня.

Второй момент ещё более непонятный: по ходу тестирования я делал пачки постингов в блог. В какой-то момент получилось так, что пост проходит, возвращается назад с присвоенным id и т.п., а в блоге не появляется. Никаких намёков на то, почему так, нет. Буду пробовать дальше 🙂

Дополнение: всё оказалось очень просто. Из-за кучи постингов во время тестов blogger включил для моего аккаунта требование вводить captcha перед каждым постом. По сути можно было написать в блог только через веб-форму. Налицо явная недоработка API, так как ошибку внятную можно было и вернуть.

“Крендельки” в API ЖЖ

Свершилась тут недавно маленькая радость – взял я себя в руки и дописал бота для постинга RSS-лент в LiveJournal, и обновил свой ЖЖ с его помощью. Заодно и проверил опции редактирования записей и т.п. Очень приятное оказалось XML-RPC API у этой системы, но есть одна вещь, о которой явно в документации не упоминается. Я, следуя рекомендациям, выбрал путь авторизации с помощью credentials, как самый надёжный и исключающий прямую передачу пароля по сети. И по идее, полученную строку можно использовать несколько раз, до истечения срока действия (даже был сделан учёт расхождений во времени у сервера ЖЖ и у меня). Но, как выяснилось, действует строгое правило – один “крендель” на один запрос постинга/редактирования. Что в принципе правильно. Так что, кто будет сталкиваться – учтите 🙂

PS: Кому не понравились вылезшая вчера кучка постов в моём ЖЖ – извините! 🙂

Обновление dbmail

После выхода PostgreSQL 8.3 с отключенным type casting целых чисел в строки, с ним возникли проблемы у целой кучи софта, что даже удивительно. Вроде бы серьезные люди, пишут серьезные системы, а делают такие детские допущения. Но, не ошибается тот, кто не работает, а вот вовремя исправить ошибку – это хорошее дело. Поэтому можно порадоваться dbmail 2.2.10rc2, в котором поправлены SQL запросы и теперь он снова полностью функционален в связке с новым PostgreSQL. Кстати, хороший почтовый сервер, рекомендую.

rrdtool и временные зоны

Пришлось мне по работе столкнуться с такой интересной программой как rrdtool, весьма симпатичным средством для мониторинга. Задача стояла такая, чтобы… ну скажем она была аналогична тому, чтобы с помощью паяльника приготовить яичницу. Ничего невыполнимого, но выбор инструмента жестко задан сверху, и сменить его даже на утюг невозможно. Зато появился опыт возни с такой системой. Причём под Windows. И в процессе набивания шишек удалось узнать одну вещь – чтобы это чудо правильно понимало в какой вы временной зоне, достаточно завернуть его вызов внутрь батника или любого другого скрипта, в котором предварительно будет задана переменная окружения:


SET TZ=UTC

Где вместо UTC может быть выбранная вами зона, записанная в виде aaannbbb, где aaa – название вашей зоны (MSK, -03 и т.п.), nn – временное смещение вашей зоны от Гринвича (в случае Москвы это будет «-3»), а bbb вы можете опустить, а можете добавить – там должно быть название вашей временной зоны в случае летнего времени. Для Москвы строка должна выглядеть так:


SET TZ=MSK-3MSD

Trac 0.11b2

Наконец вышел Trac 0.11b2, который работает с PostgreSQL 8.3 не страдая из-за проблем с более строгой типизацией. Ну и всяких приятных рюшечек тоже хватает. Рекомендую обновиться.