* * *
Пока оборудование работает штатно, вывел на второй терминал прошивку седьмой мапы. Она давно закончила сервисный режим и теперь в откате. Цикл восстановления. И вот ведь в чём засада — сейчас всё выглядит совершенно нормально. Можно любую диагностику прогнать, ни одной ошибки не будет. А включишь рабочий режим, непременно клина словит. Причём не на витрине, что полбеды, а с клиентом. Как специально подгадывает, зараза. Один потом нам даже предъявлял: мол, из-за вашей мапы у меня стресс, и не встаёт. А у неё всего-то миоблоки бёдер свело. Правда, аккурат, когда он к делу приступить собрался. Зажала его — и зафризилась. Клиент верещит, Груша матерится, мапа зависла. Хоть за ломом беги, ноги ей разводить. Обошлось, всё цело у клиента. А насчёт претензий с ним краймовые поговорили, и сразу прошло. Никакого стресса, всё работает лучше прежнего, спасибо, чудо исцеления случилось. Я потом логи построчно все просмотрел — так и не понял, с чего клин.
Запустил процесс обновления прошивки. Автоматический апдейт на всех мапах отключён, потому что с бракованными это рулетка. Он ставится во время цикла восстановления, а с утра проверять каждую, не забаговалась ли, — полдня убить. Кроме того, при обновлении слетают все программные костыли, которые я прописал поверх базовой операционки, компенсируя индивидуальные, так сказать, особенности нашего глюкавого оборудования. Вот, скажем, Пятая — у неё на бёдрах миоблоки разной производительности. Как так вышло? Ну, скорее всего, на левой ноге блок не новый, а вторичный, с просевшим метаболизмом синтмышцы. Кто-то слил новый блок на чёрный рынок, а вместо него сунул что было, наскоро перебив код микроконтроллера. В результате прошивка видит блок как новый и уровни задаёт как для нового, а он тянет процентов на восемьдесят от силы. Сразу это не заметно, ходит она, к примеру, ровно, но при нагрузке опорный аппарат разбалансируется. И вот мапа сначала танцует в витрине, а потом падает и лежит, ногами дрыгая. Клиентам не нравится, никакой романтики. К микроконтроллеру блока без разборки импла не добраться, поэтому я вручную переписал коэффициенты в драйвере. Два дня ковырялся, подбирая цифры, каждый раз перезапуская мапу, пока не убедился, что она танцует и не падает. При обновлении драйвера перепишутся на стандартные, и что мне, снова всё это проделывать? Ну уж нет. Да, разумеется, отключать автоапдейты категорически запрещено, но…
Сейчас у Седьмой будет полная переустановка системы, и это акт отчаяния. Смутная надежда на то, что ошибка, которую я не могу найти, устранена в новой версии. Почти безнадёжно, знаю я, какие дауны там на багфиксинге сидят, но вдруг? Кроме того, я столько уже в коде перепахал, причём без всякого результата, что начать с чистого листа, то есть со стоковой прошивки, будет, пожалуй, правильно. Пусть обновится. Груша, конечно, опять будет нудеть, что оборудование простаивает, а я, конечно, опять проигнорирую.
Быстро пробежался по телеметрии. Из тридцати мап в строю двадцать девять, то есть, все, кроме седьмой. Отличный показатель, для нашего хлама — просто уникальный. Восемнадцать в рабочем цикле с клиентом, семь в малом сервисном цикле, то есть после клиента, и всего четыре в деморежиме, танцуют. Это высокая загрузка, удачный день, Груша будет доволен.
* * *
Интик притащил термоконтейнер с едой. Выглядит пободрее, значит, покормили. Главная потребность удовлетворена, проснулись вторичные:
— Боз Гарт… — косит глазками смущённо. — Можно спросить?
Ну, начинается…
— Спрашивай, — коротко сказал я, наматывая на вилку острую горячую лапшу.
— А Скеша, она… откуда?
Надо же, не этого вопроса я ждал.
— Из корпы «Хромой поре́г». Откуда-то с низов, я не вникал. А тебе что за дело?
— Ну… Ничего. Просто спросил.
— Она с их премом таскается, который Хлось, ну, ты видел. Так что не строй планов на её прелести, не для тебя они росли.
— Да я и не…
— Вот и дальше «не». Если начнёшь бить клинья к премовской девчонке, он по всем понятиям должен будет тебя показательно отмудохать. Иначе свои же уважать не будут. Оно тебе надо?
— Я понял, боз Гарт, — вздохнул интик. — А ещё спросить можно?
— Валяй, — я доел лапшу и вскрыл термостакан с кофе.
— А скажите, боз, вот эти мапы… А если, например, вот, скажем, я…
Ага, вот он, тот самый вопрос. Весь день его жду.
— Используешь казённое оборудование в личных целях?
— Ну, типа, да… Не то чтобы я… Просто интересно, правда!
— Интересно? Ну-ну. Никаких проблем, интик. Пользуйся сколько хочешь!
— Серьёзно? Правда?
Ишь ты, как глазки-то загорелись!
— Разумеется.
— И как это… ну… практически?
— Элементарно. Выходишь в заднюю дверь, обходишь здание, заходишь через вход для клиентов, идёшь по коридору, смотришь в витрины, выбираешь ту, что тебе глянется, платишь, и…
— Платить?
— А ты как думал?
— Я… ну… как-то…
— Пока не прошла оплата, мапа из деморежима в рабочий не перейдёт.
— Только так?
— Именно, интик. И сам это запомни, и тем балбесам из корпы передай — никакого «зайти со служебного входа и повеселиться на халяву» им не светит. Чисто технически.
— Да я… да они…
— Ой, не надо вот этого. Хлось со своими озабоченными придурками давно мне на это намекает, не мог не попробовать через тебя зайти. И что он тебе предложил за то, что ты его ребят проведёшь и досуг обеспечишь?
— Неважно, — надулся интик, — я не согласился!
— Надеюсь, ты ему ничего не обещал, потому что по понятиям крайма окажешься должен.
— Нет, ничего! — испуганно замотал головой он.
— То-то же. С краймовыми надо всегда думать, что говоришь. А то подтянут за базар, не обрадуешься.
— А что, правда никак? Ну, с мапой…
— Ну, пока она в цикле восстановления, можно пристроиться и потыкать. Но это как в дырку в стене совать. Реакции ноль, только оборудование испачкаешь и от меня получишь так, что эта проблема для тебя станет неактуальной навеки.
— Да я бы ни за что! — возмутился интик. — Я разве не понимаю?
— Не понимаешь, — кивнул я, допивая кофе. — Но поймёшь.
Я развернулся к терминалу и сразу забыл про интика — сработала тревожная кнопка. Да чтоб тебя на запчасти разобрали! Отмена! Отмена!
Глава 3
Нерф прошивки
Третья мапа по меркам нашей коллекции хлама одна из самых беспроблемных. То, что на распродаже брака её никто не перехватил и она досталась жадному Киралику, принципиально выбирающему самые дешёвые лоты, связано только с тем, что глюк очень заметный — сбит цикл работы выводящей системы. Босс бы её тоже не взял, потому что мапа, выводящая жидкие метаболиты в произвольные моменты функционирования, выглядит бессмысленным приобретением — мокрые клиенты жалобами завалят. Но я сказал «бери», он послушал меня и не прогадал, потому что эта неисправность, при всей её неприглядности, очевидная и элементарно патчится. Баг состоит в том, что в норме для срабатывания выведения жидкости должны быть соблюдены два условия: «ЕСЛИ уровень заполнения ёмкости выше пятидесяти процентов И мапа в одном из сервисных режимов, ТО включить режим вывода жидкости». Логика долбоёбов, прописавших условия именно в этом порядке, от меня ускользает. Очевидно, что должно быть наоборот, сначала проверка на сервисный режим и только потом на заполненность. Так вот, у третьей баговалось второе условие. Запрос «Находимся ли мы в сервисном режиме?» не проходил, скрипт не получал от системы ответа и вырубался по таймауту, соответственно, слив не включался. Когда ёмкость заполнялась полностью, срабатывал уже другой, аварийный протокол, предотвращающий переполнение. Мапа выдавала фонтанчик и продолжала функционировать дальше, возмущённый клиент бежал строчить жалобу.