Library2010. 1. 8. 13:54

TR1 설치는 크게 두가지 방법이 있다.

1, Visual Studio 2008 Feature Pack 를 설치 한다.

현재 2003을 쓰고 있으므로 이건 생략 

2, Boost 홈페이지에서 다운 받는다.

1) http://www.boost.org/ 로 이동한다.
2) 우측 상단에 'GET BOOST" 라는 버튼 이미지를 클릭한다. 

3) 최상단에 있는 최신버전 다운로드 링크를 클릭한다.

4) 링크를 눌러서 다운 받는다.

* 회사에서 막혀 있는지 다운로드 페이지로 이동이 안된다 ㅠㅠ
* 현재 버전 boost_1_41_0.zip 이다.

3, 프로젝트 환경 설정

1) 다운 받은 파일의 압축을 푼다. "C:\boost_1_41_0 폴더에 압출을 풀었다."

2) 라이브러리를 설정한다.
"도구->옵션->프로젝트->VC++ 디렉토리->라이브러리 파일" 에서 경로를 설정한다.

3) 포함 파일을 설정한다.
"도구->옵션->프로젝트->VC++ 디렉토리->포함 파일" 에서 경로를 설정한다.

#include <boost/tr1/tr1/tuple> 식으로 사용하면 된다.

#include <tuple> 게 사용하고 싶다면 포함파일에 몇개더 추가해야 한다.


Posted by 상현달
Library2008. 7. 28. 11:27

이번에 개발중인 프로젝트에서 로그를 남겨야 할일이 생겨서 Log4cxx 를 사용해 보기로 했다.
근데 이놈이 사용하려고 하니 좀 까다로운 놈이어서 한번 짚고 넘어가 본다.

Log4cxx 아파치 프로젝트중 하나이며 물론 오픈 소스 프로젝트 이다.
그래서 라이센스도 아피치 라이센스 정책을 따른다. 

Log4cxx 는 형제들이 있다. 자바버전의 Log4j 와 닷넷 버전의 Log4net 이 있고, 친구 격인 자바로 만든 로그 뷰어 Chainsaw 도 있다. Log4cxx 는 자바버전의 Log4j 를 컨버팅 한것이므로 막네격이다.

아파치 로깅 라이브러리는 다음과 같은 좋은 기능들이 있다.
- 사용이 편하다. (노가다로 일일이 코딩하는거 보다야 ....)
- 다양한 인자를 처리 할수 있는 출력형식을 가지고 있다. (날짜, 스레드번호, 내용, 로거이름 등등)
- 연동 가능한 GUI 툴(Chainsaw)이 있다.  (아직 사용 안해봤따 ㅡㅡ)
- 다양한 형태의  OUTPUT 을 볼수 있다. (파일, 콘솔, XML, 이벤트로거, 원격서버, 메일전송 등등)
- 멀티스레드를 지원한다. (막상 코딩하자면 여간 귀찮은 일이 아니다 ㅡㅡ)

사실 하나의 형식에 하나의 OUTPUT 만 필요하다면 직접 코딩하는것이 더 빠르고 편할수 있다. 하지만 관리자들의 까다로운 입맛에 맞추자면 추후에 어떠한 형식으로 로그를 남겨야 할지 예측하기 힘들다. ㅡㅡ
 그러므로 로그가 꼭 필요한 프로젝트라면 미리 한번 고민해 볼만 하겠다.

이제 대충 서론을 마치고 Log4cxx 를 사용해 보자. 처음 시작할때 이놈이 좀 까다로운 놈이라고 했었다.
왜 까다로운놈인지 알아보자.
먼저 이놈은 ACE 라이브러리 같이 소스를 직접 다운 받아 컴파일 하여 사용하여야 한다. 이전에는 Lib 형식도 지원했다고 하지만 현재버전(0.10.0)에서는 dll 형식으로만 사용 가능하다고 한다.

그럼 이제 이놈을 빌드해 보자.
먼저 준비물 부터 챙겨 보도록 하자.

- Log4cxx : 빌드할 소스이다.
- APR : (Apache Portable Runtime) 아파치 프로젝트를 만들고 유지하기 위한 라이브러리
- APR Util : 위에놈을 사용하는 놈이겠지...
- GNU Sed : 에디터 이다. 보통 윈도우에서는 잘 사용하지 않는것으로 알고 있다. (윈도우 버전으로 설치)
                  log4cxx 빌드 하기전에 배치파일을 실행하는데 배치파일에서 이녀석을 사용한다.


자 그럼 이제 설치해 보도록 하자

먼저 다운 받은 4개의 파일을 한폴더에 몰아 넣자 ... 나는 "C:\library" 폴더에 넣었다.
그다음 압축된 파일들의 압축을 풀자.

