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 여튼 이옵션을 주고 컴파일하게되면 더보기…

HTTP 데이터 전송방식에 따른 네트워크 패킷

웹개발을 하다보니 POST에 Content-Type에 따라 어떻게 데이터를 보내는지 알고싶어 정리한글입니다. HTTP에서는 크게 바디와 헤더 ,URL파라메타를 쓰므로 크게 나우어 GET/POST 만 있어 이것만 진행했습니다. 테스트는 POSTMAN가 피들러를 이용하였습니다. 보통 GET을 아래와 같은 패킷으로 날린다. HTTP에서의 가장 큰 특징이 있다면 아래와 같이 한글을 파라메타를 넘길경우 퍼센트 인코딩을 실시한다.( https://ko.wikipedia.org/wiki/%ED%8D%BC%EC%84%BC%ED%8A%B8_%EC%9D%B8%EC%BD%94%EB%94%A9 ) 구현방법은 생각보다 더보기…

C# Entity Framework(EF) Mysql 간단 사용하기

대부분의 언어에서는 각자에 대표적인 ORM이 있는데 C#에서는 일명 EF에서 만든 공식 ORM이 있다. 간단하게 콘솔 프로젝트을 NET Framework 4.6.1 이상만든다. 먼저 해야할일은 EF SDK를 받아야 하므로 아래와 같이 콘솔 매니저를 클릭해준다. 그러면 nuget을 콘솔로 받을수 있는 명령어 창이 출력이 되게 된다. 여기서 Nuget의 다운로드 패키지를 명령어로 받을수 있는데 아래와 같이 더보기…

[2993] 탑

https://www.acmicpc.net/problem/2493 맨첨에 좀 어려워서 해맨거같은데 다음과 같은 방식으로 풀면된다. 타워를 하나씩 스택에 집어넣으면서 가능성이 없는애들을 제거해주면 바로 스택에 남아 있는 애가 수신하고 있는 애가 된다. 만약에 스택에 데이터가 없으면 그냥 0으로 대입하면된다.

javascript ES6 정리

해당 글은 http://es6-features.org/#ExpressionBodies 에서 제가 자주사용하는것들을 정리한거입니다. Arrow 기존은 위와 같이 function을 정의 해야하지만 이제는 C#의 람다와 비슷하게 다음과 같이 정의할수 있습니다. 덕분에 foreach나 reduce함수를 다음과 같이 선언할수 있게 되었습니다. Extended Parameter Handling 다른언어에서는 매우 매우 정상이여야할 default인자가 들어갔으며 Spread Operator이라는 문법이 추가되어 가변인자를 손쉽게 받을수 있게 되었습니다. 확인해본결과 해당 더보기…

최대 공약수 문제

이거보고 B의 약수를 뭘로 정해야하는지 계속 생각했는데 보니까 낚시 문제 그냥 회수상관없이니 0번해도된다. 결국 A와 B의 공약수를 구하고 공통된부분이 있으면 곱해주면된다.

C# DUMP 분석하기

보통 컴퓨터로 덤프를 남긴다고 하면 바로 디버깅용을 위해 만든다고 합니다. C++일 경우에는 pdb흔히 말하는 심볼파일과 소스코드만 있으면 되는 반면 C#으로 덤프로 분석을하는 경우는 생각지도 못하는게 필요합니다. 이는 C#의 닷넷 라이브러리가 필요하게됩니다. 일단 설명보다 직접 해보면서 진행해보겠습니다. VC++을 C# console마법사로 프로젝트를 만든다음에 다음과 같은 코드를 쳐주시고 실행시켜주시기 바랍니다. 위 코드는 출력하고 더보기…

Visual Leak Detector을 이용한 메모리 누수 탐지법

C++을 하다보면 어쩔수 없이 생기는 것이 메모리누수입니다. 물론 최근에는 스마트포인터같은게 있다고 하지만 아직도 어쩔수없이 동적할당을 스마트포인터를 통해서 할당을 하지않습니다. 그러다보니 메모리누수는 당연시 여깁니다. 이를 방지하기 위해 C++ msdn에서도 메모리누수를 확인하는법에 관해 적혀있습니다. 하지만 이와 별개로 좀더 자세히 알고싶을때가 있습니다. 그래서 여러 메모리누수탐지 라이브러리가 있는데 대표적으로 Visual Leak Detector입니다. 해당 라이브러리는 더보기…

HTTPS 우회법 두가지 원리

정부가 SNI를 보고 HTTPS을 차단하는데 이를 막는 방법은 총 두가지가 존재합니다. 하나는 길길님이 ISP에서 첫번째 패킷만을 조사한다는 점을 이용하여 패킷을 둘로 나누어 버려 조사를 피하는 법입니다. 이 게 무슨말이냐면 client hello을 패킷안에는 SNI가 있어 이를 두개로 나누어 버리게되면 ISP(인터넷 제공자)에는 이를 탐자를 못하게됩니다. 코드를 짤수 있게지만 집안에 라우터의 기능을 이용해도 더보기…

카이사르 암호 (C++)

시저암호라고 불리는 카이사르 암호입니다. 아주 옛날에 만들어진 암호로 알고리즘은 a부터 z까지 원형큐에 있다고 생각하면 쉽게 풀수있습니다. 코드는 다음과 같습니다. C++ 챌린지 문제를 풀다가 나온문제인데 이게 암호화 라고해야하나…