Visual Studio 2015 UTF-8 인코딩 설정하기

Visual studio 2015 에서 프로그램을 작성하면 인코딩이 자동으로 CP949(EUC-KR) 로 설정됩니다. 이는 다른 플랫폼 간 호환성 문제를 일으킬 수 있고 당장 Git 클라이언트인 source tree 또는 Github desktop 에서 한글로 작성한 주석은 모두 깨지는 것을 보실 수 있으실 겁니다. 웹 서버 또는 데이터베이스 같은 경우 대부분 유니코드를 사용하며 이를 저장하기 위해 UTF-8 인코딩을 사용하며 현대 개발에 있어 표준이라고도 할 수 있습니다. 💡 Tips UTF-8 은 유니코드1) 를 위한 가변 길이 문자 인코딩 방식 중 하나로, 켄 톰프슨과 롭 파이크가 만들었다. UTF-8 은 Universal Coded Character Set + Transformation Format – 8-bit 의 약자이다. wikipedia ...

2023년 05월 18일 · 2 min · 357 words · JongBin

Doxygen 주석으로 생성하는 코드 문서

개발자는 다른 사람이 만든 코드를 사용할 때 보는 매뉴얼이 있습니다. 위 그림과 같이 무엇을 하려면 어떤 URL에 어떤 내용을 요청해야 하는지, 함수가 하는 일과 인자는 무엇을 전달해야 하는지 상세히 다룬 내용입니다. 이런 문서를 소스 코드와 별개로 관리한다면 소스 코드의 수정이 있을 때마다 각각 수정 해야하는 번거로움과 수정 내용이 반영이 되지 않는다면 문서 내용에 결점이 생길 수도 있습니다. 이런 문제를 해결하기 위해 구글링 중 Doxygen을 찾았고, 실무에 사용하기 위해 공부하고 포스팅 했습니다. ...

2023년 05월 15일 · 5 min · 1063 words · JongBin

C++ 예외 처리 try catch throw

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

2023년 05월 12일 · 4 min · 754 words · JongBin

데이터 구조 정렬 (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를 붙이면 부호 비트 자리도 데이터가 올 수 있음 Memory access 프로세서가 메모리에 읽기 또는 쓰기를 할 때도 32비트 또는 64비트씩 접근하여 처리합니다. 따라서 프로세서의 아키텍쳐에 맞추어 4의 배수 또는 8의 배수의 사이즈가 되게 코딩을 해주면 메모리 접근을 줄일 수 있고 효율과 성능을 높일 수 있습니다! ...

2023년 05월 11일 · 3 min · 629 words · JongBin

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

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

2023년 05월 05일 · 7 min · 1279 words · JongBin