Последние посты

NOP::Nuances of Programming
23 сент., 17:00
epoll и kqueue: как ядро научилось ждать эффективноСтатья разбирает, почему select и poll не тянут десятки тысяч соединений. Каждый вызов заставляет ядро перебирать весь список дескрипторов заново.epoll и kqueue переворачивают схему: ты один раз регистрируешь интерес, ядро само будит тебя. Стоимость ожидания зависит от числа активных событий, а не от общего числа соединений.Подвох в режимах доставки: level-triggered напоминает о готовности, пока ты не вычитал данные. Edge-triggered сообщает только о смене состояния, и недочитанный буфер легко превращается в зависшее соединение.🔗 Подробнее@nuancesprog #Infrastructure #Linux


NOP::Nuances of Programming
23 сент., 12:00
16 секунд расхождения часов остановили торгового ботаЧасы ПК после трёх дней простоя ушли вперёд на 16 секунд. Биржа отвергла подпись запроса, бот упал в режим бумажной торговли и «увидел» просадку 58%.Фолбэк писал в тот же файл состояния, что и боевой режим. Флаг остановки попал в реальные данные, хотя ни одного ордера не отправлялось.Автор стал брать время из заголовка Date в ответе биржи и держать отдельный файл для бумажного режима. Главный вывод: временный сбой должен прерывать запуск, а не менять режим работы.🔗 Подробнее@nuancesprog #Infrastructure #Python


NOP::Nuances of Programming
23 сент., 07:00
Четыре кэша Next.js: как перестать их путатьСтатья на dev.to разбирает четыре независимых слоя кэширования в App Router. Это мемоизация запросов, Data Cache, Full Route Cache и Router Cache на клиенте.Разработчики видят устаревшие данные и лепят cache: 'no-store' везде подряд. В итоге производительность падает, хотя проблема была в другом слое.Запомни зоны действия: мемоизация живёт один рендер, Data Cache — до ревалидации. Router Cache держит навигацию 30 секунд для динамики и 5 минут для статики.🔗 Подробнее@nuancesprog #Frontend #React


NOP::Nuances of Programming
22 сент., 17:00
Resident Evil 4 для GameCube разобрали до байтаЭнтузиасты выложили полную декомпиляцию отладочной сборки RE4 2004 года. Сборка воспроизводит main.dol и все 114 REL-оверлеев байт в байт.В репозитории ~555 тысяч строк C/C++ и ни одного файла на ассемблере. Это редкий пример того, как выглядит промышленный игровой код начала 2000-х изнутри.Подвох в тулчейне: нужен родной GCC 2.95.3 от SN Systems, собранный из их GPL-исходников. Ассетов и данных с дисков в репозитории нет — образы ищи сам.🔗 Подробнее@nuancesprog #Tools #C


NOP::Nuances of Programming
22 сент., 12:00
Софтварный сэндбоксинг: как ограничить процесс без rootАвтор Emilua разбирает основы песочниц и признаёт: цельной карты по теме до сих пор нет. За опору взято определение с Hack In The Box 2009: урезать права процесса программно, без прав администратора.Обычные UNIX-права под это не заточены — они про администрирование, а не про код приложения. Поэтому появились Capsicum во FreeBSD, seccomp и Landlock в Linux.Главный спорный тезис: user namespaces (основа Docker) для песочницы плохи. Внутри namespace процесс становится root, и ядро открывает пути, писавшиеся без учёта такого сценария.🔗 Подробнее@nuancesprog #Security #Linux


NOP::Nuances of Programming
22 сент., 07:00
Три страховки от тихих сбоев LLM-пайплайнаМодель, которая деградировала, отдаёт тот же JSON и те же 200 OK. Мониторинг зелёный, а очередь на модерацию полна мусора.Автор напоминает: в 2025-м 42% компаний свернули большинство своих AI-инициатив. Обычные сигналы отказа — таймауты, стектрейсы, скачки p99 — тут просто не срабатывают.Три меры: golden set как обычный тест по расписанию, PSI по входным данным и явный ответ «отдать человеку». Спорный момент — концовка превращается в рекламу библиотеки для лимита трат.🔗 Подробнее@nuancesprog #AI #Python


NOP::Nuances of Programming
21 сент., 17:00
VortexMQ: брокер сообщений на чистом Go без зависимостейРазработчик выложил VortexMQ — брокер в одном статическом бинарнике на 5,7 МБ. Заявлено 167 млн операций в секунду на кольцевом буфере и 2,33 млн через TCP.Брокер говорит по протоколу Redis, так что подойдут go-redis, redis-py или ioredis. В простое он ест меньше 15 МБ памяти против сотен мегабайт у Kafka и RabbitMQ.Подвох в цифрах: 167 млн — это внутренний бенчмарк буфера, а не сетевая нагрузка. Реальная пропускная способность в семьдесят раз ниже, а про надёжность хранения автор почти не пишет.🔗 Подробнее@nuancesprog #Infrastructure #Go


