2010/10/28

SQLite Release 3.7.3.0 (정적/동적 라이브러리 포함)





SQLite Release 3.7.3 On 2010 October 08 (3.7.3)

  • Added the sqlite3_create_function_v2() interface that includes a destructor callback.

  • Added support for custom r-tree queries using application-supplied callback routines to define the boundary of the query region.

  • The default page cache strives more diligently to avoid using memory beyond what is allocated to it by SQLITE_CONFIG_PAGECACHE. Or if using page cache is allocating from the heap, it strives to avoid going over the sqlite3_soft_heap_limit64(), even if SQLITE_ENABLE_MEMORY_MANAGEMENT is not set.

  • Added the sqlite3_soft_heap_limit64() interface as a replacement for sqlite3_soft_heap_limit().

  • The ANALYZE command now gathers statistics on tables even if they have no indices.

  • Tweaks to the query planner to help it do a better job of finding the most efficient query plan for each query.

  • Enhanced the internal text-to-numeric conversion routines so that they work with UTF8 or UTF16, thereby avoiding some UTF16-to-UTF8 text conversions.

  • Fix a problem that was causing excess memory usage with large WAL transactions in win32 systems.

  • The interface between the VDBE and B-Tree layer is enhanced such that the VDBE provides hints to the B-Tree layer letting the B-Tree layer know when it is safe to use hashing instead of B-Trees for transient tables.

  • Miscellaneous documentation enhancements.




이번 버전에서는 정적 라이브러리를 만들기 위해 컴파일을 시도 하면 sqlite3rtree.h 파일을 찾을 수 없다는 에러 메세지가 발생하였다. 이 문제에 대한 자료를 찾기가 어려워 우선 sqlite3rtree.h 파일을 sqlite-3.7.3.tar.gz 파일에서 찾아(sqlite-3.7.3.tar.gz\sqlite-3.7.3.tar\sqlite-3.7.3\ext\rtree\) 넣어 컴파일을 하였다





2010/10/21

AnkhSVN에서 .DLL 과 .LIB 파일을 SVN 에 등록하기


2010/10/16 - [Dev Story] - AnkhSVN 으로 Subversion에서 프로젝트 받아오기




AnkhSVN 으로 프로젝트를 SVN 에 올릴 경우 프로젝트에 포함된 .DLL 파일과 .LIB 파일이 SVN Repository 에 등록이 되지 않는데 이를 등록하는 방법을 지금까지 찾을 수 없었는데 의외로 간단한 방법을 찾았다.




AnkhSVN 에 포함되어 있는 Working Copy Explorer 을 이용하면 해결 할 수 있다. Working Copy Explorer 는 PC에서 작업중인 프로젝트를 탐색할 수 있으면 SVN 관련 작업을 지원하는 View 이다. Visual Studio 의 View 메뉴에서 Working Copy Explorer 를 호출 할 수 있다.







Repository에 등록되지 않은 파일들을 등록하길 원할 경우 해당 파일에서 오른쪽 버튼의 Subversion 메뉴에서 할 수 있다.<

Original Post : http://neodreamer-dev.tistory.com/472

2010/10/18

CFileDialog 여러개의 파일 선택하기

CFileDialog dlgFile( TRUE, NULL, NULL, 
OFN_HIDEREADONLY | OFN_ALLOWMULTISELECT,
_T("All files (*.)|*.*") );

int nFileNum = 100;
int nFileNameSize = MAX_PATH + 1;
int nBufSize = nFileNameSize * nFileNum + 1;
TCHAR* szFileNames = new TCHAR[ nBufSize ];

szFileNames[ 0 ] = NULL;
szFileNames[ nBufSize - 1 ] = NULL;

dlgFile.m_ofn.lpstrFile = szFileNames;
dlgFile.m_ofn.nMaxFile = nBufSize;

if ( dlgFile.DoModal() == IDOK )
{
POSITION pos = dlgFile.GetStartPosition();

while ( pos != NULL )
{
CString strFile = dlgFile.GetNextPathName( pos );
}
}

delete [] szFileNames;
<

Original Post : http://neodreamer-dev.tistory.com/470

2010/10/17

OpenCV 2.1 + TBB 를 Visual Studio 2010 에서 컴파일하기

OpenCV 가 2.1 버전에서 OpenMP 를 버리고 Threading Building Blocks(이하 TBB)를 선택하였는데 성능면에서 어떠한 이득이 있을지는 모르겠다. 실제로 테스트를 해 보기 위해서 OpenCV 2.1 버전을 TBB 를 활성화하여 컴파일을 해보려 했지만 쉽지 않았다.



