🚀 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)'는 마치 은행의 금고 열쇠처럼, 오직..
IOMMU VT-d AMD-Vi C++ IOMMU / VT-d / AMD-Vi 활성 여부를 C++로 감지하기 (Linux & Windows) DMA(Direct Memory Access) 기반 위협에 대응하려면 IOMMU(= VT-d / AMD-Vi) 활성 여부를 신뢰성 있게 확인할 수 있어야 합니다. 이 글은 운영체제별로 C++ 코드만으로 IOMMU 활성 신호를 감지하는 가장 실용적인 방법을 정리합니다. 목차 TL;DR 왜 감지해야 할까? Linux: sysfs 기반 확실한 감지 Windows: WMI(DeviceGuard)로 DMA 보호 신호 확인 ..
🖥️ 모니터 용어 종합 정리: 해상도, 패널, 밝기, 주사율분류용어단위/해상도주요 설명 및 특징해상도 (Resolution) - 픽셀 개수해상도HD$1280 \times 720$High Definition. 과거의 표준 해상도.해상도FHD$1920 \times 1080$ (2K 일반)Full High Definition. 현재 가장 널리 사용되는 대중적인 해상도.해상도QHD$2560 \times 1440$ (2.5K/2K)Quad High Definition. FHD 대비 약 1.8배 선명함.해상도UHD$3840 \times 2160$ (4K)Ultra High Definition. FHD의 4배 픽셀. 현재 고화질 표준.해상도8K$7680 \times 4320$4K의 4배 픽셀. 차세대 고화질 해상도..
C++ 동적 할당 원칙: new vs. malloc - 객체 지향 언어에서 충돌을 피하는 방법🚨 **핵심 규칙:** STD 라이브러리를 사용하거나 C++ Class 객체를 생성할 때는 반드시 malloc이 아닌 new를 사용해야 합니다!C++ 언어에서 메모리 동적 할당을 할 때 가장 중요한 규칙은 할당하려는 대상이 C++ 객체(클래스/구조체)인지, 단순한 메모리 영역인지에 따라 방법이 달라진다는 것입니다.---1. C++ 객체 (클래스/STD 컨테이너)는 new를 사용해야 합니다!std::list, std::vector, std::string과 같은 STD 라이브러리 컨테이너와, 사용자 정의 class 또는 멤버 함수를 가진 struct는 복잡한 객체입니다. 이들은 메모리가 할당된 후 생성자가 호출되어..
- Total
- Today
- Yesterday
- 윈도우
- Windows
- C++
- 다이빙
- OpenSource
- C
- C#
- 스쿠버다이빙
- 양파다이브
- 디자인패턴
- ReFS
- 암호화
- 울릉도
- Thread
- 블루버블다이브팀
- 패턴
- PowerShell
- 현포다이브
- 블루버블
- ip
- 리눅스
- 제주도
- 서귀포블루버블
- DLL
- RSA
- Linux
- 블루버블다이빙팀
- 성산블루버블
- Build
- 서귀포
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |