learn
loss, cost, objective Function에 대하여
출처: Understanding Deep Learning - Simon Prince 실무에서는 loss function과 cost function이 혼용되지만, 엄밀히는 서로 다른 범위를 가리킨다. 훈련 데이터에서…
OpenAI SDK - Message와 Response 구조
messages 배열에 들어가는 각 메시지는 로 구분된다. 로 "이 결과가 어느 요청에 대한 것인지" 매칭한다. 모델이 여러 tool을 동시에 요청할 수 있기 때문에 필수. 는 문자열이다. 로 파싱해야 dict가…
Tool Call 루프와 Multi-Agent 패턴
모델은 함수를 직접 실행하지 못한다. 대신 응답에 "이 함수를 이 인자로 호출해줘"라는 요청을 담아 돌려보낸다. 실행은 항상 클라이언트(우리) 몫이고, 결과를 다시 messages에 담아 보내줘야 모델이 다음…
discriminative model과 generative model에 대해
출처: Understanding Deep Learning - Simon Prince Discriminative model과 generative model의 근본적인 차이는 모델링하는 방향에 있다.…
# Tool vs Skill in AI Agents
AI agent 설계에서 자주 혼용되지만 본질적으로 다른 개념이다. Tool: LLM이 JSON으로 호출하는 함수. 실행 제어권이 코드에 있다. Skill: LLM에게 주는 행동 지침. 실행 제어권이 LLM에…
Agent Loop란 무엇인가
AI agent가 작업을 완료할 때까지 반복 실행하는 제어 흐름이다. LLM이 스스로 판단해서 도구를 쓰고, 결과를 보고, 다음 행동을 결정하는 루프다. LLM이 도구를 사용하는 한 루프는 계속 돈다. 도구가 필요…
공통화할 만한 라이브러리들
에서 이어지는 내용. "어떤 것들을 공통화하면 좋을까?"에 대한 답. "한 번 초기화하고 공유해야 하는 것" 들이 공통화 대상이다. 처럼 상태 없이 함수만 제공하는 애들은 굳이 공통화할 필요 없고,…
설계대로 구현됐는지 검증하는 법
를 거쳐 AI에게 구현을 맡겼을 때, 결과물이 설계와 일치하는지 어떻게 확인하는가. 코드가 "돌아가는 것"과 "구조가 맞는 것"은 다른 문제다. --- 구조 검증: 설계대로 만들어졌는가 (아키텍처, 모듈…
Pydantic이란
Python type hint로 데이터 구조를 정의하면, 런타임에 자동으로 검증하고 변환해주는 라이브러리. 개념적으로 struct와 유사하지만 차이가 있다. C struct는 "이 필드들이 이…
Python @staticmethod
의 목적은 "외부에서 호출 가능하게" 하는 것이 아니다. 외부 호출은 인스턴스를 만들면 어떤 메서드든 가능하기 때문. "이 함수는 도, 도 필요 없다"는 선언. Python 클래스 안에 함수를…
Module Level이란
파일을 하는 순간 바로 실행되는 코드. Python은 파일을 import할 때 위에서 아래로 전부 실행한다. 함수/클래스 정의도 "실행"이고, 그냥 떠있는 코드도 다 실행된다. |…
프로그램 생애주기 리소스 관리 — class 변수 vs instance 변수
SQLite connection, browser 객체처럼 프로그램 시작~종료까지 하나만 유지해야 하는 리소스를 어디에 둘 것인가. 초기화 타이밍 제어 불가: 클래스가 import되는 순간 연결이 열린다 의도…
Python 클래스 vs 인스턴스 상태
C++ 배경에서 Python을 볼 때 모호하게 느껴지는 이유: Python은 선언부 없이 런타임에 변수가 생겨서 클래스/인스턴스 구분이 눈에 잘 안 띈다. 구조는 동일하다. 차이는…
what is argmin
관련: Understanding Deep Learning - Simon Prince argmin은 argument of the minimum의 줄임말로, 함수를 최소로 만드는 입력값(argument)…
Row Equivalent & Elementary Row Operations
출처: Linear Algebra and Its Applications 5e (Lay) --- 행렬의 행에 적용할 수 있는 세 가지 기본 연산이다. | 연산 | 설명 | 예시 | …
Linear System, Linear Equation, Solution Set, Equivalent Systems
출처: Linear Algebra and Its Applications 5e (Lay) --- Linear equation은 equation 하나다. 변수에 제곱이 없고, 형태가 기본이다. …
수식을 자연스럽게 읽는 법
교수님이 말한 수학 역량은 모든 수식을 증명하는 능력이 아니다. 논문에서 수식이 나왔을 때 "아, 이건 이런 이야기구나"하고 읽을 수 있는 상태 — 이게 연구실의 최소 조건이다. 이건 두 가지 능력으로…
설계 과정에서 인간이 검증해야 하는 지점
소프트웨어 설계의 각 단계에서 "어디를 검증해야 하는가"는 결국 "어디서 실수하면 비용이 가장 큰가"와 같은 질문이다. 를 다시 보면: 왼쪽에서 내린 결정이 오른쪽 전체를 지배한다.…
데이터 설계 — 도메인 모델을 저장 가능한 형태로 변환하기
데이터 설계는 에서 도메인 모델링 이후에 오는 단계로, 개념적 관계를 실제 저장 형태로 변환하는 과정이다. 도메인 모델이 "무엇이 존재하는가"라면, 데이터 설계는 "그걸 어떻게 담을 것인가"다. --- …
ADR (Architecture Decision Record)
중요한 설계 결정을 문서로 남기는 관행. "왜 이렇게 만들었지?"라는 질문에 나중에도 답할 수 있게 하는 것이 목적. 결정의 배경, 고려한 선택지, 최종 선택, 그 이유를 짧게 기록한다. 팀원 온보딩,…
Rust의 Trait
Rust에서 trait는 "이 타입은 이런 동작을 할 수 있다"는 걸 정의하는 인터페이스다. C++의 추상 클래스, Java의 interface와 비슷하지만 상속 없이 다형성을 만들고, 컴파일 타임 제로코스트…
임시 계정 생성
MySQL 보안 설정 (Ubuntu)
Ubuntu에서 MySQL을 외부에 노출할 때 최소한의 보안 구성. --- MySQL 설치 시 파일이 여러 디렉토리에 분산된다. | 경로 | 내용 | |------|------| | |…
SSH Key 인증 설정
생성 파일: → private key, 절대 공유 X → public key, 서버에 등록 --- --- 권한이 틀리면 SSH가 인증을 거부함. …
sshd_config — SSH 서버 보안 설정
--- 설정이 명시되지 않으면 SSH 기본값이 적용됨: | 설정 | 기본값 | |---|---| | PubkeyAuthentication | yes | |…
웹 크롤링 방식과 프레임워크
웹 크롤링은 크게 세 가지 접근 방식으로 나뉜다. 각 방식은 대상 웹사이트의 렌더링 방식에 따라 선택된다. 서버가 완성된 HTML을 직접 응답하는 전통적인 웹사이트에 적합하다.…
Tailscale — 기기 간 사설 네트워크
Tailscale은 내 기기들끼리 직접 암호화 터널을 만드는 메시 VPN이다. 일반 VPN(NordVPN 등)이 외부 서버를 경유하는 것과 달리, Tailscale은 기기 간 P2P 연결을 만든다. --- …
X-Forwarded-For 헤더와 클라이언트 IP
브라우저가 Next.js 서버에 직접 연결되는 게 아니다. 실제 경로: 서버 입장에서 요청 IP를 보면 중간 프록시의 IP가 찍힌다. 원본 IP 정보가 프록시를 거치며 사라지기 때문. 이를 해결하기…
Claude Code와 tmux
Zed 터미널에서 실행 중 Zed를 닫으면 세션이 날아간다. Zed 닫아도 서버에서 Claude Code가 살아있다. 재접속 시 하면 대화 이어서 가능. 프로세스 유지가…
FastAPI Lifespan Events
FastAPI 앱에는 시작과 종료 시점에 딱 한 번씩 실행되는 lifecycle hook이 있다. HTTP 요청이 들어오기 전에 DB 연결이나 캐시 로딩 같은 준비 작업을 해두기 위한 장치다. …
llama.cpp에서 MoE 모델 VRAM 최적화
Qwen3.5-35B-A3B-UD-IQ3_XXS 모델을 16GB VRAM GPU에서 llama.cpp로 실행하는 경우. 모델 특성: MoE 구조: 총 파라미터 35B, 추론 시 활성화는 ~3B (Mixture…
marker에 로컬 LLM 붙이기
model_test 프로젝트 일환. marker()의 모드를 Ollama / llama.cpp로 구동하는 방법 정리. — PDF, image 기본 지원 — PPTX, DOCX, XLSX,…
Next.js에서 Markdown → HTML 변환 파이프라인
Next.js에서 markdown을 렌더링할 때는 unified 생태계를 사용한다. 단순히 텍스트를 치환하는 게 아니라, 문서 전체를 트리(AST) 구조로 파싱한 뒤 노드 단위로 변환한다. …
Obsidian Wikilink
# 기본형 # 화면에 표시되는 텍스트 변경 # 특정 섹션으로 이동 # 헤딩 + 별칭 조합 을 으로 변환하는 파이프라인이 별도로 필요하다. Next.js 환경에서는 remark…
SQLite 기초 — 연결, cursor, 그리고 "파일 DB"의 본질
SQLite는 서버가 없다. 포트도 없고, 데몬도 없다. 그냥 파일이다. 를 짤 때 순서가 헷갈리기 쉬운데, 올바른 순서는: 1. 연결 () → 파일이 없으면 이 시점에 자동 생성 2. 테이블…
tmux 기본 개념과 사용법
SSH로 서버에 접속해서 작업하다 보면 연결이 끊기면 실행 중인 프로세스도 같이 죽는다. tmux는 서버에서 세션을 독립적으로 유지해줘서, SSH 연결이 끊겨도 프로세스가 살아있다. SSH 재접속 후 …
RUP (Rational Unified Process)란 무엇인가
RUP는 Rational Software Corporation이 개발한 상업용 소프트웨어 개발 프로세스다. "Rational"이라는 이름은 회사명에서 왔지만, 우연히도 "합리적인"이라는 영어 단어와 일치하여…
Model Quantization — 왜 성능이 떨어지고, 왜 그래도 쓰나
학습된 모델의 weight는 float32(32bit) 또는 bfloat16(16bit) 실수. 양자화는 이를 더 적은 비트로 표현해 메모리를 줄이는 기법. Q4: 4bit, 16개의 이산값으로 표현 Q8:…
FK (Foreign Key, 외래 키)
다른 테이블의 를 참조하는 컬럼. 테이블 간의 관계를 표현하는 장치. 가 를 참조한다. "이 댓글은 누가 썼는가"를 표현. FK의 핵심 역할. 존재하지 않는 PK를 참조하는 행을 DB…
Inception 단계는 어떻게 진행하는가
Inception은 "설계"하는 단계가 아니라 "탐색"하는 단계다. 많은 사람들이 Inception을 상세 설계 단계로 오해하지만, 실제로는 프로젝트의 실행 가능성을 빠르게 판단하는 것이 목적이다. ---…
Implementation vs Deployment
소프트웨어 개발 프로세스에서 implementation과 deployment는 명확하게 구분되는 두 단계다. 설계 모델을 실제 코드로 변환하는 단계다. 클래스 다이어그램을 보고 나 파일을 작성하고,…
Import/Include 중복 사용과 성능
"공통 라이브러리를 한 번만 import하면 성능이 좋아지지 않나?"라는 질문에서 출발한 노트. 런타임 성능과는 무관하다. 세 언어 모두 중복 import/include가 런타임 오버헤드를 만들지…
Inception 템플릿: UP와 Lean/Agile의 통합
현대적인 Inception은 Unified Process의 체계적 리스크 관리와 Lean/Agile의 빠른 가설 검증을 결합한다. 무거운 문서 대신 가벼운 캔버스를 사용하면서도 UP의 마일스톤 게이트를 유지하는…
OOA/D Inception Canvas
Larman의 Inception 단계에서 사용하는 한 페이지 캔버스. Lean Canvas나 BMC처럼 핵심 요소를 빠르게 정리하여 을 효율적으로 진행하고, OOA/D(Object-Oriented Analysis…
Polling vs WebSocket
서버에서 데이터가 바뀌었을 때 클라이언트가 그것을 어떻게 아느냐는 문제에 대한 두 가지 접근. 클라이언트가 주기적으로 서버에 "바뀐 거 있어?"라고 HTTP 요청을 반복하는 방식. 구현이 단순하지만…
소프트웨어 설계 학습 로드맵
순수 top-down 설계는 설계 공간(Design Space)을 완전히 아는 경우에만 작동한다. 현실에서는 구현해봐야 비로소 보이는 것들이 있다 — reqwest 크레이트의 존재, SAML 인증 체인, 리다이렉트…
SQL 표준과 플랫폼 방언 (Dialect)
SQL에는 ANSI SQL이라는 국제 표준이 있다. 기본적인 CRUD, 조인, 집계 등은 어떤 관계형 DB에서든 거의 동일하게 동작한다. 표준을 벗어나는 영역에서 방언(dialect)이 생긴다.…
cursor.lastrowid
직전에 INSERT된 row의 Primary Key(rowid)를 반환한다. 단일 PK + auto increment 테이블에서 INSERT 후 생성된 id를 알아낼 때 쓴다. DB가 id를 자동…
Unified Process의 4단계: Inception → Elaboration → Construction → Transition
Larman이 소개하는 RUP(Rational Unified Process) 또는 UP(Unified Process)는 반복적/점진적 개발 방법론이다. 전통적인 Waterfall처럼 순차적으로 진행하지 않고, 각…
CI (Continuous Integration)
코드가 변경될 때마다 테스트와 검증을 자동으로 실행하는 파이프라인. agent가 코드를 짤 때 규칙 준수 여부를 인간이 매번 확인하면 병목이 생긴다. CI에 structural…
CMS (Content Management System)
콘텐츠를 코드 없이 만들고 관리하고 발행할 수 있게 해주는 소프트웨어. 핵심 목적은 콘텐츠와 코드의 분리 — 개발자가 아니어도 글을 쓰고, 수정하고, 올릴 수 있게 하는 것. Traditional…
ORM (Object-Relational Mapping)
객체(Object)와 관계형 DB(Relational)를 연결해주는 레이어. 코드에서는 데이터를 객체로 다루고, DB는 테이블·행으로 저장하는데, 이 둘의 구조적 불일치를 Object-Relational…
요구사항 분석 — 범위와 깊이를 잡는 법
"대학 행정 관리 프로그램"처럼 큰 아이디어가 머릿속에 있을 때, 어디서부터 어디까지를 요구사항으로 정의해야 하는지. 핵심은 "뭘 만들지"가 아니라 "뭘 안 만들지"를 정하는 것이다. 요구사항 단계에서 풀어야…
Use Case란 무엇인가
Use Case는 사용자(Actor)가 시스템과 상호작용하여 가치 있는 목표를 달성하는 시나리오다. "사용자가 사용할 부분"에 대한 고민이 맞지만, UI 설계가 아니라 기능적 목표에 집중한다. ---…
🗺️ Design 폴더 읽기 가이드
이 폴더는 "프로그램을 처음부터 설계하고, AI에게 구현을 맡기고, 검증하는" 전체 과정을 다룬다. 바이브 코딩에서 유지보수 가능한 개발로 넘어가기 위한 사고 프레임워크다. --- 네 파트 +…
소프트웨어 아키텍처 종류 — 전체 지도
에서 아키텍처를 선택할 때 알아야 할 주요 패턴들. 모든 아키텍처의 차이는 결국 세 가지 질문에 대한 답이다: 누가 누구를 호출하는가(제어 흐름), 데이터가 어디에 살고 이동하는가(데이터 흐름), 변경이 생기면…
아키텍처별 컴포넌트 분해와 AI 작업 위임
를 선택했으면, 그 다음은 "파일을 어떻게 나누고, AI에게 어떤 단위로 맡기는가"다. 아키텍처가 분해의 "축"을 결정한다. --- --- AI 작업 순서: model…
앱 너머의 설계 — 프레임워크, AI 모델, 프로토콜
는 앱이 아닌 것을 만들 때도 적용되는가. 뼈대는 유지되지만, 각 단계에서 묻는 질문이 달라진다. --- 변하지 않는 것: 요구사항 분석, 도메인 모델링, 구조 결정, 검증은 항상 필요하다. …
임베디드와 Physical AI로 확장되는 설계
에서 한 단계 더 나아가, 소프트웨어가 물리적 세계와 만나는 경우. 의 뼈대는 유지되지만, "시간 제약, 자원 제약, 물리적 안전"이라는 세 축이 모든 단계에 추가된다. --- 소프트웨어:…
데이터가 먼저 정해져 있을 때의 설계
크롤링, 외부 API, 레거시 DB, 공공 데이터처럼 데이터 형태가 이미 결정되어 있는 경우 가 어떻게 달라지는가. --- ⓪ 단계가 추가된다. 외부에서 뭘 받을 수 있는지 파악하고, 그…
구성요소 내부 설계 — UI, Server, AI, 보안의 깊이
에서 각 구성요소를 들여다보면 그 안에도 설계해야 할 깊이가 있다. 설계는 프랙탈 구조 — 확대하면 각 부분이 또 하나의 세계다. 핵심 원칙: 각 영역에서 "방향"만 네가 정하고, 구현은 AI에게 맡긴다.…
로컬 앱에 서버 의존 기능(LLM)을 결합하는 설계
시간표 앱처럼 기본은 로컬로 충분한데, 자연어 처리(LLM) 같은 기능 하나 때문에 서버 통신이 필요한 경우. 의 깔끔한 3분류(Local / Server / Hybrid)에 딱 안 맞는 현실적 케이스다. …
설계 검증에 쓰이는 다이어그램 종류
에서 "AI에게 구조도를 그려달라"고 할 때, 확인하고 싶은 대상에 따라 적절한 다이어그램이 달라진다. 크게 정적 구조, 동적 행동, 배포 구조 세 관점이 있다. --- 코드를 실행하지 않고 볼…
도메인 모델링과 구현의 단위 — 어디서 쪼개는가
에서 기능 그룹을 나눈 뒤, 도메인 모델링과 구현을 어떤 단위로 진행해야 하는가. 결론: 도메인 모델은 한 번에, 구현은 기능 그룹 단위로. --- 기능 그룹이 이렇게 나뉘어 있을 때: …
기술 설계에서 커리어 설계로 — 취업가, 연구자, 창업가
는 기술에만 쓰이는 게 아니다. 요구사항 → 도메인 → 구조 → 분해 → 데이터 → 검증은 문제 해결의 일반적 구조이며, 기술이든 연구든 사업이든 달라지는 건 각 단계에서 다루는 대상이다. --- …
기술 스택 선택 — 아키텍처와 프레임워크/DB를 조합하는 법
프레임워크, DB, 클라이언트/서버 구조의 선택지가 폭발적으로 많을 때, 어떻게 결정하는가. 핵심은 "뭘로 만들지"가 아니라 "뭘 만들지"가 먼저라는 것이다. 아키텍처: "데이터가 어디에 살고, 어떤 방향으로…
프로그램을 처음부터 설계하는 과정
"시간표 관리 프로그램을 만들어 줘"라는 한 줄의 요청을 받았을 때, 코드를 쓰기 전에 머릿속에서 일어나는 전체 과정을 정리한다. 좋은 설계의 핵심은 추상에서 구체로 내려가는 것이다. 처음부터 코드를…