정동우가 코드를 연습하고 판단을 기록하기 위해 남겨둔 개인 메모 공간입니다.
오늘의 연습 컨베이어
Bloom Filter는 집합의 모든 원소를 직접 저장하지 않고, bit 배열 하나와 여러 개의 hash 위치만으로 membership을 근사(approximate)하는 확률적 자료구조다. 결과가 “없다(negative)”이면 해당 원소는 집합에 확실히 없다고 판단할 수 있고, “있다(positive)”이면 실제로 존재할 수도 있고, false positive일 수도 있다. Burton Bloom의 1970년 논문은 이렇게 “허용 가능한 오류(false positive)”를 대가로 공간과 조회 시간을 크게 절약하는 구조를 제시했다.
멱등성 키(Idempotency Key)는 중복 요청 방지 장치가 아니라, 불확실한 외부 I/O를 가진 POST API의 상태 전이 경계 설계다.
집계는 필터링(filter), 그룹화(group), 합산(sum), 정렬(sort), 상위 N개 선택(take)의 다섯 단계로 분해해 각 단계를 드러낸다. 누적은 맵으로, 상위 선택은 정렬 뒤 자르기로 분리한다. 금액은 부동소수가 아니라 정수 minor unit 또는 decimal 계열로 다루고, 그룹 키(group key)는 정규화한 뒤 묶는다.
Code Card
파일, 소켓, DB 커넥션, 락, 임시 디렉터리처럼 "열었으면 반드시 닫아야 하는 것"은 일반 값과 다르게 다뤄야 한다. 리소스를 얻은 스코프가 리소스를 반납해야 한다.
검증, 권한, 의존성 실패가 섞인 함수에서 가장 먼저 적용할 수 있는 구조다. 실패 조건을 먼저 닫고, 함수 본문은 정상 흐름으로 남긴다. 실패는 throw가 아니라 Result 데이터로 반환한다.