전체 글

전체 글

    [CRDT 구현하기] 3차 시도: 라이브러리

    [CRDT 구현하기] 2차 시도: 연결 리스트 (한계) [CRDT 구현하기] 2차 시도: 연결 리스트 (한계) [CRDT 구현하기] 2차 시도: 연결 리스트 (개선) [CRDT 구현하기] 2차 시도: 연결 리스트 (개선) [CRDT 구현하기] 2차 시도: 연결 리스트 [CRDT 구현하기] 2차 시도: 연결 리스트 [CRDT 구현하기] 1차 시도: 배 29223.tistory.com 직접 만든 CRDT는 제대로 된 기능을 하지만 실시간성에서 부족함이 있었다. 정해진 일정이 있었고 일정에 맞춰서 기능을 완성해야 했다. 이를 위해 라이브러리를 도입하기로 했다. 라이브러리 CRDT 알고리즘을 제공하는 라이브러리는 여러가지가 있다. 대표적으로 Yjs와 AutoMerge 등이 있으며 각각의 장단점이 있다. 우리는 ..

    [CRDT 구현하기] 2차 시도: 연결 리스트 (한계)

    [CRDT 구현하기] 2차 시도: 연결 리스트 (개선) [CRDT 구현하기] 2차 시도: 연결 리스트 (개선) [CRDT 구현하기] 2차 시도: 연결 리스트 [CRDT 구현하기] 2차 시도: 연결 리스트 [CRDT 구현하기] 1차 시도: 배열 [CRDT 구현하기] 1차 시도: 배열 [CRDT 구현하기] CRDT란? [CRDT 구현하기] CRDT란? CRDT 동시 편집 29223.tistory.com 위의 과정들을 통해 충돌을 해결할 수 있었다. 하지만 병합 과정에서 커서가 이동하는 문제가 발생했다. 커서 고정 글자는 잘 병합이 되는데 커서가 이동하는 문제를 해결하기 위해서 커서의 위치 정보를 기억해야 한다고 생각했다. 기존 커서의 위치를 갖고 있으며 병합 이후 해당 정보를 바탕으로 커서의 위치를 조정하는..

    [CRDT 구현하기] 2차 시도: 연결 리스트 (개선)

    [CRDT 구현하기] 2차 시도: 연결 리스트 [CRDT 구현하기] 2차 시도: 연결 리스트 [CRDT 구현하기] 1차 시도: 배열 [CRDT 구현하기] 1차 시도: 배열 [CRDT 구현하기] CRDT란? [CRDT 구현하기] CRDT란? CRDT 동시 편집 기술 네이버 부스트캠프 그룹 프로젝트에서 코드를 공동 편집 할 수 있는 29223.tistory.com 연결리스트를 사용하여 병합이 제대로 이루어지는 것을 확인할 수 있었다. 하지만, 아직 몇 가지 문제점이 남아있었다. 우선, 현재 상태로는 단일 글자의 삽입만 가능하다는 것과 병합 과정에서 충돌에 대한 대비가 제대로 되어있지 않았다. 여러 글자의 삽입/삭제 insertLocal(index: number, letter: string, time: num..

    [CRDT 구현하기] 2차 시도: 연결 리스트

    [CRDT 구현하기] 1차 시도: 배열 [CRDT 구현하기] 1차 시도: 배열 [CRDT 구현하기] CRDT란? [CRDT 구현하기] CRDT란? CRDT 동시 편집 기술 네이버 부스트캠프 그룹 프로젝트에서 코드를 공동 편집 할 수 있는 기술이 필요했다. 이 글에서는 공동 편집 기술이 무엇이며 왜 29223.tistory.com 앞의 글에서 배열을 사용했을 때의 과정과 한계에 대해 경험했다. 하지만, 배열의 index를 활용하는 과정에서 배열의 순회가 불가피 했으며 이는 비효율적인 연산이라 판단했다. 따라서, 2차 시도에서는 다른 자료구조를 선택하게 되었다. 2차 시도: 연결 리스트 배열 이외의 다른 자료구조를 고려하면서 가장 먼저 떠오른 자료구조가 연결 리스트였다. (문자의 삽입/삭제가 빈번히 발생할 ..