🚀 Node.js 🧑💻 Введение в технологию ✨
HTML-код
- Опубликовано: 8 июн 2024
- Новый курс по Node.js github.com/HowProgrammingWork...
Github автора: github.com/tshemsedinov
Код из лекции: github.com/HowProgrammingWork...
Таблица поддержки возможностей в версиях ноды: node.green/
Автоматизация проверки безопасности кода: snyk.io/
Встроенный в npm аудит безопасности: docs.npmjs.com/cli/v8/command...
0:00 план лекции
0:56 место node.js в современном вебе
2:03 что такое node.js
7:37 как работает node.js
11:42 event-loop phases
16:12 почему node.js
17:45 основные идеи node.js
28:58 преимущества node.js 2928 недостатки node.js
30:30 начало работы с node.js
33:05 приложение на node.js
44:50 встроенный в node.js API
41:18 менеджер пакетов NPM
51:09 производительность
53:27 память
55:29 сферы применения node.js
58:50 для чего часто применяют node.js
1:00:30 для чего node.js применяют реже
1:01:10 для чего node.js применяется совсем редко
1:02:02 для чего node.js плохо подходит
1:03:06 какие версии node.js актуальны
1:06:12 что нового
1:09:22 проблемы node.js
1:20:21 что делать?
1:23:23 как выбирать зависимости?
1:24:53 недостатки культуры разработки
1:25:44 уязвимости
1:27:30 как писать на ноде качественно
1:28:56 enterprise development requirements
1:29:50 как понять что что-то пошло не так
1:30:56 ссылки на лекции, доклады и остальные материалы
Огромное спасибо за лекцию, я впервые на вашем канале и могу сказать точно, что этот переход по ссылке был для меня одним из лучших событий! Всех благ и процветания!
спасибо огромное, у вас огромный вклад к прорастанию умов среди js разрабов
З новим роком, Тимур! Мирного неба, стойкости и здоровья вам! 🤍
Тимур, благодарю за труд! Все четко и по-делу!!!
круто, дякую, що не стоїте на місці, а постійно оновлюєте і розвиваєте свої курси. Окрема подяка за оновлення візуального стилю. Вірю, що він стане більш легше сприйматися ніж монотонний зелений.
Спасибо за вашу лекцию. Всего вам наилучшего в Новом году! Будем всегда рады вашим новым видео. Знания изменят Мир!
Автор профи однозначно! Кто хочет научиться писать микросервисы nodejs,docker,rabbit,,, - заходите в гости🤝
вот это подарочек!💫💥большое спасибо и с Новым Годом!
Выражаю безмерную благодарность!
Тимур, спасибо большое за лекцию 🔥
Как я Вам благодарна Вы не представляете , спасибо Вам большое !!!
Спасибо, за лекцию! Очень информативно.
Ура, прямо в мой др. лучший подарок
С днём рождения! Добра тебе и неси добро, желаю наплодить как можно больше поддерживаемого кода и как меньше говнокода!
з днем народження, бажаю здоровья
Тимур, спасибо, с первых минут - превосходно! Чтоб ты был здоров! С новым годом! С Рождеством!
Боже люблю лекции от Тимура, их так долго можно рассасывать, изучать.. Спасибо большое:D
будзем глядзець. шчыры дзякуй!)
Спасибо большое за ваши видео. По новому открыл для себя ваш канал. Не всегда из-за работы или учебы получается так-же глубоко проанализировать моменты, а здесь все по полочкам. Здоровья вам!
Потрясающая лекция, спасибо!
классная презентация, выглядит свежо! Спасибо
Дякую за лекцію. З Новим Роком!
Большое спасибо, очень ёмко и доступно
Тимур лучший! 👍
Спасибо за материал!
Думаю нужно больше раскрутки, зашел на курс чудом, после интервью у Бороды
Ну я вообще рекламы не даю )))
Тимур, вы своими идеями задаёте новое течение в программировании для широкой аудитории, я буду следовать за вами, как за хорошим учителем и наставником!
Вы сообщаете мне приятные вещи
Дякую за лекцію! Вона дуже крута, я в захваті ❤
Cпасибо Тимур! Очень сложно найти обучающие ролики
Спасибо 🎉🎉🎉 очень круто
Спасибо за отличную лекцию и подачу!
16:17 - "JavaScript уже всё победил" - услада для ушей ))
и страдание для всех остальных, в том числе для разрабов
Мне кажется, или же в prepareFile есть несколько абстракций, которые было бы хорошо разнести? Ну хотя бы для того, чтобы снизить ментальную нагрузку для читающего -- вынести в названные функции. Ту же проверку на уязвимость, к примеру. Или пояснить, почему substr(1) принимает магическое число 1?
Спасибо!
Вот спасибо! И за маленький статический сервер - отдельное, чтобы было проще (без Express) на Heroku свой SPA хостить, например.
Чудовий контент!!!
Это не контент, а лекция )
@@TimurShemsedinov тим цінніше,👍
На prepareFile возложено много ответственности(валидация существования пути, формирование ответа, открытие стрима). Не лучше ли это разбить на несколько функций с одной ответственностью?
толкоВо 👍
Уважаемый Тимур с новым годом вас! Не подскажите новичку какую подписку посоветуете взять на патреоне?
10 - это участие в созвонах и архив созвонов. 204 - это практический курс по ноде
З Новим Роком!
Чудова лекція. Все цікаво і захопливо.
Тимур, скажіть, це буде серія лекцій, які доступні на Patreon, по підписці?
Це новий практичный курс github.com/HowProgrammingWorks/Index/blob/master/Courses/NodeJS-2022-2023.md
Помню году версии 0.12a, эх были времена😊
Советую кто прогает на разных языках поставить asdf вместо nvm. Под капотом использует nvm, но даёт единый интерфейс для всех языков
1:30:00, третий пункт, как же это жизненно, иногда на десятки минут затягивается push commit из-за этого!!
Звук тиховат. В остальном всё отлично спасибо
В описании видео опечатка в таймкодах на фрагменте: преимущества Node
Доброго вечора.
попав на ваш канал і є питання щодо курсу. Якщо я лише починаю вивчення і маю поверхневі знання, то чи варто купляти доступ до курсу?
можливо варто пройти якісь тести на визначення "придатності" до якісного проходження курсу?
Подскажите пожалуйста, что изучить чтобы понять изоляции и использование многопоточности?
Вы открыли новый мир ноды для меня
У меня есть старый бесплатный курс github.com/HowProgrammingWorks/Index/blob/master/Courses/NodeJS.md и новый платный github.com/HowProgrammingWorks/Index/blob/master/Courses/NodeJS-2024.md
Здравствуйте Тимур, А для Enterprise проектах только Java и C#? NodeJS в этом плане плохо?
Можно, но нужна другая культура разработки и другие требования к надёжности и безопасности. Послушайте тут github.com/HowProgrammingWorks/Index/blob/master/Courses/NodeJS.md#%D0%B2%D0%B5%D0%B1%D0%B8%D0%BD%D0%B0%D1%80%D1%8B-nodejs-for-enterprise
Тимур, скажите пожалуйста, а сами презентации можно тоже выкладывать, чтобы не делать скриншоты?
Нет, презентации я не выкладываю, но примеры кода из них будут на на гитхабе
@@TimurShemsedinov Код нашел. По презентации понял. Спасибо!
Тимур здравствуйте!
Подскажите, а можно ли создать константу внутри класса? (const value = true) Так чтобы она была доступна как константа у экземпляров класса, но не была размещена снаружи класса(как value, а не как this.value или class.value)?
Это называется статическое поле класса (public static field): class Server { static port = 8080; }
@@TimurShemsedinov К такому полю можно обратиться как Server.port. А можно ли сделать константу, как если бы она была внешней (const port = 8080), но сделать ее внутри класса, доступной для методов и экземляров класса?
@@martDKNY К статическому полю только как Server.port, а вот если поместить const port = 8080; в файл server.js и после объявления константы сделать class Server {} и потом экспортировать module.exports = { port, Server }; то такая константа видна внутри класса Server как port и из любого другого файла можно ее импортировать как const server = require('./server.js'); и обращаться как server.port, а к классу как server.Server или импортировать просто деструктуризацие const { port, Server } = require('./server.js');
я даже и не знал, что в npm есть репорты на уязвимость кода
Здравствуйте,интересно узнать ваше мнение насчет ChatGPT.Говорят,что он пишет код на уровне джунов, хотя это совсем новая ИИ.
От кода джунов больше вреда, чем пользы, так что, на отладку и интеграцию того, что он напишет будет уходить больше времени, чем на само написание бы уходило
Доброго времени суток, будут ещё лекции по nodejs ?
Да, тут целый курс в открытом доступе github.com/HowProgrammingWorks/Index/blob/master/Courses/NodeJS.md а тут школа по ноде практическая с семинарами и проектами на год github.com/metatech-university/NodeJS-2022-2023
Здравствуйте, я правильно понимаю, что промисы в колбек матрице, находятся в очереди с таймерами?
Нет, в очереди микротасков
Посоветуйте пожалуйста JS фремворк на бэке, я использую express, но вы говорили он плохой,а к примеру nest использует ts и не так гибок. Какой фремворк посоветуете ?
Fastify
Что не так с express?
@@MrDao92 говорят для импотентов)
@@MrDao92 тут подробно разобрано что не так ruclips.net/video/RS8x73z4csI/видео.html
Хотелось бы подробнее послушать, чем сервер приложений лучше? вроде столько мароки было с этими томкатами и дотнетами, что история про контейнеры в кубе, когда само приложение стартует себя как сервер, для эксплуататора так манна небесная просто. Зачем вообще был придуман первый подход, я так и не понял(
Сервер приложений берет на себя все функции, кроме бизнес-логики, это автоматически даёт DDD и переиспользование системного кода, не нужно решать в каждом приложении кучу вещей, логирование, роутинг, старт, грейсфул шатдаун, обработку ошибок даже
35:22 А не лучше было бы индексы для true и false поменять местами?
Upd: Сорри, далее разобрался почему false под индексом 1. Возвращает false если промис rejected.
Можно ссылки в виде qr кодов в презентацию вставлять
Ссылки добавлю сегодня под видео
57:35 стоит ли тогда писать сервер на другом языке? Например на java/c# или даже rust/c/c++
Нода написана на C++, системный код серверов нормально писать еще на C, Rust, Java, C#, и все будет примерно на одном уровне оптимальности и надёжности, тот же nginx не хуже оптимизирован, чем сервера на rust, но сил в это влито конечно... а прикладной код не важно на чем писать, он же только пару процентов нагрузки на себя возьмет, вот js это удобно
@@TimurShemsedinov Я понимаю, что нода на плюсах, но все-таки нода - это нода, там js, а он некомпилируемый. Было бы интересно провести бенчмарки сервера на с++ и ноды, где нет сложных математических вычислений и это не real time система. Все-таки с++ компилируется, а это куча оптимизаций: инлайн функций, предотвращение ненужного выделения памяти и тому прочее + отстутсвие GC тоже снимает лишнию нагрузку
@@grenadier4702 это сравнение c++ с c++, совершенно бессмысленно. Там js не будет задействован если не будет сложной бизнес логики и юзерленд-кода, кроме того js компилируется и оптимизируется получше c++, в v8 такое кол-во оптимизаций, что даже плюсам не снилось, кроме того, такие бенчмарки есть
@@grenadier4702 вот тут www.techempower.com/benchmarks/#section=data-r21&test=composite
@@TimurShemsedinov Там, по моему, вообще ни одной http библиотеки для плюсов или может я не заметил.
Нода, что-то, очень слабенько себя показывает по сравнению с теми же библиотеками на rust
А на чем основано ваше утверждение, что код, сгенерированный после JIT компиляции движка V8 будет работать оптимальнее, чем после любой другой AOT компиляции?
Очень долго орал по поводу классов и malloc))))
Годнота подьехала
Аллах разы олсун брат
Что лучше применять для backend чистую ноду или express?
Конечно чистую ноду, посмотрите вот этот доклад про мидлвары: ruclips.net/video/RS8x73z4csI/видео.html
@@TimurShemsedinov спасибо, хорошо
На timestamp-е ~1ч23мин показано, что не рекомендуется использовать lodash. Почему? Что с ним не так?
В нет нет ничего, что бы уже на современном JavaScript не делалось бы нативно
Починаю рік з вивчення JS
Стоит ли вообще изучать NodeJS, если есть Go ? Какие плюсы у Node по сравнению со вторым? Понятное дело, в руках мастера из Node может получиться хороший инструмент? Не не получится ли из Go инструмент получше с меньшими усилиями? В какой области NodeJS лучше Go ?
Сколько людей уже пишут на js, а сколько на golang ? Вопрос в том, что мизерный выигрыш в производительности не покроет затраты на переучивание и переписывание
@@TimurShemsedinov спасибо за ответ. Я нисколько не специалист в этих технологиях. Так, написал пару учебных проектов. Поэтому хотел узнать мнение профессионала.
Как думаете, Тимур, заменит deno ноду? есть ли смысл фокусироваться на deno сейчас?
Ни какого преимущества у него нет, так что не просто не заменит, а не взлетит
@@TimurShemsedinov Вечер добрый. А что думаете о перспективах Bun?
@@ITOSNOVA через пару лет можно посмотреть, пока не открывал даже
Сейчас везде у нас в Казахстане требуют typescript. Я написал свой небольшой проект на 1,5 тыс. строк логики на js (react, redux и др.). Начал переписывать и переписав 50% процентов проекта, у меня уже вышло около 3тыс. строк ts. Увеличение объема в разы. Я , конечно, не мастер и плохо пишу код пока, но увеличение количества строк в разы меня как то пугают. У кого как? Пишите ли вы проекты на чистом js и до каких пределов это можно осуществлять?
Я пишу на js и добавляю тайпинги .d.ts
@@TimurShemsedinov честно это сложно мне понять без кода. Есть ли в примерах по ссылкам в данном видео подобное? Если есть, то я найду)
А до этого JSDoc в js не писали что-ли? Если сравнивать ТС c js по строкам, то с js + jsdoc.
Нода не підходить для ріалтайму тільки через гарбадж? А якщо вимкнути гарбадж?
Для ріалтайм (керування транспортними засобами, технологічним та медичним обладнанням, ліфтами, прецизійними приладами та інше) не підхлжить навіть Java та C#. Там важливо, щоб не тільки не було зупинок для гербедж колекцена, але не було раптових оптимызацій, навіть прискорення, тобто потрібно, щоб ми мали змогу при компіляції порахувати такти. Але часто ріалтаймом називають щось не таке точне та вимогливе, і там можуть піти навіть мови з gc, чи з вимкнутим gc
Подскажите пожалуйста, чем старый курс от нового отличается? И по поводу патреона, из России не оплатить же так просто, и я чего-то не знаю?
Сложно согласится, что в JS низкий порог входа, вот в PHP да, был :).
За презентацию спасибо. Я правильно понял, что новый курс по ноде можно получить подписавшись на Пантеон?
Чтобы начать писать хоть что-то то низкий, а чтобы сделать что-то серьезное, то один из самых высоких. Как взять курс тут описано github.com/HowProgrammingWorks/Index/blob/master/Courses/NodeJS-2022-2023.md
@@TimurShemsedinov Если не сложно проверьте свой Патреон, там Expert только месячная подписака (€21.50 / month + tax). Годовую не вижу, может там каке-то ГЕО ограничения? :)
Годовая работает, но выбор годовой видимо идёт на следующем шаге после выбора Expert
@@TimurShemsedinov О ноде вы говорите более уверенно, чем о подписке .
Ви вказали, що можливості lodash переоцінені і майже все є у ноді. Що порадите для порівняння масивів і обьєктів?
Все є навіть не у ноді, а у js нових стандартах
Де потрібні такі порівняння у реальних проектах? Це у тестах потрібно... Так у ноді в бібліотеці вбудованій assert є глибоке порівняння
@@TimurShemsedinov Отримуємо масив id користувачів, наприклад, які зараз в чаті. При його зміні хочемо запустити якийсь івент. Це будуть різні екземляри массивів, бо один із стейту, інший по апі отримали, але нас цікавить саме поелементне порівняння. Я з голови придумав кейс, можливо є більш юзабельні. Дякую за відповідь. І за курс:)
где я могу присоединиться к курсу?
Тут все актуально github.com/metatech-university/NodeJS-2022-2023
хотів уточнити, наприклад res.writeHead, file.stream.pipe, listen(PORT) і все в такому ж дусі, що повязанно з нодою, це все буде якось більш детально пояснюватись далі на курсі чи людина вже повинна прийти із розумінням всього цього?
Так, звичайно, я ж оприлюднив програму, стріми та сокети, ми все розбираємо, спочатку на моїх прикладах, потім ви пишете свої та ще раз розглядаємо, потім вже на проекті ще раз проговорюємо, так засвоюється
@@TimurShemsedinov клас, дякую)
42:50 Чи не краще використовувати для булевих змінних імена, які починаються з “is”? isExist і isFound замість exists i found відповідно. Просто щоб інтуїтивно було зрозуміло, що така змінна містить булеве значення?
Нет, имя идентификатора не должно дублировать тип, иначе мы придём в венгерской нотации, это уже в Delphi проходили
@@TimurShemsedinov если не ошибаюсь, про венгерскую нотацию хорошо написано в книге "чистый код". дополню просто, вдруг кому будет полезно. а то часто возникают вопросы в такие моменты - что это, где про это почитать или узнать.))) там не только про ее, много про что.
@@TimurShemsedinov Не до конца понятно что здесь 'is' дублирует, о каком типе идёт речь? isExists, допустим, переменная.
очень не хватает курсора или указателя
Нарешті у вас нормальний звук))))
Розсмішив коментар :) Я меломан, але тут я точно шукаю не якість звуку :-D
А какие есть в мире продукты, сделаные на Метархии, которые можно посмотреть браузером?
www.handy.ai/
resonanceholding.com/
qoteq.com/
sincetv.co.uk/
Но вообще это решение больше для корпоративных информационных систем типа ERP, SCM, CRM, BI, BPMN
express тоже того? не айс?
Везде где есть middleware, можно выбрасывать всю кодовую базу, это обязательно будет простыня кода или высоко связанные абстракции, даже, если разделено на части, то в одном месте меняешь, а в 20 местах правишь. Смотри тут ruclips.net/video/RS8x73z4csI/видео.html
@@TimurShemsedinov Скажу сразу. Я всю рабочую жизнь (30 лет) проектировал системы для промышленных предприятия. это с++ и база данных в одной локальной сети. Проекты очень большие. Но вот почемуто именно сейчас захотелось новых технологий. Плюсом очень близка доменная структура приложения, к слову, лет 20 назад когда импортые системы захлестули постоветское простанство имеенно монолитность и ставилась в плюс.. А то что сейчас можно определить как доменная организация - называли ласкутная автоматизация. Так вот, немного отошел от темы. Если Вы говорите что мидлваре не должно быть, то как быть с тойже аутентификацией, которую суют в этот мидлваре? Или я что-то не так понял, разговор же про експресс?
@@MakarenkoSasha Механизм сессий и аутентификацию можно сделать без мидлварей, примеры есть у меня в лекциях
Писав дещо на Django але покинув через малу затребуваність Пайтону. Сів вчити, вдосконалювати Ноде/js... Поки що мабуть одні з найцікавіших матеріалів що побачив. Тільки незрозуміло скільки це коштує, бо все що бачу виглядає... безкоштовно :/
А, бачу, різонабл прайс, але думаю трохи подивлюся попередніх відео спочатку. Дякую
Ну тут є два курси, безкоштовний та платний за $200+податки. Платний це не тільки відео, а завдання, семінари, відповіді на питання, іноді навіть ревю коду, лайвкодинг на дзвінках, що їх 2 на тиждень зазвичай, курс на рік, але можна просуватися із своєю швидкістю. Посилання:
* Безкоштовний github.com/HowProgrammingWorks/Index/blob/master/Courses/NodeJS.md
* Платний github.com/HowProgrammingWorks/Index/blob/master/Courses/NodeJS-2022-2023.md
как понять что пошло не так:
- all of above
Не понял
Привет из России. Урал. Мы против во#ны, мы нормальные люди, но нас мало. Очень благодарны за видео.
а кто за войну? в россии нет таких. а вот когда я работал в европейском банке реконструкции и развития. нам там отличную лекцию прочитали про то как корпорации видят будущее России и Украины, все идет по их плану. А это было 20 лет назад .Так-что думайте, что пишете.
Дякую Вам за роботу
Kyiv not Kiev , а лекція цікава.
Дякую
Бейджин чи Пекін?
@@TimurShemsedinov Бейджін.
І в Китаї, і в латинській транслітерації
@@IvaskivRoman тобто Ланден, Рома та Парі ?
@@TimurShemsedinov Ок, резонно.
А яка офіційно затверджена транслітерація для Києва?
І зокрема для КПІ, якщо послуговуватись назвою представленому на англійській версії сайту КПІ, Kyiv Polytechnic Institute
@@IvaskivRoman Я використовую не трансліт, а англійську мову, КПІ не встановлює правил англійської, є багато написань, то й що...
в 2023 уже пора дино разбирать...
Дино не взлетел
@@TimurShemsedinov :) Вы же прекрасно понимаете что этот процесс инерционный, сообщество ко всему новому относится скептически, нужно время для того чтобы дино взлетел..
@@kitN просто времени для этого мало, нужны ещё и причины, почему это лучше ноды, а таких причин нет ни одной
@@TimurShemsedinov не буду спорить, так как пока что даже Райан говорит, что Deno ещё сырой. Там видно будет, про причины ничего не могу сказать, потому приму Ваше мнение, спасибо.
@@TimurShemsedinov 1:17:30 вот же у вас на слайде несколько причин. Deno и Bun пытаются их решать. Насколько это получается, есть ли прогресс - можно понять только сравнительными тестами.
Правильно в нашем государстве решили запретить англицизмы, ничего не понятно..
Спасибо!