Чтение онлайн

ЖАНРЫ

НОСТАЛЬГИЧЕСКИЙ ДЕТЕКТИВ
Шрифт:

– Здравствуйте! Я - инспектор криминальной полиции Калныня, мы ищем господина Валерия Сотникова. Со мной вместе наш эксперт по компьютерной части – господин Корецкий.

– Здравствуйте! Я – Валерий Сотников, администратор DB-LRE. Эрик мне звонил, что двое из полиции зайдут ко мне в офис. В чём же мы провинились перед органами правосудия? Я тут играюсь, тестирую одну занятную программку, мне её Борька оставил, когда уезжал домой. Борька Розин – это наш контрактник из Америки, он тут у нас раньше руководил разработкой проекта. Мы с ним дружили. Ну, раз уж вы пришли – проходите, будьте как дома. Я свои дела пока отложу, поработаем вместе, во всем разберёмся. Эрик мне сказал, что вы хотите какой-то потерянный контракт найти. Всё найдём, надёжность у нас самая высокая – система прошла тяжёлую опытную эксплуатацию, отработала отлично во всех режимах и запросах. Только одна проблема осталась: данные поступают факсом или мылом, а поэтому требуют ручного ввода. Такой ввод не может на 100% обеспечить защиту от ошибок оператора. Автоматизация ввода полностью защитит нас от ошибок. Жаль бабки этого года уже закончились, осталось ещё полгода продержаться, а потом мы обязательно купим в Штатах программу форматирования электронных сообщений в записи входа. Борька обещал купить и выслать нам софт, как только у нас деньги появятся. Что делать то нужно, господа? Какой у вас план? Какой контракт следует искать?

Тут Зита произвела царственный жест, позволяющий мне перехватить инициативу. Я объявил исходные данные поиска:

– В Земельной книге города Юрмалы контракт зарегистрирован под номером #AC-14397-2002 от 23 мая текущего года, продавец – Франц Ковальский, покупатель – Юрис Фридманис. Агент по продаже – Ивар Пирагс. Попытайся найти такую запись. Если допустить, что произошла ошибка оператора при вводе, то, скорее всего, ошибка могла случиться всего в одном поле данных, верно коллега?

Сотников открыл экран запросов и стал поочерёдно задавать своей системе варианты поиска по номеру контракта, по данным продавца, по фамилии покупателя и по фамилии агента. Безрезультатно! Запись с такими данными в DB-LRE отсутствовала.

– Валера, а сейчас введи только дату. Может быть, у вас информация за целый день потерялась…

– Нет, записей за 23 мая навалом, всего 34 выскочило по запросу.

– Значит, информация за весь день не пропала. Повтори теперь все предыдущие запросы, не задавая дату и только по части фамилии, например «Коваль», «Фрид».

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

– Нас интересуют только завершённые контракты. Давай, переходи на экран просмотра входного массива. Ищи фамилию «Ковальский».

– Вот она родная! Нашлась запись!

На экране, действительно, появилась форматированная строка:

| # AC – 14397-2002| 23.05.2002| Жилой дом, два этажа, участок 20 акров |Кемери, ул. Сатеклес, 67|Ковальский, Франц|Фридманис, Юрис|Пирагс Ивар |.

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

– В этот день не зарегистрировано ни одной ошибки…

– Выхода нет – придётся восстанавливать копии базы на магнитной ленте. В вашем компе хватит памяти, чтобы в тестовой среде восстановить базу данных в полном объёме?

– Обижаешь, коллега! У нас, как в Греции, всего хватает и памяти тоже достаточно.

– Мы с инспектором Калныня отправимся перекусить, теперь время обеда, а ты, пожалуйста, восстанови копию базы за 24 мая. Я думаю, что у тебя это займёт минут двадцать.

Когда мы вернулись, Валера Сотников легко и сразу нашёл злосчастную запись в восстановленной копии. Я решил подвести итог:

Коллеги, наша задачка теперь формулируется следующим образом:

Входное сообщение по контракту поступило и обработано без ошибок.

Запись о контракте нашлась в накопителе входных данных.

Запись также присутствует в копии базы на магнитной ленте, снятой 24 мая, но отсутствует во всех следующих поколениях.

Другие записи за 23 мая не пропали, что исключает вариант полной потери информации за день.

В системе не предусмотрены режимы прямого удаления и корректировки записей пользователем с экрана. Корректировка осуществляется только повторным вводом исправленных данных.

В задаче спрашивается: как потерять запись, если она была обработана без ошибок и 24 мая ещё существовала в DB-LRE?

И тут до меня дошло, я нашёл возможный вариант решения:

– Скажи, пожалуйста, Валерий, что это за программа, с которой ты игрался в начале дня, когда мы с Зитой пришли и сломали тебе весь кайф?

– Боря мне оставил программу, которую в США применяют, чтобы искусственно запортить информацию. Рядовые пользователи и программисты, работающие в тестовой среде, не должны знать секреты клиентов. Я имею в виду: точный адрес, сумму денег на счету, пароли и т.д. Такая защита нужна в финансовых системах, а нам зачем – наша база не секретная вовсе.

– На счёт вашей базы ты как раз ошибаешься, Валерий. Она должна стать секретной, если подходить к этому делу профессионально. А технология искажения информации, о которой ты говоришь, называется «data scrambling». И вам придётся тоже применять эту технологию, жизнь вас заставит. Что умеет делать Борина программа?

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

– Валера, а ты знаешь, как пользоваться функциями поиска по кусочкам полей? Давай повторим все прошлые запросы, но только двигаясь по кусочкам, заменяя буквы специальными значками.

В течение часа мы всё-таки отловили проклятую запись в сильно искажённом виде. Злоумышленник применил самый простой алгоритм – заменил первый и последний знаки в каждом поле на первый и последний знак соседнего поля:

| #2 C – 14397-2002| Ж3.05.200р | Килой дом, два этажа, участок 20 акро7 | Жемери, ул. Сатеклес, 6в| Фовальский, Франс| Придманис, Юрир| Фирагс, Ивас|.

Сотников, прощаясь, сказал:

– А ты серьёзно волокёшь в нашем деле, коллега! У вас в криминальной полиции все программисты такие?

– Про всех не знаю – я совсем недавно работаю в криминальной полиции, но один очень крутой у нас есть, его Михаилом Веткиным зовут…

Поздно вечером мы с Софийкой собрались выгуливать Грифа в Межапарке. Умный пёс ещё несколько дней назад уловил существенную разницу для него в новом выгульном сервисе. Занятые своими делами хозяева дома на скорую руку запрягали его в ошейник и протаскивали бедное животное в быстром темпе по нескольким кварталам своей улицы. Мы – отдыхающие, медленно и аккуратно надеваем псу ошейник, а потом, никуда не спеша, долго бродим вместе с Грифом по дорожкам лесопарка. Теперь пудель утром и вечером всегда ошивается около двери комнаты для гостей, всем своим видом давая понять хозяевам, что он больше не хочет беспокоить своих хозяев - важных господ. Для выполнения утомительной для Голдиных процедуры теперь, неизвестно откуда, появились рядовые исполнители, которые вследствие их низкого положения в доме гуляют по лесу до тех пор, пока это требуется самому Грифу.

Поделиться с друзьями: