Обновить
512K+

Open source *

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

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

Мой опыт с Hermes Agent — ненависть, любовь, ненависть, любовь

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

Началось все с установки. Я пошёл почти по самому простому пути - установил его на Mac, в Docker. Потому что это агент, который работает автономно и так же автономно может сделать атата: выполнить rm -rf или выбраться из клетки и начать всё взламывать :)

В рамках настройки я сразу выдал доступ к части файлов только на чтение, и только к Obsidian - на чтение и запись (потому что писать он в данном случае должен), но файлы были под Git.

Читать далее

Новости

Капча, которую рисуют: drop‑in альтернатива reCAPTCHA на динамике жеста

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

Почему мы классифицируем движение руки, а не картинки со светофорами — и как встроить это в форму двумя строками

Картиночные капчи в 2026-м решаются моделями компьютерного зрения за миллисекунды, а каждый ваш клик по «выберите автобусы» бесплатно размечает чужой датасет. Плюс две свежие проблемы: Google в начале 2025 срезал бесплатный лимит reCAPTCHA с 1 000 000 до 10 000 проверок в месяц, а с апреля 2026 ужесточил модель ответственности за данные по GDPR. Из России reCAPTCHA к тому же нестабильна.

Общая проблема для сети — как доказать, что ты человек, не сдавая паспорт, лицо и номер телефона. Мы предлагаем: drop-in капчу, которую посетитель не кликает, а рисует. В описании — архитектура, ML-часть, приватность и код интеграции. Проект открытый. Буду рад аргументированным замечаниям.

Читать далее

Архитектура движка подбора билетов: три GDS, железная дорога и маршрут, который меняют в дороге

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

Референсная архитектура движка подбора билетов на redb: канонная модель, Scatter-Gather по трём GDS и ж/д, дерево-маршрут и saga-переоформление в дороге.

Сотруднику нужно долететь до одного города, доехать поездом до другого и вернуться тем же путём. Одна командировка, билеты из разных систем бронирования. А потом он уже в дороге пишет в телеграм: «планы изменились, летим не туда, перебронируй».

Три системы под самолёты (Amadeus, Sabre, Travelport) исторически несовместимы: разные XML-диалекты одного и того же понятия перелёта, выросшие из мейнфреймов 60–80-х, каждый со своими причудами и полями, которых нет у соседа. Плюс отдельная, никак не связанная с ними система бронирования под железную дорогу: свой формат, своя логика мест и классов, ничего общего по структуре с авиационными GDS. Запросить всё это параллельно, свести разноформатные ответы в одно и собрать валидный маршрут по стыковкам уже само по себе задача не для россыпи if и ручных мапперов.

А дальше человек в дороге меняет ...

Читать далее

Проблема «принципал — агент» в эпоху ИИ‑агентов

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

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

В статье разберем этот конфликт через проблему «принципал — агент» и узнаем, почему особенно остро он проявляется в больших компаниях и open source.

К разбору

Что находится внутри файла PowerPoint?

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

Переименуйте любой .pptx в .zip, распакуйте – и увидите ZIP-архив, набитый XML-файлами. Внутри спрятана вся ваша презентация: слайды, темы, встроенные таблицы Excel, картинки. Разбираемся, как этот формат устроен на самом деле – и почему автоматизировать PowerPoint кодом так тяжело.

Читать далее

Пишем huntZip - Как я написал библиотеку для архивов на Python

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

Hello world!

Как то раз мне понадобилось работать с архивами в одном из своих проектов, но тут возникла проблема — Для ZIP тебе нужен zipfile, для какого нибудь TAR — tarfile, а для других (типа 7z и rar) вообще нужны rarfile и py7zr, И из за этого код превращается в не красивый забор из кучи и кучи импортов. И мне это надоело, вот где то 2–3 дня назад я начал делать свою библиотеку для архивов, которую я назвал huntZip.

Читать далее

