bash.im ithappens.me zadolba.li

Факапы

10964

Всё сломалось, а я ни при чём

Утро 9 мая. Звонок шефа — встала дежурная касса. Системная ошибка программы явно из разряда «сама ничего не поняла, сообщение выдаю от фонаря».

В 10 утра выдернут инженегр-электроник. Я без электричества по причине дождя — консультирую по сотовому. Оказывается, после весеннего обострения у безопасников сборка антивиря обновилась до полной и выкосила основные рабочие базы кассовой программы. Приложила заодно и драйвер парадоксовской базы, приняв его за вредоносный, а на сладкое порезала права на директории пользователей.

К 12 дня права вернули, программу восстановили, касса стартанула с командой «до конца смены не ребутиться ни при каких условиях». В понедельник решил идти писать служебку и требовать психиатрическую экспертизу состояния коллег-безопасников. Коммерческое управление (к нему кассы относятся) меня в любом случае поддержит.

10935

После конца света

Началось всё, как обычно, нежданно-негаданно; как говорят в этих ваших интернетах, внезапно. Представляется интересным заметить, что индейцы из племени майя ещё сотни лет назад разработали календарь, достаточно точно предсказавший эти события. Они ошиблись в малом: не учли действия Папы Григория XIII, который ввёл в католических странах свой собственный календарь. За прошедшие с 1582 года столетия набежало несколько дней разницы, и предсказанное майя событие грянуло не в тот день, в который его ожидали толпы безумного народонаселения, а в тихую и спокойную пятницу 4 января 2013 года, она же 22 декабря 2012 года по старому стилю.

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

Примерно в одиннадцать утра его сотовый телефон издал хрюк антивируса Касперского, наткнувшегося на вирус «Бластер». Сисадмин накапал корвалола жене, сменил штанишки детям и прочитал полученную эсемеску. Сообщение гласило (цитирую дословно): «Брат Митька помирает… Ухи просит…» Сисадмин опустил голову на грудь и глубоко задумался. Эта шифровка из головного офиса означала, что Самый Главный и Наиболее Центральный Сервер крупной международной компании прямо в данную секунду потребляет последние ватты электроэнергии и вот-вот сдохнет в жутких мучениях от голода. Делать нечего — сисадмин скорбно попрощался с женой и детьми, собрал котомку с бутербродами и отправился в рабочий кабинет, чтобы проверить, почему даже теоретически неубиваемый сервер жалуется на голод.

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

Виртуоз клавиатуры и отвёртки почувствовал, что медленно сходит с ума. Сервера подключены к источнику бесперебойного питания, который поддерживается генератором. Кроме того, генератор защищён источником бесперебойного питания всего здания, и у здания есть собственный генератор. Это четырёхуровневая система защиты, которая не должна упасть ни при каких обстоятельствах, разве что если начался конец света. На сервере крутятся программы, на которые завязаны многие миллионы долларов США, причём не клиентов, нет, а самой фирмы, поэтому их жалко. Интересно, является ли конец света форс-мажорным обстоятельством?

Сисадмин немного поразмышлял о превратностях судьбы и о законе Мёрфи. Нет чтобы конец света начался с серверной банка, где хранятся данные о невыплаченной ипотеке; ему обязательно вздумалось начинаться именно с серверной этой компании, за бесперебойную работу которой оный сисадмин отвечает — не головой, а куда более важными частями тела. Сисадмин решил подойти к окну, чтобы бросить последний взгляд на мир, который он так любил. Кроме того, у окна было единственное место в офисе, где ловил сеть телефон, и сисадмин решил позвонить жене, чтобы попрощаться, передать последнее «прости» детям и сказать жене, что котлеты вчера были пересолены, — сейчас-то он уже ничем не рисковал.

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

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

