bash.im ithappens.me zadolba.li
6384

Форвард-реверс-инжиниринг

3 июня 2011, 15:45

Киев. Аутсорс. Ноябрь 2010. Заказчик хочет, чтобы мы добавили в систему поддержку новых устройств. Хорошо, что за девайсы? Есть три устройства: первое вроде как давно уже есть, но только у клиентов наших заказчиков, второе никто никогда вообще в глаза не видел, а третье будет можно предзаказать в начале 2011-го. Документации на устройства ввиду их специфики нет.

Май 2011. С помощью тонны писем с обсуждениями, копипастов из каких-то древних C-библиотек, предполагаемых интерфейсов и какой-то матери имеем:

— мы девайсы по-прежнему ни разу в глаза не видели, в том числе их веб-морду;
— для разработки и тестирования написан эмулятор всех этих устройств;
— при первом запуске у заказчиков с реальным устройством (их клиент расщедрился) всё работает;
— клиенты «very happy».

«Есть штука оттуда, не знаю откуда, напиши к ней то, не знаю что»? Не проблема!

6383

Жрёт как не в себя

Стоит у нас прога для учёта бюджета на Oracle 9. База пухнет просто нереально — видимо, сделана на редкость криво. После серии сбоев вызываем представителя разработчиков. Для таких своя прога — кладезь всех достижений человечества в программировании, а в проблемах могут быть виноваты все, кроме них.

Пришёл паренёк, долго искал, к чему придраться. Не найдя ничего, начал нести пургу, что мы в БД накосячили. Предложили показать, что и где не так. Копался ещё два часа, наконец выдал, что во всём виновата антивируска: проге, мол, не хватает ресурсов. Мы офигеваем: в сервере НР четыре нехилых проца и дюжина гигов оперативки. Что ж, говорим, делать? Он начинает загибать пальцы: типа, всё снести, попробовать БД установить заново и ничего больше на сервер не ставить, кроме этой БД — ей и так здесь не развернуться.

Он ушёл, а мы только руками развели. Запуск человека в космос, высадка на Луну, сложнейшие расчёты термоядерных взрывов — всё было сделано на машинах в тысячу раз слабее, а посчитать муниципальный бюджет нам ресурсов не хватает.

6382

Мы не дебилы, дебилы не мы

Еду в электричке. Вдруг вижу на экране одного из телефонов нечто похожее на досовский текстовый режим. Пригляделся — телефон оказался Нокией N900, а то, что я принял за DOS, — линуксовой консолью. Владелец телефона набирал исходник программы. На каком языке, я не разглядел, но, кажется, на Питоне. Но самое удивительное в этой истории то, что владелец оказался тёткой!

Вот так-то: пока одни разглагольствуют о всеобщей дебилизации, другие молча ей противостоят.

6381

LTFO

3 июня 2011, 11:45

Девяносто дремучий год. Огромный по тем временам супермаркет. 3000 квадратных метров, 4000 наименований товаров. Сеть на коаксиале, клиент-серверная система (фронт-энд на новомодной на тот момент Delphi, бэк-энд — SQL-база) и я, молодой админ. Кассы — обычные PC под девяносто пятой виндой. Это сейчас сети супермаркетов, специализированные POS-устройства, а по тем временам сканер штрих-кодов можно было увидеть либо в зарубежных фильмах, либо у нас. Бизнес шёл неплохо, с размахом: под праздники образовывались очереди во все двадцать касс.

Что я делал на той кассе в тот день, за давностью лет совершенно не помню. Факт заключается в том, что я, закончив, просто уступил место кассиру, не сделав злополучный логаут. Под админскими правами интерфейс не сильно-то и отличался, особенно в той части, с которой работал кассир. Как показало расследование, было там окошко ручного ввода цифрового значения штрих-кода, если вдруг сканер сбоит или код плохо пропечатан. Набираешь первые цифры кода или первые буквы названия товара, в окошке высвечивается список товаров, и нужный можно выбрать мышкой или с клавиатуры. Красота! А вот если нажать клавишу Del, выскакивает диалог: «Вы действительно хотите удалить бла-бла-бла?» Кто будет читать, что там написано, когда очередь над душой? А база-то реляционная…

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

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

