Ayub Begimkulov - уроки по JS @ayub_begimkulov_coding Channel on Telegram

Ayub Begimkulov - уроки по JS

@ayub_begimkulov_coding


По вопросам и деловым предложениям писать на @ayub_begimkulov

Ayub Begimkulov - уроки по JS (Russian)

Вы хотите научиться программировать на JavaScript? Тогда канал Ayub Begimkulov - уроки по JS именно то, что вам нужно! Этот канал предлагает качественные обучающие материалы по JavaScript, которые помогут вам освоить этот популярный язык программирования. Ayub Begimkulov - опытный программист и преподаватель, который делится своими знаниями и опытом с подписчиками канала. Здесь вы найдете уроки разного уровня сложности - от начальных до продвинутых, что позволит как новичкам, так и опытным разработчикам улучшить свои навыки. Не упустите возможность стать экспертом в JavaScript! Присоединяйтесь к каналу Ayub Begimkulov - уроки по JS прямо сейчас и начните свой путь к успешной карьере в разработке программного обеспечения. Для вопросов и деловых предложений пишите на @ayub_begimkulov.

Ayub Begimkulov - уроки по JS

06 Dec, 11:51


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

Оставляйте лайки, комментарии и делитесь видео с друзьями для более быстрого продвижения канала. Также дайте знать, как вам подобный формат разбора работы каких-то библиотек.

P.S. Кстати, это ровно 100й видос на канале)

https://youtu.be/rbLGis6jnRQ

Ayub Begimkulov - уроки по JS

03 Dec, 12:33


У кого есть время подключайтесь на стрим сегодня в 16:00 по мск. Будем продолжать писать наше приложение для замера скорости печати. В прошлый раз закрыли функционал с обычными словами. Теперь будем пробовать добавить поддержку кода.

Ну и вопросы в чате тоже буду разбирать)

https://www.youtube.com/live/MdI8-E1_RTQ

Ayub Begimkulov - уроки по JS

28 Nov, 05:53


Недавно обновил браузер и заметил, что теперь chrome devtools выделяет элементы со скроллом.

Оказалось, что фичу добавили в 130 версии хрома (вышла 15 октября). Выделяет элементы с overflow: auto/scroll, у которых контент больше размером, чем сам элемент.

Супер удобная фича для дебага лишних скроллбаров. Раньше приходилось скриптом искать проблемный элемент.

https://developer.chrome.com/blog/new-in-devtools-130#scroll-badge

Ayub Begimkulov - уроки по JS

26 Nov, 12:32


Друзья, кто может подключайтесь в 16:00 по мск на стрим. Будем продолжать писать приложение для замера скорости печати. Ну и на вопросы в чате тоже отвечу)

https://youtube.com/live/Aps_xswcNyI?feature=share

Ayub Begimkulov - уроки по JS

19 Nov, 12:36


Спонтанно решил, что начну писать проект для замера скорости печати в лайве. Самому было интересно сделать (с уклоном на код) + для видосов по тестам нужен какой-то проект, чтобы на реалистичном примере все показать.

У кого есть время подключайтесь в 16:00 по мск на стрим. Начну писать проект и буду отвечать на ваши вопросы)

https://youtube.com/live/HKY7-7fLRKg?feature=share

Ayub Begimkulov - уроки по JS

19 Aug, 10:54


Думаю уже все слышали новости о замедлениях и блокировке ютуба.

Получал много вопросов о том, какие дальше планы. Если вкратце — то пока останавливать выпуск контента не планирую. Хоть по началу все эти новости очень демотивировали.

Однако на данный момент у меня нет четкого понимания о состоянии замедлений и на какую площадку двинулась аудитория ютуба. Поэтому хотелось бы узнать немного информации о текущем состоянии дел.