Картины недавнего прошлого сменились картинами ближайшего будущего. По экспрессивности они дали бы по сто очков вперёд Иерониму Босху и Гигеру, а по кровавости превосходили тексты Napalm Death и Cannibal Corpse. Главным героем в них был незадачливый ремонтник, прекращающий своё существование очень многими, очень яркими и не всегда быстрыми способами. Сисадмин захлопнул талмуд и убежал искать ремонтника. Затемнение.

Следующая сцена. То же здание, этажом ниже, примерно то же время. Лицо неопределённой национальности в спецовке неопределённого цвета, зажав в зубах сигарету неопределённой марки, нацелило в стену перфоратор неопределённого производителя. Следует отмашка рукой, ответственный за техническое состояние здания перебрасывает рубильник, потолочные лампы оживают; сисадмин, ослеплённый внезапно вспыхнувшим освещением, кубарем катится по лестнице. Перфоратор с рёвом вгрызается в стену, сверло легко проходит первые несколько сантиметров и высекает ослепительные бело-голубые искры. Электричество отключается; сверло, накрепко засевшее в перебитом кабеле, замирает. Лицо неопределённой сексуальной ориентации, почесав в затылке, сдвигает сверло в дыре так, чтобы оно касалось только одного провода. Свет включается снова. Лицо вывинчивает сверло из перфоратора, оставляя его торчать из стены и замыкать цепь, забрасывает перфоратор в сумку, и они вместе с ответственным уходят из кадра.

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

Сцена последняя. То же здание, получасом позже. Вскрытая серверная компании, заполненная гулом вентиляторов; сервера задорно перемигиваются друг с другом светодиодами. Сисадмин с блаженным видом поглаживает Самый Главный Сервер, вновь занявшийся тасованием миллионов долларов, дует на костяшки кулаков и обожжённые сверлом пальцы. Ответственный за техническое состояние здания стоит в дверях, прижимая к разбитой физиомордии холодный компресс. Лицо неопределённой сексуальной ориентации, слегка помятое и покрывшееся синяками, примеривается болгаркой к навесному гипсовому потолку, чтобы выпилить отверстие для ещё одного выхода кондиционера. Щелчок выключателя. Ничего не происходит. Лицо осматривает болгарку и замечает валяющийся на полу хвост питания. Лицо берет вилку в руку, оглядывается вокруг, выдёргивает какую-то другую вилку из розетки и вставляет в неё вилку болгарки. Раздаётся мощный хрюк, словно от Касперского при виде «Бластера». Лицо сисадмина вытягивается, пока вентиляторы Самого Главного Сервера затихают…

Ремарка в сторону: в результате описанных событий ни один человек в неопределённого цвета спецовке не пострадал. А тот, кто пострадал, — да разве ж это человек?..

10931

Проблема 2004

В один прекрасный зимний день 2004 года разработчик получает просьбу о техподдержке: в случае работы не с локальными файлами, а с файлами, лежащими на сервере, программа упорно отказывается открывать файл. Неважно какой. Локальные открывает на ура, а с сервера — нет. Вообще их не видит.

Разработчик провёл потрясающее по своей глубине исследование и выяснил, что шестнадцатибитное значение времени ожидания ответа сервера (server timeout) в секундах рассчитывается по хитрой формуле, включающей в себя нынешнюю дату. В какой-то момент результат расчётов становится равным или большим, чем 0x8000. Но число с ненулевым старшим битом по компьютерным правилам считается отрицательным. Отрицательное же время ожидания невозможно, поэтому программа легко и незатейливо обрубает его до нуля. Ноль — вполне легитимное время ожидания отклика, и дальше программа работает с ним. Выглядит это примерно так:

— Эй, сервер, дай-ка мне список твоих фай… Ай, ладно, некогда мне тебя ждать, тебя только за смертью посылать! Вот, пользователь, смотри: нету никаких файлов на сервере!

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

