전체 글 305

알고리즘 & 라이브 코테의 접근 전략

기존 문제 해결 전략은 일반적으로 주어진 요구사항을 구현할 때의 접근 방식을 작성해두었다.이번 글은 알고리즘과 라이브 코테로 제한해서 좀 더 자세하게 적어보려 한다. 문제 풀이 단계 - 어떠한 순서대로 문제를 접근해야 하나?아이디어 획득 : “추론”하기이 시기는 체계젹인 상태 유지가 특히 중요한 시점이다.문제만 바라보고 있어선, 아무것도 변화하지 않는다.지금의 너는 문제를 제대로 이해하지 못하고 있다.놓친 조건은 없는지 검토하라.문제의 조건을 "우아한" 수준으로 정의할 수 있는지 검토해라.문제 알고리즘/특징의 “증명”으로 아이디어어떻게 이 동작이 수학적으로 증명되는가?{BruteForce, Greedy, D&C, DP, Graph, math}전체 알고리즘이 “결국 구하고자 하는 것” 놓치지 않기“책임” ..

PS/이론 2026.02.03

"데이터 기반으로 소통"의 의미 - 통제, 방임, 그리고 시스템화

최근 AI의 발달로, OpenClaw와 같은 새로운 프로젝트들이 속속들이 등장하고,대단한 천재들이 새로운 규칙을 정의하기 위해 개발에 앞다투어 참여하고 있다. 그야말로, 프로그래밍에 대한 모든 규칙이 새로 쓰여지고 있는 시점이다. 다양한 매체에서 AI가 개발자를 대체한다고 대서특필하고 있고, 시대에 따라가지 못하는 것에 대한 불안함이 커지고 있다.이에 대한 나의 생각을 정리해둔다.하나가 되는 것과, 다름을 받아들이는 것본 주제에 들어가기 앞서, 내 이야기를 조금만 해보려 한다. 나는 나에게 의미있는 일에만 시간을 투자하고 싶다.이는 누구에게나 같은 욕망일 것이다. 아무래도 나이가 있어 자연스레 팀장 역할을 많이 받게 된 나는, 타인에게 내 주장을 강요하는 경우가 없잖아 있었다.그 과정 내에서 최대한 데이..

2026년 1월 5주차 회고

감사가 무너지면 꾸준함이 무너진다.조급해지기 전에, 대안을 찾기전에, 충분히 감사했나?이번 주의 감사책을 많이 읽었음. 교양에 대한 감사.면접 경험에 대한 감사항상 무언가를 수행하기.체계적인 상태를 유지하기.큰그림 그리고 핵심 짚기.처음부터 끝까지 차근차근 전개하기.현 시스템에 대한 감사를 유지하기.보상 체계를 깨끗히 유지하기.현재 보상 체계가 오염됨 - 사람 만나면서 너무 돈도 막 쓰고, 루틴도 깨지고, 잠도 많이 잠.다음주에 현재 보상 체계에 대한 피드백이 제대로 들어갔는지 검토 필요입장 중심이 아닌 이익 중심으로 사고하기.팩트와 의견 구분하기.윈-윈 전략 생각하기.단정 짓지 말고, 다음에 무엇을 해야 할 지 상상하기.내가 놓치고 있는 부분이 분명히 존재한다는 걸 인정하기.상대방이 어떤 점을 해결해 ..

2026년 1월 4주차 회고

감사가 무너지면 꾸준함이 무너진다.조급해지기 전에, 대안을 찾기전에, 충분히 감사했나?이번 주의 감사Schedule과 Task의 분리를 3일만에 성공할 수 있게 됨에 감사AI의 발전에 감사항상 무언가를 수행하기.체계적인 상태를 유지하기.큰그림 그리고 핵심 짚기.처음부터 끝까지 차근차근 전개하기.현 시스템에 대한 감사를 유지하기.보상 체계를 깨끗히 유지하기.입장 중심이 아닌 이익 중심으로 사고하기.팩트와 의견 구분하기.윈-윈 전략 생각하기.단정 짓지 말고, 다음에 무엇을 해야 할 지 상상하기.내가 놓치고 있는 부분이 분명히 존재한다는 걸 인정하기.상대방이 어떤 점을 해결해 주는 것을 원하는가?지금 내가 다음에 무엇을, 어떤 절차로 해야 하는가?이번주에 한 것HTML/CSS/리액트 각잡고 정리하기 >> 예제..

