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

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

C# DUMP 분석하기

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

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

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

효율적으로 디버깅하기 SEH와 minidump

다음과 같은 소스 코드가있다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 #include <iostream> #include <Windows.h> #include <chrono> #include <mutex> #include <DbgHelp.h> int main() {     try {         int* A = NULL;         *A = 100;     }     catch (… ) {         std::cout << “hello world” << std::endl;     } } Colored by Color Scripter cs auto;”>이 예제는  access violation의 한 예이다. 해당 예제를 더보기…

글쓴이 kudwafter,

C++ std::function 구현에 대해

오래전부터 std::function에 대해 꽤 궁금해왔다. 그 이유는 std::function<int(void)> 이런 형태이기 때문이다. 이를 어떻게 만들려면 어떻게 해야하나 맨첨에 생각할때는 다음과 같이 생각하였지만. 이는 내가 원하는 방식이 아니므로 넘어갔다. 1 2 3 4 5 6 template <typename T, typename… Args> class function{ } Colored by Color Scripter cs 비주얼 스튜디오에는 std::function코드는 다음과 같다. 1 2 3 4 더보기…

글쓴이 kudwafter,

32비트와 64비트를 따로 제공하는 라이브러리를 통합시키기

제가 자주 쓰는 기법이긴한데 큰 도움이 될지 모르겠지만 한번 올려본다. 이 기법을 자주 쓰는 큰예로 mysql있는데 mysql Connector라이브러리을 보자면 32비트와 64비트가 따로 있다. 이 말은 프레임워크 제작시 32비트 64비트라이브러리를 지원하기위해 거의 99%동일한 소스파일을 프로젝트 풀더에 모든 버전의 라이브러리를 전부 넣어야 한다는 의미이다. 나는 아래와 같은 해결방법으로 이 문제를 해결한다.   더보기…

type traits로 is_class 구현하기

C++에는 type traits라는게 있다. 이는 컴파일 타입에 타입의 traits을 알기위해 사용한다. 간단한 예로 같은 타입인지 구하기 위해서는 이렇게 작성했다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 struct true_type { enum {value  = true}; }; struct false_type { enum { value = false }; }; template<typename T, typename U> 더보기…

스택을 이용한 미로찾기

  스택을 이용한 미로찾기입니다. 원리는 매우 간단합니다. 일단 가본 길을 전부 스택에 쌓고 갈수 있는 공간이 없으면 스택의 데이터를 POP하고 위에 작업을 계속 진행합니다. 길이냐 벽이냐는 원핫코딩으로 코딩하였습니다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 더보기…

글쓴이 kudwafter,

C++ Template Template parameters

제목을 보면 알다시피 C++에서의 template 이 아닌 template 이란 단어가 하나 더 붙었다. 이 template template 이란 말그대로 template 안에 또 template 이 있다는 의미이다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 더보기…

글쓴이 kudwafter,

C++ 복사 연산자에 template 사용하기

퍼펙트 포워딩을 하기위해 복사연산자에 template을 사용할려고 아래와 같은 코드가 나옵니다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 class C { public:     C() {} template <typename T>     C(T const&)     { std::cout << “tmpl copy constructor\n”;     } }; int main() {     C a;     C b{ a }; } Colored by Color Scripter 더보기…

글쓴이 kudwafter,