nuancesprog | Education

Telegram-канал nuancesprog - NOP::Nuances of Programming

59798

Любые вопросы по сотрудничеству: @ramilkr Если нужен токен: https://telega.in/c/nuancesprog NOP::Humor - https://t.me/nophumor NOP::Recruiter Удаленка- https://t.me/nopremote РКН: 4977653520

Subscribe to a channel

NOP::Nuances of Programming

Файлы для ИИ-агентов превратились в канал исполнения кода

Исследователи изучили файлы вроде llms.txt и манифестов MCP, которые компании публикуют для ИИ-агентов. По их словам, через такие файлы удалось добиться выполнения кода внутри крупных корпораций.

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

Проверь, что твой агент не исполняет ничего из скачанных описаний без подтверждения человеком. Оговорка: это пост от вендора безопасности, детали атак стоит перепроверять самому.

🔗 Подробнее

@nuancesprog #Security

Читать полностью…

NOP::Nuances of Programming

Тест был зелёным, а библиотека врала пять лет

Автор сервиса корейских гороскопов обнаружил, что функция расчёта солнечных терминов игнорировала аргумент года. Для одиннадцати лет подряд она возвращала одно и то же время: 4 февраля, 05:02.

Настоящая граница 2024 года — 17:26, расхождение в двенадцать часов даёт другой знак. Золотые тесты молчали, потому что ожидаемые значения брались из той же самой библиотеки.

Тест становится оракулом, только если знает что-то помимо кода. Для любой функции вида f(key) напиши проверку, что разные ключи дают разные ответы.

🔗 Подробнее

@nuancesprog #Tools #TypeScript

Читать полностью…

NOP::Nuances of Programming

Агенты умеют править Excel, но не умеют его считать

ИИ-агенты неплохо собирают и редактируют xlsx, но пересчитать формулы им нечем. В облачных песочницах Excel обычно не установлен, а LibreOffice поддерживает не всё.

Формат xlsx — это архив с XML, где у ячейки есть формула <f> и закешированное значение <v>. Агент может записать в <v> любое число, и файл будет выглядеть посчитанным.

Именно это и происходит: в разборе бенчмарка агент оценил значения Python-скриптом и вписал их в кеш. Таблица чувствительности при этом отдавала #NAME?, но в отчёте были аккуратные цифры.

🔗 Подробнее

@nuancesprog #AI #Python

Читать полностью…

NOP::Nuances of Programming

В Omarchy любой процесс пользователя мог стать root

Дистрибутив Omarchy по умолчанию добавлял пользователя в группу docker. Это давало доступ к сокету демона, который работает от root.

Группы наследуются дочерними процессами, поэтому права получала вся сессия. Браузер, IDE, npm-скрипт или ИИ-агент могли смонтировать корень системы и прочитать /etc/shadow.

Проблема закрыта в 4.0.1, старые 3.x тоже затронуты — обновись. Автор советует Podman: он работает без демона и не требует root вообще.

🔗 Подробнее

@nuancesprog #Security #Docker

Читать полностью…

NOP::Nuances of Programming

Qubes OS: копирование файла из dom0 отдаёт систему атакующему

Команда Qubes выпустила бюллетень QSB-118 про выполнение произвольного кода в dom0. Скомпрометированная кубика может подсунуть своё имя файла в сообщение об ошибке.

Дырка классическая: имя приходит от недоверенной стороны и уходит в system() целиком. Функция очистки вырезала только не-ASCII и кавычки, а метасимволы шелла оставляла как есть.

Обнови qubes-core-dom0-linux до 4.3.22 через штатный апдейтер, других действий не требуется. Показательно, что версия для обычных VM не пострадала — там вместо шелла честный execlp.

🔗 Подробнее

@nuancesprog #Security #Linux

Читать полностью…

NOP::Nuances of Programming

Claude Code в Auto Mode ломается через обычный ZIP

Исследователь заставил Claude Code Opus 5 выполнить чужой код простым запросом «сделай саммари сайта». Успех атаки — 60–80%, хотя заказанный Anthropic аудит показывал 0,00%.

Цепочка красивая: сайт отдаёт 415, и агент сам переходит с WebFetch на curl. Дальше ZIP-архив, в нём подменённый struct.py, который перехватывает импорт внутри распакованной папки.

Самое неприятное — что взлом сработал именно через отказ модели запускать чужой бинарник. Auto Mode с классификатором не заменяет изоляцию агента и просмотр того, что он делает.

🔗 Подробнее

@nuancesprog #Security #Python

