SUMMON_THE_CODER
478 subscribers
9 photos
1 video
42 links
Download Telegram
Жтож, всем привет! Давно меня не было онлайн, пора вырываться из осенней хандры. Сегодня отличный повод, вышел новый 19 angular. Бегу смотреть!

Twitch
👍3👏3🔥2
Сегодня вышли свежие доклады HolyJS, а на той неделе прошел MoscowJS. Смотрим!

Twitch
3
Есть идея постить в этот канал не только посты с анонсами стримов, но и какой-то более менее полезный контент. Тадаам, встречаем первый такой пост)
🔥42
RxJS без боли: интерактивные ресурсы для изучения потоков и операторов

RxJS — библиотека, которая разделяет жизнь фронтендера на "до" и "после". Когда в голове укладывается реактивная парадигма программирования, обратного пути уже нет. Логика приложения превращается в реактивные потоки, ты жонглируешь операторами и создаешь код, который кажется почти магией.

RxJS открывает перед разработчиком невероятные возможности, но требует времени на освоение. Новая ментальная модель и разнообразие операторов могут сначала показаться сложными. Но стоит приложить усилия, как ты начнёшь писать действительно крутой декларативный код — и результат того стоит!

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


🔗 RxMarbles / RxMarbles(updated)

🔍 Что это?
Визуальная энциклопедия операторов RxJS.

📚 Что даёт?
Наглядно показывает, как операторы преобразуют потоки. Например, как работает mergeMap или concat.

🎯 Почему полезно?
Если ты не понимаешь, как работает конкретный оператор, просто посмотри, как он обрабатывает "шарики" данных.


🔗
RxViz

🔍 Что это?
Интерактивный playground для написания и визуализации RxJS-кода.

📚 Что даёт?

Позволяет создавать цепочки операторов и тут же видеть, как они преобразуют данные.

🎯 Почему полезно?
Прямо в браузере ты можешь протестировать идею и быстро отладить цепочку операторов.


🔗 ThinkRx

🔍 Что это?
Ещё один интерактивный playground для изучения и визуализации RxJS-кода.

📚 Что даёт?
Позволяет экспериментировать с реактивным кодом, создавать марбл-диаграммы и сохранять их как изображения.

🎯 Почему полезно?
Включает множество примеров реактивного кода и визуальных сравнений похожих операторов, таких как switchMap, mergeMap и concatMap.


🔗 Higher-Order Observables Operators Playground

🔍 Что это?
Обзор higher-order observables операторов с визуальными примерами.

📚 Что даёт?
Позволяет выбрать оператор, посмотреть код и графики потоков, а также ставить потоки на паузу для изучения текущего состояния.

🎯 Почему полезно?
Это идеальный ресурс для тех, кто хочет углубиться в работу операторов вроде switchMap или exhaustMap.


🔗 SoftwareMill RxJS Playground

🔍 Что это?
Интерактивный набор 3D демо-проектов для изучения концепций RxJS. Потоки изображены в виде конвейеров, а данные — в виде двигающихся фигур.

📚 Что даёт?
Содержит готовые примеры с объяснениями. Можно создавать свои конвейеры и добавлять к ним различные операторы.

🎯 Почему полезно?
Максимально визуализирует движение данных в реактивных потоках, делая абстрактные концепции более понятными.

Эти ресурсы помогут не просто выучить RxJS, но и понять его философию. Переходи по ссылкам и практикуйся!

@summon_the_coder

#RxJS #Angular #ReactiveProgramming
1🔥14👍8🍌54❤‍🔥2
Музыкальный RxJS или как обрабатывать события правильно

Higher-order observables — тема безумно интересная и глубокая, но в то же время вызывающая наибольшее непонимание у разработчиков, которые только изучают RxJS. Существует множество способов объяснить, как работают операторы switchMap, concatMap, mergeMap и exhaustMap: можно сравнивать их с потоками воды, конвейерами, очередями заказов и многими другими вещами. Но, на мой взгляд, лучшая аналогия была приведена в телеграм группе по RxJS. Я немного доработал её и вот как она звучит.

Представьте, что у вас есть приложение с «реактивным» музыкальным плеером, и по клику на кнопки можно переключать музыку. Каждая кнопка — это отдельный higher-order observable оператор. Как же будет происходить переключение музыки при клике на эти кнопки?

🎶 switchMap

Если поступает новый клик, текущий трек немедленно останавливается, и начинается новый. Этот оператор повторяет поведение настоящего музыкального плеера, где треки сменяются сразу по нажатию кнопки.

Реальные примеры:
- Когда пользователь вводит текст в строку поиска, приложение отправляет запрос на сервер. Если пользователь продолжает вводить текст, предыдущие запросы отменяются, чтобы не загружать неактуальные данные.

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

