Жил-был незадачливый кодер на фиксе. Он не очень твердо выговаривал буквы и цифры, путал 1 и 0, приход с расходом и дебет с кредитом, и вообще матчасть знал на твердую тройку, догадываясь о ней по её реакциям на кодерский код, но был прилежен и усидчив в работе, начальники и проектировщики попадались все добрые и понимающие, давали мелкие и средние задачи, которые выполнялись почти в срок, за что к кодеру относились вполне сносно и терпеливо.
Байка №1. Непроверенный кусок кода или "злобный копипаст".
Приходит как-то кодер на работу и видит, что руководитель отдела напряженно смотрит в монитор и по громкой связи разговаривает с сисадмином. Оказалось, что у мощного терминального сервера, верой и правдой обслуживающего до сих пор огромную файловую базу, зашкаливает загрузка всех 16-ти ядер, и это с самого утра, когда пользователей совсем немного.
Тут кодер смутно припоминает, что вчера вечером он внес небольшое изменение в код. Посмотрел, ага, именно он.
Функция ДляУправляемыхФормВернутьДеньНачалаОткрытияСписка() Экспорт
ДеньНачалаОткрытияСписка = ДобавитьДниКДате(ТекущаяДата(), -3);
// Учитываем пятницу и субботу
Пока (ДеньНедели(ДеньНачалаОткрытияСписка) = 5) ИЛИ (ДеньНедели(ДеньНачалаОткрытияСписка) = 6) Цикл
ДатаЗапретаИзменений = ДобавитьДниКДате(ДеньНачалаОткрытияСписка, - 1);
КонецЦикла;
Возврат ДеньНачалаОткрытияСписка;
КонецФункции
Скопипастил, а переменную внутри цикла заменить забыл. Приходит пользователь, открывает журнал документов и одно ядро занято, крутит бесконечный цикл. И так далее. "Бомба" срабатывает только по понедельникам и вторникам. Потом заменив одну переменную, сорок минут обновлял базу, отбиваясь от наседающих пользователей, желающих работать. Морали нет, всех время от времени клинит...
Байка №2. Размножающийся Paint.
Как-то кодеру дали очередное несложное задание: сваять макет ценника для акций, акции обозначаются галочками и текстом. Сколько акций, столько и галочек. PNG-файл с галочкой прилагается.
Кодер почесал в затылке, открыл Paint-ом файл, скопировал в буфер галочку, вставил в макет... и получил вместо галочки черный квадрат Малевича. Ладно, решил он, объедем на другой козе. Вставил в макет объект Paint, вставил в открывшийся Paint галочку, закрыл, посмотрел - хорошо получилось. Сдал задачу коллеге-заказчику.
Спустя некоторое время звонит коллега и говорит, что вывод на экран нескольких десятков ценников занимает весьма значительное время, в течение которого компьютер невероятно тормозит.
Подробный анализ ситуации показал, что для вывода каждого ценника на экран, для каждой галочки в этом ценнике, сервер трудолюбиво открывал свой Paint, таким образом размножая Paint в процессах в геометрической прогрессии. Белые экраны конфигуратора и предприятия на тормозящем сервере представляли собой зрелище не для слабонервных. Закрытие сформированного табличного документа с ценниками закрывало все Paint-процессы.
Для чего вообще существует такая возможность, вставлять в макет объект, и почему сервер реагирует на это именно таким образом, осталось за пределами скромного кодерского разума, галочки были переставлены в макет как картинки из файла, макет с несколькими десятками ценников стал формироваться в секунду и все разошлись по своим делам.
Продолжение следует...