Rails, AnyCable, 그리고 YJS를 활용한 실시간 협업

Rails 애플리케이션에서 AnyCable을 사용하여 고성능 WebSocket 연결을 구축하고, YJS(CRDT)로 충돌 없는 실시간 동시 편집 기능을 구현할 수 있습니다.

🔗 원문 보기

Rails, AnyCable, 그리고 YJS를 활용한 실시간 협업

Rails 애플리케이션에서 AnyCable을 사용하여 고성능 WebSocket 연결을 구축하고, YJS(CRDT)로 충돌 없는 실시간 동시 편집 기능을 구현할 수 있습니다.

Ruby-News

Все тесты зелёные, а байты разные: как я проверяю порты бинарных форматов

У меня было полторы сотни кросс-языковых фикстур, все тесты зелёные, и я был уверен, что мой Go-порт Yjs байт-в-байт совместим с оригиналом. Потом сравнил байты напрямую с канонической реализацией, и они разъехались: семантика сходится идеально, а на проводе документ толще. Юнит-тесты, roundtrip и даже конвергенц-тесты систематически пропускают баги совместимости, когда портируешь чужой бинарный формат на другой язык. Рабочий метод один: генерировать фикстуры из канона и требовать в CI побайтового совпадения в обе стороны. Разбираю конвейер и три реальных бага из трёх своих портов (Yjs, Loro, Willow): документ в 12 раз толще канона, big-endian остров, который молча портил бы все float’ы при обмене, и дыра, через которую 9-байтный апдейт заказывал make() на 67 ТБ. Метод обобщается на любой «порт формата X на язык Y», CRDT тут просто материал.

https://habr.com/ru/articles/1049858/

#CRDT #Yjs #Loro #Go #тестовые_векторы #фикстуры #wire_format #conformance_testing #байтсовместимость #сериализация

Все тесты зелёные, а байты разные: как я проверяю порты бинарных форматов

В свободное время пишу на чистом Go порты CRDT-движков. CRDT - это структуры, на которых держится совместное редактирование в реальном времени, вроде гугл-доков: несколько человек правят один...

Хабр

Большой каталог «на почитать» про $mol, web и не только

Реактивность лучше MobX , виртуализация рендеринга «из коробки» , типизированные стили на TypeScript , локально-первая модель данных через CRDT — эти идеи Дмитрий Карловский ( nin-jin ) разрабатывает на своём фреймворке $mol и в проекте $hyoo. За десять лет накопилось около сотни статей на Хабре и большая документация на mol.hyoo.ru , разбросанная по годам и площадкам — карта потерялась даже у тех, кто читал. Этот каталог — навигатор по корпусу. 80+ материалов разложены по 12 темам : с чего начать и для кого это вообще история фреймворка от тизера 2016-го до обзора 2025-го реактивность от первого «атома» 2014-го до свежего цикла 2026-го архитектура: MAM, view.tree , виртуализация, CSS-in-TS руководство по практике утилиты: $mol_fetch , $mol_time , $mol_regexp , VaryPack , MarkedText TypeScript-приёмы и принципы кода $hyoo и Гипер База — распределённые данные на CRDT сообщество, бенчмарки, аналитика проекта в цифрах На каждый материал один абзац о сути и прямая ссылка на оригинал. Полезно даже тем, кто не будет писать на $mol.

https://habr.com/ru/articles/1047754/

#$mol #реактивное_программирование #TypeScript #JavaScript #frontend #React #MobX #Vue #CRDT #localfirst

Большой каталог «на почитать» про $mol, web и не только

$mol — реактивный микромодульный фронтенд-фреймворк, который Дмитрий Карловский ( nin-jin ) и сообщество развивают с 2016 года. За эти годы накопилась сотня статей на Хабре и большая документация на...

Хабр

🔗 ueberdosis/hocuspocus

The Yjs CRDT WebSocket backend for conflict-free real-time collaboration in your app.

Provides a ready-to-use WebSocket backend for Yjs CRDTs enabling real-time collaborative editing with extensions like SQLite persistence

⭐ Stars: 2408
📅 Last Update: Jun 08, 2026

https://github.com/ueberdosis/hocuspocus

#selfhosted #homelab #selfhost #selfhosting #opensource #crdt #realtime

