Line scan camera image processing for train photography 🔥 Горячее
- Камера – Alkeria Necta N4K2-7C, 4096×2 Bayer, 16-бит raw.
- ROI – энергия
∂I/∂x / (0.1·max(I)+|∇I|); 99-й перцентиль по блокам, порог 1.5× минимума. - Скорость – сравниваем два зелёных канала Bayer-сдвигами ±7 px, подпиксельный пик методом итеративного Гаусса.
- Ресэмплинг – интерполяция по скорости, чтобы не растянуть/сжать объект.
- Демозаик – bilinear + коррекция полос.
- Полосы – вычитаем медиану по строкам.
- Шум – Gaussian + bilateral фильтр.
- Косой кадр – Hough-прямые → угол → поворот.
- Цвет – калибровка по чекеру X-Rite.
- Код – Python + NumPy + OpenCV, «vibe-coding» в Cursor.
Комментарии (66)
- Пользователи делятся опытом: кто-то пробовал сканировать деревья дроном, кто-то делает slit-scan-анимации вручную, а кто-то вспоминает сканеры и старые цифровые спины.
- Обсуждаются промышленные применения: сортировка продуктов на конвейере, фото-финиш, спутники и даже медицинская ОКТ.
- Рассказывают, как почти любую камеру можно превратить в line-scan, выставив только одну строку пикселей и получив 60 000 FPS.
- Показывают примеры снимков из окна поезда и спорят, насколько реально «отсканировать» часовую поездку целиком.
- Отмечают художественный эффект: поезд застыл между полосами цвета, а движущиеся части искажаются, как у спортсменов на фото-финиша.
Light pollution prolongs avian activity
- Световое загрязнение заставляет птиц петь на 50 минут дольше каждый день: в городах они начинают петь на 18 минут раньше и заканчивают на 32 минуты позже.
- Анализ 61 млн записей птичьих трелей (580 видов) показал, что яркое ночное освещение удлиняет активный день птиц почти на час.
- Исследование опиралось на данные проекта BirdWeather и спутников VIIRS, фиксирующих яркость населённых пунктов.
- Дополнительная активность сокращает время отдыха, что может снизить выживаемость и размножение птиц.
Комментарии (21)
- Суперяркие и дёшевые LED-фонари превратили световое загрязнение в эпидемию: дома и парковки заливают «тюремным» светом в 100 000 люмен.
- Исследование в Science: птицы поют на 50 минут дольше из-за ночного освещения; сильнее страдают виды с большими глазами и открытыми гнёздами.
- Продлённая активность повышает энергозатраты птиц, что может сократить численность популяций и нарушить баланс экосистем.
- Свет мешает и насекомым, усиливая их вымирание, а простая смена цвета или мерцания света может частично смягчить ущерб.
- Люди тоже страдают: ночные улицы выглядят как кино-съёмочные площадки, а постоянный свет вызывает бессонницу и дискомфорт.
RFC 9839 and Bad Unicode
RFC 9839 и плохой Unicode
Unicode хорош, но не все его символы. Часто приходится исключать «проблемные». Чтобы формализовать это, мы с Полом Хоффманом написали черновик, и теперь он стал RFC 9839 — всего 10 страниц, читайте, если проектируете текстовые поля.
Пример боли: JSON-поле username может содержать:
U+0000— нулевой байт, ломает языки;U+0089— устаревший C1-контрол «HTJ»;U+DEAD— несвязанный суррогат, запрещён в UTF-8;U+7FFFF— «noncharacter», не должен передаваться.
RFC 9839 перечисляет такие категории и предлагает три готовых подмножества, которые можно просто запретить.
Не вините Дуга Крокфорда: JSON создавался раньше, когда Unicode был молод. Но теперь нужен способ явно сказать «эти символы не нужны».
PRECIS (RFC 8264, 2002) уже решал похожую задачу, но 43 страницы сложностей и привязка к конкретной версии Unicode мешают внедрению. RFC 9839 проще и тупее — и, возможно, именно поэтому пригодится.
Комментарии (122)
- Участники спорят, нужно ли на уровне JSON/протокола запрещать «плохие» символы Unicode (управляющие, суррогаты, заломы направления и т. д.) или оставить это прикладной валидации.
- Одни считают, что жёсткие ограничения защищают от ошибок и атак (RTL-override, залого-текст, сломанные UTF-16-реализации).
- Другие указывают на полезные кейсы C0-символов (EOF, ESC, разделители) и опасаются, что «закрыть и забыть» приведёт к 20-летней несовместимости (эмодзи, старые файлы).
- Ссылаются на RFC 8264/9839 и PRECIS-фреймворк как готовый список «что разрешать», но подчёркивают: правило должно быть явным, а не «тихо удалять».
Writing Speed-of-Light Flash Attention for 5090 in CUDA C++
Flash Attention на 5090 в CUDA C++
Цель — научиться писать attention-ядро на CUDA C++, чтобы использовать MXFP8/NVFP4 MMA для sm120, чего нет в Triton.
Код: learn-cuda/07_attention.
Бенчмарк (bs=1, heads=8, q=4096, kv=8192, BF16, 5090@400 W, CUDA 12.9, SOL 209.5 TFLOPS):
| ядро | TFLOPS | %SOL |
|---|---|---|
| F.sdpa (Flash) | 186.73 | 89.13 |
| F.sdpa (CuDNN) | 203.61 | 97.19 |
| flash-attn | 190.58 | 90.97 |
| v1 (basic) | 142.87 | 68.20 |
| v2 (swizzle) | 181.11 | 86.45 |
| v3 (2-stage) | 189.84 | 90.62 |
| v4 (ldmatrix.x4) | 194.33 | 92.76 |
| v5 (pipe) | 197.74 | 94.39 |
Алгоритм Flash Attention 2
Псевдокод:
scale = DIM**-0.5
for b, tile_Q:
tile_O = 0
tile_Q = load(Q[b, tile_Q])
for tile_KV:
tile_K = load(K[b, tile_KV])
tile_S = tile_Q @ tile_K.T * scale
online_softmax(tile_S) # in-place
tile_V = load(V[b, tile_KV])
tile_O += tile_S @ tile_V
store(O[b, tile_Q])
head_dim=128 помещается в регистры.
v1 — базовая версия
- G2S:
cp.async.ca.shared.global128-битными транзакциями. - S2R:
ldmatrixдля Q, K, V → 8×8 фрагменты. - Softmax online:
m = max(m_prev, m_curr)d = d_prev * exp(m_prev - m) + Σ exp(S - m)O = O_prev * (d_prev/d) * exp(m_prev - m) + (exp(S - m)/d) @ V
v2 — swizzled shared memory
- 128-битные банки → конфликты при 8×8 tile.
- Swizzle
KиVпо 32-битным строкам;Qоставляем линейно. - +40 % пропускной способности.
v3 — 2-stage pipeline
- Двойной буфер: пока вычисляем S/P@V, асинхронно грузим следующий KV.
cp.async.commit_group()+cp.async.wait_group(1).- +5 % к SOL.
v4 — ldmatrix.x4
- Одна инструкция
ldmatrix.x4загружает 4×8×8 фрагмента K/V за раз. - Снижает инструкций на 25 %.
- +2 % к SOL.
v5 — улучшенный pipeline
- 3-4 стадии:
- prefetch KV
- compute S
- compute P@V
- write-back O
__pipeline_wait_prior(N)+__pipeline_commit().- +2 % к SOL.
Что дальше
- Использовать TMA (
cp.async.bulk) и NVFP4/MXFP8 MMA. - Поддержка head_dim > 128 (FlashMLA).
Комментарии (32)
- Пользователи удивлены, что RTX 5090 даёт всего 209 TFLOPS BF16 — менее 10 % от серверного Blackwell B200 (2250 TFLOPS), но при цене ~$30-40 k за B200 соотношение цена/производительность почти сравнялось.
- Обсуждают, что NVIDIA с 4090 и далее искусственно ограничивает тензорные ядра игровых карт для ML-операций FP8/FP16.
- У 5090 выше TDP, чем у 4090, и можно ограничить мощность лишь до 70 % (4090 — до 50 %), что мешает апгрейду для ML-станций.
- Появились вопросы о поддержке Flash Attention на 5090/5080 и о нативной компиляции под Blackwell в PyTorch 2.7.
- Участники спорят, стоит ли вкладываться в Triton, если нужны фирменные типы NVFP4/MXFP8, которых там пока нет.
Rethinking the Linux cloud stack for confidential VMs
Конфиденциальные ВМ требуют переработки стека Linux в облаке.
Публичное облако не гарантирует приватности: хост-провайдер может получить доступ к памяти гостя. Confidential computing решает это, шифруя память даже от гипервизора, но приходится балансировать между безопасностью и производительностью.
Изоляция и производительность
Аппаратные уровни привилегий, IOMMU, KVM, cgroups и namespaces обеспечивают изоляцию ВМ. Однако для скорости всё чаще используют прямой доступ к устройствам (DPDK, vDPA), что снижает контроль ОС и усиливает зависимость от железа и прошивок.
Решение: доверенные устройства
AMD SEV-TIO и стандарт TDISP позволяют гостю криптографически убедиться в подлинности устройства и разрешить ему прямой доступ к зашифрованной памяти, избегая медленных bounce-буферов. Реализуется через SR-IOV: физическое устройство создаёт множество виртуальных функций, каждая из которых может быть «доверенной» для конкретной конфиденциальной ВМ.
Комментарии (44)
- Критики считают, что Confidential Computing (CC) — это скорее маркетинговый трюк облачных провайдеров, чем реальная защита: аппаратная основа часто уязвима и не может быть исправлена.
- Даже при шифровании памяти вы всё равно работаете на чужом железе, которое теоретически могут модифицировать для сниффинга или извлечения данных.
- Для многих CC — способ «галочки» под GDPR, особенно в медицинских исследованиях, но реальная польза пока минимальна.
- Apple реализовала собственную версию CC качественно, но она закрыта и только для экосистемы Apple.
- Участники соглашаются: если ваша модель угроз не позволяет доверять провайдеру, используйте физические серверы; «доверие» в облаке всегда остаётся условным.
Librebox: An open source, Roblox-compatible game engine
Librebox-demo — репозиторий движка Librebox: открытой альтернативы Roblox.
Цель — совместимость с Roblox-играми и инструментами, но без проприетарных ограничений.
Ключевое
- Язык: C++ + Lua
- Лицензия: MIT
- Статус: ранняя альфа
- Сборка: CMake + vcpkg
Быстрый старт
git clone https://github.com/librebox-devs/librebox-demo.git
cd librebox-demo
cmake -B build -S . -DCMAKE_BUILD_TYPE=Release
cmake --build build
./build/librebox
Функции
- Загрузка
.rbxlи.rbxm - Базовый рендер OpenGL/Vulkan
- Серверный режим headless
Планы
- Поддержка плагинов
- Web-клиент
- Мобильные порты
PR и issue приветствуются.
Комментарии (66)
- Librebox — это пока демо с очень ограниченным подмножеством API Roblox; серверов и сети нет.
- Пользователи надеются на Linux-клиент и сохранение творений Roblox, но опасаются юридических проблем.
- GitHub и Discord проекта выглядят странно: разработчики скрыты, активности мало, но код реально пишется.
- Некоторые считают, что такие проекты важнее для Roblox, чем борьба с хищниками на платформе.
- Есть предложения переименовать в OpenBox из-за лицензии MIT, но другие напоминают, что MIT — это тоже «свободно».
I made a floppy disk from scratch
Создал дискету с нуля
Polymatt снял видео, где делает 3,5-дюймовую дискету «с нуля».
Сложнее всего оказалось не пластиковый корпус, а сама магнитная плёнка: она толщиной в микроны и требует точного нанесения химикатов на PET-плёнку.
Автор также сам изготовил «drag knife» — резак для точных надрезов бумаги и плёнки, вместо покупки за $150.
Вдохновляющий процесс: используя станок, он делает для него новые инструменты.
Комментарии (72)
- Видео понравилось, но кажется «незаконченным»: дошли до интересного и оборвались.
- Критика: неясно, удалось ли записать хотя бы 1 КиБ данных; не раскрыты пропорции смеси и способ получения оксида железа.
- Некоторые считают формат 3½″ выбран ради спонсора-CNC, а 5¼″ или 8″ было бы проще.
- В комментариях приводят примеры более «от начала до конца» проектов и способы самодельного магнитного порошка.
- Несмотря на полу-фейл, автору аплодируют за честность и энтузиазм.
Developer's block
Разработчики тоже сталкиваются с «блоком» — аналогом писательского, но часто более тяжёлым. Причины и способы выбраться.
Почему зависаем
Новый проект
Хочется сделать «лучше всех»: покрыть тестами, написать документацию, придерживаться стиля, CI, кросс-компиляция, обработка ошибок, конкурентность… Практики полезны, но вместе превращаются в стену.
Старый проект
• Новый код — перегруз: спешишь понять, язык незнаком.
• Старый код — упал мотивация или переутомление.
Как разблокироваться
-
Учись постепенно
Запусти как пользователь, почитай тесты, спрашивай коллег. Не знаешь язык — выдели время на основы. -
Отдыхай
После большой фичи бери «мелкие дела» или техдолг. -
Двигайся мелкими шагами
Минимально реализуй задачу, потом улучшай тесты и доки. -
Прототипируй
«Спайк» — быстрый черновик по happy path. Оставь в ветке, потом перепиши аккуратно. -
Документируй черновиком
Не полируй раньше времени: простой формат, потом доведёшь.
Комментарии (90)
- Сон, прогулки, спорт и медитация — лучший способ «разблокировать» мозг и получить новые идеи.
- Ранние «грязные» MVP и повторное использование boilerplate снижают страх перед чистым листом.
- LLM помогают быстро набросать черновик, преодолеть ступор и даже подсказать имена.
- Когда совсем застрял, начни писать любой код или даже инфраструктуру для отладки — движение разгоняет.
- Главное — не игнорировать сигналы тела: делай паузы, иначе выгоришь.
SpaCy: Industrial-Strength Natural Language Processing (NLP) in Python
spaCy — промышленная библиотека NLP на Python.
Быстрая, точная, поддерживает 70+ языков.
Основное
- Установка
pip install -U spacy python -m spacy download en_core_web_sm - Быстрый старт
import spacy nlp = spacy.load("en_core_web_sm") doc = nlp("Apple is looking at buying U.K. startup for $1 billion") for ent in doc.ents: print(ent.text, ent.label_)
Возможности
- токенизация, POS-теги, синтаксис, NER
- готовые модели CNN/Transformer
- обучение и дообучение
- интеграция с PyTorch, Transformers, FastAPI
- GPU/Apple Metal
Примеры
- NER: выделение имён, дат, денег
- Matcher: поиск паттернов
- Projects: end-to-end пайплайны
- spaCy LLM: LLM-интеграция без кода
Ресурсы
Комментарии (40)
- В эпоху LLM традиционный NLP (SpaCy) всё ещё нужен: дешевле, быстрее, работает на обычном железе и не требует постоянной оплаты провайдеру.
- Участники хвалят SpaCy за отличный API, скорость, надёжность NER и удобство пайплайнов; активно используют в enterprise, RAG-метриках и даже на Raspberry Pi.
- Некоторые задачи (классификация, сентимент) LLM решают хуже и дороже, поэтому возвращаются к дискриминативным моделям.
- Сообщество отмечает, что проект немного сократился (v4 задерживается), но библиотека по-прежнему поддерживается и считается недооценённой.
World Wide Lightning Location Network
WWLLN — глобальная сеть датчиков молний Университета Вашингтона, фиксирует разряды по всей планете.
Сообщения
- 28 мая 2024: спутниковые анимации временно недоступны.
- 30 янв. 2023: запущен новый сайт; старый остаётся.
Полезные ссылки
- Публикации (>2 200 работ)
- Тропические циклоны
- Климатология молний
- Вулканический монитор
- Google Earth-файл
- Серверы: Seattle / NZ
Карты
- Молнии за час: белые — последние 10 мин, далее жёлтый → бордовый (60 мин). Зелёные — активные датчики.
- Суточная плотность вспышек обновляется после 00 UTC.
Анимации
Видео WWLLN (синие точки) поверх спутниковых снимков:
GOES-19 CONUS, Himawari Full Disk, SE Asia, Central Pacific, North Pacific.
Спектрограммы
VLF-спектры со всех датчиков.
Как работает
- Для расчёта координат нужно ≥5 датчиков, расположенных на тысячи км.
- Детектируется ~30 % разрядов ≥30 кА.
- Сейчас >70 датчиков; требуется ~500 для равномерного покрытия каждые 1000 км.
- Принимаем заявки на размещение датчиков: хост получает все мировые данные бесплатно.
Данные
Архив с 15 авг 2004 г. продаётся; участники сети получают ежемесячную подписку бесплатно, данные каждые 10 мин.
Комментарии (31)
- Системы обнаружения молний (WWLLN, Blitzortung) используют сети приёмников с точными GPS-временными метками для триангуляции разрядов.
- Blitzortung.org работает на обычном железе (STM32) и предоставляет карты на lightningmaps.org и map.blitzortung.org.
- Точность позиционирования — до 5 км при 100 нс синхронизации; южное полушарие лучше покрыто WWLLN.
- Данные в реальном времени бесплатны, но полные логи и API обычно платные.
- Участники обсуждали навигационные идеи, искажения Меркатора и «живые» звуковые эффекты гроз.