<aside> 📋 CRDT 시리즈

  1. CRDT... 널 알고 싶어 - (1)
  2. CRDT. 너 왜비나랑 만나볼래? - (2)
  3. CRDT를 납작하게 만들어줘요. - (3)
  4. CRDT를 블럭 여러개에 적용해봐요. - (4)
  5. CRDT야 이것좀 붙여넣게 해줘 - (5)
  6. CRDT 블럭아 포커스 좀 잡아줘 - (6) </aside>


📌 개요

CRDT에서 index는 문자와 커서 위치로 계산해요.

그래서 문자열을 붙여넣기할 경우 하나의 Node의 value에 그냥 문자열이 들어가버리게 돼요.

이 상황은 엄청난 문제를 초래해요.

일반적인 경우

현재 에디터에 Wab이라는 문자열이 연결리스트로 존재해요.

Untitled

만약에 a뒤에 x를 넣으려고 한다면

Untitled

x는 a뒤에 들어가야 라는 정보와 현재 a는 몇번째에 위치했는지를 알아야해요.

그래서 앞에서부터 2번째에 있는 a를 찾아서 그 뒤에 x 노드를 추가하게 돼요.

Untitled

문자열을 그대로 저장하는 경우

Node에 Wab이 통째로 들어가 있는 경우에요.

Untitled

이때 위의 상황처럼 a뒤에 x를 넣으려고 한다면