Однажды в студёную зимнюю пору нам позвонили и сообщили, что связи нет. Надо срочно ехать на место (400 км в одну сторону) и выяснять, в чём же проблема. Ехать очень не хотелось, мы попытались выяснить причину удалённо, но не вышло.
А на следующий день из ведомства пришло письмо, в котором сообщалось, что дикая собака упала в колодец. Когда животинка поняла, что не может выбраться, разгрызла бронированный оптический кабель. Воистину, жить захочешь — и кабель перегрызёшь!
#2959: Опрометчивая оптимизация
15:00 26.04.2010, IT happens
Начну издалека. Есть такая модель вычислений: demand-driven computation. В ней считается только то, что нужно посчитать. А еще есть common subexpression elimination — это такая техника оптимизации в компиляторах. Проще всего объяснить на примере: из sqrt(2) в пяти местах компилятор один раз сделает double s2 = sqrt(2), после чего везде будет использовать s2. Это можно усугубить, вбив вместо вычисления sqrt(2) просто константу.
Так вот, когда-то давно, когда машины были большие, проводились сравнения разных компиляторов Фортрана. Им подсовывалась тестовая программа, измерялось время компиляции и время работы скомпилированного бинарника. Особенно в этом сравнении отличились два коммерческих компилятора.
Дело в том, что тестовая программа только что-то считала, но не выводила результат. Умный компилятор рассуждал так: если результат никому не нужен, зачем его считать? Это допустимое поведение, но не для Фортрана же! В результате тест был провален, потому что тестовая программа отрабатывала моментально. Да-да, вы правильно догадались. Оптимизированный вариант выглядел так: exit(0).
После этого в тест добавили вывод результата вычислений. Тут уже отличился другой продукт: компилировал тестовую программу он три часа, зато отработала она опять-таки моментально. В оптимизированном коде было нечто вроде printf(result) — программа сразу выводила результат вычислений, который компилятор в поте лица и считал так долго.
#2960: Копия копии копии
15:00 26.04.2010, IT happens
Госучреждение с небольшим штатом. Год назад всех внезапно посадили за компьютеры, а половина штата — тётушки предпенсионного возраста. Штатной единицы сисадмина нет, есть приходящий непостоянный. В итоге все юзерские косяки ложатся на коллег, кто понимает чуть больше косячащих. Мне повезло: телефон от горе-юзверей разрывается чаще, чем по моим прямым обязанностям — юридическим.
— Алло! У меня шрифт потолстел!
Никак рожать собрался.
Иду по коридору, хватают за рукав и затягивают в пещер... кабинет:
— Э-э... Мы документ потеряли в компьютере!
— А где он?
— Не знаю, я его сохранила.
— Куда?
— Не помню.
— Как называется?
— Тоже не помню.
Видимо, о них писали: «Пойди туда, не знаю куда». Ищу потерянный файл. Нахожу четыре разных версии оного:
\Мои документы\Копия Акты 2010\Копия Иванова\Копия (4) Акты 2010\
\Рабочий стол\Копия (2) Акты 2010\Копия Акты 2010\Иванова\
\Рабочий стол\Копия Акты 2009\Акты 2010\Акты Ивановой\Копия Акты 2010
\Мои документы\Мои рисунки\Копия Ивановой\Акты 2009\Акты 2010
В каждой папке — ещё по десятку «Копия Копия Копия (6) %documentName%». Как жаль, что мы не работаем с гостайной — все шпионы с нервными расстройствами падали бы на месте замертво при попытке что-нибудь найти.
— Слушай, я ничего не трогаю, а у меня букв на экране много-много становится!
Думал, «потолстевший шрифт» разродился наконец-то — оказалось, из кучи хлама на столе съехала папка и ткнула углом в пару букв на клаве.
— У меня ничего нет!
— Где?
— На экране! Вчера такое было, а %admin% нажал кнопку — всё появилось! Я тоже что-то нажала — что-то появилось, но не то.
Оказалось, тётка влезла в BIOS. Как я вас люблю, коллеги, и как же вы меня задолбали!
#2961: Аккорд двадцати четырёх иголок
16:45 26.04.2010, IT happens
История про будильник (
Конечно, на компьютере уже была звуковая карта, но тогдашние проигрыватели сервисными функциями не страдали, а самому что-то изобрести на скорую руку было слабо. Попытался программно пропищать что-то в писи-спикер, но решил, что его звук сможет разбудить только очень чутко спящего ниндзя, к которым, понятное дело, я не относился.
На FoxPro я сваял программульку, которая в заданный момент отправляла на принтер фразу «Просыпайся, твою мать!» раз сорок. От тихого шума лазерника, подключённого к моей машине, явно не проснёшься, поэтому alarm.prg выводила всё это на матричный принтер, стоящий рядом на сервере.
#2962: SEO-волна
16:45 26.04.2010, IT happens