bash.im ithappens.me zadolba.li

Программы

10964

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

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

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

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

10940

С глаз долой, из ушек вон

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

Оказалось, пока меня не было, жёнушка захотела посмотреть фильм в наушниках (что ей не смотрелось через колонки — неизвестно). А звуковые выходы на передней панели компа не подключены: не пользуюсь я ими. Каким-то невероятным образом она пришла к выводу, что наушники заработают, если удалить из системы колонки (значок колонки на самом деле был значком звукового драйвера). Потом долго удивлялась, что звук так и не появился.

10931

Проблема 2004

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

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

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

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

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

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

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

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

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

10897

Индус-спринт

Здравствуй, разработчик программы к игре «Грамотей-спринт»! Я очень надеюсь, что тебе на глаза попадётся эта история. Такие, как ты, не думающие о пользователях, отнимают кучу времени у людей, которые вынуждены использовать программы. Вот список того, за что мне очень хотелось бы высказать тебе своё мнение о месте произрастания твоих рук и лени.

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

Как, скажи мне на милость, редактировать данные об учителе, если что-то случайно забито неправильно? Ладно, я соображу открыть Блокнотом офигенно новое расширение *.otvet и поправить там руками. А учителя, на которых должна быть рассчитана эта программа, в 99% о таком даже не подумают.

Ты знаешь, что есть двойные имена? Ага, причём даже без дефиса. Например, Иван Себастьян. Почему твоя чудо-программа просто убирает пробел?

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

10865

Такую песню испортили

Ковыряю сервак с виртуалками под KVM, на голове — наушники, в них что-то там рубит из тяжёлого. Вечер, состояние устало-расслабленное. Звонит телефон, я привычным движением бью Ctrl+↑ (у меня на это в FooBar назначена пауза). Говорю с женой, она вешает трубку — и музыка начинает играть. Я осознаю это только через минуту. Я же вроде бы снова Ctrl+↑ не жал… Или жал? Одно из двух: либо я заработался до того, что получил кратковременный провал в памяти, либо мутировал и могу мысленно повелевать Фубаром. Круто, однако! Попробовал треки попереключать — не, не вышло.

Утром — аналогичная ситуация. Iron Maiden вдруг замолчали, когда пошёл входящий звонок. Оказалось, ларчик просто открывался: ставил я как-то FooBar Remote на телефон и на FooBar на переносном винте. Он и висел сервисом в Андроиде, а к рабочей машине автопоиском подцепился, обнаружив открытый порт серверной части. С одной стороны, удобно, с другой — «такую песню испортили»… Я уже размечтался о мысленном управлении всей техникой.

10839

Глитч-микс

Третий час скачиваю (точнее, спирачиваю) сборник лучших хитов легендарной британской группы с торрентов. Третий час, скачано около 80% — и ни одного, ни одного полностью скачанного файла, невзирая на разницу приоритетов! Это они специально такой алгоритм в торрентокачалку внедрили или просто у меня такая карма, что в неё вшит закон Мёрфи ?

10773

С чувством выполненного долга

SVN — удивительная вещь.

Удалили объёмную папку с репозитория. Я решил сразу её удалить у себя. Обновляюсь. Выкачивает. Отменяю, проверяю. Всё равно выкачивает. Обречённо разрешаю. Жду.

Как оказалось, он её выкачал, чтобы удалить.

10772

No Data, No Cry

Работаю в IT-аутсорсинге. Выехал как-то к клиентам машинки их посмотреть, вирусы погонять, бэкапы сделать. На одном ПК (давно купленный фирменный системник HP) была куча ПО этого самого производителя. Дай, думаю, удалю лишнее, всё равно время есть. Среди всего этого набора установлена была HP Backup & Recovery. Так как мы пользуемся другим софтом для бэкапов, то эта программа на ПК явно без надобности. Специально запустил её на всякий случай, увидел окно «Что хотите сделать?», как при первом запуске, запустил удаление. Прога намекнула, что могут быть проблемы с восстановлением, если её удалить. Эх, прислушаться бы тогда…

Нажал ОК — и с удивлением увидел, что пропал весь рабочий стол. Захожу в «Мой компьютер» и наблюдаю полное отсутствие диска D: со всеми данными. В управлении дисками неразмеченных областей нет, раздел С: — на весь HDD. Ни откат системы, ни попытки найти удалённый диск результата не дали.

Так что, коллеги, прежде чем что-то удалять, проверяйте, есть ли копии данных, даже если на первый взгляд их не затронет.

10766

Игра на поле противника

В браузере Google Chrome открыт «Яндекс». В трее кнопка: «Яндекс — Google …». Интересно, какой счёт?