블로그
-
C++ 분할정복: 병합 정렬, 퀵소트, 이진 탐색, 가장 가까운 점 쌍, Strassen 행렬 곱
C++ 분할정복(Divide and Conquer) 패턴을 병합정렬, 퀵소트, 이진탐색, 최근접 점 쌍, Strassen 행렬 곱셈 구현으로 설명하고, 재귀 깊이·경계 조건·Combine 단계에서 생기는 버그와 병렬화 시 주의점을 다룹니다.
-
C++ 플러그인 시스템 만들기: dlopen·LoadLibrary, C ABI 인터페이스, 핫 리로드
앱을 다시 빌드하지 않고 기능을 추가하는 C++ 플러그인 시스템을 만듭니다. dlopen·LoadLibrary 추상화, extern "C" 인터페이스로 ABI 불일치를 막는 법, 버전을 확인하는 플러그인 매니저, 파일 변경 감지 핫 리로드와 그 함정을 다룹니다.
-
C++에 Lua 임베딩하기: C API 스택 연산, 테이블 조작, Sol3 바인딩, 핫 리로드
C++ 게임·앱에 Lua 5.4를 임베딩할 때 필요한 lua_State 스택 인덱스 규칙, C++ 함수 등록과 upvalue 전달, 테이블 읽기·생성, Lua 함수 호출과 반환값 처리를 다룹니다. Sol3 바인딩과 스크립트 핫 리로드도 함께 봅니다.
-
pybind11로 C++와 Python 연결하기: 모듈·클래스 바인딩, NumPy zero-copy, GIL, 예외 변환
pybind11로 C++ 함수·클래스를 Python 모듈로 노출하는 방법입니다. 오버로드와 기본값 인자, 프로퍼티와 상속, 스마트 포인터 반환, NumPy 배열 zero-copy 공유, GIL 해제, C++ 예외를 Python 예외로 바꾸는 법을 예제로 설명합니다.
-
C++에 V8 임베딩하기: Isolate·Context, HandleScope, C++ 함수·객체를 JavaScript에 노출
C++ 앱에 V8을 임베딩해 웹과 같은 JavaScript 로직을 돌리는 방법입니다. Isolate·Context·HandleScope의 역할, TryCatch 예외 처리, FunctionTemplate과 Internal Field로 C++ 함수·객체를 JS에 노출하는 코드를 설명합니다.
-
C++ 크로스 플랫폼 기초: 플랫폼 감지 매크로, std::filesystem 경로, 동적 로딩 추상화
C++ 크로스 플랫폼 코드 기초: _WIN32/__linux__/__APPLE__ 감지와 기능 감지(__has_include), std::filesystem 경로, LoadLibrary/dlopen 추상화, 플랫폼 추상화 레이어, 타입 크기·엔디안·구조체 정렬 문제를 다룹니다.
-
C++ 크로스 플랫폼 빌드: MinGW·iOS·Android NDK 툴체인 파일과 CPack 패키징
C++ 크로스 플랫폼 빌드: MinGW·iOS·Android NDK용 CMake 툴체인 파일, CPack 패키징(DEB/RPM/NSIS/DMG)과 런타임 검색 경로, 심볼 버전, CI 매트릭스, 빌드·링크·패키징 에러 해결을 다룹니다.
-
C++ 크로스 플랫폼 테스트: Win/Linux/macOS CI 매트릭스, Docker 환경, 엔디안 검증
Windows에서는 되는데 Linux CI에서만 실패하는 C++ 테스트를 잡는 방법입니다. GitHub Actions·GitLab CI 매트릭스, Docker와 ARM64 에뮬레이션 테스트, 경로 구분자·정수 크기·엔디안 차이 검증, dyld 라이브러리 로드 에러를 다룹니다.
-
C++ 채팅 서버 아키텍처: Acceptor-Worker 구조, 방 관리, 메시지 라우팅, 커넥션 풀
동시 접속 폭주, 메시지 전송 중 데이터 레이스, 느린 클라이언트 한 명이 전체를 늦추는 문제를 채팅 서버 설계로 풀어 봅니다. Acceptor-Worker 구조와 io_context 풀, RoomManager 기반 방 관리, 메시지 라우터, 연결 수 제한을 구현합니다.
-
C++ 메모리 순서 예제로 이해하기: relaxed, acquire/release, seq_cst, consume
C++ std::atomic의 메모리 순서 정리. memory_order_relaxed, acquire/release, seq_cst, consume을 예제로 비교하고, 동기화 패턴과 자주 나는 실수, x86과 ARM에서의 비용 차이를 다룹니다.