Обновить
512K+

Open source *

Открытое программное обеспечение

718,92
Рейтинг
Сначала показывать
Порог рейтинга
Уровень сложности

Kafka Consumer в тестовой автоматизации: архитектурный разбор

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

Привет, Хабр! На связи Егор Лаптев — QA Fullstack Java в SENSE на проекте крупного российского банка.

End-to-end тесты UI проверяют только то, что видно на экране: кнопка нажалась, форма открылась, данные отобразились. Но в распределённых системах значительная часть бизнес-логики уходит за кадр — в асинхронные события, которые летят через Kafka. Если событие не дошло до топика или пришло с неверным payload, пользователь этого не увидит, а бизнес-процесс сломается.

В этой статье расскажу, как мы научились проверять Kafka-события прямо в автотестах — без Kafka UI, kcat и обёрточных сервисов, одной зависимостью и так, чтобы это работало в корпоративной сети с SSL. Покажу архитектуру коннектора, разберу три основных проблемы (SSL-сертификаты, конфликты consumer group и асинхронные тайминги), и поделюсь моделью работы инженера в связке с AI-агентом.

Кому будет полезно: QA-инженерам и специалистам по автоматизации, которые тестируют распределённые системы и хотят проверять Kafka-события прямо в автотестах; и инженерам, которым интересна практическая модель работы в связке с AI-агентом — как она ускоряет разработку тестовой инфраструктуры.

Читать далее

Я запустил GTA San Andreas на своем движке в браузере, один с Claude, за 3 недели

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

В данной статье Вас ждет подробная история о том, как я создал игровой движок с нуля, совместимым с RenderWare (движком, на котором работает GTA San Andreas), запускающийся в браузере. Один, за три недели, с Claude Code.

Читать далее

Open Source vs. Public Domain: юридические ловушки свободного ПО

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

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

Читать далее

PyOffline2: простой офлайн-менеджер для Python-пакетов без лишней головной боли

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

PyOffline2 — мой «чемоданчик с инструментами» для Python. Он позволяет один раз сохранить всё нужное и разворачивать проекты где угодно без интернета и системного python. Работает из коробки, без Docker и дополнительных серверов.

Узнать как можно скорее

Кинопоиск всё-таки отключил статистику по фильмам — я создал свою на основе Letterboxd и TMDB

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

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

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

Меня это изменение не задело — я давно уже переехал с Кинопоиска на Letterboxd.

Не буду сегодня останавливаться на моих впечатлениях от Letterboxd в целом (спойлер: они смешанные). Но вот интересно посмотреть, как там обстоят дела со статистикой просмотренного.

Хорошая новость в том, что она есть. Вот примеры для профиля целиком и за конкретный год. Но плохая новость в том, что статистика доступна только на платной Pro-подписке.

Что очевидно подталкивает нас к тому, чтобы сделать своё решение, где будет вся нужная нам статистика бесплатно и в лучшем виде. Тем более, Letterboxd позволяет выгрузить всю свою личную информацию в виде архива.

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

Читать далее

Спутниковая связь в симуляторе NS-3. Часть 8

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

Это заключительная статья цикла. В ней мы рассмотрим разработку и отладку сценариев симуляции спутниковой связи. Разберемся в форматах описания исходных данных эксперимента (сцены эксперимента). А также получим представление об интерпретации результатов моделирования.

Читать далее

DataSafeS3: self-hosted S3 с LDAP, аудитом и «Мои файлы» — честный разбор до релиза

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

За последние годы я несколько раз видел одну и ту же картину в небольших и средних компаниях. Для приложений поднимают S3-совместимое хранилище. Для людей — отдельный файловый сервис или сетевые шары. LDAP/OIDC живёт отдельно. Бэкапы — третий контур. Мониторинг — четвёртый. Всё работает, пока не приходит внутренний аудит или новый филиал с формулировкой: «нам нужен корпоративный диск с SSO, журналом и данными только у нас».

Читать далее

Как утки с СДВГ довели меня до опенсорса: зачем я собрал утилиту для перевода коротких видео на домашней видеокарте

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

Всем привет! Листал ленту тиктока и попался американский ролик про СДВГ, где всё объясняют на утках. Понравилось. И я подумал: классно было бы сделать такой же тикток, только на русском.