Сам факт того, что время ожидания отклика не постоянно, а рассчитывается, да ещё зависит от текущей даты на компьютере, многое говорит о предыдущих архитекторах и разработчиках программы. Разработчик посмеялся над забавным решением, исправил ошибку путём увеличения места для расчётов с 16 бит до 32 бит и без знака, прогнал тесты, забросил свой код в репозиторий и забыл об этой проблеме. Но что-то его по-прежнему грызло. И вот однажды он в конце рабочего дня сидел, читал анекдоты и смотрел котиков, и вдруг его осенило.

Часы на компьютере того пользователя были случайно переведены вперёд. Но у всех остальных они рано или поздно сами доберутся до часа «Ж», в который время ожидания отклика, согласно формуле, станет отрицательным. И тогда все пользователи во всём мире, хранящие данные на серверах (а это абсолютное большинство клиентов фирмы), не смогут открыть ни единого своего файла. Программист быстро провёл расчёт: момент, когда фирма неминуемо обанкротится, наступал через два месяца. А начальство-то и не знает…

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

Фирма распространила бесплатное обновление для всех своих клиентов за все годы своего существования буквально за две недели до своего потенциального банкротства. Ни один другой клиент с этой ошибкой так и не столкнулся. С тех пор стандартной процедурой в отделе контроля качества является полное тестирование программы с датой, передвинутой на год вперёд, и ещё раз — на год назад.

А вы говорите — «проблема 2000»…

10922

Ядрён-бетон!

Лет шесть-семь назад пригласили меня на бетонный мини-заводик. Раствор там перестал делаться. Заказы горят. Разорение не за горами.

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

А тут — грык-дрык-бырбырбыр-плюх, а на выходе бурая жижица, а не ядрён-бетон.

Жуткая окраина. На окраине окраины — промзона. Сидят в теплушке хозяева. Бандосы, разумеется. И в процессе разговора неоднократно всплывает тема бочки с раствором, в таз с бетоном ногами, бетономешалки как инструмента расчленения… Одно радует: не в мою сторону направленная. Но куда и как развернётся, никто не знает, и вот это уже не радует.

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

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

Вот, думаю, сейчас тема бочек и тазов в мою сторону развернётся прям легко…

Час ковыряемся, два, три. Благо документации на установку в комплекте до фига. Имитации и тестовый замес проходят без проблем. Тут мне уже подумалось, что сейчас все решат, что дело в биополе настоящего АСУшника, и прикуют меня до конца жизни к этому заводику, чтоб биополе не изменилось.

— Однако, — говорю, — всё работает. Попробуйте тут сами. А я пока покурю.

Сам курю на какой-то галёрке и глазом уже так посматриваю, в какую сторону сигать, если что, и в каких кустах в этой промзоне ховаться.

Ну, машинка «грык-дрык-бырбырбыр-плюх». И опять жижицу выдаёт. Ну, думаю, приплыли.

— И что вы сделали такого что я не делал?
— Ну, того-этого, жмём сюда, сюда, сюда, потом нашу программу выбираем…
— Какой-такой павлин-мавлин, какая «ваша» программа?

И пошёл тут системный анализ в полный рост. Сравниваю предустановленные программы с пользовательской — да что за чёрт?! Почему в заводских программах воды по полкуба, а тут по два ведра? Почему щебёнки тут 200 кг, а тут в три раза больше?

— А кто настраивал заводик-то?
— Да мы чё-т не стали с завода вызывать, дорого просят. Мы тут своими силами. Узбеков, опять же, у нас тут сорок человек было… Ну, компьютерную часть сына мой делал. Он у меня гений компьютерный.
— А телефончик этого, который на техосмотр приезжал, есть?
— Да как не быть! Вот.

Звоню в другой город в три часа ночи. Поднимаю злосчастного специалиста.

— В городе N был?
— Ну.
— Заводик осматривал?
— Ну.
— Что делал?
— Да у них тензодатчики на навеске наполнителя и воды были перепутаны. Ну, я сделал всё, как положено. Всё проверил. Ещё потом два раза перепроверять приезжал.