BEM - CSS,JS 용 클래스 네이밍 규칙

처음 HTML, CSS 를 사용하려고 하다 보면, 각 태그들을 구별할 뚜렷한 클래스 명명 규칙을 찾기 어려워 멋대로 지정해보다가, 프로젝트의 규모가 커지면서 답답함을 느끼게 된다. 선대 개발자들은 이런 문제를 해결하기 위한 고민을 이미 진행해왔으니, 이를 알아보자.태그 위주로 이름 짓기태그를 기준으로 클래스를 네이밍해보자.article { /* ... */ } article aside { /* ... */ } article aside figure { /* ... */ }article div header { /* ... */ } article ul li { /* ... */ } article div ul li { /* ... */ } article div ul li.special { /* ... */ } ..

WEB FE Repository 2026.01.23

시멘틱 태그 - Semantic Tag

시맨틱 태그가 무엇인가?HTML5의 여러 태그들은 그 자체로 어떤 의미를 지니고 있다.이 태그들은 기능적으로는 div 태그와 동일하지만 각각의 종류 자체가 페이지에서 해당 요소가 갖는 의미와 역할을 나타내기 때문에, 시맨틱 태그라고 불린다.시맨틱 태그를 쓰면 뭐가 좋은가?웹 접근성 개선스크린 리더로 페이지를 보는 사람들이 필요한 정보를 보다 수월히 찾을 수 있다.SEO (Search Engine Optimization)검색엔진이 페이지를 분석할 때 각 정보의 종류를 파악하는데 도움이 된다.유지보수와 가독성모든 구획들이 div들로 구성된 페이지보다 코드를 읽고 구조를 파악하기 쉽다.태그별 설명header페이지나 구획의 제목 역할을 하는 요소들을 두는데 사용된다.로고와 제목, 검색창 등이 들어간다. MDN ..

WEB FE Repository 2026.01.23

HTML - HEAD 태그

DOCTYPE문서가 형식과 버전으로 작성되었는지를 명시선언시 standards mode(최신 형식)로 문서 실행선언하지 않을 경우 quirks mode(익플5, 네이게이터 4 등 옛날 브라우저를 모방)로 문서를 실행한다.DOCTYPE은 꼭 선언해주자.head 태그메타데이터(기계가 읽을 정보)가 담기는 곳페이지의 제목파비콘기타 메타 정보CSS와 자바스크립트 등의 코드 및 링크title 태그브라우저의 탭에 표시브라우저 즐겨찾기의 제목으로 표시검색엔진 검색결과의 제목으로 표시meta 태그와 속성들a. charset 페이지가 어떤 문자로 작성되었는지 명시 - 글자가 깨지지 않도록UTF-8 - 전세계 거의 모든 문자를 표현할 수 있는(유니코드) 형식문서 저장 형식도 UTF-8로 맞출 것!참고: html 태그의 l..

WEB FE Repository 2026.01.23

2026년 1월 3주차 회고

삶의 긴장감이 좀 떨어지지 않았나 싶다.다시 다잡을 필요성을 느낀다. 감사가 무너지면 꾸준함이 무너진다.조급해지기 전에, 대안을 찾기전에, 충분히 감사했나?이번 주의 감사개발의 즐거움을 느낌에 감사코틀린을 어느정도 잘 쓸수 있게 됨에 대한 감사항상 무언가를 수행하기.체계적인 상태를 유지하기.큰그림 그리고 핵심 짚기.처음부터 끝까지 차근차근 전개하기.현 시스템에 대한 감사를 유지하기.보상 체계를 깨끗히 유지하기.입장 중심이 아닌 이익 중심으로 사고하기.윈-윈 전략 생각하기.단정 짓지 말고, 다음에 무엇을 해야 할 지 상상하기.내가 놓치고 있는 부분이 분명히 존재한다는 걸 인정하기.상대방이 어떤 점을 해결해 주는 것을 원하는가?지금 내가 다음에 무엇을, 어떤 절차로 해야 하는가?이번주에 한 것AI 서빙 성능..

