MySQL(8.0+) "EXPLAIN" Explained
MySQL 8.0의 EXPLAIN과 EXPLAIN ANALYZE로 실행 계획을 읽는 방법을 정리합니다. type·key·rows·filtered·Extra 컬럼의 의미를 짚고, 풀스캔·filesort·인덱스 미사용·Using temporary를 포함한 6개 최적화 사례를 다룹니다.
Continue reading »MySQL 8.0의 EXPLAIN과 EXPLAIN ANALYZE로 실행 계획을 읽는 방법을 정리합니다. type·key·rows·filtered·Extra 컬럼의 의미를 짚고, 풀스캔·filesort·인덱스 미사용·Using temporary를 포함한 6개 최적화 사례를 다룹니다.
Continue reading »0.1 + 0.2가 왜 딱 떨어지지 않는지 float의 내부 표현으로 설명하고, 반복 덧셈과 연산 순서에 따라 오차가 커지는 과정, Decimal과 BigInt의 내부 구현과 사용법, 그리고 수치 오차로 장애가 났던 실무 사례를 정리합니다.
Continue reading »pytest-django로 Django 마이그레이션 스크립트를 검증하는 방법을 정리합니다. 스키마·데이터 마이그레이션 테스트 코드 작성 시나리오와 pytest 설정, 그리고 teardown·실행 순서에서 겪은 트러블슈팅과 해결 방안을 다룹니다.
Continue reading »Anthropic이 공개한 MCP가 M×N 통합 문제를 어떻게 풀어내는지, 프로토콜의 프리미티브와 컨텍스트 표현 방식, 날씨 정보를 가져오는 요청/응답 예시, 그리고 최근 주목받는 이유와 활용 사례를 정리합니다.
Continue reading »LLM 임베딩의 정의와 진화 과정, 레이어 선택·풀링으로 임베딩을 추출하는 방법, 단어/문장/문서 수준 임베딩의 차이, 벡터 DB의 역할과 아키텍처, 유사도 지표와 ANN 기법까지 정리합니다.
Continue reading »유저 모드와 커널 모드가 나뉘는 이유와 user-kernel 경계를 넘을 때 드는 비용을 Win32 syscall 기준으로 정리하고, 호출 빈도·호출당 작업량 관점의 완화 전략과 IPC·공유 메모리 벤치마크 결과를 함께 다룹니다.
Continue reading »컨텍스트 스위칭이 왜 필요하고 CPU·OS가 상태를 어떻게 저장·복원하는지, 프로세스·스레드·경량 스레드의 오버헤드를 비교하고 Python에서 비동기·멀티프로세싱으로 스위칭을 줄이는 방법을 정리합니다.
Continue reading »CPU 파이프라인과 분기 예측이 실패할 때 드는 패널티를 짚고, 분기를 제거하는 구체적인 기법과 SIMD와의 관계, 실제 예제와 측정 도구, 그리고 branchless 코드가 오히려 불리해지는 경우까지 정리합니다.
Continue reading »CPU 캐시의 동작 원리와 하드웨어·소프트웨어 프리패칭 기법을 정리하고 순차 처리가 왜 유리한지 짚습니다. numpy로 순차 접근과 랜덤 접근의 속도 차이를, 그리고 순차 검색이 이진 검색보다 빠른 경우를 실측으로 확인합니다.
Continue reading »Grafana Loki로 로그 시스템을 구축한 과정을 정리합니다. Loki의 특징과 컴포넌트 구성, 로그 쿼리·메트릭 쿼리·파싱을 포함한 LogQL 기본 사용법, 그리고 대용량 조회를 위한 bloom filter 활용법을 다룹니다.
Continue reading »