EtherCAT в LinuxCNC: что такое lcec и как написать свой драйвер

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

Привод, которого нет в каталоге lcec, заводится через generic — картой PDO, набранной руками в XML: у нашего стенда это 236 строк, и ошибка в одном индексе означает «слейв не дошёл до OP», больше лог не скажет ничего. Свой драйвер CiA 402 заменяет эту простыню на строку <slave type="VD3E" name="s"/> и занимает двадцать содержательных строк. Ниже - зачем его писать и когда не надо, что нужно узнать про прибор, где это взять и что ломается по дороге. Маршрут: как устроена связка и где в ней lcec → что у пяти приводов одинаково, а что у каждого своё → как снять с незнакомого привода пять нужных фактов четырьмя командами → сам драйвер целиком, с разбором → что ломается и как это выглядит в логе.

Читать далее

Как добавить свой модуль nginx в контрольной панели ispmanager

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

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

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

Предлагается доработать ispmanager, а именно:

Читать далее

README врёт: как я сделал open‑source линтер, который сверяет документацию с реальным репозиторием

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

README редко ломается в один момент.

Обычно он просто постепенно перестаёт соответствовать проекту: переименовали команду, перенесли файл, удалили .env.example, сменили package manager — а инструкция осталась прежней.

В итоге новый пользователь копирует команду из README и получает ошибку. Разработчик же часто узнаёт об устаревшей документации только после issue, сообщения коллеги или неудачного деплоя.

Мне стало интересно: можно ли автоматически находить хотя бы часть таких расхождений, не выполняя команды из README и не отправляя исходный код в LLM?

Так появился RealityLint — open‑source CLI, который статически сверяет проверяемые утверждения из README с реальным состоянием репозитория.

Читать далее

Зачем PyPI закреплять префиксы пакетов за организациями

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

Имя пакета в реестре часто оказывается первым сигналом того, что компоненту можно доверять. Разработчик видит название вроде google-cloud-storage, opentelemetry-sdk или apache-airflow-providers-slack раньше, чем открывает исходный код, и ожидает, что знакомый префикс указывает на известный проект. В PyPI это ожидание пока ничем не подтверждено: реестр формально не связывает общее начало имени с его владельцем, поэтому любой свободный вариант может зарегистрировать посторонний пользователь.

В конце июня 2026 года в Python‑сообществе приняли PEP 752 (мы писали об этом здесь). Он предлагает закреплять за организацией не отдельные имена, а префикс и все будущие проекты, которые ему соответствуют. Если PyPI реализует этот механизм, то пакет с именем вроде «google‑cloud‑new‑service» сможет опубликовать только та организация, которой принадлежит право на этот префикс или которой разрешили пользоваться этим правом. На первый взгляд, решение очевидное. Однако общий префикс не всегда означает, что все пакеты принадлежат одному издателю. Иногда он обозначает семейство официальных библиотек, а иногда экосистему сторонних дополнений. 

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

Читать далее

От struct к компиляции под схему: ускоряем RowBinary-декодер на Python

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

Я автор aiochlite — асинхронного клиента ClickHouse на aiohttp. Раньше мой декодер RowBinary читал каждое числовое поле отдельно. Если брать 200 тысяч строк с десятью числовыми колонками, получалось два миллиона таких чтений, хотя все данные уже были в памяти.

Сначала я думал использовать Cython, C или Rust. Но потом решил попробовать оптимизировать сам процесс: объединить соседние поля с фиксированной длиной в один struct, а полностью фиксированные строки разбирать с помощью Struct.iter_unpack. На числовых данных это ускорило работу примерно в 8.3 раза.

Со смешанной схемой данных получилось интереснее: простая склейка почти не помогла. Главной проблемой осталась проверка типов внутри основного цикла. В итоге я начал генерировать и компилировать Python-функцию под конкретную схему ответа — это дало ускорение еще примерно в 1.7 раза.

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

Читать далее

