전체 글

·개발 탐구
개요 최근 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를 걷어내고, 의미 있는 이름이 필요한 데이터..
·개발 탐구/OOP
개요 디미터의 법칙(Law of Demeter)은 객체지향 설계에서 결합도를 낮추기 위해 제안된 규칙이다. 가장 널리 알려진 설명은 “객체는 가까운 이웃과만 대화하라”이지만, 이 문장만으로는 원래 의도가 충분히 드러나지 않는다. 디미터의 법칙은 단순히 메서드 체이닝을 싫어하는 취향이 아니라, 한 객체가 시스템의 너무 많은 구조적 지식을 갖지 않도록 제한함으로써 변경의 파급 범위를 줄이려는 설계 원칙이다. 이 법칙은 미국 Northeastern University의 Demeter Project에서 나왔다. Karl Lieberherr가 1985년부터 Demeter 연구 그룹을 운영했고, 그 흐름 속에서 Ian Holland가 1987년 가을 디미터의 법칙을 발견했다. 이후 1988년 OOPSLA 논문 O..
지혜와 본질을 추구하는 자
좋은 개발자 현명한 사람