Предыдущая глава |
↓ Содержание ↓
↑ Свернуть ↑
| Следующая глава |
— Или это держат в секрете?
— Это глупости, про секрет. Точнее, да, протоколы бесед с ним засекречены. Но там не больше полезной информации, чем в открытом доступе.
— А мы-то вам зачем? — не успокаивалась Алиса.
— Я же говорю. Я хочу, чтобы вы проникли в прошлое и помогли мне выследить Сапрыкина. Откуда он взялся, чего хочет и чего может.
— Но ведь даже боги не могут проникнуть в прошлое!
— Неправда. Боги не могут менять прошлое. А проникнуть туда может, практически, кто угодно. Например, вы только что это делали. Правда, Ерема, скорее всего в воображаемое прошлое
— Но что мы там можем сделать, если ничего не можем изменить?
— Как что? Принести информацию!
— Про атом, одетый на магнитное поле? — не удержался Джереми.
— Да нет, что-нибудь по делу. Хотя, конечно, забавно будет, если именно твоя фраза про атом окажется недостающим куском головоломки.
— А почему вы сами не можете туда проникнуть?
— Резонный вопрос. Доступная мне техника страдает рядом ограничений. Нужна фиксированная точка. Без нее нельзя контролировать, куда и когда именно попадет тот, кто, собственно, проникает. И вы не справитесь с ролью этой фиксированной точки. Проще всего получится закидывать вас и следить за вами, чтобы выдернуть, если что-то пойдет не так.
— А зачем выдергивать?
— Ну, вы можете попасть в какое-то неприятное место. В пожар, в планетотрясение В зону военных действий. Вас самих убить не могут, но глядеть, как вокруг вас гибнут люди
— Но как мы будем туда проникать?
— Так же, как сейчас. Во сне. Видите, я довольно мало у вас прошу. Вы не только ничем не рискуете, вы не потратите ни секунды времени бодрствования. И даже высыпаться будете, как обычно. С физиологической точки зрения, это будет совершенно нормальный быстрый сон.
— А как для нас будет выглядеть это самое прошлое?
— В зависимости от того, как именно я вас отправлю. Фактически, в зависимости от моего понимания, как вы получите больше информации. Скорее всего, вы будете бесплотными свидетелями событий. Или, иногда, вы будете оказываться в чьем-то теле. Как сейчас Джереми в теле того человека, который ехал из Барнаула в Новосибирск. Вы, к сожалению, не получите полного доступа к его мыслям и воспоминаниям. Только к тому, что он думает и делает в данный момент. Кстати, если вы не против, можно попробовать. Собственно, я и решил пойти этим путем, потому что другими доступными мне методами я зашел в тупик. И вы меня можете из него вывести.
— Каким образом?
— Ну, я кого-то из вас отправлю в тело администратора, который следил за кластером, на котором... короче, через который эта штука, в конечном итоге, оказалась на том компьютере. Я смог обычными методами проследить ее путь довольно далеко, но теперь мне нужно понять, откуда она попала в этот кластер. А информация об этом находится в логах, которые были стерты еще до вашего рождения. А тот человек, в которого я вас отправлю, мог что-то заметить.
— Звучит довольно скучно, — сказал Джереми.
— Я бы, на вашем месте, опасался как раз тех заданий, где будет не скучно. Ну и я же предлагаю это, фактически, для разминки. Нужно же начать с чего-то простого.
— Ну, — пожал плечами Джереми. — Давайте попробуем.
Ничего похожего на засыпание он не почувствовал. Поляна и голубое небо куда-то исчезли. Он сидел в темной комнате, освещенной только тридцатидюймовым изогнутым дисплеем. На дисплее была открыт какой-то текст. Джереми начал этот текст читать — или, видимо, его читал обладатель тела, в котором Джереми оказался.
Текст был не сначала, и он был про какого-то мужика, вооруженного автоматом в одной руке и монтировкой в другой, и этот мужик пробивался через полчища врагов, кося их направо и налево. Потом, поразив последнего врага монтировкой по голове, герой поставил ногу ему на грудь, взмахнул автоматом и закричал: "Во славу герцога Чуйского!". Следующая мысль принадлежала владельцу тела, потому что Джереми она вряд ли пришла бы в голову. Владелец тела подумал: "этот идиот, похоже, путает Темные века со Средними!". Джереми вряд ли такое мог подумать, потому что он не очень хорошо разбирался в древней истории, и сам-то, если честно, не видел большой разницы.
Владелец тела, возмущенно фыркнув, переключил закладку. Там были какие-то графики, круговые диаграммы и значки, все зеленые. Владелец ткнул в один из значков. Открылась простыня текста, на этот раз на нечеловеческом языке, с кавычками и фигурными скобками. Взгляд владельца тела скользил по строчкам, почти ни за что не зацепляясь, и он быстро проматывал экран за экраном, прежде чем Джереми успевал что-то понять. Он успел разглядеть строчку {"authorization.k8s.io/decision":"allow","authorization.k8s.io/reason":"RBAC: allowed by ClusterRoleBinding "view-heapster-bind" of ClusterRole "view-heapster" to ServiceAccount "heapster/kube-system""}, но она ему сказала не больше, чем фраза про ядерный магнитный резонанс из предыдущего сна.
Потом владелец тела пожал плечами и вернулся к закладке с историей про вассала герцога Чуйского.
Джереми снова очутился на поляне рядом с Алисой и незнакомцем.
— Я не знаю, — сказал он. — я ничего не понял. Кто-то где-то авторизовался...
— Да, так ничего не получится. Этот балбес ничего не заметил, а ты этот джейсон с нужной скоростью читать не сможешь. Тем более, не понимая, что ты там пытаешься вычитать. Ладно. Я не хотел с этого начинать, и надеялся вообще без этого обойтись. Давай вот что попробуем.
В руке незнакомца появилась карта памяти, похожая на ту, которую они с Алисой таскали в аркологии.
— Сейчас у тебя будет задание посложнее. Ты попадешь в тот же момент, но, когда он начнет переключать закладки, тебе надо будет вмешаться. Надо будет вставить эту карточку... В общем, тут доверься его телу, оно знает, что с ней делать. Потом надо будет его руками понажимать alt-tab, пока не попадешь на окно терминала. Там надо будет написать...
Незнакомец взмахнул рукой, и в воздухе появилось что-то, похожее на окно терминала, с таким же шрифтом, как было на компьютере в аркологии. И этим шрифтом было написано:
kubectl logs -n kube-system api-server<TAB> > /media/$USER/dream/api.log
umount /media/$USER/dream
— Понял логику, хакер? А то просто наизусть ты не запомнишь.
— Вроде, понял, — сказал Джереми. — Вывод кубкатл переназначить в файл на носителе dream, автосмонтированном из-под текущего пользователя. Потом размонтировать dream. А что означает <TAB>?
— Автодополнение. Ты не запомнишь, как под точно называется, да и я сейчас не определю. Но название начинается с api-server.
— Понятно.
— Потом достанешь карточку, и я тебя выдерну.
— Но это же изменение прошлого!
— Не совсем. Карточка и команды тебе будут сниться. Но данные на нее реально попадут. Во всяком случае, я надеюсь. Конечно, будет обидно, если окажется, что я или мы с тобой эти данные приснили. Но, не попробовав, мы это не узнаем.
— А как именно мне вставить карточку?
— Так же, как ты сам бы это делал. Не думай, что ты во сне, просто сделай это. И его тело сделает то, что нужно. Ну что, готов? Если не получится, можно будет сделать вторую попытку.
Джереми прислушался к внутренним ощущениям.
— Не знаю. Наверное.
— Ну, поехали.
Джереми снова оказался в той же кресле перед монитором. Он попытался выполнить инструкцию и действительно почувствовал в руке карту. Тело человека в кресле наклонилось, протянуло руку и что-то сделало с системным блоком под столом. Когда оно выпрямилось, Джереми протянул руку к клавиатуре. Тело само нашло комбинацию Alt-tab. Кроме браузера и нескольких окон терминала в списке ничего не было. Так же послушно тело набрало все нужные команды. Kubectl работал довольно долго, больше пары десятков секунд.
Когда Джереми снова оказался на поляне, незнакомец уже держал в руках раскрытый ноутбук. Он бережно взял карту из рук Джереми и вставил в свое устройство. Одного взгляда на экран оказалось ему достаточно, чтобы кивнуть головой. Видимо, файл и правда оказался на карте. Но потом незнакомец задумался, а еще потом махнул свободной рукой:
— А, собственно, что я мучаюсь? Я же точно так же могу приснить другой комп, сразу со всем софтом!
Он достал карту, взмахнул рукой, и ноутбук исчез. Потом он взмахнул еще раз, и компьютер появился снова, на вид точно такой же.
Незнакомец потыкал пальцем в трекпад, потом вдруг сел по-турецки, положил компьютер на лодыжки, а обе руки — на клавиатуру. Некоторое время он вглядывался в экран, потом щелкнул пальцами:
— Вот он, красавец! Мораль: не занимайтесь посторонней хренью на рабочем месте. Классический XSS с сайта, где он книжку читал.
— Экс Эс Эс? — переспросила Алиса.
— Кросс-сайт скриптинг. Ну что, теперь дело за тем, чтобы проверить это по объективным данным. Зная, откуда он пришел, это уже несложно, хотя и прошло много времени. Если подтвердится, успех операции превзошел все ожидания.
— А если не подтвердится?
— Значит, надо будет придумать что-то еще.
— А мы еще нужны? — спросила Алиса.
— Сегодня? Наверное, нет. Так вы согласны мне помочь?
— Придумать что-то еще? — уточнила Алиса.
— Может и придумать, но для начала в таких вот операциях.
— А может, вы нам покажете более широкий контекст? — спросил Джереми. — Что, вообще, по-вашему, происходит, чего они хотят, что вы можете сделать?
— В том-то и проблема, что я сам не очень-то понимаю, что происходит. Я могу показать, с чего все началось. Но, наверное, не сейчас. Я вам обещал, что вы будете нормально высыпаться.
Глава 3. Путешествие второе. Начало.
В этот раз никакого Барнаула Джереми не снилось. Сон начался как-то с середины. Джереми или, точнее, тот, чьими глазами он видел сцену сидел в офисном кресле перед столом. За столом сидел благообразный дяденька с окладистой бородой и в костюме. Костюм был какой-то не офисный, слегка помятый и измазанный мелом, так что дяденька был похож на университетского преподавателя.
— У вас интересное резюме, — говорил дяденька. — Можно его так прочитать, что вы приходите в контору, а потом она разваливается.
— Ну, разваливается через пять-десять лет после моего прихода, — довольно равнодушным тоном отвечал тот, в чьей голове сидел Джереми. — Скорее, просто я склонен сидеть на одном месте дольше, чем следовало бы.
— Но при этом разнообразный набор занятий и технологий. Сисадмин, девопс, высоконагруженные сервисы...
— В детстве мне ставили диагноз ADHD. Возможно, это до сих пор проявляется. Мне часто хочется чего-то нового.
— Но вам интереснее новые занятия и технологии, чем новые люди?
— Пожалуй, что так. Это плохой ответ?
— Для нас нет. Как вы относитесь к задачкам на собеседовании?
— Нормально.
— Вот задача. Есть линейный список, возможно содержащий цикл. Необходимо за линейное время сказать, есть ли цикл, используя при этом константный объем памяти.
— Линейное от размера списка?
— Да. Знаете эту задачу?
— Нет. Я бы начал с того, что сделал мапу по элементам... А, подождите, это будет логарифм, и память не константная.
— Верно. А если подумать?
— А если... нет, так не получится.
— Ну расскажите уж, что придумали.
— Не буду, это не будет работать.
— Ну, давайте порассуждаем. Чем список с циклом отличается от списка без цикла?
— У него нет конца Но это бесполезно, мы это можем выяснить только за бесконечное время.
— Верно. Еще варианты?
— У него есть элемент, на который указывают две ссылки. Но обнаружить это, не запоминая все ссылки...
— Ну, тоже разумно. Еще?
— Там есть цикл. О! Кажется, понял.
— Что вы поняли?
— Нужно запустить два указателя, один вдвое медленнее другого. Если есть цикл, они встретятся. Дважды линейно — это линейно. И память константная, как вы просили. Мне кажется, вдвое это оптимально, но, честно говоря, лень это доказывать. Или надо?
— Не надо. Скажем так, резонно. Можете это написать?
— На каком языке7
— По вашему выбору.
— Питон подойдет?
— А почему... Впрочем, это неважно. Давайте на питоне.
— На бумаге?
— Это проблема?
— Пожалуй, да. Я часто начинаю писать программу с середины, а тогда она не влезет на бумагу. А впрочем Мне же все равно типы объявлять. Давайте на бумаге.
— Вы можете комментировать, что пишете?
— Не проблема. Класс ListNode, без конструктора, два поля, Payload типа Any и Next Optional от ListNode. По уму это должен быть темплейт, но лень. Я надеюсь, логику создания списка писать не надо?
— Нет.
— Окей. def HasLoop от Optional от Listnode, возвращает булеан. Заводим два указателя, обоим присваиваем параметр, и счетчик, равный нулю.
— Зачем счетчик?
— Сейчас покажу. Итак, основной цикл. Пока первый указатель не равен нулю, перейти к следующему. Если счетчик ноль, приравнять его единице. Если счетчик один, сравнить указуемые объекты. Если они один и тот же, возвращаем true. Иначе, продвигаем второй указатель и приравниваем счетчик нулю. Вроде, все. А, еще, если выпали из цикла, надо вернуть false.
— Разве это счетчик?
— Однобитовый счетчик. Это проблема?
— Наверное, нет. Хорошо, мы обдумаем. У вас есть какие-то вопросы?
— Да. Мне что-то странное рассказали про вашу бизнес-модель. Вы берете проекты ниже рынка, а платите выше рынка. В чем подвох?
— Я не думаю, что это подвох. Мы не обычная аутсорсинговая компания. Мы проводим исследование.
— Исследование чего?
— Вас.
— С какой целью?
— Резонный вопрос. Начну издалека. Не сочтите за грубую лесть, но информационные технологии — это самая массовая профессия, которой занимаются люди с действительно высоким интеллектом. Шахматные гроссмейстеры, теоретическая физика, пилоты гиперпривода — это все люди, скажем так, штучные.
— Пилотов гиперпривода в Известном Космосе, насколько я знаю, большие десятки тысяч.
— А программистов миллионы.
— Но не все из них обладают действительно высоким интеллектом.
— Это правда. На это и тесты.
— С поиском цикла в списке?
— Не только. Вы ведь заполняли стандартный тест на IQ при подаче резюме.
— Я не думаю, что IQ — хорошая метрика интеллекта.
— Для обладателя IQ 170 это звучит довольно скромно. Но вы правы, метрика не очень хорошая, зато дешевая. По сути, наша компания — это попытка создать более точную метрику.
— Извините, не выглядит как хороший бизнес-план.
— А я ведь и говорил, что наша цель не бизнес. Мы собираемся отбирать людей для исследования.
— Исследования чего?
— Высокого интеллекта. На самом деле, вы ведь знаете, что и у человеческих пилотов гиперпривода, и у арахноидских навигаторов, IQ выше среднего по виду. Но отбор там идет не по интеллекту как таковому, а по способности к предзнанию. И рлаши...
— Злотников говорил...
— То, что говори Злотников, засекречено, а популярные мифы... Тем не менее, да, популярна теория, что предзнание связано с высоким интеллектом. И под это подверстывают рассказы про сингулярность, Истинный Ансибль и Злотникова.
Предыдущая глава |
↓ Содержание ↓
↑ Свернуть ↑
| Следующая глава |