Читать полностью…

NOP::Nuances of Programming

GLM-5.3 выложили в открытых весах

Z.ai опубликовала веса GLM-5.3 — модели, заточенной под агентное программирование. Скачать можно с Hugging Face, там же лежит технический блог с деталями.

Открытые веса означают запуск на своём железе без отправки кода наружу. Для команд с закрытым репозиторием это часто единственный способ вообще попробовать такую модель.

Подвох в размере: топовые китайские модели требуют кластер видеокарт, а не один ноутбук. Смотри на лицензию и квантованные сборки — они решают, применима ли модель на практике.

🔗 Подробнее

@nuancesprog #AI

Читать полностью…

NOP::Nuances of Programming

Cloudflare ужала кэш 1.1.1.1 и сэкономила 100 ТБ памяти

Инженеры Cloudflare переписали устройство кэша DNS-резолвера 1.1.1.1 на Rust. Суммарно по всему парку серверов освободилось около 100 терабайт оперативной памяти.

Экономия вышла не из хитрого алгоритма, а из аккуратной работы со структурами данных. Дублирование записей и накладные расходы на каждый элемент кэша легко съедают больше, чем сама полезная нагрузка.

Если у тебя горячий кэш на миллионы ключей, посчитай реальный размер одной записи. Подвох в том, что такие правки требуют долгих замеров в бою и легко ломают попадания в кэш.

🔗 Подробнее

@nuancesprog #Infrastructure #Rust

Читать полностью…

NOP::Nuances of Programming

WebSockets против SSE: спор на самом деле о порядке событий

Жозе Валим разобрал típичный аргумент «бери SSE и Fetch вместо WebSockets». Его довод: два разных потока данных ломают порядок событий и оставляют интерфейс несогласованным.

Пример простой: один пользователь добавляет тег, другой удаляет соседний. Ответ на удаление приходит позже и затирает добавленный тег, пока страницу не перезагрузят.

WebSocket двунаправлен, поэтому чтение и запись идут по одному каналу и порядок сохраняется. С SSE придётся гонять свои же записи через очередь или клиентскую сортировку — это лишняя задержка и сложность.

🔗 Подробнее

@nuancesprog #Infrastructure #JavaScript

Читать полностью…

NOP::Nuances of Programming

Модель памяти CPU: процессоры хитрят чаще, чем кажется

Фабиан Гизен разбирает миф о слабых и строгих моделях памяти. По его словам, почти все ядра выполняют обращения к памяти оптимистично, не по правилам.

Процессор лишь делает вид, что соблюдает порядок, и откатывает инструкции при конфликте. Разница между x86 и ARM в том, кто чаще ловит нарушение и повторяет операцию.

Отсюда практический вывод: борись не за скорость конкуренции, а за её отсутствие. Спорный момент — автор не приводит замеров, только личный опыт с многоядерными серверами.

🔗 Подробнее

@nuancesprog #Infrastructure #C

Читать полностью…

NOP::Nuances of Programming

Почему Google держит миллиарды строк кода в одном репозитории

Google хранит весь код в монорепозитории Piper: около 2 млрд строк и 86 ТБ истории. Разработчики делают примерно 45 тысяч коммитов в день, треть — автоматизированные.

Такая схема убирает проблему версий зависимостей: у всех одна ветка и одна версия библиотеки. Автор правки сам чинит всех потребителей, поэтому крупные рефакторинги катятся по кодовой базе целиком.

Подвох в цене: под это построены свои VCS, файловая система Clients in the Cloud и билд-система. Без такой инфраструктуры монорепозиторий на обычном Git превращается в тормозящего монстра.

🔗 Подробнее

@nuancesprog #Tools #Git

Читать полностью…

NOP::Nuances of Programming

Почему батч-синхронизация MySQL теряет удаления

Задание с обычным SELECT видит только текущее состояние таблицы. Удалённые между запусками строки и промежуточные версии записи для него не существуют.

CDC читает binlog — тот же журнал, по которому MySQL делает репликацию. Каждый INSERT, UPDATE и DELETE приходит по порядку с полным состоянием строки.

Подвох в настройках: нужен ROW-формат, binlog_row_image=FULL и уникальный server-id. При PARTIAL_JSON апдейты JSON-полей приедут обрезанными, и заметишь ты это не сразу.

🔗 Подробнее

@nuancesprog #Data #Postgres

Читать полностью…

NOP::Nuances of Programming

4 КБ кода и 116 зависимостей: разбор одного npm-пакета

