1 января 2024 года умер Никлаус Вирт, человек, который придумал Pascal, Modula-2 и Oberon, получил премию Тьюринга и всю жизнь упрямо воевал с раздутым софтом. Мало кто знает, что уже глубоко за семьдесят он сел и спроектировал собственный процессор, маленький и простой, чтобы на нём можно было показать студентам компьютер целиком, от логических вентилей до окон на экране.
В сентябре 2026 года я взял этот процессор и попробовал запустить его везде, куда смог дотянуться. Сначала прямо во вкладке браузера, причём не в эмуляторе, а в виде той самой схемы, которую нарисовал Вирт. Потом в QEMU, как обычную виртуальную машину. Потом в Kubernetes, где вообще-то живут совсем другие виртуалки, с Ubuntu и базами данных. И в конце концов в Cozystack, нашей облачной платформе, где машину Вирта теперь можно поставить кнопкой из каталога, как какой-нибудь PostgreSQL. По дороге я наконец измерил то, о чём программисты спорят десятилетиями, — сколько на самом деле стоит проверка выхода за границы массива. Ещё запустил на процессоре Вирта маленькую языковую модель. И, раз уж честно, одним неосторожным движением отправил в переезд все виртуалки рабочего кластера (никто не пострадал, но было неприятно).
Статья получилась очень длинной, потому что за девять дней случилось очень много всего, и значительная часть случившегося — это мои собственные ошибки, которые пришлось находить и исправлять. Я старался писать так, чтобы её мог читать человек, который про Оберон никогда не слышал, а всё, что интересно только специалистам, спрятал под спойлеры. Читать можно подряд, а можно прыгнуть сразу в интересную часть. Сначала будет рассказ про сам Оберон, потом про то, как разваливался мой первоначальный план, потом про процессор и проверку границ, про браузер и лабораторные, про QEMU, Kubernetes и Cozystack, а в самом конце про языковую модель и про то, как всё это поставить себе.
Читать далееМы пишем инструкции и скиллы для ИИ-агентов, просим их проверять свою работу, запускаем отдельных агентов на код-ревью. Для важных изменений добавляем ещё одного проверяющего. Каждый такой запуск требует времени и токенов.
При этом замечание, которое агент нашёл однажды, он может пропустить при следующем ревью. Инструкцию можно дополнить, но проверяющему снова придётся прочитать код и решить, выполнено ли требование. Хочется сократить эту повторную работу и закрепить хотя бы часть требований проверками с явным критерием.
Например, если горутина должна завершаться после отмены операции, это поведение можно проверить тестом. Такой тест останется в проекте и будет проверять тот же сценарий при следующих изменениях. Агент сможет запустить его, получить диагностику и проверить исправление той же командой.
Такие автоматические проверки в этой статье я называю guardrails: они задают условия, которым должно соответствовать изменение кода перед принятием. Если проверка обнаруживает нарушение, изменение требует исправления.
В статье разберу, какие требования к Go-коду можно закрепить линтерами и тестами: от обработки ошибок до зависимостей между пакетами. Покажу, как убедиться, что проверка обнаруживает нужное нарушение, и что всё равно останется для ревью.
Статья рассчитана на Go-разработчиков, знакомых с тестами, контекстами, каналами и CI. Исходники, конфигурации и команды воспроизведения лежат в репозитории с примерами. Весь вывод команд получен на Go 1.27.1 и golangci-lint 2.13.2. Версии зафиксированы, чтобы у вас получился тот же вывод, что в статье.
Читать далееКлассическая модель построения центра мониторинга ИБ (Security Operations Center, SOC) обычно предполагает наличие одной централизованной системы класса Security Information and Event Management (SIEM-), в которую поступают события ИБ от всех значимых источников ИТ-инфраструктуры. На одной платформе выполняются их сбор, нормализация и корреляция, регистрация инцидентов ИБ и долговременное хранение данных. Это упрощает сопровождение решения и интеграцию с источниками, а также позволяет выстроить единые процессы работы SOC.
На практике крупные организации нередко одновременно эксплуатируют две или даже три SIEM-системы. При этом часть связанных задач можно объединять в одной платформе. Solar SIEM совмещает функции SIEM и SOAR и поддерживает цикл от обнаружения инцидента до автоматизированного реагирования. Почему компаниям все же нужны несколько платформ и когда такая архитектура оправдана – рассмотрим в этом материале.
Читать далееИгры на MacBook часто дёргаются даже при 100+ fps. Я записал, когда каждый кадр на самом деле появляется на экране, и дело оказалось не в нехватке мощности, а в том, как кадры ложатся на сетку экрана ProMotion. Разбор с замерами на MacBook Pro с M3 Pro, четыре подхода, которые не сработали, и тот, что сработал: 87 % ровных кадров против 18 %.
Читать далееВ сентябре 2026-го по миру разлетелись заголовки о том, что ученые смогли оцифровать мозг живого существа — мушки дрозофилы. Карту ее «мозга» выложили в общий доступ, и энтузиасты очень быстро превратили ее в игрушку: научили играть в Doom, Minecraft, собирать кубик Рубика и всячески издеваться и заставлять работать. От экспериментов с мухой не удержались и в MWS, о чем расскажу ниже.
Явление бесчисленных эксплуатаций цифровой мухи именовали флайслопом (FlySlop). Но проблема не в этом — стараниями журналистов многие люди решили, что мы действительно научились полностью переносить сознание в компьютер, и новая серия «Черного зеркала» уже не за горами. На самом деле не все так просто: ученым удалось только скопировать один из уровней работы мозга — карту нервной системы с нейронами и синаптическими соединениями. Но до полной функции сознания им еще очень и очень далеко.
Попробуем разобраться, на что действительно способна цифромуха, чего смогли добиться исследователи и случился ли прорыв в нейробиологии…
Читать далееПривет, Хабр! На связи Евгений, ведущий инженер отдела технического сопровождения РЕД АДМ. Особое место в сердце любого инженера занимает пилотирование, когда всё, что может пойти не по плану, «вылезает» в тестовой среде: ошибки, баги и мрачное наследие древних цивилизаций, успевших обосноваться в недрах домена.
Чтобы техноересь не попала в прод, мы отлавливаем её в тестовой среде. И сегодня я расскажу вам, как собрать песочницу для проведения ритуалов очищения пилотирования РЕД АДМ Промышленной редакции.
Читать далее
Классическая пирамида тестирования хорошо объясняет, каких тестов должно быть больше, а каких меньше. Любая проверка привязана к этапу разработки и к окружению, в котором она выполняется.
Читать далееКогда мы обсуждаем агентов для программирования, разговор быстро сводится к моделям. Какая модель Claude лучше пишет код, а какая версия GPT увереннее чинит ошибки, как Gemini работает с большим репозиторием. Но между моделью и рабочим деревом Git находится ещё один слой, от которого зависит, что агент вообще сможет сделать.
Этот слой — программная обвязка вокруг модели, которую принято называть harness. Он организует цикл работы агента: передаёт запрос модели, выполняет вызванные ею инструменты и возвращает результаты для следующего шага. Здесь же собирается контекст, применяются правки и сохраняются сессии. Модель может предложить правильное изменение, но не суметь применить его через неудобный инструмент редактирования. Может найти проблему, но потерять нужную информацию после сжатия контекста. Или потратить несколько ходов на задачу, которую подходящий инструмент выполнил бы за один вызов.
Интересный проект, который изменил традиционное устройство моделей — Pi. Это терминальный агент, который строит свой harness с нуля, а не надстраивается над готовым. Его автор, Mario Zechner, сознательно ограничил набор встроенных механизмов работы. Вместо попытки заранее предусмотреть все сценарии Pi предлагает основной инструментарий, который можно приспособить под себя. Oh My Pi вырос из этой основы, но выбрал другое направление: собрать больше решений в одном готовом агенте.
На примере этой пары удобно разобрать вопрос, который возникает почти у любого разработчика инструментария: сколько решений оставить пользователю, а сколько должен принять автор продукта?
Читать далееВ 1986 году Брюс Стерлинг публикует антологию «Зеркальные очки»[1], которую нарекают классикой киберпанка, «тем что вам надо о жанре». Вот только среди сияющего неона и глазных имплантов в нем можно было найти и рассказ о чудачествах Гуддини (а это почти сто лет назад как бы, а не в будущем) и реально кафкианскую повесть о том как неживая материя вдруг стала живой и составила конкуренцию мясным людям. Казалось бы — при чем тут это всё, но...
С вами @MorGott, и я изучил почти все, что есть в интернете, чтобы разобраться, что такое киберпанк на самом деле, как он появился и что с ним стало. И мы с подписчиками продолжаем разбираться в нем, погружаясь все глубже.
Глубина, я твойВсем привет, меня зовут Алина Акиншина, я гендиректор Онлайн Патента. За многолетнюю практику через нашу компанию прошли тысячи заявок на патенты. И промышленные образцы занимают в этом потоке особое место. К сожалению, это один из самых недооцененных (но при этом эффективных) инструментов защиты интеллектуальной собственности. О них сегодня я коротко расскажу.
Читать далееКогда я впервые начала использовать AI в работе, сценарий был довольно стандартным: открыть чат, вставить текст, сформулировать запрос, получить ответ — это удобно, но возможности довольно быстро упираются в потолок. Модель не знает контекст ваших проектов, не видит документацию и код, не понимает принятые в команде правила и каждый раз требует заново объяснять, что именно вы от нее хотите.
Следующим моим шагом стало собрать вокруг модели рабочую среду. В моем случае такой средой стал OpenCode. Хотя этот агент в первую очередь ассоциируется с разработкой, его можно использовать гораздо шире. По сути, это оболочка, в которой LLM получает доступ к файлам, инструкциям, локальным инструментам, API и MCP-серверам, а затем использует все это для решения задач конкретного пользователя.
Привет, Хабр! Я Арина, аналитик в Selectel. В этой статье я покажу не столько «как установить OpenCode», сколько как организовать вокруг него рабочее пространство, чтобы агент выдавал более стабильный результат и действительно снимал часть рутинной работы.
Читать далееПривет! Меня зовут Александр Каненков, я backend-разработчик в компании Домклик.
После перевода сервиса со второго Spring Boot на третий (а у кого-то уже и на четвёртый) мы с командой заметили следующую картину: HTTP-запрос журналируется с traceId, цепочка собирается в трейсе, но стоит сработать задаче Quartz — в журналах worker-потока гордо красуется [NoTrace, NoSpan]. Задача исполняется «в никуда» — без единого идентификатора, вне какого-либо трейса, и связать её с запросом, который её запланировал, невозможно.
Давайте разберём по шагам, почему это случилось и как починить так, чтобы работало и с RAM (in-memory), и с JDBC job store.
Читать далееНа днях я писал здесь, как держу сотни Telegram‑ботов в одном процессе Node.js. Статью прочитали почти 6 тысяч человек, и это приятно. Но есть одна вещь, про которую я там промолчал: продукт пока никто не покупает.
Код я умею писать, замерять и чинить. А клиентов начал искать только неделю назад, и с этим пока сильно хуже. Расскажу, что пробовал, что из этого вышло и куда двигаюсь дальше.
Читать далееОткройте форму заказа почти любого интернет-магазина. Под полями две-три галочки: согласие на обработку персональных данных, согласие на рассылку, согласие с офертой. Пока все не отмечены, кнопка «Оплатить» серая. Спросите, зачем так, и ответ почти всегда будет один: юрист сказал, что без согласия нельзя, а лишнее согласие точно не повредит.
Тогда встречный вопрос: на каком основании магазин будет доставлять заказ, если покупатель отзовёт согласие на следующий день? Правильный ответ - на основании договора купли-продажи. И сразу непонятно, зачем было согласие.
Главное: согласие - лишь одно из оснований обработки, причём самое хрупкое, потому что человек может отозвать его в любой момент. Если ваш процесс держится только на согласии, он держится на честном слове клиента.
Каталог всех оснований мы уже разбирали в отдельной статье. А теперь о другом: почему бизнес собирает согласия там, где они не нужны, и во что ему это обходится.
Читать далееЯ расскажу и расставлю акценты, которые гораздо важнее красивого лендинга, языка программирования, модной архитектуры и красивого кода. Акценты, которые позволят тебе раскрутить сервис и занять стабильное место на рынке.
Читать далееРаньше я начинал учить английские слова и постоянно бросал это дело.
Находил новый способ, занимался им какое-то время, а потом появлялись дела, работа, не хватало времени, и я снова всё забрасывал.
Но полтора года назад всё изменилось: с того момента я выучил 623 слова почти не тратя на это время. Без силы воли, дисциплины и изменения привычного образа жизни.
В этой статье расскажу, как учить слова, когда вообще нет времени. И больше никогда это не бросать.
Читать далееХаотичная IP‑адресация редко мешает сети на старте, но со временем превращается в проблему: появляются пересечения подсетей, сложная маршрутизация и зависимость от знаний отдельных инженеров. В статье разбираем, как выстроить адресный план, который позволит инфраструктуре масштабироваться без постоянных переделок.
Разобраться в темеСи отлично работает на микроконтроллерах и никуда не исчезает. Но часть правил, которые в Си держатся на архитектуре проекта и дисциплине разработчика, в Rust можно выразить так, чтобы их проверял компилятор.
Разберём это на DMA, владении периферией, состояниях GPIO, прерываниях и unsafe — без попытки доказать, что Rust должен заменить Си.
Читать далееПредставим распределённую инфраструктуру в разных регионах. Между площадками есть VPN: он даёт связность и защищает трафик. Каждый час нужно передать бэкап объёмом 50 GB и развернуть его в другом регионе.
Чтобы уложиться в час, нужна стабильная полезная скорость. Но после запуска cronjob оказывается, что передача идёт заметно медленнее: RTT около 30 ms, иногда теряются пакеты, а бэкап не успевает скачаться даже за пару часов. Рассмотрим, что с этим можно сделать из разряда минимум действий, максимум пользы.
Читать далееРабочий день закончился. Вы доделываете свои дела, и тут руководитель просит вас подготовить сложный отчёт: «Срочно, никто кроме тебя не сделает. Успеешь за час?».
Вы уже не раз выручали, и это стало нормой.
Разбираем кейс о психологической безопасности и трудных диалогах.
Читать далее