Выбрать главу

#9249: Былинные отказы

13:00 24.05.2012, IT happens

Всем айтишникам когда-либо отказывали. Вот моя пятёрка лучших отказов.

В приёме на работу: «У вас нет высшего образования, а у меня их два и третье на подходе, а вы умнее меня».

В оплате сделанного: «Мы заплатили 10 тысяч и ждали месяц, но %hardwareName% не заработало. Мы заплатили ещё 12 и ждали два месяца, но оно всё равно не заработало. Тут приходите вы — у вас оно заработало за пять минут. И вы просите за пять минут пять тысяч?»

В приёме сделанной программы. После трёх месяцев скрупулёзного эргономического анализа размещения почти тридцати критичных полей ввода на экране XT 80?25 в текстовом режиме и шлифовки алгоритмов поиска по справочникам для хотя бы частичного автозаполнения скорость работы оператора возросла почти в четыре раза за счёт рационального использования клавиатуры. И тут вопрос: «А почему мышка не работает?»

В продолжении совместной работы. Ну зачем ты, начальник IT-отдела, сказал на совете директоров, что генеральный читает твою докладную полугодовой давности о развитии инфраструктуры?

И на первом месте — ещё один отказ: «Вы слишком мало просите денег. Наверное, вы х#$вый специалист».

#9250: Дуб под мышкой

13:00 24.05.2012, IT happens

Достали меня очень с подмышниками — то грызун плохо бегает, то рисунок не нравится, то расцветка. Купил рулон самоклеющихся обоев и оперативно осчастливил всех страдальцев под лозунгом: «Быстро, качественно починяем-латаем коврики. Ваша мышка будет блаженствовать!»

Спалился совсем случайно: не посмотрев, отдал в бухгалтерию товарник. Там было написано: «Самоклеющиеся обои под дерево (пробковый дуб)».

#9251: Окна и велосипеды

15:00 24.05.2012, IT happens

Большинство людей, когда им нечего делать, находят себе какие-нибудь развлечения: кино посмотреть, музыку послушать или в игры там поиграть. У меня же, как у программиста, свои «игры» и «развлечения»: эмулятор DOS на КПК и мечта детства написать гибридную программу, которая бы одинаково работала и под DOS, и под Windows. Писал я её на ассемблере, долго и по чуть-чуть. Но вот настал момент, когда программа была почти готова, и осталось только написать простенький мини-драйвер под Windows, который будет перенаправлять вывод программы в окно.

Ну, скомпилил модуль. Запустил — программа падает с фатальной ошибкой. Ничего страшного, я к этому уже привык. При написании программ на асме иначе просто не бывает. Ошибка в одном бите — и программа уже фатально падает. Но именно этот стиль написания программ, привитый с детства, когда ты видишь программу насквозь и чисто интуитивно чувствуешь, где кроются ошибки, очень помогает в моём ремесле.

Загружаю старый добрый TD32. И тут происходит это… Знаете, как выглядит самый страшный ночной кошмар любого программиста? Самый страшный кошмар программиста — это когда прога падает при простом запуске, но при попытке отладить её ошибка мистическим образом испаряется! При запуске под отладчиком программа преспокойно работает. Я начинаю судорожно анализировать ситуацию: что такого я мог накосячить, что прога отказывается работать под «голой» виндой?

На анализ ситуации уходит пара часов, в течение которых программа дописывается до фактически окончательного состояния, но решить проблему так и не удаётся — прога так и падает где-то в User32, хоть ты тресни. И тогда я решаю пойти от обратного. Вот в соседней папке лежит каркасное приложение под винду, которое прекрасно работает. Чем же от него отличается моя программа?

Оказывается, перед тем как приступить к написанию модуля, я на всякий пожарный решил перечитать статьи по некоторым функциям API, причём не где-то на левых сайтах, а непосредственно в MSDN. Там я обнаружил весьма интересную информацию: оказывается, функция регистрации класса окна возвращает идентификатор этого самого класса, так называемый атом, который можно использовать вместо имени класса при создании окна. Конечно, как ярый фанат оптимизации (не зря же на асме пишу), я именно так и сделал. Зачем заставлять ОС делать лишние телодвижения? Ведь она же всё равно этот самый идентификатор будет искать по имени. Я это сделал и преспокойно забыл.

Вернул идентификацию класса окна по имени — всё заработало. Тут всё встало на свои места. Оказывается, никакой магии в том, что ошибка мистически пропадала в отладчике, нет. Эти самые атомы работают только под Win95/98.