긴장감

최근 카페 일을 보다가, 단골 손님이 오셔서 대화를 시도하실 때 웃기만 하다 어색하게 인사드린 경험이 있었다.그래서 그런지 "싹싹하게 잘 좀 받아주지", "왜 그렇게 대하냐", "말을 너무 못한다"라고 지적을 받았다. 내가 봐도 좀 어색했기 때문에, "내가 왜 그랬는가?" 에 대한 고찰을 하면서 느낀 점을 정리한다. 타인과 관계로 엮일 때, 이 네가지 중의 하나의 긴장감을 상대방에게 강요한다.논리적인 일관성을 맞추기 위한 긴장감시스템과 위계질서를 위한 긴장감목표를 위해 몰입하는 긴장감감정적인 긴장감누구나 한가지를 타인에게 강요하면서 살게 된다.논리적인 일관성을 맞추기 위한 긴장감넌 이걸 하기전에 이부분은 고려했나? 왜 이렇게 했지? 이렇게 될거라는 증거가 있나?시스템과 위계질서를 위한 긴장감내가 이걸 ..

2026년 1월 2주차 회고

감사가 무너지면 꾸준함이 무너진다.조급해지기 전에, 대안을 찾기전에, 충분히 감사했나?이번 주의 감사아침에 일어았을 때의 가족의 안부에 대한 감사코딩을 할 수 있음에 대한 감사1년 8개월만의 해방에 대한 감사항상 무언가를 수행하기.체계적인 상태를 유지하기.큰그림 그리고 핵심 짚기.처음부터 끝까지 차근차근 전개하기.현 시스템에 대한 감사를 유지하기.보상 체계를 깨끗히 유지하기.입장 중심이 아닌 이익 중심으로 사고하기.윈-윈 전략 생각하기.단정 짓지 말고, 다음에 무엇을 해야 할 지 상상하기.내가 놓치고 있는 부분이 분명히 존재한다는 걸 인정하기.상대방이 어떤 점을 해결해 주는 것을 원하는가?지금 내가 다음에 무엇을, 어떤 절차로 해야 하는가?이번주에 한 것RAG 기본(임베딩/벡터DB/리트리버) 이해코틀린 ..

완전 관해 (CR, Complete Response)

정말 기적같은 소식이다. 추적검사에서의 재발이 없다고는 이야기 못한다.이번에 고생을 시작하게 된것도 추적검사에서의 재발이 시작이었으니까.희귀한 케이스기에, 언제든지 악화될 수 있고, 방광 제거와 같은 추가적인 수술적 치료가 고려될 수 있다고도 한다. 그러나, 1년 8개월간의 고생 끝의 얻은 3개월의 여유라는 것만으로도, 우리 가족에게는 너무나 큰 가치있는 소식이었다.그동안 힘들었던 항암치료를 버텨주신 아버지께도 감사드리고, 가족에게 활기를 불어넣어 주신 하나님께도 감사드린다.돌이켜보면, 정말 운이 따라줬다고 할 수 있다.더 늦게 발견했다면, 그냥 기존 병원에서 지속적으로 치료했다면 더 안좋은 상황을 마주했을지도 모른다.꼼꼼히 봐주신 의사선생님께도 감사드렸다.고비용의 항암요법이 아닌, 수술로 치료할 가능성..

[코틀린 코루틴] 플로우

플로우는 코루틴을 기반으로 한 리액티브 스트림이다. 플로우를 사용하면 시간이 지남에 따라 나타나는 여러 값을 다루는 상황에서 코루틴의 동시성 매커니즘을 활용할 수 있다. 플로우의 여러 유형과 이를 생성/변환/소비하는 방법을 알아보자.목차플로우란 무엇인가?콜드 플로우핫 플로우플로우란 무엇인가?일시 중단 함수는 스트림 형태의 데이터에는 취약하다.다음 코드를 실행해보자.private var zeroTime = System.currentTimeMillis() fun log(message: Any?) = println("[${System.currentTimeMillis() - zeroTime} ms] ${Thread.currentThread().name}: $message") suspend fun create..

