В curl 8.23.0 закрыли use-after-free при выгрузке по HTTP/2: сервер сбрасывает поток, в libcurl остаётся висячий указатель на easy handle, и скачанные с сервера данные ложатся в освобождённую память, где лежал указатель на функцию. Разбор от самого Даниэля Стенберга: как работает цепочка, почему это всё же HIGH, а не CRITICAL, как баг нашёл сканер Anthropic и что он ответил на вопрос о Rust.
Читать далееЧаще всего для ручного тестирования интеграций с RabbitMQ используют UI-клиент. Но не всегда это удобно и позволяет тестировать быстро, особенно когда очередей к функционалу привязано несколько и в каждой нужно отдельно просматривать данные об отправленных сообщениях.
В этой статье я покажу как с помощью python-скрипта можно получать все нужные сообщения из одного/нескольких exchange в отдельную тестовую очередь и просматривать данные из нее в удобном формате в консоли IDE.
Читать далееВ какой момент доработка чужого open source проекта превращается в создание собственного устройства? Когда заменена одна деталь? Половина? Почти все? Или когда от первоначальной конструкции остается только идея?
Несколько лет назад я собрал эргономичную раздельную клавиатуру с встроенным трекболом — Charybdis. Тогда я и представить не мог, что этот проект затянет меня настолько, что я в итоге начну разрабатывать полностью свою клавиатуру.
Все начиналось с небольших изменений — тут подправить геометрию корпуса, здесь изменить толщину посадочного места под свитчи, там переработать крепление деталей, а где то — заменить электронику. Но каждая следующая доработка тянула за собой новые, и постепенно от исходной конструкции оставалось все меньше.
Так появилась Theseus — клавиатура, названная в честь знаменитого парадокса о корабле Тесея, в котором одну за другой заменили каждую деревянную доску.
Но прежде, чем рассказать, как я дошел до этого, стоит вернуться немного назад.
Читать далееЗачем давать агенту свой компьютер, если можно сделать агента-компьютера с полным социальным присутствием, связями и т.д?
Привет, Хабр!
Я сделал операционку, которая грузится не в шелл и не в рабочий стол, а сразу в агента. Вставил флешку, включил машину - и первое, что на экране, это разговор. Дальше он сидит в Telegram и WhatsApp как обычный аккаунт, снимает трубку, помнит все и, если ноут умер, переезжает на другой вместе с паролями.
[Любые совпадения случайны, присутствует сарказм и мета-ирония - прим. автора]
Преамбула
В феврале я писал про GUI-агента. Чекбоксы, радиокнопки и виртуальная компания из Фредди, Бадди и Питера, которая развалилась на фразе «скажи ему, что я люблю котов». Вывод оттуда я не выбросил: дать модели те же инструменты, что есть у человека, и пусть он общается как человек. Хочет Telegram - пусть использует Telegram, а не "интеграцию с Bot API". Хочет WhatsApp - пожалуйста. Хочет что-то еще, свой аккаунт гугла - да тоже почему бы и нет?
А еще что отсутствие ответа - это тоже решение (в общении между людьми).
Впрочем, я опять отклонился на социальные темы, а, в действительности, проблема немного другая, для меня лично:
Все текущие реализации заставляю модель жить у вас в домашней директории, читать ваши файлы, помогать вам именно как агент, а не как человек.
Агент внутри вашего компьютера - это не сотрудник. Это процесс с вашими ключами и файлами, поверх него, естественно, security features, ограничения, запросы/ответы и так далее.
Я сделал наоборот - отдельная машина, отдельный диск, отдельные учётки и полная свобода действий. Вы с ней говорите как с человеком: пишете, звоните, иногда суёте ключ и говорите "используй это". Ваш ноут он не трогает, потому что это не её ноут. Если что-то куда-то утечет, это "его проблемы", так что расшариваете вы с ним только то, что нужно, и оцениваете его тоже как глупого (или умного) человека со своими проблемами.
Читать далееРешил написать свой Telegram на KMP за 30 дней. Что может TDLib и с чем у меня возникли проблемы
Пока искал работу, решил ради инженерного эксперимента написать альтернативный клиент Telegram на Kotlin Multiplatform (Android + Desktop)(Мог бы ещё на Ios но у меня нету ни мак бука, ни денег на него). Уделял проекту по 2–3 часа под ночь. Думал, что TDLib возьмет на себя всю грязную работу, но вместо этого ловил бесконечные рекомпозиции, падения от нехватки памяти (OOM) и загадочные ошибки файловой системы. В итоге всё‑таки допилил клиент со встроенным ИИ, Anti‑Revoke и антиспамом. В статье разбираю, какие были трудности, баги и т.д, как я их чинил, ну и оставляю ссылку на готовый APK.
Читать далееЛетом я писал, что будет, если сливать рабочие данные в ChatGPT: логи SOC, конфиги Cisco и FortiGate, внутренние IP, почты сотрудников. Тогда я сделал офлайн-инструмент, который чистит конфиг руками инженера до отправки. Он решает проблему для того, кто помнит им воспользоваться. Но компания не может полагаться на то, что все всегда вспомнят.
Поэтому я сделал следующий шаг: шлюз, который стоит между человеком и нейросетью, проверяет каждый запрос и решает, что с ним делать. Называется Obscura. Он работает on-prem, данные остаются внутри сети.
Как устроен шлюз под капотомПроблемы эффективности нейросети на самом деле — проблемы обращения людей с нейросетью. И «лечить» надо не ИИ — а повышать собственную компетенцию: компетенцию в работе с ИИ, но в первую очередь — собственную компетенцию в работе, для которой человек использует нейросеть.
Можете быть уверены: если вы не разбираетесь в вопросе — модель вас обманет. Только настоящий опыт человека поможет вовремя найти ошибку и исправить ее. Некомпетентный сотрудник или руководитель не будут знать, где ждать подвоха, а видимая, иллюзорная компетентность ИИ только продлит время до реализации допущенной ошибки, когда она уже вполне может превратиться в системную, а её последствия — оказаться катастрофичными.
Читать далееПривет, Хабр! На фоне популярности decision-моделей мне захотелось познакомиться с их механизмом работы. Объектом исследования я выбрал модель Clef от Cloudflare просто потому, что она больше всего на слуху.
Статья носит познавательный характер и будет интересна тем, кто, как и я, захочет разобраться в работе модели. Фрагменты кода и конфигурации взяты из репозитория авторов.
Приступим!Опубликован предварительный доклад о том, что невозможность полной интерпретации LLM переоценена. Автор Nick Cammarata в своей статье на сайте goodfire.com утверждает, что его эксперименты показывают, что можно отследить формирование ответа LLM, что позволяет изменить подходы к обучению и верификации моделей. сам автор называет текст гипотезой, основной статьи с полным описанием экспериментов пока нет. Но как обычно громкий заголовок и сильные утверждения привели к множеству пересказов, где гипотеза превратилась в факт.
Ниже быстрый взгляд на гипотезу.
Читать далееЯ делаю браузерную текстовую ролевую игру, где ведущим работает языковая модель. Игрок пишет любое действие своими словами, мастер отвечает рассказом, а игра ведёт механику: здоровье, деньги, характеристики, инвентарь, броски d20. Кажется, что всё просто: отправь модели историю и лист персонажа, получи ответ. На практике самые интересные задачи оказались не в промптах вида «напиши смешно», а на стыке вероятностной модели и детерминированной игровой механики. Ниже — четыре таких места и то, как я их решил.
Стек: Node.js 24, Express, встроенный node:sqlite, модели через OpenRouter и общий для сервера и браузера модуль движка.
Читать далее… или как спасти человека, работающего с мыслительным протезом.
Задолго до кембрийского взрыва ИИ канадский дизайнер Том Вуджек показал принципы инженерного творчества на трех простых упражнениях: на башне из спагетти с зефиркой на вершине, на рисунке тоста и на стене со стикерами. Его выступления на TED разошлись по тренингам и стали учебными пособиями для MVP, пилотных проектов, системных карт и стратегических сессий. Увы, сегодня эти практики воспринимаются как карго-культ, и их повторяют как ритуал: подвинул стикер, получил банан процент от KPI. А теория, идеи и история, которые за ними стояли, забываются.
Если вы бывали на тренинге по аджайлу или дизайн-мышлению, то, скорее всего, видели много подобных упражнений. Четыре человека, двадцать сухих спагетти, по ярду скотча и ниток, одна зефирка и восемнадцать минут. Команда спорит, чертит, делит роли. За минуту до гонга зефирку торжественно ставят на вершину, и конструкция медленно, с достоинством складывается пополам. Вуджек, проводивший это упражнение десятки раз, называет такой момент переходом от «та-дам» к «ой-ой».
Дальше на тренинге обычно смеются, обсуждают командную работу, а потом идут пить кофе. Упражнение сделано, галочка поставлена. Мысль, ради которой его придумали, чаще всего остается на столе вместе с обломками спагетти.
Сам Вуджек формулирует ее одной фразой: «У каждого проекта своя зефирка». Это допущение, которое никто не проверил и которое обрушит всю конструкцию в последний момент.
В современной разработке такие башни из спагетти встречаются часто, только выглядят по-другому, а зефирка от этого легче не становится. Модель выдаст код, чертеж или сотню вариантов детали быстрее, чем команда договорится о том, кто держит скотч. Правда, такой код падает на первых живых данных.
Недавно Вуджек назвал искусственный интеллект зловещей проблемой. Но что стоит за этой фразой? Луддизм или глубокое понимание основ творческого процесса?
В этой статье я попробую ответить на этот вопрос. Для этого стряхну пыль с трех выступлений Вуджека и посмотрю, что они заложили в современный бизнес и ИТ. А заодно и покажу, что, вернувшись к их сути, мы получаем готовый способ работать с ИИ. Итак, расчехляем виниловые проигрыватели, ставим пластинку Jethro Tull, звоним друзьям и идем на кухню за пачкой макарон.
Читать далееПредставим, что разработчик научился выполнять дневную норму за два часа. Что он получит: премию, повышение или ещё четыре дневные нормы? Если приз за скорость — новая норма, молчание становится рациональной стратегией. Возможно, некоторые разработчики уже работают в несколько раз быстрее. Просто не обязательно для вас.
Читать далееKind + Gateway API + Cilium в качестве Load Balancer
В этой статье я делюсь опытом развертывания и предлагаю заглянуть в настройку этой технологии — сетевой стек на базе Gateway API и Cilium, выступающего в роли балансировщика. Это практический стенд, демонструет возможности Cilium и декларативный подход к маршрутизации в локальной среде.
Читать далееЧто происходит с агентом, который не решает одну задачу, а живёт — долго, в мире, который всё время меняется? Я собрал NOWA-Cognitive, когнитивную архитектуру без backprop, без глобальной функции потерь и без языковой модели в контуре решений: днём агент записывает опыт быстро и «начерно», а долговременную память переписывает ночью, во сне. Рассказываю, как это устроено, на примере одних суток одной шиншиллы из колонии — G3A1SF.
Читать далееВ 10 утра 29 января при дедлайне 30-го приложение показывало ноль дней. Их было два. Почему .inDays округляет вниз, зачем календарным дням UTC и почему у скользящего окна нет формулы.
Читать далееСегодня хочу рассказать вам вдохновляющую историю нашей коллеги-инвестора, учителя - Ольги Селезневой, которая начала инвестировать в возрасте 56 лет, и за короткий срок создала внушительный капитал, с которого спокойно можно жить уже сейчас. Но самое главное - это то, что инвестирование стало её любимым увлечением.
Читать далееXray, sing‑box, Hysteria2, AmneziaWG, TrustTunnel, TURN‑транспорт, MasterDNS, OpenFlux и snolc в одном приложении, с одним Go‑рантаймом на весь процесс. А ещё VLESS с Reality и XHTTP, VMess, Trojan, Shadowsocks, NaiveProxy и WireGuard, всё под Android, Windows, Linux и iOS. Внутри: почему два gomobile‑AAR роняют процесс, как bsdiff упёрся в 2 ГиБ, почему пинг в уведомлении всегда показывал ноль и как перенести данные на новый applicationId, чтобы ими не воспользовалось чужое приложение.
Читать далееЧто пришлось проверить, прежде чем доверять системе самостоятельную работу над программным проектом.
Хотел построить систему, способную самостоятельно вести программный проект от идеи до работающего продукта с помощью AI‑агентов. Но первые инженерные эксперименты показали, что генерация кода далеко не самая сложная часть задачи.
В статье рассказываю о разработке Yggdrasil: почему ограничения файловой системы не гарантируют защиту данных, какие проблемы остаются после изоляции в VM, почему лимиты памяти не обеспечивают жестких гарантий для хоста и как восстанавливать выполнение после сбоев без риска повторить уже совершенные действия.
Разбираю реальные результаты испытаний, включая проваленные проверки, принятые архитектурные решения и ограничения, которые пока не удалось устранить. Проект еще находится на стадии исследований, поэтому речь не о готовом решении, а о проблемах, с которыми приходится сталкиваться при попытке построить действительно автономную AI‑разработку.
Читать далееНе выбирайте языковой курс, сделайте свой за пять минут.
Собрал в Claude Code личного репетитора. Он ведет по программе под мой уровень, проверяет каждый ответ, помнит ошибки и сам складывает новые слова в словарь на телефоне. Ни строчки кода, только пара команд. Показываю, как повторить для любого языка.
Читать далееЕдиного подхода к тому, что считать широкополосным доступом к интернету (ШПД), не существует — требования отличаются от страны к стране. Различаются и проблемы, мешающие расширять покрытие: где-то все дело в изношенной инфраструктуре, на базе которой приходится строить новые сети, а где-то палки в колеса операторов вставляют (внимание!) железнодорожные компании. Посмотрим, с какими необычными трудностями сталкиваются телекомы в США, ЕС, Канаде и других странах, как можно их обойти, и какие планы по развитию ШПД строят у нас в России.
Читать далее