Study: Software(SW)
[Error Fix] CMake: undefined reference to 'BIO_write'
문제상황 openssl을 fetchcontent로 받아온 cmakefile을 cmake로 makefile을 구성. 이후 makefile을 실행시키면...? undefined reference to `BIO_write' 위와 같은 'BIO_' 변수를 찾을 수 없는 문제가 발생. 해결방안 기존: set(CMAKE_CXX_STANDARD 20) 변경: set(CMAKE_CXX_STANDARD 17) C++의 버전이 높아서 문제인 듯
[C++] 함수형 프로그래밍(feat. lambda function)
함수형 프로그래밍? 함수형 프로그래밍 도입 C++은 Object Oriented Programming(OOP) 패러다임이 중심이 언어이며, High performance가 필요한 곳에서 사용하고 있습니다. 그리고 이렇게 High performance가 필요할 경우 늘 cache hit을 쳐줘야 합니다. 이를 위해서는 Data oriented programming 스타일이 자연스럽게 C++스타일에 들어오게 됩니다. 이후 C++11부터 함수형 프로그래밍을 지원하기 위해 lambda expression을 도입. 그래서 간단히 함수형 프로그래밍이란? 함수를 object/variable 처럼 다루는 개념. 이를 활용하면? 다양하게 응용할 수 있습니다. First-Class Object C++0x에서는 람다 함수(..
[OpenSource 사용하기] nlohmann/json: c++ json library (feat. Modern C++)
💡본 문서는 'OpenSource 뜯어보기'라는 프로젝트의 일환으로. nlohmann/json라는 c++ json library를 설치, 실행 등 사용하는 방법과 더불어, library 내 구조, 소스 분석 및 패턴 분석까지 다룰 예정이니 해당 오픈소스에 관심이 있다면 봐두길 권장합니다. 1. 오픈소스의 목적 1.1 'nlohmann/json'에 대하여. C++ Json library modern C++의 operation을 지원 nlohmann/json.hpp 하나의 헤더파일로 사용가능 That's it. No library, no subproject, no dependencies, no complex build system. C++ data types: std::string for strings in..
[C++] 조건부 컴파일 매크로(전처리기 지시어): Header Guard (#if, #ifdef, #elif, #else, #endif...)
#if vs #ifdef 두 지시어의 차이는 무엇인가? #if vs #ifdef 두 지시어의 차이 #if: 만약 ~이라면? e.g. #if USING==ON 변수 USING에 들어가 있는 값이 중요하게 작용합니다. #ifdef: 만약 ~가 정의되어 있다면? e.g. #ifdef USING if defined의 약자로, 사전에 정의되어 있는지만 확인합니다. #ifdef을 사용하는 경우? (feat. __DEBUG__, __TEST__, __REAL__) 보통 회사에서 개발서버, 테스트 서버, 운영서버를 따로 관리합니다. 테스트를 하기 위해 운영되고 있는 서버를 내릴 순 없으니까요. 대게로 소스를 동일하게 맞춰놓는데, 개발 서버에서만 동작해야하는 소스가 있을 것입니다. 이런 상황에 컴파일 기본 옵션으로 개발..
[C++] 병행 컴퓨팅: 순차, 병렬, 병행의 차이
순차(sequential) / 병렬(parallel) / 병행(concurrent) 순차 처리 (sequential): 복수의 업무를 순서대로 하나씩 처리. 병렬 처리 (parallel): 복수의 업무를 "동시에" 처리. 병행 처리 (concurrent): 병렬에 비해 추상도가 높은 표현. 한 개의 업무를 어떠한 순서로 처리하든 상관 없는 여러 개의 작업으로 분할하여 처리. 멀티쓰레드 프로그램의 경우 병행 처리를 의미하며, 작업자가 한 명이라면 분할된 작업들을 순차적으로 처리하게 되지만, 두 명이라면 같은 작업을 병렬적으로 처리할 수 있다. 멀티쓰레드 프로그램 만약 CPU가 한 개 뿐이라면 병행처리를 순차적으로 실행할 테고, CPU가 여러개라면 병행처리를 병렬적으로 실행할 수 있다. 만약 CPU가 한 개..