N
NOP::Nuances of Programming
29.08.2026 17:00 · 👁 925
WebSockets против SSE: спор на самом деле о порядке событий
Жозе Валим разобрал típичный аргумент «бери SSE и Fetch вместо WebSockets». Его довод: два разных потока данных ломают порядок событий и оставляют интерфейс несогласованным.
Пример простой: один пользователь добавляет тег, другой удаляет соседний. Ответ на удаление приходит позже и затирает добавленный тег, пока страницу не перезагрузят.
WebSocket двунаправлен, поэтому чтение и запись идут по одному каналу и порядок сохраняется. С SSE придётся гонять свои же записи через очередь или клиентскую сортировку — это лишняя задержка и сложность.
🔗 Подробнее
@nuancesprog #Infrastructure #JavaScript
N
NOP::Nuances of Programming
29.08.2026 12:00 · 👁 1.3K
Драйвер GPU для Apple M1 доведён до конца
Алисса Розенцвейг завершила пятилетнюю работу над открытым графическим драйвером для чипов Apple M1. Начав с одного треугольника в 2021 году, она довела стек до conformant OpenGL 4.6 и Vulkan 1.4.
Это редкий пример полного реверс-инжиниринга закрытого GPU силами энтузиастов. Весь код лежит в Mesa, так что игры под Proton на Asahi Linux работают штатно.
Попутно пришлось написать эмуляцию геометрических шейдеров, которых нет ни у Apple, ни у Arm. Автор уходит из проекта, и дальнейшая поддержка ложится на сообщество Asahi.
🔗 Подробнее
@nuancesprog #Infrastructure #Linux
N
NOP::Nuances of Programming
29.08.2026 07:00 · 👁 1.4K
Модель памяти CPU: процессоры хитрят чаще, чем кажется
Фабиан Гизен разбирает миф о слабых и строгих моделях памяти. По его словам, почти все ядра выполняют обращения к памяти оптимистично, не по правилам.
Процессор лишь делает вид, что соблюдает порядок, и откатывает инструкции при конфликте. Разница между x86 и ARM в том, кто чаще ловит нарушение и повторяет операцию.
Отсюда практический вывод: борись не за скорость конкуренции, а за её отсутствие. Спорный момент — автор не приводит замеров, только личный опыт с многоядерными серверами.
🔗 Подробнее
@nuancesprog #Infrastructure #C
N
NOP::Nuances of Programming
28.08.2026 17:00 · 👁 1.5K
📬 Дайджест недели
Лучшее за неделю:
• 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
N
NOP::Nuances of Programming
28.08.2026 12:00 · 👁 1.6K
Почему Google держит миллиарды строк кода в одном репозитории
Google хранит весь код в монорепозитории Piper: около 2 млрд строк и 86 ТБ истории. Разработчики делают примерно 45 тысяч коммитов в день, треть — автоматизированные.
Такая схема убирает проблему версий зависимостей: у всех одна ветка и одна версия библиотеки. Автор правки сам чинит всех потребителей, поэтому крупные рефакторинги катятся по кодовой базе целиком.
Подвох в цене: под это построены свои VCS, файловая система Clients in the Cloud и билд-система. Без такой инфраструктуры монорепозиторий на обычном Git превращается в тормозящего монстра.
🔗 Подробнее
@nuancesprog #Tools #Git
N
NOP::Nuances of Programming
28.08.2026 07:00 · 👁 1.7K
Nitter всё: репозиторий в архиве, инстансы не отвечают
Проект Nitter — легковесный фронтенд для Twitter/X без JS и регистрации — получил cease and desist. Репозиторий заархивирован и переведён в режим только для чтения.
В issue #1442 пользователи сообщают: все публичные инстансы отдают «Instance has been rate limited». Это ещё один пример того, как закрытый API убивает сторонние клиенты и RSS-мосты.
Если у тебя на Nitter завязаны парсеры или ленты, пора искать замену. Форки могут ожить, но юридическое давление никуда не денется.
🔗 Подробнее
@nuancesprog #Tools #GitHub
N
NOP::Nuances of Programming
27.08.2026 17:00 · 👁 1.7K
Почему батч-синхронизация MySQL теряет удаления
Задание с обычным SELECT видит только текущее состояние таблицы. Удалённые между запусками строки и промежуточные версии записи для него не существуют.
CDC читает binlog — тот же журнал, по которому MySQL делает репликацию. Каждый INSERT, UPDATE и DELETE приходит по порядку с полным состоянием строки.
Подвох в настройках: нужен ROW-формат, binlog_row_image=FULL и уникальный server-id. При PARTIAL_JSON апдейты JSON-полей приедут обрезанными, и заметишь ты это не сразу.
🔗 Подробнее
@nuancesprog #Data #Postgres
N
NOP::Nuances of Programming
27.08.2026 12:00 · 👁 1.8K
Как побороть проблему 1+N запросов
В блоге Acadia Engineering разбирают классическую беду ORM — проблему 1+N запросов. Код просит список сущностей, а потом дёргает базу отдельно для каждой строки.
Сто заказов превращаются в сто один запрос вместо одного-двух. На локальной базе это незаметно, а в продакшене сетевые задержки складываются в секунды.
Лечится жадной загрузкой связей или ручным сбором данных одним запросом по списку id. Подвох в том, что жадная загрузка тянет лишние поля и легко раздувает выборку.
🔗 Подробнее
@nuancesprog #Data #Postgres
N
NOP::Nuances of Programming
27.08.2026 07:00 · 👁 1.8K
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
N
NOP::Nuances of Programming
26.08.2026 17:00 · 👁 1.9K
libgccjit: как прикрутить JIT к игрушечному интерпретатору
В документации GCC есть туториал, где стековый интерпретатор байткода компилируется в машинный код. Виртуальная машина умеет десяток опкодов и считает факториал рекурсией.
Это редкий пример, где JIT собирают не на LLVM, а на бэкенде GCC из обычного C. Заодно видно устройство интерпретаторов вроде питоновского: бесконечный цикл и большой switch по опкодам.
Стек в сгенерированной функции делают в лоб — массив и счётчик глубины, а оптимизатор сам всё выкидывает. Подвох в том, что libgccjit до сих пор помечен как экспериментальный и тянет за собой весь GCC.
🔗 Подробнее
@nuancesprog #Languages #C