리눅스 커널 매크로 함수 없이보기

리눅스 커널 코드를 보게되면 수많은 매크로 함수를 확인할수있는데 이는 소스코드를 보기어렵게 만들어주는 요소이다. 이를 해결하기위해 전처리한 코드를 보는 GCC옵션이 있다. –save-temps 라는 옵션이며 이 옵션을 설정하기 위해서는 리눅스 커널의 코드의 ~/위치에 MakeFile안에 다음과 같이 소스코드를 추가한다.

RSA 암호화 구현

필자는 수학을 못하기때문에 왜 이게 이렇게 되는지 아직두 잘 모르겠다. 그래서 이글은 stap by step으로 구현에 대해 이야기를 할것이다. RSA는 아래의 flow을 따라간다. 두개의 소수를 찾는다. 공개키를 만든다. 공개키 기반으로 개인키를 만든다. 데이터를 암호화 복호화을 해본다. 1. 두개의 소수를 찾는다. 공개키를 만들기위해서는 총 두가지의 다른 소수가 필요하다. 필자는 이키를 p와 q라고 부를거고 p를 11로 q를 소개 더보기 RSA 암호화 구현[…]

스핀락 구현시 참고할점

스핀락을 구현할때 아래와 같이 구현한다. 하지만 위 코드를 테스트시 생각외로 좋은 성능이 안 나오는걸 벤치 마크로 확인할수있다. 리누스 토바즈형님이 이에 대해 의견을 남긴글이 있는데 https://www.realworldtech.com/forum/?threadid=189711&curpostid=189723&fbclid=IwAR1aqMqWNrvY7qcOmhGKUH6m9YkCanEEVIbhEqRlZcRP1Tb4rH053yvs2PE CPU 캐시 일관성때문에 성능이 더 느리다라는 이야기이다. 이는 실제로도 그렇다 라는 점이다. 다행히 x86에서는 이 문제를 펜티엄4부터 알았고 아래의 명령어를 추가되었다. 이는 NOP 명령어를 주어서 해결한다. 아래의 글을 보면 얼마나 소개 더보기 스핀락 구현시 참고할점[…]

원과 원 충돌 체크하는 방법

원과 원의 출돌 체크는 매우 깔끔하게 처리할수 있다. 두개의 원이 있고 반지름이 각각 R1 ,R2가 있다. 여기서 충돌했을때의 그림을 보자 직관적으로 두개의 중심의 거리보다 반지름의 합보다 작은걸 알수있다. 좀더 자세히 보기위해 태그를 추가했다. 두 거리는 아래의 공식으로 쉽게 구할수 있다. 거기에 두개의 반지름의 합보다 거리의 값이 작으면 충돌이 발생했다는 것이다. 하지만 이와같은식 을 컴퓨터로 구현할려면 소개 더보기 원과 원 충돌 체크하는 방법[…]

visual Studio 외부 dll 경로 추가하기

외부 DLL을 가져오는 방식으로 개발하게 되면 실행시 DLL이 필요하다며 에러를 출력하는걸 확인할수 있다. 넷에 공개된 해결방법은 총 3가지이면 아래와 같은 방법이 있다. 1.DLL을 하나의 디렉토리를 넣는다. 2.환경 변수를 등록한다. 3.내 프로젝트만 사용할수 있도록 환경변수를 추가한다. 이렇게 3가지의 방법이 있는데 이 방법으로 개발할시 가장 큰 문제가 배포 파이프라인을 만들기 힘들고 다른 컴퓨터 환경으로 옮길시 에러를 세팅을 소개 더보기 visual Studio 외부 dll 경로 추가하기[…]

cmake 시작부터 라이브러리까지

이 글은 리눅스/유닉스 환경으로 설정이 되어있습니다. 대부분의 오픈소스인 경우 cmake로 구성되어 있다. 그 이유는 플래폼마다 컴파일 방법 달라 솔루션을 동일하게 설치해야하는 문제가 발생한다. 그래서 위와 같은 모양이 나오게 된다. 하지만 이를 하나의 방법으로 통합시키기 위한툴이 cmake이다. cmake는 다음과 같이 여러개의 플래폼에 맞는 탬플릿을 생성해준다. 이글을 큰 흐름을 설명한 글입니다. 자세한 글 은 다음 링크를 참조해보시기 소개 더보기 cmake 시작부터 라이브러리까지[…]

CUDA image 처리

회사서 간단하게 발표자료를 만들면서 쿠다 프로그래밍을 해보았습니다. 근데 node회사라는게 함정입니다. 간단한 영상을 미러링 해주는 프로그램입니다. 실행 결과는 아래와 같습니다. 가우시안 블루같은경우도 해당 코드를 가져가서 사용하면 쉽게(?) 사용할수 있을것입니다. 이미지 처리는 아래 bitmap이미지를 사용했습니다. https://github.com/ArashPartow/bitmap/blob/master/bitmap_image.hpp 1060 GTX가 블록단 스레드가 128이 한계라서 스레드 사이즈를 32 * 4로 하였습니다. Warp단위라 속도가 빠를겁니다.

MSVC C++ 전처리만 수행하기

C++ 레딧에 테스트코드 라이브러리중에 ddoctest가 있다구 해서 한번 사용해보았다. 해당 깃 링크는 https://github.com/onqtam/doctest 이다. 예제 코드는 다음과 같다 하지만 막상 TEST_CAST랑 CHECK의 구현부를 확인할려고하면….. 다음과 같은 코드를 볼수있다. 매크로의 최대의 단점중 하나인데 이는 컴파일 옵션을 주어서 어느정도 해결할수 있다. 바로 /p옵션인데 자세한것은 다음의 링크를 참조해주자. https://docs.microsoft.com/ko-kr/cpp/build/reference/p-preprocess-to-a-file?view=vs-2019 여튼 이옵션을 주고 컴파일하게되면 컴파일 바이너리위치에 .i라는 파일이 생성된걸 소개 더보기 MSVC C++ 전처리만 수행하기[…]