🚀 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; }};위 코드를 모든 속성마다 계속 작성한다면 생산성이 떨어지고, 실수도 많아집니다.?..
3편: MSLEEP, SSLEEP – 간단한 Sleep 매크로 정의하기C++에서는 스레드를 잠시 멈추기 위해 std::this_thread::sleep_for를 사용하는 것이 일반적입니다.하지만 매번 std::chrono::milliseconds() 를 타이핑하는 건 지저분하고 반복적이죠.📌 목표: 더 읽기 쉽고, 반복을 줄이며, 명확한 단위 구분이 가능한 슬립 매크로 정의🛠️ 매크로 정의#ifndef MSLEEP#define MSLEEP(var) { std::this_thread::sleep_for(std::chrono::milliseconds((var))); }#endif#ifndef SSLEEP#define SSLEEP(var) { std::this_thread::sleep_for(std::ch..
- Total
- Today
- Yesterday
- 스쿠버다이빙
- 양파다이브
- 성산블루버블
- Build
- 블루버블다이빙팀
- 블루버블
- 서귀포
- C++
- PowerShell
- 제주도
- 블루버블다이브팀
- 현포다이브
- 암호화
- 서귀포블루버블
- C#
- 패턴
- 리눅스
- ReFS
- RSA
- Linux
- DLL
- C
- OpenSource
- 울릉도
- Thread
- ip
- 다이빙
- 디자인패턴
- Windows
- 윈도우
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |