🦊 Angular Fox 🚀 — русскогорящие новости сообщества
4.15K subscribers
1.41K photos
7 videos
1.27K links
Как костыль на реактивно-лисьей тяге 🔥🦊

Нравится канал? Подпишись на меня!
👉 twitter.com/thekiba_ru
💖 twitter.com/thekiba_io
medium.com/@thekiba
github.com/thekiba

Чаты @angular_ru @angular_jobs
Download Telegram
Скрытие email-адресов

В статье представлено актуальное исследование методов обфускации email-адресов от спам-ботов.

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

Как показывает статистика, оставленный в открытом виде email или mailto: ссылка парсятся в 100% случаев (уровень защиты 0%). Однако большинство ботов работают примитивно, даже базовая замена текста на спецсимволы отсекает до 95% парсеров.

👉 https://spencermortensen.com/articles/email-obfuscation/
👍32
Developer Experience

Про Developer Experience (DX) принято говорить в контексте комфорта и заботы о сотрудниках. Из-за этого фокус часто смещается. Руководство закупает удобные кресла и печеньки в офисе, в то время как пайплайн как собирался 40 минут, так и собирается.

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

Андрей Синицын предлагает четыре метрики, которые напрямую переводятся в деньги:

Time to first commit. Сколько дней от выхода нового разработчика до его первого коммита в продакшн.

Доля времени на инфраструктурное трение. Сколько процентов рабочего дня уходит на борьбу с инструментами, а не на написание кода.

Стоимость инцидента в минутах простоя.

Cost-to-value платформенной команды. Сколько стоит содержать платформу и сколько она экономит остальным.

👉 https://habr.com/ru/articles/1028246/
👍5👎2🔥1
Как обезопасить работу с NPM

Чтобы минимизировать риски и закрыть основные векторы атак, авторы предлагают внедрить ряд практик:

Фиксация зависимостей. Используйте npm ci в CI/CD и на проде для точной установки версий строго из lock-файла.

Борьба с подменами и ИИ. Не устанавливайте вслепую пакеты, которые советует ИИ, чтобы не стать жертвой slopsquatting.

Аудит зависимостей. npm audit, npm outdated, npm doctor - базовый набор для оценки здоровья проекта.

Не публикуйте секреты в реестр. .npmignore и .gitignore разные файлы. Если вы обновили только второй, .env может утечь в опубликованный пакет.

Ограничение скриптов. Применяйте флаг --ignore-scripts для защиты от выполнения вредоносного кода в хуках.

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

Полный список в статье.

👉 https://cheatsheetseries.owasp.org/cheatsheets/NPM_Security_Cheat_Sheet.html
👍42
Как Cursor с Claude Opus снёс продакшен базу данных за 9 секунд

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

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

А вы сталкивались с подобными ситуациями? К чему это привело, пишите в комментариях.

👉 https://habr.com/ru/articles/1028758/
😁23🤯11🤣9👍2👏1🕊1😨1
50 оттенков порока: за что команды ненавидят тимлидов

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

Топ-7 управленческих ошибок из статьи:

1. Микроменеджмент. Руководитель вмешивается в каждый шаг, лишая команду самостоятельности и превращаясь в бутылочное горлышко.
2. Плохая обратная связь. Отсутствие своевременной оценки работы.
3. Непогрешимость. Отказ признавать ошибки и игнор объективных показателей ведут проект к краху.
4. Манипуляция. Управление через эмоции и уязвимости вместо прозрачных договоренностей.
5. Лицемерие. Использование фразы "мы семья" для принуждения к неоплачиваемым переработкам, и требование соблюдать правила, которые сам игнорирует.
6. Ложь. Пустые обещания роста и подгонка показателей под красивые отчеты.
7. Замалчивание. Блокировка информации в обе стороны: ни вверх, ни вниз по иерархии.

👉 https://habr.com/ru/companies/avito/articles/1029328/
👏92
Права в Linux

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

В статье подробная и структурированная памятка по системе привилегий в Linux, которая поможет упорядочить знания и закрыть пробелы в понимании того, как ОС управляет доступом.

👉 https://habr.com/ru/articles/1027674/
43👍2🥴2🤝1🆒1
Рабочее место не-вайбкодера по методу Spec-Driven Development

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

В результате получилось отвязать агента Claude Code от стандартной платной подписки, подключить сторонних LLM-провайдеров и реализовать бесшовное переключение моделей индивидуально для каждого проекта без перезагрузок.

👉 https://habr.com/ru/companies/yadro/articles/1029288/
👍6
CSS для тех, кто спал и проснулся

Если вы, как и большинство, в свое время быстро пробежались по CSS и ушли в JavaScript, самое время вернуться. За последние несколько лет язык получил столько возможностей, что часть задач, которые раньше решались только через JS или препроцессоры, теперь закрывается чистым CSS.