사용자 삽입 이미지

[그림1]


압축을 푼 다음 2개의 폴더에 이름을 변경한다.
"apr-1.3.2" ==> "arp"
"apr-util-1.3.2" ==> "apr-util"

사용자 삽입 이미지

[그림2]


이제 다운 받은 "sed-4.1.5-setup.exe" 프로그램을 설치한다.
설치한 다음 sed 실행파일이 있는 곳에다 파일 패스를 잡는다.
"내컴퓨터" 오른쪽 마우스 클릭 ==> "속성" ==> "고급" ==> "환경변수" ==> "path" 에 등록한다.
[그림3] 참고 하시라

사용자 삽입 이미지

[그림3]


자 이제 준비가 끝났다.

이제 빌드를 해보자 먼저 VC 2005 를 이용해서
"C:\library\apache-log4cxx-0.10.0.tar\projects\log4cxx.dsw" 를 실행한다. 이 파일은 VC60 버전으로 제작된 파일이라 변환할꺼냐고 묻을 것이다. 그럼 모두 변환한다고 하자.

% 현재 진행중인 프로잭트가 2005 를 사용하므로 나는 2005로 빌드 했다. 필요에 따라 변경하기 바란다.

그리고 "Rebuild ALL" 하면 Debug 또는 Release 폴더에 log4cxx.dll 이 생성된다.

% 이 순서대로 빌드를 했는데도 오류가 발생한다면 Micorsoft Windows SDK 1.0 를 설치 한후 포함파일과 라이브러리 파일을 맨위로 설정하고 다시 빌드해 보라. (1.0 버전만 된다는 설도 있기는 하지만 꼭 그렇지만은 않은것 같다.)

'Library' 카테고리의 다른 글

TR1 유용한 클래스/함수 (1) ... tuple  (0) 2010.01.14
C++ TR1 설치  (0) 2010.01.08
Boost 라이브러리 설치  (9) 2008.07.13
TDD(Test Driven Development)  (2) 2008.05.06
ACE Library 설치 & 설정 & 사용기  (0) 2008.04.30
Posted by 상현달
Library2008. 7. 13. 00:01

Boost 라이브러리는 Template Metaprogramming 를 원할히 사용할수 있게 지원해주는 라이브러리이다.
여기서 Metaprograming 대해서 약간 언급하려고 하였으나 아직 나 자신도 사용에 익숙하지 못한 상태여서(내공부족 ㅡㅡ) 설치만 언급하겠다.

먼저 라이브러리를 다운 받는다.

다운로드 페이지

링크로 이동해서 최신버전의 라이브러리를 다운받는다. (현재 최신 버전 1.35.0)
다운 받아서 원하는 위치에 압축을 푼다. 나는 "C:\boost_1_35_0" 에 풀었다.

Boost 라이브러리는 STL 라이브러리 같이 소스만 필요한것이 아니고 ACE 라이브러리 처럼 라이브러리 파일이 필요하다. ACE 라이브러리 같은 경우 프로잭트 파일이 있어서 VC 툴로 컴파일 하여 사용했었지만
Boost 는 좀 다르다. 다음과 같이 따라해보자.

먼저 CMD 창을 실행시키고 다음과 같은 명령을 준다.

사용자 삽입 이미지

[그림1]

나는 Visual Studio 2008(VC9) 버전을 사용한다.  Visual Studio 2008 를 사용한다면 VC8 을 입력하면되겠다.

이렇게 실행하면 "C:\boost_1_35_0\tools\jam\src\bin.ntx86\bjam.exe" 파일이 생싱된다. 이파일을 가지고 라이브러리를 빌드해 보자. 먼저 "bjam.exe" 파일을 "C:\boost_1_35_0" 밑으로 복사한다.
그리고 다음과 같은 명령을 준다.

사용자 삽입 이미지


build-type=complete  옵션은 전체 빌드이고 이 옵션으로 빌드하면 용량이 기가 바이트 단위로 빌드 된다.
릴리즈용 라이브러리만 필요하다면 이 옵션을 빼면 된다.

컴파일이 끝나면 "C:\boost_1_35_0\stage\lib" 안에 lib, dll 파일들이 생긴다. 파일 용량은 약 2기가 바이트가 넘고 컴파일 시간도 2~30 분 가량 걸린다. 이런 과정이 번거롭다면 다음 ULR 에서 설치파일을 다운받아서 일괄적으로 설치 할수도 있다. 시간은 몇시간 예상 해야 하지만 시간에 상관없다면 설치파일로 설치하는것을 권장한다.

다운로드 페이지

그리고 VC "도구-옵션" 창에서 헤더와 라이브러리 폴더를 추가한다.
사용자 삽입 이미지

[그림3]

inlcude 폴더 경로 설정하면

