Comments 23
Разбор примеров - отличный. Правда я пропустил длинное вступление. А вот с примерами багов и их объяснением - было интересно.
Telegram Desktop под Windows — это шедевр во всех смыслах. Обновляешь драйвер видеокарты, у тебя клиент либо падает, либо отваливается до перезапуска клиента целиком возможность просмотра медиа на весь экран. А если клиент таки падает, то ты не успеваешь вытащить крашрепорт, потому что окно о ненормальном завершении работы исчезает сразу же.
На Windows 10/11 из-за отсутствующей (физически) рамки окон, если не использовать системную рамку, можно при прокрутке списка чатов или сообщений устроить землетрясение с артефактами по краю окна в том месте, где как раз должна была быть рамка.
Это прям отличное дополнение к статье, благодарю!) Как раз, когда будем передавать инфу разработчикам, они надеюсь прочитают ваш комменатрий!)))
У меня на 11 Винде в таск бар его нельзя свернуть..
Ну все-таки телеграмм не просто банальный мессенджер с текстовыми сообщениями. Там есть поддержка аппаратного ускорения декодирования видео. Причем в нескольких вариантах.

Ребята старались.
на Linux ПКМ по чату может просто иксы уронить, так что под винду ещё нормально)
Последнее замечание, кстати, не факт что актуальное. Возможно, флаг этот вводится для реализации как-то побочного эффекта (индикатора и т.п.)
Надо смотреть его тип и если он atomic или volatile и значение используется где-то ещё, то это явно не ошибка
Баг на Андройде в поиске по словам уже давно - когда начинаешь листать, перескакивает на поиск людей.
Насколько правдив корпоративный миф о гениальности Николая Дурова как разработчика? В последнее время постоянно встречаю это утверждение на разных ресурсах. Я на C++ не пишу, поэтому мне сложно оценить код на best practice, сложность и т.п.
Довольно много ошибок имхо из-за используемого стиля. Вроде const auto foo =
, где теряется что foo это указатель, и дальше его пытаются использовать как объект, что такое объявление "помогает" не заметить. Я обычно оставляю const auto* foo =
.
Из подобных статей (по анализу C++/C# кода), на удивление, очень приятный читабельный код, без имён длиной на 40 символов, без венгерской именования, использование auto.
Отсутствие legacy творит чудеса.
Незнаю насколько это важно или интересно вам дорогие читатели, поэтому просто оставлю эту информацию здесь. Мне было очень приятно работать с проектом Telegram и писать эту статью. Однако, ещё приятнее стало в тот самый момент, когда проблемы были исправлены. Как и всегда, информация по найденным ошибкам передается разработчикам проекта, и довольно часто найденные ошибки быстро исправляются по той простой причине, что становятся очевидными. А вот и тот самый коммит с исправлениями =) Конечно это капля в море коммитов проекта, но всё равно приятно)
Дюжина ошибок мессенджера Telegram