블로그
-
C++ Fuzz Testing: 예상치 못한 입력값으로 프로그램의 견고함 테스트하기
개발자가 떠올리지 못한 입력으로 파서를 깨뜨리는 퍼즈 테스트를 libFuzzer 중심으로 시작합니다. 퍼즈 타겟 작성과 sanitizer 빌드 옵션, URL·패킷 파서 퍼징, FuzzedDataProvider 사용, 느린 퍼징·OOM 대처, CI 연동과 코퍼스 관리까지 다룹니다.
-
C++ 제약된 환경에서의 C++: Exception과 RTTI 없이 안전한 코드 짜기
플래시가 작은 MCU나 실시간 루프처럼 예외와 RTTI를 꺼야 하는 환경에서 오류를 반환값·optional·expected로 전달하는 방법을 다룹니다. 팩토리와 두 단계 초기화, dynamic_cast 대신 variant·enum 태그 분기, 할당 없는 고정 버퍼 예제도 보여줍니다.
-
C++ 리눅스 시스템 프로그래밍 | 시스템 콜 호출과 커널 인터페이스 이해
fd 고갈, read()의 0 반환 무시, EINTR, 부분 write처럼 시스템 콜을 대충 다룰 때 생기는 문제를 예제로 짚습니다. glibc 래퍼와 syscall(2) 직접 호출의 차이, poll·epoll 멀티플렉싱, fd와 mmap을 RAII로 감싸는 방법, fork 후 fd 상속도 다룹니다.
-
C++ 고성능 RPC 시스템: gRPC와 Protocol Buffers를 이용한 마이크로서비스 구축
HTTP/JSON만으로 부족해진 서비스 간 통신을 gRPC와 Protocol Buffers로 옮기는 과정을 .proto 작성과 CMake 코드 생성부터 보여줍니다. 동기 서버와 CompletionQueue 비동기 서버, 스트리밍, DEADLINE_EXCEEDED 같은 상태 코드 대처를 다룹니다.
-
C++ 보안 코딩 가이드: 오버플로우 방지와 암호화 라이브러리(OpenSSL) 실전 연동
정수·버퍼 오버플로우를 막는 코드 작성법과 OpenSSL 3.x를 RAII로 감싸 쓰는 방법을 다룹니다. 암호학적 난수, HMAC-SHA256, AES-256-GCM, PBKDF2 예제와 함께 ECB 모드, IV 재사용, 타이밍 공격, SSL_VERIFY_NONE 같은 흔한 취약점을 설명합니다.
-
C++26 프리뷰: Reflection과 신규 표준 라이브러리 제안들 [#44-1]
구조체가 바뀔 때마다 to_json·from_json을 다시 쓰는 문제를 C++26 Reflection(P2996)이 어떻게 줄이는지 멤버 순회와 splice 예제로 살펴봅니다. std::execution의 sender/receiver 모델, Contracts, 표준에 들어가지 않은 기능도 짚습니다.
-
C++와 Rust: 두 언어의 상호 운용성과 Memory Safety 논쟁의 실체
레거시 C++ 코드를 유지하면서 새 기능을 Rust로 쓰려면 C ABI를 경계로 삼아야 합니다. extern "C"와 #[no_mangle]로 양방향 호출하기, 구조체 레이아웃 맞추기, bindgen과 cxx 크레이트, FFI 경계의 소유권 꼬임과 panic 전파 문제를 다룹니다.
-
C++ 메타프로그래밍의 진화: Template에서 Constexpr, 그리고 Reflection까지
템플릿 기반 메타프로그래밍에서 constexpr·if constexpr·fold expression·Concepts, 그리고 C++26 Reflection까지 C++ 메타프로그래밍의 흐름을 예제와 흔한 컴파일 에러 중심으로 정리합니다.
-
C++ 기술 부채 관리: 레거시 C++ 프로젝트를 현대화하는 전략적 리팩토링
손대기 무서운 레거시 C++ 코드를 전면 재작성하지 않고 위험도·변경 빈도·의존성으로 우선순위를 매겨 조금씩 현대화하는 전략을 다룹니다. raw 포인터를 unique_ptr로, 매크로를 constexpr로 바꾸는 예제와 deprecated 경로로 API 호환을 지키는 법을 설명합니다.
-
C++ auto와 decltype: 타입 추론 규칙, decltype(auto), AAA 스타일
auto가 const와 참조를 떼어내는 규칙, auto&&와 전달 참조, 중괄호 초기화 추론처럼 헷갈리는 타입 추론 규칙을 예제로 확인합니다. decltype이 변수 이름과 표현식에서 다르게 동작하는 이유, decltype(auto)로 참조 반환을 보존하는 법과 AAA 스타일도 다룹니다.