블로그
-
C++ Sanitizer 동작 원리와 설정: ASan·UBSan·TSan·MSan 오버헤드, CMake 통합
use-after-free를 잡는 ASan, 데이터 레이스를 잡는 TSan, 미정의 동작을 잡는 UBSan, 초기화 안 된 메모리를 잡는 MSan이 각각 어떻게 동작하고 얼마나 느려지는지, ASan·TSan을 함께 못 쓰는 이유와 CMake 프리셋·CI job 분리 방법을 설명합니다.
-
C++ 로깅·Assertion | 프로덕션 간헐적 크래시, 로그 없이 재현 불가일 때
로그가 없어 재현조차 안 되는 프로덕션 크래시를 계기로 로그 레벨 설계, assert와 static_assert의 쓰임 구분, spdlog의 싱크·포맷·로테이션 설정을 다룹니다. assert에 부수 효과를 넣거나 사용자 입력 검증에 assert를 쓰는 실수도 설명합니다.
-
C++ Iterator 카테고리 이해하기: begin/end부터 성능 비교까지
순회 중 erase 후 크래시가 나는 문제에서 출발해 반복자 카테고리별 지원 연산, 반개구간 [begin, end), reverse_iterator의 base() 변환, back_inserter 같은 어댑터를 예제로 설명합니다. std::advance와 distance 사용법도 다룹니다.
-
C++ 패키지 매니저 vcpkg와 Conan 비교: manifest·트리플렛·프로파일과 CMake 연동
라이브러리를 손으로 설치하느라 시간을 쓰거나 CI에서만 빌드가 깨지는 문제를 vcpkg와 Conan으로 푸는 방법을 비교합니다. vcpkg의 manifest 모드·트리플렛·버전 고정과 Conan의 conanfile·프로파일 설정을 CMake 연동 예제로 보여주고, 프로젝트에 맞는 선택 기준을 제시합니다.
-
C++ Google Test | gtest 설치부터 TEST·EXPECT_EQ
C++ Google Test(gtest) 단위 테스트 가이드. FetchContent·vcpkg 설치, TEST·TEST_F·EXPECT·ASSERT·파라미터화·Death Test, TDD·프로덕션 패턴, CI 연동, 자주 나는 오류 해결.
-
Google Mock으로 C++ 의존성 분리하기: MOCK_METHOD·EXPECT_CALL·매처
데이터베이스나 네트워크 없이 단위 테스트를 돌리려면 인터페이스를 분리하고 Google Mock으로 대역을 만들어야 합니다. MOCK_METHOD 정의, EXPECT_CALL의 호출 횟수·순서 검증, WillOnce와 매처, StrictMock·NiceMock 차이, 자주 나는 컴파일 에러를 다룹니다.
-
C++ 디자인 패턴 | Observer·Strategy
데이터 변경을 여러 UI에 알리다 강한 결합이 생기는 문제에서 출발해, C++로 Observer·Strategy·Command·State·Template Method 패턴을 구현하고 notify 중 detach, 상태 전이 시 수명 문제 같은 함정을 다룹니다.
-
C++ 작업 큐 설계: 워크 스틸링으로 스레드 풀 성능 끌어올리기
메인 스레드에서 무거운 작업을 돌려 UI가 멈추는 문제를 조건 변수 기반 작업 큐와 스레드 풀로 푸는 과정을 구현합니다. std::future로 결과 받기, 부하 불균형을 줄이는 워크 스틸링, spurious wakeup과 shutdown 타이밍, 예외로 워커가 죽는 문제도 다룹니다.
-
C++ 커스텀 Concepts 작성 | 도메인에 맞는 제약 조건 정의하기 [#22-2]
표준 concept만으로는 원하는 타입만 받기 어려울 때 Serializable, Hashable 같은 도메인 concept를 직접 정의하는 방법을 다룹니다. requires 표현식의 반환 타입·noexcept 검사, &&와 || 조합, ADL과 swap 문제, 순환 정의 같은 흔한 오류도 설명합니다.
-
C++20 Modules: import·export 문법, 컴파일러 지원 현황, 빌드 시간
include가 쌓여 컴파일이 느려지는 문제를 C++20 모듈로 푸는 기본기를 다룹니다. export module과 import 문법, 전역 모듈 fragment로 기존 헤더 쓰기, 파티션 구성, GCC·Clang·MSVC·CMake 빌드 설정과 module not found 에러 대처를 설명합니다.