Emacs as your video-trimming tool 🔥 Горячее
Emacs как обрезчик видео
Марцин Борковский показал, как вырезать фрагменты прямо из редактора. Автору тоже часто нужно обрезать скринкасты, поэтому он вдохновился и написал video-trimmer-mode
(~300 строк Elisp).
- Использует
ffmpeg
для всей тяжёлой работы. - Показывает превью и позволяет задавать начало/конец кадрами.
- Код живёт в dotsies и обновляется.
Если пригодилось — поддержите автора на GitHub Sponsors или купите его macOS/iOS-приложения.
Комментарии (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 🔥 Горячее 💬 Длинная дискуссия
CodeRabbit: от PR до RCE и доступа к 1 млн репозиториев
CodeRabbit — самое популярное AI-приложение на GitHub Marketplace (1 млн репозиториев, 5 млн PR). При установке он анализирует каждый PR и оставляет AI-комментарии.
Найденные уязвимости
-
RCE через Markdown-рендеринг
- Внутри контейнеров запускается
markdown-it
с плагиномmarkdown-it-katex
. - Плагин использует
child_process.exec
без фильтрации LaTeX-ввода. - Внедрённый в PR
$\input{/etc/passwd}$
запускает произвольные команды.
- Внутри контейнеров запускается
-
Утечка токенов
- Внутри контейнеров доступны переменные окружения:
GITHUB_TOKEN
,CODERABBIT_API_KEY
,DATABASE_URL
. - Чтение
/proc/self/environ
и~/.netrc
позволило получить токены GitHub, JWT-секреты и строку подключения к PostgreSQL.
- Внутри контейнеров доступны переменные окружения:
-
Доступ к 1 млн репозиториев
- Установленный GitHub-App имеет scope
contents:write
во всех подключённых репозиториях. - С помощью украденного токена можно клонировать/писать в приватные репы, создавать PR, коммиты и релизы.
- Установленный GitHub-App имеет scope
Цепочка атаки
- Создаём PR с вредным LaTeX.
- Получаем RCE в контейнере CodeRabbit.
- Считываем секреты.
- Используем токен GitHub для полного доступа к репозиториям.
Меры защиты
- Переход на изолированные sandbox-среды.
- Отключение опасных LaTeX-функций.
- Минимизация scope GitHub-токенов.
Комментарии (217)
- Исследователи нашли RCE в CodeRabbit: Rubocop запускался в проде без песочницы, позволяя выполнять любой код и получить ключи GitHub-приложения.
- Уязвимость дала доступ на запись к ~1 млн репозиториев; компания утверждает, что «данных клиентов не скомпрометировано», но аудита нет.
- Пользователи критикуют отсутствие прозрачности, грубые ошибки в управлении секретами (ключ в ENV) и чрезмерные права GitHub-приложений.
- Главный вывод: анализаторы кода должны запускаться в изолированных средах без доступа к чувствительным переменным, иначе подобные инциденты неизбежны.
450× Faster Joins with Index Condition Pushdown
Проблема
При промахе кэша Readyset выполняет запрос с нуля. Для «расколотых» соединений (предикаты есть и в WHERE
, и в ON
) старый hash-join читал обе таблицы полностью:
- фильтр по
email
возвращал 1 строкуusers
; - фильтр по
status='SHIPPED'
— 99 % таблицыorders
.
Материализовав миллионы лишних строк, система строила хэш-таблицу и лишь потом отбрасывала ненужное. Профилирование показало: 30 % времени уходило на распаковку RocksDB, затем на 10 K IOPS и 81 % загрузки NVMe.
Решение: Index Condition Pushdown
Новый план использует индексы и «проталкивает» условия вниз:
- Сначала выбираем 1 строку
users
по индексуemail
. - Для каждой найденной
u.id
делаем индексный lookup вorders
с условиемuser_id = u.id AND status='SHIPPED'
.
Так читаются только нужные строкиorders
, объём I/O падает на порядки, а хэш-таблица больше не строится.
Результат
ICP устраняет лишнее чтение и распаковку, превращая холодный straddled-join из многомиллисекундной операции в субмиллисекундную.
Комментарии (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)
Тайный подземный город в подвале дома
Житель турецкого Невшехира во время ремонта наткнулся на дверь в скрытый лабиринт. Под домом оказался камедеринский подземный комплекс — многоуровневая сеть туннелей, комнат и колодцев, выдолбленных в мягком вулканическом туфе.
- Масштаб: 18 этажей, глубина до 85 м, протяжённость 8 км.
- Назначение: укрытие от набегов; жили 20 тыс. человек.
- Системы: вентиляционные шахты, колодцы, винодельня, часовня, школы.
- Возраст: начало строительства — VIII век до н. э., активное использование — византийский период.
Комплекс закрыт стальными дверями и мог функционировать автономно до полугода. Находка расширила известную сеть подземелий Каппадокии, включая знаменитые подземные города Деринкую и Каймаклы.
Комментарии (22)
- Участники делятся впечатлениями о подземных городах: Derinkuyu, Özkonak, Naours и других.
- Обсуждают, что такие города строились из-за постоянных вторжений, но турецкий гид утверждал, что после прекращения набегов их перестали использовать.
- Упоминают, что вся Каппадокия выглядит «как другая планета» с долинами, музеями и пещерами.
- Поднимают тему LiDAR-исследований, находящих в Латинской Америке целые мегаполисы, и задаются вопросом, есть ли аналоги в Африке.
- Напоминают о греческом геноциде 1920-х, когда подземные убежища снова пригодились, и критикуют статью за «обеление» истории.
David Klein's TWA Posters (2018)
Дэвид Кляйн: плакаты TWA, которые до сих пор вдохновляют
Иллюстратор Дэвид Кляйн (1918–2005) прославился яркими туристическими плакатами для Trans World Airlines 1950–60-х. Его геометрические композиции, насыщенные цвета и динамика запечатлели эйфорию первых лет послевоенных авиапутешествий.
TWA тогда была технологическим лидером: первой наняла афроамериканскую стюардессу, показала фильмы на борту и начала эксплуатировать Boeing 747. В 1962-м открыла футуристический терминал JFK, который и сегодня считается архитектурной иконой.
Кляйн родился в Техасе, учился в Art Center School Лос-Анджелеса, после войны переехал в Нью-Йорк. С 1947-го работал арт-директором в Clifford Strohl Associates, оформлял афиши бродвейских мюзиклов, но главным стало сотрудничество с TWA.
Плакаты охватывали маршруты от Нью-Йорка до Израиля, от Лас-Вегаса до Швейцарии. Каждый рисунок — это лаконичный символ города: геометрия Манхэттена, золотые ворота Сан-Франциско, пальмы Флориды, неон Вегаса. Их до сих пор переиздают и коллекционируют как образцы mid-century-дизайна.
Комментарии (7)
- Волонтёры в Канзас-Сити собрали музей TWA с яркой коллекцией старых маркетинговых материалов.
- Участники отмечают свежесть цветов и стиля по сравнению с современным минимализмом.
- На швейцарском постере вызывает вопрос круглый объект: версии — розовый фонтан или традиционная шляпа.
- В центре города также стоит ракета TWA, которую советуют посетить.
- Редкость работы, где узнаётся почерк одного художника, вызывает восхищение.
"Remove mentions of XSLT from the html spec" 🔥 Горячее 💬 Длинная дискуссия
- Что изменили: из спецификации HTML полностью убраны упоминания XSLT.
- Почему: технология считается устаревшей, поддержка в браузерах минимальна, а спецификация XSLT живёт отдельно.
- Что удалили:
- раздел «XSLT» и связанные термины;
- алгоритм «transform-to-document»;
- обработку
type="text/xsl"
; - примеры и ссылки на XSLT.
- Как проверили: сборка без ошибок, тесты WPT не затронуты.
Комментарии (369)
- Все браузеры, а не только Chrome, поддерживают идею убрать XSLT из веб-платформы.
- Основная причина — безопасность и тяжёлая поддержка устаревшей библиотеки libxslt.
- Часть пользователей возмущена: «спросили всех, все сказали “нет”, но всё равно уберут».
- Некоторые предлагают замену на WASM-полифилл или серверную трансформацию.
- Сторонники XSLT жалуются на разрыв обещания «HTML навсегда» и гибель старых сайтов.
WebR – R in the Browser
- 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
, …
Комментарии (32)
- WebR запускает R прямо в браузере через WASM, позволяя строить ggplot2 и другие вычисления без сервера.
- Пользователи делятся демо-репозиториями, минимальными HTML-примерами и расширениями Quarto/R Markdown.
- Обсуждаются размер WASM-блоба (≈12 МБ), производительность BLAS и возможность офлайн-работы как PWA.
- Упоминаются альтернативы: JupyterLite-xeus, Pluto.jl и попытки «Julia в браузере», но они ещё незрелые.
Positron, a New Data Science IDE
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
Комментарии (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 🔥 Горячее
Без 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. Учебник, игнорирующий этот примитив, не готовит к реальной разработке.
Комментарии (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
Критическая уязвимость кэш-подмены в 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
Комментарии (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).