Сборщик RSS-лент

[Перевод] Проектируем с нуля калькулятор на FPGA. Часть 8: От платы разработки до реального устройства

Habr.com - ср, 07/22/2026 - 10:52

← Седьмая часть

В предыдущем посте я писал о микрокоде и слое скриптинга. На этом этапе калькулятор почти полностью существовал только в ПО: в виде десктопного Qt-приложения, выполняющего симуляцию, или в виде страницы с WebAssembly в браузере. Это удобная среда для разработки и демонстрации, но это не калькулятор. Калькулятор должен лежать на столе, его можно взять и постучать по кнопкам.

Сегодня мы поговорим об этом этапе (за исключением издевательств над кнопками).

Читать далее

Почему современное SI/PI-моделирование не заканчивается на печатной плате?

Habr.com - ср, 07/22/2026 - 10:30

Все привыкли считать, что SI/PI-моделирование — это импеданс, S-параметры дорожек и IBIS-модель. Но что, если именно здесь большинство инженеров и допускает главную ошибку? Печатная плата — лишь небольшая часть реального канала передачи сигнала.

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

Читать далее

Не строить, а арендовать: пентест, VM и багбаунти как сервис

Habr.com - ср, 07/22/2026 - 10:30

Не обязательно поднимать все своими руками. Разбираем три сервисные модели - пентест как сервис, VM как сервис и багбаунти, - когда какая выгоднее и где подводные камни. Заодно про взрывной рост российского багбаунти: почти 14 тысяч отчетов об уязвимостях и около 260 млн рублей выплат за 2025 год.

Читать далее

Самообучающийся ИИ-агент Hermes: что умеет и как запустить его на сервере

Habr.com - ср, 07/22/2026 - 10:01

Всем привет!

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

Hermes Agent от Nous Research - это уже другой случай. Он сохраняет важные факты, ищет информацию в предыдущих диалогах, превращает удачные способы решения задач в навыки и использует их в дальнейшем. При этом, что довольно удобно, агент может работать и принимать сообщения из Telegram!

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

Читать далее

Построчное шифрование для хранения в репозитории

Habr.com - ср, 07/22/2026 - 09:33

Как хранить зашифрованный файл в репозитории Git или другой системы контроля версий? Если изменение одной строчки содержимого будет (из-за шифрования) менять весь файл целиком или значительную его часть - это портит весь подход системы контроля версий - хранение изменений "фрагментами". Значит хорошо бы шифровать "куски" - например, строки - по-отдельности, независимо.

Здесь описывается простенький рецепт для этого подхода - в духе "соль + пароль и от них взять хэш в качестве ключа". Большая же часть текста имеет несколько "дидактический" характер - обсуждение мотивации для такой задачи, границ применимости - а также напоминания и пояснения базовых соображений по криптографии - поэтому заранее приносим извинения тем читателям для кого эта информация тривиальна.

Читать далее

187 064 инструкции ради одного флага: Разбор HTB Callfuscated (Insane)

Habr.com - ср, 07/22/2026 - 08:30

Что делать, если статический анализ crackme выдает 187 064 инструкции мусорного кода? Идти в динамику! В этой статье разбираем таск Callfuscated с HTB: пишем свой ptrace-трассировщик, создаем валидируемый x86-64 эмулятор на Python, снимаем дампы памяти и сводим сложную VM-обфускацию к арифметике первого курса.

Прочитать решение

Корпоративный ИИ за $10 млн отмел статью Q1. И он оказался прав — но не так, как он думал

Habr.com - ср, 07/22/2026 - 07:00

1. История

Корпоративная модель ИИ за $10 млн. дала негативный отзыв на недавно опубликованную статью:

[1] Vladimirov, V.V. (2026). An additional degree of freedom in the processes of self-organized criticality with violation of causality. Chaos, Solitons & Fractals, 208, 118186.

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

·        ИИ не видит структуру там, где она не выражена в данных

Современные LLM обучены на текстах, которые описывают уже известные паттерны. Статья — о том, как обнаружить новую структуру (гиперболическое пространство, солитон, дополнительную степень свободы), а ИИ не может «увидеть» структуру, которой нет в его обучающей выборке. Он может только распознавать известные паттерны. Это называется иллюзией компетенции — ИИ создаёт впечатление понимания, но на самом деле он просто перекомбинирует известное.

·        ИИ не понимает невыпуклость и обусловленность

