Обновить
469.08
OTUS
Развиваем технологии, обучая их создателей
Сначала показывать

Unsafe Rust для FFI: безопасные обёртки над C-библиотеками без утечек памяти

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

Rust хорош своей безопасностью, но рано или поздно приходится выйти за пределы уютного мирка borrow checker. Нужно подключить проверенную C-библиотеку, использовать системный API или просто переиспользовать существующий код. И тут начинается unsafe.

Правильно приготовленный unsafe позволяет создать безопасный API поверх небезопасного кода, сохранив все гарантии Rust для пользователей библиотеки.

Разберём, как писать FFI-обёртки, которые не подтекают и не падают.

Читать далее

Hardening контейнеров: некоторые настройки которые игнорируют

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

Контейнер — не виртуальная машина. Между контейнером и хостом тонкая стена: общее ядро, общие ресурсы, минимальная изоляция по умолчанию. Стандартный docker run запускает процесс с root правами внутри контейнера и доступом к большинству системных вызовов.

Большинство команд оставляют дефолтные настройки, потому что «и так работает». Пока не приходят пентестеры или не случается инцидент. Разберём конкретные настройки, которые реально повышают безопасность, с примерами и объяснением зачем это нужно.

Читать далее

Как запрос из DuckDB упёрся в PostgreSQL: 507 секунд по EXPLAIN ANALYZE

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

Оконные функции в SQL выглядят безобидно ровно до того момента, пока не попадают на реальные объёмы данных. В этой статье разбирается конкретный аналитический запрос в PostgreSQL: от формулировки задачи и использования lead() до детального анализа плана выполнения с EXPLAIN ANALYZE. Без абстракций и «магии оптимизатора» — только факты, цифры, сортировки на диск, буферы и выводы, которые полезно уметь делать любому аналитику, работающему с большими таблицами.

Читать далее

Как перевести атрибуты качества в бизнес-ценности

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

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

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

Читать далее

Параллелизация pytest: от xdist до Kubernetes

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

Тесты — это хорошо. Медленные тесты — это CI на 40 минут и разработчики, которые забывают их запускать локально. Разберём, как ускорить pytest от простого -n auto до распределённого запуска в Kubernetes.

Читать далее

Туториал по Wireshark для начинающих

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

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

Wireshark прост в использовании и является отличным вариантом для новичков, но при этом достаточно мощный для профессионалов, которым нужны детализированные данные о сетевом трафике.

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

Читать далее

Кастомные аллокаторы для игровых движков: arena, pool и slab на C++

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

Стандартный malloc — универсальный инструмент, но в геймдеве универсальность часто означает «недостаточно быстро». Когда бюджет кадра 16 мс, а каждый кадр рождаются тысячи объектов, имеет смысл разобраться в специализированных аллокаторах.

Рассмотрим три основных типа: arena, pool и slab — когда какой использовать, как реализовать, и какие подводные камни ждут.

Смотреть реализацию

Возраст задачи: почему «залежавшаяся» задача убивает поток

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

Задача может «двигаться по доске», менять исполнителей и статусы — и при этом неделями оставаться незавершённой. В такие моменты команда обычно чувствует суету, а не прогресс: контекст утекает, зависимостей становится больше, а работа в In Progress разрастается как сорняк.

В статье разберем метрику возраста задачи (Work Item Age) — как её считать, чем она отличается от cycle time, какие визуализации помогают быстро увидеть «залежавшиеся» элементы, и почему управление WIP и блокерами часто даёт больший эффект, чем очередной рывок по старту новых задач.

Наладить поток

Организация middleware в Go без зависимостей

Время на прочтение5 мин
Охват и читатели7.4K

Go 1.22 заметно укрепил позиции стандартной библиотеки в роли «достаточно хорошего» веб‑стека: ServeMux научился матчить шаблоны, и зависимость от роутеров ради базовой маршрутизации уже не выглядит обязательной. Но как только в проекте появляется больше пары middleware, начинается знакомая боль — обёртки размножаются, порядок теряется, правки становятся хрупкими.

