Обновить
512K+

Open source *

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

491,13
Рейтинг
Сначала показывать
Порог рейтинга

Представлен открытый ИИ‑инструмент для создания диаграмм Diagram Design. Решение не требует ни этапа сборки, ни JavaScript, ни внешних изображений. В проекте есть 39 типов схем для Claude Code, Codex, Factory Droid, Pi и других платформ, поддерживающих Agent Skills. Автономный код HTML + SVG.

«Никаких теней. Никакой неряшливости, свойственной Mermaid. Семантические паттерны описывают поведение отдельно от компоновки, поэтому такие элементы, как очередь, трассировка политик или граница доверия, могут использовать ближайший существующий тип без необходимости создавать новые. Статичный HTML используется по умолчанию; для последовательных пояснений доступна опциональная анимация. Инструмент также позволяет перерисовывать схемы из форматов draw.io, Mermaid или Excalidraw, задавая нужный формат, размер и уровень детализации. Никакой Figma. Никаких стандартных блоков со скруглёнными углами. Никаких 30-минутных сеансов подбора цветов», — пояснил автор решения.

Теги:
+1
Комментарии0

Я написал, что система умеет откатывать действия агента. Потом открыл код

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

Код откатывал один шаг по идентификатору. Никакого прохода назад, ни остановки на необратимом. До публикации оставалось несколько часов.

Функцию я написал — вместо того чтобы смягчить формулировку. И на первом же запуске поймал две вещи.

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

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

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

Двумя неделями раньше — ошибка того же рода

Журнал, который проверяет только автор, ничего не доказывает. Поэтому верификатор написан на другом языке: пишет Python, проверяет TypeScript.

На тесте, где JS-верификатор читает журнал, созданный Python, выяснилось, что json.dumps сериализует 0.0 как "0.0", а JSON.stringify то же число — как "0". Строки разные, хеши разные, одна и та же честная запись хешируется по-разному.

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

def _jcs_numbers(value: Any) -> Any:
    """Приводит числа к форме, одинаковой в Python и JavaScript."""
    if isinstance(value, bool):
        return value
    if isinstance(value, float) and value.is_integer():
        return int(value)

Проверка на bool не паранойя: в Python True — экземпляр int, без этой ветки булево уехало бы в числовую нормализацию.

Писал бы верификатор я сам, на том же Python, — ошибка дожила бы до первого спора с клиентом.

Функция, которой намеренно нет

Проект отдаёт наружу MCP-сервер, JSON-API и ноду n8n. Все три умеют выполнять шаги, спрашивать разрешение и читать журнал. Ни один не умеет подтверждать.

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

Что вынес

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

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

Альфа, 115 тестов, ноль зависимостей, AGPL-3.0: github.com/oleg-vdv/kepil. Верификатор отдельно и под MIT: agent-trace.

Теги:
-1
Комментарии0

Представлен открытый проект No AI Slop, который чистит ИИ-тексты от 20+ типичных ИИ-штампов. Под зачистку попадают «это не X, это Y», «будущее уже здесь», но и излишний пафос и ссылки на безымянных экспертов. Скилл даёт модели правила редактирования: сохранять авторский юмор, лексику и ритм, а после правок объяснять, что поменялось. Можно отдельно попросить найти штампы в тексте.

Теги:
0
Комментарии1

Все видеозаписи конференции EuroPython 2026, проходившей в Кракове (Польша) с 13 по 19 июля 2026 года, теперь доступны онлайн для всех пользователей (включая фото). Также опубликован краткий обзор мероприятия от организаторов.

Теги:
+1
Комментарии0

Где находится нниоп нофелет?

Нарисовалась задача: нужно было автоматизировать поиск реквизитов контрагентов по ИНН/ОГРН прямо из интерфейса 7.7, чтобы избежать ручного ввода, ошибок и ввод адреса "НЕ в формате ФНС". Типовой "1С:Контрагент" не рассматривался, он слишком избыточный по стоимости и громоздкий по архитектуре для моих текущих задач. Тем более, что он для Снеговика.

