Сергей Твардовский
> npm i

Название: > npm i

Автор(-ы): Сергей Твардовский

Ссылка: https://author.today/work/483444

Акт I

– Да твою ж мать…

«Фактический результат: датапикер имеет ширину на 5 пикселей больше, чем в макете. Ожидаемый результат: датапикер соответствует размеру».

Третий раз тикет возвращался от тестировщика, и третий раз Макс был уверен в том, что всё было сделано так, как было указано в том грёбаном макете.

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

Макс был готов клясться кровью всех живущих на планете Земля (и за её пределами), что всё проверял много раз. В трёх браузерах. И даже на личном ноутбуке, куда, нарушая политику безопасности, выгрузил весь проект. Всё, нахрен, соответствовало макету!

Капли дождя, настукивающие по карнизу хаотичный и неровный бит, казалось, пытались донести Максу послание: «Обнови резюме, ты пришёл в мир для большего».

Макс уже думал об этом, и не раз. За первые три месяца испытательного срока он будто бы наелся этих «3 пикселя туда» и «4 пикселя сюда», а тут цвет должен быть «#aae5d3» – он это не любил. Ему больше была интересна архитектура приложения, а не этот джуновский треш, которым его заваливали каждый день.

«Привет, го созвон», – набрал сообщение Макс, удержавшись, чтобы не поставить скобочку, тестировщику, который вернул ему «баг».

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

«Да, без проблем. Через 20 минут… у нас внутренний созвон», – ответил тестировщик.

«Ок», – подумал Макс, ставя большой палец вверх на его сообщение, и отправился на «перекур».

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

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

Всё было просто: можно не зажигать огонь.

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

– Ублюдок… – сплюнул Макс, положил сигарету на подоконник и покинул кухню, наслушавшись шелеста дождя и преисполненный отвращением.

Не глядя на сообщение от тестировщика, он открыл сайт со своим резюме.

***

– Макс, я не могу задачу закрыть, пока не будет всё по макету, – отозвался Алексей.

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

– Закрыть эту и завести баг?

– Не вариант, – мгновенно отозвался Алексей, – мы же в прод льём сразу…

– Слушай… – Макс перестал пытаться поплавить монитор взглядом, – то, что девопса не нашли, как бы, не моя проблема. Я и так всё сам собираю и вручную лью туда, и у меня всё на скринах, в общем. То скрины билда, а не dev’а. И вообще, у нас кто приоритеты определяет? Эти пять пикселей сраных блочат что-то? А вот раздел несвёрстанный, за который я взяться не могу из-за стори незакрытой, – он, да, всех блочит.

– Макс…

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

– Я тебя понял, в общем, схожу к ПМ’у, чтобы он сам всё двинул и завёл. Давай, – нажал на кнопку отключения от созвона и сорвал наушники, чтобы дать передавленным капиллярам чуток нормальной жизни.

Развернул сайт поиска работы – какие-то просмотры уже пошли, и, возможно, к вечеру уже кто-то да напишет.

Пошло оно всё нахер.

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

Главное – не слышать о том, что чёртовы пять пикселей, на которые абсолютно никто не обратит внимания, важнее целого раздела, за который с него же спрашивают каждый день те же, кто не даёт закрыть стори с грёбанным датапикером.

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

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

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

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

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

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

– Может, ну его нахрен, тот? У тебя же стили и вся красота уже готова… может, тебе свой сделать быстрее будет? Ты же, помнишь, делал для нашего внутреннего проекта…

– Сань, я их там уже четыре разных пробовал, – словно ожидая в засаде своего часа, выпалил Макс. – Это НАШ датапикер, который НОРМАЛЬНО работает. Я понятия не имею, зачем тестер мне мозг делает. Пусть закроет эту сторю нахрен и багом заведёт.

ПМ шумно вздохнул, прежде чем произнести то, что ему явно не хотелось, но Макс ждал этого, ведь не зря была вся та телега о том, «как ему самому тяжело»:

– Не вариант, Макс… И да, он реально конченный и с линейкой или хрен знает чем сверяет всё по фигме. Там очень заумный контракт, и он неустойку за эти пиксели может выкатить… Мы и так по срокам не вписываемся.

«Бл…» – оборвал себя на полуслове Макс, сообразив, что мысль пошла наружу.

– Ясно, – завершил он подошедший к концу диалог.

***

Пять.

Шесть.

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

Семь.

Сердце будто остановилось, а капелька пота попала в левый глаз.

Во-о-о-о-осемь.

