К книге
Наследник $$$ уровня 6Глава 5
24%
Глава 5
5

— Рост значительный, но мы всё ещё отстаём от Семвика, — отчитывался Матео. Правда, пораженческих ноток в его голосе уже не было. Наоборот, глаза у парня светились азартом, хотя под ними залегли две заметные синие тени. — Вида — два миллиона. Семвик уже почти четыре. Но есть ощущение, что мы вышли на плато. Рост начал замедляться. Вчера было всего пятьдесят с небольшим тысяч регистраций, а у Семвика почти втрое больше.

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

— Это как раз логично, учитывая, что мы пока почти не вкладываемся в продвижение, — успокоил я своего программиста. — Семвик сначала прошёлся по верхам, собрал внимание, а теперь нашёл рабочие каналы трафика. Они покупают рост. Мы пока в основном растём сами.

Матео слабо кивнул в подтверждение и зевнул.

— Значит, мы тоже будем использовать рекламу? Что планируется, босс? — он подался вперёд, но уже через секунду перескочил на другую тему. — И где Ева? Когда она вернётся?

— Скоро, Ромео, скоро, — отмахнулся я.

Матео замер и подозрительно прищурился.

— Я Матео, босс. Всё в порядке?

Ещё немного, и температуру мне проверит.

— Забудь, — вздохнул я. — Как Эстелла, летит?

— Да, скоро будет здесь, — ответил он и сразу немного погрустнел.

Перемена произошла слишком резко, чтобы её не заметить. Я отложил бумаги и внимательнее посмотрел на парня.

— Ты выглядишь усталым. Что-то случилось?

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

Картина была куда банальнее. Новая девушка, резко изменившийся распорядок жизни, хронический недосып. Всё это по глупости юности Матео щедро заливал кофеином, пытаясь выиграть у организма ещё несколько часов бодрствования. Теперь нервная система закономерно начинала протестовать. Отсюда и дёрганность, скачки настроения, рассеянность и проблемы с концентрацией.

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

— Ева обещала, что снимет для мамы квартиру, — наконец объяснил Матео. — Вот я и хотел узнать, когда она вернётся. Иначе мама остановится у нас с Беллой. А места там и без этого немного.

— Ну да, ну да, — многозначительно протянул я. — Для трёх женщин места действительно может оказаться мало.

Парень резко вскинул голову.

— Откуда вы знаете?

— Я ничего не знаю, просто догадался, — рассмеялся я. — Она уже живёт у тебя?

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

Вот это скорость.

— Довольно быстрое развитие событий, не находишь?

Я сказал это максимально спокойно, без осуждения, но парень всё равно насторожился.

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

О юность. О прекрасная пора, когда каждое сильное чувство кажется вечным, а решение, принятое вечером, утром уже представляется планом на всю жизнь.

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

— Вы про брак? — заинтересовался Матео.

— Скорее в целом про женщин, — слегка скривился я.

Он сразу уловил интонацию.

— К чему вы клоните?

Глупым Матео точно не был. Наивным, неопытным, местами совершенно безрассудным, но не глупым.

— Останется ли твоя девушка рядом, если ты потеряешь работу, статус и деньги?

Матео замолчал. На этот раз задумался всерьёз, даже нога перестала дёргаться.

— Вероятнее всего, нет, — наконец признал он. Потом нахмурился ещё сильнее. — Вы думаете, она рядом со мной из-за денег?

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

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

— Думаете, если я ошибусь и останусь ни с чем, Майра меня бросит? — тяжело спросил Матео.

— А ты сам как думаешь?

Он снова задумался.

— Думаю, бросит, — вздохнул парень.

Я уже собирался развить мысль, но Матео вдруг просиял.

— Значит, надо просто не ошибаться. И тогда всё будет отлично!

Я медленно прикрыл лицо ладонью.

Совсем забыл, с кем разговариваю.

Ему семнадцать лет. Он почти ничего не знает о мире, женским вниманием до недавнего времени избалован не был, рос без отца, а максимализма в нём хватило бы на троих взрослых мужчин. В его представлении проблема, которую можно решить упорством, вообще переставала быть проблемой.

