1954

Критическая ошибка 5: Две кавычки

Факап, конечно, не такой страшный, как слетевшая с направляющих каретка или заваленный мусором кот, но тоже неприятный.

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

Всего один короткий запрос. Всего две забытые кавычки:

delete from prices where price_date>unix_timestamp(2009-12-31)

Сервер радостно подсчитал: 2009 – 12 – 31 = 1968. Как и было заказано, база данных грохнула цены на все даты позже 1968 секунд от начала юникс-эпохи (то есть после 0 часов 32 минут 42 секунд 1 января 1970 года). На тот момент не существовало не только самой фирмы, но даже и самого гендиректора.

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

1953

Бит метр бережёт

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

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

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

Им оказалась... заместитель начальника отдела продаж. Оказывается, она выбирала старые счета, которые по её логике уже не подлежали оплате, и забивала в них новые заказы, экономя номера!

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

1952

Два раза по сто десять

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

Я начала думать, где лучше купить ей новый блок. Через пару дней она позвонила снова:

— Я тут Маше рассказала про свой компьютер, так она решила проверить, что будет, и подвинула переключатель... В общем, ей тоже нужен новый блок питания.

Вот и не верь после этого в блондинок.

1951

Пусти козла в огород

Многие считают, что программисты, админы и прочие представители IT-нечисти чересчур подвержены влиянию стереотипов о всякого рода Ктулху, блондинках и тому подобных сокровищах прогрессивной человеческой мысли. Возможно, возможно; однако в каждом суеверии есть доля здравого смысла.

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

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

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

1950

Мышка табака

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

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

Недолго музыка играла. Минут через пять комп снова вырубился, на этот раз без видимых причин. В голове мелькает мысль: перегрев! Корпус-то тоже разбирал, чистил, пылесосил — мало ли, вдруг случайно задел кулер процессора. Матерясь сквозь зубы, снова повторяю всё по кругу. Вытащил блок, разобрал, убедился, что внутри всё нормально, вернул на место. Включил, проверил температуру: +32, не растёт. Ура, думаю, я победил!

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

Айтишник, помни! Проблема далеко не всегда приходит оттуда, откуда её ждёшь. Будь внимателен — сэкономишь и время, и нервы.

1949

Der Maxi-Turm

Окончив богословский факультет (информатика и ВТ), подался я на работу в одну маленькую фирму. Собеседование проводил увольняющейся админ. На вопросы я ответил быстро, благо только из стен вуза. Я спросил, почему он уходит. «Сейчас сам всё поймешь» — ответил админ.

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

АКБ пришлось выкинуть, так как всё, что могло в ней испариться, испарилось и осыпалось. Видюхи тоже не нужны, а вот корпус великана мне пригодился. Весила эта станция в пустом виде прилично, но гансы приделали к ней четыре колёсика. Выкатив пациента на центр комнаты, я принялся сверлить дырки. Умели раньше делать! Испортив три сверла и вспотев, я вернулся в пещеру сокровищ для поиска внутренностей будущего сервера. На свет было извлечена пара матерей с камнями Р3 450 МГц и хардами по 10 и 40 гигов. Заменив беременные кондёры, я запитал гиганта от двух блоков питания. На складе нашёлся монохромный монитор. На одну мать весело легла «фряха», на другую я кинул Windows 2000.

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

1948

Ёлочка, гори

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

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

— И действительно, зачем тебе ёлка?..

1947

Погнулась

Подрабатываю эникейщиком. Привезли комп в ремонт — забит вирусами под завязку. Загрузил лайв-сиди, вставил флешку с CureIT — WinPE выдал радостное сообщение о том, что USB-устройство не определено.

Выдернул поскорее, залез внутрь. Оказалось, на одном из передних USB-разъёмов перепутаны местами красный и белый провода, то есть на разъём данных подано напряжение. Флешка сдохла, не определялась ни на одном компе. Решил попробовать «занулить» через dd. Вставил в домашний шлюз на Дебиане — определилась нормально. Интереса ради сделал mount — файлы были на месте, флешка отлично работала. Обрадовался, воткнул в виндовый комп — «устройство не определено».

Проверил на всех версиях винды от 98-й до семёрки — нигде не заводится. Флешка стала фанатом GNU.

1946

Плакали всем офисом

Кинул мне как-то друг по аське файлик под названием «))))).mp3». Я его послушал, а проигрыватель закрыть забыл. Через какое-то время я вспомнил про файл — мозолил глаза на рабочем столе. Перетаскиваю его в «темповую» папку, ярлык на которую лежит там же, на десктопе. «Проводник» тут же отказывает мне: «Не удаётся переместить )))))...»

Так и вижу отряд микрософтовцев, по-идиотски хихикающих с той стороны экрана.

1945

Ловушка для халявщика

История про «ворону» напомнила и мне моё детство. Стояли у нас в школе «Корветы», работали под управлением CP/M. У нас был экспериментальный класс, и основы алгоритмизации нам начали давать ещё в начальной школе.

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

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

Как весело было потом смотреть на одноклассников, которые, летя на всех парах, замечали пробегающую справа «заправку» и со всей дурости разбивались о бордюр с надеждой на халяву дозаправиться!