본문 바로가기

분류 전체보기

OPENSSL visual studio 에서 사용하기.. 1. openssl 다운로드 http://www.openssl.org/source/ 2. ActivePerl 설치 http://www.activestate.com/activeperl 3.. 전반적인 컴파일 환경 구축 압축이 해제된 디렉토리로 이동하여, 아래와 같이 명령어를 입력합니다. 1) x86 static library perl Configure VC-WIN32 --openssldir=C:\OpenSSL-x86 no-shared no-asm threads no-idea no-mdc2 no-rc5 2) x86 static debug library perl Configure debug-VC-WIN32 --openssldir=C:\OpenSSL-x86-debug no-shared no-asm threads.. 더보기
GTEST에서 visual assist의 자동완성기능 작동안할때 GTEST 를 사용하다 보면.. TEST() 메크로 안에서 visual assist의 자동완성 기능이 작동 하지 않습니다.. 그럴때 해결책은 visual assist를 사용하지 않고 visual studio의 intelli sense를 사용하면 되긴 하지만.. visual assist의 막강한 기능들을 사용하지 못한다는 단점이 있습니다.. 일단 gtest에서 visual assist를 사용하려면 [HKEY_CURRENT_USER\Software\Whole Tomato\Visual Assist X] LimitMacro 란 문자열 생성후 값 데이터에다가 NoDepthLimit를 써주시고. visual studio 2010일 경우 [HKEY_CURRENT_USER\Software\Whole Tomato\Vis.. 더보기
잡설.. 테스트 주도 개발.. 아니.. 테스트 개발 테스트 주도 개발이 요즘 대세라고 그러는거 같은데.. 아직 c++ 개발에서는 테스트 주도 개발이 사실 힘들긴 합니다..(저만 그런가..ㅠ.ㅠ) 테스트 주도 개발을 해보려고 솔루션 만들고 main Project 와 test Project 2개를 만들며 해보긴 하는데.. 일단 C# 혹은 java에서는 c++에서처럼 일일이 .h .cpp 를 test Project에 등록하지 않아도 테스트를 진행할수 있지만. c++에서는 테스트할 .h/.cpp를 모두 등록을 해줘야 됨니다..(귀차니즘 발동시작..) 또한 c#은 강력한 visual studio에서 리팩토링 및 생성 기능을 이용해 클래스및 맴버함수, 변수 등을 자동 생성해주지만. c++에서는 그러한 기능들이 없습니다.. (visual Assist에서 간단한 리팩토.. 더보기
람다식을 이용한 TBB의 parallel_for parallel_for_each 에서 tbb::concurrent_unordered_map 을 사용해보자. TBB를 사용해보시면 아시겠지만.. 람다식을 사용하지 않고 TBB를 사용하려면 매우 복잡하고 피곤합니다.. 사용하는 함수마다 class를 생성해줘야 되니깐요.. 기본적으로 람다식이 된다는 가정하에 설명을 드리겠습니다. 람다식이 가능하다 == vc++ 2010 이상인걸로 간주하고 auto 키워드도 사용된다는걸로 생각하겠습니다.. 일단 기존에 사용하던 방법입니다.. #include #include typedef tbb::concurrent_unordered_map TBB_MAP; class TbbUnorderMap { public: void operator() (TBB_MAP::range_type& _range) const { for (TBB_MAP::iterator iter = _range.begin();.. 더보기
Console 윈도우에서 종료버튼 disable시키기. 콘솔 윈도우에서 강제 종료를 막을 필요가 있을때 사용해봅시다. EnableMenuItem(GetSystemMenu(GetConsoleWindow(), FALSE), SC_CLOSE , MF_GRAYED); DrawMenuBar(GetConsoleWindow()); 더보기
TBB & PPL의 task_group(task)를 사용해보자.. 기존에 쓰래드 생성시 사용했었던 CreateThread와 _BeginThread도 있지만.. 병렬프로그래밍에서는 task라는게 새로 생겼습니다.. 코드부터.. #include #include #include #include #include #include #include #include #include using namespace std; const int MAX_LOOP = 10000000; const int THREAD_COUNT = 4; queue queTest; tbb::concurrent_queue queParallelTest1; tbb::concurrent_bounded_queue queParallelTest2; Concurrency::concurrent_queue queParallelTest.. 더보기
Visual Studio 2010 UTF-8 파일 저장 및 공백 탭 제거하기(완결판). 2011/08/25 - [ETC] - Visual studio 2010 소스 저장 UTF-8 로 하기 및 뒷줄 공백 제거 아래에 있는건 파일 저장 할때 자동으로 utf-8로 저장을 하는거라.. 가끔 원치 않는 결과를 낳을수도 있게에 필요할때 단축키로 하는 방법을 만들어 봤습니다. 일단 Alt + 11키를 눌르거나 도구 -> 매크로 -> 매크로 IDE로 매크로 IDE를 실행시킴니다. 탐색기에서 MyMacros쪽에 추가 -> 모듈 추가로 새로운 매크로 파일을 생성후 Public Module Module1 여기 아래 부분에 매크로를 작성하시면 됨니다.. Imports System Imports EnvDTE Imports EnvDTE80 Imports EnvDTE90 Imports EnvDTE90a Import.. 더보기
Visual studio 2010 소스 저장 UTF-8 로 하기 및 뒷줄 공백 제거 Visual studio 의 기본 문자셋은 cp949 utf-8로 저장을 하려면 파일->고급 저장 옵션에서 설정을 해야만 한다... 하지만.. 매크로를 사용하면 되는데... 매크로를 이용한 utf-8 자동 저장하기 링크 주소 뒷줄 공백 제거 링크 주소 이걸 참조하셔서 하시면 되는데.. Public Sub DocumentEvents_DocumentSaved(ByVal Document As EnvDTE.Document) Handles DocumentEvents.DocumentSaved Dim path As String = Document.FullName MakeUTF8File(path) Dim result As vsFindResult 'Dim nameresult As String Try Document.Ac.. 더보기
BoostPool 사용하기.. BoostPool의 템플릿 버전입니다.. 그냥 상속받아서 new delete 하시면 됨니다.. #pragma once #include template class CBoostPool { public: void* operator new(size_t _size) { return m_bpool.malloc(); } void operator delete(void* _p) { m_bpool.free(_p); } protected: static boost::pool m_bpool; }; template boost::pool CBoostPool::m_bpool(sizeof(T)); class CTest : public CBoostPool { public: wchar_t m_szName[64]; }; void main(.. 더보기
tbb를 배워보자.. parallel_reduce 의 사용법.. 2 parallel_reduce는 ..... 일단 코드부터 -_- #include #include #include #include #include #include using namespace tbb; using namespace std; class TbbTest { std::vector* m_vecTest; public: void operator() (const tbb::blocked_range&r) { std::vector* vecTemp = m_vecTest; for(int i = r.begin(); i != r.end(); i++) { m_fSum += (*vecTemp)[i]; } } void join(const TbbTest &y) { m_fSum += y.m_fSum; } TbbTest(TbbTe.. 더보기