Жизнь, веб, XMPP, TAS, электронные самоделки

Про фильтры в Twig

Всем хороши пользовательские фильтры в Twig, кроме одного: при добавлении нового фильтра нужно создавать объект класса Twig_Filter_Method или Twig_Filter_Function в зависимости от того, чем является callback — массивом, содержащим объект и имя метода, или строкой. Возможности передать в качестве фильтра анонимную функцию (объект класса Closure), насколько я понимаю, нет вообще.

Почему нельзя было сделать сразу, чтобы понимался любой корректный callback? Интересно, в шаблонизаторе Django тоже не получится сделать фильтр из анонимной функции?

Юные кулхацкеры

Владельцы крупных интернет-проектов часто получают угрозы атак на их сайты. Вчера как раз был очередной такой случай — какой-то мудак на корявом английском постоянно напоминал, что Jabber-серверу SmartCommunity осталось жить сколько-то там часов. Разумеется, администрация проекта не придала угрозам серьёзного значения и, как оказалось, оно того действительно и не стоило. В «час X» на C2S-порту сервера появился 51 коннект с одного IP, через которые шёл подозрительно быстрый трафик. При пиковой нагрузке в 35 тысяч пользователей это даже не DoS, а так, незначительное отклонение от обычного трафика, различимое только при тщательном наблюдении.

В итоге горе-хакер был отfirewallен и больше не возвращался. Словом — даже скучновато, особенно когда тебе приходилось держать и реально более-менее серьёзные атаки (например, распределённый UDP-флуд на 30 kpps). Но во всех случаях серьёзных атак они наносились втихомолку, без лишнего пафоса и запугивания.

Мораль такова — если вашему проекту начинают угрожать — пора в магазин за поп-корном. Пара ссылок в тему: раз, два, три.

ООО «Оргтехсервис»

Иногда я чувствую себя менеджером по приёму на работу в сабж.

Ругаюсь

SIPNET упал, светодиод на шлюзе мигает. Интересно, надолго ли? Маме звонить в Сеул завтра надо…

Публикация фото

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

Заодно можно подвести итог последнего активного опроса. Предлагалось выбрать, какую из погодных крайностей легче вытерпеть — сильную жару или сильный холод. Как и ожидалось, зимой большинство голосовало за жару, а летом — за холод. Тем не менее, в итоге счёт по голосам — 33/23 в пользу жаркой погоды.

Ponysay

Ponysay — утилита для украшения консольных сообщений. Попробовал, понравилось. На Arch Linux ставится из репозитория community командой

pacman -Sy ponysay

Ponysay

Позитивный upgrade старому доброму cowsay :)

О Pussy Riot

Скорее бы сабж посадили, ну сколько же уже можно терпеть всю эту лабуду в новостях?

Наблюдение

Посчитал, сколько светодиодов на всяком оборудовании ночью освещают мою комнату. Насчитал 21. Это без учёта компьютера, потому что он выключен. Если его включить, прибавятся ещё 4 индикатора на системном блоке. Это ок?

Данные

Часть потерянных несколько дней назад данных из домашнего каталога удалось найти в другом месте.

Тем временем…

Последние несколько дней я появлялся на связи довольно редко. Связано это было с IRL-жизнью. Сначала нужно было съездить в Майкоп и, помимо некоторых бюрократических и финансовых занятий, купить новые комплектующие для обновления компьютера, потом был собственно сам процесс апгрейда, ну и наконец очередная неприятность, связанная с потерей данных. Но обо всём по порядку.

Итак, как и планировалось, я затоварился новым железом. Купил процессор Intel Core™ i5-3450, 8G памяти DDR3 и плату Gigabyte Z68P-DS3. По уже сложившейся у меня традиции покупка вылилась в эпичный геморрой. Впрочем, во многом именно благодаря проблемам с железом я однажды попробовал такую систему как Arch Linux и с тех пор не изменял своим предпочтениям. Но это было в прошлый раз, а в этот раз косяк оказался никак не связан с операционной системой. Наблюдались зависания машины, не зависящие от того, запущена ли на компьютере какая-нибудь ОС или нет. После 2-дней удалось эмпирически установить, что машина перестаёт зависать, если вручную очистить CMOS, но зависаная возвращаются, если хотя бы раз зайти в BIOS SETUP и сделать сохранение, даже не внося никаких изменений. Я решил не обращаться в сервисный центр и попробовать установить операционную систему. Так как у меня было 8 гигабайт памяти, мне пришлось делать выбор между 64-битной системой и использованием PAE. В итоге я остановился на втором, хотя не исключено, что ещё изменю своё решение.

Именно при установке системы я создал себе очередную проблему. Перепутав два логических диска, я по ошибке отформатировал не тот, который было нужно, и в результате потерял свой домашний каталог. В нём были настройки всех програм, неотсортированные свежие загрузки и многое другое. Но самой неприятной потерей оказался бэкап моего старого сервера, некогда стоящего на colocation в АГУ. Там было очень много файлов, которые было жалко терять: скриншоты прошлых лет, чатлоги комнаты chillout@conference.jabber.ru и Jabber-бот, написанный моим другом. Наконец, там был каталог с фотографиями одной тни (kaZantipovna), которой я предоставлял хостинг несколько лет назад. Я намеревался вернуть ей эти фотографии, но теперь, конечно, уже не смогу этого сделать. Надо сказать, это уже вторая крупная потеря данных за последний месяц, которую я допустил. Нехорошо.

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

