블로그
-
C++ 비동기 작업과 Coroutine | co_await로 콜백 지옥 탈출하기 [#23-3]
C++20 코루틴으로 비동기 작업을 co_await하는 방법을 다룹니다. Awaitable 프로토콜, 대칭 전송을 쓰는 Task 타입 구현, Boost.Asio awaitable 연동, 에러 처리, 수명 관리, 타임아웃·병렬 요청·취소 패턴을 설명합니다.
-
C++ 디자인 패턴 | Adapter·Decorator
외부 라이브러리 인터페이스가 맞지 않거나 기존 코드를 고칠 수 없을 때 Adapter와 Decorator로 감싸는 방법을 먼저 보여주고, Proxy·Bridge·Composite까지 구조 패턴을 예제로 비교합니다. 세 래퍼 패턴이 헷갈리는 지점과 Decorator 체인의 메모리 관리도 다룹니다.
-
C++ 도메인별 요구 역량: 네카라쿠배·금융(HFT)·게임 서버·임베디드 비교
게임 서버 경험으로 금융에 지원했다가 맞지 않는 식의 도메인 불일치 사례에서 출발해, 대형 IT 백엔드와 금융·HFT, 게임 서버, 임베디드·시스템 소프트웨어가 강조하는 면접 포인트와 최적화 방향을 비교합니다. 같은 이벤트 처리 요구를 세 스타일로 구현한 코드와 도메인 간 전환 전략도 다룹니다.
-
C++ 백엔드·게임 서버 시스템 디자인 | 대규모 동시 접속과 메모리 풀
피크 타임에 서버가 멈추거나 메모리가 며칠째 늘어나는 게임·백엔드 서버 문제를 이벤트 루프, 스레드 풀, Strand 기반 연결 직렬화로 푸는 설계를 다룹니다. 메모리·오브젝트 풀, 세션과 패킷 버퍼 구조, Acceptor-Worker 분리 코드 골격도 설명합니다.
-
C++ 입문 개요 | 역사, 현대 C++의 변화, 실무에서 쓰이는 분야
C++의 역사(C with Classes부터 C++26까지)와 표준화 흐름, 게임·금융·임베디드·시스템 소프트웨어에서 왜 여전히 C++가 선택되는지, 그리고 학습 로드맵과 커리어 경로까지 다룹니다.
-
C++ condition_variable로 작업 큐 만들기: 허위 깨움 처리와 스레드 풀
작업 큐를 폴링하며 CPU를 낭비하던 구조를 condition_variable로 바꿔 작업이 들어올 때만 스레드를 깨우는 방법을 설명합니다. predicate를 넣은 wait로 허위 깨움을 처리하는 법, 스레드 안전 큐와 스레드 풀 구현, lock_guard를 쓰면 안 되는 이유를 다룹니다.
-
C++ 메모리 누수: 흔한 5가지 패턴과 Valgrind·ASan으로 찾는 방법
early return으로 delete를 건너뛰는 서버 코드를 출발점으로 이중 삭제, 댕글링 포인터, 누수, delete와 delete[] 혼동, 예외 안전성 무시 5가지 패턴을 재현하고, Valgrind와 AddressSanitizer가 각각 무엇을 어떻게 보고하는지 보여줍니다.
-
CMake 입문: CMakeLists.txt로 C++ 프로젝트를 크로스플랫폼 빌드하기
g++ 명령을 손으로 치던 빌드를 CMakeLists.txt로 옮기는 과정을 Hello World부터 멀티파일 프로젝트까지 따라가며, Make와 Ninja 생성기 차이, Debug와 Release 빌드, find_package로 외부 라이브러리를 연결하는 방법을 복사해 쓸 수 있는 예제로 설명합니다.
-
C++ 개발 환경 구축 | Windows·macOS·Linux 컴파일러 설치와 첫 빌드
Windows에서는 Visual Studio, MinGW, WSL 중 무엇을 고를지, macOS에서는 Command Line Tools와 Homebrew GCC를, Linux에서는 배포판별 패키지를 설치해 첫 프로그램을 빌드합니다. g++을 찾을 수 없음, cl 인식 실패, IntelliSense 오류 해결법도 담았습니다.
-
윈도우 PATH 환경 변수 설정법: '내부 또는 외부 명령, 실행할 수 있는 프로그램, 또는 배치 파일이 아닙니다' 해결
윈도우 11/10에서 PATH 환경 변수를 추가하는 방법과, cmd의 '내부 또는 외부 명령이 아닙니다', PowerShell의 'is not recognized' 오류가 나는 원인을 사용자·시스템 변수 순서, setx 함정, 앱 실행 별칭까지 정리합니다.