Объясните, почему мой рокет-саенс бэкенд билдится пару секунд, а четыре формы на фронте — полгода

в 14:00, , рубрики: chromium, node.js, vscode, Блог компании VDSina.ru — хостинг серверов, Карьера в IT-индустрии, Ноутбуки
Объясните, почему мой рокет-саенс бэкенд билдится пару секунд, а четыре формы на фронте — полгода - 1

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

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

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

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

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

Но проблемы начались — потому что кто-то когда-то допустил фронтендеров к разработке ПО. 

Смотрите, я запускаю ноут, на нем начинает крутиться операционка, со всеми своими службами и драйверами. Дотнет, студия, райдер, плеер, почтовый клиент, FIFA18, проводник, телега. И это все — 20% моей оперативы. А потом я запускаю интерпретаторы и исполнители js. 80+ % оперативы. Браузер, нода, вскод. Три приложения, которым я дал одно простое задание — отрендерить формы и интерпретировать жс в них. Двумерные, простые формы, без физики.

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

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

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

У меня гигантейший бекенд проект, и к нему малюсенький фронтендик — на четыре формы. Я делаю фичу — вношу изменения в кодовые базы обоих проектов. Когда изменения внесены — надо билдить. Я нажимаю f5 в райдере, альтабаюсь на вскод — и когда вижу перед собой стройные ряды typescript кода, получаю десктопную нотификацю: "build succeed". Все.

Теперь билдим фронтенд — тут с f5 не получится, надо открыть консоль и ввести ЭнПиЭм команду. Я прогер, я умею печатать, и легко справляюсь. Комп начинает шуметь. Конечно, мы же решаем сложнейшую задачу — превращаем один жсный говнокод в другой — поменьше — для оптимизации. Это, конечно, надолго — четыре формы все-таки. 

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

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

  • Нужно высыпать из кофемолки среднепрожаренную бурду, которую пьет жена

  • Достать нужные зерна из специальной непроницаемой баночки, 

  • Засыпать в кофемолку, 

  • Выставить верный помол, включить её, 

  • Тщательно промыть френч-пресс. 

  • Пока чайник кипит, нужно держать френч под горячей водой — чтобы холодные стенки не остудили кипяток

  • Быстро ошпарить огромное количество молотого кофе. 

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

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

Прошелся по двору, вернулся на кухню. Тут запишите еще пункт:

  • Пара ложек тростникового сахара, тщательно размешиваем. 

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

А билд ещё идет. Четыре формы, сынок.

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

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

Все инженеры мира смотрят на херотень, которую фронтендеры называют своим туллингом, и говорят — да это же говно собачье! Оно не работает, оно жрет слишком много ресурсов, оно решает только те проблемы, которые само же и создает. Это самый худший способ решения проблемы, который только можно себе представить. Вы, блин, переизобрели тысячу вещей, которые отлично справлялись со своими задачами, и сделали это жутко некачественно, и только продолжаете себя хоронить. Но приходят фронтендеры, и объясняют, что мы ничего не поняли.

Они придут и сюда. Они скажут, что вообще-то есть хот-релоад, чтобы не перебилживать проект. Они скажут, что вскод можно настроить так, чтобы билдилось по нажатию f5, скажут, что у меня не та версия ноды, и не тот ноут. Что на самом деле тот факт, что у меня на рабочей машине одновременно работает 4! клона сиплисплюсного кода, который интерпритирует жс — это отличный подход. Они вообще много чего скажут — все что угодно, лишь бы не переделывать свое дерьмо. 

А я скажу вот что. Я отвалил штуку баксов за комп, и пока писал эту статью — у меня четыре раза свалился вскод — потому что выжрал всю память. И вот я ее дописал 

А билд ещё идет. Четыре формы, сынок.


На правах рекламы

Эпичные серверы - это мощные серверы на базе новейших процессоров AMD EPYC. Частота процессора до 3.4 GHz. Максимальная конфигурация - 128 ядер CPU, 512 ГБ RAM, 4000 ГБ NVMe!

Объясните, почему мой рокет-саенс бэкенд билдится пару секунд, а четыре формы на фронте — полгода - 2

Автор: Philipp Ranzhin

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js