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

Разбирая вышеописанный массив, можно не заботиться о том, что индексом служит переменная, которая может быть NULL. Был бы C или какой другой язык — «access violation» или «index out of bound» гарантирован, но PHP это прощает, хотя и генерирует ошибку типа E_NOTICE: мол, обратите внимание. Отключаем показ ошибок — делов-то!

Человека, посвятившего программированию (в том числе на PHP) полтора десятка лет и рвавшего ягодицы ради доведения кода и вёрстки до стандартов, всё это заставляет просыпаться в холодном поту и идти за валерьянкой. После этого снится, что всех этих цифровых мародёров, разграбляющих системные ресурсы, посадили за «Поиск 8086» с 64 КБ памяти и приставили суровых советских Учителей-Программистов с плёткой, приговаривающих: «Много памяти не бывает! И процессорного времени — тоже!»

#4812: Скан с улыбкой

12:00 29.11.2010, IT happens

Потребовалось реализовать через нашу программу сканирование документов для их последующей отправки в архив. По требованиям заказчиков сделали одну большую кнопку «Сканировать».

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

#4813: Тяжело в учении, тяжело в бою

14:00 29.11.2010, IT happens

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

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

* * *

Переменные могут состоять либо из одной буквы, либо из одной буквы и цифры. «ts» или «t00» — ошибка синтаксиса.

* * *

Есть вот такие строки кода:

t1 = ET1/10 ? t0;

output(#0, t1);

Выполняются они по факту в такой последовательности:

t1 = ET1/10;

output(#0, t1);

t1 = t1 ? t0;

output(#0, t1);

* * *

ET1/10 ? ET1*0,1. После обнаружения этого бага я вышел из аудитории и побился об стены. Программа вела себя по-разному: то замедляла время в десять раз, то считала время как дробную величину, а не целую.

* * *

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

* * *

И на десерт: программа в бесплатном режиме работает два часа (и, следуя логике, после этого выключается). Но нет, разработчики не смогли подать команду выхода, поэтому программа сама просит, чтобы её перезапустили.

#4814: Из антимонопольных закромов

14:00 29.11.2010, IT happens

Монтажник общается с клиентом по телефону:

— Вы понимаете, мы не имеем права пилить ящики этого провайдера!

Подумав:

— А если и пилить, то у нас болгарки всё равно нет.

Подумав:

— Вообще-то есть болгарка, только дисков нема.

Подумав:

— Хотя сейчас что-нибудь придумаем!

#4815: Самому-то не совестно?

14:00 29.11.2010, IT happens

Одногруппник попросил помочь с расчётами по квантовой электронике. Показывает он мне запущенный Mathcad, в котором набрана система дифференциальных уравнений, а команда solve подсвечена красным — ошибка, мол. Нажимаю «Подробнее об ошибке» и получаю ответ: «Плохое решение!» Совестно программе стало от того, что решение плохое получилось, вот и покраснела.

#4816: Аутсорсинг грязной работы

15:45 29.11.2010, IT happens

Дома у меня стоит Mac Pro, на рабочей машине крутится Дебиан, винды уже давно не мучал, но дома ещё после первой работы поселилась публичная файлпомойка под 2003-й, рядом стоят роутер и вайфай-точка.