Читаем Bash.org.ru IT Happens Истории ## 10001 – 11000 полностью

Открываю прайс не таких давних времён (и десяти лет не прошло) и пытаюсь скалькулировать требования к эникейщику от «мастера на все руки».

Появившиеся лет шесть назад четырёхгиговые флешки стоили по сто баксов за штуку. Про 32 ГБ скромно помолчим. Клещи, тестер и коннекторы — соточка. Винт — 250 за двести. Остальное даже считать не буду. 600 баксов по ценам 2006–2007 годов. А в эникейщики, наверное, тогда шли разуверившиеся в будущем бизнесмены.

Ну да бог с ними, с деньгами, — не в них, поговаривают, счастье. Давай прикинем: а что эникейщик должен носить с собой? Вот что человек вспомнил: флешки, винт, клещи, кабель-тестер, коннекторы, набор путевых отвёрток, термопаста, 3G-модем, насос, пара кистей, туба влажных салфеток, солидол и шприц масла. Может быть, это и весит килограммов пять, но я расскажу, что не упомянуто.

1. Набор CD и DVD с системами — загрузка с USB массово появилась в 2006 году, и до сих пор компы без неё встречаются достаточно массово.

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

3. Плоскогубцы, нож, ещё некоторые инструменты.

4. Клавиатура и мышь USB, но с переходниками под PS/2 — не все материнки позволяют войти в биос с USB-клавиатур.

5. Наборы разных кабелей (питание, VGA, DVI, USB и т. д.) и переходников.

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

7. Весьма не помешают переходники SATA/IDE в USB для вытягивания инфы с винтов.

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

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

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

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

В общем, как в какой-то фантастике было: «Пусть бросит в меня камень тот… Ай… Ой… Да я же ещё даже не договорил!»

Вспомните свои молодые годы и не нудите.

<p>#10931: Проблема 2004</p>

12:15 04.05.2013, IT happens

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

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

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

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

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

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

Перейти на страницу:

Все книги серии Bash.org.ru IT Happens

Похожие книги