GitHub - ueberdosis/hocuspocus: The Yjs CRDT WebSocket backend for conflict-free real-time collaboration in your app.

The Yjs CRDT WebSocket backend for conflict-free real-time collaboration in your app. - ueberdosis/hocuspocus

GitHub

Local-first web dnes neznamená jednu architekturu, ale několik různých kompromisů: lokální databázi v prohlížeči, repliku čtení z PostgreSQL nebo CRDT model pro souběžné úpravy. Každý přístup posouvá data blíž k uživateli, ale zároveň přidává nové otázky kolem persistence, konfliktů, autorizace a provozu.

https://zdrojak.cz/clanky/data-bliz-k-uzivateli-kde-narazi-local-first-web/
🌘 我最喜歡的 Bug:無效的代理對 (Invalid Surrogate Pairs)
➤ 當 Emoji 成為程式運行的絆腳石
https://george.mand.is/2026/05/my-favorite-bugs-invalid-surrogate-pairs/
本文講述了在開發協作編輯器時遇到的罕見且致命的 Bug。由於系統底層在處理字串切割時,意外將 Emoji 的「代理對」從中斷開,導致編碼錯誤並引發靜默同步失敗。透過深入研究 Unicode 編碼(字碼單元、字碼點與字素叢集),作者揭露了 JavaScript 原生字串方法如何破壞高位元字元,最終透過修復底層函式庫及將 Emoji 定義為「原子節點」徹底解決了此問題。
+ 這種關於字元編碼的隱藏陷阱真的太可怕了,完全沒想到簡單的 `slice()` 操作會導致整個同步機制掛掉。感謝分享,這讓我對 Unicode 的理解更深了。
+ 果然最難排查的 Bug 往往發生在底層假設與邊界條件的交會處。將 Emoji 轉為原子節點確實是處理富文本編輯器
#軟體工程 #Unicode 編碼 #除錯案例 #CRDT 技術
My Favorite Bugs: Invalid Surrogate Pairs

In which I revisit one of my favorite bugs, the invalid surrogate pair.

George Mandis

Explorations techniques (suite)

#localfirst

- Comment synchroniser mes données locales entre plusieurs machines ? avec un serveur ?
- #eventsourcing et #CQRS ?
- #crdt (@inkandswitch.com ) pour la collaboration ? Est-ce qu'il faut de la collaboration ?

🌘 @codemix/graph:具備實時協作與型別安全的 CRDT 圖形資料庫
➤ 打造具備實時同步能力且型別嚴謹的 TypeScript 圖形資料庫
https://codemix.com/graph
@codemix/graph 是一套專為 TypeScript 設計的圖形資料庫,旨在解決應用程式中需要嚴謹型別檢查與離線優先(offline-first)實時協作的需求。該系統整合了 Zod 等 Schema 驗證工具,確保開發者在處理節點與關聯時享有完整的型別安全。核心亮點在於其靈活的儲存架構,開發者能輕易從記憶體儲存切換至基於 Yjs CRDT 的後端,實現多客戶端間的無衝突實時同步。此外,它支援 Gremlin 風格的遍歷查詢,並能解析 Cypher 語句,讓 LLM 或外部 API 也能便捷地與圖形數據互動。
+ 這對於需要構建實時共同編輯工具的開發者來說是個神器,特別是能直接與 Yjs 整合這一點,省去了處理複雜衝突的痛苦。
+ 將圖形資料庫的查詢能力帶入前端,甚至還支援 Cypher 給 L
#TypeScript #圖形資料庫 #CRDT #Yjs #軟體開發
@codemix/graph - codemix

Open-source TypeScript property graph database from codemix.

🚀✨ Oh, look, it's yet another mind-bogglingly complex tech Frankenstein, combining every buzzword imaginable: type-safe, #realtime, collaborative, #CRDT, and more! 🤯🔧 Perfect for making your #TypeScript look like the intricate inner workings of a space station, but maybe next time just try a regular database, like adults do. 🍕👩‍💻
https://codemix.com/graph #techfrankenstein #typeSafe #collaboration #HackerNews #ngated
@codemix/graph - codemix

Open-source TypeScript property graph database from codemix.

@codemix/graph - codemix

Open-source TypeScript property graph database from codemix.