Градиентный спуск в невыпуклых ландшафтах страдает от плохой обусловленности матриц весов. Число обусловленности (v) — это прямой индикатор этой проблемы. Корпоративный ИИ, обученный на «best practices», не видит ценности в том, чтобы отслеживать v, потому что в стандартных подходах (Adam, BatchNorm) эту проблему пытаются маскировать, а не решать фундаментально.

Ирония в том, что исследования подтверждают наличие самоорганизованной критичности в обучении нейросетей. Нейросети действительно эволюционируют к критическому состоянию. Статья [1] предлагает способ диагностировать это состояние через (u, v). А корпоративный ИИ просто не знает, что такая диагностика возможна.

Читать далее

«Зачем Javasript-у DI контейнер?»

Habr.com - ср, 07/22/2026 - 02:22

Вот именно такой вопрос был задан в первом же комментарии к статье "DI-контейнер на чистом JavaScript без TypeScript и reflect-metadata" уважаемого @alexander_kubarski. Я когда-то и сам на Хабре отвечал на этот вопрос ("Зачем нужно внедрение зависимостей в JS"), и уважаемый @Wroud тоже ("Dependency Injection в JavaScript: зачем он вам нужен"), но непонимание места и значения DI у JS-разработчиков всё равно присутствует. Попробую ответить на этот вопрос ещё раз:

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

Именно для этого используют Inversion of Control в целом и Dependency Injection в частности - во всех языках программирования, а не только в JavaScript.

Чуть подробнее...

Не дали ИИ-агенту соврать — его же памятью

Habr.com - ср, 07/22/2026 - 02:21

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

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

Хватай за цифровой хвост

WAIC 2026: главные анонсы и почему Китай превращает искусственный интеллект в национальную инфраструктуру

Habr.com - ср, 07/22/2026 - 00:47

Мировой ИИ-ландшафт окончательно разделился на две параллельные экосистемы. Прошедшая в Шанхае конференция World Artificial Intelligence Conference (WAIC) 2026 зафиксировала фундаментальный сдвиг: индустрия завершила экстенсивную гонку параметров языковых моделей и перешла к этапу жесткой инженерной прагматики.

Пока западные корпорации выстраивают закрытые монополии вокруг проприетарных API, Китай делает ставку на агрессивный open source, агентные операционные системы и суверенные вычислительные кластеры, способные масштабироваться до сотен тысяч ускорителей в условиях санкционных ограничений. В этом материале мы детально разбираем аппаратные и программные итоги выставки — от альтернативных интерконнектов Huawei до VLA-моделей в промышленной робототехнике — и объясняем, почему главным продуктом WAIC 2026 стала не очередная нейросеть, а полностью независимый национальный технологический стек.

Читать далее

Итак, я написал MCP…

Habr.com - ср, 07/22/2026 - 00:23

Мне просто стало скучно, и я решил посмотреть на разработку MCP , используя только Go.

Никаких “революционных продуктовых инсайтов”. Просто захотелось сделать агенту в Windsurf память по моим локальным проектам и браузерные руки без тащащегося за хвостом Node.js. Получилось два инструмента: GnostisMCP (семантический поиск кода) и KlyxarMCP (браузерная автоматизация в одном бинарнике).

Похихикать...

Иллюзия всезнания: как искусственный интеллект меняет правила принятия управленческих решений

Habr.com - ср, 07/22/2026 - 00:14