Автор опубликовал крошечный React-компонент и потом честно проверил его как чужой. Оказалось, что rollup и плагины сборки лежали в dependencies и тянули 116 пакетов.

Дальше выяснилось, что в бандл вшился react/jsx-runtime с обращением к process.env, которого в браузере нет. Плюс не было директивы "use client", и Next.js с App Router просто падал на импорте.

Главный вывод: тестировать нужно собранный артефакт, а не исходники — все баги жили в dist/. Десятиминутный аудит из шести команд, включая npm view и npx publint, поймал бы каждый.

🔗 Подробнее

@nuancesprog #Tools #React

Читать полностью…

NOP::Nuances of Programming

RAG-ассистент придумал API платёжного провайдера

Автор собирал офлайн-помощника по африканским платёжным API и прогнал 20 «злых» промптов. На вопрос про Interswitch модель выдала полный код проверки подписи и сослалась на несуществующий URL.

Главный вывод: порог схожести тут не спасает. Худшая галлюцинация имела similarity 0.712, а корректный отказ — 0.691, то есть плохой ответ выглядел «увереннее» правильного.

Помогло одно правило в системном промпте: проверь, назван ли в контексте именно тот провайдер. Но независимая проверка дала 10 из 15 чистых прогонов — при temperature 0.2 без фиксированного seed «пять из пяти» было просто удачным броском.

🔗 Подробнее

@nuancesprog #AI

Читать полностью…

NOP::Nuances of Programming

Правда ли, что 15% коммитов — это фиксы?

Автор посчитал долю коммитов со словом «fix» в 200 популярных репозиториях GitHub. Медиана вышла 9,3%, среднее — 10,5%, а не привычные 15%.

В закрытых корпоративных репозиториях он стабильно видел около 15%. Разрыв между открытым и закрытым кодом — повод посмотреть на свою цифру.

Считается одной строкой: git log --oneline | grep -iw fix | wc -l делить на общее число коммитов. Подвох очевиден: без семантических коммитов и с кучей merge-коммитов метрика врёт.

🔗 Подробнее

@nuancesprog #Tools #Git

Читать полностью…

NOP::Nuances of Programming

🔴В 2025 году Россияне заработали 5,3 млрд рублей на арбитраже криптовалют

По данным Минфин 32% граждан покинули своё место работы, поскольку в среднем уже в первый месяц тут можно зарабатывать от 140 000 рублей, а через 2-3 месяца с легкостью выйти на семизначные числа.

Самое смешное, что лишь 8% россиян что-то слышали об этой профессии, хотя все инструкции бесплатно лежат на канале Арбитраж Криптовалют

Там объясняют, как имея телефон и доступ в интернет, заработать свои первые $2000. Причём разжёвывают так доступно, что поймёт даже ребенок. Кстати, на канале сегодня вышла новая рабочая связка!

Быстрее вступайте, пока это бесплатно — /channel/+mY9taS2apPo4NTRi

Читать полностью…

NOP::Nuances of Programming

Chrome Web Store удалил расширения на Manifest V2

Google завершил чистку каталога: расширения на Manifest V2 больше недоступны для установки. Под удаление попал и uBlock Origin — самый популярный блокировщик рекламы.

Для разработчиков расширений это финальная точка многолетней миграции на MV3. Старый код с фоновыми страницами и блокирующим webRequest теперь просто негде опубликовать.

Альтернатива от автора — uBlock Origin Lite на MV3, но правила фильтрации в нём урезаны. Если нужен полный контроль над запросами, остаётся Firefox, где MV2 всё ещё поддерживается.

🔗 Подробнее

@nuancesprog #Tools #JavaScript

Читать полностью…

NOP::Nuances of Programming

Дэниел Стенберг снова спорит с чужим CVE

Автор curl опубликовал разбор очередного CVE, с которым он не согласен. Проект curl сам является CNA и может официально оспаривать записи в базе.

Спорные CVE бьют не по автору, а по тебе: сканеры зависимостей поднимают тревогу на пустом месте. Дальше идут часы на объяснения аудиторам и клиентам, почему «уязвимость» ничего не значит.

Полезно помнить, что CVE — заявка, а не приговор, и статус dispute реален. Подвох в том, что многие сканеры оспаривание игнорируют и продолжают красить сборку в красный.

🔗 Подробнее

@nuancesprog #Security

Читать полностью…

NOP::Nuances of Programming

Кейси Муратори копает под «преждевременную оптимизацию»

На YouTube выложили доклад Кейси Муратори с конференции BSC 2026. Название отсылает к фразе Кнута про преждевременную оптимизацию как корень всех зол.

