Hacker News Digest

По неделям: Неделя 34, 2025

Posts: 12

FFmpeg Assembly Language Lessons (github.com)

FFmpeg/asm-lessons — репозиторий с уроками по ассемблеру для FFmpeg.
Цель: научиться писать высокопроизводительные рутины на x86-64, ARM и других архитектурах, ориентированные на мультимедиа-задачи.

Содержание (кратко):

  • Уроки: от базовых инструкций до векторных расширений (SSE/AVX, NEON).
  • Примеры: реализация IDCT, фильтров, цветового преобразования.
  • Тесты: юнит-тесты и бенчмарки для сравнения C vs asm.
  • CI: автоматическая проверка на x86-64 и ARM через GitHub Actions.

Как начать:

  1. Клонируйте репо.
  2. Установите nasm, yasm или llvm-mingw.
  3. Соберите пример: make lesson01.

Полезные ссылки:

by flykespice • 18 августа 2025 г. в 13:39 • 82 points

ОригиналHN

#ffmpeg#assembly#x86-64#arm#sse#avx#neon#nasm#llvm#multimedia

Комментарии (18)

  • Участники восхищаются масштабом и экономией вычислений, которую даёт даже небольшое улучшение в FFMPEG.
  • Обсуждают, как находят узкие места в сгенерированном компилятором коде, и возможность писать оптимизации вручную на LLVM IR вместо ассемблера.
  • Интересуются, как обеспечивают переносимость ассемблерных инструкций: оказывается, для каждой архитектуры пишут отдельную ручную версию, а есть и обобщённая C-заглушка.
  • Отмечают «серьёзное злоупотребление» макропроцессором NASM и сомневаются в необходимости от него отказываться.
  • Сожалеют, что у FFMPEG нет «нормального» API, а вместо него приходится изучать почти собственный язык командной строки.

When you're asking AI chatbots for answers, they're data-mining you (theregister.com)

  • Security: киберпреступность, патчи, исследования, CSO
  • Off-Prem: edge + IoT, канал, PaaS/IaaS, SaaS
  • On-Prem: системы, хранение, сети, HPC, персональные технологии, CxO, госсектор
  • Software: ИИ + ML, приложения, БД, DevOps, ОС, виртуализация
  • Offbeat: дебаты, колонки, наука, юмор, юр. новости, блоги
  • Спецпроекты: месяц облачной инфраструктуры, сети ЦОД, хранение, европейские суперкомпьютеры, ИИ-инфраструктура, RSAC, разработка ИИ, аварийное восстановление, GTC Nvidia, ransomware, будущее ЦОД, кибербезопасность, VMware Explore
  • Vendor Voice: Siemens + AWS, Mendix + AWS, финансовые потоки, BigQuery, AWS Global Partner Security, GE Vernova
  • Ресурсы: whitepapers, вебинары, рассылки

by rntn • 18 августа 2025 г. в 11:58 • 92 points

ОригиналHN

#llm#machine-learning#cloud#privacy#aws#bigquery#lm-studio#oobabooga#qwen

Комментарии (42)

  • Любые данные, отправленные в облачные ИИ-сервисы, навсегда уходят из-под вашего контроля и могут быть использованы против вас, в том числе в суде.
  • Пользователи осознают эту «плату» в виде конфиденциальности, но считают удобство сервисов оправданным.
  • Компании обещают «не использовать» личные данные, но формулировки оставляют лазейки, а данные всё равно сохраняются.
  • Выход — локальные модели (LM Studio, Oobabooga, Qwen и др.), которые запускаются на домашнем железе и не отправляют наружу ни запросов, ни контекста.

LLMs and coding agents are a security nightmare (garymarcus.substack.com)

by flail • 18 августа 2025 г. в 11:04 • 116 points

ОригиналHN

#llm#security#prompt-injection#development#environment-variables

Комментарии (60)

  • RRT-манифест: не использовать LLM в критичных местах, жёстко ограничивать права и отслеживать входы/выходы.
  • Основная боль: даже опытные разработчики пропускают AI-генерированные уязвимости из-за спешки и усталости ревьюеров.
  • Локальные модели и отсутствие .env-секретов снижают риск утечки, но не решают проблему полностью.
  • Разделение «системных» и «пользовательских» инструкций пока ненадёжно, поэтому prompt-injection остаётся.
  • Сторонники сравнивают LLM с автопилотом: ошибки будут, но, возможно, меньше человеческих; критики считают это оправданием поспешного внедрения.

