Event Loop от А до Я. Архитектура браузера и Node JS. Движки и рендер. Самое подробное видео
Ғылым және технология
В этом ролике мы разберем архитектуру браузера и node js. Подробно изучим принцип работы Event loop, очереди Microtask и macrotask. Поговорим про стадии рендера, про шаблон reactor и демультиплексор событий. Про однопоточную и многопоточную модель.
Мой курс "Продвинутый Frontend. В production на React" - ulbitv.ru/frontend
Плейлист с роликами по архитектуре - • Архитектура ПО
Таймкоды:
00:00 ➝ Введение
00:40 ➝ План урока
01:40 ➝ Архитектура браузера
08:30 ➝ Браузерный Event loop. Введение в концепцию однопоточного и многопоточного программирования. Асинхронная модель.
10:20 ➝ Call stack, стэк вызовов. Рекурсия. Переполнение стека.
13:30 ➝ Очередь задач. Асинхронный код.
15:25 ➝ Задачи JS движка (heap, call stack, выделение памяти и сбор мусора)
17:20 ➝ Web API. Таймауты и слушатели событий
20:10 ➝ Промисы и очереди микро и макро задач
26:00 ➝ Что порождает микротаски, а что макротаски?
27:50 ➝ Наглядный пример работы Event loop в коде
30:40 ➝ Что такое MutationObserver и как он работает?
34:10 ➝ Стадии рендера. DOM, CSSOM, Render tree, style calculation, layoyt, paint, composite.
45:40 ➝ Что такое Node js. Из чего состоит? Устройство Node js. Движок V8 и Libuv
51:40 ➝ Блокирующий и неблокирующий I/O (ввод и вывод)
541:40 ➝ НЕблокирующий и неблокирующий I/O
01:00:30 ➝ Планировщик потоков
01:02:30 ➝ Демультиплексор событий и шаблон Reactor
01:07:20 ➝ Event loop в node js. Фазы и очереди
01:11:00 ➝ Интересные примеры с event loop
01:13:45 ➝ Время ставить лайки и писать комментарии для поддержки и продвижения видео, всем спасибо!)
Поддержать меня и мой канал вы можете по ссылкам ниже.
Ссылка на мой телеграм канал - t.me/ulbi_tv
Patreon/boosty (доступ к бонусам) - boosty.to/ulbitv
Qiwi кошелек - qiwi.com/n/BODYE821
Яндекс деньги - yoomoney.ru/to/4100116193037469
Пікірлер: 973
Заморочился, как всегда и сделал пушечку, молодец 👏
@UlbiTV
Жыл бұрын
Дима, спасибо!
@BestHitsVideo
Жыл бұрын
@@UlbiTV привет, есть ли у тебя курсы по JS с нуля?
@Quentinrei
Жыл бұрын
@@BestHitsVideo вроде нет
@andreymonchencko3908
Жыл бұрын
Вы вдвоём весь снгшный ИТ ютьюб тащите😅
@reality-analyst
10 ай бұрын
@@UlbiTV есть неточности. Например при переполнении стека вызовов крашится не приложение, а выполнение стека вызов. То есть к примеру интервалы продолжат работать, если речь о рантайме в веб браузере.
Красавчик. Посадил жену, бабушку и дочь смотреть по 10 раз сразу с телевизора, телефонов и планшетов. Все с разных VPNов и IPшников.
Хоспади, ну как же прекрасно то, что ты делаешь! Спасибо тебе огромное за твою работу, не могла нигде на ютубе найти похожий подробный контент. Ты просто лучший!
После этого видоса я как-будто закончил универ по направлению эвентлупер. Огромная благодарность. Ждем собес
@user-lq5wi8gm1e
3 ай бұрын
😁😁
Классное видео! Осталось непонятным, что будет, если в Nodejs Event Loop колбек1 из менее приоритетной фазы (например, "I/O колбеки") добавит в очередь колбек2 из более приоритетной фазы (например, "Таймерные колбеки"). Варианты: 1) Колбек1 сработает сразу после колбек2 (по аналогии с микрозадачей, порожденной макрозадачей). 2) Колбек1 будет ждать завершения всех фаз, пока снова не дойдет очередь до его фазы. Больше всего понравилось: - Этапы рендеринга DOM. Ранее видел их при записи Performance в Dev Tools, но не понимал, что именно они значат. - Возможность использовать самописные C++ модули в Nodejs. Думаю, это можно использовать для ускорения вычислений в узких местах и более гибкой работы с многопоточностью (по сравнению с Worker). - Факт того, что в Nodejs свой Event Loop, а не привычный браузерный.
@dmitrykuskov6715
Жыл бұрын
Поэксперементировал с фазами, использовал setImmediate и setTimeout в node v19.6.0. Вот какие результаты получил: 1) Если в глобальной области в любом порядке вызвать setImmediate и setTimeout, то первыми всегда выполнятся колбеки для setTimeout. Видимо это и есть сортировка на фазы. 2) Но если то же самое проделать не из глобальной области, а например, из другого setImmediate или из Promise.resolve().then(...), то сортировки не будет, колбеки будут вести себя как обычные макрозадачи в браузере. 3) Promise.resolve().then(...) выполняется сразу после породившего колбека, как и в случае микрозадачи в браузере. Поэтому напрашивается вывод, что в Nodejs все-таки есть привычные макро- и микрозадачи, просто с некоторыми нюансами (пункт 1). Таким образом, я сам ответил на свой вопрос: ни один из моих вариантов неверный. Судя по всему правильный ответ такой: Колбек1 просто встанет в очередь макрозадач и его фаза никак не повлияет на порядок выполнения.
@flepjack
Жыл бұрын
В этом моменте, когда Тимур сказал, что почему то ВСЕ упускают промисы, и они на самом деле должны быть самыми первыми, возникло подозрение, что что-то тут не так, и скорей всего, Тимур не так понял место микро-макро задач в нодовском цикле событий.
@flepjack
Жыл бұрын
Я про 1:10:07
@dmitrykuskov6715
Жыл бұрын
@Aleksandr Kudrich Не сказать, что это очень интересно и полезно, скорее любопытно, поэтому лень глубоко копаться в литературе. Нашел видео, где наглядно показана работа Nodejs Event loop kzread.info/dash/bejne/aZprmpmMo8rRnqQ.html Основные тезисы: - Пока не выполнятся все колбеки текущей фазы, не начнет выполняться следующая фаза. - Обработчики промисов выполняются между фазами. Таким образом, если "сделать setTimeout и setImmediate внутри Poll", то сначала выполнится колбек из setImmediate, т.к. фаза Check следует сразу за фазой Poll, а только затем колбек из setTimeout. К сожалению это не дает мне ответ, почему при запуске внутри setImmediate двух колбеков: setImmediate и setTimeout, эти вложенные колбеки выполнятся в порядке объявления, если их менять местами.
Спасибо тебе, Тим!!!Топовый блогер, который не только понимает предмет, но и профессионально умеет его донести до людей!
@adelinaromanova8353
Жыл бұрын
+++
@barbatage5078
Жыл бұрын
Самый лучший!
@alexandrkruglyak
Жыл бұрын
Действительно всегда есть чему поучиться, как в преподавании, так и в области. П.С. Ребят, я микросервисы пишу на nodejs, кто в теме - заходите в гости!
Тимур, отличное видео, единственно поправлю тебя, движок Webkit использовался в chrome до 2013 года, сейчас используется Blink насколько я знаю. 2:47
Я подобные знания черпал с кучи разных источников на английском языке, а тут бесплатно и все в одном видео. Красавчик ! :)
только что отметил себе твое видео event loop который на 8 минут, повторить перед собесом и тут подарок))) спасибо! Научил меня реально быстрее, чем курсы в ЯП) без обид ЯП
Аналогов нет, даже на английском ютубе. Спасибо тебе за труд, курс топ!
Когда включал урок, не понимал на какое золото я напал. Гениальная подача, шикарная иллюстрация, абсолютная полнота картины. Подписка, жирный лайк, огромное спасибо!
Потрясающая лекция, спасибо! Было бы здорово когда-нибудь увидеть разбор всех дев-тулзов в браузере и их полезных фишках, о которых мало кто знает и мало кто пользуется. Было бы супер круто, потому что в интернете информация очень разрозненная и разобщенная
@user-fr2os8bn6c
Жыл бұрын
Ответ сами себе уже и написали, мало кто знает и мало кто пользуется, так происходит потому-что мало кому необходимо это. Очень малый круг людей будет заинтересован в таком материале, а труд на этот материал автор должен будет потратить не малый.
@MrKerwell
Жыл бұрын
@@user-fr2os8bn6c event loop, движки и рендер тоже достаточно нишевая тема, но контент по этим темам появился, и народ пошел смотреть. Я не сомневаюсь, что автор потратил много времени и сил на создание и этого ролика. К тому же, если малому количеству необходим материал, это не значит, что он никому не нужен. Умнее и компетентнее станем, зачем отказываться от знаний? Я просто предложил темы для дальнейших курсов, есть небольшой отклик в виде лайков, почему нет? Если автора заинтересует, он может сделать данный ролик на основании рекомендаций своей аудитории, если нет - значит нет.
@xNomandx
11 ай бұрын
Лекция по дев-тулзам браузера и IDE от Яндекса: kzread.info/dash/bejne/Y32Jycl-oJy_Z84.html&ab_channel=Young%26%26Yandex%3A%D1%84%D1%80%D0%BE%D0%BD%D1%82%D0%B5%D0%BD%D0%B4-%D1%80%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B0
а-ху-еть... Я думал что знаю ивент луп, а оказалось что нифига не знаю. Видео пушка. С такой подачей поймёт даже ребёнок
это мы смотрим!
одним словом Прометей, только вместо огня ты приносишь хорошие знания, причем доступные и бедным и богатым. Спасибо большое.
Как всегда уровень! Спасибо тебе огромное, мы это очень ценим!
Огромное спасибо, Тимур! Крутая лекция!
Великолепно! Огромное спасибо!
Ulbi, Я тебя очень прошу не останавливайся и продолжай снимать новые видео. Ты очень сильно помогаешь людям, особенно в эти тяжёлые времена!!!! Спасибо тебе огромное и низкий поклон. "Ты в ответе за тех кого приручил"-Экзюпери. Не бросай нас!!!!!
541:40 ➝ НЕблокирующий и неблокирующий I/O В описании не углядел чуточку :D Спасибо за контент
Спасибо большое за вашу помощь, Тимур. Всё коротко, ясно, всё по полочкам. Спасибо за ваш труд 🙏🏽
Спасибо огромное за такую понятную и визуальную лекцию
Оставлю коммент для продвижения, спасибо
Самое подробное объяснение темы, которое я встречал! Спасибо за твои труды 🙏
Редко пишу комментарии, но это тот случай когда автора действительно хочется поблагодарить за его труд. Видео информативное и, что самое главное, вся информация легко воспринимается и усваивается за счёт приятного визуального оформления. Спасибо за такую сильную работу!
Тимур, благодарю за старания и прекрасную лекцию. Давно ждал 💥💯
Лекция - огонь! ❤ И материал, и способ его подачи - на высоте. Огромное Вам спасибо.
Тимур, спасибо тебе огромнейшее! За то, как все преподносишь и объясняешь именно ты: за подробности, нюансы, манеру, повторения, примеры и акценты Спасибо!
Все еще смотрю, но уже хочу поблагодарить тебя за такой прелестную лекцию, ты самый лучший из всех кого я смотрю
Отличная лекция, огромное спасибо, Тимур.
Тимур, огромная благодарность тебе за твой труд и знания!!!
Спасибо за потрясающую лекцию, пожалуйста продолжай и дальше создавать такой крутой и полезный контент!!!
Спасибо за очередную топовую лекцию!После объяснения попробовал решать задачи по event loop, все решены верно. В лекции всё разложено по полочкам, столько полезной и нужной информации в одном видео. Спасибо Тимур!!!
Это самый лучший ролик, посвященный Event Loop из всех что я видел, подробнее просто нельзя уже сделать. Периодически пересматриваю и каждый раз в восторге. Автору огромный респект, всегда нравились его ролики за отсутствие воды, информативность и отдельное спасибо за то что не впаривает курсы как остальные спикеры.
Наконец-то новый ролик! Как всегда на высоте , Тимур!
Супер тема!!! Обязательно посмотрю!!! Спасибо за труд!!!
Просто мысли мои читаешь, как раз сижу с этим разбираюсь и тут это видео. Спасибо!!!!
Собирался на собеседование по JS и попалось это видео ! Спасибо тебе , автор !
С нодой чутка запутался, а вот с браузером - разобрался на все сто!!! Спасибо за ваш большой труд! Как здорово что в интернете встречаются люди подобно вам )
Спасибо за труд, ждем новые лекции)
Ну ваще! Огонь! Спасибо, Тимур!
Воу, думал что разбираюсь в теме. Выходит что нет, спасибо за такое подробное объяснение!
Хорошо, что показал в конце зацикливание промиса, потому что в середине ролика когда ты объяснял про микрозадачи, ты не рассказал, что обработка промисов(then, catch, finally, а await вообще блокирует выполнение) также попадает в очередь микрозадач, отсюда и зацикливание)
Очень подробный и визуально приятный ролик, спасибо!!
Лекция просто супер. Кстати, по поводу последнего примера, эта проблема называется "starvation in the macrotask queue" ("голодание очереди макротасок", когда промис порождает другой промис в цикле, не давая шанса на выполнение задачам из очереди макротасок). Думаю тоже плюсом будет упомянуть этот термин, если зайдет речь на собеседовании.
Спасибо!
Одна из самых полезных и содержательных лекций, которую я встречал. Спасибо за старания👍🏼
Отличный ролик! С визуализацией работы Event Loop, все становится понятней в разы!
Крассавчик, приятно наблюдать когда человек на своём месте 🙏✊🙏✊
Вот это красиво, Тимур спасибо большое, тупо лучший !
перешла на этот ролик по ссылке из видео "Что такое Event Loop в JavaScript? Event Loop Простыми словами" из видео на 5 мин сразу на часовую лекцию))) огромное спасибо за твою работу)))
Тимур, спасибо тебе огромное. Как обычно ёмко, лаконично и по существу объяснил достаточно обширную тему. Ты лучший)
Здорово! хотелось бы практический урок по серверлесс и лямбда на ноде
Самый наилучшее объяснения которые вообще можно найти в сети. Огромное спасибо за проделанную работу!!!!
Вся суть видео в одной фразе автора - неважно как, но параллельно 😂 Это вообще и о программировании на js в целом)
Очень полезный ролик получился, всегда возникали проблемы с event loop, я вроде понимал как это работает, но простыми словами обьяснить не мог. После ролика получилось составить краткое описание, спасибо большое, наконец то разобрался с макрозадачами и микро
Это божественно. Настолько легко и просто объяснять не самую очевидную информацию - нужно уметь. Большое спасибо и успехов, и побольше полезных видео.
Просто замечательная лекция. Как всегда на высшем уровне. Спасибо большое!
Потрясающе, увидел анонс этого ролика в одном из твоих собесов. Вспомнил про него, когда начал разбираться с промисом. Понял что с промисом не разобраться пока не разберешься с ивент лупом. Глядишь так до нижних уровней абстракций можно добраться. А собес в известную корпорацию с удовольствием посмотрим. Труд титанический, все наглядно!
Тимур, очередной тебе поклон, за такую работу, сколько бы до этого не пытался понять про event loop, всегда оставались вопросы, здесь же, смотря это видео или например про архитектуру, понимаю что не возникает сложности в понимании материала, а начинаешь задумываться о сложности записи этого видео, это огромный труд, который включает сбор информации, подготовка анимаций, слайдов, озвучивания без запинок и оговорок, и т.д., а самое главное все это структурировать в 75 минут, это талант. Просто ТОП#1, спасибо.
Спасибо! Самый подробный ролик из тех, что я видел.
Прекрасный контент. И по содержанию, и за визуал заморочился. На практике хоть и не часто вспоминаешь об ивент лупе и стадии рендера, но это крайне полезно знать. Спасибо за видос!
Тима, спасибо за очередной прекрасно рассказаный материал!💥
Просто восхитительно! Спасибо тебе большое
Спасибо за видео, наконец-то стало прям понятно, что такое event loop, это действительно самое подробное видео
Спасибо, Тимур! Как всегда все просто и понятно. Ждем новые ролики!
Интересно послушать интервью во всем известную корпорацию))
Блин, тут ещё и про многопоточность в libuv! Господи, это лучшее видео! Ты просто супер!
Одно из самых понятных объяснений Event Loop!
Очень насыщенное информацией видео, спасибо. Про Nodejs сложно было для понимания)
Лайк авансом - вечером обязательно гляну ) Спасибо за труд.
Это взорвавшаяся бомба концентрированных знаний. Благодарю за труд!
Достаточно давно подписан на тебя, вижу название ролика, лайк не глядя, очевидно, что без новых знаний после просмотра ты меня не отпустишь, huge respect
Спасибо большое за урок!
Спасибо! Самые лучшие лекции
Боже я решил остановиться на 26 минуте, автор ты супер, я до этого читал статьи, думал тестил, ЗАЧЕМ Я ЭТО ДЕЛАЛ ЕСТЬ ЖЕ ТАКОЙ БОЖЕСТВЕННЫЙ УРОК
Это один из самых охрененных видосов которые я посмотрел! Добра тебе и сил!)
уже досмотрел, в целом информативно)0))
Очень круто, братан! Спасибо за то, что выпускаешь такой материал бесплатно. Наверное лучший в ру сегменте
@adelinaromanova8353
Жыл бұрын
Это точно! Бесплатно и всё понятно!
Мужик ты лучший, этот ролик очень сильно помогает при подготовке к интервью, незаслуженно мало просмотров!
Тимур, у тебя талант четко и понятно объяснять, event loop просто пушка! Спасибо что делаешь такой контент!!
Отличная лекция, спасибо за урок
Может ввести в заблуждение начинающих - 28:37 Promise.resolve() - выполнится синхронно. Если инструкция будет Promise.resolve(log("something")), то она выполнится как обычный log("something"). В данном примере "асинхронность" достигается использованием then.
На собесах часто спрашивают, посмотрел с удовольствием. Ждем новых собесов !
ОГРОМНОЙ ТЕБЕ СПАСИБО! Невероятно просто и интересно!
Тимур, спасибо огромное! Лучшее видео!
Братан, хорош, давай, давай, вперёд! Контент в кайф, можно ещё? Вообще красавчик!
Объяснение подробнейшее и всё максимально понятно, спасибо за твой труд
Очень наглядно и познавательно! Взглянул на цикл событий немного под другим углом. Ты молодец, Тимур!
Спасибо бро, лайк не глядя. Уверен что видос полезный, без воды и интересный как обычно
Учитель от бога. Это талант. Было бы обидно, если бы такой талант работал программистом, а не учителем. Хороших программистов много (да, сколько бы не брюзжали многие из нас, хороших программистов в мире очень много.), а вот настолько хороших учителей - единицы.
@UlbiTV
Жыл бұрын
Спасибо за добрые слова, но я и есть программист. Ютуб и преподавание - мое хобби. Основная моя работа именно разработчик
это наверное лучшее, что есть на youtube про event loop. Спасибо огромное.
@serdotsenko
Жыл бұрын
теже мысли 👏
Редко пишу комменты, но йоу, очень крутой видос! Профессиональная подача информации, очень крутые анимации и визуал, короче видос высокого уровня.
Потрясающе, спасибо
Ты даже не представляешь, насколько не глядя я поставил лайкос!=))))
Огромная благодарность вам, за этот труд и старания Не каждый опытный программист смог бы так четко сформулировать и преподнести материал, отличная работа!
Ты единственный ради кого мне не лень оставить комментарий. Все материалы на твоем канале - это самые релевантные знания по предмету на всем просторе Интернете! ❤
Спасибо за материал и старания
Перед просмотром, пожалуй, оставлю лайкосик!
Спасибо! Все супер! Хороший, полезный, нужный образовательный контент на youtube, без лишних слов... Респект