Чем больше становится минор-версия, тем, как побочный эффект, больше становится число багов. Наступает момент, и в нём внезапно отказывают кнопки «История сообщений», «Анкета», отказывает передача файлов, отказываются из всплывающего окна раскрываться диалоги «Запрос авторизации», перестают открываться тем же образом приходящие сообщения. Если с первым и последующими пунктами всё просто: убиваем и запускаем вновь (запросы на авторизацию поступят заново), то с последним беда: сообщения от добавленных контактов можно посмотреть в истории, а вот не от авторизированных — никак. Другие диалоги, кстати, так же либо не открываются, либо открываются размером 16×16. Причина понятна без вскрытия: банальный memory-leak плюс отсутствие обработки ошибок.
А ещё у него есть другие memory-leak-не-связанные баги: разработчики исповедуют какой-то свой метод обработки клавиатурного ввода, суть которого, видимо, в отказе от «некошерной» (согласно религии разработчиков) TranslateMessage: Caps Lock и Shift обрабатываются программой самостоятельно и влияют видимо на какой-то внутренний флаг. Иногда этот флаг не сбрасывается И Я НЕВОЛЬНО ПРЕВРАЩАЮСЬ В БЛОНДИНКУ. Причём, противодействующее зажатие шифта или включение Caps Lock-а не дают эффекта.
Другой же баг: потеря возможности копировать текст из лога переписки, связанный, видимо, с какими-то внутренними изменениями в ДНК текстбокса, который для отображения этого самого лога используется.
Собственно говоря, основная причина использования MRA: мгновенное уведомление о входящих письмах. Этим я пользуюсь более 5 лет и не представляю себе не то что отказ от этой функции, а даже наличие её в каком-то другом виде (белые прямоугольнички с маленьким тёмно-синим текстом, всплывающие над треем, встающие стопкой, издающие характерный звук при появлении). Так что когда я один отказался от сабжа в сторону другого мультипротокольного клиента, я не смог стерпеть тамошние уведомления и вернулся к родным MRA-шным.
Но терпение, кажется, скоро достигнет предела. Если альтернативы я не найду, а сабж будет радовать меня багами с повешенной интенсивностью, наверное придётся писать свой заменитель?
Ведь каждый программист должен
Тут как раз, случайно зайдя на forum.sources.ru, наткнулся там на тему в которой обсуждается создание MRA-клиента. В ней наткнулся на ссылку на официальное описание протокола и перешёл по ней. Я там и раньше много раз был, но только в этот раз заметил:
MMP бинарный протокол. Все числовые данные передаются как четырехбайтные целые НЕ в сетевом формате, т. е. первым идет старший байт, последним младший.
Круто?
Разработчики настолько сильно хотели подчеркнуть, что формат отличается от сетевого, что написали слово «не» прописными. В то же время, они дали пояснение: первым идёт старший байт, последним — младший.
Так и хочется встретить их и сказать: уважаемые, а вы в вообще в курсе, что формат «первый старший, последний младший» это как раз и есть сетевой формат?
Такие дела...