CSS Nesting: вложенность селекторов без Sass.

Слои каскада (@layer): гибкое управление приоритетом стилей.

Container Queries (@container): позволяет менять стили компонента в зависимости от ширины его родительского контейнера, а не размеров окна браузера.

Продвинутые селекторы и многое другое.

Хороший повод пересмотреть, сколько логики в вашем проекте живет в JS только потому, что в свое время CSS так не умел.

👉 https://habr.com/ru/articles/1026574/
👍12🔥2👏1
🚀 Resource API переходит в Stable!

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

Хорошая новость в том, что недавно смерджен PR, который официально переводит семейство Resource API: resource, rxResource и httpResource из экспериментальной стадии сразу в стабильный статус, минуя стадию Developer Preview.

Важно: Связанный с этим изменением PR, содержит breaking change. Вы можете заметить небольшие изменения в тайминге установки значения value, поэтому стоит проверить свои приложения.

👉 https://github.com/angular/angular/pull/68253
🔥16🎉3
5 стадий жизненного цикла фичи

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

Пять стадий выглядят так:

Experimental. Основной функционал работает, но API нестабилен.

Developer Preview. Фича отполирована, концептуальные споры позади, но команда все еще собирает обратную связь. Можно использовать в проде, но только взвесив риски.

Stable. API зафиксирован и защищен политикой совместимости.

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

Removed. Код удален из репозитория навсегда.

Отслеживать текущий статус конкретного API удобно через официальный Angular API Reference, а для проверки доступности фич по версиям, есть инструмент Can I Use Angular Features.

👉 https://medium.com/p/c3ecc5529d53
👍104
Signal Forms API переведены в публичное API

Теги @experimental заменены на @publicApi 22.0 во всех Signal Forms API.

Начиная с 22-й версии вы сможете смело переписывать или создавать новые формы в своих проектах, не боясь, что API внезапно изменится и сломает вам приложение в следующем обновлении.

👉 https://github.com/angular/angular/commit/7745365910771d97c91e9b640c2c26a99bfa5a6d
🔥25👍112
Центры обработки данных в космосе

Бывший инженер NASA и Google разложил по полочкам, почему орбитальные дата-центры для AI являются техническим тупиком.

Четыре причины:

⚡️ Энергия. Батарея МКС тянет примерно 200 GPU. Для датацентра уровня OpenAI нужно 500 таких спутников.

🔥 Терморегулирование. В вакууме нет конвекции. Система охлаждения МКС рассеивает 16 кВт, чуть больше четверти одной серверной стойки.

☢️ Радиационная стойкость. GPU деградируют от радиационных эффектов. Радиационно-стойкая электроника по производительности сравнима с аппаратурой 2005 года.

📡 Канал связи. Максимум 1 Гбит/с со спутника против 100 Гбит/с в земной стойке. Разрыв в 100 раз.

Вывод автора: реализуемо, но несоразмерно дорого и с посредственной производительностью.

А как вы думаете? Это временные трудности или фундаментальные ограничения, которые делают идею нежизнеспособной в принципе?

👉 https://habr.com/ru/articles/1030308/
🤔32👍2
За пределами Clean Code

В enterprise-разработке одного только Clean Code недостаточно. Даже аккуратная структура папок не спасает проект от деградации архитектуры по мере роста команды и кодовой базы.

В статье разбирается подход со строгими внутренними границами между доменами на базе Nx-монорепозитория.

👉 https://angular.love/beyond-clean-code-building-a-scalable-angular-frontend-architecture-with-nx-monorepos
👍7🔥2
Выжать больше из локальных LLM

Установка из коробки через Ollama или LM Studio самый быстрый, но далеко не самый эффективный способ поднять локальную модель. Под капотом этих инструментов скрывается множество компромиссов, из-за которых вы теряете как в скорости генерации, так и в качестве ответов.

Переход на чистый llama.cpp, выбор правильной стратегии выгрузки слоев модели в видеопамять и использование современных алгоритмов динамического квантования позволяют ускорить инференс до 3 раз на домашнем железе и вместить более умную модель в ограниченный объем VRAM.

👉 https://habr.com/ru/articles/1025132/
👍5🔥1
Предварительная загрузка изображений с помощью JavaScript

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

Пять способов:

new Image() классика. Запускает загрузку немедленно, можно подписаться на onload. Минус: полагается на HTTP-кэш. Если сервер отдает Cache-Control: no-store будет два запроса.

<link rel="preload" /> надежнее. Использует отдельный preload cache, независимый от Cache-Control. Браузер не дублирует запрос, даже если изображение понадобилось до завершения загрузки.

Скрытый div с background-image рабочий, но странный вариант. Важно: display: none отменяет загрузку, visibility: hidden нет.

