Обновить
Сначала показывать
Порог рейтинга
Уровень сложности

Command & Control как ключ к расследованию утечек данных

Уровень сложностиСредний
Время на прочтение7 мин
Охват и читатели51

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

А в подавляющем большинстве случаев системные утечки — это процесс, управляемый извне. И ключ к расследованию, минимизации ущерба и построению защиты лежит в детектировании инфраструктуры Command & Control (C2). Без понимания того, как работает C2, SOC превращается в пожарную команду, тушащую искры, но не видящую самого пожара.

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

Открыть материал

Новости

DI‑контейнер Symfony: autowiring, теги и compiler passes

Уровень сложностиСредний
Время на прочтение8 мин
Охват и читатели3.8K

DI-контейнер — сердечко Symfony. Контроллеры, сервисы, слушатели событий, консольные команды, Voter, нормалайзеры — всё это сервисы, которые живут в контейнере и получают зависимости через него.

Разберём три уровня глубины: autowiring для повседневной работы, теги для расширяемых архитектур, compiler passes для магии уровня фреймворка.

Читать далее

Concepts в C++: шаблоны, которые наконец‑то понятны

Уровень сложностиПростой
Время на прочтение6 мин
Охват и читатели3.3K

Ошибки шаблонов в C++ — отдельный жанр: вы ожидаете простой контракт к типу, а получаете десятки строк из глубин STL. Проблема не в компиляторе, а в том, что сами требования к типам в классических шаблонах долгое время оставались неявными. Concepts это меняют: они позволяют формализовать ожидания к типу прямо в коде, сделать перегрузку осмысленной, а ошибки — читаемыми. В этой статье разберём, как работают concepts, зачем они действительно нужны и как использовать их не как «синтаксический сахар», а как инструмент проектирования.

Читать далее

Делегаты и Лямбды: От тайного знания к повседневному инструменту

Уровень сложностиПростой
Время на прочтение6 мин
Охват и читатели6.5K

В этой статье мы не просто посмотрим синтаксис — мы поймём зачем это нужно и как работает под капотом. Мы пройдём путь от указателей на функции в C/C++ до современных лямбда-выражений в C#, разберёмся с делегатами и научимся использовать всю мощь функциональных возможностей языка.

Читать далее

Design‑First в действии: API на Spring с OpenAPI Generator

Уровень сложностиСредний
Время на прочтение9 мин
Охват и читатели6.4K

Когда команда пишет API, но документация живёт своей жизнью, а интеграторы часами гадают, что значит ошибка 500, — проект неизбежно тонет в хаосе. В этой описан подход, который является лучшим решением: Design‑First на основе OpenAPI.

Мы пройдём полный цикл: от проектирования спецификации до работающего Spring‑приложения с автоматической генерацией кода и централизованной обработкой ошибок.

Вы узнаете, как одна команда ./gradlew clean build может создать модели и интерфейсы, избавив вас от рутины.

Читать далее

Проблема «зоопарка» протоколов в одной АСУ ТП

Уровень сложностиСредний
Время на прочтение8 мин
Охват и читатели7.1K

На бумаге интеграция в АСУ ТП выглядит понятной: подключили оборудование, настроили обмен, передали данные в SCADA и выше по контуру. На практике всё быстро упирается в разнородные протоколы, старые и новые устройства в одной сети, рассинхрон по времени и проблемы с тем, что одни и те же данные в разных системах живут под разными именами. В статье — о том, как с этим работают в реальных промышленных сетях: где помогают шлюзы, когда уместен OPC, в чём ограничения нативных драйверов и почему без единого пространства данных интеграция так и остаётся набором локальных решений.

Разобраться в теме

Блокировки в 1С: управляемые и автоматические

Уровень сложностиСредний
Время на прочтение8 мин
Охват и читатели5.1K

Привет, Хабр!

Блокировки — одна из тех тем в 1С, которые все знают на уровне «ну там что-то с параллельным доступом», но мало кто понимает до конца.

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