На днях мы ознакомились с публикацией на сайте Всемирного экономического форума (https://www.weforum.org/stories/artificial-intelligence/how-ai-is-reshaping-strategic-foresight-and-global-power/), которая навела нашу редакцию на размышления об эволюции процесса долгосрочного прогнозирования. Искусственный интеллект (далее – ИИ) окончательно перестал быть просто модным веянием, превратившись в мощнейший инструмент геополитического влияния. Главной ценностью прочитанной мной статьи является четкий прикладной фокус без излишней абстрактной философии. Разработчики теперь определяют завтрашнее мироустройство не хуже, чем государственные ведомства. В данном обзоре мы структурировали ключевые тезисы, дополнив идеи статьи свежими статистическими отчетами первого полугодия 2026 года.

Читать далее

Бесшовный роуминг (Mesh) без переплаты: Xiaomi AX6S с OpenWrt и Mercusys — Wi‑Fi 7, 6 ГГц и шириной канала в 320 МГц

Habr.com - вт, 07/21/2026 - 23:55

Как получить три точки доступа с каскадным проводным бесшовным роумингом WiFi7 и общей LAN задёшево? Готовые Mesh-комплекты с Wi‑Fi 7 и диапазоном 6 ГГц начинаются примерно от 100 тысяч рублей, поэтому я собрал сеть из трёх самых дешёвых устройств в своём классе: Xiaomi Redmi AX6S на OpenWrt в роли маршрутизатора и Mesh-контроллера, Mercusys MR60X для покрытия Wi‑Fi 6 и Mercusys MR47BE ради Wi‑Fi 7, 6 ГГц, WPA3-SAE и канала 320 МГц.

Что получилось:

один SSID на трёх устройствах, обе точки Mercusys подключены по Ethernet EasyMesh-контроллером;

контроллер — собранный мной пакет prplmesh для OpenWrt 25.12 (APK и патчи опубликованы);

около 900 Мбит/с на проводном участке и столько же по воздуху;

после перезагрузок сеть восстанавливается сама.

возможность реализации горячего резерва двух провайдеров, SPLIT VPN и прочие прелести открытого кода

Как это собрано и сколько стоит →

MAP-Elites: как искать не «лучшее», а «лучшее в каждой нише»

Habr.com - вт, 07/21/2026 - 23:28

MAP-Elites: лучший в каждой нише

Классическая оптимизация ищет один максимум. Но в робототехнике, генерации уровней и инженерии нужен набор разнообразных хороших решений — библиотека походок под разные поломки, уровни любой сложности, фронт компромиссов.

Это Quality-Diversity. MAP-Elites (2015, arXiv:1504.04909) — простейший алгоритм.

Идея: делим пространство поведений на сетку ниш. В каждой нише храним одно лучшее решение. Генотип мутируем, поведенческий дескриптор (высота шага, энергия) — для адресации ячейки.

Алгоритм:

Пустой архив.

Случайная популяция → оценить fitness и дескриптор → в ячейку (если лучше).

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

Никакого отбора между нишами — только внутри. Это даёт карту всего пространства, а не одну точку.

Код:

```

import numpy as np

# Задача: найти x, y в [-5, 5], максимизируя fitness, ниши определяются по (x, y)

BOUNDS = (-5.0, 5.0)

GRID_SIZE = 20 # число ячеек по каждой оси behavior space

N_ITERATIONS = 5000

MUTATION_SIGMA = 0.2

def fitness(genome):

x, y = genome

# произвольная многомодальная функция для иллюстрации

return -(x**2 + y**2) + 5 np.sin(3 * x) np.cos(3 * y)

def behavior_descriptor(genome):

# в этой игрушечной задаче поведенческий дескриптoр совпадает с генотипом,

# в реальных задачах это обычно совсем другое пространство признаков

return genome

def to_cell(bd):

lo, hi = BOUNDS

idx = ((bd - lo) / (hi - lo) * GRID_SIZE).astype(int)

return tuple(np.clip(idx, 0, GRID_SIZE - 1))

def random_genome():

return np.random.uniform(*BOUNDS, size=2)

def mutate(genome):

child = genome + np.random.normal(0, MUTATION_SIGMA, size=genome.shape)

return np.clip(child, *BOUNDS)

# 1) инициализация случайными решениями

for _ in range(200):

g = random_genome()

f = fitness(g)

cell = to_cell(behavior_descriptor(g))

if cell not in archive or f > archive[cell][1]:

archive[cell] = (g, f)

Вывод: 379 / 400, лучшее (0.527, 0.005), fitness 4.72.

Почему не 400? Три причины:

200 случайных точек не покрывают все ячейки (эффект корзин).

Мутация локальна (σ=0.2). До пустой ячейки без занятых соседей не допрыгнуть — изоляция ниш.

В реальности часть пространства физически недостижима (напр, походка с нулевой энергией и высоким шагом).

Сложность

M — число ячеек в архиве (произведение числа делений по каждому измерению множества поведений), T — число итераций (эволюционных поколений/оценок), D — размерность генотипа, E — стоимость одной оценки решения (симуляция/вычисление приспособленности).

По времени: каждая итерация - это выбор случайного родителя за O(1) (при хранении в виде массива/словаря), мутация за O(D), вычисление дексриптора и приспособленности — доминирующая часть, O(E), и вставка/сравнение в ячейке за O(1). Итого на все итерации - O(T·(D + E))

Вывод: MAP-Elites даёт не "оптимум", а карту компромиссов. Ценятся не проценты заполнения, а покрытие достижимых ниш и разнообразие поведений.

Итог: простой, линейный по числу оценок, даёт инженеру не одну точку, а весь фронт возможностей.

Читать далее

Spring Security: дополнение к JWT токенам

Habr.com - вт, 07/21/2026 - 23:23

Всех приветствую!

Данная статья будет посвящена довольно важным вещам, таким как: refreshtoken, метод-уровневой безопасности и примеру реализации правила "свой/чужой профиль"

Читать далее

MAP‑Elites: как искать не «лучшее», а «лучшее в каждой нише»

Habr.com - вт, 07/21/2026 - 23:09

Проблема, которую не решает обычная оптимизация

Классические методы оптимизации — градиентный спуск, генетические алгоритмы с элитизмом, CMA‑ES — заточены под одну вещь: найти один глобальный максимум функции приспособленности. Всё остальное население на пути к этому максимуму считается расходным материалом и отбрасывается.

Но во многих задачах нас интересует не единственное решение, а набор разнообразных хороших решений:

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

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

Дизайн и инженерия. Инженеру интересно увидеть весь фронт компромиссов (вес vs прочность vs стоимость), а не одну точку.

Открытые (так называемый open‑ended) эволюционные системы, где само понятие «лучшего» плохо определено, а интересна широта поведенческого репертуара.

Это направление получило название Quality‑Diversity (QD) оптимизации: цель — не максимизировать один скаляр, а заполнить пространство возможных поведений решениями, каждое из которых максимально хорошо в своей поведенческой нише.

MAP‑Elites — один из первых и самый концептуально простой алгоритм этого семейства.

Идея алгоритма

MAP‑Elites (Multi‑dimensional Archive of Phenotypic Elites) был предложен в 2015 году.

Читать далее

[Перевод] Структура, скрытая за написанием текста языковыми моделями

Habr.com - вт, 07/21/2026 - 22:34

Языковые модели генерируют текст, следуя скрытым грамматическим правилам, или грамматика - просто побочный эффект предсказания следующего слова?

Этот вопрос увлёк меня почти на два года исследований.

Читать далее

ML‑пайплайн как конечный автомат: от данных до аудита решений

Habr.com - вт, 07/21/2026 - 22:30

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

В статье разберём, как выстроить воспроизводимый ML‑пайплайн с контролем данных, версий и состояний, чтобы решения модели можно было восстановить, проверить и обосновать.

Разобрать пайплайн

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

Habr.com - вт, 07/21/2026 - 22:26

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

Иногда вместо обычных лекций он приглашал своих бывших студентов, уже работавших в в самых разных сферах.

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

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

Тогда меня поразило не столько само техническое решение, сколько мысль о том, что достаточно абстрактные математические методы способны заменить сложные и дорогостоящие инженерные конструкции.

Читать далее

Плодитесь и размножайтесь. Эволюция как основа геймплея в компьютерных играх

Habr.com - вт, 07/21/2026 - 22:08

Думаю, один из самых завораживающих и интересных феноменов, о котором я узнал именно с Хабра — это клеточные автоматы. О Джоне Конвее и его игре «Жизнь» я впервые прочитал в переводной статье уважаемого @SLY_G «Джон Хортон Конвей: Жизнь, как игра», а среди авторских материалов мне запомнились «Наша Вселенная — симуляция на основе большого клеточного автомата?», которую мне довелось прочитать, будучи в жюри конкурса «Технотекст», «Простейшие клеточные автоматы и их практическое применение» уважаемого @oshibka404 и, наконец, блестяще иллюстрированная алгоритмическая работа «Эволюционирующие клеточные автоматы» уважаемого @xcont. Эти статьи натолкнули меня на размышления о том, почему биологическая (дарвиновская) эволюция не слишком популярна в качестве источника сюжетов для компьютерных игр. Если как следует поискать, такие игры всё-таки существуют (пусть многие из них и напоминают образовательные пет-проекты), но мейнстримом они определённо не стали. Под катом попробую рассмотреть, так ли интересно играть в эволюцию и не слишком ли фаталистична и сложна эта тема в качестве развлекательной.

Читать далее

Сейчас на сайте

Сейчас на сайте 0 пользователей и 2 гостя.
Ленты новостей