- -
- 100%
- +
Возвращение. Контрастный душ. Сначала горячая вода, расслабляющая мышцы. Потом – ледяная. Удар. Шок. Еще один способ заткнуть ее, если она пыталась вернуться. После душа я чувствовал себя так, будто меня собрали заново из новых деталей.
Завтрак. Всегда один и тот же. Гречка. Два вареных яйца. Большая кружка черного, горького кофе без сахара. Я ел медленно, сидя за пустым кухонным столом. Это было не наслаждение. Это была заправка. Я загружал в систему белки, углеводы и кофеин. Я смотрел в окно. Я не читал новости, не открывал соцсети. Мой телефон был инструментом, а не развлечением. Он лежал в комнате, на зарядке. Утром у него было свое время, у меня – свое.
«Ты превращаешься в робота, – шептала она, когда я мыл за собой тарелку. Ее голос был почти безразличным, констатирующим. – Ритуалы, правила, расписание. Где в этом жизнь, Новиков? Ты не живешь. Ты функционируешь. Выполняешь программу. И в конце дня просто выключаешься».
«Я и есть программа, – думал я в ответ. – И я сам себя пишу. Идет полный рефакторинг. Старые, неэффективные модули отправляются в утиль».
И потом начиналась работа. Восемь, десять, иногда двенадцать часов. С короткими перерывами, чтобы размять спину и залить в себя еще кофе. Мой стол был моим миром. Два монитора – два окна в единственную реальность, которая имела значение. Слева – окно с «Нексусом» и технической документацией. Мой штурман и моя карта. Справа – среда разработки. Мое поле боя.
Я писал код. Не так, как раньше. Не рывками. Не приступами вдохновения, сменяющимися неделями прокрастинации. Я писал его методично. Как каменщик, который кладет кирпич за кирпичом. Я брал одну маленькую задачу из плана, который мы составили с «Нексусом». Например, «Реализовать функцию валидации банковского счета». И я делал ее. Сначала писал тесты, которые заведомо проваливались. Красные буквы в консоли. FAILED. Это была постановка задачи. Потом я писал сам код, который заставлял эти тесты позеленеть. PASSED. Потом я делал рефакторинг, делая код чище, проще, эффективнее. И переходил к следующей задаче.
Красный. Зеленый. Рефакторинг. Этот цикл стал моей мантрой.
«Твой код – мусор, – пыталась вмешаться она, когда я надолго задумывался над какой-нибудь функцией. – Ты пишешь костыли. Любой нормальный программист сделал бы это в десять раз быстрее и в сто раз элегантнее. Когда это кто-нибудь увидит, тебя просто засмеют».
Раньше эти слова парализовали бы меня. Я бы начал сомневаться в каждой строке, удалять, переписывать, и в итоге бросил бы все в отчаянии. Но не теперь. Теперь у меня был ответ.
Я открывал окно с «Нексусом» и писал:
Проанализируй этот фрагмент кода на предмет эффективности и соответствия лучшим практикам.
И вставлял свою функцию. Через несколько секунд машина выдавала беспристрастный ответ. «Код функционально корректен. Для повышения читаемости можно вынести магическую константу 0.05 в отдельную переменную. Использование list comprehension вместо цикла for может незначительно повысить производительность на больших объемах данных».
Никаких «мусор». Никаких «костыли». Никаких «тебя засмеют». Просто сухой, технический анализ. Я вносил правки, предложенные машиной. И двигался дальше. Я использовал логику как щит против ее эмоций. Она была бессильна против фактов. Мой код работал. Тесты проходили. Архитектура выстраивалась. Кирпичик за кирпичиком.
Шли недели. Я потерял счет дням. Они слились в один длинный, бесконечный цикл. Бег-код-сон. Бег-код-сон. Я ни с кем не разговаривал, кроме «Нексуса». Я не выходил из дома никуда, кроме как на пробежку и раз в неделю в магазин за гречкой и яйцами. Моя комната стала похожа на каюту космического корабля в дальнем полете. Все на своих местах, все функционально. Ничего лишнего.
И я начал замечать изменения.
Однажды утром, во время пробежки, я понял, что мне не так больно. Легкие больше не горели, а работали, как кузнечные мехи. Ноги не были чугунными, а упругими, сильными. Я пробежал свои пять километров и не почувствовал желания умереть. Я почувствовал, что могу пробежать еще. И я пробежал. Шесть. На следующий день – семь.
В другой раз, стоя перед зеркалом после душа, я увидел, что темные круги под глазами стали меньше. Взгляд стал сфокусированным, жестким. Худоба перестала быть болезненной. На плечах и груди проступил рельеф мышц, о существовании которых я и не подозревал. Мое тело менялось. Оно адаптировалось. Оно становилось инструментом, оружием.
Но самое главное изменение было внутри. Мой разум стал острее. Я мог удерживать в голове все более сложные конструкции. Я перестал бояться ошибок. Ошибка – это не провал. Это просто информация. Это еще один тест, который FAILED. Значит, нужно исправить код и запустить его снова. Я перенес этот принцип с программирования на всю свою жизнь.
Сирена не умолкла. Она все еще была там. Она была частью моей операционной системы, старым ядром, которое нельзя было просто так удалить. Но ее голос изменился. Он потерял свою власть. Он стал фоновым шумом. Как гул холодильника на кухне. Ты его слышишь, только если специально прислушиваешься. А я был слишком занят, чтобы прислушиваться.
Ее атаки стали предсказуемыми. Когда я писал сложный код, она говорила, что я тупой. Когда я видел в окне смеющуюся пару, она говорила, что я навсегда останусь один. Когда я переводил деньги за квартиру, она говорила, что я скоро стану нищим. Это были все те же старые песни. Но я уже знал все слова. И они больше не ранили.
Ее голос тонул. Тонул в стуке моих кроссовок по асфальту. Тонул в яростном реве Skillet в наушниках. Тонул в щелчках моей механической клавиатуры. Тонул в бесстрастных ответах «Нексуса». Тонул в шуме моей новой жизни. Я не победил ее. Я просто сделал свою жизнь настолько громкой, что ее стало почти не слышно.
Однажды поздним вечером я закончил работу над первым большим модулем. Data Harvester. Он был готов. Весь покрыт тестами, с подробной документацией. Я сделал коммит в свой локальный Git-репозиторий. Сообщение было коротким: «feat: implement core functionality of Data Harvester module». Я откинулся на спинку кресла. На мониторе светились зеленые строчки. Сотни тестов. Все PASSED.
Я посмотрел на часы. Почти полночь. Пора было спать, чтобы в шесть утра снова взорвался будильник. Но я не чувствовал усталости. Я чувствовал странное, холодное удовлетворение. Я сделал это. Первый большой кусок «Аксиомы» был готов. Он существовал. Из ничего, из хаоса моих идей, из пустого файла, я создал нечто работающее. Сложное. Логичное.
«И кому это нужно? – прошелестела Сирена откуда-то из-под плинтуса сознания. Это была ее последняя, слабая попытка. – Ты потратил недели своей жизни на кусок кода, который никто никогда не увидит».
Я встал, подошел к окну и посмотрел на ночной город. Миллионы огней. Миллионы жизней, идущих своим чередом. Мир, которому действительно не было до меня никакого дела.
И я впервые подумал, что это не так уж и плохо.
«Мне нужно, – сказал я тихо, глядя на свое отражение в темном стекле. – Это нужно мне».
И в этот момент ее голос затих окончательно. Она не сдалась. Она просто поняла, что в этом споре у нее больше нет аргументов.
Призрак из прошлой жизни
Недельный запас топлива подходил к концу. Логика системы была неумолима: нулевой остаток гречки, последний пакет кофе, два яйца в картонном лотке, похожие на глаза вымершего животного. Ресурсы требовали пополнения. Это означало вылазку. Операцию по снабжению во враждебной, непредсказуемой среде. Я ненавидел эти вылазки. Они нарушали периметр, вносили в мой отлаженный цикл элемент случайности, который я не мог контролировать. Каждый поход в супермаркет был для меня деплоем сырого кода в продакшен – с замиранием сердца и ожиданием, что сейчас все рухнет.
Я выбрал самое безлюдное, по моим расчетам, время: середина буднего дня. Офисный планктон прикован к своим рабочим станциям, студенты на парах, мамы с детьми спят. Теоретически, пространство должно было быть почти стерильным. Я натянул капюшон, воткнул в уши наушники, но музыку включать не стал. Просто шумоизоляция. Создание приватного пространства в публичной сети. В руке – тряпичный рюкзак, пустой и легкий. Мой контейнер для ресурсов.
Супермаркет встретил меня гудением холодильников, писком сканеров на кассе и запахом хлорки, который тщетно пытался перебить сладковатый аромат выпечки. Флуоресцентные лампы на потолке лили ровный, мертвенный свет, в котором все цвета казались выцветшими, а лица людей – восковыми. Я двигался быстро, по заранее проложенному маршруту. Мой внутренний GPS вел меня от полки к полке с максимальной эффективностью. Гречка, овсянка, яйца, кофе. Список был зашит в памяти, я не нуждался в бумажных костылях. Каждый пункт – это API-запрос к стеллажу. GET /api/products/buckwheat. Статус: 200 OK. Товар добавлен в корзину. То есть, в рюкзак.
Я почти закончил. Оставался только кефир. Отдел молочной продукции. Холодный, пахнущий кисломолочной чистотой отсек в конце зала. Я уже протягивал руку к нужной бутылке, когда боковым зрением уловил движение. Что-то знакомое в силуэте, в том, как свет отразился от каштановых волос. Запрос на распознавание образа ушел в мой внутренний движок. И вернулся с результатом, который вызвал каскадный сбой всей системы.
Лена.
Она стояла в двух метрах от меня, спиной, и сосредоточенно изучала этикетку на баночке с йогуртом. На ней было простое серое пальто, на плече висела сумка. Она была абсолютно обычной. Не сияющим идолом с отфотошопленной страницы в соцсети. А настоящим, живым человеком, выбирающим йогурт в супермаркете. И от этой реальности удар был в тысячу раз сильнее.
Сердце пропустило такт, потом забилось с частотой перегруженного процессора, пытаясь обработать внезапный скачок напряжения. Дыхание застряло где-то в гортани. Мой отлаженный, аскетичный мир, моя крепость из ритуалов и кода, дал трещину. И в эту трещину хлынул весь хаос прошлого. Все стертые контакты, удаленные диалоги, заблокированные воспоминания – все это ломанулось обратно из архива, игнорируя любые файрволы.
Я замер, превратившись в статую с бутылкой кефира в руке. Моим единственным инстинктом было – не двигаться. Не дышать. Стать частью стеллажа. Слиться с фоном. Возможно, она меня не заметит. Возможно, она просто возьмет свой йогурт и уйдет.
Но она, словно почувствовав мой взгляд, обернулась.
Наши глаза встретились. Секунда. Может, меньше. Но в эту секунду уместился весь мой позор, все мои провалы, все ночи, проведенные за разглядыванием ее фотографий. Я увидел ее глаза. Они скользнули по моему лицу – по капюшону, по впалым щекам, по усталости, которая, наверное, была написана на мне, как лог-файл. В ее взгляде не было ничего. Ни узнавания, ни презрения, ни интереса. Пустота. Как будто она смотрела на полку с товаром, который ее не заинтересовал. Она просто перевела взгляд обратно на йогурты, сделала свой выбор и пошла в сторону касс.
Она не узнала меня. Или сделала вид. Второй вариант был еще хуже. Он означал, что я был распознан, классифицирован как «незначительный объект» и отброшен. Игнорировать – это активное действие. Это значит, ты существуешь, но твое существование решено считать нулевым.
Она прошла мимо. Легкий шлейф ее духов – что-то свежее, неуловимое – коснулся меня и тут же рассеялся в запахе хлорки. Я смотрел ей в спину. На ее уверенную походку. На то, как она достала из кармана телефон, что-то быстро набрала и улыбнулась экрану. Наверное, ответила кому-то. Тому парню. Тому, кто был за кадром.
И тут вернулась она. Сирена.
Она не шептала. Она не шипела. Она взорвалась в моей голове оглушительным, злорадным, торжествующим хохотом. Таким громким, что я физически пошатнулся, вцепившись пальцами в холодную полку, чтобы не упасть.
«А-ХА-ХА-ХА-ХА! НУ ЧТО, ВЫЖИВШИЙ?! ЧТО, БОЕЦ?! ПОСТРОИЛ СЕБЯ С НУЛЯ?! – ее голос гремел, как набат, сотрясая мой череп. – Ты видел?! ТЫ ВИДЕЛ ЭТО?! Она посмотрела на тебя, как на пустое место! Как на кусок грязи на полу! Вся твоя дисциплина, все твои пробежки, весь твой говнокод – все это превратилось в пыль в одну секунду! Пыль!»
Я стоял, вцепившись в эту бутылку кефира, как утопающий в обломок доски. Гудение холодильников слилось в один монотонный, сводящий с ума вой. Свет ламп стал невыносимо ярким. Мне казалось, что все в магазине смотрят на меня, видят, как я разваливаюсь на части.
«Ты думал, что-то изменилось? Думал, ты стал другим? – продолжала она свой триумфальный монолог, наслаждаясь каждым словом. – Ты нарастил пару килограммов мышц, чтобы прикрыть ими свою ничтожную душу? Какая жалкая попытка! Ты все тот же! Забитый, испуганный мальчик в дурацкой толстовке с капюшоном, который боится поднять глаза! Она даже не сочла тебя достойным того, чтобы скривить губы в презрительной усмешке! Ты для нее – просто шум. Помеха в эфире ее прекрасной, нормальной жизни!»
Я заставил себя разжать пальцы. Поставил кефир обратно на полку. Криво. Бутылка качнулась. Мне нужно было уйти. Немедленно. Выбраться из этого стерильного, освещенного ада. Я развернулся и пошел к выходу. Не к кассам. Просто к выходу. Рюкзак с гречкой и яйцами бил меня по спине. Бесполезный груз.
«Куда же ты, герой? А как же ритуал? – издевалась она. – Ты же сейчас сорвешься, правда? Придешь домой и нажрешься какой-нибудь дряни. Или, еще лучше, напьешься. Давай, сделай это! Покажи, чего на самом деле стоит вся твоя новая прошивка! Один неперехваченный exception – и вся система летит к чертям! И этот exception – это ты сам!»
Я вывалился на улицу. Дневной свет, даже такой тусклый, ноябрьский, ударил по глазам после искусственного освещения магазина. Я жадно глотнул холодного воздуха. Он не принес облегчения. Я шел домой, не видя дороги. Автопилот вел мое тело по знакомому маршруту, пока внутри бушевала гражданская война.
Сирена была права. Я хотел сорваться. Я хотел купить бутылку самого дешевого, самого крепкого алкоголя. Запереться в комнате, задернуть шторы и пить, пока реальность не растворится, пока ее голос не утонет в вязком, спиртовом тумане. Это был старый, знакомый скрипт. Проверенный способ обработки ошибок. Закомментировать проблемный блок и сделать вид, что его не существует.
Дома я бросил рюкзак на пол. Он упал с глухим стуком. Яйца, скорее всего, разбились. Мне было все равно. Я прошел в комнату и рухнул в кресло. Включил мониторы. Рабочий стол. Иконки. Код. Мой упорядоченный, логичный мир. Но сейчас он казался мне чужим и фальшивым. Насмешкой. Я смотрел на строки кода, на названия файлов – transaction_validator.py, risk_assessment_engine.py – и видел в них только бессмысленный набор символов.
«И для чего все это? – ее голос стал тише, ядовитее. – Ты думаешь, ей есть дело до твоего risk assessment engine? Ты думаешь, хоть кому-то в этом мире есть до него дело? Ты строишь свою цифровую песочницу, пока настоящая жизнь проходит мимо. Она сейчас придет домой, разберет покупки. Может, тот парень уже ждет ее там. Они будут ужинать, смеяться. А ты? Ты будешь сидеть и пялиться в свой черный экран, имитируя деятельность. Имитируя жизнь. Ты – симуляция, Новиков. Плохо написанная, глючная симуляция неудачника».
Я закрыл глаза. Ее слова были как гвозди, которые она методично вбивала мне в мозг. Я чувствовал, как рушится моя защита. Вся дисциплина, вся выстроенная за недели стена из тренировок и работы, рассыпалась в прах от одного ее взгляда. От ее пустого, безразличного взгляда.
Я открыл браузер. Пальцы сами потянулись набрать ее имя в поиске. Старый рефлекс. Наркоман, ищущий дозу. Я остановил себя в последний момент. Нет. Этого я не сделаю. Это будет окончательной капитуляцией. Я сжал руки в кулаки так, что ногти впились в ладони. Боль. Физическая боль. Она немного отрезвляла.
Весь день я просидел так. Неподвижно. В кресле. Я не мог работать. Я не мог есть. Я не мог даже думать. В голове был только белый шум ее злорадства и застывший в памяти образ – ее лицо с выражением полного безразличия. Я смотрел, как за окном сгущаются сумерки, как день медленно умирает. И вместе с ним умирала моя воля. Старый я, тот, из первой главы, тот, кто слушал Linkin Park на полной громкости, чтобы заглушить боль, поднимал голову. Он шептал: «Сдавайся. Это бесполезно. Ты проиграл».
Когда за окном стало совсем темно, я поднялся. Тело затекло, двигалось с трудом, как несмазанный механизм. Я не пошел на кухню за бутылкой. Я не лег на кровать, чтобы утонуть в жалости к себе. Я подошел к стулу в углу, на котором лежала моя беговая одежда.
«Что, опять? – Сирена фыркнула. – Решил снова устроить свой цирк? Думаешь, пробежка что-то изменит? Ты можешь бежать сколько угодно, но от себя не убежишь. Твоя ничтожность – это не лишний вес. Ее нельзя сжечь калориями».
Я молча переодевался. Шорты. Футболка. Кроссовки. Я зашнуровывал их с ожесточением, затягивая узлы так туго, что они впивались в подъем стопы. Это не была моя утренняя, ритуальная пробежка. Это было нечто другое. Это не было очищением. Это был акт самоистязания. Я не собирался убегать. Я собирался наказать себя. Выбить из своего тела, из своих мышц, из своих легких этот яд, эту униженность. Заменить душевную боль физической. Перебить один сигнал другим, более мощным.
На улице было темно и сыро. Моросил мелкий, противный дождь. Я не стал вставлять наушники. Сегодня мне не нужна была музыка. Сегодня моим саундтреком будет стук собственного сердца и хрип рвущихся легких.
Я побежал. Не так, как утром – размеренно, контролируя дыхание. Я рванул с места, как будто за мной гнались. Я вложил в первый же рывок всю свою ярость, все свое отчаяние. Холодный воздух обжег горло. Мышцы, не разогретые, не готовые к такой нагрузке, взвыли от протеста. Но мне было плевать. Пусть болят. Пусть рвутся.
Первый километр. Второй. Мой обычный утренний маршрут. Сирена все еще пыталась говорить, но ее голос тонул в шуме. В реве крови, стучащей в висках. В моем собственном сдавленном рычании, которое вырывалось с каждым выдохом.
Пятый километр. Моя утренняя норма. Тело умоляло остановиться. В боку кололо так, будто туда воткнули раскаленный прут. Но я не остановился. Я пробежал мимо своего финишного дуба и помчался дальше, в темноту парка, где не было фонарей.
«Стой! Идиот! Ты убьешь себя! – кричала она, но в ее голосе уже слышалась паника. Она теряла контроль. Этот уровень физического страдания был незнакомой для нее территорией. – Ты не выдержишь!»
Именно этого я и добивался. Я бежал на пределе. На грани потери сознания. Мир сузился до пятна света от далекого фонаря впереди и до разрывающей боли в груди. Я перестал быть Кириллом Новиковым, неудачником, которого не узнала девушка. Я стал просто телом. Машиной из мяса и костей, работающей на износ.
Седьмой километр. Девятый. Я уже не бежал, я волочил себя вперед. Каждый шаг был пыткой. Во рту появился привкус металла. Кровь. Дождь усилился, стекая по лицу ледяными струями, смешиваясь с потом. Я споткнулся, чуть не упал, но удержался на ногах. И побежал дальше.
На десятом километре что-то щелкнуло. Боль не ушла. Она достигла такого пика, что перешла в иное качество. Она стала фоном. Как гул сервера. И в этой выжженной болью пустыне внутри меня наступила тишина. Абсолютная. Сирена замолчала. Она не могла существовать в этом вакууме чистого физического страдания. Ее сложные психологические конструкции не выдерживали такого примитивного, животного ужаса.
Я остановился. Я не мог больше сделать ни шагу. Я согнулся пополам, упершись руками в колени, и меня вырвало. Желчью и водой. Я стоял под дождем, в темноте, и выплевывал из себя всю грязь этого дня. Когда спазмы прекратились, я выпрямился. Я был полностью, абсолютно пуст. Не было ни злости, ни обиды, ни жалости к себе. Ничего. Только гудящее от перенапряжения тело и звенящая тишина в голове.
Домой я шел, шатаясь. Дорога заняла вечность. Я принял душ, стоя под струями горячей воды и чувствуя, как она оживляет застывшие мышцы. Я не чувствовал себя победителем. Я чувствовал себя выжившим после авиакатастрофы. Контуженным, изломанным, но живым.
Я вышел из душа, вытерся. И сел за компьютер.
Было почти одиннадцать вечера. Руки слегка дрожали от усталости. Но голова была ясной. Кристально ясной. Той пустоты, которую я выстрадал на пробежке, хватило, чтобы смыть весь ментальный мусор.
Я открыл план проекта в своем таск-менеджере. Нашел самую сложную, самую ответственную задачу, которую я откладывал уже несколько дней. «Реализация модуля „Ядро транзакций“». Сердце «Аксиомы». Алгоритм, который должен был обрабатывать финансовые операции, обеспечивая их атомарность, согласованность, изоляцию и долговечность. ACID. Четыре буквы, за которыми скрывался ад из блокировок, параллельных запросов и обработки пограничных случаев. Ошибка в этом модуле означала бы потерю денег. Полный провал.
Идеальная задача для этой ночи.
Я налил себе самую большую кружку кофе, какую только смог найти. И начал работать.
Мир за пределами моих мониторов перестал существовать. Не было ни дождя за окном, ни тиканья часов, ни моего гудящего тела. Была только задача. Чистая, холодная, беспощадная логика.
Я начал с тестов. Я писал код, который описывал, как система должна упасть. Что будет, если придет два параллельных запроса на списание с одного счета? Что будет, если база данных откажет в середине транзакции? Что будет, если внешний API вернет ошибку? Я создавал цифровые модели катастроф. Я думал как Сирена, пытаясь найти все возможные уязвимости, все способы сломать мою собственную систему. Красные буквы FAILED множились в консоли.
А потом я начал писать код, который превращал эти красные буквы в зеленые.
Я погрузился в состояние, которое никогда раньше не испытывал. Это был не просто «поток». Это была ярость, переплавленная в концентрацию. Энергия унижения, страха и боли, которая весь день разрушала меня изнутри, теперь была направлена в одну точку. Она стала топливом для моего мозга. Я писал код не пальцами. Я писал его нервами.
Я строил архитектуру из транзакционных блоков, менеджеров контекста и очередей с повторными попытками. Я использовал блокировки на уровне базы данных, чтобы предотвратить состояние гонки. Я писал сложнейшие SQL-запросы, которые казались мне элегантными, как математические формулы.
Прошел час. Два. Пять. Я не замечал времени. Кофе в кружке давно остыл, я пил его, не чувствуя вкуса. Мои пальцы летали над клавиатурой. Щелк-щелк-щелк. Монотонный звук создания нового мира. Упорядоченного. Справедливого. Мира, где каждое действие имело предсказуемое последствие. Мира, где не было места для безразличных взглядов и несправедливой боли.
Когда за окном начало светать, окрашивая серый утренний туман в бледные, акварельные тона, я закончил.
Последний тест. Самый сложный. Симуляция высокой нагрузки с одновременным падением нескольких внешних сервисов. Я запустил его. И замер, глядя на бегущие по экрану строчки логов. Секунды тянулись, как часы.
А потом в консоли появилась финальная строка. Зеленая.
OK. Tests passed: 128. Failed: 0.
Я откинулся на спинку кресла. Тело было свинцовым. В глазах плясали цветные пятна от бессонной ночи и непрерывного взгляда в монитор. Я был выжат до последней капли.
Но модуль был готов. Самый сложный, самый важный модуль «Аксиомы». Он был написан. Он работал. Он был доказательством.
Я посмотрел на себя в темном экране монитора. На осунувшееся, измученное лицо с красными глазами.
Сирена молчала. Она проиграла. Я взял ее самую мощную атаку, принял весь урон на себя, переработал эту разрушительную энергию и превратил ее в самый прочный кирпич в основании моего нового мира.
Конец ознакомительного фрагмента.
Текст предоставлен ООО «Литрес».
Прочитайте эту книгу целиком, купив полную легальную версию на Литрес.
Безопасно оплатить книгу можно банковской картой Visa, MasterCard, Maestro, со счета мобильного телефона, с платежного терминала, в салоне МТС или Связной, через PayPal, WebMoney, Яндекс.Деньги, QIWI Кошелек, бонусными картами или другим удобным Вам способом.






