블로그
-
효율적인 디버깅 팁 — 빠르고 정확하게 버그를 잡는 사고방식
간헐적 버그를 재현 가능한 상태로 만드는 법, 가설을 세우고 검증하는 순서, 코드·커밋·데이터·설정 범위에 이분 탐색을 적용하는 방법을 다룹니다. 스택 트레이스와 에러 메시지 읽는 법, 로그와 디버거 중 무엇을 쓸지 고르는 기준, 프로덕션 디버깅의 차이도 설명합니다.
-
TCP vs UDP 전송 프로토콜 비교 | 신뢰성·지연·QUIC까지 선택 가이드
TCP와 UDP를 표로 외우는 대신 Wireshark 캡처에서 재전송·Dup ACK·손실이 어떻게 보이는지로 차이를 익히고, DNS·VoIP·게임·QUIC(HTTP/3)이 각각 어떤 이유로 전송 방식을 택했는지 실무 선택 기준으로 정리합니다.
-
WebSocket 실시간 통신: RFC 6455 업그레이드와 프레임, Socket.io 채팅, Redis 확장, 프로덕션 디버깅
WebSocket으로 실시간 통신을 구현하는 방법. 프로토콜 업그레이드와 프레임, 하트비트, 기본 WebSocket API, Socket.io, 채팅 앱 예제, Redis로 여러 서버 확장, 프로덕션에서만 연결이 끊길 때의 점검 순서를 다룹니다.
-
C++ 멀티채널 알림 서비스: 이메일·SMS·FCM 푸시·WebSocket·Webhook 통합과 재시도·DLQ
WebSocket 실시간 알림, FCM 푸시, SMTP 이메일, SMS, Webhook을 하나의 알림 서비스로 통합하는 방법을 정리합니다. 채널별 재시도·백오프·DLQ, FCM 토큰 만료 처리, 이메일 rate limiting 같은 실전 트러블슈팅을 다룹니다.
-
C++로 10GB 파일 올리기: S3 멀티파트 업로드, MinIO, 재시도·진행률, CDN과 서명 URL
C++로 S3 멀티파트 업로드를 구현해 10GB 파일도 메모리 폭발 없이 병렬 처리하는 방법을 정리합니다. MinIO 로컬 스토리지, 재시도·백오프, 진행률 표시, CDN 캐시 무효화, 서명된 URL까지 다룹니다.
-
C++ REST API 성능 최적화 예제: perf로 병목 찾고 해시맵 인덱스·참조 반환으로 응답 시간 줄이기
사용자 목록을 반환하는 C++ REST API를 예로 들어, 벤치마크 기준선을 잡고 perf로 핫스팟을 찾은 뒤 요청마다 전체를 훑던 탐색을 해시맵 인덱스로 바꾸고, User 복사를 참조 반환으로 없애고, JSON 직렬화를 정리하는 과정을 연산 횟수 기준으로 설명합니다. 요청 안에서의 병렬화가 왜 위험한지도 다룹니다.
-
Git 머지 충돌 해결 예제 | 장기 리팩토링 브랜치를 main에 병합하는 순서
몇 달 동안 main과 따로 진행된 리팩토링 브랜치를 병합할 때 충돌이 쏟아지는 상황을 예제로, main을 리팩토링 브랜치로 역방향 머지하고 git status --porcelain 코드로 충돌을 분류한 뒤 기계적인 충돌과 로직 충돌을 나눠 푸는 방법, --ours와 -X ours의 차이, rerere·zdiff3·remerge-diff 활용법을 설명합니다.
-
C++ 서버 배포: Docker 멀티스테이지, systemd, Kubernetes 무중단 배포, Prometheus 모니터링
C++ 서비스를 프로덕션에 배포하는 방법. Docker 멀티스테이지 빌드, systemd 서비스, Kubernetes Deployment·Ingress·readinessProbe, 롤링 업데이트, CI/CD, Prometheus·Grafana·spdlog, glibc·OOM·502 에러 대응을 다룹니다.
-
C++ typedef vs using: 템플릿 별칭과 함수 포인터 별칭, 별칭은 새 타입이 아니다
중첩된 map<string, vector<pair<...>>> 같은 긴 타입에 이름을 붙일 때 typedef와 C++11 using이 어떻게 다른지 비교합니다. using만 가능한 템플릿 별칭, 읽기 쉬운 함수 포인터 별칭, 별칭이 새 타입을 만들지 않는다는 점에서 생기는 실수를 다룹니다.
-
C++ 템플릿 인자 추론 규칙: 값·참조·전달 참조, decay, CTAD
함수 템플릿에 값으로 넘기면 const와 참조가 사라지고 배열은 포인터로 decay되는 등, 컴파일러가 인자에서 T를 추론하는 규칙을 예제로 정리합니다. 타입 불일치로 추론이 실패할 때 고치는 법, 완벽한 전달, C++17 CTAD도 다룹니다.