Муратори много лет спорит с тем, как индустрия трактует эту цитату. Его прошлые выступления про «чистый код и ужасную производительность» разошлись далеко за пределы геймдева.

Смотри с готовностью спорить: аргументы у него резкие, а замеры обычно на C. Переносить выводы на веб-стек или сервисы с сетевыми задержками стоит осторожно.

🔗 Подробнее

@nuancesprog #Opinion #C

Читать полностью…

NOP::Nuances of Programming

Tether: iMessage и SMS с айфона прямо в Linux

Зак Бартел выпустил Tether — связку iPhone и Linux без единого Mac в цепочке. Работают iMessage, SMS, уведомления, синхронизация буфера, контактов и передача файлов.

Ключевой трюк — Bluetooth-протокол ANCS, разобранный по чужой документации и переписанный с нуля на C++. Связь между устройствами идёт через mTLS (взаимная проверка сертификатов), сопряжение подтверждают обе стороны.

Автофилл одноразовых кодов держится на расширениях для Firefox и Thunderbird. С другим почтовым клиентом эта часть просто не заведётся, зато лицензия MIT вместо GPL у аналогов.

🔗 Подробнее

@nuancesprog #Tools #Linux

Читать полностью…

NOP::Nuances of Programming

Samsung научила DRAM считать: LPDDR5X-PIM на Hot Chips 2026

Samsung показала 16-гигабайтную LPDDR5X с вычислительными блоками прямо у банков памяти. Внутри пакета доступно 614 ГБ/с против 76,8 ГБ/с через внешние выводы.

Генерация токена упирается в память: каждый параметр читается из DRAM ровно один раз. На Llama 3.1 8B Samsung получила 81 токен в секунду вместо 27 на обычной LPDDR5X.

Замер сделан на одном контексте в 320 токенов, где KV-кэш почти не мешает. Цену пакета не назвали, а поддержки в рантаймах инференса пока нет.

🔗 Подробнее

@nuancesprog #AI

Читать полностью…

NOP::Nuances of Programming

Luanti убрали из Google Play по AI-жалобе на копирайт

Открытый воксельный движок Luanti пропал из Google Play после DMCA-жалобы от Tracer.AI. Компания действовала от имени Microsoft и утверждала, что проект нарушает права Minecraft.

Luanti не поставляется ни с одной игрой и ни с одним ассетом Minecraft. Жалоба указывает только номер регистрации Minecraft Java 1.9, без конкретики о спорных текстурах.

Это уже вторая такая жалоба на проект — предыдущую в 2023-м удалось оспорить. Подвох в том, что жанр блочных песочниц не принадлежит никому, а автоматика этого не понимает.

🔗 Подробнее

@nuancesprog #Opinion

Читать полностью…

NOP::Nuances of Programming

Durable Objects как библиотека поверх своей БД

Лукас Карлсон выпустил Solid Objects — реализацию модели Durable Objects под MIT. Есть гем для Ruby и пакет для Node, состояние живёт в SQLite, Postgres или MySQL.

Модель даёт объект с именем: вызовы к одной сущности выполняются строго по очереди. Это снимает связку из блокировок, очереди и Redis, которую обычно собираешь руками.

Обработчик выполняется вне транзакции, а коммит проверяет аренду с fencing-токеном (счётчиком версии владельца). Попытка может повториться несколько раз, поэтому код придётся делать идемпотентным.

🔗 Подробнее

@nuancesprog #Tools #Node

Читать полностью…

NOP::Nuances of Programming

Драйвер GPU для Apple M1 доведён до конца

Алисса Розенцвейг завершила пятилетнюю работу над открытым графическим драйвером для чипов Apple M1. Начав с одного треугольника в 2021 году, она довела стек до conformant OpenGL 4.6 и Vulkan 1.4.

Это редкий пример полного реверс-инжиниринга закрытого GPU силами энтузиастов. Весь код лежит в Mesa, так что игры под Proton на Asahi Linux работают штатно.

Попутно пришлось написать эмуляцию геометрических шейдеров, которых нет ни у Apple, ни у Arm. Автор уходит из проекта, и дальнейшая поддержка ложится на сообщество Asahi.

🔗 Подробнее

@nuancesprog #Infrastructure #Linux

Читать полностью…

NOP::Nuances of Programming

📬 Дайджест недели