Во-первых, кто на данный момент находится на территории РФ, не подскажите, открывается ли у вас ютуб? Если да, то на сколько реально что-то смотреть? И, пожалуйста, отпишите в комментариях, где территориально вы находитесь? Так как со слов разных людей кажется, что замедления происходят не во всех регионах (хотя может уже ситуация поменялась).

Также те, у кого ничего не работает, стали ли вы поднимать VPN? Если да — то используете ли вы его всегда? Даже с телефона, когда находитесь в общественном транспорте? Или же только дома?

Ну и те, кто не пользуется VPN (есть вообще такие?), на какую площадку вы перешли? Комфортно ли вам смотреть там контент?

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

Ayub Begimkulov - уроки по JS

17 Jul, 16:50


Всем привет!

Наконец-то выпустил новый видос на канале по теме тестирования. В нем я расскажу про базовую теорию, зачем нужны тесты, какие есть виды тестирования и когда (по моему мнению) нужно использовать каждый из них.

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

Ну и также лайки/комментарии никогда лишними не будут) Говорят ютуб на это обращает внимание.

https://youtu.be/zu7hEgeCmr4

Ayub Begimkulov - уроки по JS

23 Jun, 10:16


3) Наверное если читали какие-то статьи по теме — то могли слышать, что скрипты ждут загрузки CSS, прежде чем начать свой запуск. Связано с тем, что JS может запрашивать каике-то стили или изменять их.

В целом поведение казалось логичным, но у меня все это как-то не вязалось с примерами, когда в самом верху head'а есть скрипт с alert'ом и при его запуске в DOM ничего нет.

Решил это тоже заодно протестить. Как оказалось, если скрипт у нас блокирующий — то он будет ждать только тот CSS, что расположен выше. Async скрипты вообще никого не ждут и запускаются сразу, как пришли. Defer ждет подгрузки всего контента страницы.

В целом поведение логичное, но пока не проверил — в голове был какой-то диссонанс по этому вопросу.

Выводы

Для себя я в очередной раз понял, что никогда не мешает все перепроверить на практике. Как минимум, в голове таким образом все откладывается намного лучше)

Если вы тоже хотите сформировать для себя полноценную картину и протестировать как все работает, то можете воспользоваться моим тестовым примером. Надо просто в html создать нужное вам количество скриптов/стилей (через /js/{name} и /css/{name}) и прописать им нужный timeout.

Ayub Begimkulov - уроки по JS

23 Jun, 10:16


Critical rendering path

Решил я на этой неделе чуть больше погрузиться в тему critical rendering path (по сути порядок действий, по которому HTML с сервера превращается в пиксели на экране) и подготовить наглядный пример, на котором можно было бы объяснять эту тему.

До этого читал не мало статей на эту тему. Но, как оказалось, в реальности процесс немного более интересный, чем об этом рассказывается в большинстве ресурсов.

В целом, если погуглить данную тему, то инфа будет примерно такая:
- Получаем HTML, начинаем парсинг, инкрементально строим DOM
- Если встретили CSS - делаем запрос на загрузку
- Если встретили JS - делаем запрос на загрузку. Если скрипт блокирующий (без async/defer), то останавливаем всю работу, пока не загрузится скрипт.
- Как получили весь CSS - строим CSSOM
- Запускаем JS
- Строим render tree
- Дальше уже Layout, Paint, Composite и отображение финального результата

В целом верхнеуровнево все верно. Но когда я начал реально экспериментировать, то понял, что есть некоторые особенности и оптимизации браузеров, о которых я никогда раньше не слышал.

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

Дальше уже буду говорить о тех моментах, которые были для меня открытием:

1) Parser-blocking скрипты (без async/defer) на самом деле не создают лесенку запросов. Да, как только браузер их видит, дальнейшее построение DOM останавливается и соответственно весь процесс подготовки документа к рендерингу. Но, загрузка ресурсов после блокирующего скрипта все равно произойдет с помощью отдельного парсера (проверил этот момент в Chrome и Safari, и там и там одинаковое поведение).