Есть ли жизнь после Microsoft Office?

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

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

Читать далее

Что пишет нам Нептун?

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

Любому, кто осилил роман ВиктОра Гюго «Человек, который смеется», известно, что при дворе Английской Королевы Елизаветы I была должность «Откупориватель океанских бутылок».

Придворный, занимавший этот пост, собственно, и откупоривал бутылки. От 80 до 120 бутылок в год.

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

В те времена люди относились к акту публичной коммуникации гораздо серьёзнее, чем сейчас.

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

Читать далее

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

Второй фактор, который жил в чужой странице: как я выбросил WebAuthn из своего сервиса ключей

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

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

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

Читать далее

Словарь «Колобок» и идея перевода словарей

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

Оказывается, если поработать с промптами и гейтами, то можно перевести большущий японо-английский словарь к виду японо-русского с очень неплохим качеством. Идея применима к другим языкам. Сделал пайплайн, запускал 100 Sol-воркеров-переводчиков одновременно через CLI. Вышло недорого.

Тут словарь, тут гитхаб с пайплайном, тут примеры статей.

Читать далее

Я хотел понять, где создана AI‑картинка. В итоге разобрался, что на самом деле проверяет C2PA

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

13 августа Google выложила Credentio — C++ библиотеку для проверки C2PA Content Credentials. Я решил собрать её и сделать простой тест: кидаешь картинку и смотришь, можно ли понять, камера это, генератор или редактор.

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

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

Читать далее

Мы мигрировали сотню страниц документации через MCP-сервер, а не скриптами

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

У каждого опубликованного сайта GitBook уже есть MCP-сервер. Мы узнали об этом случайно и вместо конвертеров просто дали агенту ходить в документацию напрямую — сотня страниц переехала на Diplodoc за четыре дня. Что агент сделал сам, где проходит граница его возможностей и какие десять вещей пришлось доделывать руками.

Читать далее

Телеметрия выключена. Кто еще ходит в сеть из вашей IDE

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

Настройка telemetry.telemetryLevel=off отключает телеметрию платформы, но не обновления, Git, синхронизацию, расширения и запросы к AI-провайдеру. Разбираю, какие данные могут уходить по каждому каналу, что реально видно в сети и почему сам факт TLS-соединения еще не доказывает утечку кода. В практической части - аудит Xynapse IDE: три 60-секундных холодных старта, ноль событий Sysmon Event ID 3 при работающем положительном контроле, 19/19 подтвержденных мер и 5/5 явно зафиксированных границ результата.

Читать далее

Мой тестовый харнесс нашёл баг в моей же реализации Raft. Рассказываю, как именно

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

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

Я писал реализацию Raft на TypeScript и построил вокруг неё музей багов: семь экспонатов, каждый выключает ровно одно правило алгоритма и требует, чтобы харнесс поймал это — с сидом и с именем нарушенного свойства.

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

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

Я дал AI-агенту доступ к своему Telegram. Вот что из этого получилось

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

Вы когда нибудь задумывались, что можно узнать о вас и про вас из вашей истории переписки в Telegram?

Я подключил к Hermes пользовательскую Telegram-сессию. После этого агент смог искать в моих чатах, читать нужные фрагменты истории, находить контакты, выгружать выбранные переписки в JSONL и, после моего подтверждения, писать от моего имени.

Последний пункт звучит эффектно и немного тревожно. Так и должно быть. Личный Telegram хранит годы разговоров, договорённостей, файлов и случайных деталей, которые я давно забыл. Доступ к аккаунту даёт агенту контекст заметной части моей жизни. Заодно он даёт возможность совершить очень убедительную ошибку от моего имени.

Так начался эксперимент с MTProto, Pyrogram, tgcli и SKILL.md для Hermes. Польза обнаружилась быстро. Ограничения пришлось придумывать почти так же быстро, ещё до первой реальной отправки.

Какие знания можно вытащить из твоего tg
1
23 ...