Website is served from nine Neovim buffers on my old ThinkPad (vim.gabornyeki.com)

Кратко: плагин nvim-web-server на чистом Lua отдаёт HTTP-запросы прямо из открытых буферов Neovim, без внешних зависимостей, с нативной поддержкой Djot и быстрее Nginx.

Почему так быстро?

  • Однозадачность: только статика.
  • libuv + асинхронный I/O Neovim.
  • LuaJIT: NaN-тегинг, отсутствие boxing чисел, allocation sinking.
  • aiohttp тормозит из-за парсера на чистом Python и boxing в CPython.

Бенчмарк, RPS (среднее):

сервер 1 50 100 200 400
nvim-web-server 3981 15284 15124 14476 14446
Nginx 4451 11306 11576 10011 10461
aiohttp 6391 8477 8448 7696 7132

Развёртывание: живёт на старом ThinkPad, 9 буферов — весь сайт.

Безопасность: да, но мелочи мы игнорируем.

by todsacerdoti • 18 августа 2025 г. в 11:03 • 99 points

ОригиналHN

#neovim#lua#lua-jit#libuv#http#web-server#aiohttp#nginx#benchmarks#linode

Комментарии (17)

  • Пользователи в восторге от статьи: называют её «одной из любимейших» и приводят цитату «они были так заняты тем, могут ли, что не спросили себя, стоит ли».
  • Кто-то отмечает, что сайт резолвится на IP Linode, но не объясняется, зачем нужен промежуточный сервер.
  • Обсуждают безопасность: пример показывает, что «никогда не бывает так, чтобы код точно не запустили по сети».
  • Некоторые шутят, что Neovim теперь можно считать кроссплатформенным рантаймом «ужаса», но признают крутость эксперимента.
  • Предполагают, что высокая скорость может быть из-за хранения файлов в RAM, а не на диске, и что всё равно всё закешируется.

MCP doesn't need tools, it needs code (lucumr.pocoo.org)

CLI-инструменты часто зависят от платформы/версии, плохо документированы и ломаются при не-ASCII вводе. Агенты путаются в управлении состоянием (например, tmux-сессиями) и теряют контекст после мелкой ошибки. Каждый вызов ещё тормозит из-за предварительной проверки безопасности.

Композиция в CLI работает через bash: цепочки tmux send-keys, sleep, base64 и т.д. MCP сегодня так не умеет.

Выход — MCP-сервер с одним «убер-инструментом»: Python-интерпретатор, сохраняющий состояние между вызовами. Пример — pexpect-mcp: виртуальное окружение + pexpect, позволяющее скриптами управлять интерактивными CLI-программами. Вместо 30 отдельных MCP-функций достаточно одной, принимающей код.

by the_mitsuhiko • 18 августа 2025 г. в 09:53 • 127 points

ОригиналHN

#python#bash#tmux#pexpect#cli#http#websockets#api#llm#security

Комментарии (79)

  • Участники критикуют MCP как «ограничитель» вместо «суперсилы»: набор фиксированных инструментов сужает возможности LLM.
  • Предлагаются альтернативы: прямое обращение к HTTP/CLI/WebSocket-эндпоинтам, eval() в песочнице, либо отказ от MCP в пользу обычных API.
  • Основные жалобы — низкая безопасность (потенциальный RCE), плохая масштабируемость (30+ инструментов путают модель) и отсутствие формального стандарта.
  • Часть комментаторов считает MCP лишь «хорошо структурированным промптом» и предлагает использовать суб-агентов или динамически подгружаемые наборы инструментов.

Electromechanical reshaping, an alternative to laser eye surgery (medicalxpress.com)

Безлазерная альтернатива LASIK: имплантация линзы EVO/ICL

  • Что это: вместо выпаривания роговицы лазером в глаз вводится тонкая факичная линза EVO/ICL, которая работает вместе с собственной хрусталиком пациента.
  • Преимущества:
    – подходит при тонкой роговице и высокой близорукости;
    – сохраняется возможность «отката» (линзу можно извлечь);
    – быстрая реабилитация (чёткое зрение уже на следующий день).
  • Риски: повышенное внутриглазное давление, катаракта, световые ореолы; требуется регулярное наблюдение.
  • Стоимость: 2500–4000 $ за глаз, страховки не покрывают.
  • Кому не подходит: при астигматизме > 6 дптр, глаукоме, возраст < 21 года.

