기본 콘텐츠로 건너뛰기

2017의 게시물 표시

[c++] template class (singletone)

link: http://hyunity3d.tistory.com/243?category=527936 template class 정의 관련해서 보다가 사용하신 소스가 예전 버전이라, c++11 (vs2013)에 소스에서 오류가 나는 곳을 수정했습니다. 자세한 내용은 링크를 참고하세요. #include <stdafx.h> #include <iostream> #include <string> template <typename T> class MySingleton { public: MySingleton() {} virtual ~MySingleton() {} // 이 멤버를 통해서만 생성이 가능합니다. static T* GetSingleton() { // 아직 생성이 되어 있지 않으면 생성한다. if (NULL == _Singleton) { _Singleton = new T; } return (_Singleton); } static void Release() { delete _Singleton; _Singleton = NULL; } private: static T* _Singleton; }; template <typename T> T* MySingleton<T>::_Singleton = NULL; class MyObject : public MySingleton<MyObject> { public: MyObject() : _nValue(10) {} void SetValue(int Value) { _nValue = Value; } int GetValue() { return _nValue; } private: int _nValue; }; void test2() { MyObject* MyObj1 = MyObject::GetSingleton(); std:

warning C4512: 'XXX' : assignment operator could not be generated

link: http://blog.bfitz.us/?p=2292 c++11 코드를 이용하여 WarningLevel 4로 컴파일 중에 Warning C4512 가 갑자기 발생해서 곤란했었슴. 대락젹인 이유는 멤버중 const 특징을 가진 경우에 발생하는데, 일반적으로 3가지의 해결책이 있다고 함. 1. const 타입 제거 2. 할당 연산자 관련 정의 추가 3. 단순 경고 다른 것 검토하다가 2번째 방법을 사용해서 수정함. 아래는 c++11 에서 동작하는 코드. CBaseClass& operator=(const CBaseClass&) = delete; // decleation only - warning C4512: 'XXX' : assignment operator could not be generated

[Windows 환경] github 에서 googletest 내려받고 빌드하기

Link: https://github.com/google/googletest https://github.com/google/googletest/blob/master/googletest/docs/Primer.md ** 빌드없이 그냥 윈도우용 바이너리만 가져다 쓸꺼면 아래 주소 참고하여 다운로드 https://github.com/iat-cener/tonatiuh/wiki/Installing-Google-Test-For-Windows 0. google test 를 검토하고 있는 이유 - c++ unit test에서 사용성이 검증됨 - 플랫폼 중립적, 다양한 운영체제(Windows, Mac, Linux 등) 다양한 컴파일러(msvc, gcc,  지원(한번만 익히면 플랫폼과 사용없이 사용가능) - 다양한 테스트 셋을 지원 : 테스트 실행하여 오류시 중지와 오류 결과 표시 등 다양한 옵션이 존제 - 다양한 오픈소스 프로젝트에서 사용중, Chrom, LLVM 등 1. 다운로드 git client git client 가 없는 경우에 https://git-scm.com/downloads 로 가서 해당 운영 체제에 맞는 클라이언트를 다운로드 함 난 Windows용으로 SourceTree를 사용함... 사실 자주 하지는 않음. 간단한 기능만 주로 사용하기에 GUI 에서 버턴들만 약간 습득하면 충분히 설정가능 2. 경로 획득하기 google test 다운로드 경로 (github.com) 메뉴 말고 화면 위쪽 부분에 "Clone or Download"를 선택하면 git으로 다운받을 수 있는 리모드 경로를 획득 3. 위 2번에서 얻은 다운로드 경로를 이용해서 clone으로 git 다운로드 각자 알아서 수행 4. google test 빌드하기 다운로드 받은 google test 의 경로에 googletest/msvc/ 폴더로 이동해서 VisualStudio로 해당 Debug/Release Win32/Win64용 구분

[tip] c++ std::wostringstream, std::ostringstream gabage char

// release build is ok, only debug build std::wostringstream stLog; stLog << L"test"; // sometime gabage char in debugging view or string. // add to 'std::ends' stLog << L"test" << std::ends; // caution: solution but write null char in file. // convet to 'std::wstring' std::wstring strValue = stLog.str(); // solution... but, Debugger string --;;;; // check below setlocale(LC_ALL, "");

PostgreSQL 을 맥에서 설치하는 2가지 방법.

homebrew를 이용해서 설치를 했는데, 항상 웹서비스를 할 것이 아니라서, 이렇게 할 필요가 있나 생각했는데, PostgreSQL에 PostgreSQL.app 앱이 별도로 있어서 이건 왜 있나 했더니, 나처럼 필요한 경우에만 동작하고 필요없으면 끄고자 하는 경우에 쓰면 좋을 것 같다. 우선은 Postgresql.app 을 써서 사용해 보고 나중에 HomeBrew로 다시 설치해서 데몬으로 동작하고자 한다. 아래는 참고 링크 링크: http://jonnung.blogspot.kr/2014/12/osx-postgresql-install.html https://rorlab.gitbooks.io/railsguidebook/content/appendices/postgresql_install.html OS X 에서 Postgresql 설치하는 두가지 방법