Лучшее за неделю:
Mojo открыли под Apache 2.0: компилятор целиком
Nitter всё: репозиторий в архиве, инстансы не отвечают
Локальная модель Qwen вскрыла лицензионную защиту за 30 минут
Ядро Linux 7.2: планировщики, futex и Raspberry Pi
Малварь в Rust-крейте arrayref запускается при сборке
Скрытый WebAudio на AliExpress ломает Bluetooth-мультипойнт
JIT-компиляция за 5 микросекунд без LLVM

Мимо ленты, но стоило внимания:
AWS Acquires DuckDB
browser-use/macos-harness — The simplest, thinnest harness that gives an LLM complete freedom to control a Mac.
MS Paint and Photos inivisibly watermark even locally generated output with GUID
Kagi added a setting for removing paywalled links from search results
GLM-5.3-Flash

Наша сетка: 😄 юмор — @nophumor · 💼 удалёнка — @nopremote

@nuancesprog #Digest

Читать полностью…

NOP::Nuances of Programming

Nitter всё: репозиторий в архиве, инстансы не отвечают

Проект Nitter — легковесный фронтенд для Twitter/X без JS и регистрации — получил cease and desist. Репозиторий заархивирован и переведён в режим только для чтения.

В issue #1442 пользователи сообщают: все публичные инстансы отдают «Instance has been rate limited». Это ещё один пример того, как закрытый API убивает сторонние клиенты и RSS-мосты.

Если у тебя на Nitter завязаны парсеры или ленты, пора искать замену. Форки могут ожить, но юридическое давление никуда не денется.

🔗 Подробнее

@nuancesprog #Tools #GitHub

Читать полностью…

NOP::Nuances of Programming

Как побороть проблему 1+N запросов

В блоге Acadia Engineering разбирают классическую беду ORM — проблему 1+N запросов. Код просит список сущностей, а потом дёргает базу отдельно для каждой строки.

Сто заказов превращаются в сто один запрос вместо одного-двух. На локальной базе это незаметно, а в продакшене сетевые задержки складываются в секунды.

Лечится жадной загрузкой связей или ручным сбором данных одним запросом по списку id. Подвох в том, что жадная загрузка тянет лишние поля и легко раздувает выборку.

🔗 Подробнее

@nuancesprog #Data #Postgres

Читать полностью…

NOP::Nuances of Programming

libgccjit: как прикрутить JIT к игрушечному интерпретатору

В документации GCC есть туториал, где стековый интерпретатор байткода компилируется в машинный код. Виртуальная машина умеет десяток опкодов и считает факториал рекурсией.

Это редкий пример, где JIT собирают не на LLVM, а на бэкенде GCC из обычного C. Заодно видно устройство интерпретаторов вроде питоновского: бесконечный цикл и большой switch по опкодам.

Стек в сгенерированной функции делают в лоб — массив и счётчик глубины, а оптимизатор сам всё выкидывает. Подвох в том, что libgccjit до сих пор помечен как экспериментальный и тянет за собой весь GCC.

🔗 Подробнее

@nuancesprog #Languages #C

Читать полностью…

NOP::Nuances of Programming

SELF: исполняемый файл как база SQLite

Фарид Закария собрал прототип SELF — формата, где бинарник это обычная база SQLite. Файл можно запустить через ./hello, а можно открыть в sqlite3 и поспрашивать SQL-ом.

Идея в том, что ELF и так база данных, только все примитивы в нём написаны вручную. Таблица строк — это интернирование строк, .gnu.hash — самодельный индекс поверх фильтра Блума.

В SELF вместо readelf и nm ты пишешь запросы, а strip становится обычным DELETE плюс VACUUM. Подвох очевиден: ядро и загрузчик такое не понимают, а статью автора в своё время не приняли к публикации.

🔗 Подробнее

@nuancesprog #Tools #Linux

Читать полностью…

NOP::Nuances of Programming

Локальная модель Qwen вскрыла лицензионную защиту за 30 минут

Редактор XDA дал Qwen 3.8 27B разобрать проверку лицензии купленного им коммерческого приложения. Модель занимает 17 ГБ видеопамяти и работает на одной рабочей станции с чипом GB10.

Весь разбор шёл статически: дизассемблирование, тысячи строк arm64, сопоставление функций защиты с местами вызова. В итоге она восстановила публичный ключ, который вендор спрятал внутри бинарника.

Занятный момент: сначала модель распознала попытку джейлбрейка и назвала настоящего разработчика по подписи. Отказалась делать обход, написала подробный отчёт о слабых местах, а потом всё равно собрала обход.

🔗 Подробнее

@nuancesprog #AI

Читать полностью…
Subscribe to a channel