Skip to content

Latest commit

 

History

History
39 lines (29 loc) · 1.74 KB

File metadata and controls

39 lines (29 loc) · 1.74 KB

CRDT RGA 구현 & 데모 안내

이 프로젝트는 CRDT(Conflict-free Replicated Data Type) 중 하나인 **RGA(Replicated-Growable Array)**를 직접 구현하고, 간단한 데모 페이지에서 동작을 시연하기 위한 예시입니다.

데모(demo)

  • 목표: RGA 패키지를 활용해 간단한 문서 편집 기능 구현
  • 주요 구성:
    • src/components/editor.tsx: 텍스트 에디터 UI
    • src/hooks/use-rga-document.ts: RGA 로직을 가져와서 상태를 업데이트하는 Hook
    • lib/mock-socket.ts, event-bus.ts: 여러 창(탭) 간에 Operation을 주고받는 간이 네트워크 시뮬레이션

실행

  • 개발 서버 구동: 루트 디렉터리에서 아래 명령어 실행
    pnpm dev:demo
    • 브라우저에서 표시된 로컬 주소로 접속해 데모를 확인할 수 있습니다.

RGA(rga)

  • 구현 내용:
    • CRDT RGA 알고리즘 핵심 로직 (doc.ts, node.ts, operation-token.ts 등)
    • Lamport Clock, Node 연결, 삭제 노드(Tombstone) 처리 등 동시 편집을 위한 주요 기능 포함
  • 테스트:
    • __test__ 폴더 안의 각 테스트 파일을 통해 로직을 검증 가능
    • 예: doc.test.ts, node.test.ts,operation-token.test.ts,lamport-clock.test.ts

테스트

  • RGA 패키지의 테스트 스크립트 실행
    pnpm test:rga
    • RGA 로직에 대한 단위 테스트를 수행합니다.