
API — это «кровеносная система» современного веба, но без должной защиты они становятся лёгкой добычей для хакеров. OWASP выделил Топ-10 уязвимостей API, которые чаще всего эксплуатируют злоумышленники. Разберём ключевые риски и методы защиты.
Делаем веб лучше
API — это «кровеносная система» современного веба, но без должной защиты они становятся лёгкой добычей для хакеров. OWASP выделил Топ-10 уязвимостей API, которые чаще всего эксплуатируют злоумышленники. Разберём ключевые риски и методы защиты.
Dependency Injection (DI) один из столпов, на которых держится фреймворк Angular. Каждый разработчик, так или иначе, сталкивается с ним с первого дня: запрашивает сервисы в конструкторе, добавляет providedIn: 'root' и видит, как «магия» работает. Но именно в этом и кроется ловушка.
Для многих DI так и остается на уровне «магии» удобного механизма, который просто работает. Однако поверхностное понимание этого мощнейшего инструмента неизбежно приводит к архитектурным компромиссам: неочевидным утечкам памяти, сложностям в тестировании, созданию неявных связей между компонентами и, в конечном счете, к коду, который трудно поддерживать и масштабировать.
Эта статья не очередной пересказ официальной документации. Это глубокое погружение в архитектуру и философию Dependency Injection в Angular. Наша цель демистифицировать «магию» и превратить ее в предсказуемый, управляемый и мощный инженерный инструмент в вашем арсенале.
Мы пройдем путь от фундаментальных принципов инверсии контроля (IoC) до тонкостей иерархического инжектора. Мы разберем на атомы все стратегии предоставления зависимостей, научимся управлять их жизненным циклом и областью видимости. Мы изучим продвинутые паттерны с использованием InjectionToken и multi-провайдеров и поймем, как современная функция inject() меняет подход к композиции логики.
Визуализатор звука, в котором светящийся 3D-шар пульсирует и меняет цвет в такт музыке, а перетаскиваемые панели GSAP плавно перемещаются вокруг него по инерции.
Звук — это волны, зрение — это волны, которые мы видим. Я всегда стремлюсь поймать момент, когда эти волны накладываются друг на друга. Для недавнего задания от сообщества Webflow и GSAP, посвященного плагинам GSAP Draggable и Inertia, я решил развить идею, создав футуристический визуализатор, реагирующий на звук. Идея заключалась в создании научно-фантастического интерфейса "детектора аномалий", который реагирует на музыку в реальном времени, совмещая атмосферные визуальные эффекты со звуком.
Цифровой сертификат является неотъемлемой частью систем информационной безопасности, при этом зачастую вскользь упоминаясь как сопутствующий элемент более крупных технологий и протоколов.
Рассмотрим сертификаты как независимые единицы: их структуру, области применения и жизненный цикл.
Представьте дизайн-агентство, которое создает не просто красивые макеты, а целые технологические экосистемы. Один раз вложившись в разработку уникальных компонентов и фирменного стиля, дизайнеры получают возможность генерировать профессиональные сайты со скоростью 50+ проектов в час.
На практике это сводится к простому циклу: вы отправляете промпт в ChatGPT, получаете в ответ конфигурационный файл, загружаете его в приложение и одной командой сборки создаёте готовые, стилизованные страницы. Всё это уже настроено в стартовом шаблоне, включая авторизацию и многоязычный AI-чат.
Или используйте полную автоматизацию так же как в v0, но с прицелом под крупные корпоративные интеграции.
Тестирование — важнейший аспект разработки программного обеспечения, особенно для веб‑приложений. В Go тестирование встроено в язык и предоставляет мощные инструменты для написания и выполнения тестов. В этой статье мы рассмотрим поток веб-приложения на Go, как писать модульные тесты для каждого слоя приложения.
Капчи, которые должны «отделять» людей от ботов, стали настоящей головной болью для пользователей. Порой приходится не выбирать светофор или «зебру», а решать сложные головоломки или математические примеры, многие из которых ставят в тупик — а вот боты, кажется, щёлкают их как орешки. Мы в beeline cloud решили разобраться в теме.
Как попытки быть ближе к пользователю иногда отдаляют от цели
В одномстартапе мы решили сделать по уму — активно собирать и учитывать обратную связь.
Видим комментарий: «Сделайте поиск попроще» — переделываем.
Пишут: «Темная тема нужна обязательно!» — добавл яем.
...
Сегодня веб-приложения стали сложными интерактивными системами, напоминающими полноценные десктоп приложения. Однако за красивыми интерфейсами и богатым функционалом часто скрывается важный аспект, которому уделяется недостаточно внимания — доступность (accessibility). Для миллионов пользователей с ограниченными возможностями это означает, что они не могут полноценно взаимодействовать с сайтом, выполнить базовые действия или получить информацию.
Проблема особенно ярко выражена в современных одностраничных приложениях (SPA), кастомных компонентах, модальных окнах и прочих динамических UI-решениях, которые не учитывают, как с ними будут работать вспомогательные технологии. Например:
Всем привет! Давно я ничего не писал на Хабр про WebRTC. Наверное как‑то не было повода, да и WebRTC давно понятен и прост в общих чертах. Пара строк кода с одной стороны, пара строк кода с другой — вот и готово. Наверное. Там дальше есть несколько тонкостей. На самом деле — целое море тонкостей и обстоятельств, которые надо понимать и уметь с ними работать, но такая уж наша инженерная доля — криво неидеально читать и писать стандарты.
Но сегодня я хочу рассказать не столько про WebRTC как таковой, сколько про велосипеды в его использовании в продакшн‑среде и о том, как тихо без помпы растёт новый стандарт для его сигналинга. На написание этой серии статей меня натолкнула активность Sean Dubois, создателя и мейнтейнера Pion — отличной WebRTC‑библиотеки для Golang.
Привет, Хабр! Представьте ситуацию: вы нашли крутой сервис, регистрируетесь, вводите свой email my.name+coolservice@gmail.com
(ведь вы, как и я, любите порядок во входящих) и… получаете ошибку «Некорректный email». Знакомо? Уверен, что да.
Каждый раз, когда я сталкиваюсь с таким, у меня дергается глаз. Это не просто мелкий баг. Это симптом глубокой проблемы в подходе к разработке и непонимания базовых стандартов. Давайте раз и навсегда разберемся, почему сервисы не принимают почту с «плюсом», почему это плохо для бизнеса и, главное, как это исправить.
Вы когда-нибудь сталкивались с плагинами, которые лезут в чужие папки, перезаписывают файлы ядра и превращают git status
в ад?
Я — да. И вместо того чтобы мириться с ручным копированием, гигантскими .gitignore и вечными конфликтами, написал dmp — инструмент, который:
Отслеживает, откуда взялся каждый файл,
Автоматически разрешает конфликты (или даёт контроль),
Не ломает IDE (никаких симлинков!),
Работает с любыми языками и фреймворками.
Для кого:
— Разработчики плагинов/модулей,
— Те, кто устал от git-submodules
и rsync
,
— Все, кто хочет чистый workflow без монрепозитория.
Разработка программного обеспечения и DevOps-инфраструктура в сложно представить без мощных open-source-инструментов. Некоторые из них не просто полезны — они меняют подход к автоматизации, деплою, ИИ-интеграции и безопасности. В этой статье собраны действительно сильные и перспективные проекты с открытым кодом: они бесплатны, активно развиваются и способны радикально упростить жизнь разработчика.
В этом туториале покажем, как подключить и использовать трекинг консоли в Хоуке. Вы научитесь видеть, что происходило в браузере за секунды до сбоя, и отлаживать баги без ручного воспроизведения.
Привет, Хабр! Пару лет назад мы уже выпускали подборку книг, подкастов и других ресурсов для изучения языка программирования Go. За это время коллекция полезных материалов подросла, и пришло время поделиться продолжением.
Новая подборка ждет вас под катом. Сохраняйте себе и отправляйте коллегам — пригодится как новичкам, так и опытным специалистам.
В современном интернет-маркетинге одна из самых острых проблем — это некачественный трафик, который создают боты и скликеры. Особенно сильно с этим сталкиваются рекламодатели, использующие контекстную рекламу: значительная часть бюджета уходит на оплату переходов, которые совершают не реальные люди, а автоматические программы или конкуренты.
В этой статье я расскажу, как можно самостоятельно настроить гибкую и прозрачную систему выявления и маркировки ботов на сайте, чтобы защитить рекламный бюджет и повысить эффективность онлайн-рекламы.
Привет, Хабр!
Недавно у меня появилась мысль поделиться распространёнными HTML- и CSS-ошибками, которые я вижу у коллег. Только мне хотелось выглядеть убедительно, чтобы не было вкусовщины. И тут я сильно задумался.
На HTML и CSS очень сложно сделать критическую ошибку. Чтобы интерфейс не заработал. Но всё же я собрал список. Я постарался выделить только критические ошибки. Конечно, это субъективный список, поэтому не знаю, согласитесь ли вы с ним.
Давайте посмотрим, что я вам подготовил.
Четыре года назад на собеседовании я услышал от интервьюера о том, как замечательно паттерн Спецификация помогает справиться с проблемой разрастания репозитория. Я думаю, многие с этим сталкивались, когда количество методов типа getByThisAndThat(…)
улетает за десяток, а то и за несколько десятков, и репозиторием становится пользоваться неудобно.
Вдохновившись таким позитивным отзывом, я изучил первоисточник и начал экспериментировать с использованием спецификации как со средством упрощения репозитория.
В этой статье я дам обзор оригинального паттерна, поделюсь своим неоднозначным четырехлетним опытом его применения (с конкретными примерами кода, разумеется) и выскажу свое мнение как о самом паттерне, так и о применении его (на самом деле, его вырожденного варианта) в репозитории.
Три недели назад произошло событие, которое в фронтенд-сообществе многие восприняли с двойственными чувствами. Vercel, та самая компания, которую обычно ассоциируют с Next.js и хостингом для модных React-приложений, объявила о покупке NuxtLab - команды, стоящей за Nuxt и Nitro.
Всем привет!
Экспериментировал с оптимизацией SQL запросов в ChatGPT и Claude. В какой-то момент понял, что это превращается в одно и то же: Напиши промт → вставь SQL → подожди → поправь → повтори