Примечания

1

#5763: Half-Life 2: Katamari

19:45 22.03.2011, IT happens


Вьетконговец с керосиновой лампой (История #5732) напомнил мне печальный случай с моим одногруппником. Купив пиратский диск с Half-Life 2, он вполне ожидаемо получил знаменитую надпись «A.I. Disabled» и полностью отключённый ИИ. Многие из вас наверняка помнят передаваемую в то время из уст в уста волшебную команду ai_norebuildgraph 1; так вот, мой друг про этот солюшн не знал. Так как с отключённым ИИ не работали скриптовые сцены, необходимые для нормального прохождения игры, пробраться дальше первой двери было невозможно.


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


Когда позже друг показал мне скриншоты со своими шаткими нагромождениями чайников, вёдер, щепок и даже бутылок (всё шло в ход), у меня случилась истерика. Скажу честно: я начал по-настоящему уважать этого человека.

2

#5783: Игра в свои ворота

15:45 24.03.2011, IT happens


Думаю, что каждый программер хоть раз в своей жизни слышал историю про американский спутник, улетевший к чертям из-за ошибки в одном байте машинного кода. Американцы американцами, а свой урок на тему «почему писать безглючный код так важно» ваш покорный слуга получил.


Будучи обычным студентом обычного вуза, мой брат Саша помимо обычных студенческих увлечений уважал две вещи: программирование и хоккей. Именно поэтому в качестве обязательной для любого студента халтуры была выбрана полставочная должность инженера-системотехника в местном ледовом дворце. Да, в нашем уездном городке была своя хоккейная команда (назовём её «ГазМяс»), которая играла хоть и не на высшем уровне, но с довольно стабильной периодичностью занимала призовые места в своём дивизионе. Тренер «ГазМяса», дядя Вася, пользовался огромным уважением в кругах болельщиков.


Сашкина работа была довольно творческой и в основном заключалась в лечении внезапно глюкнувшего электронного оборудования. Особенно любимым занятием на рабочем месте была пляска с бубном вокруг электронного табло. Монохромная светодиодная панель через пень-колоду была подключена к гордости завхоза ледового дворца, старенькому 286-му с 640 килобайтами памяти и 30-мегабайтным винчестером. Работой табло управляла писанная на Сях программка, сопровождение которой передавалось по наследству от одного инженера-системотехника к другому. Жил мой брат да не тужил, но в один прекрасный день пришёл домой сильно пьяным, а наутро подал заявление об уходе. О причинах такого поступка он рассказал мне только через десять с лишним лет, и то после очень хорошего количества совместно принятого на грудь алкоголя.


Шёл февраль, хоккейный сезон подходил к своей кульминации, и мой брателло начал было грустить по поводу будущего вынужденного отпуска, как вдруг в один прекрасный день к нему в каморку зашёл профсоюзный деятель с предложением скинуться на подарок к дню рождения дяди Васи. И тут Сашка зажёгся Идеей! Лучший подарок для тренера что? Разумеется, победа любимой команды!


Идея была простой и гениальной. Большинство очков «ГазМяс» терял, лидируя в конце матча с разницей в одну шайбу и пропуская гол за несколько секунд до конца встречи. Соответственно, если как-нибудь уменьшить время игры, то и вероятность неблагоприятного исхода была бы меньше. Помимо судьи-хронометриста, контрольный секундомер которого благополучно пылился в ящике стола, единственным источником точного времени было пресловутое табло. Идея Саши заключалась в следующем: модифицировать табло так, что если «ГазМяс» ведёт, то смена секунд происходила бы не через одну секунду реального времени, а приблизительно через 0,9 секунды. Разница для человеческого глаза во время игры практически незаметная, но для игры — довольно критическая.


В программу было внесено следующее условие:


for (i=0; i<2; i++) { // Мы не знаем, в каком порядке команды будут на табло

if (startswith(lower(team[i]), "газмяс") { // Пусть мелочь из «ГазМяса-2» тоже порадуется

teamindex = i;

}

}


if (score[teamindex] > score[1 - teamindex]) {

quantifier = 0.9;

} else {

quantifier = 1;

}


Изменения были успешно протестированы на второй команде. Наступил день рождения уважаемого тренера, по совпадению ставший и днём очередного матча «ГазМяса». Саша, предвкушая радость дяди Васи вечером, отправился сдавать последний экзамен сессии. Только вот препод попался на редкость въедливый, и освободиться брату удалось только часов в восемь, аккурат к окончанию третьего периода. В нетерпении он зашёл на трибуну и обомлел. «ГазМяс» проигрывал одну шайбу, до конца игры оставалось десять секунд. Вбрасывание, пас назад, к левому борту, в центр, бросок… Шайба вошла в ворота соперника «ГазМяса» на мгновение позже сирены. Судья покачал головой и развёл руки в стороны, показывая, что взятие ворот засчитано не будет. Сашка посмотрел на табло. Местный «ГазМяс» встречался с «ГазМясом» из другого города. Украденной десятой доли секунды не хватило до ничьей.


К счастью, о произошедшем никто не узнал, а на турнирном положении «ГазМяса» потеря двух очков так в итоге и не отразилась. Мой брат живёт и работает сейчас в Штатах, пишет программы для микроконтроллеров, которые использует NASA в своих спутниках.

3

#4929: Сумма прописью

12:00 13.12.2010, IT happens


Многие айтишники жалуются, что трудно получить оплату за свой труд. Для себя я эту проблему решил давно.


В начале девяностых я ремонтировал телевизоры на дому. Когда дело имел с клиентом, который вызвал меня через офис, проблем не было: сделал своё дело, назвал сумму, получил деньги, уехал. Совсем другое дело, когда меня вызывали «по знакомству». Друзья — это другое, с друзей я денег не брал, не беру и брать не буду. Но вот от всяких «знакомых» просто спасу не было, и каждый такой «знакомый» считал, что его телек я должен ремонтировать бесплатно.


Я научился с этим бороться. Я обнаружил, что люди совершенно по-разному реагируют на цену, названную от балды, и на цену, прочитанную с бумажки — даже если я эту цену только что в эту бумажку вписал.


На работе у нас были бланки квитанций. Никакой отчётности по этим бланкам не велось; работодателя не интересовала моя выручка: я каждый месяц отстёгивал определённую сумму и платил за детали, взятые со склада, а остальное было моей зарплатой. Эти квитанции играли только одну роль: они подтверждали гарантию на выполненную работу.


Даже знакомым телевизоры я стал ремонтировать «по квитанции». Это избавило меня от обсуждения цены ремонта. Но и это ещё не всё: если я чувствовал, что клиент «проблемный», я вписывал в квитанцию все пункты, завысив цену процентов на 50, потом бубнил про себя: «Чё-то дорого получается... Ладно», — рвал квитанцию пополам и озвучивал нормальную цену. У клиента всегда была возможность убедиться, что мастер сделал нехилую скидку, пока я, специально отвернувшись, собирал инструмент. Провожали меня с искренней благодарностью.


Я уже давно не ремонтирую телевизоры — занимаюсь исключительно компьютерами. Но цену всегда зачитываю с бумажки: в чемоданчике лежит пачка самодельных бланков. Проблем с оплатой не было ни разу. Коллеги, берите на заметку!

Загрузка...