Всячина → Атака роботов
Началось... На неделе просматривал логи сервера и заметил, что мне в блог роботы пишут комментарии. Однако данные приходили от них невалидные, а по моему недосмотру это приводило к 500-й ошибке, так как перенаправление со страницы обработчика формы на страницу записи происходило только для валидных данных.
Любопытство взяло вверх, был написан кусочек кода, сохраняющий эту бессмысленную спамную информацию в отдельную таблицу, а заодно и 500-ошибку убрал. Закоммитил изменения, залил на живой сайт. А с утра началось. Причём не в спамную таблицу, а сразу на сайт, чего ранее не наблюдалось ни разу. Причины сего явления мне неизвестны, такое чувство, что боты чему-то обучились.
Zend Framework → Отправка писем в спул
Под отправкой писем в спул, я подразумеваю именно стратегию, когда реальная отправка письма происходит в фоновом процессе, а не в том, который отправку письма инициализировал. Поясню на примере данного блога. Некто отправляет комментарий, отвечая на комментарий другого пользователя. Этим действием запускается механизм, который отправляет письмо мне, т.е. хозяину блога, о том, что кто-то что-то написал. Дальше отправляется письмо тому, на чей комментарий ответили. Ну и, допустим, что письма о комментарии отправляются всем, кто подписался на комментарии к конкретному топику блога. Так вот зачем нашему некто ожидать, пока всем письма отправятся? В случае же массовых рассылок, когда адресатов сотни и тысячи, по другому и нельзя, по моему.
Решением данной ситуации и будет отправка писем в спул, т.е. помещение их в некую очередь, откуда они будут извлекаться фоновым скриптом, и рассылаться адресатам.
Фотография → Пауки
Разбавлю немного всякое программирование. Фотографии из Крыма, верхняя свежая, а вторая - октября 2010 года. Похоже, что на обоих фотках одно и то же создание, в смысле видовой принадлежности :) @dimocritus подсказывает, что это Steatoda albomaculata, ложная вдова, так и буду считать.
И вторая под катом.
News → Автотвит, первая проба
Реализовал :) Теперь кроме инстаграма и жежешки ещё один робот будет писать твиты за меня. Собственно, этот автотвит будет первый, не считая многозначительного предыдущего "TEST-74"
В ближайшее время постараюсь описать, как это всё работает изнутри :)
News → Поселил здесь свой твиттер
Поселил здесь записи из своего твиттера. Осознанно я там и не нахожусь, в основном автоматом туда записи генерируются или же как сборник полумусорных ссылок этот твиттер использую. Но вот написать для него модуль был просто обязан, хотя бы ради интереса - как это вообще делается? На очереди автоматический репост из блога в микроблог :-)
Вёрстка → Вёрстка для писем
Имеются в виду HTML-письма. Не думал, что могу наткнуться на какие-то специфические особенности данного дела, хотя на каких основаниях так считал - неизвестно.
Итак, постановка задачи: накалякать какое-нибудь простенькое HTML-письмо с минимальным оформлением, дабы выпендриться выделиться из общей массы текстовых писем. Наподобие того, что снизу
Железо → SD + Eye-Fi - ещё один шажок в беспроводную эпоху
Началось всё с чтения новостных лент сайтов, посвящённых железу и гаджетам. А именно фотоаппараты, оснащённые беспроводными модулями, начали создавать пелевинские вау-импульсы в моём мозгу. Только вот замена зеркалки без Wi-Fi на мыльницу с Wi-Fi в мои планы никак не входила. На помощь пришёл упомянутый выше мозг, он покопался где-то в своих дебрях и извлёк на поверхность аббревиатуру Eye-Fi, заархивированную им при чтении тех же новостных лент.
Что-то отвлёкся я от темы. Короче говоря, нашёл и приобрёл карту памяти с беспроводным модулем на борту - SanDisk Eye-Fi на 4 гектара. Она ниже на картинке, как раз перед погружением в родную стихию.
С виду самая обыкновенная SDHC карточка, каковой и воспринимается устройствами, куда она вставлена. Отличие только в том, что фотографии и видео сбрасываются на компьютер самостоятельно, как только карточка оказывается в радиусе действия Wi-Fi сети, на которую она предварительно настраивается.
News → Торжественная заливка
Произошла она не сегодня, а в ночь с 29-го на 30-е октября. Имеется в виду перемещение на хостинг нового движка и новой базы этого блога.
Как это обычно и бывает, всё прошло не без сучка и с задоринкой. Очень уж хотелось вывесить своё творение во внешний мир, пусть тут ещё и половина не готова из задуманного. Например, раздел бекенда для создания и редактирования записей написал только сегодня, потому и пост запоздавший получается.
Что-то я отвлекаюсь... Короче говоря, где-то в полночь жахнул БД и файлы старого блога на хостинге, закачал новые, обновил страницу - и белый лист в окошке браузера. Никаких ошибок не видно, логи тоже пустые. Блог локально работает на винде дома и на маке на работе. Пришлось ковыряться. Только к половине третьего сайт заработал, а к трём были пофиксены ошибки, которые проявились только на линуксовом сервере.
Основная проблема, которую не сразу смог обнаружить, заключалась в том, что залились не все файлы библиотеки Zend Framework. Заметил случайно, когда дебаги вставлял в библиотечные файлы. На хостинг заливал всё архивом по FTP, а потом распаковывал их в панели (поштучно заливать тысячи файлов выходит во много раз дольше), а при распаковке извлеклись не все файлы, пишет о неудачах. Тут хоть глюк и не с моей стороны, зато узнал о таком полезном инструменте в Total Commander, как синхронизация папок. Теперь им и пользуюсь при обновлении этого движка на хостинге. Даже скриншотик вывешу по этому поводу, а то скучно без картинок.
Ну и пару моих ошибок всплыло, с кастомными хелперами для Zend_Form_Element в форме для комментариев, связанный с большими и маленькими буквами в именовании файлов, причём непонятно, почему на маке сайт нормально функционировал (а не должен был), ведь тоже, вроде, система, которой регистр букв не безразличен. Ну да ладно, исправил и зарубку на будущее оставил в голове, следить внимательнее за буквами.
News → Работа над ошибками
Начал переработку отходов движка этого блога. Он, конечно, нормально функционирует, но начинал я его в то время, когда знания мои в данной области были крайне скудны. Тот же самый JOIN, например, в SQL запросах был для меня загадкой, а потому приходилось извлекать данные из отдельных таблиц, а потом лепить внутри PHP-кода то, что мне надо.
Хотелось дождаться выхода Zend Framework 2, чтобы поупражняться в нём, но, видимо, не судьба, так что в основе будет лежать первая версия моего любимого фреймворка. Можно было, конечно, затеять деятельность и с Symfony 2, т.к. инструмент реально мощный, но только не вижу целесообразности его применения, отсутствует простота, да и на работе мне его хватает с головой :)
Вот, собственно, и всё. Запись эта нужна мне только в качестве точки отсчёта по времени, более ни для чего.
IDE → NetBeans + TortoiseSVN 1.7
Обновил недавно черепашку до версии 1.7 и стал регулярно получать сообщение об ошибке в среде разработки NetBeans, т.к. тамошний клиент для работы с Subversion пользуется метаданными рабочей копии по версии 1.6
Залез в гугл и отыскал решение этой проблемы. Необходимо в файле .../etc/netbeans.conf добавить параметр -J-DsvnClientAdapterFactory=commandline в опцию netbeans_default_options
В настройках IDE можно явно указать путь к клиенту Subversion. Делается это в Сервис → параметры → Разное → Управление версиями (Tools → Options → Miscellaneous → Subversion)