А вот отрывок из статьи на эту тему:

Blocking the parser can have a huge performance cost—much more than just blocking rendering. For this reason, browsers will try to reduce this cost by using a secondary HTML parser known as the preload scanner to download upcoming resources while the primary HTML parser is blocked. While not as good as actually parsing the HTML, it does at least allow the networking functions in the browser to work ahead of the blocked parser, meaning it will be less likely to be blocked again in the future.


2) Хоть CSS и считается render-blocking ресурсом, но в зависимости от браузера он может блокировать рендеринг не всей страницы, а только контента, который находится под ним. Проверил Chrome — в нем как раз все работает именно так (в статье говорят, что у Firefox идентичное поведение). В Safari ждет пока все загрузится, прежде чем что-то показывать.


Render-blocking resources, like CSS, used to block all rendering of the page when they were discovered. This means that whether some CSS is render-blocking or not depends on whether the browser has discovered it. Some browsers (Firefox initially, and now also Chrome) only block rendering of content below the render-blocking resource. 


То же самое касается и скриптов без async/defer. Chrome отрендерит тот контент, что у него есть до момента, когда он встретил блокирующий скрипт.


Parser-blocking resources are effectively render-blocking as well. Since the parser can't continue past a parsing-blocking resource until it has been fully processed, it can't access and render the content after it. The browser can render any HTML received so far while it waits, but where the critical rendering path is concerned, any parser-blocking resources in the <head> effectively mean that all page content is blocked from being rendered.


В целом не думаю, что кто-то ставит стили вне head'а, поэтому в большинстве случаев это будет не заметно. Но поведение скриптов меня удивило. То есть большие скрипты внизу body (будь это defer или вообще блокирующие) не будут мешать Chrome/FF отрендерить весь контент страницы.

Ayub Begimkulov - уроки по JS

10 Jun, 09:45


Друзья, планирую снимать серию видео по тестированию. Составил уже базовый план того, что хочу разобрать. Но наверняка что-то упустил. Накидайте в комменты, что хотелось бы вам узнать по этой теме.

Ayub Begimkulov - уроки по JS

23 May, 15:18


Всем привет!

Ну что ж… Давно у нас ничего не было. Думаю уже пора входить в колею и продолжать выпускать контент)

Получал много вопросов о том, почему не было видео, чем я занимался и куда вообще пропал. Обо всем этом расскажу в сегодняшнем видео.

P.S. Как ни странно, хотя по началу было вообще не привычно включать камеру и говорить в объектив, в целом съемка прошла очень гладко. Почти ничего не пришлось вырезать, думал хуже будет)))

https://youtu.be/6B0P4rdt8tU

Ayub Begimkulov - уроки по JS

09 Feb, 13:42


Последние полгода часто слышу, что люди, которые раньше без проблем находили работу — не могут даже на собесы сходить.

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

Чаще всего, когда начинаешь спрашивать у человека детали — то всегда слышу примерно одно и то же: “Раньше на хх откроешь резюме, сразу пишет куча фирм, а сейчас сам на все откликаюсь и везде отказы”.

Собственно, если вкратце — то никто сейчас не может чисто на HH работу найти. По крайней мере никто из моего круга общения. Обычно все пару приглашений от туда получают, да и то в странные места)

Я сам тоже в ноябре проходил собесы, хотел стариной встряхнуть + разведать, что спрашивают на архитектурных собесах. И ХХ мне помог только на один собес попасть. Хотя у меня 5+ лет опыта и Яндекс есть в резюме) Да и в целом описано там все не плохо — достижения по каждой работе прописаны с показателями.

Если честно, я с рекрутерами не общался (если кто есть — буду рад услышать ваше мнение), но мне кажется, что проблема в фильтрах, которых раньше не было (там даже на вакансиях процент метча показывается).

Мне много больших компаний меньше, чем за 1 час отказывали, хотя я знаю, что туда на собес зовут людей с опытом намного меньше. Да и не кажется, что там мониторят 24/7 все отклики.

