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

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

съели мыши и крысы

залили чернилами и хлоркой

проверка!

причина неизвестна (а я все знаю!) неправда

достали очень-очень

потешились и хватит

продали налево

куда-то делись

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

* * *

Писали как-то раз с коллегами план работ на месяц (шеф болеет гриппом, его нет). Одним словом, «Запорожские казаки пишут письмо турецкому султану». Взяли написанный шефом план на прошлый месяц и стали его переделывать. Под возгласы типа «Фигасе! А это тут ещё откуда?», «А что означает эта хрень?» и «Вау, да мы уже на месяц со сроками опоздали…» и дружный ржач всей команды рождался официальный документ, который определял нашу (и не только) зарплату на ближайшие два месяца. Мораль: программисты должны только кодить.

* * *

Пришло описание проблемы: медленно строятся отчёты. Формирование отчёта идёт в два этапа: построение отчёта в программе и рендеринг в Crystal Reports (длится в шесть раз дольше построения — специально замерял). Постановка задачи: «Отчёт по акцизным маркам по ХХХ области за год должен выводиться в течение не более 15 минут!» Объём файла отчёта — около 12 МБ. Тестируем похожий отчёт (81 МБ) на P4-3000, 1 ГБ DDR, результат — за 15 минут построилось (ещё только построилось — не рендерилось!) чуть больше 10% отчёта. Я в шоке. Спрашиваю: а что у них за суперкомпьютеры, если они хотят вывести отчёт за 15 минут? Шеф в ответ протягивает бумажку, на которой ровным почерком выведено: «Сeleron-600 / 128MB PC100 / …» Мне просто интересно, как у них ещё WinXP SP2 работает на таких машинах. По мне, уместнее было бы ставить задачу вывода отчёта хотя бы за две недели, но никак не за 15 минут. Мораль: своевременный апгрейд — залог спокойного сна программиста.

<p>#9085: Я кулхацкер или где?</p>

13:00 29.04.2012, IT happens

Пришло описание проблемы от заказчика: «При регистрации заявления о возврате бланков, у которых длина серии 3 знака, появляется ошибка, приведенная в приложении 1». Чтобы исправить проблему в коде, решил повторить ситуацию и проверить, откуда растут ноги у этой ошибки.

Попытался в программе оприходовать бланки с серией в три символа — нельзя, поле ввода серии рассчитано на два. Я кулхацкер или где? Оприходовал бланк с серией «ЫЫ», после чего руками в базе данных поменял значение на «ЫЫЫ».

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

Попытался в программе зарегистрировать заявление о возврате — нельзя, бланк опять не отображается из-за неверной серии.

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

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

<p>#9086: Прости нас, Юра!</p>

13:00 29.04.2012, IT happens

Несколько комментариев из кода:

{ оставим это до лучших времен… }

// Юра, извини

// … вот это нигде не используется, но на всякий случай… ^_^

#region ХХХ — пока неясно, где это юзается — уже ясно

// ХХХ: изменения в данном запросе, помеченные как -=#death#=-, исправляют ошибку, которая не совсем есть, работают неизвестно как и приводят неизвестно к чему. Теоретически всё абсолютно корректно, но на практике это нашими учёными богословами ещё не доказано.

// ну и изврат…

// предотвращая возможные вопросы: делаю поддержку XXX на уровне YYY, а не на уровне ZZZ из-за лени

<p>#9087: Полярные проблемы</p>

13:00 29.04.2012, IT happens

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

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

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

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