Он еще в пути, но он прибудет на рассвете Давайте же все вместе позовем его, дети!
Дед лайн, дед лайн, дед лайн Аааааа, опять!
© «Дедлайн»
Научно-Технический Рэп
Знаешь, в чем моя самая большая проблема? Да ладно, не только моя, вот я на сто сорок шесть процентов уверен, что ты тоже этим грешишь! По-любому, лежишь по ночам, палишь в потолок, мечтаешь, как бы налутать побольше денег, да и чего уж там — признания. И не важно, что ты для этого сделал: спас мир от мусора, вылечил рак, прекратил холивары в интернете… Ты выходишь на сцену, как тот Киану, а из толпы в тебя летит: «You are breathtaking!». И деньги, денежки, деньжулечки, мани-мани-мани, банковское приложение, к которому ты приаттачен, разрывается от оповещений про пополнение счета! Но давай честно, всё это ты бы хотел получить по щелчку пальца, не поднимая пятую точку из уютного кресла. Или на чем ты там сейчас сидишь? Так или иначе, какие-то телодвижения совершать придется. Вот и я так же думал. И даже что-то для этого сделал! Вспомнил, чего я там выучил за годы скуки на галерке захолустного провинциального вуза. По мелочи — джаваскрипт, немножечко HTML (давай, скажи мне, что это не язык программирования!), децел CSS, и таки смог покорить это ваше хвалёное IT. Если так можно назвать ежедневную рутину на позиции фронтендера, не в самой крупной фирме поделывающей приложения под ключ. В общем-то, я считаю, сделал всё, что мог. Всё для того, чтобы меня оставили в покое и просто платили. Не посылали на эти нудные конференции, на бесполезные, в своей сути, курсы по джаваскрипту и евонным фреймворкам, не звали на все эти митинги, где просто обязаны присутствовать все значимые для команды разработчики. Я тупо верстал в дальнем углу офиса, куда даже уборщицы не заглядывают вытереть пыль, и тем самым обеспечивал себе съем каморки в коммуналке, дошик и «Балтику» на вечер. Вискас Докеру (хотя, судя по взгляду Докера, он бы больше обрадовался, если бы я сдох во сне — тогда можно будет меня сожрать) и какую-то дешманскую кормовую пыль из подвального зоомага для Хреньки (собственно, Хренька приехала в стакане с водой из того же самого магаза). Наверное, с зарплатой в тридцать пять тысяч, мне бы и нафиг не упало заводить кроме себя ещё кота и рыбу, но Докер создавал иллюзию общества, а Хренька… Хренька, просто была золотая, а в сказки я все еще верил. Она просто существовала. Сновала туда-сюда, от стенки к стенке, колыхала водоросли, распугивала случайных улиток-катушек. Глупо зыркала своими огромными глазищами и раскрывала рот. В такие моменты я бы сказал, что Хренька, с утра, по ошибке, заплыла в новостной паблик и нахваталась впечатлений на весь день. Обалденно, наверное, быть рыбкой. Плаваешь себе, раз в три дня с неба падает еда, а что там за стеклом — не твоя забота. Даже на хищный взгляд Докера плевать. Хочу быть рыбой, честное слово. Рыба странички за копейки не верстает. —Какая ты, нафиг, золотая? —В очередной раз сказал я Хреньке, будто ей есть до меня дело. —Ни в ломбард сдать, ни желание загадать… Оставив рыбу и кота играть в гляделки, одним махом влил в себя жижу из-под говяжьего дошика, полирнул глотком пивка (комплимент этой ослиной моче!) и развернул окно с Киберпанком, запущенным ещё черт знает сколько времени назад. Не вижу смысла выходить из игры, когда отчаливаю на работу — всё равно, потом, буквально с порога кину живности жратвы и сам упаду перед компом. А немного позже, телега привлекла мое внимание, настырно блямкающая сообщениями от коллеги-тестировщицы. Diana Ermilova🐌 Нет, Андрюх, хоть ты тресни, уплывает эта рыба. Давай ещё верстать, это мы не покатим. 23:34 Твою мать, да ей что, заняться нечем на ночь глядя? Ну, сядь, сверстай сама эту сраную рыбу! Я-то при чем? Уже вторую неделю мы пилим прилохужу для онлайн зоомагаза. Меня, естественно, посадили клепать загрузочный экран для неё. Простенькая и дурацкая идея: пока идет загрузка, на однотонном синем фоне появляется аквариум с плавающей направо-налево золотой рыбкой. Вроде, ничего сложного, но эта рыбка вечно уплывала за правый край аквариума, стоило сменить ориентацию экрана. И хоть убей, обратно она возвращаться не хотела — стабильно зависала вне своей круглой банки. Diana Ermilova🐌 riba-fish-ios.jpg riba-page.log 23:36 В логи полезла. Вот не спится же, дуре, среди ночи! Сходи в качалку, в ночном клубе подрыгайся, ну не знаю… книжку почитай! Прицепилась, блин. Diana Ermilova🐌 Фиксить будешь? 23:40 Дождавшись кат-сцены в игре, и с пониманием того, что сейчас пропущу большую часть болтовни Сильверхэнда (куда более интересной чем нудёж коллеги), я нехотя подобрал телефон и наспех накропал ответ. Ded-FrontAnd: Потом 23:42 Diana Ermilova🐌 is typing… Надеюсь, если её игнорировать, ей будет нечего тестить, некому колупать мозги, она заскучает и уснёт. Diana Ermilova🐌 А конкретнее? Дело пахнет писюнами, дедлайн в час дня! Почитай чат, там тимлид орет, как на пожаре инвалид! Профакапились программисты, а камни в тестера полетят. Вот мне надо, чтобы с меня шкуру спустили за ваши грехи?! 23:45 Ну, увольняйся, я при чём? С тебя же спрос за выкат продукта, не с меня. Diana Ermilova🐌 Давай так. Либо мы сейчас собираем себя в кулак и допиливаем эту рыбу, либо я сейчас иду на поклон к лиду и говорю, мол, туда-сюда, Андрей оставил последний коммит в таком виде, я ничего сделать не могу, либо вы мне сейчас выбиваете права на пуш, я каким-то макаром сама попробую сделать, но последствия рискуют быть фатальными. Решай. 23:47 Diana Ermilova🐌 Но лучше бы нам сесть и кабанчиком это доделать. У меня-то основная работа есть, а вот за тебя не отвечаю🙃 23:50 С последнего сообщения у меня заскрипели зубы. Помнишь, я говорил, что грешу желанием лучшей жизни без лишних движений? Меня это выносит временами, когда я смотрю на себя в зеркало в офисном сральнике. Но что меня реально триггерит: такие как эта Диана Ермилова. Они слишком буквально воспринимают совет херачить сутками, чтобы занять свое местечко под солнцем. Основная каторга и шабашка! Оплачиваемые овертаймы! Даже готова свою тупую башку сунуть в код, лишь бы выслужиться и захапать часть премии за проект! Моей премии! Телефон со всей дури полетел в стену, но благополучно долетел только до подушки на кровати. — Хрен ты по моей голове пройдешь! Корова рабочая! — Процедил свозь зубы. Я решительно свернул Киберпанк и открыл среду программирования. Поудобнее откинулся в кресле, умостив затылок на подголовнике-подушке, закрыл глаза и глубоко выдохнул, настраиваясь на работу. Мозг, наконец-то, сгенерировал самое гениальное, простое и единственно верное решение. Действия поперли как по маслу. Первым делом я нашарил на столе маркер, живший со мной аж с первого курса и чудом не высохший. Наспех намалевал на стенке аквариума незаполненную полосу загрузки и приготовил камеру на телефоне. Хренька, шарившаяся в водорослях, сама выплыла посмотреть, что происходит за пределами её жилья, мне лишь оставалось поймать наиболее удачный кадр, когда она всплывет над черной полосой и вытянет свой глупый рот. Получилось куда лучше, чем я хотел. За аквариумом притаился Докер, уставившись на рыбу, а самой Хреньке на темечко свалилась улитка с водоросли. Ей-богу, брошу нахрен айти, уйду в фотографы, буду бабло грести лопатой, а Ермилова так и останется на двух работах! Дело оставалось за малым — скинуть фотку на комп и подогнать под разрешение планшета, браузера и смартфона! Но над этим я точно не буду сидеть всю ночь, когда голову переполняют такие блестящие идеи! ChatGPT Привет. Чем я могу помочь вам сегодня? User На тебе картинку, подгони её под яблочные планшеты и телефоны, сделай то же самое для андроида. Верни результат в png. xrenka.png ChatGPT Готово. Вот ваш результат для смартфонов и планшетов на базе Android и iOS. Я смогу вам помочь еще больше, если вы укажете желаемое разрешение экрана. Я оставил нейросеть без ответа. Можно не бояться, что она будет терроризировать меня сообщениями, как некоторые. Всё гениальное, действительно, просто как два пальца — всего лишь снести всё то, что мы наколхозили за две недели, и закинуть в качестве загрузочного экрана Хреньку. Решу проблему за полчаса, заодно дам рыбе побыть звездой. Отдавать изменения в тесты я не счел необходимым, сразу влил в мастер-ветку и поставил релизные билды на сборку. Таким образом, я убью сразу двух зайцев: Во-первых, за несколько часов до релиза героически выполню задачу (да не надо мне говорить, что зоомагазин заказывал совсем другое!). А во-вторых, поставлю на место тестировщицу с шилом в жопе. Сказать, что она ничего не тестировала и дала добро на релиз. Делов-то! Вряд ли здесь что-то может пойти не так, сломаться, обрушить весь прод — всего лишь статичная картинка, а не тот велосипед с заставкой, который я пытался изобретать две недели. Тимлид отреагировал на мои билды оперативно. Alexander Savinov Вижу релизные сборки на все платформы. Андрей, молодец, успеем к часу завтра. 00:25 Я довольно расслабился в кресле. Ну что, Леди Баг, хотела пофиксить побыстрее? Завтра посмотрим на тебя, когда лид обнаружит ЭТО. И тогда меня похвалят за «креативный и нестандартный выход из сложной ситуации в условиях цейтнота», а ты полетишь отсюда, за выпуск в прод приложения без тестирования. Кажется, я постепенно приближаюсь к своему месту под солнцем. А вот чего я никак не ожидал, так это стука в дверь, а особенно, что обнаружу за ней. Точнее, кого. Не знаю, где я случайно мог спалить свой адрес? Как бы не уверен, что приглашал в гости, и уж совсем точно, не ждал настолько поздно. Я раньше видел, максимум, фотографию, да размытые подвисающие кадры в скайпе. Впитал пару слухов и шутеечек в офисной курилке мол, как-то раз она парой трехэтажных конструкций прекратила бардак на рабочем месте и не дала выпустить провальный релиз. А еще говорили, что она, на тренировке, с первого удара вынесла два ребра спарринг партнеру. В общем, если бы моя смерть имела облик, то вполне себе конкретный. Вот этот: с дредами, с полной сумкой тестовых девайсов через плечо, промокший под очередным дождём и с именем Диана. — Выкатил? — Спокойно и вкрадчиво поинтересовалась она. — Выкатил, я тебя спрашиваю? — Выкатил. — Я попытался расправить плечи, чтобы показаться больше и увереннее, но из горла вырвался какой-то девчачий писк. Андрюх, соберись, какой-то тестерши испугался! —Теперь сам выкатывайся. И я предпочел подчиниться, ведь судя по её тону, она либо спустит меня с лестницы, либо утопит башкой в аквариуме Хреньки. Дьявол, ведь так и знал, инженеры QA — Инквизиция двадцать первого века! Стараясь скрыть трусливую дрожь, я натянул кеды и вслед за коллегой вышел из парадной в прохладную летнюю ночь. Пахло дождём, какими-то водорослями, и, внезапно, откуда-то пахло рыбой и рыбьим кормом. — Что за вонь? — Я принюхался. — Куда мы идём? —Исправлять твой последний коммит. — Она неожиданно смягчилась. И за маской айти-терминатора проглянула всего лишь вечно уставшая и невыспанная девушка. Держащаяся исключительно на энергетиках и морально-волевых, но старательно не подающая вида. — Я ведь не просто так тебе постоянно говорю: «Давай работать дуэтом, написал — сразу отдавай в тесты». Ты посмотри сейчас, что ты запушил. —А причем тут торговый це.? Я глянул на витрины ТЦ и, зажмурившись на секунду, встряхнул головой. Вот когда котёнок или щенок сбежал из клетки, быстро нагоняешь ребёнка и запихиваешь обратно. А что делать, если рыбка сбежала? А если бы рыбка плавала ВНЕ аквариума, ты бы зассал к ней подходить? Вот и я зассал. Как минимум потому, что мозг срочно требовал пояснить ему — это что за херня?! Рыба, всех мастей — крохотные декоративные гуппёшки и петушки, откормленные к праздничным столам карпы и осетры, даже местами копчёные скумбрии и горбуши: они заполонили площадь. Плавали в открытом воздухе, иногда скрываясь за вывесками магазинов и между автомобилями. Периодически, из ниоткуда, на асфальт выпадала россыпь соломки леща и сушёных кальмаров. В жилом комплексе, на горизонте, лениво прополз осьминог местного океанариума. — Это не я! —Только и смог выплюнуть я, посмотрев на Диану. — А как… — Смотри. — Она устало вздохнула и вытащила из сумки айфон с открытым редактором кода. — Засунув сюда статичную картинку с Хренькой, ты занял всё место в пространстве и вытолкнул остальных рыб за границы объекта, грубо говоря. И теперь, картинка мешает им вернуться в свои аквариумы. —А дышать?.. — Я всё еще пытался поверить в то, что вижу. Группа гуппёшек, тем временем, спокойно заплыла в крысиную клетку по соседству. —Ты скажи спасибо, что весь магазин исключение не выбросил и до сих пор существует. — Диана усмехнулась. — Хрен знает, рыбка дышит кислородом в воде, может быть, сейчас дождь идет, влажно, и воды в воздухе достаточно, поэтому, этот участок мира не рухнул. Ладно, я сохранила исходники. Давай, удалим картинку с Хренькой во-о-о-т так… Вода в аквариумах задрожала и пошла кругами. —А теперь, вставим старый фон и зададим границы аквариума… Стенки аквариумов в витринах угрожающе завибрировали, но выдержали. — И рыбке мы разрешаем двигаться чётко по этой линии! Ладно, дадим пять пикселей на финт с разворотом. Вот так, откроем в новой вкладке, и… Да! Гуппёшки вновь проплыли мимо спящей жирной белой крысы в своё жилище. «Сбежавшие» петушки и скалярии спокойно прошли сквозь стекло аквариума, словно его не существовало. Рыбка на экране айфона Дианы заплавала туда-сюда, но выбраться из аквариума больше не смогла. —Давай, я скинула тебе этот кусок кода. Гит коммит, гит пуш, и можно ставить релизную сборку на смартфоны. — Тестировщица слабо улыбнулась и выудила из своей кулёмки мой офисный ноутбук. — Вот, интернеты я тебе раздам, точка доступа «Кислородная труба тут», пароля сегодня нет. Пойдём, еще кое-что покажу. И мне не оставалось ничего, кроме как в полном шоке побрести вместе с ней за угол торгового центра. — Вон чё. — Диана достала вейп и медленно затянулась, выпуская клубничное облачко. — А это у нас планшеты. Косяк откормленных форелей плавал прямо в пространстве на парковке. Здоровенные рыбы толкались боками, но даже не собирались расплываться, чтобы стало хоть чуть посвободнее. Походу, их огромный куб с водой в подсобке продуктового, сейчас тоже отжала Хренька. Меня передернуло от мысли, что Хреньку могут кому-то продать или сделать из неё закуску к пиву. Поэтому я, дрожащими руками, как можно скорее адаптировал код под планшеты, и спокойно выдохнул, когда после команды «git push», облако форелей втянулось в стену торгового центра. Вместе с ними, вникуда, втянулись и рыбные закуски. — Неплохо. — Одобрила Диана, выпуская очередное облако. — Очень даже неплохо. А всего-то, нужно просто сесть и разобраться. Так мы точно к релизу успеем. Ставь сборку и смотри во-о-он туда. Я проследил за направлением её руки. Она должна была указывать на билборд с очередной цифровой рекламой, какой-то там, охренеть не встать выгодной ипотеки, но… …Но билборда не было. Точнее, от него осталась только колонна, на которую кто-то водрузил колоссальной ширины и смехотворной толщины прямоугольник с водой и запустил туда золотую рыбку. Рыбку нереально растянуло по периметру и сплющило до толщины камбалы. И эта исполинская Хренька, словно насмехалась над моим факапом… — Хренька! — Охнул я и бросился к билборду со всех ног. — Хренечка, милая, да кто же тебя туда, да как…! — Это десктопы, то бишь, браузеры. Черт знает, какие баги тут вылезут. Даже я предсказать не смогу. — Диана бесшумно подошла со спины. — Да, всё правильно. Хренька на своём месте. Тебе надо сделать так, чтобы она отсюда больше не выплыла и при этом, вернуть обратно к себе домой. Кстати, дома у тебя, Хреньку вытеснила из аквариума картинка Хреньки. — Погодь, то есть, возвращать обратно картинку или как? Да как вообще это работает?! — Ты меня спрашиваешь? Я даже не программист. Чини, Хреньку, давай! Ладно, спокойно. Мы уже починили рыбу на смартфонах и планшетах, надо всего лишь провернуть то же самое с браузерами. Просто удалить картинку с рыбкой, просто поставить старую заставку на место, определить границы аквариума. И, тестов ради, пару раз свернуть и развернуть окно с заставкой…*дзынь*
На асфальт рванули ручьи воды вперемешку с колотым стеклом. Гигантская Хренька медленно сдвинулась с места, проломила лбом прозрачную грань билборда и начала заваливаться набок, рискуя, вот-вот, выпасть из аквариума. Гигантского осьминога, среди домов, пронесло в обратном направлении. — Работает. — С таким облегчением, словно её отпустили из-под пыток, выдохнула Диана. Она чуть постояла под усиливающимися струями воды, подставляя под них побледневшее от усталости лицо. — Катим в прод. Даю добро на релиз. И тут, Хренькин плавник вытолкнул фронтовую часть билборда прямо на нас. Огромный лист стекла молниеносно полетел вниз, погребая нас обоих под собой и прижимая тонной воды вместе с этим чёртовым кодом… От удара в лицо я проснулся! Весь мокрый и в осколках, отчаянно пытаясь удержать в руках панически трепыхающуюся Хреньку. На тумбочке, на месте рыбки, сидел Докер и с ненавистью смотрел на меня. И тут я вспомнил, что забыл покормить кота. С утра убежал в офис, вечером сел поиграть, потом меня отвлекла тестерша, потом я сел кодить и уснул, а бедный оголодавший Докер то ли пытался меня так разбудить, то ли слетел с катушек и попытался сожрать Хреньку! Не теряя ни секунды, я схватил со стола кофейную чашку, наскоро сполоснул её на кухне, кинул туда рыбку и поставил под струю воды из крана. Закрыл за собой дверь на кухню, чтобы ненароком не пробрался Докер и не закончил свое кровавое преступление. Вытирая холодный пот со лба, наконец, сел проверить рабочий чат. Diana Ermilova🐌 Саш, iOS/Android планшеты-телефоны проверила, всё ок, у рыбки были границы движения не выставлены. Андрей писал, десктоп тоже пофиксил, сейчас скинет мне, я чекну и поставим релизную сборку. 8:03 Alexander Savinov Так, ребята, по десктопу отбой. У клиента бюджета не хватает. Сейчас молодцы, отдаем только мобильные девайсы, деньги на десктоп обещали в следующем квартале выдать. К осени сможем и на браузеры выкатить, а сейчас не надо. 8:05 Alexander Savinov Жду всех в офисе, в час отдадим, к шести уже разберемся по премиям. Но помните, как обычно, наличкой. Андрей, Диана, молодчины, в последний момент спасли проект! 8:06 Окончательно потеряв остатки понимания, я закрыл лицо руками. Когда я успел всё починить? Я что, программирую во сне? Нет, чудес не бывает, даже если Хренька золотая. Ded-FrontAnd Привет. А откуда работающий код взялся? 8:09 Diana Ermilova🐌: О, кто проснулся, салют. Со StackOverflow. Работающий, сильно сказано, но шкуру твою спасёт. 8:10 Ded-FrontAnd: Да хоть килограмм, о чём ты! Спасибо, что мою премию спасла. Как раз будет, на что купить новый аквариум для Хреньки. В голове неприятно кольнуло, щёки стыдливо загорелись. Что у нас есть, помимо премии? Бездомная Хренька, голодный и преданый Докер, оскорблённая коллега, и Андрей — походу, самая огромная и неквалифицированная свинья в фирме. Ded-FrontAnd: Вот это я факапнулся, кнчн. Ты ваще крутая, если честно. 8:12 Ded-FrontAnd: Слушай, короч… Мне тут кот расколотил аквариум прям с рыбой. Ты не хочешь после работы прогуляться в зоомагаз на Академку, на фудкорт потом зайти? Мне прям интересно, как ты смогла за ночь поправить приложуху. Diana Ermilova🐌 is typing… Наверное, еще никогда я не ждал ответа от тестировщика с таким нетерпением.