@@TimurShemsedinov Очень интересно как вы работаете в данном редакторе в действительно over больших проектах. Там где куча файлов не считая node модулей. Например как вы обходитесь без поиска по проекту, удобного ui для git конфликтов, и так далее
@@bogdanpavlovskiy3953 в этом редакторе есть поиск по файлам и каталогам, даже по маскам и регулярным выражениям, есть замена. Все операции с git я делаю в консоли, и вообще большинство профессионалов не используют для гита UI и все делают в консоли, даже работая при этом в сложных IDE, потому, что из UI доступны 10% всех возможностей гита, вот как вы делаете cherry-pick, interactive rebase, fixup commits, squash, изменение remote и прочее?
40:08 "Благодаря библиотечке 'cluster' createServer сделается только в master-процессе...". Звучит как эдакая "магия", при чём контринтуитивная. Подскажите, пожалуйста, какие-то источники и статьи, в которых подробнее об этом можно почитать. Спасибо
Небольшая поправка для regexp: вместо `const rx = new RegExp(key.replace('*', '(.*)'))` стоит делать `const rx = new RegExp(key.replace(/\*/g, '(.*)'))`, чтобы все параметры вошли в массив. Также интересует вопрос - стоит ли расширять резолверы типов добавлением хедеров с ContentType?
А я вот не понимаю одного момента. Мы когда отправляем ссылку на сокет в воркер через 'message' и апдейтим сервер в него, с последующим эмитом 'connection', что произойдет если в этот момент на балансер придет еще запрос, а http сервер на воркере еще не обработал запрос, он обработается нормально? мы же запишем уже другой сервер в сокет. Можно пояснить этот момент?
2 вопроса касательно лекции 1) В сериализаторе types необходимо писать уже асинхронный код? (async/await, promises, запрсы к бд и стороннему API) 2) Как все-таки можно избежать рекурсии в serve функции Спасибо
1. Насколько я помню, в этой лекции у меня все примеры имеют или синхронные сериализаторы или асинхронные на колбеках. Можно делать и на промисах или асин-эвейтах, но я не понимаю, почему у Вас в скобках написано в вопросе о сериализаторах про запросы к БД и АПИ. В новой лекции по АПИ сериализаторы я вообще убрал: th-cam.com/video/-az912XBCu8/w-d-xo.html 2. В каком именно примере рекурсия, можно ссылку на пример или время в видео?
@@TimurShemsedinov Подразумеваю, что можно реализовать с помощью async/await или же через promisы сторонние запросы (к бд, к API)? Или так лучше не делать?
вопрос касательно обработчика http.createServer((req, res) => { res.end(router({ req, res }) + ''); }).listen(8000); в исходнике NodeServer/native-advanced/server.js Если мы перепишем этот синхронный обработчик просто добавив async (req, res): http.createServer(async (req, res) => { res.end(router({ req, res }) + ''); }).listen(8000); станет ли обработчик асинхронным и не блокирующим приход новых запросов как в исходнике NodeServer/native-async/server.js ?
Не станет, код не становится асинхронным от использования асинхронных контрактов (колюеков, промисов, async/await, асинхронных итераторов и т.д.), нужно, чтобы в коде были операции ввода-вывода, которые разрывают последовательное выполнение потока js-кода. Смотрите курс по асинхронному программированию.
But note that route handlers still should not contain business logic, only calls to submodule with business logic because mixing network, db, business, math, rendering, security, logging etc. to a single handler is not a good idea. See terrible example here: github.com/HowProgrammingWorks/AbstractionLayers/blob/master/JavaScript/badServer.js and following: th-cam.com/video/d_vyO2CkiOc/w-d-xo.html and th-cam.com/video/O7A9chb573E/w-d-xo.html I'll publish special lecture to clarify this issue.
@@user-qp6yp4qk9i да, потому, что число это скаляр, а функция передается по ссылке. Посмотрите мои вводные лекции в программирование и в JavaScript, чтоб таких вопросов не возникало при использовании ноды.
То что нужно)
Очень интересно смотреть реализацию важнейших механизмов веб-сервера на нативе, благодарю!)
Только, что это за редактор, а-ля "ностальджи"?)
Ну вот завтра будет лекция по сессиям и кукам и постепенно по всем темам для нативной реализации с5рвера пройдем
ru.wikipedia.org/wiki/Midnight_Commander
@@TimurShemsedinov Очень интересно как вы работаете в данном редакторе в действительно over больших проектах. Там где куча файлов не считая node модулей. Например как вы обходитесь без поиска по проекту, удобного ui для git конфликтов, и так далее
@@bogdanpavlovskiy3953 в этом редакторе есть поиск по файлам и каталогам, даже по маскам и регулярным выражениям, есть замена. Все операции с git я делаю в консоли, и вообще большинство профессионалов не используют для гита UI и все делают в консоли, даже работая при этом в сложных IDE, потому, что из UI доступны 10% всех возможностей гита, вот как вы делаете cherry-pick, interactive rebase, fixup commits, squash, изменение remote и прочее?
@@TimurShemsedinov Ну, на самом деле, все, что Вы перечислили, можно сделать в webstorm. Хотя вот например bisect сделать нельзя.
40:08 "Благодаря библиотечке 'cluster' createServer сделается только в master-процессе...". Звучит как эдакая "магия", при чём контринтуитивная. Подскажите, пожалуйста, какие-то источники и статьи, в которых подробнее об этом можно почитать. Спасибо
Только исходники ноды github.com/nodejs/node/tree/main/lib/internal/cluster
Почему на 29:49 вы говорите, что у нас синхронный сервер? Разве сам факт того, что мы передаём в createServer коллбэк, не делает его асинхронным?
Чуть ранише на минуту отмотайте и пепесмотрите. Там все функции на роутинге синхронные
Небольшая поправка для regexp:
вместо `const rx = new RegExp(key.replace('*', '(.*)'))`
стоит делать `const rx = new RegExp(key.replace(/\*/g, '(.*)'))`, чтобы все параметры вошли в массив.
Также интересует вопрос - стоит ли расширять резолверы типов добавлением хедеров с ContentType?
А я вот не понимаю одного момента. Мы когда отправляем ссылку на сокет в воркер через 'message' и апдейтим сервер в него, с последующим эмитом 'connection', что произойдет если в этот момент на балансер придет еще запрос, а http сервер на воркере еще не обработал запрос, он обработается нормально? мы же запишем уже другой сервер в сокет. Можно пояснить этот момент?
2 вопроса касательно лекции
1) В сериализаторе types необходимо писать уже асинхронный код? (async/await, promises, запрсы к бд и стороннему API)
2) Как все-таки можно избежать рекурсии в serve функции
Спасибо
1. Насколько я помню, в этой лекции у меня все примеры имеют или синхронные сериализаторы или асинхронные на колбеках. Можно делать и на промисах или асин-эвейтах, но я не понимаю, почему у Вас в скобках написано в вопросе о сериализаторах про запросы к БД и АПИ. В новой лекции по АПИ сериализаторы я вообще убрал: th-cam.com/video/-az912XBCu8/w-d-xo.html
2. В каком именно примере рекурсия, можно ссылку на пример или время в видео?
@@TimurShemsedinov 32:53
@@TimurShemsedinov Подразумеваю, что можно реализовать с помощью async/await или же через promisы сторонние запросы (к бд, к API)? Или так лучше не делать?
@@PerfectSwingDance сторонние запросы можно и нужно делать, но в обработчиках, а не на сериализаторе
Почему Марк Аврелий так плохо относится к Java?)
Марк Аврелий любит мультипарадигменное программирование, как он может любить язык, в котором все парадигмы нужно реализовывать через ООП
Java is a crap. lol
вопрос касательно обработчика http.createServer((req, res) => {
res.end(router({ req, res }) + '');
}).listen(8000);
в исходнике NodeServer/native-advanced/server.js
Если мы перепишем этот синхронный обработчик просто добавив async (req, res):
http.createServer(async (req, res) => {
res.end(router({ req, res }) + '');
}).listen(8000);
станет ли обработчик асинхронным и не блокирующим приход новых запросов как в исходнике NodeServer/native-async/server.js ?
Не станет, код не становится асинхронным от использования асинхронных контрактов (колюеков, промисов, async/await, асинхронных итераторов и т.д.), нужно, чтобы в коде были операции ввода-вывода, которые разрывают последовательное выполнение потока js-кода. Смотрите курс по асинхронному программированию.
Дуже цікаво, але мабуть як теорія щоб розуміти як воно працює всередині тих же фреймворків, бо якщо пройтися по вакансіям усі вимагають фреймворки
Ну от почитайте питания на інтерв'ю які я разповсюджую як галузевий стандарт github.com/tshemsedinov/NodeJS-Interview-Questions
Дуже раджу це подивитись th-cam.com/video/-az912XBCu8/w-d-xo.html
routing is simple and amazing
But note that route handlers still should not contain business logic, only calls to submodule with business logic because mixing network, db, business, math, rendering, security, logging etc. to a single handler is not a good idea. See terrible example here: github.com/HowProgrammingWorks/AbstractionLayers/blob/master/JavaScript/badServer.js and following: th-cam.com/video/d_vyO2CkiOc/w-d-xo.html and th-cam.com/video/O7A9chb573E/w-d-xo.html I'll publish special lecture to clarify this issue.
Как запускать сервер на node?
Если это не понятно, то нужно смотреть это видео, например, на 4:40 я запускаю
@@TimurShemsedinov проморгал. Спасибо.
@@TimurShemsedinov 21:55 возраст не обновляется потому, что мы передаем число, а не функцию?
@@user-qp6yp4qk9i да, потому, что число это скаляр, а функция передается по ссылке. Посмотрите мои вводные лекции в программирование и в JavaScript, чтоб таких вопросов не возникало при использовании ноды.