전체 글

전체 글

    [CRDT 구현하기] 1차 시도: 배열

    [CRDT 구현하기] CRDT란? [CRDT 구현하기] CRDT란? CRDT 동시 편집 기술 네이버 부스트캠프 그룹 프로젝트에서 코드를 공동 편집 할 수 있는 기술이 필요했다. 이 글에서는 공동 편집 기술이 무엇이며 왜 우리 팀이 CRDT 방식을 선택했는지에 관하여 29223.tistory.com 배열 직접 구현을 시도하며 가장 먼저 고려한 자료구조는 배열이었다. 문자열은 일렬로 나열된 글자들이므로 가장 먼저 떠오르는 배열을 사용하기로 했다. index의 위치에 단순히 삽입하려 시도했고, 만약 index가 같다면 time을 기준으로 정렬하도록 했다. (나중에 생성된 글자가 같은 index에서 더 앞에 오도록) 만약, 모든 조건이 같다면 (index가 같고 Date.now()를 통해 얻는 ms 단위의 시간..

    [CRDT 구현하기] CRDT란?

    CRDT 동시 편집 기술 네이버 부스트캠프 그룹 프로젝트에서 코드를 공동 편집 할 수 있는 기술이 필요했다. 이 글에서는 공동 편집 기술이 무엇이며 왜 우리 팀이 CRDT 방식을 선택했는지에 관하여 이야기 할 것이다. 공동 편집 기술 공동 편집 기술은 서로 다른 사람이 같은 공간에서 동시에 편집할 수 있도록 해주는 기술이다. 공동 편집이 적용된 대표적인 예시로는 노션과 피그마가 있다. 그렇다면 CRDT 이외의 다른 공동 편집 기술에는 어떤 것이 있을까? 그리고 왜 CRDT를 사용하게 되었을까? OT (1989 ~ 2006) CRDT 이전에 사용했던 기술이며 Google Docs, MS Office 등에서 사용되었다. OT 방식의 핵심은 "서버가 병합을 수행"하는 것이다. 현재 문자의 상태가 HELO라고 ..

    [네이버 부스트캠프] 네이버 부스트캠프 웹・모바일 8기 그룹 프로젝트 4주차 회고

    벌써 4주차가 끝났다. 2주 뒤면 그룹 프로젝트가 종료되고 부스트캠프의 모든 과정이 종료된다. 아쉬움이 남지 않도록 남은 기간도 화이팅 해야 할 것 같다. 잘한 점 기능 구현 외에 다른 부분도 신경써볼 수 있었다. 서로를 구분하기 위한 랜덤 닉네임 생성기도 만들어보고 팀원들과 함께 서비스를 직접 사용해보며 불편했던 부분을 고쳐볼 수 있었다 (예를 들어, 내 닉네임이 별도로 표시되지 않아 불편했던 것 등) 또한, 이런 서비스적인 부분 뿐만 아니라 어떻게 해야 성능적인 개선을 할 수 있을지 고민하게 되었다. 이러한 고민을 하게 된 계기는 평소처럼 빌드를 하는 과정에서 Vite에 의해 발생한 경고 때문이었다. 대략적으로 빌드 파일의 크기가 크다는 뜻으로 생각하면 된다. 이를 해결하기 위해 Visualizer도..

    [네이버 부스트캠프] 네이버 부스트캠프 웹・모바일 8기 그룹 프로젝트 3주차 회고

    3주차가 마무리 되었다. 남은 기능들을 우선 만들고 고도화를 하기로 하여 남은 기능들을 만들게 되었다. 잘한 점 우선 이번 주는 목표한 바를 거의 다 수행할 수 있었다. 빠른 소통과 즉각적인 피드백을 하며 목표한 기능을 최대한 빠르게 개발할 수 있었다. 또한, 저번 주에 비해 문서화를 잘 수행했다고 생각한다. 문제를 만나고 시도하는 과정을 체계적으로 기록할 수 있었고 동료들과 공유하기도 훨씬 쉬웠다고 생각한다. 피어세션을 하면서도 어떤 어려움이 있었고 그것을 극복하기 위해 어떤 과정을 갖게 되었는지 쉽게 설명할 수 있었다. 당시에 작성했던 글은 디바운스와 쓰로틀링에 관한 글이었다. 디바운스와 쓰로틀링의 정의가 무엇이며 각각의 예제 코드를 함께 기록하게 되었다. 예제 코드를 참고하여 현재 내가 만났던 문제..