Впрочем, я сам когда-то страдал примерно тем же. Особенно после первых серьёзных денег. Как там звучала любимая мудрость тех лет? Не надо меньше тратить, надо больше зарабатывать. И прочая чушь, которая кажется невероятно умной ровно до первого настоящего удара.

— Давай лучше о деле, — решил я спасти нас обоих. — Как работает сбор информации по сайтам?

— Паучок? — Матео мгновенно переключился. — Работы ещё много.

— Сколько уже проиндексировали страниц? Я просто думаю, что мы сейчас говорим о разных вещах.

— Он работает примерно неделю. Уже двадцать с лишним миллионов страниц, — Матео почесал затылок и даже прикрыл глаза, вспоминая последнюю цифру. — А Лунтик, кстати, отлынивает от работы.

— В каком смысле?

— Он поисковик решил сам написать.

У меня буквально сердце на мгновение замерло.

Пальцы остановились на листе, который я только что собирался перевернуть.

— Что?

Матео сразу насторожился.

— Ну… Задача ведь была индексировать сеть?

— Была.

— Он её индексирует, — быстро сказал парень, видимо поняв, что никто пока никого бить не собирается. — Просто одновременно пишет поисковик.

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

Уточнения не последовало.

— Я ему не поручал писать поисковик.

— Я знаю.

— Ты поручил?

— Нет.

— Кто поручил?

Матео пожал плечами.

— Думаю, он сам себе поручил. Ему, видите ли, скучно.

Разговор становился всё интереснее.

— Подожди здесь.

Я поднялся, вышел из кабинета и почти бегом направился по коридору в сторону штаба программистов. Рабочий день был в самом разгаре. За стеклянными перегородками мелькали сотрудники, где-то звонил телефон, по коридору прошли двое строителей с карточками пропусками на груди, усыпанные инструментом, как витрины магазина. Я обогнул их, толкнул дверь технического отдела и вошёл внутрь.

Штаб программистов выглядел привычно. Мониторы, кружки, провода, стопки распечаток, пустые бутылки воды и люди, давно переставшие замечать происходящее вокруг. Лунтик сидел на своём месте, уткнувшись сразу в два экрана.

Я подошёл сзади и остановился практически у него за спиной.

Никакой реакции.

Хотя нет.

— Сеньор Виктор, что-то хотели? — буднично спросил Игнасио, не оборачиваясь.

Я нахмурился.

— Как ты узнал, что это я?

Подходил я со спины. Увидеть меня он никак не мог.

Игнасио наконец крутанулся на стуле и посмотрел на меня так, словно вопрос был довольно странным.

— Я слышал шаги, но не чувствовал запаха.

— Не понял, — честно признался я.

— Все чем-то пахнут, а вы почти нет, — терпеливо пояснил он и махнул рукой в сторону остальных столов. — Рубен перебарщивает с одеколоном. Ева пахнет клубникой. Мария пахнет кожей автомобильного салона и чернилами. А вы иногда сигаретами, но сигаретами пахнут почти все вышеперечисленные, поэтому сразу идентифицировать вас по запаху невозможно. Точнее, именно невозможность идентифицировать вас обычным способом и позволяет идентифицировать вас. Так понятнее?

Он несколько раз хлопнул ресницами.

— Намно-о-ого, — протянул я.

Иронии Лунтик не заметил. Продолжал смотреть на меня с выражением человека, которого отвлекли от умирающего родственника ради разговора о погоде.

Я кашлянул.

Игнасио тут же открыл ящик стола, достал одноразовую медицинскую маску и совершенно спокойно натянул её на лицо.

Я решил не спрашивать.

— Как там… каталог?

— Двадцать три миллиона четыреста тысяч страниц.

Я моргнул.

Игнасио бросил взгляд на монитор.

— Двадцать три миллиона четыреста восемьдесят две тысячи. Но часть сейчас уйдёт как дубли. Чистыми останется около двадцати двух с половиной миллионов.

