bash.im ithappens.me zadolba.li
10946

Рюшечки и геморрой в подарок

Непонятно, с какого перепугу ругают индусов и называют по-идиотски написанный код индусятиной. В конце концов, 80% кода в мире написано индусами, и этот код худо-бедно работает. Индус прост: что заказали, то и написал. Не понравилось — объяснил почему, и индус свой код переписал. Тупо и просто. А вот обратный пример.

В эпоху перехода с Win98 на WinXP пришло задание — прикрутить к нашей программе скины. Бантики-рюшечки, определяемые пользователем цвета рамочки окна и нестандартные кнопки вместо стандартных. Умный индус взял бы какой-нибудь WMShell и прикрутил к программе, глупый написал бы с нуля, но за дело взялись два гениальных и суровых русских программиста, которые регулярно тусовались на RSDN и поражали всех своей крутизной.

Рассказывать всю хронологию долго, поэтому перейдём к результату. Помимо основной программы получилось два COM-сервера. Я первый раз видел, чтоб для отрисовки кнопки надо было ходить в соседний процесс. При этом к СОМ-серверу обращались не от имени кнопки, а от имени родительского окна, формировалась некая структура, для передачи которой был написан собственный маршалинг. Рисовать через стандартные средства было в лом, поэтому перехватывались непосредственно вызовы WinAPI с помощью хакерских приблуд типа Detours. За всем этим делом следил другой СОМ-сервер, который отслеживал изменения в конфиг-файле и принудительно перерисовывал в случае чего окно приложения. Конфигурация (несколько циферок для цветов и имена файлов десятка битмапок), естественно, не могла храниться ни в текстовом, ни в INI-файле: религия не позволяла. Только XML! При этом зашитый в ОС MSXML 2.0 тоже не мог использоваться по религиозным соображениям. Только XML последней версии мог хранить сакральные цифры RGB. В результате в дистрибутив запихнули инсталлятор XML, а когда Микрософт перешёл на формат MSI, то ещё два инсталлятора Microsoft Installer — для 98 и XP. Инсталлер оброс скриптом, который определял, что и куда ставить, в зависимости от ОС и её конфигурации. Итого +30 мегов к дистрибутиву. Что показательно, кроме дефолтных скинов, ничего другого не появилось. Ценность программы определялась не рюшечками, а её прикладными свойствами.

Индус страшен, пока не придёт русский программист — бессмысленный и беспощадный. Он решит все проблемы, которых у вас не было. Причём решит таким способом, который добавит геморроя на следующие десять лет.