Альтернатива - API ФНС была отвергнута - платный. ???!!! В итоге был выбран путь интеграции с API DaData.

Технически реализовано так:

  • Запрос на сервер DaData →→ получаем JSON →→ парсим данные →→ получаем список реквизитов контрагента (и не факт, что одного!). С полученным списком работаем дальше.

  • Реализовано два режима работы: простой поиск (для пользователя) - показывает найденные реквизиты и служебный (для автоматического создания новых элементов в справочнике и/или актуализации данных) - возвращает найденное вызвавшей процедуре без открытия формы.

Основное окно поиска, ключ API вводится на закладке "Настройка" (один раз).
Основное окно поиска, ключ API вводится на закладке "Настройка" (один раз).

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

Подробности обвязок для HTTP-запросов и работы с json в 7.7 - см. здесь

А теперь к теме поста.

Географ глобус пропил. Московской области.

При тестировании получения от ДаДаты адресов (ФИАС/КЛАДР) обнаружились странные вещи. Например, в Москве теперь фигурирует несколько городов (в том числе и сам Москва г.), хотя всегда был только один - Зеленоград, а в Московской области "исчезли" некоторые районы, точнее почти все (Чеховский не в счет). Города (районные) теперь стали "районами", и прикол в том, что сами же города-районы бывают городами в самих себе. Но некоторых районов в классификаторе адресов Московской области нет вообще: например, Талдомского района больше не существует даже в виде города, хотя сам Талдом г. на месте - в городах МО.

Таким образом, адреса в т.н. формате ФНС (в адресе должно быть 9 запятых: страна ,(1) индекс ,(2) регион ,(3) район ,(4) город ,(5) населенный пункт ,(6) улица ,(7) дом ,(8) корпус ,(9) квартира) выглядят теперь так:

  • ,123456, Москва г,, Москва г,,,,, (город-регион сам в себе)

  • ,140000, Московская обл, Дмитров г, Дмитров г, ,,,, (город-район сам в себе)

  • ,140004, Московская обл, Люберцы г,,, Вуги п,,, (п. Вуги - улица(!) в Люберцы г. "районе")

При этом, код ФИАС у городов-дублеров самих себя одинаковый. Разрядность "кода ФИАС" (в отличие от кода КЛАДР для одного и того же объекта) такова, что уникальный код ФИАС можно "присвоить" не только каждой песчинке на Земле, но и каждой капле воды на всей планете. И еще несколько порядков свободных кодов останутся (наверное, для реголита на Луне), но вот для городов-клонов кодов не хватило.

Не очень понятно, что теперь делать со справочниками, которые содержат адреса в "старом" формате? Это и адреса контрагентов (юридический, фактический, почтовый, адреса доставки и т.д.) и адреса прописки регистрации сотрудников (физ. лиц). Их, даже в небольших одинесных базах, могут быть десятки и сотни тысяч. Ни о каком ручном способе приведения адресов в соответствие к новым выкрутасам ФНС (формирует ФИАС/КЛАДР) не может быть и речи!

Кто-нибудь еще сталкивался с такими переменами в госреестрах? Как вы сейчас решаете проблему синхронизации старых баз адресов с новыми реалиями ФИАС/КЛАДР?

Теги:
+1
Комментарии2

Представлен открытый проект Omelette для Mac - улучшенный аналог CodexBar:

  • оптимизирован под CLI Claude Code / Codex / AntiGravity;

  • не просит никаких лишних разрешений;

  • получает сообщения cli и передаёт в терминал на iTerm2 (cmux пока в разработке);

  • находится в активной разработке;

  • имеет всякие дополнительные инструменты и mcp, типа монитора, который сообщает агентам, что они слишком много тратят токенов.

Теги:
0
Комментарии0