🎶 mergeMap

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

Реальные примеры:
- Получение уведомлений одновременно из нескольких источников (например, чата и системы оповещений).

- Загрузка данных пользователя и связанных с ним заказов одновременно, чтобы быстрее отобразить информацию.

🎶 concatMap

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

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

- Обработка очереди задач (например, отправка файлов) и показ уведомлений о завершении каждой задачи.

🎶 exhaustMap

Оператор идеально подходит для строгого контроля воспроизведения. Если трек уже играет, любые новые клики полностью игнорируются до тех пор, пока текущий трек не закончится. Это как если бы плеер говорил: «Подожди, я занят. Дождись окончания трека, и только потом я приму новую команду».

Реальные примеры:
- Когда пользователь отправляет форму, и нужно игнорировать повторные нажатия кнопки, пока форма не будет отправлена.

- Пользователь вводит одноразовый код, и пока сервер его проверяет, новые попытки игнорируются.

Итак, какой оператор выбрать?


mergeMap - если операции могут выполняться одновременно.

switchMap - для отмены предыдущих действий при новом событии.

concatMap - когда нужно выполнять операции строго по порядку.

exhaustMap - для защиты от лишних запусков во время выполнения.

@summon_the_coder

#RxJS #Angular #ReactiveProgramming
1👍24🔥9😱3👨‍💻1🤝1
RxJS: Отписки? А точно надо?

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

Unsubscribe - отписка от потока. Сообщаем источнику значений, что текущий подписчик больше не хочет получать новые значения. Если у потока остались другие подписчики, то они продолжат получать новые значения.

Complete - завершение потока. Завершенный поток перестает уведомлять всех подписчиков о новых значениях.

Finalization - освобождение ресурсов, занятых потоком. Данный процесс происходит всегда при ошибке, завершении потока, отписке.

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

- Освобождение ресурсов памяти и борьба с неконтролируемыми утечками памяти.

А теперь самое интересное, ситуации, когда отписка не требуется (если поток простой и содержит только одну из описанных ниже сущностей):
- Потоки, которые в конечном итоге завершаются (of, from, timer(1000), first итд).

- Использование сервиса ActivatedRoute. Данный сервис и его потоки изолированы от Router сервиса. Router уничтожает маршрутизируемый компонент, когда он больше не нужен вместе со всеми зависимостями.

- Использование сервиса HttpClient (создает потоки, которые в конечном итоге завершаются).

В этом месте я хочу задать вопросы. Готовы ли вы анализировать каждый поток с ручной подпиской и тратить на это свое время (поток может трансформироваться, добавится таймер или какой-то хитрый внутренний поток)? А как же консистентность кодовой базы: где-то есть подписка, где-то нет? Вы точно уверены, что все члены команды знают тонкости отписок и не допустят утечек?
Не слишком ли много вопросов для проблемы, которая решается одной строчкой кода? Не проще ли всегда отписываться, чем пытаться учесть все нюансы?

Подготовил список из проверенных практик для управления подписками:
- Используйте линтер: добавьте eslint-plugin-rxjs и eslint-plugin-rxjs-angular для автоматической проверки отписок или полного запрета ручных подписок.

- Избегайте ручных подписок: комбинируйте потоки через merge, zip или combineLatest, чтобы привязать их к шаблону с автоотпиской.

- Async pipe: используйте в шаблонах, чтобы автоматически управлять подписками.

- Операторы takeUntil или takeUntilDestroyed: используйте эти операторы последними в цепочке операторов для автоматического завершения подписки при уничтожении компонента.

- toSignal (доступно с Angular 16 в статусе dev preview): конвертируйте потоки в сигналы с автоматическим управлением подписками.

- Higher-order observables: избавляйтесь от "подписок внутри подписок", чтобы избежать утечек памяти.

- Библиотеки: если вы используете Angular ниже 16 версии, попробуйте @ngneat/until-destroy или напишите кастомное решение.

Отписка — это не лишняя работа, а гарантия стабильности и удобства сопровождения вашего кода. И ответ на вопрос из заголовка - отписывайтесь всегда.

Ну и напоследок я собрал всевозможные актуальные способы отписок в одном Stackblitz. Получился своеобразный справочник по отпискам — каждый способ сопровожден комментариями с пояснениями. Делитесь этим проектом с начинающими разработчиками и теми, кто только открывает для себя красоту реактивного программирования!

@summon_the_coder

#RxJS #Angular #ReactiveProgramming
1🔥193👍2
Сегодня в 19:30 буду стримить! Как всегда сначала что-нибудь глянем, а потом покопаемся с ssr в последнем ангуляре.