by Gaishan • 18 августа 2025 г. в 09:35 • 128 points

ОригиналHN

#medical#ophthalmology#medical-procedure#lasik#eye-surgery#medical-implant#healthcare

Комментарии (59)

  • Участники обсуждают новый метод «молекулярной хирургии» глаза, который обещает менее травматичную альтернативу LASIK/PRK/SMILE.
  • Основная надежда — избежать разрезания нервов роговицы и связанных с этим сухости, ореолов и бликов.
  • Многие интересуются, подойдёт ли метод при астигматизме, тонкой роговице или пресбиопии; пока ответов нет.
  • Возможность обратимости и индивидуальное изготовление «платиновой линзы» вызывают вопросы.
  • Участники сравнивают процедуру с ортокератологией и брекетами для зубов, но ждут менее пугающего названия.

Web apps in a single, portable, self-updating, vanilla HTML file (hyperclay.com) 🔥 Горячее 💬 Длинная дискуссия

Hyperclay — однофайловые HTML-приложения
Работайте как с глиной: открыли файл, изменили — изменения сохранились. Без сборки, деплоя и фреймворков.

  • Прямое редактирование в браузере: меняете DOM — файл перезаписывает себя через /save.
  • Полная переносимость: скачали HTML — запустили где угодно, офлайн.
  • Версии: каждое сохранение фиксируется, откат в один клик.

Примеры: dev-log, writer, kanban, landing.

Почему это важно

Статические сайты удобны, но изменения исчезают после перезагрузки. Чтобы сделать цифровой объект «физическим» — нужен сервер, БД, API, аккаунты. Hyperclay убирает всё лишнее: UI, логика и данные — в одном самомодифицирующемся HTML-документе.

by pil0u • 18 августа 2025 г. в 06:38 • 442 points

ОригиналHN

#html#javascript#nodejs#web-applications#single-file-applications#offline-applications#dom-manipulation#web-development

Комментарии (151)

  • Hyperclay — это NodeJS-сервер + JS-библиотека, которая позволяет странице «сохранять себя»: после изменений DOM сериализуется и перезаписывает исходный .html-файл.
  • Идея вызывает ассоциации с TiddlyWiki, Webstrates и даже HTA-архивами Windows 98, но Hyperclay ориентирован на многопользовательскую работу и серверную персистентность.
  • Участники обсуждают проблемы: CORS при открытии файла по file://, необходимость сервера, закрытость кода, отсутствие цен и 404-ошибки на сайте.
  • Появились самодельные однофайловые решения: игры, шифровальщики, твиттер-клон, которые сохраняют состояние прямо в HTML и отдают его на скачивание.
  • Общий запрос — сделать такие «живые» HTML-приложения полностью автономными: двойной клик и работает без сервера, но пока мешают ограничения браузеров и безопасность.

SystemD Service Hardening (roguesecurity.dev)

systemd-харднинг: кратко и по делу

sudo systemd-analyze security показывает «красную» таблицу рисков.
sudo systemd-analyze security имя.service — детально по конкретному юниту.

Колонка Exposure — главный ориентир: чем выше значение, тем больше прав можно отнять.

Как править

  1. sudo systemctl edit имя.service создаст override-файл.
  2. Параметры пишутся в секции [Service] (или [Container] для quadlet).
  3. Сервис не стартует — значит убрал нужное, возвращай.

Часто используемые директивы

Директива Что делает
NoNewPrivileges=true запрет setuid/setgid
PrivateTmp=true изолированный /tmp
ProtectSystem=strict корень только read-only
ProtectHome=true /home, /root недоступны
ReadWritePaths=/var/lib/app белый список для записи
CapabilityBoundingSet=CAP_NET_BIND_SERVICE только нужные capability
SystemCallFilter=@system-service разрешённый набор сисколлов
RestrictAddressFamilies=AF_INET AF_INET6 только нужные семейства сокетов
MemoryDenyWriteExecute=true блок W^X
LockPersonality=true запрет смены personality()
RestrictRealtime=true нельзя захватывать realtime-приоритеты
UMask=0077 файлы создаются 600
RemoveIPC=true чистит SysV IPC при выходе

Пример override

