라이브러리만 붙이면 동시편집은 끝일까요?
도큐먼트 동시편집 개발기 Ep.2 - 기존 에디터에 동시편집을 연결하며 해결한 문제들
도큐먼트 동시편집 개발기 Ep.2 - 기존 에디터에 동시편집을 연결하며 해결한 문제들
필요한 명령은 pnpm에 있었고 반복은 검증 하네스를 붙인 AI가 맡았습니다
따로 빌드된 코드가 하나의 인스턴스를 참조하게 하기
규칙을 더 잘 설명하는 대신, 규칙을 어길 수 없게 만들기
프론트엔드에서 가장 다루기 어려운 "비동기" 길들이기
hearth를 직접 만든 이유와 설계 과정
Auto Research 기법을 활용한 LLM 기반 자율 성능 개선 시스템 구축 여정
한달 걸릴 작업을 AI를 사용해서 하루만에 임팩트 내기
Tolgee, 에이전트, 그리고 “용어 일관성”의 현실
사람은 결정만, 나머지는 킬버그가 알아서 합니다.
Javascript에서 GPU 연산 활용하기
프론트엔드에서도 알고리즘은 중요하다
사내 에디터 라이브러리 기여 도전기
웹 메신저 SDK 개발 시 고민한 UX 요소
고객용 메신저(Web SDK) 설치 스크립트를 NPM 패키지로 배포하는 과정
Channel JavaScript SDK 번들 경량화를 위한 전략과 도구
프론트엔드 UI 가시성 향상을 위한 우리의 고민
디자인 시스템에 아이콘이 추가될 때 라이브러리 리포지토리 업데이트 자동화 과정
모노레포를 적용하고 있는 프로젝트에 대해 소개합니다
채널톡에서 진행하고 있는 프로젝트 최신화에 소개합니다
성능 저하 이유를 분석하고 다양한 방향에서 개선했던 4개월
문제 해결 과정을 공유합니다
Functional Thinking in Kotlin
일반적인 타입 시스템과 자바스크립트의 타입 시스템, 타입스크립트 활용 전략에 관한 글입니다. Introduction 타입 시스템 타입 시스템은 전산학에서 다루는 주요 주제 중 하나입니다. Low-level 프로그래밍 언어부터 high-level 프로그래밍 언어까지, 모든 프로그래밍 언어에는 연산(operator, operation)이라는 개념이 존재합니다. 언어는 특정 타입을 가지는 값 간의 연산을 정의합니다. 가장 우리에게 친숙한 연산인 사칙연산으로 예를 들어보겠습니다. C에서 +라는 operator는 int와 int 두 타입의 값을 input으로, int 타입의 값을 output으로 하도록 정의되어 있습니다. int a = 1; int b = 2; int c = a + b; // <- int operator+(int left, int right); 만약 언어에서 정의하지 않은 방법으로 operator를 사용하려고 하면 에러가 발생합니다. struct Foo {}; int a =
*본 콘텐츠는 마틴클랩만의 유튜브 'CRDTs: The Hard Parts'를 요약/정리한 자료입니다 CRDT vs OT CRDT(Conflict-Free-Replicated Data Types)와 OT(Operational Transformation)란 동시편집 기술로, 실시간 협업 툴에 관련된 기술입니다. 최근 코로나19로 재택근무하는 회사가 많아지면서 '실시간 협업 애플리케이션'도 주목되고 있는 것 같습니다. 실시간 협업 에디터가 동작되는 과정 CRDT와 OT를 설명하기 전에, 실시간 협업 에디터가 어떻게 동작하는지 생각해봅시다. Google Docs에서 두 명의 사용자가 똑같이 'Hello!'를 보고 있다고 할 때, 한 명은 Hello 와 ! 사이에 World를 넣고, 다른 한 명은 ! 뒤에 :-) 이모티콘을 추가하겠죠. 이렇게 되었을 때 결과가 어떻게 나와야 할까요? 두 사용자가 입력한 값이 모두 합쳐져서, ‘Hello World ! :-)’ 가 나와야 하겠죠 이러한 실시간