Выбрать главу

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

\*{2}

Как дошёл я до жизни такой, спросите вы? Что ж, придётся начать издалека.

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

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

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

Как бы это попроще сформулировать? Ну, многие из вас, наверное, видели так называемые log-файлы отчётов, выглядящие как-то вот так:

127.0.0.1 – – [10/Jun/2009:10:00:00 +0000] "GET /example.html HTTP/1.1" 200 – "http://example.com" "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)"

Даже неискушённому пользователю может быть вполне очевидно, что здесь по какому-то сетевому адресу (в данном случае, локальному) в определённый момент времени происходит обращение к внешнему ресурсу с целью извлечения каких-то там данных с использованием определённого вида браузера и операционной системы. Так ведь? И подобные строчки, из которых можно выделить чёткую структуру, поддающуюся декомпозиции (разделению на отдельные смысловые структуры), могут повторяться в файле отчётов сколь угодно много раз. Технический специалист изучает их, извлекает полезную информацию и делает на её основе нужные выводы о работе конкретных программ, системы, действий пользователя и т.д.

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

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

полную версию книги