Когда два пользователя одновременно меняют один и тот же документ или регистр, возникает конфликт. Без блокировок один перезапишет данные другого — классическая проблема lost update. Или один прочитает данные, которые второй ещё не дозаписал.

Блокировки гарантируют, что параллельные операции не сломают данные. Но за это приходится платить — пока один пользователь держит блокировку, другие ждут. Вопрос в том, кто управляет этим процессом: СУБД автоматически или мы вручную.

Разобрать блокировки

Поиск и устранение проблем в Zabbix, или как перестать «слепо» мониторить

Уровень сложностиСредний
Время на прочтение7 мин
Охват и читатели10K

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

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

Читать далее

Temporal Tables в MS SQL Server: история изменений

Уровень сложностиПростой
Время на прочтение6 мин
Охват и читатели5.3K

Привет, Хабр!

Temporal tables позволяют следить за историями изменений уровне движка. SQL Server сам хранит полную историю изменений каждой строки — без триггеров, без дополнительного кода и без самописного аудита. Фича появилась в SQL Server 2016 и к сегодняшнему дню обросла возможностями. Разберём, как все устроено и как использовать.

Читать далее

Как найти подозрительные логины из разных стран за 2 часа в PostgreSQL

Уровень сложностиСредний
Время на прочтение10 мин
Охват и читатели4.8K

В задачах на SQL особенно интересно то, что один и тот же результат часто можно получить несколькими способами – и разница между ними оказывается не только в красоте запроса, но и в его поведении на реальных данных. В этой статье – разбор прикладной задачи про поиск подозрительных логинов из разных стран в пределах двух часов: с вариантом через self join, альтернативой на оконных функциях и сравнением планов выполнения в PostgreSQL.

Разбор запроса

Система компоновки данных в 1С

Уровень сложностиСредний
Время на прочтение7 мин
Охват и читатели6K

Большинство знают базу: создал схему компоновки, написал запрос, перетащил поля в настройки — получил отчёт. Но СКД умеет гораздо больше! И многие задачи, которые решают кодом в модуле отчёта, на самом деле решаются средствами самой компоновки — проще, надёжнее и с бонусом в виде пользовательской настройки.

Разберём механизм и приёмы, которые экономят время и код.

Читать далее

Микроуправление под видом менторства: Как задушить инициативу в зародыше

Уровень сложностиПростой
Время на прочтение8 мин
Охват и читатели8.5K

В каждом ИТ‑проекте есть момент, когда опытный разработчик или архитектор получает в подчинение джуниора или новую команду. Естественно, тимлид хочет добиться эффективной работы своих новых подчиненных искренне веря, что он ментор, наставник, «старший товарищ». Но через некоторое время для команды он превращается в надзирателя, который заглядывает через плечо, проверяет каждый коммит и требует отчета по каждому чиху.

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

Разбор проблемы

CSV в Spark: Искусство правильной загрузки данных

Уровень сложностиПростой
Время на прочтение9 мин
Охват и читатели6.4K

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

Читать далее

Ближайшие события

strace: отладка Linux-приложений через системные вызовы

Уровень сложностиПростой
Время на прочтение5 мин
Охват и читатели6.2K

Когда процесс зависает, молчит в логах и при этом продолжает жить своей странной жизнью, обычные инструменты наблюдения быстро упираются в потолок. В таких ситуациях strace полезен не как «ещё одна консольная утилита», а как прямой способ увидеть, чем процесс занят на уровне системных вызовов: что он открывает, чего ждёт, куда пишет и на чём реально тормозит. В статье — коротко и по делу о том, как читать этот поток событий и применять strace в типовых продовых расследованиях, где дебаггер, исходники и лишние эксперименты недоступны.

Читать далее

Паттерн «Идемпотентный потребитель» в .NET и зачем он вам нужен

Уровень сложностиСредний
Время на прочтение8 мин
Охват и читатели5.1K

