블로그
-
C++ 직렬화 방식 비교: nlohmann·simdjson·Glaze JSON, 바이너리, Protobuf, C++26 리플렉션
C++ 직렬화: nlohmann/simdjson/Glaze JSON, 직접 설계한 바이너리 포맷, Protobuf, cereal, MessagePack, C++26 리플렉션(P2996). 포맷 선택·버전 호환성·자동 직렬화.
-
C++ 코드 생성 방식 비교: 템플릿, X-Macro, Clang libTooling, Protobuf, C++26 리플렉션
직렬화·RPC 스텁·에러 코드 매핑처럼 반복되는 C++ 코드를 템플릿, X-Macro, Clang libTooling, Protobuf·FlatBuffers, Python 스크립트, C++26 리플렉션 중 무엇으로 생성할지 비교하고, CMake 통합과 생성 코드 관리에서 생기는 문제를 정리합니다.
-
C++ 커스텀 컴파일러 패스 | Clang 플러그인·AST 분석·커스텀 진단
팀 코드 규칙을 컴파일 단계에서 강제하는 Clang 플러그인 작성법입니다. PluginASTAction 구조, RecursiveASTVisitor로 매직 넘버와 금지 함수 호출 탐지, DiagnosticsEngine 커스텀 경고, 플러그인 빌드 시 심볼·RTTI 문제와 로드 실패 해결을 다룹니다.
-
임베디드 C++ 최적화: 플래시 크기, RAM 정적 할당, 전력 소모, 실시간성(WCET)
64KB 플래시에 펌웨어가 안 들어가고, 스택이 넘치고, 배터리가 하루를 못 가는 상황을 다룹니다. LTO와 printf 제거로 플래시 줄이기, 정적 할당과 풀 allocator, 슬립 모드와 DMA, ISR 최소화와 WCET 예측을 C++ 관점에서 설명합니다.
-
C++ 테스트 전략 세우기: 테스트 피라미드, GTest 단위·통합·E2E, GMock 모킹
리팩터링이 두려운 C++ 코드베이스에 테스트 피라미드를 세우는 방법입니다. GTest 파라미터화 테스트와 픽스처, 플러그인 로드 통합 테스트, E2E 테스트, GMock으로 DB 의존성 격리, CI에서만 실패하는 테스트 대응을 다룹니다.
-
C++ 알고리즘 최적화: Big-O로 병목 찾기, 공간-시간 트레이드오프, 메모이제이션
데이터가 늘자 응답이 느려질 때 Big-O로 병목을 찾고, 메모이제이션·해시 테이블로 메모리를 내주고 시간을 줄이거나 롤링 배열로 DP 공간을 줄이는 방법을 C++ 예제로 봅니다. Kadane, 투 포인터, partial_sort와 nth_element 비교도 포함합니다.
-
C++ 문자열 패턴 매칭: KMP, Rabin-Karp, Boyer-Moore, Z 알고리즘, 접미사 배열
대용량 로그 검색, 표절 검사, 에디터 찾기 기능처럼 상황에 따라 KMP, Rabin-Karp, Boyer-Moore, Z 알고리즘, 접미사 배열 중 무엇을 쓸지 고르고 C++로 구현합니다. LPS 실패 함수 구축과 해시 충돌 처리도 다룹니다.
-
구간 쿼리와 누적합을 위한 트리: 세그먼트 트리, 펜윅 트리, 트라이 구현
구간 합 쿼리가 O(n)이라 느릴 때 쓰는 세그먼트 트리(구간 합·RMQ), 누적합 갱신에 강한 펜윅 트리, 자동완성용 트라이를 C++로 구현합니다. 펜윅과 세그먼트 트리를 언제 골라야 하는지도 비교합니다.
-
C++ 정렬 알고리즘 구현과 비교: std::sort의 pdqsort, stable_sort, 병렬 정렬, 기수 정렬
C++ 정렬 알고리즘 정리. 기본·고급 정렬 구현, std::sort 내부의 pdqsort와 stable_sort의 차이, std::execution::par 병렬 정렬, ska_sort 같은 기수 기반 정렬, 자주 나는 에러와 성능 팁을 다룹니다.
-
알고리즘에서 쓰는 비트 연산: 비트마스크 DP, XOR 트릭, 비트 카운팅, 해밍 거리, bitset
부분집합 열거, 홀수 번 등장하는 원소 찾기, 해밍 거리, TSP 상태 압축, 권한 플래그를 비트 연산으로 푸는 C++ 예제입니다. 부호 있는 시프트와 시프트 범위 초과, 연산자 우선순위 실수, C++20 <bit> 헤더 활용도 다룹니다.