Пропустил новость, что в июле 2011 года появился новый IM-клиент "Рамблер-Контакты". Поддерживает протоколы Jabber, MMP (Mail.ru Agent), GoogleTalk, ICQ, умеет подключаться к FaceBook, вКонтакте, Яндекс.Онлайн и QIP. Сейчас (в ноябре 2011) всё ещё в статусе бета, оно и понятно,- при установке ругается на отсутствие прав, показывает какие-то каракули, однако устанавливается. После установки пытается запуститься и падает с грохотом. Ручной запуск удаётся,- однако,- для входа требуется логин на Рамблере, дальше не пошёл. Дизайн явно навеян макосью, но достаточно приятный, по крайней мере не такой кривой, как у мультифона.
Дождёмся стабильной версии?
icq, im, jabber
Прежде чем разрабатывать систему защиты системы, убедись, что система не работает против тебя. Очень часто, система авторизации возвращает слишком много информации в случае неуспешного логина. Например, в абстрактной системе (веб-сайт, или FTP-сервер или SIP-софтсвич) пытается авторизоваться злоумышленник, используя случайный логин vasya.pupkin и пароль 123456. Система ищет в списке пользователя vasya.pupkin и пытается сверить хеш пароля (вы же не храните пароли в базе данных открытом виде, правда?). Система быстро убеждается в том, что пользователя с таким именем не существует и отправляет ответ, что-то вроде “Invalid Username”(Неправильное имя пользователя) или “Username Does Not Exist”(Пользователь не найден). Вот Вам прекрасный пример принципа СМИ,- слишком много информации.
Почему? Читать далее...
защита, программирование, разработка
Собираю статистику по загрузкам своих приложений из Apple AppStore. Яблочники не так давно выпустили утилиту для загрузки отчётов, да вот беда,- не работает эта утилита через прокси, а у моего сервера другого доступа, кроме как через корпоративный прокси-сервер и нет. Пробовал устанавливать переменные окружения HTTP_PROXY и FTP_PROXY,- не помогает.
Читать далее...
apple, proxy, программирование
У системных администраторов и программистов бывают плохие привычки. Одна из таких привычек,- работать попеременно в разных редакторах, например в редакторе mc и vi в консоли, да ещё и в Notepad++, к примеру. Сам по себе факт работы в разных редакторах ни плох, ни хорош, но вот следствия бывают не очень приятными. Например, привычные сочетания клавиш под разными системами могут приводить к разной реакции. Одно из таких комбинаций CTRL+S. Во множестве десктопных редакторов, в особенности в Windows, такое сочетание зарезервировано для сохранения текущего документа, в редакторе mc это-же сочетание триггерит подсветку кода.
А вот при работе по ssh в терминальном окне Putty это сочетание клавиш приводит к зависанию сессии. Множество раз мне казалось, что сессия зависла и приходилось попросту подключаться заново к серверу, пока я не решил разобраться.
Оказалось, что на самом деле CTRL+S включает режим XOFF, в котором терминал принимает нажатия клавиш, но не выводит в ответ ничего. Визуально кажется, что сессия умерла, но это не так. А если есть режим XOFF, то есть режим XON. Режим XON включается обратно при помощи CTRL+Q.
Вот так-то.
linux, mc, putty, ssh, vi, windows
Много раз сталкивался с ситуацией, когда надо сделать ячейку таблицы, объединяющую все столбцы (например для подзаголовка группы строк или как footer для всей таблицы). Если наперёд знаешь сколько столбцов,- не проблема, есть стандартный атрибут colspan, указываешь количество объединяемых ячеек, например colspan="2", всё работает.
А если страница выводится скриптом и количество столбцов наперёд неизвестно? И нет возможности посчитать в шаблонизаторе? В последний раз такая задача возникла при использовании Django, там шаблоны очень удобные,но с математикой там туго, а писать собственный template tag или filter казалось излишеством. Выкручивался либо изменением шаблона (чтобы такое объединение ячеек вообще не было нужно) либо городил в коде дополнительный подсчёт количества столбцов, пока не надоело. А когда надоело,- полез гуглить.
Оказалось, что не я один "хочу странного", куча народу уже сталкивалась с такой-же проблемой. Пробовали писать colspan="all" или colspan="0", - не во всех браузерах работает. На stackoverflow даже народ упёрся,- и там нашлось решение,- рекомендуют писать colspan="100%".
Попробовал на доступных браузерах,- работает везде.
html, программирование
На забугорных форумах нашёл информацию о том, что в телефоне при наборе *#5702000# включается режим Keyboard Test (ну это проверка клавиатуры по-нашему). Проверил, - действительно запускается. Такой текстово-гравический экранчик с крупными буквами, просит нажимать последовательно F1, F2 и т.д. Каждая кнопка нажимается по 2 раза, после этого переходим к следующей кнопке. Дошёл до кнопки Ok, нажал два раза,- телефон ушёл в ребут. Правильно, ведь на этом забугорном форуме было написано, что для Factory Reset'а надо дважды нажать Ok в режиме тестирования клавиатуры
. Вот только как проверить оставшиеся клавиши после Ok? Правильно, второй раз нажимать другую клавишу
Собственно сброс забытого администраторского пароля так и происходит.
sip, железки
Поставил portablePython для тестирования и разработки в недружественных корпоративных условиях (да-да, на моём рабочем компьютере у меня нет администраторских прав). При тестах простейшего графического приложения с использованием wxPython выявилась неприятная особенность,- при MouseOver над окном приложения puthon.exe тупо умирает. Думал,- какое-то событие неправильно обрабатывается, пробовал перехватывать,- результата не дало. Гугление показало, что проблема в версии Python,- в 2.5.x всё работает, а в ветке 2.6 ошибка проявляется. Обещают починить в 2.8.10. Пока откатился на 2.5.4.
python, windows
Обнаружил полезный документ,- полный список заголовков SIP и других параметров (Session Initiation Protocol (SIP) Parameters):
В документе описаны:
Registries included below:
- Заголовки (Header Fields)
- Протоколы причин (Reason Protocols)
- Опциональные теги (Option Tags)
- Коды уведомлений (Warning Codes (warn-codes))
- Методы и коды ответов (Methods and Response Codes)
- Значения приватных заголовков (SIP Privacy Header Values)
- Имена механизмов безопасности (Security Mechanism Names)
- Схемы сжатия (Compression Schemes)
- Параметры URI (SIP/SIPS URI Parameters)
- Параметры и значения полей заголовков (Header Field Parameters and Parameter Values)
- Назначения и форматы URI (URI purposes)
- Пространства имён приоритетов (Resource-Priority Namespaces)
- Значения приоритетов (Resource-Priority Priority-values)
- Параметры идентификационной информации (Identity-Info Parameters)
- Параметры алгоритма идентификационной информации (Identity-Info Algorithm Parameter Values)
- Параметры настройки User-Agent (SIP Forum User Agent Configuration Parameters)
rfc, sip, стандарты
Наткнулся на вредную багу при авторизации в ActiveDirectory: после успешного ldap.bind() получал ошибку "In order to perform this operation a successful bind must be completed on the connection". Решение нашлось в официальном FAQ python-ldap:
When searching from the domain level MS AD returns referrals (search continuations) for some objects to indicate to the client where to look for these objects. Client-chasing of referrals is a broken concept since LDAPv3 does not specify which credentials to use when chasing the referral. Windows clients are supposed to simply use their Windows credentials but this does not work in general when chasing referrals received from and pointing to arbitrary LDAP servers.
Therefore per default libldap automatically chases the referrals internally with an anonymous access which fails with MS AD.
Если по русски,- иногда AD-сервер возвращает ссылки на дополнительные сервера, на которых могут быть дополнительные результаты поиска. По умолчанию libldap пытается получить результаты с помощью анонимного доступа, в случае с Active Directory этот номер не проходит.
Решается добавлением l.set_option(ldap.OPT_REFERRALS,0) после ldap.initialize().
l = ldap.initialize('ldap://foobar')
l.set_option(ldap.OPT_REFERRALS,0)
ldap, python, windows, программирование
Чтоб не потерять, собрал в одну табличку голосовые кодеки для VoIP.
| Схема сжатия |
Скорость, Кбит/с |
Качество голоса |
| G.711 PCM |
64 |
Отличное |
| G.723 MP-MLQ |
6.4 - 5.3 |
Хорошее(6.4), плохое(5.3) |
| G.726 ADPCM |
40, 32, 24 |
Хорошее(40),плохое(24) |
| G.728 LD-CELP |
16 |
Хорошее |
| G.729 CS-ACELP |
8 |
Хорошее |
| iLBC |
15.20 - 13.33 |
Хорошее |
| IPCMWB |
13 |
Хорошее |
VoIP