[Service]
NoNewPrivileges=true
PrivateTmp=true
ProtectSystem=strict
ProtectHome=true
ReadWritePaths=/var/lib/myapp
CapabilityBoundingSet=CAP_NET_BIND_SERVICE
SystemCallFilter=@system-service
RestrictAddressFamilies=AF_INET AF_INET6
MemoryDenyWriteExecute=true
LockPersonality=true
RestrictRealtime=true
UMask=0077
RemoveIPC=true

Проверь: sudo systemctl daemon-reload && sudo systemctl restart имя.service.

Это не серебряная пуля; подгоняй под каждый сервис и смотри логи.

by todsacerdoti • 18 августа 2025 г. в 04:57 • 158 points

ОригиналHN

#systemd#security#linux#hardening#configuration#sysadmin

Комментарии (62)

  • Участники хвалят статью за конкретные советы по харднингу systemd и ссылаются на утилиту shh, которая автоматически подбирает параметры защиты через strace-профилирование.
  • Предложено создать репозиторий с готовыми «жёсткими» unit-файлами для популярных сервисов, но подчёркивают, что придётся часто ослаблять ограничения из-за «крайних» кейсов.
  • Несколько человек отмечают полезность systemd-analyze security и встроенного механизма credentials, который безопаснее переменных окружения.
  • Спор о том, кто должен писать защищённые unit-файлы: разработчики, мейнтейнеры или пользователи; упоминается опыт Fedora и Ubuntu.
  • Популярный офтоп: правильное написание «systemd» (строчными), а не «SystemD».

Google admits anti-competitive conduct involving Google Search in Australia (accc.gov.au) 🔥 Горячее 💬 Длинная дискуссия

Google признал антиконкурентное поведение в Австралии:

  • компания согласилась, что ограничивала выбор поисковой системы на Android-устройствах;
  • подписала обязательство перед ACCC изменить практику и уведомлять пользователей о доступных альтернативах Google Search;
  • обязательство действует 5 лет и подлежит судебному контролю;
  • ACCC считает признание важным шагом к восстановлению конкуренции.

by Improvement • 18 августа 2025 г. в 02:54 • 266 points

ОригиналHN

#google#android#competition-law#search-engines#accc

Комментарии (165)

  • Google заплатила Telstra, Optus и TPG, чтобы быть единственным предустановленным поиском на Android-смартфонах в Австралии с декабря 2019 по март 2021.
  • Участники сделки получили долю от рекламной выручки Google; регулятор назвал это антиконкурентным и оштрафовал Google на 55 млн AUD.
  • Комментаторы считают штраф «карманными деньгами» и требуют наказывать процентом от глобального дохода или привлекать к уголовной ответственности.
  • Многие отмечают, что Telstra, Optus и TPG тоже должны быть оштрафованы как сознательные участники схемы.
  • Некоторые пользователи уже перешли на DuckDuckGo, Kagi и другие поисковики, но большинство остаётся «запертым» в экосистеме Google.

Non-Uniform Memory Access (NUMA) is reshaping microservice placement (codemia.io)

Codemia
Подготовка к систем-дизайн-интервью через практику:
Начать | Блог | Системный дизайн

Юридика
Условия | Конфиденциальность | Контакт

Соцсети
Twitter | LinkedIn

by signa11 • 18 августа 2025 г. в 01:40 • 78 points

ОригиналHN

#numa#microservices#hpc#aws#gcp#kubernetes#linux

Комментарии (24)

  • Обсуждение подтверждает: для HPC, высоконагруженных и чувствительных к задержкам систем NUMA-распределение критично, и ручное pinning процессов/потоков к нужным узлам остаётся основным способом добиться стабильной производительности.
  • В публичных облаках (AWS, GCP) NUMA-топология скрыта, VM часто выглядят как однонодовые UMA; полезны lscpu, lstopo, cpu-latency, но настроек управления NUMA почти нет.
  • Сообщество делится инструментами: mpibind, sched_ext, DAMON, fake NUMA, идеями эмуляции NUMA даже на Raspberry Pi 5.
  • Kubernetes уже умеет NUMA-affinity, но вручную выбирать 64-ядерный инстанс вместо 96-ядерного (чтобы не пересекать сокеты) всё равно приходится самим.
  • Крайняя альтернатива — односокетные серверы с NPS=1: «равномерно медленно», но без головной боли.

Mangle – a language for deductive database programming (github.com)

Mangle — проект Google на GitHub.
Язык: Go.
Лицензия: Apache-2.0.