Cache API максимальный контроль над кэшем. Минус: кэш не очищается автоматически между перезагрузками.

fetch() не нужно управлять кэшем вручную, однако по-прежнему зависит от Cache-Control сервера.

👉 https://habr.com/ru/companies/timeweb/articles/1020138/
👍111👏1
Вам не нужен OpenClaw

Вокруг AI-агентов много хайпа, но мало понимания того, как они устроены изнутри.

Никита Пастухов разобрал OpenClaw по компонентам и показал, что ничего сверхъестественного там нет.

Вся архитектура сводится к базовой формуле: Agent = LLM + Harness. В этой парадигме LLM обычный stateless-сервис, который принимает и возвращает JSON. Вся инженерная работа заключается в написании Harness (обвязки) механизмов управления контекстом, интеграции инструментов, памяти и обеспечении безопасности.

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

👉 https://habr.com/ru/articles/1029326/
👍51
Про 10x программистов

На фоне хайпа вокруг AI-агентов тема эффективности программистов снова на слуху.

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

Сергей Кушниренко выделяет несколько паттернов, за которыми прячется эта магия:

Проектная экспертиза. Скорость таких разработчиков - это отличная память на старые костыли, флаги и неявные зависимости. Но их наличие часто создает огромный bus factor.

YAGNI. Эффективность через написание меньшего количества кода, вместо того чтобы городить оверинжиниринг в виде абстрактных фабрик.

Организаторы хаоса. Их вклад в код около 20%, но оставшееся время они выравнивают дорогу для команды: актуализируют документацию, чинят пайплайны и декомпозируют задачи.

Узкие специалисты. Опыт и насмотренность позволяют за день закрыть задачу, на которую другой потратит неделю, просто пытаясь понять, с чего начать.

👉 https://habr.com/ru/articles/1032574/
👍74
ИИ-агент нашел в NGINX критическую уязвимость, которой 18 лет

Астрологи объявили эпоху критических уязвимостей.

ИИ-агент за 6 часов нашел в NGINX 5 дыр в работе с памятью, 4 из которых подтвердил сам NGINX. Самая опасная CVE-2026-42945 с оценкой 9.2 из 10, удаленное выполнение произвольного кода через обычные директивы rewrite и set в конфиге.

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

А как часто вы обновляете NGINX на своих серверах?

👉 https://habr.com/ru/news/1035414/
🤯17
🤖 State of AI 2026

Недавно опубликовали результаты ежегодного опроса «State of AI 2026», в котором приняли участие 7 258 разработчиков.

Вот главное:

📈 ИИ стал нормой, а не экспериментом
Доля ИИ-генерируемого кода выросла с 28% в 2025-м до 56% в 2026-м. Количество тех, кто использует ИИ удвоилось за год.

🏆 Claude Code лидер среди агентов
По позитивным отзывам он занял первое место, обогнав OpenAI Codex и GitHub Copilot.

💸 Монетизация растет
Расходы на ИИ-инструменты увеличиваются. Бесплатная эпоха, субсидированная венчурными деньгами, похоже, заканчивается. Большинство разработчиков считают, что мы находимся в пузыре и тем не менее продолжают платить.

⚠️ Риски тоже растут
Вытеснение с работы, военное применение ИИ, экологический ущерб, засилье AI-слопа, галлюцинации и неточности.

Посмотреть красивые графики и изучить полные результаты можно тут.

👉 https://2026.stateofai.dev/
👍9
SSR и CSR в одном месте

Интересный подход к SEO в SPA: смотришь на User-Agent и отдаешь разный рендеринг. Люди получают обычный CSR, поисковые боты получают пререндеренную страницу через отдельный сервис.

Архитектуру переписывать не нужно, разработка остается привычной, SEO не страдает. Единственное, за чем надо следить, актуальный список User-Agent ботов, иначе бот получит пустой шаблон и позиции в выдаче упадут.

В статье разобраны конкретные детали реализации на Angular 17 и подводные камни, с которыми столкнулась команда.

👉 https://habr.com/ru/articles/1037280/
👍15
Angular 22: нативный debounce для Signals

В Angular 22 появится новый API debounced() и это именно то, чего давно не хватало.

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

Старое решение
Раньше приходилось тащить RxJS, конвертировать сигнал в Observable через toObservable(), применять debounceTime(), затем конвертировать обратно через toSignal(). Работает, но выглядит как костыль.

Новое решение
debouncedQuery = debounced(() => this.query(), 500);

Все. Один вызов и никакого RxJS.

Promise-режим
Вместо миллисекунд можно передать функцию, возвращающую Promise. Например, подождать окончания скролла, CSS-анимации или подтверждения пользователя.

debouncedQuery = debounced(() => this.query(), untilScrollEnd);


👉 https://medium.com/p/74d76eb48384
🔥477😁3