Обновить
1024K+

Open source *

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

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

Команда ушла в стартап. Кому принадлежит код?

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

Один из самых болезненных сценариев в IT-бизнесе: ключевые разработчики увольняются, открывают собственную компанию и выпускают продукт, подозрительно похожий на ваш. Или обратная ситуация — вы сам разработчик, который ушёл строить своё, а бывший работодатель уже звонит юристам.

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

Так чей же код?

L×Box: диагностика per-app трафика, посмотрим кто куда ходит

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

Недавно я дебажил проблему «Tinkoff Investments не открывается через VPN» — стандартная, split-routing проблема. Симптом: app запускается, картинки грузятся, но авторизационная сессия не поднимается, login висит. Через 30 минут возни со снапшотами /state, /connections, /logs и ручного matching'а conn_id'ов между ними картина прояснилась.

Часть доменов вида *.t-bank-app.ru корректно матчится в мой ru-domains rule_set и идёт напрямую. Но другая часть резолвится через CNAME на *.trbcdn.net (TLD .net!) — этот target в ru-domains уже не попадает, и sing-box честно отправляет трафик через bypass-VPN в Польшу. Получается split: часть запросов уходит с моего домашнего IP, часть — с польского. Bank-backend, который привязывает session к source-IP / fingerprint'у, видит непоследовательного клиента и просто отказывается поднимать auth state.

Симптом — «login завис», корень — domain-level split routing внутри одного приложения.

Стало ясно: такая диагностика не должна занимать 30 минут. Поэтому в L×Box (мой Android-клиент на sing-box, open source) появилась фича — Per-app traffic profiler.

Читать далее

Вайбкодинг — это гемблинг

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

Наблюдая за тем, как ИИ внедряется на работе и дома, я всё чаще ловлю себя на простой мысли: всё труднее писать код самому и всё больше хочется делегировать ИИ. Да ещё и провайдеры ИИ призывают тратить больше токенов, руководители всё чаще призывают команды активнее пользоваться ИИ. В соцсетях регулярно попадаются шуточные видео про то, как CEO предлагает потреблять токены ради самого потребления, а в крупных компаниях уже идёт негласное соревнование: кто больше использует AI‑инструменты, кто больше автоматизирует, кто быстрее покажет, что «мы тоже в игре».

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

Читать далее

Хотел упростить мониторинг проектов и в отпуск — пришлось обучать свой LLM

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

Я работаю по ИП, поэтому не только пишу код, но и поддерживаю как DevOps свои проекты у заказчика. Эта история началась банально: я собирался в отпуск и хотел оптимизировать часть процессов, которые в повседневной жизни занимают время — чтобы не дёргать клиентов из-за вопросов по ошибкам, которые я мог не увидеть во время отдыха. Пусть локальная моделька сама разгребает типовое. Думал: запущу OpenClaw, подключу к локальной модели — и поеду спокойно.

Через две недели — вместо отпуска — я сидел и обучал Qwen3 на Nvidia RTX 3090 24GB, потому что ни одно из существующих решений у меня не работало. Дальше расскажу, как до этого докатился — с цифрами, граблями и бенчмарками.

Читать далее

Как я перестал бояться и полюбил MCP или Зачем я написал 4 MCP‑сервера и протокол для их связи

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

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

Для тех кто не в теме: MCP (Model Context Protocol) — это протокол, через который AI‑ассистенты типа Claude подключаются к внешним сервисам и работают с ними напрямую. По сути это «руки» для нейросетей. Подключил MCP — и ИИ сам ходит в Telegram, ищет лучшие картинки с промптами на Civitai, управляет рекламой в Яндекс.Директе и делает кучу всего полезного. Без костылей, без скриптов‑прослоек, напрямую.

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

Читать далее

Как ускорить поиск фраз в Manticore Search

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

bigram_index можно использовать для разных задач, но в этой статье мы говорим именно о производительности поиска фраз: в приведённом ниже бенчмарке на 1 млн документов bigram_index='all' повысил QPS примерно в 2.9x и сократил среднее время ответа фразовых запросов примерно в 3.2x.

Если ваша основная проблема — сопоставление xt850 с xt 850, а не ускорение поиска фраз, см. Как заставить xt850 совпадать с xt 850 .

Поиск по фразам бывает дорогим. Даже если запрос короткий, движку всё равно нужно проверять порядок слов и стоят ли они рядом, и это особенно заметно, когда:

Читать далее

Вредоносный PyTorch Lightning сливал пароли через скрытый JavaScript

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