Один гений, получив на входе мусор с разнокалиберных датчиков, настрогал на глаз пользовательскую программу замеса. Второй гений даже не подумал, что установка как-то же работала с перепутанными датчиками. Третий гений, когда всю эту п#$дулу конструировал и АСУТП разрабатывал, никакой защиты от дурака не предусмотрел. А в результате я чуть не поседел.

А тесты — ну так их первый раз за год провели после перемены датчиков. Кому ж в голову придёт проверить после сорока-то узбеков?

10871

Скидка греет сердце

Знакомые обратились с просьбой: топовый пару лет назад комп (с весьма внушительными параметрами и по сегодняшним меркам) жутко тормозит. Приехал, включил… Действительно, очень сильные тормоза. По всем признакам — перегрев.

Открываю корпус. Немного пыли, но в целом на удивление чисто. С мыслью заменить термопасту снимаю внушительного размера радиатор с трёхбуквенного процессора, достаю сам «камень». Термопаста немного подсохла, но в целом всё неплохо. Всё же решаю сменить пасту, начинаю при помощи спирта оттирать процессор — и испытываю шок. Под слоем термопасты я обнаруживаю пару стандартных зелёных ценников! Две наклейки почти полностью покрыли поверхность процессора, для теплоотдачи оставалось совсем немного площади. А ведь комп, купленный и собранный в крупнейшем магазине города, проработал два года!

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

10852

Без перебоев и пределов

Был на предприятии админ. Однажды приобрели источник бесперебойного питания производства известной в этой области фирмы из трёх букв и числом 650 в конце. Отправил админ свой старенький Powercom KIN-525 в груду рабочего, но ненужного железа и стал наслаждаться энергией нового источника.

Через год с небольшим (а может, и два) в одно прекрасное утро компьютер админа не включился. Сгорел блок питания. «Ерунда», — сказал админ и заменил блок питания своему компьютеру. Но компьютер снова не включился, зато от него запахло гарью. Убрав ИБП в сторону, админ снова заменил блок питания и включил свой компьютер напрямую в розетку. Всё заработало. «Значит, это ИБП виноват», — подумал админ и, решив разобраться с ним потом, убрал его в шкаф, а на место вернул свой менее мощный, зато более старый Powercom. Времени разобраться с новым ИБП так и не нашлось, и вскоре админ уволился.

Через некоторое время на его место пришёл новый админ. Ознакомился с принятым хозяйством и обнаружил в шкафу мощный, почти новый источник бесперебойного питания. «Класс!» — обрадовался админ и поставил его на свой стол… Не выдержал блок питания у компьютера и сгорел. Админ чертыхнулся, убрал этот источник обратно в шкаф, блок питания успешно заменил, а менее мощный, но зато ещё более старенький Powercom снова продолжил трудиться.

Прошло время. Этот админ уволился, и на его место пришёл я, тоже админ. Точно так же обнаружив этот злосчастный ИБП в шкафу, хотел поставить его себе, но не успел. Во всём здании вдруг выключили свет, и в серверной ИБП той же фирмы, но с числом 1000 в названии, по причине своего полного износа не удержал сервер. «Вот вполне приемлемая временная замена. 650 вполне хватит, тем более, серверок там так себе, не ахти какой», — подумал я и понёс бесперебойник в серверную.

Когда свет включили, сервер не завёлся. Срочно повёз сервер в сервис на ремонт, заодно и этот подозрительный ИБП с собой прихватил. Отделались легко: у сервера всего лишь блок питания сгорел. А ребята из сервиса сказали: «Что же это за ИБП у тебя такой? У него на выходе измеритель напряжения под 500 вольт показывает!» Взял я тогда бумажку с надписью «Неисправен» и приклеил на этот источник, а заявку на списание в бухгалтерию подал. Я, знаете ли, всегда так делаю.

10821

Чуть потуже, чуть приятнее

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