В распределённых системах повторная доставка сообщений — не редкая аномалия, а штатный сценарий. В этой статье разберемся, как устроен паттерн «Идемпотентный потребитель» в .NET, где проходят реальные границы его надёжности и почему одних гарантий брокера недостаточно, когда обработчик затрагивает базу данных, кэш и внешние сервисы. Особенно полезно будет тем, кто проектирует событийные системы и хочет заранее убрать класс ошибок, которые обычно всплывают только под нагрузкой или при сбоях.

Читать далее

Voters в Symfony

Уровень сложностиСредний
Время на прочтение7 мин
Охват и читатели7.9K

Привет, Хабр!

В каждом проекте рано или поздно появляется логика вида «этот пользователь может редактировать этот пост, а тот нет». И начинается: if ($post->getAuthor() === $currentUser) в контроллерах, в сервисах, в шаблонах. Копипаста расползается, а потом приходит новое требование — «модератор тоже может редактировать, но только в своей категории» — и вы бегаете по двадцати файлам, молясь, что ничего не забыли.

Symfony Voters — механизм, который выносит всю логику авторизации в одно место. Не аутентификации (тип кто ты?), а именно авторизации (что тебе можно?). Разберём, как это работает.

Разобраться в Voter

Spring Boot Actuator: полный гайд по мониторингу в 2026

Уровень сложностиСредний
Время на прочтение7 мин
Охват и читатели7.8K

Выкатили приложение, а через час — таймауты? Redis отключился, а вы узнали об этом от клиентов?

В этой статье на реальном примере покажу, как Spring Boot Actuator превращает ваше приложение из «чёрного ящика» в прозрачную систему. Разберём:

➡ Что такое Actuator и зачем он нужен.
➡ Как настроить эндпоинты, чтобы не открыть дыру в безопасности.
➡ Какие метрики реально помогают найти узкие места (история, как мы ускорили приложение на 40%).
➡ Кастомные метрики для бизнес-показателей.
➡ Лучшие практики продакшена: liveness/readiness probes, изоляция портов, кастомные HealthIndicator.

Читать далее

BRIN, GIN, B‑Tree: полный гайд по индексам PostgreSQL для highload

Уровень сложностиСредний
Время на прочтение8 мин
Охват и читатели11K

Индексы есть, а запросы всё равно тормозят? Или наоборот — индексов слишком много, и они только увеличивают нагрузку на запись?

Многие разработчики и администраторы баз данных попадают в ловушку: ставят B-Tree на всё подряд и надеются на лучшее. Но в highload-системах это может привести к катастрофе.

В этой статье я делюсь реальным опытом работы с PostgreSQL.

Статья будет полезна разработчикам, архитекторам и администраторам, которые хотят не просто «поставить индекс», а понять, как работает PostgreSQL под капотом и как проектировать базы данных, выдерживающие миллионы запросов в секунду.

Читать далее

Декодирование инструкций в сопроцессоре с плавающей точкой Intel 8087

Уровень сложностиСложный
Время на прочтение21 мин
Охват и читатели6.5K

Как именно чип понимает, какую инструкцию он должен выполнить? В случае с Intel 8087 этот вопрос оказывается гораздо глубже, чем просто разбор опкодов. За внешне компактным набором команд скрывается многослойная система декодирования: наблюдение за шиной, работа с ESCAPE-опкодами, комбинация логики, PLA и микрокода, а также отдельные аппаратные ветки для специальных случаев.

В статье — разбор того, как это реализовано на уровне кристалла: от структуры инструкций и роли ModR/M до выбора микрокодовых процедур и нестандартных инженерных решений, продиктованных ограничениями того времени.

Как это работает

Микросервисы: как выбрать между синхронной блокировкой и событийной архитектурой?

Уровень сложностиСредний
Время на прочтение7 мин
Охват и читатели7.6K

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

В статье вы найдёте:

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

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

Читать далее
1
23 ...