Очевидный вопрос тут возникает — а что же делать в такой ситуации?

Один из вариантов откликаться на сайте компании. Однако я заметил, что многие фирмы будто бы от туда вообще не смотрят отклики. Но попробовать не помешает)

Второй вариант, как раз самый эффективный — это смотреть вакансии на ХХ, хабр или других сайтах, но потом не откликаться там, а писать на прямую рекрутерам в этой фирме. Либо по рефералке заходить, если есть такая возможность.

Тут главное полотно текста не писать, коротко и ясно высказаться. Я что-то такое писал:


Добрый день! Меня Айюб зовут.

Нашел ваш контакт на просторах интернета. Была интересна открывая вакансия на фронтенд разработчика [здесь ссылка на вакансию, лучше брать с сайта, чем с хх, чтобы странно не выглядело]. Решил напрямую написать.

Если она еще актуальна — буду рад обсудить детали.

[резюме]


В плане того, как найти контакты рекрутеров — тут тоже все не так сложно. Либо через друзей/знакомых узнать, которые когда-то проходили собес в нужную вам фирму. Либо на linkedin ищете профили рекрутеров в компании и там часто бывает телеграмм приложен в описании. Если нет телеграмма — то можно прямо в linkedin написать, но тогда профиль должен быть нормально заполнен.

А так, друзья еще говорят, что Хабр и getmatch сейчас более эффективные в плане поиска. Я сам просто всегда ленился там зарегистрироваться, поэтому ничего посоветовать не могу. Но только на HH сейчас искать точно не вариант.

Ayub Begimkulov - уроки по JS

08 Jan, 14:56


Итоги прошлого года

Как и обещал, выкладываю более детальные итоги прошлого года, которые мы обсуждали на последнем лайве.

Для начала немного статистики за прошедший год:
- 49 новых видео, 9 трансляций, 526 598 просмотров, более 6900 новых подписчиков и более 60 тысяч просмотренных часов на YouTube.
- Более 2000 тысяч новых подписчиков в телеграмме и более 300 постов (пока не разобрался как адекватно смотреть аналитику, поэтому цифры не совсем точные).
- ~35 собесов и ~180 сессий менторинга (статистика из календаря, поэтому цифры могут быть не совсем точные).
- 10 розыгрышей и 27 победителей. Из которых 17 выбрали консультацию, 10 — деньги (некоторые кстати после выбора консультации так и не нашли время, чтобы созвониться. Если что — предложение еще актуально).

Да и в целом год был очень плотным. Сначала ушел из Яндекса в зарубежный стартап, потом попал там под сокращения, начал заниматься фулл тайм контентом (2 видоса в неделю + 1 пост в день) + менторством и потом “пропал” на 3 месяца (об этом расскажу чуть ниже).

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

Когда начинаю вспоминать январь прошлого года, чувство такое, будто это было года 2-3 назад. Да и себя и свои действия в тот момент вспоминаю с большим “кринжом”, что для меня тоже не малый показатель прогресса).

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

Что делал последние 3 месяца?

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

Вот примерный список того, что я делал:
- Работал над затянувшимся фриланс проектом, который я недооценил. Планируем в этом месяце уже завершать все.
- Добрал людей на менторинг и отлаживал схему обучения (Вот тут прям очень много чего нового для себя узнал, буду делиться в будущих постах/видео).
- Водил нескольких из учеников по собесам, помогал с общением, реферами, разборами ошибок. Один из них смог устроиться в Яндекс!
- Налаживал свой режим, снова начал регулярно тренироваться.
- Отдыхал от постоянных мыслей о том, какой написать пост и на какую тему записать видео).

Ну и конечно же была куча личных дел, которые вряд ли будут кому-то интересны.

Планы на 2024 год