В этой статье разбираем, как собрать управляемые цепочки middleware без alice и как поверх http.ServeMux сделать группировку маршрутов с наследованием middleware в стиле chi — только на стандартной библиотеке и с минимальным количеством кода.

Смотреть решение

Система показателей для операционного директора

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

«Если ты не измеряешь, значит, ты не управляешь» — кто‑то из великих менеджеров

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

Читать далее

Инфраструктура без слепых зон: что изучить про observability, DevSecOps и инциденты в K8s

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

Продакшен редко падает красиво: обычно это тихая ошибка в конфиге, незаметный регресс в CI/CD, слепая зона в метриках — и внезапно уже расследование инцидента с вопросом «а где была безопасность?». В этом дайджесте собрали образовательные материалы на практичные темы на стыке инфраструктуры и ИБ: Kubernetes и multi-tenancy, observability, DevSecOps, SOC, пентест и реверс — включая бесплатные демо-уроки и курсы, где вы будете разбирать это руками, а не на уровне лозунгов.

Читать далее

Docker для QA-инженеров

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

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

Читать далее

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

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

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

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

Читать далее

Есть ли шанс правильно оценить трудозатраты?

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

«План ничто, планирование всё...» — Дуайт Эйзенхауэр, 34-й президент США

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

Читать далее

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

Анализ кристалла 8087: быстрый битовый шифтер математического сопроцессора

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

В 1980-м Intel 8087 сделал вычисления с плавающей запятой на 8086/8088 не «возможными», а по‑настоящему быстрыми — настолько, что на плате оригинального IBM PC под него оставляли пустой сокет.

В этой статье автор буквально смотрит на 8087 изнутри: по микрофотографиям кристалла разбирает один из ключевых ускорителей — двухступенчатый бочкообразный сдвигатель, который за один проход выполняет сдвиг на 0–63 позиций и нужен и для обычной арифметики, и для CORDIC‑алгоритмов трансцендентных функций. Будет контекст про IEEE 754, много NMOS‑схемотехники и редкое удовольствие от того, как «железо» читается прямо по топологии.

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

Показатели продукта: пример из области обучения

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

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

Читать далее

Мультиагенты — это скрытые распре��елённые монолиты

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

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

Открыть разбор

Наблюдаемое нагрузочное тестирование: Locust + OpenTelemetry

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

Нагрузочный тест показывает «в среднем 800 мс», а распределённый трейс приложения упорно говорит «300 мс» — и начинается традиционная игра в ручную корреляцию. В этой статье разбираем, как связать нагрузку и наблюдаемость: запускать Locust с OpenTelemetry так, чтобы каждый запрос теста оставлял трейсы и метрики, продолжал Trace ID в сервисах и давал картину транзакции «от генератора до базы». А заодно, почему самый важный кусок времени часто прячется ещё до входа в приложение.

Открыть разбор

Как снизить хвостовые задержки в Java с помощью ZGC

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

Хвостовые задержки в Java часто упираются не в «среднее время ответа», а в редкие, но болезненные выбросы на p999. В статье сравним G1 и ZGC на прикладном бенчмарке микросервиса (Quarkus + Postgres) и на синтетической нагрузке с высокой скоростью аллокаций: где ZGC действительно срезает хвосты почти без пауз — и в каких условиях, упираясь в CPU, он начинает «тормозить» через приостановки аллокаций.

Читать разбор

Ingress-контроллеры: Nginx, Traefik, HAProxy — разбираемся, кто вам подойдет

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

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

Каждый человек рано или поздно сталкивается с выбором, какой ingress‑контроллер использовать для маршрутизации трафика. Помнится, раньше многие думали, что достаточно взять Nginx и не париться. Но реальность, как это обычно бывает, сложнее. Есть по меньшей мере три мощных игрока: NGINX, Traefik и HAProxy. И у каждого свои фичи и проблема.

Читать разбор
1
23 ...

Информация

Сайт
otus.ru
Дата регистрации
Дата основания
Численность
101–200 человек
Местоположение
Россия
Представитель
OTUS