🕊️

코딩둘기

전체 글 (79)


Spring ProblemDetail로 API 예외 응답 표준화하기

Spring으로 REST API를 만들다 보면 예외 응답을 어떻게 구성할지 한 번쯤 고민하게 된다.처음에는 보통 프로젝트에 필요한 ErrorResponse를 직접 만든다.public record ErrorResponse( int status, String code, String message) {}그리고 @RestControllerAdvice에서 예외를 잡아 응답한다.@RestControllerAdvicepublic class GlobalExceptionHandler { @ExceptionHandler(UserNotFoundException.class) public ResponseEntity handleUserNotFound( UserN..

Spring Proxy 완벽 이해: @Transactional은 어떻게 JDK Dynamic Proxy와 CGLIB로 동작할까?

Spring에서 @Transactional을 사용하다 보면 자연스럽게 Proxy라는 개념을 만나게 된다. 처음 Proxy Pattern을 공부하면 보통 직접 Proxy 클래스를 만들어 실제 객체를 감싸는 예제를 접한다. 그래서 Spring에서도 개발자가 Proxy 클래스를 직접 만들어야 하는 것처럼 느껴질 수 있다. 하지만 실제 Spring 개발에서는 대부분 그렇지 않다.@Servicepublic class OrderService { @Transactional public void createOrder() { // 주문 처리 }} 개발자가 작성하는 코드는 이것뿐이다. 그런데 @Transactional은 어떻게 메서드 실행 전 트랜잭션을 시작하고, 정상적으로 끝나면 Commit..

JVM은 자바 코드를 어떻게 실행할까?

JVM이란?JVM(Java Virtual Machine)은 Java Bytecode를 실행하기 위한 가상 머신이다.조금 더 정확히 말하면 JVM은 하나의 특정 프로그램을 의미하기보다 Bytecode를 어떻게 실행해야 하는지 정의한 명세에 가깝다. 이를 실제로 구현한 JVM 중 대표적인 것이 HotSpot JVM이다. Java 소스 코드는 CPU가 직접 실행하지 않는다.public class Main { public static void main(String[] args) { System.out.println("Hello JVM"); }}위 코드를 javac로 컴파일하면 Main.class 파일이 생성된다.javac Main.java .class 파일 안에는 특정 CPU를 위한 기계..

Python 실행 구조 완벽 정리: 인터프리터, AST, 바이트코드, PVM까지

데이터 분석가가 알아야 할 Python 실행 구조Python은 데이터 분석과 AI/ML 분야에서 사실상 표준 언어처럼 쓰인다.NumPy, Pandas, scikit-learn, PyTorch, TensorFlow는 물론이고 LangChain, RAG 파이프라인, LLM 애플리케이션 개발까지 Python을 중심으로 돌아가는 경우가 많다. Python이 이렇게 널리 쓰이는 이유는 단순히 “문법이 쉬워서”만은 아니다. Python은 데이터를 다루는 개발 방식과 잘 맞는다. 코드를 짧게 작성할 수 있고, REPL이나 Jupyter Notebook에서 바로 실행해보며 결과를 확인할 수 있다. 분석가는 처음부터 완성된 프로그램을 만드는 사람이 아니라, 데이터를 보면서 가설을 세우고, 코드를 바꾸고, 다시 확인하는 ..

로그인은 어떻게 유지될까? 쿠키, 세션, 토큰의 차이

웹사이트에 한 번 로그인하면 페이지를 이동하거나 새로고침해도 로그인 상태가 유지된다. 그런데 HTTP는 기본적으로 이전 요청을 기억하지 않는 프로토콜이다. 사용자가 로그인 요청을 보냈더라도, 다음 요청에서는 같은 사용자인지 자동으로 알 수 없다. 따라서 로그인 상태를 유지하려면 요청을 보낸 사용자가 누구인지 확인할 수 있는 별도의 장치가 필요하다. 이때 사용되는 개념이 쿠키, 세션, 토큰이다.1. 쿠키란 무엇인가쿠키는 브라우저에 저장되는 작은 데이터이다.서버는 응답 헤더의 Set-Cookie를 사용해 브라우저에 쿠키를 저장하도록 요청할 수 있다.HTTP/1.1 200 OKSet-Cookie: sessionId=abc123브라우저는 저장된 쿠키를 이후 요청에 자동으로 포함한다.GET /mypage HTTP..

루프 엔지니어링(Loop Engineering)이란?

최근 AI 코딩 에이전트 관련 글을 읽다가 루프 엔지니어링(Loop Engineering)이라는 표현을 접했다.처음에는 새로운 기술이라기보다 기존 Agent Loop에 이름을 붙인 것처럼 보였다. AI 에이전트는 원래 목표를 받고, 도구를 실행하고, 결과를 확인한 뒤 다시 행동하는 구조로 동작하기 때문이다. 하지만 루프 엔지니어링은 에이전트 내부의 단순한 반복보다 조금 더 큰 범위를 다룬다.사람이 AI에게 계속 다음 프롬프트를 입력하는 대신, 작업을 발견하고 에이전트에게 전달하고 결과를 검증한 뒤 다음 작업을 결정하는 시스템 자체를 설계하는 것이다.지금까지는 사람이 루프를 돌리고 있었다AI에게 기능 구현을 맡기면 보통 다음과 같이 작업한다.사람: 로그인 기능을 구현해줘AI: 코드를 작성한다사람: 테스트가..