30 апреля на PyPI обнаружили новую версию PyTorch Lightning, которая при импорте скачивала Bun и запускала 11,4 МБ опасного JavaScript-вора. Цель — браузеры, облачные API, GitHub-токены. Всего одна строчка импорта: import lightning — и все ваши API-ключи и данные будут скомпрометированы! Полный разбор инцидента внутри.

Разобрать инцидент

Кириллица в LLM: почему русский язык в нейросетях стоит дороже и работает медленнее

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

Когда вы пишете запрос в ChatGPT или другую нейросеть, она не работает с буквами или словами — она режет ваш текст на маленькие кусочки. Эти кусочки называются токенами, и от того, как именно нейросеть режет текст, зависит цена ответа, скорость, и сколько информации в неё помещается за раз. С английским это работает хорошо: одно слово — обычно один‑два кусочка. С русским всё хуже: то же самое слово часто превращается в три‑четыре обрывка. Английское «contract» — один токен. Русское «разработка» — два‑три. «Программирование» — три‑четыре.

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

Читать далее

Как улучшить опыт работы с Zabbix: разбираем юзкейсы

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

Привет, Хабр! Меня зовут Ярослав Яковкин, я младший инженер по разработке ПО в YADRO, работаю в команде TATLIN.FLEX. Еще будучи стажером, я разбирался в инструментах, которыми пользуется моя команда, и обнаружил, что система мониторинга Zabbix допускает некоторые ошибки в работе. Они не влияют на производительность, но, если их исправить, всем станет лучше.

Я погрузился и узнал, как устроен инструмент и что сделать, чтобы устранить неисправности, а опыт собрал в этой статье. Материал будет полезен тем, кто недавно работает с Zabbix, — возможно, вы найдете решение своей проблемы под катом. А опытных девопсов приглашаем в комментарии — поделитесь лучшими практиками по оптимизации Zabbix. 

Читать далее

Монтаж видео через Claude Code

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

Часовое видео в 30 fps — это 108 000 кадров. Если каждый кадр стоит 1500 токенов, получаем 162 миллиона токенов на одно видео. Никакая модель столько не возьмёт. Команда browser-use недавно опубликовала проект video-use, который решает эту задачу с другой стороны: LLM не “смотрит” видео, а читает его через транскрипт. Разбираю архитектуру и показываю, чем этот подход полезен далеко за пределами монтажа.

Читать далее

Разбираю «Qwen3.5-21B-Claude-4.6-Opus-Heretic-Uncensored»: что на самом деле внутри файнтюна с громким именем

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

В телеграме завирусился пост: якобы кто-то “дообучил Qwen 3.5 до уровня Claude 4.6 Opus и убрал цензуру через Heretic”. Я открыл карточку модели на HuggingFace и провёл вечер, разбираясь, что под капотом. Спойлер: там много интересной техники, но к Claude эта модель имеет такое же отношение, как кроссовки “Adibas” к Adidas. Разбираю distillation, depth upscaling и abliteration без маркетинговой обёртки.

Читать далее

TeachTrack: NestJS + Telegram‑бот напоминаний + РКН — как я в одиночку собрал CRM для частных репетиторов

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

Месяц назад я выложил на Хабр статью про TripTrack — GPS‑трекер для машины на iOS, который собрал будучи бэкендером без опыта в Swift. Статья неожиданно набрала 7.4К (на данный момент написания) просмотров. Но, мне посчастливилось поработать по своей специальности, не только под IOS‑приложения, а под NestJS бекенд.

Параллельно с TripTrack я писал второй проект — на этот раз ровно в зоне комфорта (NestJS + PostgreSQL), и это позволило развернуться по‑серьёзному: транзакционный outbox для идемпотентных отправок в Telegram, single‑use invite‑токены с защитой от enumeration, timezone‑aware scheduler, partial unique indexes — словом, всё то, что для бэкендера интересно само по себе.

Под катом — про то, как устроен Telegram‑бот напоминаний в TeachTrack, что я понял про pessimistic_write и FOR UPDATE SKIP LOCKED, зачем pet‑проекту с реальными пользователями из РФ нужно уведомление в РКН, и почему холодный аутрич преподавателям английского научил меня важной вещи про русский менталитет.

Читать далее

Создание Python‑библиотеки для перевода исключений на русский язык

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

