✨ RxJS: интерактивный тренажер
Нашел бесплатный курс из 30 интерактивных уроков по RxJS.
Материал охватывает базовые и продвинутые операторы, управление состоянием, а также карточки для проверки знаний.
Автор активно дорабатывает тренажер и ждет обратной связи от сообщества.
👉 https://rxjs-course-avy.web.app/
Нашел бесплатный курс из 30 интерактивных уроков по RxJS.
Материал охватывает базовые и продвинутые операторы, управление состоянием, а также карточки для проверки знаний.
Автор активно дорабатывает тренажер и ждет обратной связи от сообщества.
👉 https://rxjs-course-avy.web.app/
🔥24👍17
✨ Полезные IT-концепции: от ложной дихотомии до резиновой уточки
Инженерная зрелость определяется не только знанием паттернов проектирования, но и пониманием когнитивных ловушек, влияющих на разработку.
Подборка наиболее актуальных:
Закон Конвея. Структура программного обеспечения неизбежно повторяет структуру коммуникаций в организации. Если команды бэкенда и фронтенда работают изолированно, интеграция будет костыльной.
Закон Гудхарта. Когда метрика становится самоцелью, она перестает быть хорошей метрикой.
Оверинжиниринг. Использование модных технологий там, где достаточно скрипта.
Бритье яка. Ситуация, когда вы хотите исправить баг, но обнаруживаете, что нужно обновить библиотеку, для которой нужно обновить версию языка, для чего нужно пересобрать контейнер…
Догфудинг. Подход, при котором разработчики сами используют свой продукт.
А какие принципы или когнитивные искажения чаще всего встречаете в работе вы? Делитесь любимыми примерами в комментариях.
👉 https://habr.com/ru/articles/988380/
Инженерная зрелость определяется не только знанием паттернов проектирования, но и пониманием когнитивных ловушек, влияющих на разработку.
Подборка наиболее актуальных:
Закон Конвея. Структура программного обеспечения неизбежно повторяет структуру коммуникаций в организации. Если команды бэкенда и фронтенда работают изолированно, интеграция будет костыльной.
Закон Гудхарта. Когда метрика становится самоцелью, она перестает быть хорошей метрикой.
Оверинжиниринг. Использование модных технологий там, где достаточно скрипта.
Бритье яка. Ситуация, когда вы хотите исправить баг, но обнаруживаете, что нужно обновить библиотеку, для которой нужно обновить версию языка, для чего нужно пересобрать контейнер…
Догфудинг. Подход, при котором разработчики сами используют свой продукт.
А какие принципы или когнитивные искажения чаще всего встречаете в работе вы? Делитесь любимыми примерами в комментариях.
👉 https://habr.com/ru/articles/988380/
👍6❤2✍1🥴1🤣1😭1
✨ Кастомная стилизация MatPaginator
Эдуард Криванек обновил свою популярную статью о кастомизации пагинатора Angular Material для версии 20.
Основная идея: создать директиву, которая превращает стандартный MatPaginator в более визуально привлекательный компонент.
👉 https://www.angularspace.com/angular-v20-custom-matpaginator-styling/
Эдуард Криванек обновил свою популярную статью о кастомизации пагинатора Angular Material для версии 20.
Основная идея: создать директиву, которая превращает стандартный MatPaginator в более визуально привлекательный компонент.
👉 https://www.angularspace.com/angular-v20-custom-matpaginator-styling/
👍4
✨ TuiControl — Современный подход к созданию форм-компонентов
TuiControl — это абстрактный класс из библиотеки Taiga UI, который значительно упрощает разработку кастомных компонентов, интегрируемых с ngModel и FormControl.
Вместо написания большого объема бойлерплейт-кода для реализации ControlValueAccessor, разработчики могут наследоваться от TuiControl, получая автоматическую поддержку реактивности на основе сигналов, синхронизацию состояний формы и другие удобства.
👉 https://habr.com/ru/articles/991650/
TuiControl — это абстрактный класс из библиотеки Taiga UI, который значительно упрощает разработку кастомных компонентов, интегрируемых с ngModel и FormControl.
Вместо написания большого объема бойлерплейт-кода для реализации ControlValueAccessor, разработчики могут наследоваться от TuiControl, получая автоматическую поддержку реактивности на основе сигналов, синхронизацию состояний формы и другие удобства.
👉 https://habr.com/ru/articles/991650/
👍25❤5
✨ Angular Skills
Набор навыков для разработки Angular с использованием ИИ.
Эти навыки предоставляют агентам, таким как Claude, Gemini, OpenCode и др., актуальные шаблоны Angular v20+, лучшие практики и примеры кода.
👉 https://github.com/analogjs/angular-skills
Набор навыков для разработки Angular с использованием ИИ.
Эти навыки предоставляют агентам, таким как Claude, Gemini, OpenCode и др., актуальные шаблоны Angular v20+, лучшие практики и примеры кода.
👉 https://github.com/analogjs/angular-skills
👍28👏8🔥6🤮2🦄1
✨ Компилируем TypeScript в натив: хардкор и мясо
В рамках миграции UI крупного C++ проекта с Qt на TypeScript появился TSNative.
Кроссплатформенный AOT-компилятор, позволяющий выполнять подмножество TypeScript как нативный код через LLVM.
👉 https://habr.com/ru/companies/ncloudtech/articles/990666/
В рамках миграции UI крупного C++ проекта с Qt на TypeScript появился TSNative.
Кроссплатформенный AOT-компилятор, позволяющий выполнять подмножество TypeScript как нативный код через LLVM.
👉 https://habr.com/ru/companies/ncloudtech/articles/990666/
🤔6🔥2❤1👍1
✨ ANGULAR против REACT
В новом выпуске подкаста на канале КодАвтоматизации эксперт по Angular Олег Щёголев развеивает мифы об этом фреймворке и объясняет, почему он остается стандартом для крупных корпораций.
Сравниваются Angular и React, обманчивая простота последнего и то, как опыт работы с Angular облегчает поддержку сложных систем в долгосрочной перспективе.
Помимо технологий, затрагиваются самые острые вопросы индустрии: от реальных зарплат до выживания в условиях кризиса на рынке труда.
👉 https://www.youtube.com/watch?v=a9W0eO9J0UE
В новом выпуске подкаста на канале КодАвтоматизации эксперт по Angular Олег Щёголев развеивает мифы об этом фреймворке и объясняет, почему он остается стандартом для крупных корпораций.
Сравниваются Angular и React, обманчивая простота последнего и то, как опыт работы с Angular облегчает поддержку сложных систем в долгосрочной перспективе.
Помимо технологий, затрагиваются самые острые вопросы индустрии: от реальных зарплат до выживания в условиях кризиса на рынке труда.
👉 https://www.youtube.com/watch?v=a9W0eO9J0UE
👍23🔥8❤6🤮1
✨ State of JavaScript 2025
TypeScript окончательно победил, и теперь это не просто надстройка, а стандарт индустрии. Благодаря поддержке в Deno, Bun и внедрению в стабильные версии Node.js, можно писать на TS практически нативно.
Параллельно с этим наступила эра Vite, его количество скачиваний официально превысило показатели webpack.
👉 https://2025.stateofjs.com/
TypeScript окончательно победил, и теперь это не просто надстройка, а стандарт индустрии. Благодаря поддержке в Deno, Bun и внедрению в стабильные версии Node.js, можно писать на TS практически нативно.
Параллельно с этим наступила эра Vite, его количество скачиваний официально превысило показатели webpack.
👉 https://2025.stateofjs.com/
👍20🔥6
✨Angular Signal Forms Config
Вместе с Signal Forms команда Angular представила новый механизм конфигурации, который дает разработчикам гибкий контроль над поведением форм.
Для настройки используется provideSignalFormsConfig. С его помощью можно включить классические CSS-классы состояния через константу NG_STATUS_CLASSES или настроить кастомные классы через динамические маппинги.
👉 https://angularexperts.ch/blog/signal-forms-config
Вместе с Signal Forms команда Angular представила новый механизм конфигурации, который дает разработчикам гибкий контроль над поведением форм.
Для настройки используется provideSignalFormsConfig. С его помощью можно включить классические CSS-классы состояния через константу NG_STATUS_CLASSES или настроить кастомные классы через динамические маппинги.
👉 https://angularexperts.ch/blog/signal-forms-config
👍6❤1
✨ TypeScript 6.0 Beta
Microsoft выпустила бету TypeScript 6.0.
Уже следующая версия 7.0 будет полностью переписана на Go с поддержкой нативного кода и многопоточности. TypeScript 6.0 выступает мостом между 5.9 и 7.0, а большинство изменений направлены на подготовку к миграции на новую архитектуру.
Помимо подготовки к переезду на Go, релиз приносит свежие фичи: улучшенный вывод типов, новые дефолты в tsconfig.json, свежие типы из стандартов ECMAScript, поддержка Subpath Imports, флаг --stableTypeOrdering и многое другое.
Отдельная благодарность katsuba.dev за предоставленную новость.
👉 https://devblogs.microsoft.com/typescript/announcing-typescript-6-0-beta/
Microsoft выпустила бету TypeScript 6.0.
Уже следующая версия 7.0 будет полностью переписана на Go с поддержкой нативного кода и многопоточности. TypeScript 6.0 выступает мостом между 5.9 и 7.0, а большинство изменений направлены на подготовку к миграции на новую архитектуру.
Помимо подготовки к переезду на Go, релиз приносит свежие фичи: улучшенный вывод типов, новые дефолты в tsconfig.json, свежие типы из стандартов ECMAScript, поддержка Subpath Imports, флаг --stableTypeOrdering и многое другое.
Отдельная благодарность katsuba.dev за предоставленную новость.
👉 https://devblogs.microsoft.com/typescript/announcing-typescript-6-0-beta/
👍13🔥6❤1👀1
✨ Как сделать программиста счастливее
Психологический комфорт программиста напрямую влияет на продуктивность, иногда в разы. Модель SCARF описывает факторы, которые критически влияют на эффективность работы.
Она включает пять ключевых элементов:
Status: Ощущение профессиональной значимости.
Certainty: Понимание того, что происходит. Хаотичное изменение приоритетов и размытые требования создают фоновую тревогу.
Autonomy: Контроль над собственной работой.
Relatedness: Это среда без страха задать глупый вопрос или признать ошибку.
Fairness: Прозрачность решений. Открытые критерии оценки и понятные правила игры важнее, чем кулуарные договоренности.
А какие вещи сделали бы вас счастливее на работе? Делитесь в комментариях.
👉 https://habr.com/ru/articles/994056/
Психологический комфорт программиста напрямую влияет на продуктивность, иногда в разы. Модель SCARF описывает факторы, которые критически влияют на эффективность работы.
Она включает пять ключевых элементов:
Status: Ощущение профессиональной значимости.
Certainty: Понимание того, что происходит. Хаотичное изменение приоритетов и размытые требования создают фоновую тревогу.
Autonomy: Контроль над собственной работой.
Relatedness: Это среда без страха задать глупый вопрос или признать ошибку.
Fairness: Прозрачность решений. Открытые критерии оценки и понятные правила игры важнее, чем кулуарные договоренности.
А какие вещи сделали бы вас счастливее на работе? Делитесь в комментариях.
👉 https://habr.com/ru/articles/994056/
👍6❤5
✨ Интересные HTML и CSS фичи
Во фронтенде технологии меняются так быстро, что часть полезных фичей просто выпадает из поля зрения. Многие разработчики до сих пор не знают о некоторых нативных возможностях HTML и CSS, которые могут упростить код и избавить от костылей.
Что стоит вспомнить:
Атрибут form: связывает кнопку с формой, даже если она находится за ее пределами. Полезно для сложных layouts.
novalidate и formnovalidate: отключают встроенную валидацию браузера, при этом псевдоклассы
Псевдокласс :lang(): стилизует элементы в зависимости от языка без дополнительных классов.
Свойство inset: короткая запись вместо
Математические константы:
👉 https://habr.com/ru/companies/ruvds/articles/991142/
Во фронтенде технологии меняются так быстро, что часть полезных фичей просто выпадает из поля зрения. Многие разработчики до сих пор не знают о некоторых нативных возможностях HTML и CSS, которые могут упростить код и избавить от костылей.
Что стоит вспомнить:
Атрибут form: связывает кнопку с формой, даже если она находится за ее пределами. Полезно для сложных layouts.
novalidate и formnovalidate: отключают встроенную валидацию браузера, при этом псевдоклассы
:valid и :invalid продолжают работать для кастомных стилей.Псевдокласс :lang(): стилизует элементы в зависимости от языка без дополнительных классов.
Свойство inset: короткая запись вместо
top: 0; right: 0; bottom: 0; left: 0;. Одна строка против четырех.Математические константы:
pi, e, infinity, NaN внутри calc() для более сложных вычислений в стилях.👉 https://habr.com/ru/companies/ruvds/articles/991142/
👍7👎3❤1🔥1
✨ WebMCP
Google и Microsoft представили WebMCP. Стандарт, который позволяет веб-разработчикам регистрировать JavaScript-функции прямо в браузере как инструменты (tools) для ИИ-агентов.
Идеологически это наследник MCP от Anthropic, но перенесенный на клиентскую сторону.
👉 https://habr.com/ru/articles/1000086/
Google и Microsoft представили WebMCP. Стандарт, который позволяет веб-разработчикам регистрировать JavaScript-функции прямо в браузере как инструменты (tools) для ИИ-агентов.
Идеологически это наследник MCP от Anthropic, но перенесенный на клиентскую сторону.
👉 https://habr.com/ru/articles/1000086/
🔥9🤮2🥴2👍1💩1🤡1
✨ Signal inputs и setInput: не пропусти при миграции
С выходом Angular 17.1 появились signal inputs, а в 19-й версии они получили статус стабильных.
Автоматическая миграция через schematic кажется простой, но в ней есть неочевидный баг, который не выдает никаких ошибок и легко ускользает при code review.
👉 https://habr.com/ru/companies/skyeng/articles/996814/
С выходом Angular 17.1 появились signal inputs, а в 19-й версии они получили статус стабильных.
Автоматическая миграция через schematic кажется простой, но в ней есть неочевидный баг, который не выдает никаких ошибок и легко ускользает при code review.
👉 https://habr.com/ru/companies/skyeng/articles/996814/
👍8❤1
✨ A11Y как архитектурный фундамент UI
Спецификации WAI-ARIA и обеспечение доступности не просто чек-лист для адаптации продукта под пользователей с ограниченными возможностями, а строгая архитектурная система. Она позволяет проектировать компоненты интерфейса, опираясь на их поведение и функции, а не на внешний вид.
Переход к спецификациям и конкретным ролям (например, dialog, alert, alertdialog) избавляет команду от путаницы в терминах. Такой поведенческий подход естественно ложится на концепцию Headless UI: сложная логика инкапсулируется и полностью отделяется от визуального слоя.
👉 https://dev.to/artalar/a11y-is-ui-architecture-2ibn
Спецификации WAI-ARIA и обеспечение доступности не просто чек-лист для адаптации продукта под пользователей с ограниченными возможностями, а строгая архитектурная система. Она позволяет проектировать компоненты интерфейса, опираясь на их поведение и функции, а не на внешний вид.
Переход к спецификациям и конкретным ролям (например, dialog, alert, alertdialog) избавляет команду от путаницы в терминах. Такой поведенческий подход естественно ложится на концепцию Headless UI: сложная логика инкапсулируется и полностью отделяется от визуального слоя.
👉 https://dev.to/artalar/a11y-is-ui-architecture-2ibn
👍4🤡3❤1🥰1😇1
✨ Основы Signal Forms
Если Reactive Forms всегда ощущались как отдельный мир внутри Angular, то Signal Forms органичная часть сигнальной модели, которую команда последовательно развивает.
В статье разбираются ключевые аспекты: построение формы, подключение полей в шаблоне, встроенные и кастомные валидаторы, cross-field валидация, управление отправкой и сброс формы.
👉 https://angularexperts.io/blog/signal-forms-essentials
Если Reactive Forms всегда ощущались как отдельный мир внутри Angular, то Signal Forms органичная часть сигнальной модели, которую команда последовательно развивает.
В статье разбираются ключевые аспекты: построение формы, подключение полей в шаблоне, встроенные и кастомные валидаторы, cross-field валидация, управление отправкой и сброс формы.
👉 https://angularexperts.io/blog/signal-forms-essentials
👍11🔥3👎1
✨ Новые реактивные формы в Angular
Астрологи объявили неделю Signal Forms, количество постов о формах увеличилось вдвое.
Большинство материалов по Signal Forms ограничиваются базовыми примерами, но эта статья идет дальше, предлагая глубокий разбор реального сценария формы регистрации.
👉 https://habr.com/ru/companies/tbank/articles/1000906/
Астрологи объявили неделю Signal Forms, количество постов о формах увеличилось вдвое.
Большинство материалов по Signal Forms ограничиваются базовыми примерами, но эта статья идет дальше, предлагая глубокий разбор реального сценария формы регистрации.
👉 https://habr.com/ru/companies/tbank/articles/1000906/
👍20😁6
✨ Шпаргалка по поиску узких мест в Linux
Для эффективного анализа производительности недостаточно просто открыть top. Необходимо понимать, на каком уровне возникла деградация: приложения, ядро, файловая система, диски, сеть, CPU, память, аппаратный уровень.
Каждый уровень имеет свой набор инструментов. Диагностику стоит вести сверху вниз: от приложения к железу, последовательно исключая слои. Если на уровне приложения все чисто, идем глубже. Такой подход экономит время и исключает ложные версии.
👉 https://habr.com/ru/companies/ruvds/articles/1000218/
Для эффективного анализа производительности недостаточно просто открыть top. Необходимо понимать, на каком уровне возникла деградация: приложения, ядро, файловая система, диски, сеть, CPU, память, аппаратный уровень.
Каждый уровень имеет свой набор инструментов. Диагностику стоит вести сверху вниз: от приложения к железу, последовательно исключая слои. Если на уровне приложения все чисто, идем глубже. Такой подход экономит время и исключает ложные версии.
👉 https://habr.com/ru/companies/ruvds/articles/1000218/
❤2
✨ Избавляемся от утечек памяти
В Angular 21.1 появилась экспериментальная фича withExperimentalAutoCleanupInjectors. Решающая давнюю проблему утечек памяти, связанную с роутингом.
По умолчанию Angular не уничтожает инжекторы отсоединенных маршрутов, даже если они больше не хранятся в RouteReuseStrategy.
Теперь чтобы включить автоматическую очистку неиспользуемых инжекторов маршрутов, достаточно прописать withExperimentalAutoCleanupInjectors в конфигурации роутера.
После каждой навигации она проверяет, какие маршруты в данный момент хранятся стратегией, и уничтожает инжекторы тех отсоединенных маршрутов, которые стратегия повторного использования больше не хранит.
👉 https://habr.com/ru/articles/1002642/
В Angular 21.1 появилась экспериментальная фича withExperimentalAutoCleanupInjectors. Решающая давнюю проблему утечек памяти, связанную с роутингом.
По умолчанию Angular не уничтожает инжекторы отсоединенных маршрутов, даже если они больше не хранятся в RouteReuseStrategy.
Теперь чтобы включить автоматическую очистку неиспользуемых инжекторов маршрутов, достаточно прописать withExperimentalAutoCleanupInjectors в конфигурации роутера.
После каждой навигации она проверяет, какие маршруты в данный момент хранятся стратегией, и уничтожает инжекторы тех отсоединенных маршрутов, которые стратегия повторного использования больше не хранит.
👉 https://habr.com/ru/articles/1002642/
👍21🔥12❤2
✨ Память в JavaScript
Сегодня нейросети генерируют тонны кода, но у этого удобства есть цена. Код делает то, что нужно, но часто течет по памяти и не выдерживает продакшен нагрузок. Ни один линтер не отловит лишнее замыкание, захватившее ненужные данные, или забытый event listener.
Чтобы находить такие ошибки на код-ревью и писать надежные приложения, нужно четко понимать, как под капотом движка V8 устроена работа с памятью, как он хранит объекты, когда решает их удалить, и почему бездумная аллокация объектов может стать причиной серьезных проблем.
👉 https://habr.com/ru/articles/1003702/
Сегодня нейросети генерируют тонны кода, но у этого удобства есть цена. Код делает то, что нужно, но часто течет по памяти и не выдерживает продакшен нагрузок. Ни один линтер не отловит лишнее замыкание, захватившее ненужные данные, или забытый event listener.
Чтобы находить такие ошибки на код-ревью и писать надежные приложения, нужно четко понимать, как под капотом движка V8 устроена работа с памятью, как он хранит объекты, когда решает их удалить, и почему бездумная аллокация объектов может стать причиной серьезных проблем.
👉 https://habr.com/ru/articles/1003702/
👍10🤡5❤2
✨ Вышел Angular 21.2
Второй минорный релиз получился очень насыщенным.
Ключевые нововведения:
Теперь в шаблонах можно использовать стрелочные функции.
Для блоков управления потоком
Добавлен алиас
Signal Forms получили сразу несколько улучшений: директиву
В Resource API появился сигнал
Изменений много, рекомендуем заглянуть в статью, чтобы изучить детали.
👉 https://blog.ninja-squad.com/2026/02/26/what-is-new-angular-21.2
Второй минорный релиз получился очень насыщенным.
Ключевые нововведения:
Теперь в шаблонах можно использовать стрелочные функции.
Для блоков управления потоком
@switch добавлена строгая проверка типов с помощью @default never. Компилятор выдаст ошибку, если обработаны не все возможные значения.Добавлен алиас
ChangeDetectionStrategy.Eager взамен устаревшему Default. В следующем мажорном релизе дефолтной стратегией станет OnPush.Signal Forms получили сразу несколько улучшений: директиву
FormRoot для декларативной привязки формы и логики сабмита, утилита transformedValue для синхронизации значения с моделью, а также SignalFormControl для миграции с Reactive Forms.В Resource API появился сигнал
snapshot(), возвращающий объект со статусом и значением/ошибкой, а также resourceFromSnapshots() для преобразования снапшота обратно в Resource.Изменений много, рекомендуем заглянуть в статью, чтобы изучить детали.
👉 https://blog.ninja-squad.com/2026/02/26/what-is-new-angular-21.2
👍27🔥7❤3🤬1