Джастин Шрёдер показал любопытный образец того, как сегодня может вестись разработка. В твите Шрёдер выложил фотографию, на которой MacBook смотрит встроенной в крышку веб-камерой на собственный экран через зеркало. Как утверждает разработчик, таким способом он улучшает поддержку графики AMD Radeon в Omarchy.

@jpschroeder

Как объясняет в комментариях к твиту Шрёдер, зеркало как раз позволяет при отладке оценивать не скриншот, а изображение на физическом дисплее ноутбука. Что именно происходит на экране, разобрать тяжело из-за невысокого разрешения снимка и зеркального отражения. Если судить по его другому твиту, саму веб-камеру под Linux Шрёдер запускает с помощью T1Bridge — открытого проекта Standard Agents, добавляющего поддержку Apple T1 и iBridge, включая камеру FaceTime HD. Справа (слева на отражении в зеркале) открыт интерфейс приложения LocalSend: в папку /home/justin-schroeder/Downloads только что передали две фотографии в файловом формате HEIC. Слева, судя по характерным строкам Ran и Explored, работает Codex CLI компании OpenAI.

Сам Шрёдер — разработчик открытого программного обеспечения и создатель dmux, инструмента для параллельной работы с агентами программирования. Эта утилита запускает Codex, Claude Code и другие агенты в отдельных панелях tmux, создавая для каждой задачи отдельную ветку и рабочий каталог Git. Беглый поиск показывает, что к Omarchy Шрёдер имеет непосредственное отношение как контрибьютор: 9 сентября он отправил в проект патч, исправляющий работу адаптера Wi-Fi фирмы Broadcom на MacBookPro13,3. Судя по всему, сейчас он как раз занимается доводкой Omarchy на этой машине.

Теги:
+4
Комментарии1

Представлен открытый проект Free Router, автоматически переключает ИИ‑агента между 25 бесплатными провайдерами для значительной экономии токенов, включая бесплатные. На выбор есть любые актуальные модели: DeepSeek, GLM-5.3, Qwen-3.8.

Теги:
+3
Комментарии0

Представлен открытый проект Spotify Portal AI Plugins. Это решение от инженеров Spotify, которое экономит до 90% ресурсов ИИ-агентов:

  • перенаправляет шаблонные задачи на более дешёвых агентов и оставляет Claude только приоритетные дела;

  • bulk‑reader разбирает многострочный код, Gemini 2.5 Flash внутри читает файлы на тысячи строк и отдаёт Claude саммари;

  • code‑writer генерит рутинный, проверенный и предсказуемый код, пишет тексты, конфиги, type stubs, boilerplate и другие переиспользуемые части;

  • Claude забирает себе только самые важные и реально сложные задачи, где нужен мощный ризонинг — фикс багов, проработка архитектуры и внесение сложных правок.

Теги:
+7
Комментарии0

Представлен открытый набор навыков text-to-cad для ИИ-агентов для инженеров, чтобы создавать детальные CAD-модели. Достаточно описать нужную деталь, а ИИ-агент сам строит модель с экспортом в STEP, STL и другие форматы. В комплекте есть просмотр в браузере, поиск готовых винтов, подшипников и моторов, проверка толщины стенок и нависаний перед 3D-печатью. Работает не только с Codex, но и с Claude Code и другими ИИ-агентами.

Теги:
+7
Комментарии0

Как перестать сливать ПДн в ChatGPT и Claude: On-Prem AI-Gateway на чистом Python

Сотрудники компании (разработчики, поддержка, юристы) активно используют ChatGPT, Claude и Cursor. В промпты летят ФИО клиентов, ИИН/ИНН, карты, API-ключи и бизнес-логика. С точки зрения RegTech (152-ФЗ, Закон РК № 94-V, GDPR) — это прямая утечка данных.

Обычный DLP просто заблокирует доступ, снижая продуктивность[cite: 1]. Мы сделали AI-Gateway — open-source шлюз с обратимой токенизацией (Reversible Tokenization), который маскирует ПДн до отправки в LLM, восстанавливает их в ответе и ведет защищенный лог.

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