인터넷에서 해당 정보를 찾아 보았지만 TBB 를 포함한 컴파일에 대한 설명은 많지도 않고 자세하지도 않았다. 그러던 중 한 사이트(http://blog.csdn.net/effenberg11/archive/2010/07/05/5712724.aspx)를 발견하고 그 실마리를 얻었다.




준비사항




우선 CMake 를 설치한다. 설치하지 않고도 가능하겠지만 많은걸 입력해 주어야 한다.

그리고 TBB 와 OpenCV 를 작업 경로에 압축을 풀어 놓는다. 아래는 이번 작업에 사용 된 폴더 구조이다.




OpenCV 경로 : D:\Work\OpenCV\x86

TBB 경로 : D:\Work\OpenCV\tbb30_20100406oss




설치된 CMake  GUI 버전을 실행시킨다. 그리고 소스 코드 경로(Where is the source code)에 OpenCV 의 경로 D:\Work\OpenCV\x86 를 입력하고 바이너리 생성 경로(Where to build the binaries)에 OpenCV 의 경로 D:\Work\OpenCV\x86 를 입력하고 하단의 "Configure" 버튼을 클릭한다.




"Configure" 버튼을 누르면 컴파일러를 선택하는 대화상자가 나오는데 이 대화상자에서 "Visual Studio 10" 과 "Use default native compilers" 를 선택한다.




컴파일러 선택 후 "Configure" 버튼을 클릭하면 온통 붉은색으로 뒤덥힌 리스트를 만나게 된다. 그리고 WITH_TBB 가 체크되지 않음을 확인할 수 있다.




TBB 를 활성화 하기 위해 WITH_TBB 항목을 선택하고 "Configure" 버튼을 누른다.




그러면 TBB에 대한 잘 못 된 항목(TBB_INCLUDE_DIR) 값이 리스트 상단에 표시가 된다.




TBB_INCLUDE_DIR 항목에 TBB 경로의 Include 경로를 지정하고 "Configure" 버튼을 누른다.




다음 에러는 TBB_LIB_DIR 경로 오류가 발생한다.




TBB_LIB_DIR 에 TBB 의 lib 폴더에서 플랫폼과 컴파일러 버전을 맞추어 경로를 선택한다.





경로 설정을 마치고 "Configure" 버튼을 누르면 모든 에러가 해제되고 새롭게 등록된 두 항목을 확인할 수 있다.




그리고  Use TBB 가 활성화 된 것을 확인할 수 있다.




이제 OpenCV를 압축해제 해 놓은 경로(D:\Work\OpenCV\x86)에서 OpenCV.sln 파일을 Visual Studio 2010 으로 열어 ALL_BUILD 프로젝트의 속성 대화상자를 연다.




속성 대화상자에서 VC++ Directories 항목중에서 Executable, Include, Library Directories 에 TBB 관련 경로를 입력한다.




프로젝트의 속성을 편집하는 것은 이 글의 가장 위에서 언급한 사이트로 부터 얻은 정보인데 이 속성을 편집하지 않아도 OpenCV는 에러없이 컴파일 된다. (TBB가 정상동작 할지는 확실하지 않지만...)




이제 ALL_BUILD 만 Build 하면 된다.

Build 를 마치면 Binary 생성 경로에 bin 과 lib 폴더 안에 관련 dll 과 lib 파일이 생성된다.




이제 실제로 되는지 테스트하는 일만 남았다.<

Original Post : http://neodreamer-dev.tistory.com/469

2010/10/16

AnkhSVN 으로 Subversion에서 프로젝트 받아오기

2010/10/16 - [Dev Story/Tips] - Visual Studio 를 위한 버전 관리 툴 AnkhSVN 사용하기



AnkhSVN 을 이용하여 Subversion 에 등록한 프로젝트를 다른 곳에서 다운 받아 보았다.




우선 File 메뉴에서 Subversion 의 "Open from Subversion..." 을 선택한다.




Subversion URL 을 입력하면 프로젝트 폴더가 나오고 프로젝트 폴더에 들어가면 Solution(*.sln) 파일이 있는데 이를 Open 한다.




프로젝트를 생성할 경로를 입력하고 "OK" 를 누른다.




그러면 Subversion 서버로 부터 프로젝트를 다운 받는다.




다운받은 프로젝트가 이상이 없는지 컴파일을 해 보았다.

그런데 문제가 발생하였다. 프로젝트에 포함되어 있던 *.lib 와 *.dll 파일들이 Subversion 서버에 등록이 되지 않아있었다.




프로젝트를 등록할 때 .lib 와 .dll 파일들이 자동으로 등록이 되지 않는 것 같다. 별도의 옵션이 있는지 확인해 보고 없으면 프로젝트 등록은 TortoiseSVN 같은 별도의 툴을 사용해야 할 것 같다.<

Original Post : http://neodreamer-dev.tistory.com/468

Visual Studio 를 위한 버전 관리 툴 AnkhSVN 사용하기

먼저 AnkhSVN 홈페이지에서 설치 파일을 다운로드 받는다. AnkhSVN 은 여러가지 버전이 있는데 최근 안정화 된 AnkhSVN 2.1.8420 버전을 설치 하였다.



AnkhSVN 을 설치하면 Visual Studio 의 Tools -> Options 의 Source Control 항목에 AnkhSVN 이 표시가 되고 Subversion 에 관련한 설정을 할 수 있다.




새로운 프로젝트 생성 대화상자에도 Add Subversion 메뉴가 생성이 되어 프로젝트를 생성할 때 바로 Subversion 에 등록을 할 수 있다.




기존 프로젝트를 Subversion 에 등록을 하려면 Solution Explorer 에서 해당 프로젝트에서 마우스 오른쪽 버튼을 누르면 Subversion 관련 메뉴가 나오는데 이 중에서 Add Solution to Subversion 을 실행하면 된다.




새로운 프로젝트를 Subversion 에 등록하는 것과 기존 프로젝트를 Subversion에 등록하는 것으 크게 차이가 없다. 여기에서는 기존 프로젝트를 Subversion 에 등록을 해 보겠다.




기존 프로젝트른 Embedded Firebird 를 테스트해 보기위한 간단한 프로젝트이고 Subversion 은 Google에서 제공하는 Google code project hosting 을 이용하였다.




Add Solution to Subversion 에서 프로젝트 이름과 Subversion URL 만 넣어주면 된다.





프로젝테에 대한 적당한 로그를 작성한다.




Google code 에 접속 정보를 입력하면 프로젝트가 Subversion 에 등록이 된다.



이세 Solution Explorer 에서 소스파일 아이콘 좌측에 등록이 되었다는 (+)아이콘이 표시되는 걸 볼 수 있다. Commit 을 해야 완전하게 등록이 되는 것으로 프로젝트의 마우스 우측 메뉴에서 Commit Project Changes 를 선택한다.




Commit 대화상자에는 변경된 파일 리스트와 Log Message 입련하는 곳이 있는데 적당한 메세지를 입력하고 OK 를 선택하여 Commit 한다.







Commit 을 마치면 Solution Explorer 의 파일 아이콘들이 바뀐 것을 볼 수 있다.


2010/10/08

Visual C++ 에서 64비트 정수 출력하기

__int64    i64 = 0x12341234abcdabcd;

char szDispBuf[1024];

sprintf_s( szDispBuf, 1024,
"%%d => %d \n"
"%%o => 0%o \n"
"%%x => 0x%x \n"
"%%X => 0x%X \n"
"%%I64d => %I64d \n"
"%%I64o => 0%I64o \n"
"%%I64x => 0x%I64x \n"
"%%I64X => 0x%I64X \n"
, i64, i64, i64, i64, i64, i64 );

TRACE("%s \n", szDispBuf );

Output:
%d => -1412584499
%o => 02215011064
%x => 0xabcdabcd
%X => 0x12341234
%I64d => 1311693408901639117
%I64o => 0110640443225363325715
%I64x => 0x12341234abcdabcd
%I64X => 0x12341234ABCDABCD
<

Original Post : http://neodreamer-dev.tistory.com/465

2010/10/05

Firebird Windows에 수동으로 설치하기

우선 운영체제에 맞는 설치 파일을 선택한다. 32비트는 Firebird-2.5.0.26074-0_Win32.zip 를 64비트는 Firebird-2.5.0.26074-0_x64.zip 를 설치하고자 하는 경로에 압축을 풀어놓는다. (Download Site)






여기서는 F:\Firebird64 경로에 압축을 풀고 작업을 했다.






우선 bin 폴더에 있는 install_super.bat 를 실행하여 서비스를 등록한다.






이제 시스템의 서비스 목록을 확인해 보면 Firebird Guardian 과 Firebird Server 가 등록되어 있음을 확인 할 수 있다.






사실 이것 만으로 설치는 끝난것인데 항상 Firebird 를 운영할 일이 없는 개인 PC 에서 서비스 형태로 돌리는 것이 맘이 들지 않아 Application 형태로 필요할 때에 운영을 하려 한다.






우선 F:\Firebird64\system32 폴더에 있는 Firebird2Control.cpl 를 윈도우의 System 폴더(C:\Windows\System32)에 복사를 한다. 복사를 하고 시작 메뉴의 제어판을 보면 Firebird Server Manager 가 등록 된다.






Firebird Server Manager를 실행하면 Firebird Server Control 이 실행 된다.






Firebird Server Control 에서 현재 운영중이라면 서버를 중지시키고 운영 형태(Run)를 Application 으로  시작(Start)를 Manually로 설정하고 Apply 를 누르고 시작을 한다.






그러면 시스템의 서비스 목록에 등록되었던 두 개의 서비스(Firebird Guardian, Firebird Server)가 사라지고 Firebird 는 Application 형태로 운영이 된다. 시스템의 프로세스 목록을 보면 두개의 프로세스가 동작중인 것을 확인 할 수 있다.





<

Original Post : http://neodreamer-dev.tistory.com/464

2010/10/04

Firebird 2.5 정식 Release!!







Firebird 2.5가 기나긴 RC 버전 뒤로하고 정식 버전을 공개하였다.




Scrollbar 유무 확인하기

Scrollbar 의 유무를 확인하는 것은 윈도우의 스타일을 확인하면 할 수 있다.




DWORD dwStyle = GetWindowLong( hWnd, GWL_STYLE )

if ( dwStyle & WS_HSCROLL )
{
//Horizontal scrollbar is visible
}

if ( dwStyle & WS_VSCROLL )
{
//Vertical scrollbar is visible
}
<

Original Post : http://neodreamer-dev.tistory.com/462