NOP::Nuances of Programming
21 сент., 12:00
ZCode тихо заливает всю историю Git в облакоРазработчик нашёл в ~/.zcode зашифрованный архив на 313 МБ со своим коммерческим проектом. Клиент упаковал 345 МБ рабочей папки и 564 раза пытался отправить их в Aliyun OSS.В архиве почти 87% занимает каталог .git — история коммитов, LFS-кэш и reflog. Значит, в облако уезжают удалённые ключи API, имена неотправленных веток и адреса внутренних репозиториев.Самое неприятное — RSA-ключ шифрования приходит с сервера, а приватная часть остаётся у него. Расшифровать файл на своём диске ты не сможешь, так что проверяй сетевую активность AI-редакторов сам.🔗 Подробнее@nuancesprog #Security #Git


NOP::Nuances of Programming
21 сент., 07:00
Папский шифр 1542 года вскрыли имитацией отжигаПисьмо кардинала Фарнезе из Рима пролежало нерасшифрованным почти пятьсот лет. В транскрипции 6577 цифр, а на MysteryTwister у задачи было ноль решений.Сложность не в ключе, а в отсутствии границ между кодами. Имитация отжига (случайный поиск с постепенным «остыванием») перебирала ключ и разбиение одновременно.Подвох в неоднозначности: пара 73 читается как «d», но и как «n m». Автор перебрал несколько схем ключа, и только самая простая дала читаемый итальянский.🔗 Подробнее@nuancesprog #Security


NOP::Nuances of Programming
20 сент., 17:00
OpenJev: решения агента из логитов, а не из JSONАвтор повторил закрытый сервис Jev на открытой Qwen3.5-4B и одной RTX 3090. Модель не генерирует текст, а сразу выдаёт вероятности заданных вариантов.Большинство решений в агентах — это «повторить или нет», то есть по сути if. Прямое чтение логитов заняло 1,02 с против 5,33 с у генерации компактного JSON-массива.Подвох в том, что ответы совпали с генерацией лишь на 18 критериях из 21. Автор честно называет это сравнением скорости, а не доказательством одинаковой семантики.🔗 Подробнее@nuancesprog #AI #Python


NOP::Nuances of Programming
20 сент., 12:00
ZCode от Z.ai молча выгружает твою .git-историю в облакоРазработчик ferstar разобрал десктопный агент ZCode и нашёл скрытую выгрузку рабочей папки. Клиент пакует весь проект вместе с .git, шифрует и льёт в Aliyun OSS — 313 МБ с одного репозитория.История коммитов — это не текущие файлы, а вся жизнь репозитория. Там лежат удалённые позже ключи, имена неотправленных ветвей и внутренние хосты из .git/config.Тумблеры в настройках не помогают: они управляют лишь обучением моделей и индексацией на сервере. Архив зашифрован ключом, приватная часть которого есть только у Z.ai — сам расшифровать не сможешь.🔗 Подробнее@nuancesprog #Security #Git


NOP::Nuances of Programming
20 сент., 07:00
У CrowdSec утёк приватный код из-за бэкдора в зависимости16 сентября CrowdSec подтвердил утечку исходников своего GitHub, случившуюся ещё в мае. Под раздачу попали код SaaS-консоли, часть AWS-скриптов, коннекторы и автоматизации.Вектором, скорее всего, стала скомпрометированная библиотека Tanstack с бэкдором. Она вытащила API-ключ с правом чтения приватных репозиториев — тот же сценарий, что и у Mistral AI.Компания заявляет, что данных клиентов и паролей в утечке нет, а токены уже ротированы. Спорный момент: «токенов для бокового перемещения не нашли» — это «пока не нашли», а не «их не было».🔗 Подробнее@nuancesprog #Security #GitHub


NOP::Nuances of Programming
19 сент., 17:00
Флаг pgbouncer=true в Prisma стоил четыре круга до базыКоманда KaribuKit полгода жила с запросами по 250 мс каждый. Prisma 5.22 с флагом pgbouncer=true оборачивала любой запрос в четыре отдельных обращения к пулеру.Между сервером в Хельсинки и Supabase в Дублине один круг стоит 47 мс. Простой SELECT 1 занимал 240 мс, а страница доступности номеров — восемь секунд.Переключение пулера в session mode (соединение закрепляется за клиентом) убрало флаг и сократило проверку до 1.88 секунды. Подвох в том, что арифметику посчитали ещё в марте, но списали на «медленную сеть», а саму задержку никто не замерил.🔗 Подробнее@nuancesprog #Infrastructure #Postgres


