bash.im ithappens.me zadolba.li

Программизмы

314

Яваскрипт мы есть не будем

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

А потом в преддверии отмечания дня рождения я решила проконсультироваться с подругой-вебмастером о содержимом праздничного стола.

Разговор получился таким:
я: Привет! Ты сильно занята? Вопрос есть.
она: Нормально, давай.
я: Вот думаю, что с меню делать...
она: На javascript? Высылай код, посмотрю!
я: Нет, я о другом - горячее там, салатики...

265

Изобретатель велосипедов - 2

В процессе работы над проектом на С# нарвался на следующее:
DateSelect.Value = (DateTime.Now.Month.ToString().Length > 1 ? DateTime.Now.Month.ToString() : "0" + DateTime.Now.Month) + "/" + (DateTime.Now.Day.ToString().Length > 1 ? DateTime.Now.Day.ToString() : "0" + DateTime.Now.Day) + "/" + DateTime.Now.Year.ToString().Remove(0, 2);

До сих пор не понял, чем этому человеку не понравилось
DateSelect.Value = DateTime.Now.ToString("MM/dd/yy");

257

Вспомнить все!

Я как-то написал программку для проверки таблицы умножения.

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

И вот, сделал я так, что компьютер, пока не прорешаешь ему всю таблицу умножения, вообще ничего запустить не дает.
Дописал прогу и выложил на работе в общую папку с названием "Запусти меня".

Через полчаса все менеджеры повторяли таблицу умножения.

249

Ну а вдруг?

Копаясь в глубинах скрипта, написанного неизвестными кодерами
для имитации нажатий с клавиатуры, наткнулся на гениальный код:

integer i
while (i!=1)
Desktop.Typekeys("<Down>")
i--
if i==12
Desktop.TypeKeys("<#Plus>")

Так сказать, перестраховался человек... А вдруг когда-нибудь да станет i равно 12?

241

Детектор рачьего свиста

Работаю программистом по автоматизации производства. Есть большой проект, который уже несколько лет хорошо и стабильно работает, но в него регулярно нужно вносить небольшие изменения в связи с модернизацией оборудования. И был в свое время у меня помошник, в образовании которого есть ряд существенных пробелов.

Итак, одно из таких изменений было внесено и шел процесс финального тестирования на экспериментальном стенде - все отлично, все работает и радует глаз. И тут понадобилось мне отлучиться. Прихожу - оборудование стоит, никаких аварийных сообщений нет. Ненормально и совершенно непригодно для реальной эксплуатации. Пробую еще несколько раз: оборудование останавливается в произвольные моменты времени без всяких на то причин! А надо сказать, что проект сделан в среде UltraLogik, у которой с возможностями отладки большие проблемы. Поэтому самый верный способ поиска ошибок - это медленное и вдумчивое курение исходников. И вот при очередной итерации этого увлекательного процесса я обнаруживаю следующую процедуру, написанную моим горе-помошником.

procedure FBD_BLOCK(var Input : integer;
var FromValue : integer;
var ToValue : integer;
var Output : boolean);
var
prev_value : integer;
begin
Output:=false;
if (Input=ToValue) and (prev_value=FromValue) then Output:=true;
prev_value:=Input;
end;

Фанфары, мат и желание дать в репу! У него оборудование выключается, когда на систему снизойдёт вселенская благодать и случайное значение неинициализированной переменной совпадёт с нужным!

Хорошо, что это был первый раз, когда эта процедура реально использовалась.

231

Потому что мы банда!

Учился я на факультете математики и информатики. И всегда делал все задания вместе с друзьями (ну, если честно, то я делал, остальные списывали). Нас даже препод бригадой называл, а меня бригадиром.

Так вот, сдавали на ASM-е какое-то задание. Мой друг (назовем его Петькой) сдает первым. Препод смотрит на текст программы (рукописный), спрашивает: "что это?" и указывает на строчку:

mov ax, 13;
int 10h;

Петька отвечает: "intion - иншион по нашему!". В рукописном варианте пробел был как-то незаметен, единица на английскую "i" смахивала, ну а "h" была похожа на "n", Петька, видимо, очень спешил переписать мое задание, поэтому сделал кучу ошибок, да еще вместо точки с запятой он поставил двоеточие.

Петька смотрит на текст - ну "иншион", да еще две точки в конце стоят... Ну точно иншион. Препод вдруг меня спрашивает, что там написано. Я всматриваюсь, ну "иншион"... Всматриваюсь еще - ну точно "иншион"! Чего он к Петьке придирается! Всё это я думаю про себя, потом беглым взглядом анализирую код выше и вижу "mov ax, 13;".

И тут меня осеняет! Что это никакой не "иншион", а int 10h!
В общем, с того самого дня и до конца учебы препод Петьку иначе как "Иншион" не называл.

222

Внучка за бабку, бабка за дедку, дедка за репку

Живу в Израиле. Делаю сайты.
Заказываю некий модуль для %frameworkname% у местного ивритоязычного фрилансера. Через месяц получаю готовый, проверяю, вроде работает, расплачиваюсь. Через пару дней обнаруживаю глюк, решаю починить сам. Читаю код и вдруг вижу:

$sysvar = str_replace($chto, $nachto, $parm); //vot blya!

Впадаю в ступор, ибо знаю, что фрилансер по-русски не знает ни слова. Звоню ему. Он мнётся, мнётся, но в конце концов признаётся, что модуль сделал не сам, а нашёл другого фрилансера на каком-то сайте. Я, собственно, так и думал - но тут он мне сообщает, что второй фрилансер - индус!

Я опять в шоке. Правдами и неправдами вымаливаю у него контакт индуса и начинаю того расспрашивать. Выясняется, что и он тоже передал проект другому. Но, не русскому, а китайцу! И только китаец вывел меня на конечного программиста. На этот раз уже белорусского.

А я-то ещё удивлялся, почему такой простой проект у первого отнял месяц.

211

Use SVN, Luke!

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

Вечером, точнее ночью после полуночи, на связи появляется заказчик и интересуется, как дела. Я убеждаю его, что все завтра будет, сижу и думаю - чего завтра ждать, если возможность сейчас сделать есть? Захожу из дома и за пару часов делаю свою часть и немного захватываю часть работы девушки. Сохраняюсь - и все, с чистой совестью спать.

Утро.
Захожу на сайт.
%#@!

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

- А может это потому, что я оставила открытыми окошки DreamWeaver'а и с утра сохранила?
- ...
- Не надо так на меня смотреть.
- ...
- Ты чего молчишь? Скажи хоть что-нибудь! Цензурное.

207

Это было неописуемо!

Как-то раз писал свой собственный фрэймворк на PHP. Разработал архитектуру. Запрограммировал основные компоненты. Все протестировал - работает замечательно. И тут, значит, приходит заказ - написать CMS для простенького сайта. Решил поднять на этом самом фрэймворке. Все было замечательно, но в одном месте потребовалось обратиться на самый низкий уровень за значением, в результате чего родилась вот такая, поражающая своей информативностью, строчка кода:

$result = $cur_obj->values->value->value->get_value();

Помедитировал. Покурил. Выпил чашечку кофе. Еще раз помедитировал и покурил. Но не нашел ничего умнее, как модифицировать это следующим образом:

$result = $cur_obj->values->value->value->get_value(); // ЫЫЫЫЫ!!! =8]

Так и сдал, заказчику.
Если кто будет поддерживать сайт и встретит это творение, знай брат, я не специально...