Twitch
🔥8🥰4👏2
Жтож, запрыгиваю в последний вагон. Все подводят итоги, и я тоже хочу поделиться своими.
Самым большим и важным достижением уходящего года для меня стал, так сказать, "выход в свет". Я невероятно долго собирался сделать этот шаг, и наконец, решился. Начал стримить (хоть и с перерывами), а ещё завёл этот канал и стал писать посты.
Отдельное спасибо @iCherniakov, который вдохновил меня на эту идею. И, конечно, огромное спасибо всем вам — за ваши подписки и реакции. Это действительно очень важно для меня.
В следующем году планирую не останавливаться и брать новые вершины.
С наступающим! До встречи в новом году!❤️
1👍1784🔥2
Angular: Полезная инфографика

Разбирал тут на праздниках свои избранные сообщения в Telegram и наткнулся на блог chriskohler.dev. Контента в нем оказалось не так много, но потом я вспомнил почему приберёг этот сайт. Автор проделал титаническую работу по созданию инфографики для ключевых концепций Angular. Не могу не поделиться этим золотом.

Dependency Injection

Первая инфографика посвящена Dependency Injection. Причём она адаптирована под две версии Angular:

- До 14-й версии: DI через модули.
- Начиная с 14-й версии: DI со Standalone API.

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

Но если вы ищете что-то более лёгкое и быстрое:
- Статья: Dependency Injection in Angular – Everything You Need to Know. Коротко, по делу и наглядно.
- Плейлист: Dependency Injection in Angular от Dmytro Mezhenskyi.

Change Detection

Вторая инфографика погружает нас в тонкости механизма Change Detection, который способен озадачить даже опытных разработчиков. В ней собрана информация, актуальная для Ivy Compiler, но пока нет разделов про локальные изменения на сигналах (v17+) и zoneless (v18+). Ждём, что автор добавит это в будущих обновлениях.

Инфографика по Change Detection

Что можно изучить уже сейчас:
- Статья: The Latest in Angular Change Detection – All You Need to Know. Отличный старт.
- Видео: Angular Change Detection Explained! от Nivek. Классный формат для знакомства с zoneless и локальным change detection.
- Плейлист: Change Detection in Angular от Dmytro Mezhenskyi для глубокого погружения.
- И вишенка на торте: кто хочет заглянуть немного в будущее, где change detection превращается в synchronization, есть доклад от Alex Rickabaugh, в котором рассказывается в каком направлении двигается команда фреймворка.

Совет от Chris Kohler

Напоследок автор рекомендует: распечатайте инфографику и повесьте её в неожиданном месте — например, рядом с кофемашиной или в зоне отдыха. Через пару недель вы удивитесь, насколько глубоко усвоите материал, даже не замечая этого!

@summon_the_coder

#angular #dependencyinjection #changedetection
311🔥10👍3💯1
Йоу, всем привет! Сегодня в 19:00 будет совместный стрим с сообществом IT-ХОЗЯЕВА. Буду проводить второй интенсив по JavaScript. Идем строго по learn.javascript.ru и помогаем новичкам быстро освоить базу и двинуться дальше. Приходите поддержать просмотрами👀. До встречи!

Twitch
🔥202😐1
Angular Can I Use – как не запутаться в нововведениях?

За последние два года Angular сделал мощный рывок вперед – новые фичи появляются регулярно, и хочется использовать их уже сейчас. Поэтому я постепенно обновляю рабочие проекты до актуальных версий.
Но тут возникает проблема: не всегда можно обновиться до последней мажорной версии. Где-то конфликтуют peer-зависимости, где-то еще не обновились библиотеки, и т. д. В итоге в одном проекте уже версия 19, а где-то застряли на версии 17 или 16. И вот тогда в голове начинается путаница: какие фичи уже можно безопасно использовать, а какие все еще в Dev Preview?
Как с этим разобраться? Меня сильно выручает Angular Can I Use – удобный инструмент от angular.courses, который помогает легко отслеживать статус фич и быть в курсе последних изменений.

🔎 Что там есть?

Feature List – список всех нововведений, начиная с Angular 14, с удобным поиском и сортировкой.

Version Insights – наглядно показывает ключевые изменения в выбранной версии Angular. Здесь можно быстро понять, какие фичи уже стабильны и готовы к использованию, а какие еще находятся в стадии разработки.

Этот сервис экономит кучу времени и позволяет точно понимать, можно ли использовать ту или иную функциональность в продакшене. Если работаете с разными версиями Angular – обязательно попробуйте! 🚀

@summon_the_coder

#angular
👍8🔥31
Сегодня в 19:00 продолжаем разбирать learn.javascript.ru. Провожу третий интенсив по js!