6380

Файлы стоимостью в честь

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

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

Системная дискета — в дисковод, питание включено. Запускаю diskedit. Таблица разделов жива, загрузочная запись диска — мусор. В первой копии FAT — каша, во второй — тоже что-то невразумительное. Но видны каталоги и обрывки текстовых файлов, значит, можно попытаться что-то сделать. Потребуется просканировать диск, отыскать обрывки, попытаться их склеить вместе — либо руками, либо написать какую-нибудь утилиту. В общем, создать что-то вроде ещё не существующего в те дни EasyRecovery.

Откладываю системник в кучку тяжелобольных и мчусь на кухню, чтобы поучаствовать в распитии кофе, по пути прикидывая, когда же найти время для этой работы. Днём нереально: будут отвлекать покупатели через каждые пять минут. Вечером надо будет собирать заказы на завтра. Остаётся только ночь. А что, время удобное: тишина, спокойствие, чай можно заваривать любой крепости. Ерунда какая, одну ночь не спать — прямо отдых по сравнению с кошмаром при подготовке диплома. С такими мыслями я залетаю на кухню, где меня прямо с порога встречают вопросом:

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

Оживлённый разговор внезапно обрывается на полуслове. Оборачиваюсь — и вижу Анечкино удивлённо-обиженное выражение и каменные лица прочих присутствующих. Я понимаю, что совершил неслыханную наглость, предложив девушке целые сутки обходиться без любимого компьютера, и у меня в запасе считанные секунды для объяснений. Начинаю сбивчиво оправдываться: рассказываю, что повреждения серьёзные, надо повозиться, днём времени решительно нет, начать смогу только вечером, но к утру всё обязательно будет готово. Снова получаю неожиданную реакцию: Анечка густо краснеет, остальные девчонки начинают корчиться в приступах смеха, и даже наш главный специалист Артур, образец спокойствия и невозмутимости, начинает издавать периодические похрюкивающие звуки.

Отсмеявшись, девчонки мне рассказали, что буквально за несколько секунд до моего появления они задали Артуру вопрос:

— Ну как, сможете спасти Анечкины файлы?
— Витя наверняка сможет, — ответил Артур. — Вопрос только в одном: сколько он за это запросит?

Анечка почему-то решила, что данные с диска ей не очень-то и нужны. А жаль — наверное, EasyRecovery мог бы появится на несколько лет раньше.

6379

В ожидании подвоха

3 июня 2011, 10:00

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

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

Весёлые истории и со школьными сайтами: как бы учителя их делают, но те не делаются.

— Давайте мы сайт закончим за вас.
— Нет. Вдруг вы там чего натворите?

Ага, поднимем FTP и будем раздавать пикантные видеозарисовки с «Порнолаба».

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

6378

На дваче и не такое расскажут

Подходит сотрудница: «Я помыла свою клавиатуру в посудомоечной машине, и она перестала работать. А в интернете пишут, что так можно!» Пока я сдерживал хохот, барышня сказала, что вычитала это на ixbt.com. Никогда бы не подумал, честно говоря, что барышни, никаким боком к IT не относящиеся, читают iXBT. Не поленился, нашёл пассаж про помывку клавиатуры. Цитирую:

Беспроводная клавиатура и мышь, вошедшие в семейство Silver Surf, выдерживают полное погружение в жидкость и обладают противомикробными свойствами. Более того, периферийные устройства Silver Surf, по словам производителя, являются первыми в своём роде изделиями, которые можно мыть в посудомоечной машине.

Ошиблась моделью слегка. Бывает.

6377

Баг в летнюю ночь

3 июня 2011, 08:00

Последний день мая. Пишу код, допиливаю отчёт. Исправил — сохранил — перезапустил — ввёл период выполнения отчёта — нажал «Сформировать» — любуешься результатами. Дату в жёлтой программе можно вводить быстрым способом: пишешь день, и умная программа сама подставляет текущий месяц и год при окончании редактирования формы или смене фокуса. В поле ДатаНачала я ввожу «1»; в поле ДатаОкончания — «30».