Но я ленивый. Снимать, писать сценарии, делать всё с нуля - это скучно. А вот взять готовый ролик и перевести-переозвучить его на русский - вот это уже интересно, подумал я, а потом задумался, о том, как это автоматизировать. Это оказалось интересной инженерной задачей, которая увлекла меня на неделю времени, и привела к созданию ИИ утилиты с открытым исходным кодом. А тикток с утками я так и не создал...

Читать далее

Уязвимость пришла из зависимости, которую вы не добавляли: ловим дыры в Spring до прода в GitLab

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

В статье разбираем на боевом примере (Spring Boot 4.1, Java 21, GitLab 19.1), как поймать уязвимую зависимость в merge request — до прода, не уронив пайплайн. Подключаем SBOM‑сканер нового поколения, включаем reachability, чтобы отсеять весь шум, и ставим security‑гейт, который реагирует, только на уязвимости, которые несет в себе конкретный MR.

Читать далее

Сколько стоит контекст для кодового агента: grep vs граф vs LSP на большом проекте (936 прогонов)

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

Я взял одного и того же агента (Claude Code), менял у него ровно одну вещь — какой MCP-сервер отдаёт контекст по коду, — и гонял по 26 задачам на apache/superset. Четыре «руки»: filesystem (grep + read), graphlens (структурный граф), serena (LSP) и codegraph. Три модели (haiku / sonnet / opus), три сида — 936 прогонов.

Главный результат: вывод переворачивается в зависимости от типа задачи.

Смотреть цифры

Как разобрать .exe всего двумя инструментами: практический разбор с DeNuitkanizator и HxD

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

Возможно ли разобрать .exe всего двумя инструментами?

В данной статье будет практический разбор программ с помощью двух инструментов: HxD и DeNuitkanizator. Без Ghidra, без IDA, без x64dbg.

Посмотрим что получится, а что нет. Вам понравится :)

Читать далее

Два месяца спустя. Что я понял, пока пытался сделать E2EE-мессенджер

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

Два месяца назад я опубликовал статью про свой pet-проект — E2EE-мессенджер.

Честно говоря, я не ожидал, что она вызовет такой интерес. Прилетели комментарии, замечания, вопросы и довольно полезная критика. Где-то меня поправили по делу. Где-то заставили пересмотреть решения, которые мне самому на тот момент казались нормальными.

И, что самое приятное, часть вещей, которые тогда были только в roadmap, за это время удалось реализовать.

Первая часть:

https://habr.com/ru/articles/1030854/

Проект:

https://github.com/vaazhen/chaos-e2ee-messenger

Вообще, за эти два месяца я понял одну простую вещь.

Написать чат оказалось не так сложно.

Написать E2EE-мессенджер — уже сложнее.

А вот понять, почему Signal делали столько лет, оказалось совсем другой историей.

Сначала кажется: ну есть же документация, есть X3DH, есть Double Ratchet, есть WebCrypto, есть статьи, есть спецификации. Осталось просто аккуратно всё собрать.

Примерно в этот момент где-то вдалеке начинает смеяться инженер из Signal.

Сразу оговорюсь: chaos messenger — это не замена Signal и не “готовый безопасный мессенджер”, а open-source pet-проект, на котором я разбираюсь, как E2EE-системы устроены изнутри.

Читать далее

Manticore Search 27.1.5: аутентификация, шардированные таблицы, диалоговый поиск и более быстрый векторный поиск

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

Manticore Search 27.1.5 выпущен. Этот релиз приносит встроенные аутентификацию и авторизацию, шардированные таблицы, conversational search, более быструю сборку HNSW, улучшенные фасетирование и агрегации, а также длинный список исправлений в KNN, репликации, совместимости протоколов и других областях.

Этот пост - сводка всего, что вышло с 25.0.1 по 27.1.5.

Читать далее

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

Собрал ИИ-бенчмарк под себя из 2 месяцев своих сессий — и дорогие модели проиграли дешёвым

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

Два месяца своих сессий с ИИ скормил скрипту и собрал бенчмарк под СВОЮ работу — не под чужой лидерборд.

