Там были претензии к «Express.JS», а не к ноде. По сути — практически мертвый фреймворк, который не развивается. Однако в силу того, что, к сожалению, существует много вот таких вот курсов и бложиков уровня «how to» остается популярным, несмотря на то, что под капотом это полнейшее дно и любому компетентному инженеру это будет понятно, открой он хоть парочку исходников експреса.
У Socket.io в современных реалиях есть только одно предназначение. Выучив его вы сможете только создавать по нему говнокурсы. В продакшене его используют только в случае старых легаси решений. И на счет
ни один чат или реалтайм приложение
— у вас явно информация ограничена блогами на медиуме и т.п. ресурсах, там действительно до сих пор плодятся посты «howto chat in node.js using socket.io».
Скрам — то вообще отдельная тема. Я за свои десяток лет в разработке не встречал ни разу. Есть некие люди, которые что-то почитали и пытаются «внедрить», но назвать это скрамом сложно.
Юнит тесты — дело нужное, но использовать для этого тулы их XX века... Хотя, учитывая то, что вы еще socket.io преподносите как передовую технологию, то ничего удивительного. Но я бы тогда добавил в описание курсов «основы археологии».
БЕМ и семантически правильное название классов — две абсолютно разные вещи. Задача у БЕМа была всегда одна — это помочь яндексу и всем его сервисам переехать с табличной верстки на
Каждые полгода программа в прокод обновляется
У вас одна и та же программа с 2018 года. Те же технологии, те же грабли.
Мы лучшие в обучении JavaScript, в Киеве, и точка, кто не согласен — попробуйте оспорить.
LooooooL.
Даже исходя из оглавления курса, можно сделать вывод, что эти курсы дно.
— BEM
— Node.js, Express.JS
— Ajax
— Socket.io
— SCRUM
— Unit Testing (Karma/Jasmine/Mocha)
Может в начале XX века они и были лучше, но уже тот век прошел.
друзья хотят внедрить личные KPI и часть ЗП считать от результатов.
Есть примета, что если менеджмент хочет внедрить KPI, то скорее всего в компании имеется переизбыток менеджеров.
От переизбытка менеджеров, части из них нечего делать, вот они и начинают «внедрять» что попало. Следовательно в компании образовывается финансовый вакуум, т.к. «внедрятели» деньги кушают, а прибыли не приносят.
Отсюда следуюет, что если ненужных менеджеров вовремя не уволить, то скорее всего в ближайшем будущем компании придет конец.
Но с другой стороны, умные разработчики и не только могут воспользоваться данной ситуацией во благо (своё конечно же). Всего на всего надо от непосредственных задач перейти к преумнжению своих КПайев. Это проще делать в сговоре с другими.
Например, если вы разработчик, можете закладывать в код некие «логические бомбочки», которые время от времени будут срабатывать. Но они должны быть такими, чтобы проблемы можно было спихнуть на других. Такой подход вдвойне успешен, если вы сговоритесь с куа, чтобы они создавали баги не на вас, а на других. В итоге вы в плюсе, ваши КПI бьют рекорды, менеджеры довольны, компания успешно теряет прибыль.
В случае, когда работодатель решил экстренно закрыть проект.
C Firefox Private Network не определяет.
Еще забыл одну весьма важную печаль: github.com/...ster/server/server.js#L75
Она, отчасти, так же является бедой експреса и тех, кто его использует. Беда называется логика в обработчиках запросов. Ей там не место. Всё что можно сделать в обработчике запроса — это вытащить параметры, возможно их валидировать, вызвать функцию, которая уже будет имплементировать некую логику с нужными параметрами и обработать ошибку.
По первому пункту — роадмап там есть, и он качественный. Плюс ко всему он покрывает гораздо больше тем и подходит как новичкам, так и тем, кто более-менее шарит. Если хотите, могу ссылку тут запостить, но пока не пощу, чтобы не распугать вам клиентов.
По второму пункту — все очень просто.
Первый признак «бекенда фронтендера» — это babel для бека. Использовать его сейчас для бекенд-приложений сравнимо с тем, если бы вы предлагали курсы по MEJN стеку, где J, как вы догадались — это jQuery. По сути babel не привносит в бекенд ничего кроме потенциальных проблем и дополнительных никому не нужных этапов сборки проекта.
Второй признак «бекенда фронтендера» — это «express бекенда фронтендера». Из всех ныне существующих фреймворков для ноды express на данный момент один из худших вариантов, которые можно выбрать. Это обсуждать можно долго, но суть не в этом, а в том, что даже при выборе столь популярного фреймворка, который обсосан в 100500 бложиках у большинства получается что-то типа такого:
github.com/...b/master/server/server.js
Это просто кладезь того как писать нельзя, даже самому юному джуну, даже если этот код никто никогда не увидит.
Если коротко, то
1) Сделали config, ну и х с ним, нафигачим еще пару строк, которые выгребают конфиги то там, то здесь. github.com/...ster/server/server.js#L13
2) Бог с ними, мидлварями, это в принципе не ваша вина — это то как «работает» експрес.
3) github.com/...ster/server/server.js#L33 sockjs в XXI веке... В принципе, если на сервере используется такое, то почему бы тогда и jQuery на фронте с Flash-ом не использовать в память о лихих
— мы учим по последним трендам программирования;
"?
Может, конечно, github.com/ovasylenko не отражает то, что реально преподают на данных курсах, но что-то мне подсказывает, что там как раз будет подобное, что очень печально.
Не знаю как в этих курсах на счет «R», но по всему остальному что касается «ME_N» — то есть нормальные бесплатные курсы с видео, заданиями, примерами и т.п.
И судя по гитхабу, то по части «N» — тут будут обучать бекенду фронтендщика, который редко выходит за пределы pet-проектов и в редких исключениях может встречаться на галерах в легаси-проектах, которые отдали на саппорт.
О, наконец-то на доу интерграцию с ***noe.it завезли.
Cinnamon чомусь вважає ок вішати на F10 системний хоткей (виклик меню). Довго не міг зрозуміти, чому в мене не закривається mc. Як відключити цю поведінку для всієї системи, не лише для терміналу, не знайшов.
Это не только в Cinnamon, это во всем, что на основе Gnome сделано. Вот тут есть возможные решения askubuntu.com/...me-terminal/128800#128800
Ну десятка років ще точно немає (нода існує з 2011), але коли я ще починав працювати з проектом, то такої фічі не було.
Первые версии ноды появились в 2009. И «max-old-space-size» был доступен с самого начала, ибо это флаг v8.
news.ycombinator.com/item?id=3006608 (вот тут упоминания о нем в 2011)
Цілком можливо, що обране рішення не оптимальне, і, маючи достатньо досвіду, можна обрати щось краще. Проте, модуль робить те, що від нього вимагається. Та й, зрештою, треба було працювати з тим що було. Заміна логера в такому об’ємному проекті не тривіальна задача.
Вообще у такой штуки как логгер всегда одинаковый интерфейс взаимодействия. Инициализация может быть разной, но методы всегда одни и те же. Поэтому замена логгера в проекте любой величины должна быть довольно тривиальной задачей. Если это не так, то, возможно, архитектура всего проекта нуждается в скорейшем пересмотре.
У Вас є якісь конкретні рекомендації щодо альтернатив?
Самый простой и хороший вариант —
console.*и простая обертка над ним (если нужно) для отключения вывода в зависимости от каких-то переменных по типу LOG_LEVEL.
У ранніх версіях Node.js це обмеження зумовлено архітектурними причинами й залежно від розрядності інтерпретатора могло мати розмір до 1,5 Гбайт (1400 Мбайт для х64 та 700 Мбайт для х86).
Сейчас оно работает практически точно так же: значения чуть другие (зависят от кол-ва памяти в системе)
У нещодавніх версіях за бажанням максимальний розмір можна збільшити за допомогою параметрів командного рядку (див. —max-old-space-size)
Это доступно с версий 0.Х.Х. В галактических рамках десяток лет это конечно же ничто, но все-таки.
Але в нашому випадку саме журналювання «виїдало» доступну пам’ять й зумовило OOM.
Не удивительно. Мало того, что в выбранном логгере куча абсолютно ненужного для журналирования кода, так оно еще и выполняется внутри основного процесса. В идеале в логгере не должно быть ничего лишнего и максимум, что он должен делать — это минимально форматировать переданные аргументы и выводить строку в stdout(err). Остальное должно быть вне основного процесса.
Але чому ці проміси акуратно накопичуються в пам’яті й надалі не стираються звідти, не міг сказати ніхто.
А все потому, что нельзя вот так просто брать, бездумно переопределять методы библиотеки без понимания того, что они вызывают в оригинале и потом ещё передавать туда переменную через замыкание (ладно с переменной, в теории она там «выживать» не должна, но все же городить такой огород...).
Думаю научиться это продавать будет следующая задача «ИИ». И, вполне возможно, что в итоге «ИИ» научится монетизировать свои оценки. Заплатил денежку — не плагиат, или заплатил денежку и «ИИ» подобрал нужные синонимы и нет плагиата.
Сотрудники ThomasCook (бывшие) с вами бы не согласились :).
Я, признаться, думал над этим, но все же как-то не вяжется 200Мб/час с мегабаксами. Хотя там мегабайт — тут мегабакс. Может вы и правы.
Каждые 2 часа мы получаем и сохраняем до 400 мегабайт информации.
Итак tl;dr;
Ради каких-то пары десятков мегабайт данных в минуту автор поднял кучу всякого говна, которое есть ресурсов в несколько раз больше, чем это был бы один монолитный сервис. Для того чтобы все это поддерживать надо еще содержать не только разработчиков, но и девопсов, возможно отдельных админов базы и т.п. По итогу получили продукт ценой в несколько килобаксов на разработку и столько же на поддержку, который бы можно было бы на каком-нибудь фриланс сайте заказать за несколько тысяч.
Микросервисы — архитектура будущего для украинских бодишопов, ибо так можно продать в разы больше джунов по цене сеньоров.
PS: Читайте в следующих выпусках.
* Весь наш зоопарк мы решили развернуть на высокопроизводительном кластере с использованием kubernetes. В итоге производительность поднялась до рекордных 250Мб в час.
* Частичный переход на cloud-based решения, чтобы привлечь дополнительных специалистов на проект.
Скорее всего тут, как в универе: для перехода на следующий уровень нужны публикации около- и псевдо-научных материалов в известных журналах.
Зная качество кода и некоторых отдельно взятых «техлидов», которые работали на томаскуке, то «встять» это как раз то про томаскук.
Просто нереальный «свежак»:
i.imgur.com/K9hm1DQ.png
i.imgur.com/tHF5gtf.png
i.imgur.com/wu32MDN.png
По сокетио то же самое:
i.imgur.com/xRwOVMq.png
Некротехнологии.
Даже зависимости никто не обновляет.