Twitch
👍53🔥3
Только что отсмотрел драфт подкаста и для первого раза получилось вполне убедительно, хотя в паре мест я бы перезаписал ответы, видимо не смог побороть волнение и затупил😬
В любом случае опыт крайне интересный, ждемс выпуск!
Please open Telegram to view this post
VIEW IN TELEGRAM
18🔥2🥰1
Forwarded from Стародубцев x IT-ХОЗЯЕВА (Александр Стародубцев)
Делюсь картинкой!) Выпуск будет уже на следующей неделе
113🔥8😍2👍1
Сегодня в 19:00 продолжаем разбирать learn.javascript.ru. Провожу пятый интенсив по js!

Twitch
10🔥6
Где учить этот Angular? #1 👩‍💻

Этот вопрос я слышу постоянно — особенно после того, как на одном дыхании рассказываю, какой новый Angular классный. Поэтому решил пробежаться по своим бесконечным закладкам и заметкам, вспомнить, с чего сам начинал, и сделать серию постов о том, как же все-таки учить этот фреймворк. Будут курсы, статьи, YouTube-каналы — все, что может быть полезно как новичкам, так и опытным разработчикам. Разумеется, это будут только проверенные источники, которыми я сам пользовался (и продолжаю пользоваться). Начнем с курсов.

*️⃣База базовая, учитель всех учителей. Иногда кажется, что Udemy был создан исключительно для этого великолепного преподавателя — Максими́лиана Шварцмюллера. Курс, который я купил в самом начале пути, до сих пор актуален: автор каждый год бесплатно обновляет программу. Очень рекомендую — фреймворк разобран полностью, затронуты все важные темы для быстрого и уверенного старта.

🔗 The Complete Guide to Angular

*️⃣Мастодонты в мире курсов по Angular — Angular University. Здесь есть курсы по современному Angular с сигналами, TypeScript, RxJS и многому другому. Можно купить пожизненный доступ ко всем материалам за очень приятную цену. Но начать стоит с бесплатного курса для новичков.

🔗 Angular For Beginners

🔗 Все курсы Angular University

*️⃣Для фанатов текстового формата — курс от Josh Morony, Angular GDE и активного блогера. Материал полностью состоит из текстовых модулей с пошаговыми инструкциями. Есть открытые (бесплатные) главы, так что можно попробовать и понять, подходит ли такая форма подачи.

🔗 Angular Start

🧪 Рубрика "Эксперименты"

Для разработчиков, которые уже владеют каким-то фреймворком и хотят расширить границы или сменить стек, есть интересный бесплатный проект Playful Programming от Corbin Crutchley. Он позволяет изучать сразу три фреймворка параллельно: Angular, React и Vue. Каждый сниппет кода снабжен тремя вкладками, так что можно сразу переключаться и смотреть: "А как это сделано там?" В начале года вышла первая часть курса (основы), а вскоре ожидаются модули про экосистемы и внутреннюю работу инструментов.

🔗 Playful Programming - The Framework Field Guide

В дополнение к формату выше подходит сайт Component Party, который позволяет сравнивать реализацию концепций в разных фреймворках. Помимо Angular, React и Vue, тут есть Svelte, Solid, Lit, Alpine и другие.

🔗 Component Party

🇬🇧 English? Не проблема

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

🟢берем курс для ознакомления и загружаем его в облако (список поддерживаемых сервисов)
🟢скачиваем Tampermonkey для своего браузера
🟢устанавливаем скрипт, который добавляет нейроперевод Яндекс.Браузера в нужный браузер (отдельное спасибо автору расширения)
🟢запускаем видео для ознакомления в облаке и включаем нейроперевод
🟢вы великолепны!

Данный способ я попробовал на облаках Mail и Яндекс, все работает отлично.

Если проходили и знаете хорошие курсы, пишите об этом в комментариях!

@summon_the_coder

#angular #course
Please open Telegram to view this post
VIEW IN TELEGRAM
117👍12❤‍🔥3
Всем привет! Сегодня нашелся отличный повод выйти в онлайн. В 19:00 будет проходить Angular Day by Frontend Nation. Судя по программе должно быть интересно. Будем посмотреть на стриме.

Twitch
1👍32🔥1
Стрим в пятницу, закрываем неделю. Идем смотреть всякий контент про айти, уух

Twitch
🔥81
Неожиданный скриншот от @ngxSamurai. Ловим привет от Manfred Steyer!🕺
Please open Telegram to view this post
VIEW IN TELEGRAM
1👏10🔥5🥰1🤩1
Прямо сейчас на стриме буду делать ревью проекта на angular. Залетайте!

Twitch
1👍5