fmt 라이브러리로 C++ 콘솔 로거 작성하기

fmt 라이브러리로 C++ 콘솔 로거 작성하기 프로그램의 로그를 쓰기 위해 보통 Log4j, spdlog… 등 로거 프레임워크를 사용합니다. 사용하기 간편하며 강력한 기능을 제공합니다. 하지만 저는 fmt를 이용하여 간단히 사용할 수 있는 콘솔 로거를 작성해보려고 합니다. 😎 쉽고 간단한 길 놔두고 이상한 길 가기 ⚠️ Warning 상용 프로그램에서 아래와 같이 로그를 사용한다면 스레드로 인한 작동 오류가 있을 수 있습니다. fmt를 사용해보기 위해 간단히 작성된 것이므로 로거 프레임워크를 사용하기를 권장합니다. fmt 💡 {fmt} is an open-source formatting library providing a fast and safe alternative to C stdio and C++ iostreams....

May 27, 2023 · 3 min · 583 words · JongBin Park

C++ 예외 처리 try catch throw

C++ 예외 처리 try catch throw C 언어와 다르게, C++은 애러를 핸들링할 수 있는 try-catch문을 제공합니다. 비교 조건문 if 예외 처리 try-catch 핸들링 return 값의 구분으로 핸들링 throw 를 사용하여 catch로 분기 및 예외 처리 단점 return 자료형에 종속적 반드시 try-catch 블럭에서 처리 조건문은 반환 값의 구분으로 핸들링하기 때문에 반환하는 자료형에 종속적입니다. 예를 들어 char getSome()이라는 함수에서 예외 처리를 하고 싶은데 char형으로 어떻게 구분을 지을 수 있을까요? NULL값을 줄 수도 있지만 정말 NULL을 반환한게 정상적인 흐름이라면 오류가 아닐텐데 말이죠!...

May 12, 2023 · 4 min · 760 words · JongBin Park

데이터 구조 정렬 (Data Structure Alignment)

데이터 구조 정렬 Data Structure Alignment Processor 대부분의 컴퓨터는 32비트 또는 64비트의 프로세서를 갖고 있습니다. 이는 프로세서가 데이터를 처리할 때 사용하는 레지스터1)의 크기, 데이터들의 전송 통로인 버스의 폭에 따라 결정됩니다. 💡 Tips Bit Byte Count Range 8 1 \(2^{8} = 256\) -128 ~ 127 32 4 \(2^{32} = 4,294,967,296\) −2,147,483,648 ~ 2,147,483,647 64 8 \(2^{64} = 18,446,744,073,709,551,616\) –9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807 맨 왼쪽 비트는 부호를 나타내는 비트이고, unsigned를 붙이면 부호 비트 자리도 데이터가 올 수 있음...

May 11, 2023 · 3 min · 635 words · JongBin Park

Thread Pool 사용 이유 및 C++ 구현

Thread Pool 사용 이유 및 C++ 구현 Thread ❓ 💡 스레드는 어떠한 프로그램 내에서, 특히 프로세스 내에서 실행되는 흐름의 단위를 말한다. 일반적으로 한 프로그램은 하나의 스레드를 가지고 있지만, 프로그램 환경에 따라 둘 이상의 스레드를 동시에 실행할 수 있다. 이러한 실행 방식을 멀티 스레드라고 한다. wikipeida 멀티 스레드를 사용하지 않는 프로그램은 찾아보기 어렵습니다. 스레드가 하나인 환경에서 작업이 지연된다면 프로그램 전체가 멈추는 불상사가 생기기 때문이죠. 잘 만들어진 프레임워크를 사용하기 때문에 신경 쓸 필요가 없기 때문이죠!...

May 5, 2023 · 7 min · 1286 words · JongBin Park