112
Сижу, разбираю программу по работе. Нужно немного переделать, читаю код. В коде нет ни одного комментария, читается с трудом.
Задумался, что ну ведь не сложно же написать пару слов, и всё будет понятно.
А потом вспомнил.
Не всегда всё будет понятно.
На прошлой работе как-то встретил такое в прошивке для контроллера AVR:
if (cmd[1] == RESET) // если принятая команда RESET
{((void(*)(void))0)();} // что-то из черной магии
97
Один из наших программистов, оставив сервер, запущенным на ночь, обнаружил, что утром количество созданных мобов уперлось в лимит.
Это были вампиры.
На этот раз отожгли дизайнеры-скриптовики. По задумке, если некоторое время стоять в одном специальном темном месте, игроку становится страшно и за ним приходит вампир.
Проблема была в том, что скрипт реагировал и на самого вампира. Вампиру тоже становилось страшно, и за ним приходил следующий вампир. Утром в этом темном месте стояла огромная толпа вампиров и всем им было страшно.
92
Год назад писал тестовое задание для %companyname%. Задание было несложное: отображение дерева элементов из базы данных с использованием AJAX.
Сел ночью, написал, прикрепил резюме и отправил. В обед проснулся, сел за ноутбук - перед глазами исходный код.
alert ('Процесс секса JS,PHP и MySQL начат. Скоро будет новый бэби');
var child_name = prompt('Как Вы желаете назвать малыша?', 'Имя ребенка');
В шоке стучусь в аську менеджеру HR, та переправляет на тимлидера программистов. Извиняюсь перед ним, прошу посмотреть новую версию скрипта, а ту вообще выкинуть.
В ответ:
Все нормально, чувак! Даже если с тобой не подпишут контракт - мы тебя не забудем. Давно так не ржали!
С тех пор подобные заглушки не пишу, чего и вам настоятельно желаю.
87
Компания-провайдер. Обычная история: биллинговая система, сервер, постоянно обнаруживаются мелкие недочёты, постоянно вносятся изменения.
По закону подлости в фирму удалённого системного администрирования приходит заявка:
«Здравствуйте.
Все должно работать так-то и так-то. Просьба снести соответствующие изменения. Спасибо»
Особо не задумываясь, программисты СНОСЯТ последние конфиги сервера.
Интернет умирает.
79
Позвал меня молодой товарищ - не компилится в Borlanc C++ Builder новый проект со старыми файлами. Модули исправные - только что сам компилировал.
При попытки компиляции в новом проекте даёт ошибку в глубинах wtypes.h, на строку LONGLONG int64;
Долгая медитация вывела на потрясающей по своей глубине строчку, гласящую #define __int64 int64. LONGLONG, понятное дело, где-то в wtypes определён. А wtypes совсем не в курсе, что есть на свете извращенцы, которые переопределяют int64, да ещё и таким суровым образом.
В результате сейчас юный гений сидит и мрачно делает автозамену строк вида "([\(\s])(u)?int(\d{1,2}) " -> "$1(unsigned) __int$3 ", так как в его творениях мы нашли и int8, и int16, переопределенные таким образом.
А виновник торжества сидит и с наивным видом оправдывается - "ну я ж не знал", "ну это ж было для другого писано", "и ваще, чо вы от меня хотите", "я не знал, что __intXX - стандартная конструкция" и так далее. Так что я совсем не удивлюсь, если мы реально обнаружим #define TRUE FALSE где-нибудь в глубинах его кода.
В общем, в офисе всегда должно быть две линейки - деревянная для обычных глупых ошибок и железная для подобных творений нечеловеческого гения. По пальцам больно бить.
77
Стучится товарищ в асю - помоги, просит, с функцией на php. Кидает код. Смотрю, забыл передать нужную переменную, о чем ему и сообщаю.
Я: Ты забыл $num передать.
Товарищ: Может мне через fopen все сделать?
Я: Можно, конечно. Но лучше все-таки $num передать.
Товарищ: Ну, можно и так, да...
76
...После чего долго медитирую на фрагмент:...
a=a;
b=b;
...
Видимо это было напоминание программе, чтобы точно не забыла...
Шутки шутками, а в SharePoint некоторым контролам действительно нужно напоминать их значения, иначе они обнуляются. В результате появляются подобные строчки:
dtc1.SelectedDate = dtc1.SelectedDate; // так надо :(
dtc2.SelectedDate = dtc2.SelectedDate; // не трогать, сломаю руку
dtc3.SelectedDate = dtc3.SelectedDate; // по другому работает некорректно
dtc4.SelectedDate = dtc4.SelectedDate; // обожаю SharePoint
65
В нашем баг-треккере занесено 39.998 багов.
Сейчас все двенадцать человек сидят и ждут, когда кто-нибудь запостит один баг, чтобы потом внести свой, 40.000-й.
Работа стоит.
59
В середине 90-х я и мой друг писали игры для Спектрума на ассемблере. Я создавал всю графику и писал интро, а мой головастый друг занимался исключительно кодом.
Спустя какое-то время моему другу понадобилось написать маленькую демку за один день. Утром он попросил меня придумать с десяток спрайтов и вечером ему принести, пока он, чтобы не терять время, скопирует куски кода из нашей второй по счёту игры (скроллинг-аркада, наподопие Zynapse, с момента её выпуска прошло где-то года полтора).
Вечером я приношу ему дискету со спрайтами и застаю своего друга чуть ли не в слезах.
Я: Что случилось?
Друг: Пришлось всё переписывать с нуля.
Я: Почему?
Друг: Я не понимаю, как этот бред сивой кобылы вообще может работать!
Ну что ж. Прошло полтора года, взгляды на программирование немного поменялись.
58
/** The Constant NUMBER_3. */
public static final int NUMBER_3 = 3;
/** The Constant NUMBER_4. */
public static final int NUMBER_4 = 4;
/** The Constant NUMBER_5. */
public static final int NUMBER_5 = 5;
/** The Constant NUMBER_6. */
public static final int NUMBER_6 = 6;
/** The Constant NUMBER_6. */
public static final int NUMBER_7 = 7;
Насяльника обещала всех уволитьма за это...