개요 최근 Andrej Karpathy가 “LLM Wiki”라는 아이디어를 공유했다. 처음 봤을 때는 단순히 LLM에게 마크다운 문서를 많이 읽게 하는 방식처럼 보일 수 있다. 하지만 내용을 조금 더 자세히 보면 기존 RAG와는 관점이 다르다. RAG는 보통 질문이 들어왔을 때 관련 문서 조각을 검색하고, 그 조각을 LLM의 컨텍스트에 넣어 답변을 생성하는 방식이다. 반면 LLM Wiki는 LLM이 계속 읽고, 정리하고, 수정할 수 있는 지속적인 지식 저장소를 만든다는 관점에 가깝다. 즉, 일회성 검색 시스템이라기보다는 LLM이 장기적으로 관리하는 마크다운 기반 위키라고 볼 수 있다. 이 글에서는 Karpathy의 LLM Wiki 아이디어가 어떤 문제의식에서 나왔고, 기존 RAG와 무엇이 다른지, 그리고..
전체 글
개요 Kotlin의 Result는 성공 값 T 또는 실패 Throwable을 하나의 타입으로 감싸는 표준 라이브러리 타입이다. 지금은 흔히 runCatching, mapCatching, getOrElse 같은 API와 함께 예외를 함수형 스타일로 다룰 때 쓰이지만, 처음부터 “모든 에러 처리를 Result로 하자”는 철학으로 나온 것은 아니다. 오히려 공식 설계 문서를 보면 Result의 출발점은 코루틴과 비동기 콜백에 더 가깝다. Kotlin 팀은 예외가 순차 실행에는 잘 맞지만, 비동기 작업의 성공/실패를 한 값으로 넘기거나 여러 실패를 모아서 나중에 처리하는 상황에는 불편하다고 봤다. 그 문제를 풀기 위해 Result가 표준 라이브러리에 들어왔고, 이후 Kotlin 1.3에서 도입되었다. 다만 R..
개요 최근 프로젝트를 진행하면서 kotlin의 Triple에 대한 가독성 이야기가 나왔다. java에서 Kotlin으로 넘어간 유저로써 별 생각없이 쓰고 있었는데 이참에 한 번 들여다보도록 하자. Kotlin의 Triple은 표준 라이브러리에 들어 있는 3원 조합 타입이다. 표면적으로 보면 “세 값을 한 번에 묶는 편의 타입” 정도로 보이지만, 실제로는 Kotlin이 tuple을 어떻게 받아들이고 어디까지 허용할 것인지에 대한 설계 선택이 응축된 결과물에 가깝다. 중요한 점은 Kotlin이 처음부터 일반적인 tuple 문법을 강하게 밀고 간 언어가 아니라는 것이다. 오히려 2012년 Kotlin M3 전후로 tuple types and expressions를 걷어내고, 의미 있는 이름이 필요한 데이터..
개요 디미터의 법칙(Law of Demeter)은 객체지향 설계에서 결합도를 낮추기 위해 제안된 규칙이다. 가장 널리 알려진 설명은 “객체는 가까운 이웃과만 대화하라”이지만, 이 문장만으로는 원래 의도가 충분히 드러나지 않는다. 디미터의 법칙은 단순히 메서드 체이닝을 싫어하는 취향이 아니라, 한 객체가 시스템의 너무 많은 구조적 지식을 갖지 않도록 제한함으로써 변경의 파급 범위를 줄이려는 설계 원칙이다. 이 법칙은 미국 Northeastern University의 Demeter Project에서 나왔다. Karl Lieberherr가 1985년부터 Demeter 연구 그룹을 운영했고, 그 흐름 속에서 Ian Holland가 1987년 가을 디미터의 법칙을 발견했다. 이후 1988년 OOPSLA 논문 O..