Дописываю последние изменения, запускаю отчёт в последний раз, устанавливаю период и… смотрю на совсем другие данные! Ещё пару минут назад отчёт показывал актуальное финансовое состояние расчётных счетов, а сейчас за каждый день периода — одно и то же значение. Завтра сдавать отчёт; багу нужно срочно исправлять. С упорством, достойным истинных могикан, лезу в код, правлю, меняю, режу и кромсаю подозрительные участки — результат тот же. В отчаяньи гляжу на время — второй час ночи… Стоп, второй час!

С осторожностью, с которой хирург извлекает пулю, открываю отчёт и ввожу период с 01.05 по 30.05. Пуля извлечена, пациент жить будет. А вот мне, пожалуй, пора ложиться спать. Лето 2011-го подкралось неожиданно, но я этому очень даже рад. Друзья, с праздником лета вас!

6376

Быль о призрачном бэкапе

3 июня 2011, 08:00

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

Дело было в конце 90-х. Я учился в школе, и у меня уже проявлялся интерес к компьютерам. Каким-то неведомым мне образом мама выкупила у соседей древнющий «Нейрон»: IBM-совместимый компьютер красной сборки с советским клоном процессора 8086, который уже тогда, во времена первых «пентиумов» и маячивших на горизонте модных вторых, выглядел дичайшим антиквариатом. Учитывая, что ничего лучшего мы с братом, живущие с безработной матерью-одиночкой на пособие, получить всё равно не могли, я был рад и этому.

Машина была зверем. Один мегагерц тактовой частоты, мегабайт оперативной памяти (больше реальный режим 86-го всё равно не видел), два пятидюймовых дисковода на 360 КБ каждый (стандартные дискетки на 1,2 МБ не принимались), монохромный монитор, отсутствующий жёсткий диск. На последнее обстоятельство я обращаю особое внимание. Загрузка проходила с системного флопа с DOS 3.2 в первом дисководе; во второй вставлялась дискета с программами или играми.

В наследство от прежнего владельца остался целый ворох мягких дискеток с разными игрушками — по большей части фуфловыми, но находились и интересные. Особенно мне нравилась игра Defender of the Crown — простенькая стратежка на тему феодальных войн в средневековой Англии: осада замков, рыцарские турниры, все дела. Я много играл в неё и неслабо преуспел, но потом дискету потерял.

Сидим мы как-то у меня дома с другом, который уже тогда имел хороший компьютерный опыт и вполне современного кремниевого друга дома. Включаю компьютер, жду загрузки, привычным движением в «Волкове» нажимаю Alt+F2 — и вдруг замираю в полном офигении. В менюшке выбора я вижу три опции: A:, B: и C:. Глаза медленно наползают на лоб, руки замирают неподвижно над клавиатурой, в мозгу напряжённая мыслительная деятельность. Это как? Жёсткого диска, напоминаю, тут отродясь не водилось. Боязливо озираюсь по сторонам и вижу такие же ошалевшие глаза друга. Двигаю курсором в менюшке — комп повинуется. Некоторое время собираюсь с духом и таки перехожу на необъяснимый диск.

То, что предстало перед моим взором в панельке «Волкова», заставило меня подскочить в кресле. На диске C: находились файлы той самой утерянной игрушки: doc.exe на своём месте между столь же узнаваемыми файлами ресурсов. Поняв, что искать рациональное объяснение происходящего бессмысленно, беру ненужную дискету, вставляю её в дисковод B:, форматирую и сливаю файлы с диска C:. Побоявшись запускаться непосредственно с C:, решаю перезагрузиться. Гружусь, открываю панель выбора диска — как и прежде, два дисковода на своих законных местах. Перехожу на дискетку — всё на месте. Игра работает.

До сих пор, когда в памяти всплывает тот эпизод, единственное, что удерживает меня от подозрений в собственной невменяемости, это наличие свидетеля. Благо друг ближайший, с которым мы многое прошли и постоянно плотно общаемся. Неоднократно мы вспоминали тот случай, дружно хохоча, а я в это время тайком отмечал про себя: «Он это тоже помнит, значит, случай — не плод моего воображения». Но главный вопрос для меня так и остаётся неразрешённым: что это было?