Hacker News Digest

Обновлено: 06 сентября 2025 г. в 19:18

Постов: 1386 • Страница 69/139

Emacs as your video-trimming tool (xenodium.com) 🔥 Горячее

Emacs как обрезчик видео

Марцин Борковский показал, как вырезать фрагменты прямо из редактора. Автору тоже часто нужно обрезать скринкасты, поэтому он вдохновился и написал video-trimmer-mode (~300 строк Elisp).

  • Использует ffmpeg для всей тяжёлой работы.
  • Показывает превью и позволяет задавать начало/конец кадрами.
  • Код живёт в dotsies и обновляется.

Если пригодилось — поддержите автора на GitHub Sponsors или купите его macOS/iOS-приложения.

by xenodium • 19 августа 2025 г. в 16:22 • 277 points

ОригиналHN

#emacs#elisp#ffmpeg#video-editing

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

  • Автор показал, как обрезать видео прямо в Emacs, используя ffmpeg и 300 строк Elisp.
  • Пользователи спорят: «круто, но зачем?» vs «если ты уже живёшь в Emacs, то это естественно».
  • Плюсы: всё текстом, клавиатурное управление, можно автоматизировать, не надо выходить из среды.
  • Минусы: GUI всё-таки удобнее для точного выбора кадров; для разовой задачи проще спросить LLM нужную команду ffmpeg.
  • Сторонники Emacs считают его не редактором, а полноценной программной средой (или «ОС»), где легко интегрировать любые инструменты.

How we exploited CodeRabbit: From simple PR to RCE and write access on 1M repos (research.kudelskisecurity.com) 🔥 Горячее 💬 Длинная дискуссия

CodeRabbit: от PR до RCE и доступа к 1 млн репозиториев

CodeRabbit — самое популярное AI-приложение на GitHub Marketplace (1 млн репозиториев, 5 млн PR). При установке он анализирует каждый PR и оставляет AI-комментарии.

Найденные уязвимости

  1. RCE через Markdown-рендеринг

    • Внутри контейнеров запускается markdown-it с плагином markdown-it-katex.
    • Плагин использует child_process.exec без фильтрации LaTeX-ввода.
    • Внедрённый в PR $\input{/etc/passwd}$ запускает произвольные команды.
  2. Утечка токенов

    • Внутри контейнеров доступны переменные окружения: GITHUB_TOKEN, CODERABBIT_API_KEY, DATABASE_URL.
    • Чтение /proc/self/environ и ~/.netrc позволило получить токены GitHub, JWT-секреты и строку подключения к PostgreSQL.
  3. Доступ к 1 млн репозиториев

    • Установленный GitHub-App имеет scope contents:write во всех подключённых репозиториях.
    • С помощью украденного токена можно клонировать/писать в приватные репы, создавать PR, коммиты и релизы.

Цепочка атаки

  1. Создаём PR с вредным LaTeX.
  2. Получаем RCE в контейнере CodeRabbit.
  3. Считываем секреты.
  4. Используем токен GitHub для полного доступа к репозиториям.

Меры защиты

  • Переход на изолированные sandbox-среды.
  • Отключение опасных LaTeX-функций.
  • Минимизация scope GitHub-токенов.

by spiridow • 19 августа 2025 г. в 15:55 • 649 points

ОригиналHN

#github#github-marketplace#markdown-it#postgresql#rce#latex#security-vulnerability#sandbox#child-process#environ

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

  • Исследователи нашли RCE в CodeRabbit: Rubocop запускался в проде без песочницы, позволяя выполнять любой код и получить ключи GitHub-приложения.
  • Уязвимость дала доступ на запись к ~1 млн репозиториев; компания утверждает, что «данных клиентов не скомпрометировано», но аудита нет.
  • Пользователи критикуют отсутствие прозрачности, грубые ошибки в управлении секретами (ключ в ENV) и чрезмерные права GitHub-приложений.
  • Главный вывод: анализаторы кода должны запускаться в изолированных средах без доступа к чувствительным переменным, иначе подобные инциденты неизбежны.

450× Faster Joins with Index Condition Pushdown (readyset.io)

Проблема
При промахе кэша Readyset выполняет запрос с нуля. Для «расколотых» соединений (предикаты есть и в WHERE, и в ON) старый hash-join читал обе таблицы полностью:

  • фильтр по email возвращал 1 строку users;
  • фильтр по status='SHIPPED' — 99 % таблицы orders.
    Материализовав миллионы лишних строк, система строила хэш-таблицу и лишь потом отбрасывала ненужное. Профилирование показало: 30 % времени уходило на распаковку RocksDB, затем на 10 K IOPS и 81 % загрузки NVMe.

