본문 바로가기

에라토스테네스의 체 정의 정 범위안에서 소수를 찾는 방법이다. 알고리즘 1. 특정 범위 안의 수 중 가장 작은 소수의 배수를 모두 제외시킨다. 2. 특정 범위 안의 수 중 그다음으로 작은 소수의 배수를 모두 제외 시킨다. 3. 2번의 과정을 반복적을 진행하고 나면 특정 범위 안의 소수가 남는다. 특징 특정 범위가 480이라고 가정하면 22^2 > 480 이므로 22보다 작은 수의 배수들만 지원도 충분하다. 참고 자료 1 : ko.wikipedia.org/wiki/%EC%97%90%EB%9D%BC%ED%86%A0%EC%8A%A4%ED%85%8C%EB%84%A4%EC%8A%A4%EC%9D%98_%EC%B2%B4 에라토스테네스의 체 - 위키백과, 우리 모두의 백과사전 위키백과, 우리 모두의 백과사전. 둘러보기로 가기 검색하러 가..
prev_permutation(), next_permutation() #include 해더에 정의 되어 있으며 permutation 의 뜻은 순열이다. 함수명 그대로 prev_permutation은 이전의 큰 순열로 요소 순서를 재정렬한다. 함수명 그대로 next_permutation은 다음으로 큰 순열로 요소 순서를 재정렬한다. 아래는 next_permutation()과 prev_permutation()이해를 돕기 위한 예제 코드와 해당 결과이다. 참고 자료 1 : docs.microsoft.com/ko-kr/cpp/standard-library/algorithm-functions?view=msvc-160#prev_permutation 함수 자세한 정보: 함수 docs.microsoft.com 참고 자료 2 : docs.microsoft.com/ko-kr..
Thread 및 Process를 CPU Core에 할당 1. Cpu Core에 process 할당 : 특정 Process를 특정 CPU에서 실행되도록 설정 BOOL SetProcessAffinityMask( HANDLE hProcess, DWORD_PTR dwProcessAffinityMask ); 2. Cpu Core에 Thread 할당 : 특정 Thread를 특정 CPU에서 실행되도록 설정 DWORD_PTR SetThreadAffinityMask( HANDLE hThread, DWORD_PTR dwThreadAffinityMask ); 주의 사항 2번째 인자 DWORD_PTR은 2의 제곱근으로 동작 = Bit로 계산되어 동작 CPU 0에 할당 시 : 1 또는 1
C2872 참조하는 기호가 중보되는 경우 발생하는 오류이다. 따라서 참조 기호를 명확하게 명시 하거나 선언의 위치를 다시 검토 하기 바란다. 필자는 영상처리 라이브러리 opencv를 사용하면서 종종 C2872를 마주하였다. 보통 아래 글귀로 보게된다. error C2872 : ACCESS_MASK : 모호한 기호입니다. using namespace cv와 winnt ACCESS_MASK와 중복되어 발생하는 컴파일 오류이다. 해결 방법은 2가지가 있다. 1. #include 선언을 모든 opencv 관련 해더 선언 보다 위에 선언하는 것이다. 2. 모호한 위치에 참조 선언을 명확하게 표기 하는 것이다. 참고 자료 1 : docs.microsoft.com/ko-kr/cpp/error-messages/compiler-e..
CAsyncSocket Connect() 문제점 이 글은 추후에 참고하기위해 작성되었다. 정확하지 않은 내용이 있을 수 있으니 그저 참고용도로만 보길 바란다. winsock 또는 CSocket을 이용하여 socket통신을 개발하는 경우에는 connect() 함수의 반환 값에 따라 서버와 클라이언트가 정상적으로 연결되었는지 안되었는지를 알 수 있다. 하지만 CAsyncSocket을 이용한 경우 connect()함수의 반환값에 따라 정상적으로 처리가 되었는지 안되었는지 알 수 없는 문제가 있다. 이 때에는 GetLastError() 함수를 통해 에러값을 확인하고 OnConnect()를 재정의 함으로써 해결할 수 있다는 글이 있지만 실제로 시도해본 결과 정상 연결을 확인하는 것에는 무리가 있음을 확인하였다. 필자가 확인 못한 내용이 있을 수도 있다. 필자는..
Progress Bar Color Progress bar 색상은 사용하는 window theme에 따라 변경 방법이 다르다. 현재 확인된 것은 2가지이다. 1. windows classic 2. Aero windows classic의 경우는 2가지 방법으로 색상 변경이 가능하다. 1. SendMessage(PBM_SETBARCOLOR, 0, RGB(R, G, B)) 2. SetBarColor(RGB(R, G, B)) Aero의 경우는 상태 변경을 통해 색상변경이 가능하다. 총 3가지의 상태가 존재한다. 1. normal : 초록 2. paused : 노랑 3. error : 빨강 상태 변경 함수는 아래와 같다. SetState(int iState) 하지만 paused, error상태의 경우 progress bar 컨트롤이 정상 동작 되지..
Skin MFC 작업을 하다보면 Dialog 혹은 Control의 디자인을 변경할 일이 있다. 크게 3가지 방법이 있다고 한다. 1. 직접 제작 2. 상용 라이브러 사용 3. manifest 파일 추가 및 변경 본문은 2번째 방법에 대한 글이다. 우선 codejock은 상용 라이브러리로써 무료버전은 30일을 지원한다. codejock는 MFC의 다양한 컴포넌트를 지원한다. 필자는 MFC에 Skin을 입히기 위해 Research를 진행했었다. codejock에서 지원하는 Skin Theme는 7가지이다. Codejock Skin, Office 2007 Style, Office 2010 Style, Windows 10, Windows Vista Style, Windows XP Luna Style, Windows XP..
Video Codec SDK 사용 시 주의점 Nvidia에서 제공해주는 Video Codec SDK는 크게 2가지를 제공한다. Encoding에 사용되는 NVENCODE API Decoding에 사용되는 NVDECODE API NVDEC를 통해 카메라 혹은 비디오로 취득 된 영상은 YUV 4:2:0 형식(Format)임을 주의하자. 기존에 OpenCV에서 제공하는 cv::VideoCapture()를 이용할 경우 RGB 형식(Format)임으로 기존의 형식일 것이라고 생각하고 처리할 경우 정상 처리가 되지 않는다. NVDEC를 이용하여 영상을 취득하고 기존의 형식으로 처리할 경우 변환과정을 꼭 진행하기 바란다. 참고 자료 1 : developer.nvidia.com/nvidia-video-codec-sdk#NVDECFeatures NVIDIA VID..