Если смотреть издалека, то всё правильно выглядит: провод идёт от блока питания и втыкается в материнскую плату. Втыкается нормально, ничего лишнего не торчит. Но стоит попробовать эту штуку включить, как комната наполняется едким дымом из блока питания. Поначалу грешили на бракованные блоки питания, но потом кто-то из глазастых заметил, что гнездо рядом с процессором называется не CPU, как можно было ожидать, а PCI. Новичка от удивления даже наказывать не стали.

10804

Угроза грозы

Два года назад работал инженером на заводе, основной продукцией которого были электронные АТС. Поехали мы раз со старшим коллегой в командировку. Надо было поднять упавшую АТС в УВД провинциального города. Привычно набрав с собой вагон и маленькую тележку разных ТЭЗов для неё, приезжаем на место. Старая станция из первых выпусков захламлена до неузнаваемости и задвинута в угол, за шкаф. Просим обеспечить к ней доступ и приступаем к работе. За четыре с лишним года её никто и никогда не обслуживал, даже шкаф не открывали.

Сразу же поменяли сгоревшие блоки питания, блоки управления на доработанные, приступаем к перепрошивке на последнюю версию ФПО. Прошиваем, запускаем. АТС бодро перемигивается лампочками, запускается АРМ. Связь установлена, связь установлена, аварий вроде нигде нет… Проверяем связь — цифровые аппараты работают, аналоговые — нет. Потыкался по кроссу раз восемь — оответа станции (по-народному — гудка) не слышно. Ладно, не впервой. Перепрошиваем блок управления аналоговыми комплектами ещё раз. Опять тишина. Меняем ТЭЗ на заведомо исправный, прошитый ещё на заводе. Тишина…

Старший товарищ набирает коллег с завода и просит помощи. Начинают нам наперебой предлагать разные рекомендации от простейших, которые мы и так делали, до более сложных. Выполняем все рекомендации — тишина… Да, такого ещё не было в нашей практике. Товарищ пошёл остужать вскипевший мозг в курилку, а я ещё раз решил потыкаться по кроссу. Нет, нет, нет, нет… На энном «нет» наконец-то услышал заветный ответ станции. Как раз подошёл коллега — и давай проверять все линии с самого начала.

Выяснилось, что из 80 абонентских комплектов на пяти ТЭЗах (по 16 на каждом) исправны были лишь четыре. 76 неисправных: грозой побило… Естественно, при хаотичной проверке шанс наткнуться на исправные при таком количестве был небольшой, но нам повезло. Такого количества исправных ТЭЗов у нас с собой не оказалось, поэтому мы заменили только два и поехали домой, остальные потом с попутной машиной прислали.

Никогда не сбрасывайте со счетов даже самого фантастического, невероятного предположения. Shit happens, как говорится.

10794

Пакеты-подснежники

В целях экономии контора отказывается от аренды части площадей. Уплотнили программистов и в освободившееся место втиснули тестеров. Одновременно на часть рабочих станций решили поставить Windows 8. Тем временем филиал в соседнем городе переехал в более дешёвое здание и сменил провайдера с меди на оптоволокно.

* * *

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

— Упс! — единственное, что он может сказать.

— Да, UPS тут бы не помешал, — замечает один из тестеров.

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

* * *

Утро. Начальник отдела идёт к рабочему месту, протискиваясь через столы и стулья, принесённые из уже не наших помещений. При этом яростно спорит с идущим за ним программистом.

— …и зачем только весь этот хлам на нас свалили! — заканчивает он фразу, начатую ещё на лестнице.

— Добрый день, — из-под стола высовывается несколько испуганный тестер (мышь подключал).

— Нет, это я не вам, не вам! Это я про «восьмёрку», — успокаивает его начальник.

* * *

— Свяжитесь с ними по скайпу и объясните. Пусть покажут через Тимвьюер, что у них не получается.

— Невозможно. Скорость 30 килобайт. Ни голосовой связи с ними, ни ремоут-десктопов не будет, пока снег не растает.

— Канал снегом занесло?

— Можно сказать и так. Коллектор, где обещали волокно проложить, забит снегом. Рассчитывали, что к апрелю подтает. Пока сидят с модемом.