— Понятно.

Я кивнул с таким видом, словно именно эту цифру и ожидал услышать.

— А ты чем занимаешься?

— Поиском.

Я снова кивнул.

Очень медленно.

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

— Поиском чего?

Игнасио посмотрел на меня с лёгким недоумением.

— Страниц.

— А.

Я подтянул свободный стул и сел рядом.

— Матео почему-то решил, что ты пишешь поисковик.

— Пишу.

Вот и поговорили.

— Игнасио, — начал я ещё осторожнее. — Мы договаривались собрать каталог сети.

— Да.

— Семь дней назад.

— Да.

— Поисковик я тебе писать не поручал.

— Нет.

Он соглашался настолько спокойно и последовательно, что я на несколько секунд потерял нить собственного допроса.

— Тогда почему ты его пишешь?

Лунтик посмотрел сначала на один монитор, потом на второй, словно правильный ответ действительно находился где-то между ними.

— А зачем ещё вам каталог? Вы сами сказали, что потом будете искать готовое ядро поиска на свободном рынке и загружать туда собранные страницы. Формулировка была расплывчатой. Я посмотрел существующие решения, ничего подходящего не нашёл. Идея показалась интересной.

Я открыл рот, но ничего не сказал.

Справедливо.

— Хорошо. На какой ты стадии?

Вот теперь Игнасио действительно оживился. Он развернул ко мне второй монитор и придвинул клавиатуру.

— Сам паук уже почти не требует моего внимания. Есть очередь адресов, проверка повторов, ограничения для мусорных узлов, журнал ошибок и повторные попытки для недоступных страниц. Из двадцати трёх миллионов примерно восемь миллионов я уже прогнал через обработчик.

— Что значит «обработчик»?

— Вынимаю из страницы всё полезное. Заголовок, основной текст, ссылки и подписи к ним. Разметку выбрасываю. Потом текст разбивается на слова, слова нормализуются и записываются отдельно.

Он открыл ещё одно окно. Передо мной возникли длинные столбцы цифр, адресов и отдельных слов.

— Это обратный индекс.

Я посмотрел на экран, потом на Лунтика.

— Мы опять дошли до слов, значение которых я должен угадывать по выражению твоего лица.

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

— Если просто хранить двадцать миллионов страниц, то при каждом запросе придётся заново искать по двадцати миллионам страниц. Это бессмысленно. Поэтому делаем наоборот. Вот слово «автомобиль».

Он быстро что-то набрал.

На экране появился огромный список номеров.

— Это документы, в которых оно встречается. Рядом хранится положение слова, количество повторений, наличие в названии страницы, заголовке и тексте ссылок. Пользователь вводит запрос, а система не читает весь интернет заново. Она сразу достаёт готовые списки и работает только с ними.

— Уже ищет?

— Пока по восьми миллионам обработанных страниц.

Я посмотрел на него.

— То есть я могу написать что-нибудь прямо сейчас?

— Можете.

Игнасио открыл совершенно пустую белую страницу. Посередине находилось единственное поле ввода и маленькая кнопка рядом.

Я набрал название одной из столичных газет и нажал ввод.

Ответ появился почти мгновенно.

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

Я перевёл взгляд на Игнасио.

— Работает.

— Плохо, — немедленно заключил Лунтик.

— За семь дней я бы позволил ему работать плохо.

— Я нет.

Разумеется.

Игнасио закрыл выдачу и снова вернулся к своим таблицам.

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

— И ты понял, что мне нужен PageRank?

Впервые за весь разговор он посмотрел на меня с неподдельным интересом.

— Я понял, зачем вы заставили нас сохранять все связи между страницами.

Игнасио взял карандаш, перевернул один из исписанных листов чистой стороной и нарисовал несколько кружков.

— Обычный текстовый поиск смотрит внутрь страницы. Ваш PageRank должен смотреть ещё и на сеть вокруг неё. Если на страницу ссылаются другие сайты, она получает вес. Если на неё ссылается страница, которая сама считается важной, вес ссылки должен быть выше.