1. Исходный промпт от пользователя/приложения:

«Клиент Ержан Нурсултанулы, ИИН 900715300005, оспаривает транзакцию по карте 4400 1234 5678 9101…»

2. Уходит во внешнюю LLM (ChatGPT/Claude/Gemini):

«Клиент [PERSON_1], ИИН [NATIONAL_ID_1], оспаривает транзакцию по карте [PAN_1]…»

3. Возвращается в приложение / браузер:

«…для Ержан Нурсултанулы (ИИН 900715300005) по карте 4400 1234 5678 9101 возврат…»

Модель помогает решить задачу, пользователь получает полный ответ, а вендор не получает ни одной персональной записи[cite: 1].

Ключевая архитектура

  1. Обратимая токенизация, а не удаление. Замена сущностей на [PERSON_1] сохраняет связность текста для LLM[cite: 1]. Соответствия хранятся только в OAM (Mapping Store) в зашифрованном виде (PRF-CTR + HMAC) и автоматически удаляются после ответа[cite: 1].

  2. Проверка по контрольным суммам. ИИН/БИН проверяются двухпроходным весовым алгоритмом, карты — по алгоритму Луна (Luhn), IBAN — ISO 13616[cite: 1]. Секреты (AWS, OpenAI, JWT, PEM) детектируются по формату и энтропии Шеннона[cite: 1].

  3. Zero-Dependency Core (Python 3.11+ stdlib). Поверхность атаки на Supply Chain инструмента, видящего все промпты — ровно ноль[cite: 1]. Устанавливается в Air-Gapped контур без pip install[cite: 1].

  4. Принцип Fail-Closed. Любая ошибка распарсинга или сбой детекции блокирует запрос[cite: 1].

  5. Tamper-Evident Audit Log. Append-only JSONL с цепочкой хешей SHA-256[cite: 1]. Любое редактирование записи нарушает целостность лога[cite: 1].