사용자 삽입 이미지

[그림4]

라이브러리 폴더 경로 설정화면



'Library' 카테고리의 다른 글

TR1 유용한 클래스/함수 (1) ... tuple  (0) 2010.01.14
C++ TR1 설치  (0) 2010.01.08
Apache Log4cxx 0.10.0 윈도우에서 빌드 하기  (2) 2008.07.28
TDD(Test Driven Development)  (2) 2008.05.06
ACE Library 설치 & 설정 & 사용기  (0) 2008.04.30
Posted by 상현달
Library2008. 5. 6. 11:11

1, TDD 는 무엇인가 ?

TDD 약자는 생소하지만 XP(Extream Programming) 개발 방법론은 많이 들어봤을 것이다 . TDD 는 XP 중 하나의 방법론이다. 약자를 보면 대충 감이 오겠지만 굳이 풀어 쓰자면 "테스트 주도 개발" 정도로 해석 하겠다.
 여태 까지 개발 과정중 테스트란 무었이었는가 ? 테스트도 여러가지로 나눌수 있지만 단위테스트로 예를 들면, 먼저 원하는 기능을 만들고 그 기능이 올바로 동작하는지 테스트를 해보는 정도였다. 그리고 그 기능에 문제가 없으면 다른 기능을 개발하고 또 테스트 하고를 반복한다. 그러나 TDD 이와 같은 방법을 완전히 뒤엎어 버린다. TDD 는 기능에 대해 테스트를 먼저 구성 하고 개발한다. 그리고 개발된 테스트를 통과 하는 코드를 만드는 것으로 실제 구현이 이루어진다.

% 테스트 방법론에 대한 좋은 글들이 많이 있으니 궁금한게 있으면 찾아보도록 하자.

이것만 봐서는 먼말인지 알수가 없다. ㅡㅡ 이후 직접 샘플을 제작해 보겠다.

2, UnitTest++ 설치하여 사용하기

많은 종류의 C++ Test FrameWork 이 있다.
CPPUint, Boost.Test, CppUnitLite, Unit++, UnitTest++, WinUnitTest 중에서 UnitTest++ 을 설치해 본다.

% 본격적으로 사용하려고 한다면 여러 툴들의 장단점을 알아보고 선택해야 겠다.

먼저 다운을 받는다.  다운로드 페이지

다운받고 압축을 풀면 다음과 같다.

사용자 삽입 이미지
프로젝트를 열고 라이브러 형태로 컴파일 한다.

그리고 콘솔 Test 프로젝트를 만들어서 사용해 보자.

먼저 "추가 포함 디렉토리", "추가 라이브러리 디렉토리" 를 설정한다.
C 드라이버에 압축을 풀었다면 "C:\unittest-cpp-1.3\UnitTest++\src", "C:\unittest-cpp-1.3\UnitTest++\debug" 가 될것이다.

이제 테스트 코드를 작성해 본다.
사용자 삽입 이미지


















실행 결과
사용자 삽입 이미지

테스트 코드에 대한 결과가 출력된다.

%TestFrameWork 는 Visual Studio Add-in 을 설치하면 비주얼 하게 테스트 결과를 볼수 있다.


3, 사용기

수박 겉핧기 식으로 사용해 보았다.  참으로 허접하다. ㅡㅡ
이것은 정말 맛만 본것이고 TDD 를 적용해 보려면 일단 책을 하나 구입하여 정독 해봐야 할것 같다.

후에 책을 하나 구입하게 되면 공부해서 실제 프로젝트에 적용해 보고 이 글도 업데이트 해야겠다



'Library' 카테고리의 다른 글

TR1 유용한 클래스/함수 (1) ... tuple  (0) 2010.01.14
C++ TR1 설치  (0) 2010.01.08
Apache Log4cxx 0.10.0 윈도우에서 빌드 하기  (2) 2008.07.28
Boost 라이브러리 설치  (9) 2008.07.13
ACE Library 설치 & 설정 & 사용기  (0) 2008.04.30
Posted by 상현달
Library2008. 4. 30. 14:19

일반적으로 NetWork Programming 은 Native API 사용해서 많이 사용해 왔었다.
MFC 에서 지원하는 CSocket, CAysnSocket 이 있기는 하지만 Native API 의 많은 기능을 사용할수 없고,
window 이외에서는 사용하지 못하므로 간단한 윈도우 클라이언트나, 샘플 프로그램 정도에 사용 했었다.

수년전에 ACE 라이브러리가 있다는 말은 들었었고 책도 사두었지만, 이놈의 게으름 병 때문에 ...
요즘 여유가 좀 생겨서 책장에서 먼지만 쌓이고 있던 ACE 책을 꺼내서 보면서 정리 해 본다.

