Истории с тегом: программизмы

Всего историй: 894

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

Программа, не забудь! - 2

...После чего долго медитирую на фрагмент:

...

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

Javшутинг

/** 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;

Насяльника обещала всех уволитьма за это...