– Ух-х-х-х, бля, – выдохнул Максим, обрушив семьдесят килограммов на стойку. Дыхание даже не сбилось, ведь, казалось, его организм просто забыл, как дышать.

– Ещё бы пару раз, – прочитал Макс по губам, глядя на лицо бритого качка, который его страховал.

– Не, – мотнул он головой в ответ, успев заметить лёгкое разочарование, проскользнувшее в глазах человека, чьего имени он и не знал. Да и видел впервые.

Уселся, крякнув, и тут же встал, вытянув левую руку, чтобы растянуть…

Бл…

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

Не доставая наушник из уха, покачал головой, отвечая на вопрос «Ты всё?», который он даже не услышал.

«Сука, ну как же так…» – первая и последняя мысль, что возникла в голове Максима, когда, под бодрый запил Within Temptation в ушах, он, глядя только вперёд, запнулся о лежащую посреди дороги гантель. Он ведь видел её, но нога не посчитала нужным подняться выше.

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

***

После получасового кардио Макс, решивший, что хватит на сегодня страданий, отправился в раздевалку.

Зеркало он не любил. Всегда не любил.

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

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

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

Всё его чёртова впечатлительность.

«Тебя нет! Уйди!» – мысленно гаркнул Макс, встретившись взглядом с тем, кого он не должен был видеть там, и, резко отвернувшись, направился в душевую.

***

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

Оттопырив ворот, Макс двинулся в направлении дома.

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

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

Он достал телефон, но экран не загорелся. Секунду держал кнопку, потом ещё, но ничего не происходило. «Разрядился, видимо», – подумал он, но всё равно не убрал в карман, просто шёл, держа в руке чёрный прямоугольник, в котором отражалось что-то, кроме него. Тень, может. Или просто ему нужен отпуск?

Где-то справа, за высоким забором, кто-то шёл параллельно – шаг в шаг. Макс остановился, и шаги остановились. «Эхо», – решил он, но когда сделал ещё шаг, звук отозвался чуть позже – будто тот, кто находился по ту сторону, задумался, а потом всё-таки решил не отставать.

Он свернул во двор, где всегда коротал путь, если решался идти пешком: старые пятиэтажки, мрачные подъезды, пара мусорных баков под навесом. Свет в одном из окон мигал, и Максу показалось, что внутри кто-то стоит у окна. Кто-то внутри – или это очередное отражение? Отражения сегодня вообще были не на его стороне.

На последних метрах пути он поймал себя на том, что прислушивается – не к дождю, не к звукам машин, а к дыханию. Не своему. Словно кто-то рядом старается дышать в такт – чуть тише, чуть медленнее.

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

Макс моргнул – и снова остался один.

***

Макс уже был на грани, когда в последний раз проверил размер пикселей в коде – и снова: на пять пикселей больше. Строчка в инспекторе компонентов, как всегда, показывала 250, а в макете – 245. Всё так же, чёрт побери. Он сжал зубы и, выдохнув, снова переключил вкладки, повторяя для себя одно и то же: «Не должно быть так, блять…».

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

Где ошибся? – отчаянно спрашивал он себя, тупо глядя в код, совершенно не понимая, что там написано. Баг был тупой. Но в этом тупом баге Макс понял, что застрял. Он уже не вывозил. Он опять наткнулся на ту самую мелочь, которая всё перекрывает, подрывает суть работы, лишает смысла.

Он проклял датапикер. Проклял все датапикеры на свете.

– Да твою мать, где эти пиксели! – сорвался на полный голос, бросая взгляд на часы. Три часа ночи. Чёрт.

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

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

Новый билд снова не дал результата.

– Блядь, что за нахер! – Максим выругался, поднимая глаза к экрану и замечая, как его отражение в тусклом свете лампы выглядит почти чужим. Он отвёл взгляд, злясь на себя. Глубокий вдох – и снова сосредоточился. Это могло быть только в одном случае: с ним. Точнее, с его восприятием.

Ещё час спустя, когда уже начинала ломиться башка, Макс, не отрываясь, проверял угол наклона экрана, меняя разрешения и переписывая код. Но ничего не менялось – результат как был, так и остался. Пиксели вновь не сходились. Точнее, он просто не мог воспроизвести всё то, что было написано в баг-репорте.

– Может, это у меня глаза слипаются? Я что, сука, глюки ловлю?

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

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

«Подожди… так вот же оно!» – внезапный инсайт. В дереве нод. Прямо под носом. – «ВОТ ЖЕ ЭТА СУКА!»

