Интересное предложение

Здесь не отмечают 8 марта и новогодние выходные всего три дня, два из которых в Рождество. Но зато почти каждый месяц есть Хакатоны, чтобы проявить себя и Freaky Friday чтобы отдохнуть после них. И в Booking.com ждут всех, кто хочет работать над интересным проектом 🙂

Вакансия: Software Developer (Amsterdam).

К слову о многопоточности

Довелось по работе столкнуться с сервисом шифрования, который был написан по словам авторов, вроде бы очень просто и примитивно, но протокол был очень неприятный: обмен шёл 18-байтовыми блоками символов через TCP-порт. Решил сделать к нему небольшой проксирующий сервис на twisted, который бы вёл приём данных через HTTP POST запросы, выдавая результат в ответ. Стал проверять на скорость работы, и, этот «лёгкий простой» Java-сервис шифрования оказалось не выдержал и 100 единовременных запросов. Пришлось в тестах ограничиться 10-ю потоками, а заодно озадачиться вопросом как twisted переиспользует объекты протокола в многопоточном доступе (об этом другая история).

Мораль такова: как и бывший коллега в тестах обнаружил, что twisted выдерживает на удивление столько потоков, что падаёт то, что стоит за ним, так и здесь получилось, что то, что кажется кому-то простым и надёжным, на деле оказывается весьма падуче-тяжеловесным, когда речь идёт о высокой нагрузке. И спасибо разработчикам twisted за столь стремительный фреймворк 🙂

Wi-Fi в Ubuntu 11.04

После установки свежей Ubuntu 11.04 (Natty Narwhal) на свой Ideapad U165 обнаружил, что Wi-Fi теперь не включается, даже если включить галочку «Беспроводные соединения» в Network Manager. Полдня было убито на копание в форумах, чтобы вытащить работающий рецепт для устройств broadcom с идентификатором 14e4:4727 (BCM4313): достаточно запретить модуль acer-wmi


modprobe -r acer-wmi

И после этого включить его в /etc/modprobe.d/blacklist.conf, чтобы этот поганец не мешался после перезагрузки.

Оперативность = любовь клиентов

Вчера, на волне регистрации доменов в зоне .рф завёл пару адресов для своих проектов и собрался уже было использовать Linode в качестве DNS, как выяснилось, что у них национальные домены не поддерживаются. Огорчённый сим фактом завёл тикет и, не успел дойти до дома, как поддержка появилась и работает! Ещё один плюс в копилку карму этой компании.

А вот один игровой сервис уже два года шлёт мне письма о всяких своих новостях, из-за регистрации, сделанной там по глупости. А ведь ещё тогда завёл у них запрос на удаление аккаунта (опции такой в интерфейсе не было вообще). На днях повторил запрос, а воз и ныне там — ни прекратить слать своё говно ни стереть регистрацию они не могут/не хотят.

Ещё про почтовые сервера

Возвращаясь к предыдущей записи: одна весьма крупная и известная телекомпания не гнушается настроить свой почтовый сервер так, чтобы он в команде HELO называл себя «bender». Всем конечно приятно вспомнить героя с именем Остап-Сулейман-Берта-Мария-Бендер-Бей из хорошей книги (да, здесь должен быть тег irony), но правильно настроенные против спама почтовые системы разорвут соединение при такой команде HELO и вы не сможете ни восстановить пароль, ни получить код активации вашего профиля.

Халатность в SPF

Довольно давно пользуюсь на своём почтовом сервере модулем проверки письма на соответствие SPF-записям в DNS отправителя. Сегодня попался первый случай, когда она зарезала письмо, из-за халатности администраторов. С одного довольно серьёзного сайта с сериалами было отправлено мне письмо с приглашением (иначе попасть было никак), и доставлять его мне напрямую взялся сервер, отсутствующий в SPF-записи как возможный отправитель. Причём глупо выглядит когда проект, использующий явно не один сервер, представляется в SMTP совершенно другим доменом (но ладно, может у них до почтового сервера руки не дошли). Но факт — письмо зарезано, администраторам отправлено описание проблемы, но пока они молчат с решением.

Получение приватного SSL-ключа без пароля

Защищать приватный ключ SSL-соединений паролем в большинстве случаев очень хорошая идея, но некоторое ПО (в частности некоторые классы PHP) не всегда нормально воспринимают такие файлы, особенно в формате PEM. Чтобы дать им счастье и умиротворение достаточно с помощью openssl провести пару простых операций импорта-экспорта и получить желаемый файл без паролей:

cat my.crt my.key > my.pem
openssl pkcs12 -export -in my.pem -nodes -out my.pfx
openssl pkcs12 -in my.pfx -out my-nodes.key -nodes -nocerts

В примере из файлов my.crt и my.key получаем незащищенный файл my-nodes.key. Взято отсюда.

Unknown SSL protocol error

При запросе из PHP с помощью HTTPRequest к интерфейсу одной серьёзной биллинговой системы получал постоянно ошибку «Unknown SSL protocol error in connection to xxx.xxx.xxx.xxx:443». Быстрый взгляд в гугл подсказал только перебирать параметры, что оказалось вполне верной догадкой: оказывается хост нормальное работал с SSLv2, который не использовался при соединении. Пришлось указать принудительно строкой:

$req->setOptions(array('ssl' => array('version' => SSL_VERSION_SSLv2)));

Потом правда всплыли и другие прелести, вроде отдачи XML в UTF-8 с типом «text/html; charset=ISO-8859-1», но такие шутки находятся быстрее и решаются проще.