CRDT без академических статей: интерактивный курс на JavaScript
Lars Hupel собрал серию туториалов про Conflict-Free Replicated Data Types — структуры данных, которые сливаются между репликами всегда и без конфликтов. Всё на JavaScript, весь код исполняется прямо в браузере как в Jupyter: правишь сниппет, нажимаешь Run, смотришь результат.
Зачем это вам: любое приложение с офлайн-режимом или синхронизацией между устройствами упирается в вопрос «чья версия правильная». Обычно это заканчивается баннером «вы офлайн» или молчаливой потерей данных. CRDT решают задачу конструктивно — через решётки и частичные порядки, а не через эвристики «last write wins».
Трение в том, что автор сознательно уходит в математику, а не в практику: если нужен готовый рецепт для продакшена, он честно отправляет на crdt.tech. Зато свойства проверяются property-based тестами через fast-check — сразу видно, где ваша реализация merge ломает коммутативность.
🔗 Подробнее
@nuancesprog #Data #JavaScript
Lars Hupel собрал серию туториалов про Conflict-Free Replicated Data Types — структуры данных, которые сливаются между репликами всегда и без конфликтов. Всё на JavaScript, весь код исполняется прямо в браузере как в Jupyter: правишь сниппет, нажимаешь Run, смотришь результат.
Зачем это вам: любое приложение с офлайн-режимом или синхронизацией между устройствами упирается в вопрос «чья версия правильная». Обычно это заканчивается баннером «вы офлайн» или молчаливой потерей данных. CRDT решают задачу конструктивно — через решётки и частичные порядки, а не через эвристики «last write wins».
Трение в том, что автор сознательно уходит в математику, а не в практику: если нужен готовый рецепт для продакшена, он честно отправляет на crdt.tech. Зато свойства проверяются property-based тестами через fast-check — сразу видно, где ваша реализация merge ломает коммутативность.
🔗 Подробнее
@nuancesprog #Data #JavaScript
👍1
Firefox остался единственным браузером с полным uBlock Origin
Microsoft Edge скоро отключит расширения на Manifest V2, включая uBlock Origin. Mozilla ответила в Bluesky: «Наша поддержка uBlock Origin никуда не денется».
Manifest V3 лишает блокировщики доступа к функциям, которые нужны для фильтрации запросов. Практически все Chromium-браузеры — Opera, Brave, Vivaldi — идут за Google по этому пути.
Альтернатива в Chromium — uBlock Origin Lite, но он ловит заметно меньше рекламы. Ирония в том, что Manifest V3 задумывался как способ повысить безопасность расширений.
🔗 Подробнее
@nuancesprog #Tools #JavaScript
Microsoft Edge скоро отключит расширения на Manifest V2, включая uBlock Origin. Mozilla ответила в Bluesky: «Наша поддержка uBlock Origin никуда не денется».
Manifest V3 лишает блокировщики доступа к функциям, которые нужны для фильтрации запросов. Практически все Chromium-браузеры — Opera, Brave, Vivaldi — идут за Google по этому пути.
Альтернатива в Chromium — uBlock Origin Lite, но он ловит заметно меньше рекламы. Ирония в том, что Manifest V3 задумывался как способ повысить безопасность расширений.
🔗 Подробнее
@nuancesprog #Tools #JavaScript
👍10
Скрытый WebAudio на AliExpress ломает Bluetooth-мультипойнт
Автор блога laserphile заметил: открытая вкладка AliExpress глушит музыку с телефона. Причина — два скрытых AudioContext от скриптов collina.js и fireyejs.js.
Графы строят пилообразный осциллятор с усилением в ноль, но подключают его к системному выходу. Звука нет, зато аудиотракт остаётся активным, и кнопка «выключить звук во вкладке» не помогает.
Это часть большого отпечатка: canvas, WebGL, WebRTC, память, движение устройства. Спорно тут другое — отличить антифрод от обычной слежки со стороны невозможно.
🔗 Подробнее
@nuancesprog #Security #JavaScript
Автор блога laserphile заметил: открытая вкладка AliExpress глушит музыку с телефона. Причина — два скрытых AudioContext от скриптов collina.js и fireyejs.js.
Графы строят пилообразный осциллятор с усилением в ноль, но подключают его к системному выходу. Звука нет, зато аудиотракт остаётся активным, и кнопка «выключить звук во вкладке» не помогает.
Это часть большого отпечатка: canvas, WebGL, WebRTC, память, движение устройства. Спорно тут другое — отличить антифрод от обычной слежки со стороны невозможно.
🔗 Подробнее
@nuancesprog #Security #JavaScript
👍1