Он начал соединять кружки стрелками.

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

— Сколько их?

— Сейчас больше шестидесяти миллионов уникальных адресов в очереди и около ста миллионов обнаруженных связей между страницами. Часть отсеется. Часть адресов окажется мёртвой. Но для первых экспериментов данных уже достаточно.

Я некоторое время смотрел на исписанный лист.

Семь дней.

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

— Допустим, ты всё это сделаешь. Что потом?

Игнасио отложил карандаш.

— Потом нужно решить, что именно вы хотите построить.

— Поисковик.

Он покачал головой.

— Это как сказать, что вы хотите автомобиль. Один автомобиль возит семью, другой сорок тонн груза. Формально и то и другое автомобиль, но строятся они совсем по-разному.

Я сделал приглашающий жест.

— Продолжай.

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

— А дальше?

— Дальше надо закончить индексатор, сделать нормальное ранжирование, посчитать ссылочный вес, научить систему лучше работать с формами слов и собрать всё так, чтобы индекс можно было постоянно обновлять, не останавливая поиск. Понадобится ещё резервное хранение и нормальное распределение нагрузки. Если один сервер упадёт, весь поиск падать не должен.

— Люди?

Игнасио задумался всего на несколько секунд.

— Если не отбирать их у Виды, ещё шесть человек.

— Почему именно шесть?

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

— Срок?

— Через два месяца можно открыть поиск для пользователей. Через три-четыре он перестанет выглядеть как студенческая работа.

Я поднял бровь.

— Для всей страны?

— Да.

Это звучало слишком легко.

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

Я немного подумал.

— А если я хочу весь мир?

Игнасио замолчал.

Потом медленно откинулся на спинку кресла.

— Вот тогда начинается веселье.

— Я так и думал.

Он снова придвинул к себе лист.

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

Я посмотрел на нарисованные кружочки.

— Если страниц в десять раз больше, значит работы тоже в десять раз больше?

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

— Почему?

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

— Сколько людей?

— Для первого мирового этапа двадцать пять-тридцать.

Я невольно поднял брови.

— Ты быстро вырос из шести человек.

— Вы быстро выросли из Валентии до всей планеты.

Туше.

— Это только программисты?

— Нет. Вся поисковая команда первого этапа. Ядро, индекс, пауки, ранжирование, инфраструктура. Потом понадобится больше. Если сервис станет популярным, появятся отдельные люди для борьбы со спамом. Отдельные команды для языков. Потом качество выдачи, новые типы документов, изображения, новости. Чем больше людей будут пытаться обмануть поиск, тем больше людей понадобится, чтобы им мешать.

— Серверы?

— Для Валентии хватит нескольких десятков хороших машин плюс отдельное хранение и резервирование. Для мира…

Он ненадолго замолчал, что-то прикидывая.

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

Вот теперь я начинал понимать, почему Матео решил меня предупредить.

— Срок?

— Валентия — два-три месяца до первого запуска. Мир — около шести месяцев, если нужен просто рабочий продукт. Год, если вы хотите сервис, которым мне самому не будет стыдно пользоваться.

— А после года?

— Будем улучшать его ещё лет десять.

Я невольно усмехнулся.

— Почему так долго?

Игнасио посмотрел на меня так, словно я только что задал самый странный вопрос за весь разговор.

— Потому что интернет за эти десять лет тоже не остановится, десять лет это просто чтобы умерить ваши ожидания, на самом деле процесс не имеет сроков как таковых.

Я некоторое время молчал, разглядывая его совершенно серьёзное лицо.

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

— Лунтик.

— Да?

— Ты молодец, — совершенно искренне сказал я.

И, забывшись, потрепал его по волосам.

Игнасио медленно повернул голову и посмотрел на меня как очень недовольный кот, которому только что нарушили личные границы.

Я убрал руку.

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

— Конечно.

Он тут же развернулся обратно к мониторам.

— Тогда мне нужны шесть человек.

Я усмехнулся.

— Ты их получишь.

Предыдущая главаГлава 5 из 21Следующая глава