Результат: тройка «лучших открытых моделей» сжалась в ничью, а в практике победила модель в 37 раз дешевле — потому что отвечает мгновенно, а 744B-гигант думает 22 секунды до первого слова.

Важным оказался не балл, а телеметрия, которую балл прячет.

Читать далее

Анатомия процесса загрузки Linux — от инициализации ядра до systemd

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

Загрузка операционной системы — процесс многоступенчатый и разнообразный. Несколько лет назад я писал о процессе загрузки сервера x86 в режимах Legacy и UEFI, но акцент тогда был именно на «железной» части.

Пришло время сместить внимание на программную составляющую. Посмотрим, какие стадии преодолевает ядро Linux, что происходит, и какие «фишки» можно выполнить на старте системы.

Читать далее →

Deckhouse Prom++: как мы сжали разметку метрик Prometheus и снизили расход памяти в 2,5 раза с помощью статистики данных

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

Хотели избежать копирования данных, придумали свою служебную разметку, а потом обнаружили: она занимает почти столько же места, сколько сам исходный текст. Мы перестали гадать, посмотрели на реальные данные и применили простые, но эффективные подходы: числа переменной длины, отказ от double в пользу целых типов и умные if-else вместо switch

Итог: мы сжали разметку в 2,5 раза и при этом даже немного выиграли в скорости. Рассказываем, как знание предметной области помогло нам не усложнять код, а сделать его быстрее и легче.

Читать далее

Browser Policy Manager: распаковка

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

В предыдущих публикациях я уже рассказывал, зачем вообще появился Browser Policy Manager, почему я начал с Firefox Enterprise Policies и почему не стал делать «просто генератор policies.json». Эта статья — более техническая. Здесь я хочу разобрать, как Browser Policy Manager устроен внутри на версии 0.8.8.

Версия 0.8.8 для проекта важна тем, что в ней фактически сложилась основная архитектура продукта:

Читать далее

Vibe-coding и зависимости: как не дать Claude и Cursor затащить дырявый пакет

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

На прошлой неделе я попросил Claude Code добавить рендеринг markdown в проект. Через секунду в зависимостях появился flutter_markdown — нормальный пакет от flutter.dev, паблишер проверенный. Я нажал accept.

А потом случайно открыл его карточку, а там прямо в шапке: «This project has been discontinued, and will not receive further updates.» Пакет уже больше года как мёртв.

Другой пример: Cursor добавляет minio/minio:latest в docker-compose для S3-совместимого хранилища. Только репозиторий архивирован 25 апреля 2026 года, и MinIO Inc. толкает всех в коммерческий AIStor.

В статье разбираю: — что такое slopsquatting и почему эта атака работает только из-за ИИ-агентов; — что показала USENIX Security 2025 на 576 000 примерах кода (спойлер: 19,7% рекомендованных LLM пакетов вообще не существуют); — что реально творилось с npm и PyPI в 2024–2025 — от ultralytics до Shai-Hulud-червя и атаки на chalk с 2 млрд weekly downloads; — готовый skill для Claude Code, который заставит агента проверять пакет до установки.

Читать далее

Как мы ускорили KNN-поиск в Manticore: двухпроходный обход HNSW, пакетная обработка и AVX-512

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

Кратко: Три изменения в HNSW-поиске ускоряют KNN-поиск до 29% при больших k и дают более 20% прироста при параллельной нагрузке. Без изменений API, без перестроения индексов и без новых настроек — просто более быстрый поиск.

Читать далее

От золотого сечения до троичности Брусенцова: одно семейство числовых форматов от 2 до 1024 бит

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

Почему bfloat16 стал стандартом для обучения нейросетей? Не потому, что он оптимален как число, — а потому что под него десять лет затачивали GPU и TPU. Снимаем этот эффект железа и смотрим на числа честно.

В статье: семейство форматов GoldenFloat (GF4, GF8, GF16, GF32, GF64, GF1024) с основанием φ = (1+√5)/2; метрика «бит на значение» (GF16 = 2.5725 обходит bf16 = 2.6135 на одном корпусе); и неожиданный мост к троичной машине «Сетунь» Н. П. Брусенцова — три состояния −1/0/+1 как предельная точка той же φ-лестницы.

Без обещаний золотых гор: что измерено — измерено, что только спека — помечено.

Читать про φ-форматы