59798
Любые вопросы по сотрудничеству: @ramilkr Если нужен токен: https://telega.in/c/nuancesprog NOP::Humor - https://t.me/nophumor NOP::Recruiter Удаленка- https://t.me/nopremote РКН: 4977653520
Идемпотентность: как не отменить действие при повторе
Клик по лайку сохраняет его, но ответ теряется из-за обрыва. Повторный запрос находит лайк и удаляет его, отменяя действие.
Повторный запрос должен не менять состояние повторно. Для этого API должен описывать желаемое состояние, а не переключение.
Для операций-переключателей используй идемпотентный ключ и сохраняй результат. Заменяй toggle на PUT для установки лайка и DELETE для снятия.
🔗 Подробнее
@nuancesprog #Infrastructure
PHP умирает после каждого запроса: как устроен Zend Engine
PHP использует Shared-Nothing Architecture: каждый запрос выполняется в своей памяти.
После ответа Zend Engine мгновенно очищает память запроса.
Утечки памяти не переживают запрос.
Фатальная ошибка убивает один воркер, мастер заменяет его меньше чем за миллисекунду.
Файлы не парсятся заново на каждый запрос.
Включи OPcache — он хранит скомпилированные опкоды в общей памяти.
🔗 Подробнее
@nuancesprog #Languages
Спецификации рождаются из кода, а не наоборот
Автор описывает подход, обратный привычному spec-driven development.
Сначала идёт код, а спецификация пишется под готовый результат.
Разработчику это важно, потому что поведение описывается по факту.
Так спецификация не врёт и не отстаёт от реальной системы.
Попробуй писать описания после того, как код заработает.
Но для команд с обязательным планированием это может не подойти.
🔗 Подробнее
@nuancesprog #Opinion
Pivot ускорил GROUP BY с Top K
Pivot значительно ускорил GROUP BY с Top K. Раньше аналитическая база агрегировала все 4096 партиций, даже ненужные.
Такие запросы, как «топ 10 товаров», встречаются часто. При 4096 партициях топ-10 группы лежат максимум в десяти из них.
Общий счётчик партиции слишком груб: сто товаров по пятнадцать заказов могут обмануть проверку. Если все слоты меньше порога TopK, партицию безопасно пропустить.
🔗 Подробнее
@nuancesprog #Data
Порт 0: порт, которого не существует
Порт 0 зарезервирован и не используется для реальных соединений. В TCP и UDP он означает особое состояние, а не конкретный адрес.
Иногда его используют как маркер «любой порт» при создании сокета. Это может привести к неожиданному поведению, если забыть о нюансе.
Не полагайся на порт 0 как на обычный порт. Проверяй, что операционная система подставит реальный порт при соединении.
🔗 Подробнее
@nuancesprog #Infrastructure
GitHub переделал внутреннее хранилище Git
GitHub представил новую архитектуру хранения Git-репозиториев.
Она должна ускорить работу с кодом на платформе.
Для разработчика это значит более быстрые клонирования и пуш.
Крупные репозитории станут меньше нагружать серверы.
Тебе не нужно менять свои Git-команды.
Изменения касаются только внутренней кухни GitHub.
🔗 Подробнее
@nuancesprog #Infrastructure #Git
Unleash: опенсорсная платформа фича-флагов
Unleash — открытая платформа управления фичами. С ней команды выкатывают фичи постепенно и без отдельных веток.
Это самый популярный опенсорсный инструмент фича-флагов на GitHub. Есть 15 официальных SDK и больше 15 community-версий.
Запустить локально просто: git clone и docker compose up -d. Веб-интерфейс откроется на localhost:4242 с логином admin и паролем unleash4all.
🔗 Подробнее
@nuancesprog #Tools
MCP: как Model Context Protocol связывает ИИ и данные
MCP — открытый стандарт для связи ИИ-приложений с инструментами и данными. Сервер описывает возможности, приложение передаёт их модели.
Модель решает, что использовать, но с сервером напрямую не общается. JSON-RPC работает через stdin/stdout или один HTTP-эндпоинт, серверы могут отвечать.
MCP не просто JSON-RPC: он задаёт методы и согласование возможностей. Интерактивная схема на сайте показывает поток сообщений между участниками.
🔗 Подробнее
@nuancesprog #AI
Кодек ULC: почти Opus на 4% CPU N64
Автор нашёл кодек ULC, созданный для Game Boy Advance с 16 МГц CPU. Он даёт 44100 Гц стерео с битрейтом как у Opus на 4% CPU N64.
N64 имеет 93 МГц CPU и маленькие картриджи, поэтому аудио сжимали ADPCM. ULC — трансформационный кодек без сложного энтропийного кодирования, поэтому дешевле MP3.
Кодек открыт и написан на C, распаковка блока занимает ~150 строк. Качество страдает на 16kbps, но для некоторых задач сгодится.
🔗 Подробнее
@nuancesprog #Tools
Провайдер подменял DNS-запросы
Автор заметил, что один внешний сайт не открывался из его домашней лаборатории. Cloudflare DoH вернул другой IP, и выяснилось, что провайдер подменяет ответы.
Даже свой Unbound не спасает: запросы к корневым серверам идут без шифрования. DNSSEC не шифрует трафик, а только проверяет подписи ответов.
DoH и DoT шифруют запросы, но ты доверяешь самому резолверу. Автор использует AdGuard с dnscrypt-proxy и Cloudflare как запасной вариант.
🔗 Подробнее
@nuancesprog #Security
Анаграммы за 11 наносекунд на слово
Дэйв Андерсен написал решатель для игры Word Ladder с анаграммами. Словарь Scrabble на 178 690 слов он обработал сначала за 173 нс на слово.
Оптимизация началась с устранения аллокаций векторов и медленного хеша по умолчанию. Упаковка счётчиков букв в u128 ускорила код до 31 нс на слово. Автор также нашёл трюк с идентификатором из простых чисел в u64.
Не переусложняй: для поиска анаграмм одного слова хватит простой хеш-таблицы. Для полного словаря полезно упаковывать данные в целые числа.
🔗 Подробнее
@nuancesprog #Languages #Rust
Как переписанная Zig libc замедлила SQLite в 12 000 раз
Автор сервиса анализа шахмат на Rust заметил: вставка около 40 000 JSON-записей в SQLite заняла минуты. На Mac проблема не проявлялась, а на Linux вставка загружала ядро процессора.
Причиной стала реализация strspn в Zig libc, которая измеряет длину строки каждый раз. Токенизатор при разборе JSON постоянно вызывает эту функцию, создавая квадратичную сложность.
Для файла 1.2 МБ замедление составило примерно 12 000 раз по сравнению с обычной версией. Автор убрал пробелы из JSON и перевёл сборку на Linux-контейнеры без Zig.
🔗 Подробнее
@nuancesprog #Infrastructure
В Puppet нашли RCE с рейтингом CVSS 9+
Исследователи Neodyme нашли две критические уязвимости в Puppet. Одна позволяет выполнить код на сервере в конфигурации по умолчанию.
Проблема существует с 2021 года и есть в open-source Puppet 6.24.0. Атакующему достаточно быть обычным агентом с валидным клиентским сертификатом.
Баг прячется в десериализации отчётов агента на порту 8140. Обновите Puppet Enterprise или форк OpenVox до пропатченной версии.
🔗 Подробнее
@nuancesprog #Security
Handles are the better pointers (2018)
Автор делится подходом: вместо указателей возвращать индексные дескрипторы.
Его опыт — 15+ лет борьбы с умными указателями в больших C++ проектах.
Такой код тормозит из-за промахов кэша, а не из-за алгоритмов.
Умные указатели не спасают от фрагментации и ложных утечек.
Централизуй управление памятью в системах и группируй одинаковые объекты в массивы.
Наружу отдавай только индекс-дескриптор, а не указатель.
🔗 Подробнее
@nuancesprog #Languages #C
Ubuntu LTS всё ещё без патча для CVE-2026-98432
Ubuntu так и не выпустила исправленные ядра для критической уязвимости CVE-2026-98432. Дыра получила рейтинг CVSS 9.8 и затрагивает LTS 22.04, 24.04 и 26.04.
Операторы этих релизов не имеют официального пакета, который закрывает саму брешь. Особенно страдают интернет-доступные и мультитенантные self-hosted системы, полагающиеся на изоляцию ядра.
Ubuntu не назвала сроки выхода обновлений, и это главный риск. Администраторам остаётся сидеть на стоковом ядре, искать обходные меры или переносить нагрузку.
🔗 Подробнее
@nuancesprog #Security #Linux
RIP, Harvest
Harvest, сервис учёта времени и счетов для фрилансеров, купила Bending Spoons.
Компания подняла цену с $13.32 до $133.98 в месяц.
Взамен обещают безлимитный тариф, который не отличается от прежнего.
Дешёвый план за $12.65 добавляет 2% комиссии к обычным трём процентам эквайринга.
Поддержка больше не читает письма, а отвечает длинными простынями от языковой модели.
Автор ищет замену: в комментариях советуют Cushion с нулевой наценкой и Odoo.
🔗 Подробнее
@nuancesprog #Opinion
JIT-рендеринг растрового текста для микроконтроллеров
Raph Levien показал JIT-рендеринг растрового текста для RP2350. Он генерирует код на лету под конкретную строку.
Это нужно для проектов с race-the-beam: бюджет всего 6 циклов на пиксель. Обычный Rust не укладывается, автор пишет на ассемблере и своём языке symbolasm.
Этот подход встроен в его рендерер vic-2350, но подойдёт и для фреймбуфера. Если нужен быстрый текст на RP2350, стоит изучить генерацию кода под строку.
🔗 Подробнее
@nuancesprog #Infrastructure
Claude Code: “Don’t Ask Again” раскрывает пароли
В 1,122 публичных файлах на GitHub нашли пароли. Их оставил Claude Code после команды «больше не спрашивать».
Разработчику это важно: агент сохраняет секреты в открытых репозиториях. Ты можешь не заметить, как токен утёк в историю.
Проверь свои публичные репозитории на такие забытые команды. Удали секреты и включи локальное хранение.
🔗 Подробнее
@nuancesprog #Security
Forwarded: веб-фреймворки зря доверяют этому заголовку
Некоторые фреймворки, включая Rails, Spring и Jetty, по умолчанию читают заголовок Forwarded. Большинство прокси и CDN не трогают этот заголовок, пропуская его дальше.
Поэтому злоумышленник может подменить IP клиента или имя хоста. Это позволяет обходить ограничения по IP или обманывать письма сброса пароля.
Проверь, какие заголовки твой прокси на самом деле перезаписывает. Настрой прокси, чтобы он отбрасывал недоверенные заголовки Forwarded и X-Forwarded-*.
🔗 Подробнее
@nuancesprog #Security
PostgreSQL Internals: PDF о внутреннем устройстве базы
Этот PDF рассказывает о внутреннем устройстве PostgreSQL. Он лежит на сайте edu.postgrespro.com.
Разбор внутренностей полезен для отладки медленных запросов. Это помогает выбирать правильные индексы и планы.
Файл подходит для вдумчивого чтения без интернета. Скачать можно по прямой ссылке ниже.
🔗 Подробнее
@nuancesprog #Infrastructure #Postgres
Разобрал приложение спортзала, чтобы не видеть соцсеть
Автор поста не хотел листать соцсеть в приложении спортзала. Он решил разобрать его и вытащить логику QR-кода.
Код меняется каждые 15 секунд и шифруется AES-128-CTR. Ключи нашлись в логах приложения на рутованном телефоне.
Автор собрал SvelteKit-приложение, которое генерирует код локально. Но ключи могут ротироваться, а легальность такого обхода под вопросом.
🔗 Подробнее
@nuancesprog #Security
pwn.college — платформа для практики кибербезопасности
pwn.college — открытая платформа для практики навыков кибербезопасности.
Её создала команда хакеров из Arizona State University.
Платформа бесплатна и доступна всем желающим по всему миру.
Ты получишь пояс и будешь проходить модули в правильном порядке.
Не публикуй решения: это обесценит обучение для будущих студентов.
Материалы лекций можно свободно использовать в своих курсах с указанием авторства.
🔗 Подробнее
@nuancesprog #Security
Полная верификация стека — новый тренд
Сразу несколько команд анонсировали полную формальную верификацию софта и железа. Часть проверок выполняют ИИ-агенты, часть нацелена на ИИ-код.
Раньше проверяли только маленькое ядро или упрощённую модель программы. Теперь цель — доказать корректность всего стека вплоть до машинного кода.
Но писать боевой софт на Lean тяжело: мало разработчиков и библиотек. Автор считает, что языку нужны более быстрая проверка типов и оптимизатор.
🔗 Подробнее
@nuancesprog #AI
📬 Дайджест недели
Лучшее за неделю:
• H.264 Is Magic
• Unslop: навык Claude против «вайбкоднутого» дизайна
• Astra читает и правит веса нейросетей напрямую
• Почему после 6 лет я разочаровался в GraphQL
• Пост об Astra и Qwen вводит в заблуждение
• Инженерия для медленного интернета
• Linux: уязвимость TCP use-after-free с CVSS 9.8
Мимо ленты, но стоило внимания:
• Verlintas/NOIR — 手机隐私审计:用 adb 扫出 Android 应用的权限、上报端点与数据流向,并给出可回滚的处置。Desktop Android leak audit: permissions, endpoints, data flows, reversible fixes.
• Postman silently auto-installs AI plugins and attempts to share all API data
• Sleep framework: A new way for LLMs to retain knowledge in continual learning
• Malware uses LLMs to rank victims by how much they're worth
• U2F support in OpenSSH HEAD
Наша сетка: 😄 юмор — @nophumor · 💼 удалёнка — @nopremote
@nuancesprog #Digest
Десять лет реверса: кооператив в DOS Wing Commander
Автор и его брат с детства мечтали играть в Wing Commander вдвоём как ведомые. После десяти лет реверса памяти он запустил сетевой кооператив в DOS-версии.
Он использовал дампы памяти DOSBox и сравнивал снимки для поиска координат. Такой подход наглядно показывает, как реверсить игры без исходников.
Если интересен реверс, в статье описан весь путь от дампов до сетевых пакетов. Но учти, что метод привязан к особенностям DOSBox и конкретной игры.
🔗 Подробнее
@nuancesprog #Tools
Anthropic показала FlashProve для проверки вывода LLM
Система доказывает, что ответ сгенерировала именно заявленная модель. Она использует zkSNARK для доказательства и скрытия весов.
Провайдер может доказать, что ответила именно та модель, не раскрывая её веса. Для Llama 4 Maverick (400B параметров) один H100 даёт около 110 токенов/с.
Это промежуточный результат, а не готовый план. Доказательство требует в 70–95 раз больше GPU-времени, чем запуск модели на vLLM.
🔗 Подробнее
@nuancesprog #Security
Пост об Astra и Qwen вводит в заблуждение
Автор разобрал пост об Astra и Qwen. Абстракт создаёт впечатление, что модель улучшает Qwen, просто глядя на сырые веса.
Все опыты с реальными языковыми моделями используют Python. Чтение сырых весов есть только в опытах с сетями 17K–172K весов.
Сравнивай такие посты по таблице экспериментов, а не по абстракту. Qwen-результат поднял MATH-500 с 7.9 до 48.1 процента, но запускает модель на 50 батчах.
🔗 Подробнее
@nuancesprog #AI
The Internals of PostgreSQL: глубокий разбор СУБД
Этот сайт подробно разбирает архитектуру PostgreSQL. Автор постоянно обновляет материал, добавляя новые главы.
Понимание внутренностей помогает администрировать и интегрировать базу. Ты найдёшь разбор TOAST, параллельных запросов и буферов.
Ресурс подходит для систематического изучения PostgreSQL. Но учти, что глава про логическую репликацию ещё бета.
🔗 Подробнее
@nuancesprog #Infrastructure #Postgres
Победа над «спагетти-демоном» в dxil-spirv
Автор dxil-spirv выбросил старый структуризатор из девяти тысяч строк.
Он заменил его реализацией goto_if из Mesa.
Раньше код стремился сохранить читаемость и ломался на сложных шейдерах.
Теперь приоритет — корректность, а производительность остаётся на уровне RADV.
Для проверки автор гоняет случайные CFG через GPU и сравнивает битовый результат.
Фаззер уже нашёл несколько багов в самой Mesa, их чинят.
🔗 Подробнее
@nuancesprog #Tools
Astra читает и правит веса нейросетей напрямую
Astra писала игровые сети, которые обходят обученные PPO за 100 млн шагов. Ещё она исправила веса Qwen3.5-0.8B, подняв MATH-500 с 7,9% до 48,1%.
Это Weight-Space Programming: LLM оптимизирует веса без градиентов. Такой подход может изменить оптимизацию и интерпретируемость нейросетей.
Пока это ранние результаты на GPT-6 Astra, нужно проверять воспроизводимость. Но уже стоит следить: оптимизаторы вроде Adam могут уступить место LLM-редакторам весов.
🔗 Подробнее
@nuancesprog #AI