Макс чуть ли не вскочил с кресла, несмотря на усталость.

Почему он до сих пор не смотрел на обёртки, у которых при билде появлялись модульные классы, но была там одна обёртка со статичным классом! Была!

БЫЛА!

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

Да! Так делать плохо, так делать не стоит. Не нужно заносить костыльные стили в общую таблицу, но ему было можно. Ему было нужно – именно сейчас, именно ему.

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

Пофикшено!

***

Он сразу понял, что спит.

Не потому, что всё выглядело странно – наоборот, всё было слишком чётким, без размытия, каким обычно бывает сон. Просто где-то внутри уже щёлкнуло: «Это не настоящее».

Дом был большой, частный, двухэтажный. Макс стоял внизу, возле панорамного окна. За ним тянулся серый туман, плотный, без просветов. Никаких деревьев, ни дороги – просто стена серого, похожего на густой дым, клубящегося тумана.

И запах…

Пахло гарью – сухой, едкой, как будто где-то совсем рядом недавно что-то горело, и этот запах въелся в дерево и стены.

Он провёл взглядом по комнате. Это была студия-гостиная с кухней – будто бы с объявления на «Авито». Всё новое, едва обжитое.

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

Макс застыл, глядя на неё.

Понял, что не хочет знать, зачем она там.

Он закрыл глаза, потом открыл – петля всё ещё была. Движение не прекратилось.

– Это сон, – тихо сказал он. Просто чтобы услышать голос.

Он повернулся к окну.

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

Шаг, ещё шаг… теперь он мог различить лицо.

Тот самый парень из спортзала. Из отражения. Стоял, не двигаясь. Смотрел прямо перед собой, будто не видя Макса. Но нет… движения зрачков говорили о том, что парень посматривал на него, отвлекаясь от созерцания дома.

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

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

– Кто ты?

Тот, за стеклом, наклонил голову.

Потом выдохнул.

Пар лёг на стекло.

Медленно, неторопливо, он провёл пальцем по испарине.

Буквы появились сразу – зеркальные, но читаемые.

Т Н Е М М О К

«Коммент», – машинально перевёл Макс.

Слово выглядело нелепо в этом месте, но от этого стало только хуже. Сердце стучало всё чаще, но Макс усмехнулся.

– Коммент, ага. Очень остроумно.

Гость за стеклом не реагировал. Просто смотрел на него так, словно хочет что-то сказать, но не может.

Макс заметил на его запястье тонкий шрам – такой же, почти как и у него самого.

В висках кольнуло.

Он сделал шаг вперёд.

– Кто ты?! Ответь!

Парень лишь покачал головой.

Туман за окном начал двигаться быстрее, будто клубился вокруг этой фигуры, и через несколько секунд она просто исчезла в нём, будто провалилась.

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

Запах гари стал сильнее. Где-то наверху щёлкнуло, как будто сорвалось что-то металлическое, и он снова поднял глаза на второй этаж – петли уже не было.

Он проснулся.

Темнота.

Гулкая тишина, редкие капли дождя за окном.

Дышать тяжело, в груди гул, будто он пробежал километр.

На часах – 3:45.

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

Он сел, чувствуя, как пот стекает по спине, и ещё долго сидел, пока дыхание не стало ровнее.

Но запах… Гарь. Её будто принесли с собой из сна. Едва ощутимая, но реальная.

Он поднялся, прошёл на кухню, не включая свет.

На подоконнике валялась пачка сигарет – та самая, что лежала там уже много месяцев.

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

Он подошёл к окну. Дождь тихо бил по стеклу.

Выдохнул – на стекле осела испарина.

Провёл по ней пальцем. Потом ещё раз.

Спустя пару мгновений он затёр ладонью написанное слово «коммент».

Акт II

Утро началось не с кофе, а с того, что Slack мигнул упоминанием в общем чате:

@max.k есть новости? Там датапикер…

Опять… что?!

Макс какое-то время просто сидел, глядя в монитор, потом открыл фигму, потом билд, потом фигму снова, потом ещё раз билд.

Да как же так…

Пять пикселей. Всё те же.

– Господи, да за что… – выдохнул он и машинально открыл HeadHunter на второй вкладке. Приглашений было два: одно – от какой-то неизвестной студии без имени, второе – от аутсорсера, у которых «гибкий график, молодая команда и без токсичности». На этой фразе он хмыкнул.

Slack снова мигнул.

Алексей (QA):Макс, ты тут? Можем созвониться?