Ещё раз о библиотеке UI

Недавно я писал о библиотеке индонезийского университета UI со зданием необычайно навороченной футуристичной конструкции. Вот оно.

Библиотека UI

От самих индонезийцев я знал, что она является самой крупной в юго-восточной Азии. Но сюрприз приподнесла Википедия. Оказывается, эта библиотека самая большая не только в регионе, но и в Азии вообще. Вот так Индонезия!

Дорожные работы

Я явно недооценил ситуацию. Теперь появились и тротуары, и разметка! Правда, тротуар пока только с одной стороны улицы, но после этого уже начинает вериться и в невозможное.

Тротуар

Новая жизнь галеризатора

Задумывались ли вы когда-нибудь о том, насколько проще писать программное обеспечение, используя фреймворки? У меня был один небольшой проект Gallerizer, написанный на C. Он использовал libjpeg и работал с изображением на низком уровне — как с массивом пикселей. И в этом проекте была очень неприятная бага, причину которой я не мог понять месяцами (к своей чести отмечу, что никто из моих друзей также не смог решить эту проблему). И тогда я предположил, что переписать весь проект с нуля, используя Qt, будет проще, чем исправить ошибку в уже написанной и практически работающей консольной версии. В итоге проект был переписан за рекордно короткий срок — за несколько часов. С нуля до работоспособной версии. Ещё час ушёл на локализацию и создание инсталлятора. Таким образом решился вопрос с Windows-версией этого проекта, которую я собирался написать уже давно А ведь поначалу я намеревался использовать WinAPI. Это позволило бы уместить конечный программный продукт в крошечный файл размером 100–200кб, но в итоге получилось бы нечто столь сложное, что назвать это мелким проектом уже не повернулся бы язык.

Скачать для пробы получившуюся у меня Qt-версию Gallerizer можно отсюда. Программа предназначена для создания HTML-файлов с эскизами на основе коллекций изображений. При большом желании к ней можно также прикрутить какой-нибудь визуальный стиль. О том, как это сделать, читайте в моей недавней статье.

Тем временем мой сайт появляется на первой странице Google по запросу «люблю Windows». Вот уж клевета.

Неуспех

Вчера случилась ужасная неудача — борясь с вирусом на сервере id1, я забыл сделать резервную копию данных в MySQL и отправил сервер в даун. Как вы уже догадались, базы данных были потеряны. Косяк затронул четыре сайта: mufaiz.net, en.averkov.web.id, casper.jsmart.web.id и paijo.jsmart.web.id. Какой будет их дальнейшая судьба — пока не знаю.

Стили для Qt

Откомпилировал несколько стилей Qt, хорошо известных пользователям UNIX-систем, для платформы Windows. Пришлось немного попотеть, так как не все стили собирались с первого раза, но в итоге этот мини-квест был успешно пройден. Результаты своего труда я оформил в виде статьи.

Jabber и XMPP

Jabber и XMPP — разные вещи, но их часто смешивают. Абстрагируясь от официальной информации насчёт терминологии, можно утверждать, что XMPP — это протокол, а Jabber — свободная (поддерживаемая энтузиастами) сеть, использующая этот протокол. Эти понятия нежелательно смешивать, но недопонимание этого встречается слишком часто. Когда люди сравнивают Jabber и ICQ, они часто городят несусветную чушь, не видя разницы между протоколом и существующей и функционирующей IM-сетью на базе этого протокола. Так что уместными будут 2 разных способа сравнения — сравнение сетей как таковых и сравнение протоколов. Причём если речь идёт о протоколе, то подразумеваться должно не то, что есть какая-то сеть Jabber, использующая этот протокол, а то, что сама сеть ICQ должна внедрить у себя поддержку этого протокола для доступа к своим серверам. Хотя бы C2S (client-to-server). Это даст возможность подключаться к сети при помощи десятков существующих клиентов, а в перспективе — и общаться с пользователями других сетей без использования всяческих костылей.

Обновление

Восстановил раздел цитат со своего предыдущего сайта. А вдруг кому-то пригодится. Также добавил в раздел сходок отчёт о встрече участников проекта SmartCommunity в 2011 году.

Красногвардейское

Мероприятия дорожников, судя по всему, завершились. Разметку на новый асфальт так и не нанесли, тротуары тоже не сделали. Что ж, и на том спасибо — теперь хотя бы дом не трясётся, когда проезжает транспорт.

Красногвардейское

А ещё, конечно, стало значительно красивее. Разбитая дорога с огромными лужами была райцентру явно не к лицу.

Суровая правда о Qt

Когда после почти 10 часов непрерывной работы mingw32-make понимаешь, что упустил нужный флаг configure, без которого ничего не получится, хочется разбить нетбук об стенку.

День факультета

Чуть было не досталось футболке от he.net. А ещё через полчаса-час я пойду в этом домой через полгорода.