[코틀린 코루틴] 구조적 동시성

코루틴 컨텍스트이전 글에서 Dispatcher를 설정할 때, 이부분에 대해 의구심이 생길 수 있다.우린 분명 launch 의 인자로 Dispatcher를 넘겼는데, launch의 파라미터는 context를 받고 있다.이 컨텍스트는 뭐고, 왜 Dispatcher를 넘겨도 동작할까? 사실 우리가 넘긴 디스패처는 기존 코루틴 컨텍스트에 덮어씌워지는 역할을 수행한다. 코루틴 컨텍스트에는 다양한 정보들이 들어있다.코루틴 디스패처코루틴 생명주기Job 객체코루틴 객체 이름코루틴 ExceptionHandler그리고, 다음과 같이 파라미터로 넘긴 Context로 덮어씌우는게 가능하다.실제로 다음과 같이 코루틴 컨텍스트가 바뀐 것을 확인할 수 있다.구조적 동시성지금까지 코루틴 컨텍스트를 왜 알아봤냐 하면, 구조적 동시성을..

[코틀린 코루틴] 코틀린의 동시성 모델 - 코루틴

코틀린은 동시성 모델로 쓰레드 활용이 아닌, 코루틴을 권장한다.코틀린 코루틴 vs 전통적 스레드코틀린에서는 concurrent.thread 함수를 이용하면, 새 스레드를 간편하게 시작할 수 있다.하지만 이는 커널 스레드를 직접 만드는 형태이기 때문에 비용이 많이 든다.스레드는 계층 개념이 없기 때문에, 계층적 관리를 하기 까다롭다.스레드는 어떤 작업이 완료되길 기다리는 동안에는 블록된다.최신 시스템이라도 한번에 몇 천개의 스레드만 효과적으로 관리할 수 있다.기본적으로 스레드는 굉장히 무거운 자원이다.요청 1개를 처리하는 동안 스레드 1개를 할당하는 구조에서,DB 호출/외부 HTTP/파일 I/O 등으로 스레드가 블로킹되면 그 스레드는 그 시간 동안 유용한 일을 못 하면서도 계속 점유된다.동시 요청이 늘면 ..

RAG(검색 증강 생성) 입문 튜토리얼

RAG(Retrieval-Augmented Generation, “검색 증강 생성”)은 외부 지식의 검색을 통해 대형 언어 모델(LLM)의 응답 생성을 향상시키는 기술이다. LLM 단독으로는 훈련 데이터에 없는 최신 정보나 세부사항을 모를 수 있고, 존재하지 않는 답변을 그럴듯하게 만들어내는 환각(hallucination) 문제가 있다.RAG는 이러한 한계를 해결하기 위해 신뢰할 수 있는 데이터 소스의 정보를 미리 찾아서 LLM에 제공함으로써, 응답의 정확성과 신뢰성을 높이는 역할을 수행한다RAG 파이프라인 개념도문서를 사전 처리하여 임베딩(벡터 표현)을 생성하고 벡터 DB에 저장해 둔 뒤, 사용자 질문(query)에 따라 관련 임베딩을 검색한다. 검색된 문서 내용들을 LLM 프롬프트에 추가(증강)하여,..

Kotlin 문법 - Java와의 차이점

코틀린을 사용하면서, 자바랑 확연히 달라 적응하기 어려웠던 부분들을 기록해둔다.read-only vs mutable 관리read-only vs mutable: 객체 내부 프로퍼티 접근제어코틀린에서 val/var 차이와, 프로퍼티의 getter/setter를 정의하는 방식(특히 private set)을 정리한다.1. val vs varval: 재할당 불가(읽기 전용 참조). 프로퍼티 관점에서는 setter가 없음.var: 재할당 가능. 프로퍼티 관점에서는 getter + setter가 있음.val a = 10// a = 20 // 컴파일 에러var b = 10b = 20 // 가능2. 기본 getter/setter코틀린 프로퍼티는 기본적으로 접근자(accessor)가 자동 생성된다.class User { ..