Python 7

클로드 코드 - 실전

1. 컨텍스트 관리1-1. 두 개의 기억 — CLAUDE.md와 자동 메모리(/memory)Claude Code에는 세션을 넘어 지식을 유지하는 두 가지 기억 시스템이 있다.CLAUDE.md자동 메모리 (Auto Memory)작성 주체내가 쓴다Claude가 스스로 쓴다담는 내용지시와 규칙학습한 패턴, 인사이트공유 범위레포에 커밋해 팀 공유내 머신에만 (개인)용도컨벤션, 아키텍처, 워크플로우빌드 명령, 디버깅 교훈, 내 취향자동 메모리는 기본으로 켜져 있고, Claude가 작업하면서 "다음 세션에도 유용하겠다" 싶은 것을 알아서 기록한다. 동작 방식은 다음과 같다.저장 위치: ~/.claude/projects//memory/ — MEMORY.md(인덱스) + 토픽별 파일(debugging.md 등)매 세션..

Python/AI 2026.07.18

클로드 코드 - 입문

1. CLAUDE.md — Claude에게 프로젝트를 가르치는 파일Claude Code를 잘 쓰는 사람과 못 쓰는 사람의 가장 큰 차이가 이 파일이다. CLAUDE.md는 매 세션 시작 시 Claude가 자동으로 읽는 프로젝트 설명서로, 여기에 적힌 내용은 대화마다 반복해서 알려줄 필요가 없어지게 됨./init으로 자동 생성/initClaude가 프로젝트를 분석해 초안을 만들어 줍니다. 처음부터 직접 쓰지 말고 /init으로 뼈대를 만든 뒤 다듬는 것이 효율적입니다.계층 구조: 글로벌 vs 프로젝트위치적용 범위넣을 내용~/.claude/CLAUDE.md모든 프로젝트 공통개인 공통 규칙 (예: "항상 한국어로 답변")프로젝트루트/CLAUDE.md해당 프로젝트만아키텍처, 컨벤션, 빌드 명령어글로벌에는 개인 ..

Python/AI 2026.07.18

SQLAlchemy - ORM

JPA와 다른 점JPA를 쓰던 입장에서 가장 크게 느낀 차이는 설정이 명시적이다 는 점이다.JPA// 1. 엔티티 선언@Entitypublic class User { @Id @GeneratedValue private Long id; private String name;}// 2. 레포지토리 상속public interface UserRepository extends JpaRepository {}// 3. 그냥 씀userRepository.findAll();커넥션 풀, 트랜잭션, 세션 관리가 전부 Spring이 알아서 해준다.SQLAlchemy# 1. 엔진 생성 (DB 커넥션 설정)engine = create_engine("postgresql://user:pw@localhost/db")# 2..

Python/FastAPI 2026.05.20

FastAPI의 비동기(async/await)

동기(sync)방식import timedef 밥짓기(): time.sleep(5) # 5초 기다림 return "밥 완료"def 국끓이기(): time.sleep(3) # 3초 기다림 return "국 완료"밥짓기() # 5초 기다림국끓이기() # 그다음 3초 기다림# 총 8초동기 방식은 한 작업이 끝나야 다음 작업을 시작한다.밥이 다 되길 기다렸다가 국을 끓이는 것처럼, 기다리는 동안 아무것도 못 함.비동기(async)는 뭐가 다른가import asyncioasync def 밥짓기(): await asyncio.sleep(5) # 5초 기다리는 동안 다른 일 가능 return "밥 완료"async def 국끓이기(): await asyncio.sleep(3..

Python/FastAPI 2026.05.20

Prefect - 오케스트레이션

오케스트레이션이란오케스트레이션(Orchestration)은 여러 작업을 순서대로, 조건에 맞게, 안정적으로 실행하는 것을 말한다.오케스트라에서 지휘자가 각 파트(바이올린, 첼로, 플루트)를 박자에 맞춰 조율하는 것과 같다. 각 연주자(작업)는 자기 역할만 하고, 지휘자(오케스트레이터)가 전체 흐름을 책임진다.데이터 파이프라인으로 예를 들면, 아래 같은 상황이 생긴다.1. 외부 API에서 데이터 수집2. 수집한 데이터 정규화3. 중복 제거 후 DB 저장4. 저장 완료되면 슬랙 알림이걸 그냥 순서대로 실행하는 Python 스크립트를 짜면 되지 않냐고 할 수 있다. 근데 실제로는 문제가 생긴다.2번에서 실패하면 1번부터 다시 해야 하나?어느 단계에서 실패한 건지 로그 뒤져야 알 수 있음매일 자동 실행하려면 c..

Python 2026.04.07

Alembic - 스키마 버전 관리

Alembic이 필요한 이유DB 스키마를 바꿀 때 흔히 하는 실수가 있다. CREATE TABLE SQL을 직접 실행하거나, 팀원들이 각자 DDL을 돌리는 방식이다.문제는 재현성이다. 어떤 DDL이 어떤 순서로 실행됐는지 추적이 안 된다. 새 팀원이 환경을 셋업할 때, 스테이징에서 프로덕션으로 배포할 때 매번 수동으로 맞춰야 한다.Alembic은 마이그레이션을 파일로 관리한다. 각 파일은 upgrade() (스키마 적용)와 downgrade() (롤백)를 담고, 파일 간 연결은 revision ID로 이어진다. alembic upgrade head 한 번으로 현재 DB를 최신 상태로 만들 수 있다.초기 셋업# 프로젝트 루트에서alembic init alembic이 명령어 하나로 alembic/ 디렉토리와..

Python 2026.04.07

SQLAlchemy - Python ORM

ORM이란ORM(Object-Relational Mapping)은 DB 테이블을 Python 클래스로, 행(row)을 객체로 다루게 해주는 기술이다.ORM 없이 PostgreSQL을 쓰면 이렇게 된다.cursor.execute(""" INSERT INTO users (email, username) VALUES (%s, %s)""", ("hello@example.com", "goran"))SQLAlchemy ORM을 쓰면 이렇게 된다.user = User(email="hello@example.com", username="goran")session.add(user)session.commit()SQL을 직접 쓰지 않아도 되고, Python 객체처럼 다룰 수 있어서 코드가 일관성 있어진다. 타입 힌트도 붙..

Python 2026.04.07