Большинство разработчиков очень боятся каждой ошибки в консоли Python. Всё моментально заливается красным, а порой понять суть ошибки без переводчика очень сложно. Сегодня я покажу, как сделать свою мини‑библиотеку для перевода всех консольных ошибок и предупреждений в Python. Это позволит сразу же понимать причину исключения и быстро вносить исправления в код. Проект подходит как для начинающих разработчиков, так и для опытных разработчиков, работающих со сложными библиотека или базами данных.

Читать далее

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

Bug fingerprinting для UI: почему stack trace не работает и что вместо

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

TL;DR: Sentry дедуплицирует backend‑ошибки по хешу (error class + top stack frame + module). Для UI‑багов этот рецепт ломается — у expect(button).toBeVisible() нет stack frame в продуктовом смысле, есть локатор + assertion + URL. В webtest‑orch я собрал composite SHA-256 fingerprint из (normalized_selector | assertion type | error class | URL template | message[:80]) с тремя rules нормализации (:nth-child, UUID, /users/123 → /users/:id). Это даёт стабильный 8-hex BUG-id который выживает прогоны и даёт diff new / regression / persisting / fixed без БД и embedding«ов.»

Читать далее

Хотелось пополнить резюме, а написала LSM-движок с MVCC, снапшотами и Value Log на чистом Go

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

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

Через пару дней я взяла LSM-дерево, мемтейбл на B-дереве(что временно) и компакшн. Дальше были и атомарные батчи, fsync, все хотелось оптимизировать, добавить отказоустойчивости, сделать все более быстро, серьёзно и чтоб хоть где-то полезно.

Я расскажу из каких частей состоит мой движок, почему принимала те или иные решения, где у меня все было не так гладко, компромиссы, что до сих пор не работает и отложено в долгий ящик. Если вы когда-нибудь писали свой storage — очередь, кэш, или свое NoSQL хранилище — мой опыт поможет вам в принятии некоторых решений.

Узнать, что у меня получилось

Как Runtime Radar помогает обнаруживать атаки на цепочку поставок: кейс LiteLLM

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

Всем привет! Это Сергей Зюкин, разработчик экспертизы runtime-radar — опенсорсного продукта, обеспечивающего безопасность контейнерной среды выполнения. Я подготовил для вас статью, в которой расскажу, как можно обнаружить инфостилер, встроенный в библиотеку LiteLLM в результате ее недавней компрометации. Помимо этого, мы, конечно же, рассмотрим и боковое перемещение внутри Kubernetes-инфрастуктуры, которое происходит, если скрипт инфостилера запускается в поде с достаточными привилегиями.

Мы не смогли удержаться и проверили, что Runtime Radar может обнаружить при реализации подобной атаки.

Но обо всем по порядку.

Читать далее

Как сделать каталог с поиском, фильтрами, фасетами и семантическим поиском

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

Сделать поиск по каталогу легко. Гораздо сложнее — сделать каталог, который полезен не только на первом запросе.

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

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

Сначала можно попробовать уже развёрнутую версию:

https://catalog.manticoresearch.com

Читать далее

FSRS для Obsidian: помнить всё

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

Обсидиан называют «вторым мозгом». Чтобы он им стал, одних связей недостаточно — нужна память.

Я сделал плагин интервального повторения на современном алгоритме FSRS. Он запоминает что и когда вы учили, предсказывает что вы вот-вот забудете, и показывает какая тема даётся тяжелее всего. Все данные хранятся локально в ваших .md файлах — ничего не уходит на сервера.

Читать далее

Как настроить AI-агента под проект: контекст, rules, skills, MCP — конспект двух вебинаров

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

Цепочка короткая: сначала был просто автокомплит, потом появились чаты, в которые надо было руками копировать код туда-обратно (и человек выступал прокси между моделью и проектом — «много ручной работы, контекст рвётся»). Потом пришли агенты, которые живут прямо в проекте, читают и правят файлы, запускают команды. Сверху — агентские системы, которые координируют нескольких агентов и решают проблему перегрузки одного контекста.

Где живёт агент: три класса инструментов

Читать далее

Строим шину данных для микросервисов на ZeroMQ: failover, гарантии доставки и E2E-шифрование

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

Асинхронная клиент-серверная библиотека для обмена сообщениями между микросервисами на базе ZeroMQ. Реализует гарантированную доставку сообщений (At-Least-Once) с персистентной файловой очередью при обрывах связи, автоматический failover сервера переадресации (клиенты могут подхватывать роль сервера на лету) и два уровня защиты: шифрование канала (CurveZMQ) и сквозное шифрование сообщений (HMAC). Лёгкая альтернатива брокерам вроде RabbitMQ, не требующая отдельного сервера.

Читать далее