Три канала перехвата

  • Egress Proxy: Меняем base_url в OpenAI SDK (http://aigate.internal:8080/v1)[cite: 1]. Код приложений менять не требуется[cite: 1].

  • Browser Extension (Manifest V3): Перехватывает ввод в ChatGPT/Claude/Gemini прямо в браузере до отправки на сервер[cite: 1].

  • Endpoint Agent: Отслеживает буфер обмена (clipboard) для вставки в IDE (Cursor, Claude Desktop)[cite: 1].

Маршрутизация в локальные LLM

Можно настроить правило: промпты без ПДн идут в ChatGPT/Claude, а промпты с найденными чувствительными данными автоматически перенаправляются на локальный Ollama / vLLM (Llama 3.1)[cite: 1].

Быстрый запуск

git clone [https://github.com/oleg-vdv/AI-Gateway.git](https://github.com/oleg-vdv/AI-Gateway.git)
cd AI-Gateway
cp .env.example .env
docker compose up -d
Теги:
+14
Комментарии8

Регуляторы скоро спросят «где у вас RSA?». Я написал сканер, который отвечает за секунды

  1. Завязка. Три дедлайна: США — PQC для новых госзакупок нацбезопасности с 2027 (EO 14412 / CNSA 2.0, там прямо назван CBOM), Великобритания — полная криптографическая инвентаризация и план миграции к 2028 (NCSC), ЕС — переход с конца 2026. Первый вопрос аудитора одинаковый: «где именно у вас используется RSA?» Ответа нет почти ни у кого.

  2. Что такое CBOM и почему это не то же самое, что SBOM.

  3. «Harvest now, decrypt later» — почему это не про далёкое будущее: трафик записывают сегодня, расшифруют потом. Если у секрета срок жизни больше нескольких лет — проблема уже наступила.

  4. Как работает сканер. Одна команда, три артефакта: CycloneDX 1.6 CBOM, отчёт с планом миграции на ML-KEM/ML-DSA, SARIF для GitHub code scanning. Плюс scan-tls — одно рукопожатие и вердикт по живому эндпоинту.

  5. Байка про баг (Хабр это любит): первый же регрессионный тест поймал, как сканер находит «криптографию» в собственных регулярках. Лечилось маскировкой литералов RSA_generate_ke[y], и теперь есть вечный тест, что репозиторий подсвечивает только свои фикстуры.

  6. Честный бенчмарк против PQCA CBOMkit. Не «мы лучше», а «мы разные»: CBOMkit глубже на Java/Python (знает размеры ключей, симметрику), мы шире (10+ языков, конфиги, сертификаты) и быстрее (0,05–0,12 с против минуты). Прямая ссылка на docs/BENCHMARK.md — воспроизводимо кнопкой в CI.

  7. Ограничения честно: v0 на паттернах, динамические вызовы пропустит, отсутствие находок ≠ отсутствие проблем. AST-движок в планах.

  8. Финал: вопрос к читателям — у кого уже спрашивали CBOM и в каком виде.

Теги:
+3
Комментарии0

Представлен открытый проект OpenMouse (решение на GitHub), который позволяет настраивать детально все параметры практически любых компьютерных мышек:

  • можно настроить DPI, подсветку.

  • можно переназначить клавиши, создать макросы и ещё множество вещей.

  • работает иногда лучше приложений от производителей и не тратит ресурсы ПК.

  • подходит для большинства моделей мышек.

Теги:
+8
Комментарии1

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

Наболело… Куда катится мир, граждане-товарищи? Раньше был веб-дизайнером по профессии, теперь лишь подхалтуриваю, но…

Итак, дано. Стек: Linux, Wayland, Qt/GTK. Нужна программа для работы с цветом:

  • Живой проект

  • Linux/Wayland

  • GUI

  • Отдельная программа, а не GIMP/Figma/Krita/веееб-инструмееенты без регистрации и СМС

  • Палитры

  • Цветовые пространства

  • Гармонические схемы

  • Генерация вариаций

  • Математическое смешивание

  • Blend modes вроде Overlay

  • Интерполяция/шаги

  • Лёгкая и узкоспециализированная

  • Кофе варить не обязана

Очень много?

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

Есть pastel. Консольная.
Есть Gpick. Дохлый.
Есть Rickrack. Дохлый. Да ещё и на PyQt5. С кучей некродрузей за ручку.

Я не понимаю. Правда. Сейчас всем хватает только пипеток и инстаграмчиков на телефончиках?

Недавно запилил свою мерялку экрана на C++/GTK4 со всякими координатами, шириной-высотой, углами, диагоналями, соотношениями сторон, направляющими и пр. плюшками. Для Wayland. И даже умудрился туда прикрутить те же колорпикер со скриншотами, мать их… Просто потому что самому нужно. Теперь пилить ещё и это? Я один такой дурак в этом мире, которому всё это нужно?… Простите. Крик души.

Теги:
+9
Комментарии21

KiroCrew: персональный AI-ассистент с памятью и автономностью

Автономный агент с persistent memory, планировщиком задач, фоновыми subagents и поддержкой множества каналов коммуникации

Введение

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

KiroCrew - это персональный AI-агент, который работает локально на вашей машине поверх kiro-cli (KiroACP) или на сервере с доступом через браузер или десктоп клиент.

Установка и первый запуск

KiroCrew можно запустить разными способами - выберите подходящий сами, веб сервер с браузером или настольное приложение.

Как его установить - на сайте и на гитхабе написано.

Скриншот программы
Скриншот программы

Память, которая сохраняется

KiroCrew имеет persistent memory. Агент помнит:

  • Предпочтения: стиль кода, предпочитаемые инструменты, формат ответов. Обновляются автоматически после ~30 сообщений.

  • Контекст проекта: над чем вы работаете, ключевые решения, блокеры.

  • Историю: сводки по дням с естественным затуханием (14 дней - полная детализация, далее - сжатие).

  • Уроки: исправления, которые вы даёте агенту. Сказали «всегда используй pytest» - запомнил навсегда.

Память работает в трёх режимах: Нормальная работа, Конфиденциальные задачи, Изолированные эксперименты. Режимы переключаются прямо из дашборда.

Векторная память использует Qwen3-Embedding-0.6B (около 610 MB), который качается автоматически при первом запуске. Семантический поиск по памяти работает «из коробки» - никаких внешних серверов не нужно.

Cron-задачи: автономное выполнение по расписанию

KiroCrew может выполнять задачи по расписанию без вашего участия Скриншот программы Каждая задача запускается в изолированной LLM-сессии с полным доступом к инструментам.

Дополнительные возможности

  • Subagents: умеет запускать параллельных фоновых агентов (subagents) для одновременного выполнения задач.

  • Self-learning: агент учится на ваших исправлениях

  • Skills: навыки подгружаются автоматически по контексту запроса.

  • Task Runner: автономное выполнение многошаговых задач из спеки

  • Research Lab: многоцикловые исследовательские кампании с экспортом отчётов

  • Knowledge Library: семантический поиск по вашим документам (Notion, Confluence, локальные файлы)

  • Web Deploy: публикация HTML/виджетов на вашем AWS (private S3 + CloudFront + OAC)

  • Snapshot & Restore: бэкап и миграция состояния KiroCrew между машинами

  • Messeger support: интеграция с мессенджерами

Безопасность

KiroCrew даёт AI-агенту реальный доступ к инструментам, поэтому безопасность к безопасности подошли серьёзно:

Когда это полезно?

KiroCrew это инструмент для разработчика, который:

  1. Помнит контекст: не нужно повторять «мы используем React + TypeScript + Vite» каждую сессию

  2. Работает без вас: настроил cron на проверку pipeline - получил уведомление

  3. Учится: один раз сказал «предпочитаю ruff flake8» - запомнил навсегда

  4. Параллелит: запустил ревью 10 пакетов - получил результаты по всем

  5. Интегрирован: работает там, где вы уже общаетесь (Slack, Telegram)

Идеальные сценарии:

  • Ежедневные дайджесты по проекту

  • Мониторинг CI/CD и уведомления о проблемах

  • Автоматический follow-up по PR

  • Исследовательские задачи с большим объёмом информации

  • Работа с множеством репозиториев

  • Ваш кейс

Заключение

KiroCrew - это интересный инструмент, а использовать его или нет - решать вам.

Мне помогал ИИ в написании этого текста, немного. Спасибо за внимание.

Теги:
+5
Комментарии0

Наконец мой мессенджер прошёл тест в Google Play . За время тестирования он научился совершать звонки по udp. Это позволило по udp получать не только голос, но и пинок от сервера на проверку сообщений в реальном времени. Осталось придумать как без внешних сервисов, вроде FCM, не засыпать вместе с системой и не давать андроиду прибить процесс приложения, чтоб принять udp пендаль в любое время. Так как мессенджер ориентирован на пользователей роутеров Mikrotik, на роутер и была возложена такая задача. Не давать телефону спать :). В качестве энергетика будет выступать DHCP Lease. В приложении я подписываюсь на изменения параметров сети, и выполняю задачу в обычном executor.

private void registerNetworkCallback() {
        ConnectivityManager connectivityManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
        if (connectivityManager != null) {
            connectivityManager.registerDefaultNetworkCallback(new ConnectivityManager.NetworkCallback() {
                @Override
                public void onAvailable(@NonNull Network network) {
                    isNetworkActive.set(true);
                    if (userId > 0) {
                        tickUdp();
                        startDownloadNewMsg(true);
                    }
                    offlineHandler.removeCallbacks(resetStatusesRunnable);
                    Log.d(LOG_TAG, "Network: WiFi Connected. " + network);
                }

                @Override
                public void onLinkPropertiesChanged(@NonNull Network network, @NonNull LinkProperties linkProperties) {
                    Log.d(LOG_TAG, "LINK CHANGED DNS=" + linkProperties.getDnsServers());
                    if (userId > 0 && isNetworkActive.get()) {
                        tickUdp();
                        startDownloadNewMsg(true);
                    }
                }

                @Override
                public void onLost(@NonNull Network network) {
                    isNetworkActive.set(false);
                    offlineHandler.postDelayed(resetStatusesRunnable, 15000);
                    Log.d(LOG_TAG, "Network lost. Scheduled offline reset in 15s...");
                }
            });
        }
    }

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

:local netId [/ip dhcp-server network find address="192.168.88.0/24"];
:local currentDns [/ip dhcp-server network get $netId dns-server];
:if ($currentDns = "192.168.88.1,8.8.8.8") do={
    /ip dhcp-server network set $netId dns-server="192.168.88.1,8.8.4.4";
} else={
    /ip dhcp-server network set $netId dns-server="192.168.88.1,8.8.8.8";
}

Этих трёх минут вполне хватает чтоб не заснуть, и пингануть разочек сервер для прогрева udp порта.

Расход заряда в планшете с таким энергетиком от роутера я специальными приборами не замерял. Но на глазок, за 12 часов бездействия ни одного процента зарядка не потяряла, и через 12 часов и планшет и телефон приняли и звонок и сообщение мгновенно.

Теги:
+4
Комментарии0

Представлен открытый проект Game Optimizer, который оптимизирует работу CPU под игры в Windows (распределяет потоки и кэш, чтобы разделить нагрузку).

На примере Overwatch у тестеров получилось увеличить FPS вдвое с 210 до 450 кадров. Утилита грамотно распределяет ресурсы, как работает:

  • Снижает нагрузку на ваш ПК, которую создают фоновые приложения и утилизируют ресурсы CPU, в которых нуждается игра. Особенно актуально, если у процессора есть кэш нескольких уровней (L1, L2, L3).

  • CPU Game Optimizer создаёт маски для игр, которые разделяют ресурсы.

  • Маски можно создавать самому или использовать пресеты.

Проект хорошо сочетается с такими процессорами:

  • Intel Core Ultra 9 285K, Ultra 7 265K, Ultra 5 245K, Core i9-14900K, i7-14700K, i5-14600K, i5-14400F, Core i9-13900K, i7-13700K, i5-13600K, Core i9-12900K, i7-12700K, i5-12600K.

  • AMD Ryzen 9 9950×3D• Ryzen 9 9900×3D, Ryzen 9 7950×3D, 7900×3D, Ryzen 9 9950X, 9900X, PRO 9965, PRO 9955, PRO 9945, Ryzen 9 9950×3D2 Dual Edition, Ryzen 9 7950X, 7900X, 7900, PRO 7945, Ryzen 9 5950X, 5900X, 5900XT, 5900, PRO 5945, Ryzen 9 3950X, 3900X, Ryzen 7 3700X, 2700X.

Даёт небольшой прирост с этими процессорами:

  • Intel i5-12400, i3-12100, i3-13100, i3-14100, i9-9900K, i7-9700K, i5-9600K, i7-2600K.

  • AMD Ryzen 7 9700X, 9700F and Ryzen 5 9600X, 9600, 9500F, Ryzen 7 7700X, 7700, Ryzen 5 7600X, 7600, 7500F, Ryzen 7 5800X, 5800XT, 5700X and Ryzen 5 5600X, 5600, Ryzen 7 8700G, Ryzen 5 8600G, monolithic APU: 9800×3D, 9850×3D, 7800×3D, 5800×3D, 5700×3D, 5600×3D.

Теги:
+2
Комментарии0

Представлен открытый проект Phone Farm iOS - TikTok-ферма на устройствах с iOS. Подключаем iPhone к Mac, регистрируем в панели и управляем прямо из браузера: можно смотреть экран в реальном времени, тапать, свайпать и запускать автоматизацию TikTok. Встроенный планировщик публикует посты и слайд-шоу по расписанию, а очередь и история запусков хранятся в PostgreSQL. Проект работает без джейлбрейка и полностью локально.

Теги:
+1
Комментарии0

Приложение ChatGPT/Codex включает в себя полную копию LibreOffice.

«Я копался в папке ~/.cache/ с помощью OmniDiskSweeper и заметил кое‑что интересное. В папке codex‑primary‑runtime настольного приложения OpenAI Codex (позже переименованного в ChatGPT) находится 1,7 ГБ файлов, включая полную установку Python, полную установку Node.js, а также нативные бинарные файлы для Poppler, git и офисного пакета LibreOffice с открытым исходным кодом (который отделился от OpenOffice.org в 2010 году)», — пояснил исследователь Саймон Уиллисон.

Теги:
+3
Комментарии0

OpenAPI React скомпрометирована в результате атаки на цепочку поставок npm от Mini Shai-Hulud

28 августа 2026 года в npm появились десять вредоносных версий @7nohe/openapi-react-query-codegen. Согласно предупреждению проекта, при установке они запускали код атакующего на машине разработчика или CI-раннере. Под угрозой оказались секреты GitHub, облачных сервисов и реестров пакетов.

За неделю с 23 по 29 августа пакет скачали 156 752 раза. На вредоносные версии пришлось около 1 900 загрузок, и доступны они были меньше двух суток. В пакетной базе npm также находится 8 зависимых пакетов, у которых есть указание использования вредоносного пакета. Это показывает размер потенциально задетой области, а не число подтвержденных заражений.

CodeScoring завел эти версии в базу 29 августа в 02:20 по Москве, через девять минут после публикации предупреждения GitHub, и еще через две минуты они попали под блокировку в платформе. Все десять помечены как опасные, поэтому у пользователей платформы данные компоненты автоматически блокируются при наличии соответствующей политики безопасности.

Атакующему не понадобилось взламывать учетную запись автора пакета. Ошибка была в workflow публикации. Любой пользователь мог открыть pull request из форка и запустить этот сценарий специальным комментарием. GitHub Actions загружал код из pull request и устанавливал зависимости, хотя одновременно имел право публиковать пакет в npm.

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

Вредоносный код запускался во время установки пакета. В части версий запуск был прописан в команде preinstall внутри package.json, которую npm выполняет перед установкой. В других ту же команду спрятали в binding.gyp — конфигурационном файле для сборки нативных модулей с помощью node-gyp. Поэтому проверка только скриптов в package.json не обнаружила бы все зараженные выпуски. Полезная нагрузка искала учетные данные и настройки инструментов разработчика, а затем пыталась распространяться через доступные пакеты и репозитории. Механика похожа на августовскую волну Shai-Hulud, только точкой входа стала не учетная запись мейнтейнера, а небезопасный процесс публикации.

Все зараженные версии при этом получили валидные сведения о происхождении сборки (provenance). Это важная граница такой проверки. Она подтверждает, где собрали и опубликовали пакет, но не доказывает безопасность самого процесса. В данном случае сборка действительно прошла через официальный процесс публикации проекта, который, однако, выполнил код из чужого pull request.

Сейчас основной тег пакета снова указывает на чистую версию 3.0.2, а зараженные релизы удалены из NPM. Удаление пакета из реестра остановит новые установки, но не вернет уже украденные секреты. Командам стоит:

  • проверить файлы зависимостей и SBOM по полному списку зараженных версий;

  • если пакет устанавливался 28 августа с разрешенными установочными скриптами, пересобрать машину или CI-раннер из чистого образа и отозвать секреты, доступные в этой среде;

  • очистить кэш пакетного менеджера и повторить установку с чистой версией;

  • проверить автоматические сценарии публикации: в них нельзя исполнять код из pull request внешних участников с правами на выпуск релизов.

Пользователям CodeScoring достаточно один раз настроить блокирующую политику с условием «Зависимость опасна». Пример настройки данной политики можно найти в документации платформы.

Теги:
+8
Комментарии0
1
23 ...