Решение: Index Condition Pushdown
Новый план использует индексы и «проталкивает» условия вниз:

  1. Сначала выбираем 1 строку users по индексу email.
  2. Для каждой найденной u.id делаем индексный lookup в orders с условием user_id = u.id AND status='SHIPPED'.
    Так читаются только нужные строки orders, объём I/O падает на порядки, а хэш-таблица больше не строится.

Результат
ICP устраняет лишнее чтение и распаковку, превращая холодный straddled-join из многомиллисекундной операции в субмиллисекундную.

by marceloaltmann • 19 августа 2025 г. в 15:43 • 112 points

ОригиналHN

#index-condition-pushdown#query-optimization#database-performance#rocksdb#mysql#postgresql#readyset#hash-join#sql

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

  • Пользователи жалуются, что планировщик запросов не продавливает фильтры к индексам, и считают это багом производительности.
  • Многие разработчики вынуждены сами заниматься индексами, партиционированием и анализом EXPLAIN, потому что DBA лишь «держат свет».
  • В RonDB и ReadySet показали примеры «pushdown-joins» и Index Condition Pushdown, дав ускорение до 450×.
  • ReadySet описывают как «кеш-прокси» поверх MySQL/Postgres, который по логу репликации инкрементально обновляет материализованные представления.
  • Часть участников считает, что современные оптимизаторы должны делать такие оптимизации автоматически, и не понимает, зачем изобретать велосипед.

A renovation project in Turkey led to the discovery of a lost city (2023) (atlasobscura.com)

Тайный подземный город в подвале дома

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

  • Масштаб: 18 этажей, глубина до 85 м, протяжённость 8 км.
  • Назначение: укрытие от набегов; жили 20 тыс. человек.
  • Системы: вентиляционные шахты, колодцы, винодельня, часовня, школы.
  • Возраст: начало строительства — VIII век до н. э., активное использование — византийский период.

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

by areoform • 19 августа 2025 г. в 15:34 • 76 points

ОригиналHN

#lidar#archaeology#history

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

  • Участники делятся впечатлениями о подземных городах: Derinkuyu, Özkonak, Naours и других.
  • Обсуждают, что такие города строились из-за постоянных вторжений, но турецкий гид утверждал, что после прекращения набегов их перестали использовать.
  • Упоминают, что вся Каппадокия выглядит «как другая планета» с долинами, музеями и пещерами.
  • Поднимают тему LiDAR-исследований, находящих в Латинской Америке целые мегаполисы, и задаются вопросом, есть ли аналоги в Африке.
  • Напоминают о греческом геноциде 1920-х, когда подземные убежища снова пригодились, и критикуют статью за «обеление» истории.

David Klein's TWA Posters (2018) (flashbak.com)

Дэвид Кляйн: плакаты TWA, которые до сих пор вдохновляют

Иллюстратор Дэвид Кляйн (1918–2005) прославился яркими туристическими плакатами для Trans World Airlines 1950–60-х. Его геометрические композиции, насыщенные цвета и динамика запечатлели эйфорию первых лет послевоенных авиапутешествий.

TWA тогда была технологическим лидером: первой наняла афроамериканскую стюардессу, показала фильмы на борту и начала эксплуатировать Boeing 747. В 1962-м открыла футуристический терминал JFK, который и сегодня считается архитектурной иконой.

Кляйн родился в Техасе, учился в Art Center School Лос-Анджелеса, после войны переехал в Нью-Йорк. С 1947-го работал арт-директором в Clifford Strohl Associates, оформлял афиши бродвейских мюзиклов, но главным стало сотрудничество с TWA.

Плакаты охватывали маршруты от Нью-Йорка до Израиля, от Лас-Вегаса до Швейцарии. Каждый рисунок — это лаконичный символ города: геометрия Манхэттена, золотые ворота Сан-Франциско, пальмы Флориды, неон Вегаса. Их до сих пор переиздают и коллекционируют как образцы mid-century-дизайна.

by NaOH • 19 августа 2025 г. в 15:27 • 80 points

ОригиналHN

#trans-world-airlines#twa#boeing-747#design#mid-century-design#marketing#aviation

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

  • Волонтёры в Канзас-Сити собрали музей TWA с яркой коллекцией старых маркетинговых материалов.
  • Участники отмечают свежесть цветов и стиля по сравнению с современным минимализмом.
  • На швейцарском постере вызывает вопрос круглый объект: версии — розовый фонтан или традиционная шляпа.
  • В центре города также стоит ракета TWA, которую советуют посетить.
  • Редкость работы, где узнаётся почерк одного художника, вызывает восхищение.