NOP::Nuances of Programming
19 сент., 12:00
Ubuntu 26.10 полностью переходит на coreutils из RustВ Ubuntu 26.10 на uutils переведены последние команды — cp, mv и rm. В 26.04 LTS их оставили на версиях GNU из-за TOCTOU-уязвимостей (гонка между проверкой файла и его использованием).Теперь весь базовый набор — ls, cat, chmod, du — собран на Rust, который ловит ошибки с памятью на этапе компиляции. Для тебя это значит, что скрипты на серверах Ubuntu будут работать поверх другой реализации утилит.uutils целится в полную совместимость с GNU и считает любое расхождение багом, так что разницы ты не заметишь. Подвох в том, что миграция уже проходила не гладко, а флаги и краевые случаи иногда ведут себя иначе.🔗 Подробнее@nuancesprog #Infrastructure #Rust


NOP::Nuances of Programming
19 сент., 07:00
Зелёные тесты от ИИ могут врать в лицоАвтор наблюдал, как весь набор тестов проходил при полностью сломанной фиче. Тесты проверяли, что функция что-то вернула, а не что именно.Модели обучены на чужих тестах, а те и сами часто поверхностные. ИИ не знает твоих правил: что скидки не складываются, а возврат не делается дважды.Проверенный приём — сломать фичу нарочно и прогнать тесты. Если всё зелёное, набор был декорацией, а не защитой.🔗 Подробнее@nuancesprog #AI


NOP::Nuances of Programming
18 сент., 17:00
📬 Дайджест неделиЛучшее за неделю: • Shopify возвращается с React Native на Swift и Kotlin • Google выпустила Artemis с чужим кодом без упоминания авторов • Агенты OpenAI устроили атаку на RubyGems и промолчали • Обратная разработка Apple Neural Engine спустя три года • Homebrew 7.0.0: быстрее ставит и жёстче изолирует • ERSC: Git-протокол снаружи, своё хранилище внутри • Forgejo 16.0.4 закрывает критическую RCEМимо ленты, но стоило внимания: • crwdla/tokentab — A CLI that reads Claude Code, Codex, and Gemini CLI session logs and works out how much they cost, by model, project, and day. • A Misalignment of AI in Mathematics • How to Write an Effective Software Design Document • Performance Improvements in .NET 11 • Can we stop with the uptime percentages?Наша сетка: 😄 юмор — @nophumor · 💼 удалёнка — @nopremote


NOP::Nuances of Programming
18 сент., 12:00
Маленькие трюки, которые экономят часы работыУилл Келехер собрал список мелких приёмов, не требующих глубокой теории. Например, git log -S pattern найдёт все коммиты, где строка появилась или исчезла.Такие крупицы знаний дают непропорционально много продуктивности. Знать про explain analyze в Postgres полезнее, чем прочитать ещё одну книгу по архитектуре.Автор год слал коллегам по одному трюку в день в Slack. Подвох в том, что чужой список часто бесполезен — свой собирается только практикой.🔗 Подробнее@nuancesprog #Tools #Git


NOP::Nuances of Programming
18 сент., 07:00
Как вытащили ключи подписи из штрихкодов водительских прав СШАИсследователь разобрал PDF417-штрихкоды на американских правах и восстановил ключи, которыми штаты их подписывают. Стандарт AAMVA предполагает цифровую подпись, но публичных ключей для проверки никто не раздаёт.Подпись без доступного публичного ключа проверить нельзя, поэтому её просто игнорируют почти все сканеры. А если ключ восстанавливается со стороны, то подделать валидный штрихкод становится делом техники.Если строишь проверку личности на чтении штрихкода, не считай подпись доказательством подлинности. Читай разбор целиком: там видно, как закрытость ключей ломает всю схему.🔗 Подробнее@nuancesprog #Security


NOP::Nuances of Programming
17 сент., 17:00
Токен из Docker-образа дал админку в репозиториях BasetenКоманда Strix просканировала домены Baseten и за 25 минут нашла живой GitHub-токен. Он лежал в конфиге публичного образа из открытого Harbor-реестра и работал с марта 2023 года.Токен принадлежал боту basetenbot и давал админ-права на основной репозиторий продукта и GitOps-репозиторий кластеров. Плюс чтение и запись в приватные репозитории, включая отдельные проекты клиентов.Подвох в том, что секрет был не в файлах, а в истории сборки образа. Удалить файл с ключом мало — поле history[].created_by хранит команду RUN целиком.🔗 Подробнее@nuancesprog #Security #Docker


NOP::Nuances of Programming
17 сент., 12:00
Linux-драйвер GPU для M4 Mac Mini собрали за месяцКоди Хо и Никлас написали с нуля драйвер AGX, совместимый с OpenGL ES 3.0. Chrome и Firefox тянут WebGL, Minecraft идёт на 200 fps.Обычно такой драйвер пишут годами, а тут уложились в недели. Помог гипервизор, который снимал трассы обращений macOS к прошивке GPU.Прошивочный ABI у A18 Pro вдвое сложнее, чем у M1: в полтора раза больше структур. Код пока не готов для пользователей, да и чистоту clean room ещё будут проверять.🔗 Подробнее@nuancesprog #Infrastructure #Linux

