블로그
-
C++ 크래시 디버깅 실전 사례 | 간헐적 Segmentation Fault 해결기
가끔만 터지는 C++ 채팅 서버 세그폴트를 예제로 꾸며, 코어 덤프와 gdb로 크래시 지점부터 잡고 로컬 재현이 안 되면 rr 역방향 디버깅으로 데이터 경쟁을 찾는 과정을 따라갑니다. 뮤텍스, shared_ptr·weak_ptr, Asio strand 세 가지 수정안과 TSan 검증을 다룹니다.
-
C++ 현대적 다형성 설계: 상속 대신 합성·variant
dynamic_cast가 늘어나는 이벤트 시스템이나 여러 결제 수단처럼 상속이 부담스러워지는 경우를 합성과 std::variant로 다시 설계하는 방법을 보여줍니다. overloaded 헬퍼와 std::visit, 설계 선택 흐름, bad_variant_access 같은 에러도 다룹니다.
-
Git 머지 충돌 해결 예제 | 장기 리팩토링 브랜치를 main에 병합하는 순서
몇 달 동안 main과 따로 진행된 리팩토링 브랜치를 병합할 때 충돌이 쏟아지는 상황을 예제로, main을 리팩토링 브랜치로 역방향 머지하고 git status --porcelain 코드로 충돌을 분류한 뒤 기계적인 충돌과 로직 충돌을 나눠 푸는 방법, --ours와 -X ours의 차이, rerere·zdiff3·remerge-diff 활용법을 설명합니다.
-
JavaScript 비동기 디버깅 예제 | Unhandled Rejection과 Promise 체인 에러 추적하기
간헐적으로 Unhandled Rejection만 남는 Node.js·Express 코드를 예로, 에러 핸들러가 빠진 Promise 체인에서 에러가 왜 사라지는지 재현하고, 비동기 스택 트레이스로 호출 위치를 찾는 조건, async/await 전환, 전역 핸들러, Express 에러 미들웨어, Sentry 연동, 타임아웃·재시도 패턴까지 설명합니다.
-
알고리즘 최적화 실전 사례 | 코딩테스트 시간 초과(TLE) 해결기
중복 제거, 구간 합, 최단 경로, 부분합, 문자열 매칭의 TLE 코드를 복잡도 관점에서 고친 사례와 Big-O·상각 분석, 공간-시간 트레이드오프, 캐시·분기 예측까지 정리합니다.
-
AAC 오디오 코덱: LC-AAC·HE-AAC 압축 원리와 FFmpeg 인코딩 설정
AAC-LC·HE-AAC·xHE-AAC 프로파일 차이, FFmpeg aac·libfdk_aac·aac_at 인코더 선택과 라이선스, VBR 값의 실제 의미, priming 무음과 갭리스, 브라우저 codecs 문자열까지 스트리밍 실무 기준으로 정리합니다.
-
C++ 콜백 구현 4가지 비교: 함수 포인터, 펑터, std::function, 람다와 멤버 함수 콜백
C++ 콜백 패턴 정리. 함수 포인터, 펑터, std::function, 람다 네 가지 구현 방법을 비교하고, 비동기 콜백·이벤트 핸들러·Observer 패턴 활용, 콜백 지옥 회피와 성능 고려사항을 다룹니다.
-
enable_shared_from_this: this를 shared_ptr로 넘기는 법과 bad_weak_ptr 함정
C++ enable_shared_from_this 정리. shared_from_this()로 this를 안전하게 공유하는 방법, 생성자에서 호출할 때 나는 bad_weak_ptr 예외, weak_from_this()(C++17), 비동기 콜백 활용을 다룹니다.
-
C++ 전역 변수가 문제를 일으키는 5가지 경우와 대안: 초기화 순서, 스레드 안전성, 테스트
C++ 전역 변수의 함정과 대안. 초기화 순서 문제(Static Initialization Order Fiasco), 스레드 안전성, 테스트 어려움, 네임스페이스 오염부터 함수 내 정적 변수·Singleton·DI까지 정리합니다.
-
C++ 소멸자와 RAII: 가상 소멸자, 규칙 0, 소멸자에서의 예외
소멸자 호출 순서, 가상 소멸자가 필요한 정확한 조건과 대안(protected 비가상), Rule of 0/3/5, 소멸자에서의 예외·this 사용 함정, 스마트 포인터와의 조합까지 실무 기준으로 정리합니다.