"Remove mentions of XSLT from the html spec" (github.com) 🔥 Горячее 💬 Длинная дискуссия

  • Что изменили: из спецификации HTML полностью убраны упоминания XSLT.
  • Почему: технология считается устаревшей, поддержка в браузерах минимальна, а спецификация XSLT живёт отдельно.
  • Что удалили:
    • раздел «XSLT» и связанные термины;
    • алгоритм «transform-to-document»;
    • обработку type="text/xsl";
    • примеры и ссылки на XSLT.
  • Как проверили: сборка без ошибок, тесты WPT не затронуты.

by troupo • 19 августа 2025 г. в 14:48 • 302 points

ОригиналHN

#xslt#html#web#libxslt#wasm#web-performance-tests#github

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

  • Все браузеры, а не только Chrome, поддерживают идею убрать XSLT из веб-платформы.
  • Основная причина — безопасность и тяжёлая поддержка устаревшей библиотеки libxslt.
  • Часть пользователей возмущена: «спросили всех, все сказали “нет”, но всё равно уберут».
  • Некоторые предлагают замену на WASM-полифилл или серверную трансформацию.
  • Сторонники XSLT жалуются на разрыв обещания «HTML навсегда» и гибель старых сайтов.

WebR – R in the Browser (docs.r-wasm.org)

  • WebR — R в браузере (v0.5.6-dev).
  • Старт: скачать, раздавать страницы, примеры.
  • Основы: обмен с воркером, выполнение R-кода, графика, сеть.
  • Объекты: управление, конвертация JS ↔ R, создание.
  • Пакеты: установка, сборка, монтирование данных.
  • API:
    • R API
    • JS API: модули Channel, Message, Proxy, Queue, WebR, …; классы WebR, RObject, RDataFrame, Console, Shelter, …; интерфейсы WebROptions, EvalROptions, InstallPackagesOptions, …

by sieste • 19 августа 2025 г. в 14:36 • 137 points

ОригиналHN

#r#wasm#ggplot2#blas#quarto#r-markdown#julia#pwa

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

  • WebR запускает R прямо в браузере через WASM, позволяя строить ggplot2 и другие вычисления без сервера.
  • Пользователи делятся демо-репозиториями, минимальными HTML-примерами и расширениями Quarto/R Markdown.
  • Обсуждаются размер WASM-блоба (≈12 МБ), производительность BLAS и возможность офлайн-работы как PWA.
  • Упоминаются альтернативы: JupyterLite-xeus, Pluto.jl и попытки «Julia в браузере», но они ещё незрелые.

Positron, a New Data Science IDE (posit.co)

Positron — бесплатный IDE для дата-сайенса, поддерживающий Python и R.
Скачать

Продукты

  • Enterprise: Posit Connect, Workbench, Package Manager
  • Cloud: Posit Cloud, Connect Cloud, shinyapps.io

Open Source

  • IDE: Positron, RStudio, RStudio Server
  • Библиотеки: Tidyverse, ggplot2, dplyr, Quarto, Shiny, vetiver
  • Интеграции: dbplyr, sparklyr, googlesheets

Истории клиентов

  • Suffolk, Trillium, Unity Health, NASA, Dow

Партнёры

  • Платформы: Snowflake, Databricks, SageMaker
  • Облака: AWS, Azure, GCP

by kgwgk • 19 августа 2025 г. в 14:20 • 135 points

ОригиналHN

#positron#r#python#tidyverse#ggplot2#dplyr#quarto#shiny#aws#azure

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

  • Пользователи хвалят Positron за плавный переход из RStudio/VSCode и улучшенные возможности DS, но жалуются на отсутствие inline-графиков в Quarto и медленное внедрение.
  • Разработчики подтверждают: форк нужен, потому что VSCode-расширения не позволяют глубоко интегрировать языковые сервисы, тулбары и кастомные UI.
  • Некоторые считают продукт «ещё одним форком VSCode» и сомневаются в его нишевости между RStudio, VSCode, Spyder и PyCharm.
  • Поддержка WSL пока отсутствует, а цены на RStudio Server выросли, что усиливает интерес к Positron в академической среде.
  • Важнейший запрос — inline-вывод в Quarto; его уже рассматривают, и есть настройка для привычных хоткеев RStudio.

Without the futex, it's futile (h4x0r.org) 🔥 Горячее

Без futex всё тленно