Описание
Mangle — это компилятор/интерпретатор логического языка, ориентированного на:

  • анализ и трансформацию графов;
  • декларативные запросы к данным;
  • поддержку Datalog-подобного синтаксиса.

Ключевые особенности

  • Компилирует логические правила в Go-код или исполняет напрямую.
  • Поддерживает рекурсивные запросы и агрегации.
  • Работает с in-memory и persistent-хранилищами.

Установка

go install github.com/google/mangle/cmd/mangle@latest

Быстрый старт

  1. Создай файл example.mgl:
    edge("a", "b").
    edge("b", "c").
    path(X, Y) :- edge(X, Y).
    path(X, Z) :- edge(X, Y), path(Y, Z).
    
  2. Запусти:
    mangle example.mgl --query="path(\"a\", Z)"
    

Документация

by simonpure • 18 августа 2025 г. в 00:55 • 80 points

ОригиналHN

#go#datalog#graph-databases#google#github

Комментарии (14)

  • Участники спорят, связан ли новый язык Google с «Deductive Database» из видео 3b1b: одни считают, что это очередной внутренний эксперимент, другие — просто «люди, которые веселятся под крылом Google».
  • Поднимается вопрос, почему почти все инструменты расширяют «ванильный» Datalog: его ограничения делают расширения неизбежными.
  • В треде упоминаются альтернативные языки запросов — PreQL/Trilogy, Malloy, PRQL, PathQuery — и обсуждается, как они соотносятся с SQL и реляционной алгеброй.

Clojure Async Flow Guide (clojure.github.io)

Быстрый старт

Библиотека flow отделяет бизнес-логику от развёртывания: топологии, исполнения, обмена сообщениями, жизненного цикла, мониторинга и обработки ошибок.

step-fn и процессы

Логика описывается функциями step-fn, которые flow заворачивает в процессы, крутящиеся в цикле. step-fn не работают с каналами напрямую и не хранят состояние, поэтому легко тестируются и переиспользуются.

step-fn имеет четыре арности:

describe (step-fn) → descriptor

Возвращает статическое описание :params, :ins, :outs — карты имя → документация. Имена входов и выходов не должны пересекаться.

{:params {:size "Максимальный размер"}
 :ins    {:in  "Входной канал"}
 :outs   {:out "Выходной канал"}}

init (step-fn arg-map) → init-state

Один раз вызывается при старте процесса; превращает параметры из flow-def в начальное состояние.

transition (step-fn state transition) → state'

Вызывается при переходах жизненного цикла (::flow/start, ::flow/stop, ::flow/pause, ::flow/resume). Используется для управления внешними ресурсами.

transform (step-fn state input msg) → [state' {out-id [msgs]}]

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

Состояние процесса

Карта с любыми ключами. Дополнительно:

  • ::flow/pid — идентификатор процесса
  • ::flow/in-ports, ::flow/out-ports — карты cid → внешний канал (создаётся в init)
  • ::flow/input-filter — предикат cid для фильтрации входных каналов

Хелперы

  • lift*->step — из f(x) → coll делает step-fn с одним входом и выходом
  • lift1->step — то же, но f(x) → single-value
  • map->step — из карты с ключами :describe, :init, :transition, :transform строит step-fn

Запуск процесса

Функция process принимает step-fn и опции:

  • ::workload:mixed, :io, :compute
  • :compute-timeout-ms — таймаут для :compute (по умолчанию 5000 мс)

by simonpure • 18 августа 2025 г. в 00:52 • 190 points

ОригиналHN

#clojure#core.async#flow#concurrency#functional-programming#jvm#genstage#elixir

Комментарии (74)

  • Участники обсуждают, жив ли Clojure: сообщество стабильно, но менее хайповое; NuBank расширяет core-команду и нанимает Developer Advocate.
  • core.async.flow предлагает декларативный, фиксированный граф каналов для «структурированной конкурентности»; ошибки и паузы можно отслеживать, но изменять топологию на лету пока нельзя.
  • Сравнивают с GenStage (Elixir), Manifold, Trio и missionary/electric; можно использовать как OS-, так и green-потоки.
  • JVM-тулчейн вызывает у новичков страх, но Leiningen/deps.edn упрощают работу, а отладка всё же возможна.
  • Clojure-окосистема активно развивается: Babashka, XTDB, Dyna3 и другие проекты; язык недавно получил мажорный релиз и готовится к виртуальным потокам JVM.