Так как большинство подвешенных дел уже решилось, планирую потихоньку входить в ритм и начинать снимать контент и писать посты. Пока никаких обещаний по частоте давать не буду, так как хочется всё делать в спокойном режиме и посмотреть, какой темп будет комфортен.

В целом на год планов очень много, хочу начать немного по другому подходить к контенту, поэкспериментировать с разными форматами и темами. Но это уже другая тема, думаю расскажу детальнее в отдельном посте или видео.

Ayub Begimkulov - уроки по JS

30 Dec, 12:07


Live stream finished (1 hour)

Ayub Begimkulov - уроки по JS

30 Dec, 11:00


Live stream scheduled for

Ayub Begimkulov - уроки по JS

30 Dec, 10:59


Live stream started

Ayub Begimkulov - уроки по JS

30 Dec, 10:27


Друзья, всем привет!

Давно уже не было новостей от меня, а тут еще и год заканчивается). Давайте в 14:00 по Москве проведем небольшой лайв в телеграмм.

Подведем итоги года. Также расскажу, где был и чем занимался последние 3 месяца, и какие планы по контенту на след год. Ну и на вопросы ваши постараюсь ответить, если хватит времени.

Все кто может — заходите, буду рад видеть!

Ayub Begimkulov - уроки по JS

18 Oct, 12:42


Под прошлым постом один из подписчиков не мог понять, почему у него происходит TS ошибка при присвоении свойства в объект, значения которого содержат разные типы данных (ссылка на playground с примером ниже).

Расписал подробно решение и понял, что может и другим будет полезно (так как сам частенько сталкиваюсь с подобными ошибками). Да и по опыту помню, что разборы различных ошибок на stackoverflow/github были очень полезны для понимания того, как TS проверяет код.

https://tsplay.dev/WPM9Lw

Ayub Begimkulov - уроки по JS

10 Oct, 16:13


После долгих размышлений в последние несколько дней, понял для себя, что история с двумя видео и ежедневными постами создаёт слишком большую ответственность, что ведет к неоправданному количеству стресса. До той степени, что смысл во всей этой затее теряется.

Изначально была идея, чтобы ограничения давали мотивацию создавать и не прокрастинировать. Но по итогу это начало выливаться в то, что я не мог делать некоторые более сложные видео, так как просто не уложусь в график.

Посты иногда приходилось писать на коленке, не успев нормально все перепроверить. Да и некоторые из них писались просто, чтобы что-то написать. А изначально идея была делиться каким-то находками/инсайтами из своего опыта.

В итоге смысл такого графика теряется. Идёт просто погоня за цифрами, до которых никому особо и нет дела (кроме меня разве что). Не сказать, что жалею о том, что поставил себе такой челлендж. Дедлайны научили совсем по другому подходить к сбору идей и проработке контента. Но на данный момент кажется, что они несут больше вреда, нежели пользы.

Поэтому хочу (как минимум на пока) отменить ежедневные посты, 2 видео в неделю и, соответственно, розыгрыши. Забрасывать канал не собираюсь, контент будет выходить по мере возможности и свободного времени. Интересно посмотреть, что из этого получится.

Ayub Begimkulov - уроки по JS

06 Oct, 15:47


Для тех кто не видел, вышла бета TS версии 5.3.

Из основных изменений:
- Поддержка import attributes для обычных и type импортов.
- Улучшенное «сужение». Больше всего порадовал кейс со switch(true).
- Более точные проверки вызова методов через super.

https://devblogs.microsoft.com/typescript/announcing-typescript-5-3-beta/

Ayub Begimkulov - уроки по JS

01 Oct, 18:45


Live stream finished (48 minutes)

Ayub Begimkulov - уроки по JS

01 Oct, 17:57


Заходите на лайв, буду рад пообщаться и ответить на ваши вопросы.

Ayub Begimkulov - уроки по JS

01 Oct, 17:57


Live stream started

Ayub Begimkulov - уроки по JS

30 Sep, 19:29


Live stream finished (1 hour)