windows 10 에서 bash 기능 활성화해서 사용하기

Windows 10 Build version 1600 이상에서 사용 가능한 듯 1. Windows Update를 수행 2. 설정 > 시스템 탭 > 정보에서 버젼 내용 1600 이상 인 것을 확인 3. 설정 > 개발자 탭 > 개발자 모드 확인 4. 설정 메뉴 아래 단축 텍스트 박스에 "Windows 기능 켜기/끄기" 타이핑 하면 나오는 메뉴 선택 5. linux용 윈도우 시스템 하위(베타) 체크하여 활성화 좀더 자세한 것은 아래 링크 참고 참고 링크 :  http://sanghaklee.tistory.com/39

ODBC 적용 안될 때 확인해 봐야 하는 것들

1. 윈도우 어플인가(WindowXP, 7, 8, 10) 2. 해당 DB 서버 Remote 접속 확인 (IP, Port, ID, Password 확인 완료) 3. 해당 App이 64비트(x64), 32비트(x86) 용으로 컴파일 된 것인지 확인 4. OS가 64 비트 여도 ODBC 는 컴파일 된 App에 따라 감. 5. ODBC 접속 하는 dll 이나 exe가 32비트 이면 odbc32.exe 를 설행해서 확인 6. 설치된 odbc 연결스트링인 경우, 버젼만 바꿔어서 우선 붙는지 확인하고, 버젼문제라면 해당 버젼을 설치해서 해결할 것. SQL Server 2005 - Native Client 9.0 SQL Server 2008 - Native Client 10.0 SQL Server 2012 - Native Client 11.0 특히, Native Client 에 따라 기능이 계속 추가 되고 있으므로, ODBC 연결 스트링을  함부로 변경하지 말고, 기능 명세를 확인하고 변경하도록 할 것.

python gui designer for thinker

python - Is there a GUI design app for the Tkinter / grid geometry? - Stack Overflow http://stackoverflow.com/questions/14142194/is-there-a-gui-design-app-for-the-tkinter-grid-geometry PAGE - A Python GUI Generator http://page.sourceforge.net/ GitHub - alejandroautalan/pygubu: A simple GUI designer for the python tkinter module https://github.com/alejandroautalan/pygubu

chrome plugin dark render

웹브라우져 화면 눈부심이 심해서 플러그인을 알아보고 있음 고대비... 색상 반전 등 찾는중 그나마 쓸만한 플러그인 발견 Dark Reader - Chrome 웹 스토어 https://chrome.google.com/webstore/detail/dark-reader/eimadpbcbfnmbkopoojfekhnkhdbieeh

Python3.5 Screen Capture

alexnet jin: # _*_ encoding: cp949 _*_ import pyscreenshot as ImageGrab #Library PIL #fullscreen def capture_full():     im = ImageGrab.grab()     im.show() def capture_part():     im = ImageGrab.grab(bbox=(0,24,1920,1120))       #x1, y1, x2, y2     im.show() if name == '__main__':     capture_part()

c++ inline

link:  https://msdn.microsoft.com/ko-kr/library/bw1hbe6y.aspx inline 명령어 사용시 유의점 1. 매크로에서는 파라메터가 반복해서 정의 되는 문제가 있지만, 인라인 함수에서는 하나의 파라메터로 정의되므로, 위의 링크 내용 참고 2. 매크로처럼 호출한 부분에 코드가 대치 되므로(컴파일러 따라 다름, 100%는 아님) 함수 크기가 커지면, inline 명령어 정의를 제거할 것인지 여부를 검토해야 한다. 3. inline 함수의 컴파일은 호출 된 부분에 코드가 삽입되는 시점에 해당 코드 내용을 찾아서 대치하는 구조이므로, 클래스화 했을 경우, 클래스 내부에서 호출하지 않고, 외부에서만 호출되고 있다면, 해당 코드는 클래스 내부에서 오브젝트 코드로 만들어지지 않을 가능성이 있다.(보통 정의 되지 않음 함수라는 링크 오류를 출력한다.) 4. 3번의 문제처럼 inline 함수는 호출된 부분에 정의 부분을 찾아서 삽입하는 방식을 사용하는 가능하면 헤더 파일에 정의하는 것이 좋다.

time_t UTC vs local

alexnet jin: inline time_t SU_UTCTime() { // _mkgmtime64() :  struct tm에 들어간 시간을 1970-01-01 00:00:00 을 기본으로 초단위 값으로 반환 // _mktime64() 함수는 현재 system local time zone값이 더해진 시간을 기본으로 초단위 값으로 반환 return time(nullptr); } inline time_t SU_LocalTime() { time_t Time = time(nullptr); tm curTM; _localtime64_s(&curTM, &Time); return _mkgmtime64(&curTM); }