1, ACE 라이브러리 다운로드

먼저 라이브러리를 다운 받장.  다운로드 페이지

페이지로 이동하면 ACE 이외의 용어들이 등장한다. TAO, CIAO ....
TAO(The ACE ORB)는 잠시 검색해보니 CORBA 정의에 따른 구현물이라는데 먼지 모르겠다.
CORBA 라는 말이 들어가는걸로 바서는 분산 객체 관련된 구현물인것 같다.
CIAO는 검색해 봐도 별다른게 없당 ... 패스~~

하여튼 중요한건 ACE 만 받으면 충분하겠다.

2, 압축 풀기 & 파일 생성

다운 받았으면 적당한 위치에 압축을 푼다.
나는 알기 쉽게 C:\ACE_wrappers 폴더에 압축을 풀었다.

압축을 모두 풀었으면 파일을 하나 생성해야 한다.
파일경로는 C:\ACE_wrappers\ace\config.h  되겠다.

파일 내용은 다음과 같다.

사용자 삽입 이미지








#include "ace/config-win32.h"

// MSVC 의 standard C++ headers 파일을 원할 경우
#define ACE_HAS_STANDARD_CPP_LIBRARY 1
// MFC 사용할 경우
//#define ACE_HAS_MFC 1

3, ACE Library 컴파일

C:\ACE_wrappers 경로에 보면 많은 솔루션 파일들이 있다.

사용자 삽입 이미지















내가 지금 사용하는 VC 버전이 71 버전이다.
71 버전의 솔루션 파일은 두개가 있다. "ACE_wrappers_vc71.sln", "ACE_wrappers_vc71_Static.sln"
파일명을 보면 알수 있겠지만 "ACE_wrappers_vc71.sln" 로 컴파일 하면 OUTPUT 이 DLL 로 생성되고
"ACE_wrappers_vc71_Static.sln" 컴파일 하면 LIB 로 생성된다.

% 컴파일 하는데 시간이 꽤 걸린다. 점심 시간이나 담배타임을 이용해야 한다.


4, ACE Library 사용하기

샘플 프로젝트를 생성하고 설정한다.

% 헤더 경로를 설정한다.
사용자 삽입 이미지

% 라이브러리 경로를 설정한다.

사용자 삽입 이미지

% ACE 라이브러가 DLL 이 아닌 LIB 형태로 사용할경우 에만 적용
사용자 삽입 이미지


이제 설정은 다 끝났다. 간단한 샘플을 만들어서 컴파일 해보면 될것이다.

5, 간단한 사용기

먼저 ACE 를 체험해 보기위해 선택한 책은 C++ Network Programming (ACE와 패턴을 사용한 객체지향 네트워크 프로그래밍) 이란 책이다.
책의 내용은 정말 방대한 ACE 라이브러리를 체험만 할수 있을정도로 내용이 적다.
그리므로 사용기도 허접하고 정확하지 않을수 있음을 주의 !!!

ACE 라이브러리 레퍼런스는 여기를 참조하라   링크

장점
1, Network Native API 를 사용면서 기계적으로 해야 하는 코딩이 양이 많이 줄것으로 기대 된다.
2, windows, unix, linux 등 다중 OS 를 지원해야 한다면, 수많은 define 문을 피해 갈수 있을것으로 기대된다.
3, 이미 ACE 라이브러리가 디자인 패턴을 적용한 객체지향으로 설계가 되어 있어서 프로젝트 설계시 네트웍 부분은 손을 많이 줄일수 있을것이다. 추가로 객체지향 방법에 많은 공부가 될수도 있겠다.
4, ACE 라이브러리가  Network API 만 Wrapper class  로 만든것은 아니다 그 이외의 많은 기능이 있다.
데이타관리, 프로세스 스레드 관리, 등등...

단점
1, ACE 라이브러리가 제법 방대한 양을 가지고 있어서 이미 Network 프로그래밍에 익숙한사람들이 새로운 라이브러리를 습득하는데 걸리는 비용. (ACE 와 비슷하지만 약간 경량화 해서 나온게 boost 에서 만든 CISO 라는게 있다던데...)
2, 요즘 대세는 서버도 window 기반에서 많이 사용하는데 window IOCP 연동이 안된다는것. 대신 ACE 자체적으로 overrap IO 를 지원하는것 같긴하다.



'Library' 카테고리의 다른 글

TR1 유용한 클래스/함수 (1) ... tuple  (0) 2010.01.14
C++ TR1 설치  (0) 2010.01.08
Apache Log4cxx 0.10.0 윈도우에서 빌드 하기  (2) 2008.07.28
Boost 라이브러리 설치  (9) 2008.07.13
TDD(Test Driven Development)  (2) 2008.05.06
Posted by 상현달