DB 구조와 설계 문서를 대조하다가, 최종 수강신청 외에 신청을 처리하는 중간 기록도 필요하다는 이야기를 만났다. 처음에는 잘 이해되지 않았다. 신청 테이블이 있는데 왜 비슷한 테이블이 또 필요한 걸까?실패하면 다시 시도하면 되지 않을까? 트랜잭션으로 묶으면 끝 아닌가? 사용자가 그냥 나가면 누가 정리하지? 질문 하나에 답을 얻으면 다음 질문이 생겼다. 나중에는 어디서 시작한 고민인지 놓칠 정도여서, 그 흐름 자체를 남겨보려고 한다.이 글은 구현을 완료한 뒤 작성한 성능·장애 대응 후기가 아니다. 수강신청 설계를 이해하며 던진 질문과 현재의 이해를 정리한 기록이다. 예시는 일반화했으며, 실제 카드 결제·환불이 아닌 신청 당시 금액 보존을 다룬다.1. 신청 테이블이 있는데 처리 기록은 왜 또 필요할까?예시..

전체 글
Studio1. 개념 소개KMP 알고리즘은 본문(Text) S 안에서 패턴(P) 을 찾는 문자열 검색 알고리즘이다.틀렸을 때 무식하게 처음부터 다시 비교하지 않고, 이미 비교해서 얻은 정보(LPS) 로 패턴을 점프한다.그래서 최악의 경우에도 O(N + M) (N=본문 길이, M=패턴 길이)필자는 이해하는데 무려 3일이라는 시간이 걸렸다......비교 요약완전탐색(브루트포스)은 “한 칸 밀고 처음부터 다시”KMP는 “겹친 만큼은 건너뛰고 다음 비교로”2. 주요 용어용어의미LPS, 실패함수, 실패 배열KMP 알고리즘에서 매칭 실패 시, 패턴을 얼마나 건너뛸 수 있는지를 알려주는 역할접두사문자열의 시작에서부터 연속된 부분 문자열. 예: "ABC"의 접두사는 "", "A", "AB", "ABC"접미사문자열의 끝에서부터 연..
0. 주의사항사실 이 문제는 나머지 연산을 사용하면 쉽게 풀 수 있습니다.이 글은 큰 수의 나누기 연산에서 소수점을 정밀하게 구할 수 있는 방법을 소개합니다.이 문제를 풀 때, 논리가 너무 인상적이었어서 기록하고 싶어서 작성합니다.1. 문제소개1-1. 요구사항세 정수 a, b, c가 주어짐 (1 => 두 수를 곱할 경우 int로는 터짐오차가 10^(-6) 이하가 되도록 a * b / c를 계산해야 함1-2. 입력값과 출력값123456789 987654321 7유일한 줄에 세 정수 a, b, c가 하나의 공백을 두고 주어짐하나의 소수를 출력함 (오차가 10^(-6) 이하가 되도록)1-3. 문제조건단순 double 형으로 문제를 풀 수 없음소수점이 전부 .000000 으로 나오는 정밀도 문제가 발생함..
📦 JavaScript에서 상속(Inheritance) 구조1. 개요JavaScript는 클래스 기반 상속이 아닌 프로토타입 기반 상속을 사용한다.객체는 자신의 프로퍼티에 없으면 proto 를 따라 부모의 프로퍼티를 탐색한다.함수의 prototype과 인스턴스의 __proto__를 연결함으로써 상속 구조가 형성된다.2. 상속의 목적과 개념공통된 속성 및 메서드를 재사용하여 객체 간 중복 제거하위 객체가 상위 객체의 메서드 및 속성에 접근할 수 있도록 상속 체계를 만든다JavaScript에서는 __proto__ 체인을 통해 메서드를 찾아간다3. 프로토타입 기반 상속의 원리function Person(name) { this.name = name;}Person.prototype.introduce = fun..
📦 JavaScript에서 Prototype과 proto 체계1. 개요자바스크립트는 프로토타입 기반(prototype-based) 언어이다.객체는 proto 링크를 통해 상속 체인을 형성한다.함수(Function)와 객체(Object)는 prototype, proto 체계를 통해 긴밀히 연결된다.함수는 [[Call]]과 [[Construct]] 내부 슬롯을 가지는 특별한 객체이다.2. prototype과 proto의 역할2.1 prototype함수(Function)가 가진 "설계도 객체". (일반 객체는 존재하지 않는다. typeof로 확인하면 undefine)new 키워드로 인스턴스 생성 시, 새 객체의 __proto__가 생성자의 prototype으로 설정된다.즉 prototype은 내 자식에게 물..
𝒇 함수1. js에서 함수란자바스크립트에서 함수는 일급 객체(first-class citizen)로 취급되며, 이는 함수를 변수에 할당하거나, 인자로 전달하거나, 반환값으로 사용할 수 있음을 의미한다.자바스크립트의 함수는 다음과 같은 특징을 가진다:재사용 가능한 코드 블록이다.클로저(Closure)를 형성하여 외부 스코프에 접근할 수 있다.함수 표현식과 함수 선언식을 통해 정의할 수 있다.익명 함수, 화살표 함수, 즉시 실행 함수(IIFE) 등 다양한 형태를 가질 수 있다.function sayHello() { console.log("Hello, World!");}const greet = function() { console.log("Hi!");};const arrowGreet = () =>..