🚀 CMake를 이용한 C++ 크로스 플랫폼 개발 이 문서는 리눅스, 윈도우, macOS를 지원하는 C++ 프로젝트를 CMake로 구축하는 방법을 다룹니다. I. CMake 기초: Hello World! CMake의 핵심 3단계(Configure, Build, Run)를 보여주는 가장 기본적인 예제입니다. 1. 프로젝트 구조 HelloWorld/├── CMakeLists.txt└── main.cpp 2. CMakeLists.txt cmake_minimum_required(VERSION 3.10)project(HelloWorld CXX)# C++ 표준 설정set(CMAKE_CXX_STANDARD 17)set(CMAKE_CXX_STANDARD_REQUIRED T..
🚀 GetProcAddress를 활용한 유연하고 견고한 소프트웨어 개발 Windows 환경에서 GetProcAddress 함수는 단순한 API 호출 이상의 의미를 지닙니다. 이는 개발자가 시스템의 유연성과 견고성을 극대화하여 더 나은 소프트웨어를 만들 수 있도록 돕는 핵심적인 동적 로딩 메커니즘입니다. 우리는 이 메커니즘을 효과적으로 활용하여 다음과 같은 목표를 달성할 수 있습니다.1. 💡 호환성 확보와 시스템 의존성 최소화가장 중요한 활용 목표는 하위 및 상위 호환성을 확보하는 것입니다. OS 버전에 따라 함수가 존재하지 않을 수 있기 때문입니다. GetProcAddress를 사용하면 런타임에 함수의 존재 여부를 확인할 수 있으며, 함수가 없으면 대체 로직을 실행하여 프로그램의 실행 안정성을 보장합..
하이브리드 암호화: 안전하고 빠른 비밀 공유의 원리우리가 친구에게 매우 중요한 대용량 파일이나 메시지를 보낼 때, 가장 중요하게 생각하는 것은 '안전'과 '속도'입니다. 단순히 압축파일에 비밀번호를 거는 것을 넘어, 현대의 강력한 보안 시스템—예를 들어, 웹사이트의 보안 통신(HTTPS)이나 종단 간 암호화(E2E) 메신저—은 어떻게 이 두 마리 토끼를 잡을까요? 그 해답은 **'하이브리드 암호화(Hybrid Encryption)'**라는 지능적인 협업 시스템에 있습니다.1. 느리지만 안전한 '마스터 키'의 교환 (비대칭 키 암호화, RSA)가장 먼저, 파일 자체를 암호화하는 방법을 고민해야 합니다. '비대칭 키 암호화(Asymmetric Key, 예를 들어 RSA)'는 마치 은행의 금고 열쇠처럼, 오직..
C++ 스마트 포인터 정리1. 스마트 포인터 종류 및 예제 스마트 포인터 설명 소유권 예제 unique_ptr 단일 소유, 이동만 가능 O std::unique_ptr up = std::make_unique(10); shared_ptr 참조 카운트 기반 공유 O std::shared_ptr sp = std::make_shared(10); weak_ptr 소유권 없이 생존 확인용 X std::weak_ptr wp = sp;if (auto locked = wp.lock()) { *locked += 1;..
Callback vs Fallback: 차이점과 예제📌 Callback이란?Callback은 특정 이벤트가 발생했을 때 호출되는 **사용자 정의 함수**입니다. 주로 비동기 처리, 이벤트 대응에 사용되며, 미리 등록해두면 이벤트 발생 시 자동 호출됩니다.예: 일반 C++에서의 Callbackvoid OnDone() { std::cout callback) { // 작업 수행 callback(); // 이게 바로 콜백}DoTask(OnDone);예: 파일 필터 드라이버에서의 CallbackFLT_PREOP_CALLBACK_STATUS PreWriteCallback( PFLT_CALLBACK_DATA Data, PCFLT_RELATED_OBJECTS FltObjects, P..
4편: DECLARE_PROPERTY – 반복되는 getter/setter 자동화객체지향에서 캡슐화는 중요한 원칙입니다.하지만 private 멤버 + public getter/setter 패턴은 너무 반복적이라 지겹죠.그래서 등장하는 것이 DECLARE_PROPERTY 같은 매크로입니다.😫 반복되는 getter/setterclass Person {private: std::string m_name;public: const std::string& GetName() const { return m_name; } void SetName(const std::string& name) { m_name = name; }};위 코드를 모든 속성마다 계속 작성한다면 생산성이 떨어지고, 실수도 많아집니다.?..
- Total
- Today
- Yesterday
- 리눅스
- ip
- 다이빙
- DLL
- OpenSource
- C
- 서귀포블루버블
- 성산블루버블
- 암호화
- Thread
- 양파다이브
- C++
- 패턴
- 현포다이브
- 블루버블다이빙팀
- 스쿠버다이빙
- 제주도
- ReFS
- Build
- Linux
- 윈도우
- 울릉도
- 블루버블
- 블루버블다이브팀
- 디자인패턴
- PowerShell
- 서귀포
- RSA
- Windows
- C#
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | ||||||
| 2 | 3 | 4 | 5 | 6 | 7 | 8 |
| 9 | 10 | 11 | 12 | 13 | 14 | 15 |
| 16 | 17 | 18 | 19 | 20 | 21 | 22 |
| 23 | 24 | 25 | 26 | 27 | 28 | 29 |
| 30 |