Книга The Art of Multiprocessor Programming (2-е изд., 2021) считается канонической, но она обходит стороной futex — ключевой примитив современной многопоточности. Это упущение делает пособие бесполезным для практиков.

Futex ≠ mutex
Название происходит от «fast userspace mutex», но futex — это не мьютекс, а основа для всех высокоэффективных примитивов синхронизации. До него всё строилось на громоздких System V IPC, которые не масштабировались: при 1000 потоков futex в 2002-м оказался в 20–120 раз быстрее sysv-блокировок. Windows и macOS добавили аналоги только в 2012 и 2016 гг.

Суть futex
Он разделяет блокировку и ожидание/пробуждение:

  • В user-space проверяем состояние; если свободно — захватываем без системного вызова.
  • При конфликте вызываем futex_wait(addr, expected), засыпаем в ядре на конкретном адресе.
  • Пробуждение — futex_wake(addr, n), где n обычно 1 или «все».

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

Такой подход убирает лишние системные вызовы и позволяет строить быстрые мьютексы, rw-lock’и, семафоры и пр. без поллинга и экспоненциальных бэкоффов.

Итог
Любая современная библиотека (pthreads, C++ std::mutex, Rust std::sync) опирается на futex. Учебник, игнорирующий этот примитив, не готовит к реальной разработке.

by eatonphil • 19 августа 2025 г. в 13:53 • 284 points

ОригиналHN

#futex#multithreading#system-v#linux#pthreads#rust#c++#io-uring#numa#synchronization

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

  • Futex — это быстрый примитив синхронизации, который экономит системные вызовы при отсутствии конфликтов и не требует выделения ядром объектов.
  • В отличие от Benaphore и старых SysV-механизмов, futex не требует предварительной инициализации в ядре и исчезает, когда нет ожидающих.
  • Обсуждение подчёркивает, что современные учебники по многопроцессорному программированию обязаны упоминать futex, но «The Art of Multiprocessor Programming» этому не уделяет внимания.
  • Улучшения futex2 (Linux ≥5.16) добавили NUMA-поддержку и аналог Windows WaitForMultipleObjects, а io_uring теперь умеет работать с futex.
  • Для надёжности при падении потока существуют robust-locks и списки futex, которые ядро автоматически разблокирует.

Critical Cache Poisoning Vulnerability in Dnsmasq (lists.thekelleys.org.uk)

Критическая уязвимость кэш-подмены в Dnsmasq

Тип: логическая ошибка защиты от кэш-подмены
ПО: все версии Dnsmasq
Оценка: критическая
Условия: атакующий вне сети, перебирает TxID и порт (~2,5 ч)

Суть
Dnsmasq пересылает запросы со спецсимволами (~, !, *, _) вышестоящим резолверам. Некоторые из них молча отбрасывают такие запросы, не отвечая NXDomain/ServFail. Dnsmasq не замечает тишины и ждёт, открывая большое окно для подбора 16-битного TxID и порта (birthday-paradox).

Результат

  • 20/20 успешных экспериментов
  • Среднее время атаки ≈ 9 469 с
  • Позволяет отравить любой кэшированный домен без фрагментации IP или побочных каналов
  • Усиливает известные атаки SADDNS и Tudoor

PoC
Для домена viticm.com запросы с «тихими» символами приводили к молчанию upstream, что использовалось для надёжного отравления кэша.

Рекомендации

  • Детектировать молчание upstream
  • Ввести rate-limit и защиту от spoof, как в PowerDNS

by westurner • 19 августа 2025 г. в 12:56 • 115 points

ОригиналHN

#dnsmasq#dns#cache-poisoning#vulnerability#network-security#openwrt#unbound#dnssec

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

  • dnsmasq пересылает «невалидные» запросы (с символами вне ASCII) к апстрим-резолверу, который молча их отбрасывает; злоумышленник, находясь на пути, может подобрать 32-битный (порт+ID) ответ и отравить кэш.
  • Проблема не новая (известна с 1993 г.), но в dnsmasq уже второе за последнее время серьёзное упущение.
  • Большинство потребительских роутеров с dnsmasq никогда не обновятся; предлагается «право на ремонт» и публикация прошивок/ключей.
  • OpenWrt, если стоит за NAT/файрволом, теоретически недоступен извне, но всё равно можно заменить dnsmasq на Unbound или другой DNS-сервер.
  • Эффективная защита — DNSSEC; временно помогает апстрим-резолвер, который быстро отвечает NXDOMAIN (8.8.8.8, 1.1.1.1, 9.9.9.9).