Он посмотрел на часы – 11:07.

«Можем», – набрал, нажал Enter.

Рука сама потянулась к вкладке с резюме – обновить, «активно ищу работу», добавить пару слов про «ответственность» и «высокую внимательность к деталям».

«Ирония, бл…»

В наушниках звякнуло – созвон.

– Ну? – сказал он, не дожидаясь приветствия.

– Макс, слушай, опять датапикер, – осторожно начал Алексей. – В проде шире. На пять.

– Ты издеваешься? Я ночью на прод катил… оно, блять, нормально было… – он чуть откинулся на спинку кресла, уставившись в потолок. – Я. Сука. Не знаю. Что ещё. С ними. Делать… я не знаю, что тебе от меня ещё надо. Я в пять утра лёг.

– Я… Максим, мне ничего не надо. Заказчику надо, – сказал тестировщик. – Он скриншоты прислал.

– Да пусть он себе эти скриншоты в жопу запихает, серьёзно.

Алексей вздохнул в микрофон.

– Макс, не начинай.

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

Он собрал билд локально, щёлкнул по компоненту. Всё идеально. Проверил дев-версию – то же самое.

– Вот, на… – Он включил демонстрацию экрана. – Видишь? Всё совпадает. Один в один.

– А на проде нет, – тихо сказал Алексей.

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

Алексей попытался что-то вставить, но Макс уже говорил вразнос:

– Каждый день одно и то же: пиксели, пиксели, пиксели, пиксели, блять! Там РАЗДЕЛЫ не верстались даже, а тут пиксели, целых ПЯТЬ, какой ужас! – почти перешёл на крик Макс.

Алексей не отвечал, не спорил. Макс шумно вздохнул и, с отвращением, выплюнул:

– Мне реально похуй на эти пиксели. Я устал.

Он снова обновил HeadHunter, словно на автопилоте. Ноль новых приглашений.

Вторая рука уже шарила по проекту, открывая package.json.

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

– Да всё я вспомню… в гите всё видно, – Макс скривился. – Я не знаю, почему оно вообще так себя ведёт. Я со всех сторон ему ширину задал. Со всех, понимаешь?

– Ну и в чём тогда дело?

– Хуй знает. Может, в самом компоненте. Это же наш UI-kit, его не я делал, но «он прекрасно работает, на нём все проекты спокойно живут, и туда лезть не надо», – хрипло кривляясь, передразнил он лида, который пару недель назад сделал ручкой, оставив за собой вакантное место в «лучшей команде на свете». – Но… ща посмотрю, что там у них внутри используется.

Он пролистал файл.

Глаза выцепили строку:

«fancy-datepicker»: «^1.0.0».

Чё, бл…

– Вот оно, блядь, – пробормотал он. – Fancy DatePicker. Пиздец какой…

Звук отчаянного непонимания, как такое могли затащить в UI-kit, заглушил даже слова Алексея в наушниках:

– Первый раз слышу. Хотя… я даже не зн… смотрел, что там у них.

«Ещё бы тебя это интересовало, ага… тебе бы только тикеты перекидывать…»

– Я тоже. И, судя по всему, автор уже в аду горит за такое… Тут вообще ничего нет. Ни ссылок, ни доки по нему. – Макс быстро проверил на странице датапикера в конфе. Он уже смотрел ранее, но всё, что там было написано, было сухим и без указания на то, что внутри прятался какой-то…

– Левый пакет? – додумал за Макса Алексей. – Может, переустановишь другой?

– Ага, а ещё весь кит перехерачить. Ща полезу смотреть, что там за говно… отбой.

Макс отключился от созвона, не дожидаясь ответа, и скопировал название пакета. Гугл и GPT – хотя насчёт второго были сомнения. Гугл-то точно найдёт…

Первая ссылка – GitHub.

FancyDatepicker – v1.0.0.

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

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

Ну и вкладки, конечно. Каждая, по-своему, что-то «важное»: тут дока по стилям, там форумы с ответами, чуть дальше – какие-то вакансии, открытые в полглаза, чтобы «потом глянуть».

Конец ознакомительного фрагмента.

Текст предоставлен ООО «Литрес».

Прочитайте эту книгу целиком, купив полную легальную версию на Литрес.

Безопасно оплатить книгу можно банковской картой Visa, MasterCard, Maestro, со счета мобильного телефона, с платежного терминала, в салоне МТС или Связной, через PayPal, WebMoney, Яндекс.Деньги, QIWI Кошелек, бонусными картами или другим удобным Вам способом.