codeheart 위치로그  |  태그  |  미디어로그  |  방명록
icon 분류 전체보기 에 해당하는 글74 개
2009.11.06   Boost 를 손쉽게 설치하자. 컴파일 된 버전으로.
2009.11.03   reactor, proactor 패턴
2009.10.22   C++ Decorated 된 함수명 undecorate 하기
2009.10.22   MAPFILE 생성하기
2009.10.21   포스트모템 디버깅
2009.10.20   컴파일/링크/런 타임 최적화 전략
2009.10.16   Sysinternals Suite - 각종 유용한 윈도우 툴들
2009.10.16   코드 상으로 debug break 하기
2009.09.13   내가 코딩할 때 사용하는 폰트..
2009.07.04   ATL/WTL


icon Boost 를 손쉽게 설치하자. 컴파일 된 버전으로.
개발/VC++ | 2009. 11. 6. 11:34

http://www.boostpro.com/download

부스트는 기본적으로 템플릿 라이브러리 집합이라서 대부분은 컴파일된 버전이 필요없다.
하지만, 일부 라이브러리는 플랫폼에 특화 적용되었기 때문에 컴파일 부담을 줄이기 위해 .lib 화되는 라이브러리가 있다.
다만 가입이 필요한 듯 싶다. 처음 다운로드 할 때는 가입하지 않고도 했던 것 같은데.


arrow 트랙백 | 댓글



icon reactor, proactor 패턴
개발/VC++ (네트워크) | 2009. 11. 3. 14:09

reactor 을 통한 dispatch service (message handling)
http://cafe.naver.com/multism.cafe?iframe_url=/ArticleRead.nhn%3Farticleid=3490

reactor vs proactor
http://www.anfamily.net/mcsong/301


arrow 트랙백 | 댓글



icon C++ Decorated 된 함수명 undecorate 하기
개발/Windows 디버깅 | 2009. 10. 22. 12:20

Platform SDK(Windows SDK) 의 undname 유틸 이용하기
>> undname "?MapDLLHappyFunc@@YAPADPAD@Z"

arrow 트랙백 | 댓글



icon MAPFILE 생성하기
개발/Windows 디버깅 | 2009. 10. 22. 12:07

1. LINKER 에서 /MAP 옵션
2. DUMPBIN /EXPORTS <modulename>

arrow 트랙백 | 댓글



icon 포스트모템 디버깅
개발/Windows 디버깅 | 2009. 10. 21. 18:56

자동으로 덤프하게 하여 디버깅하는 기법으로 실전 윈도우 디버깅을 참고
이를 이용하여 보다 신속히 오류나는 상황을 캐치할 수 있다.

알아볼 점
1. 디버깅/릴리즈 배포판에 따른 메모리 덤프의 차이는 발생하지 않는가? 클라이언트 버젼에 따른 차이는 충분히 발생할 수 있다.
2. C9 에 자동 덤프 시스템이 내재되어 있는가?


arrow 트랙백 | 댓글



icon 컴파일/링크/런 타임 최적화 전략
개발/VC++ (윈도우) | 2009. 10. 20. 21:39

컴파일 타임

링크 타임
1. Incremental Link 을 켜자
- /OPT:REF 와 /OPT:ICF 를 꺼야 한다.
- /OPT:REF ; 참조되지 않는 함수를 제거한다. 여기서 OBJ 생성시 오래걸린다. 물론 대신 런타임 성능은 코드 간소화로 인해 개선될 수 있다.
- /OPT:ICF ;
- 요약1 ; 런타임 성능이 중요한 배포버전에는 적용하면 안되며, 개발용 버전(디버그/개발용 릴리즈)에 적용할 만 하다.
- 요약2 ; 물론 디버그 버전에서 기존 것보다 너무 느려진다면 테스트에 지장이 생기므로 고려해야 한다.

런 타임
1. /C7 이 있다면 없애고 PDB 파일 형식으로 디버깅 심볼을 저장하도록 수정한다. 이는 실행파일 크기를 줄여주며 성능 향상으로 이어진다. 물론 릴리즈 버전 실행파일에 디버깅 정보가 전혀 없다면 효과가 없을 수도 있다.

2. WST(Platform SDK 에 있음) 나 SWS(이 것이 더 최신 정보) 와 같은 도구를 이용한다면 자주 사용되는 함수를 바이너리 앞으로 놓게되어 성능향상을 가져다 줄 수 있다.

'개발 > VC++ (윈도우)' 카테고리의 다른 글

windows 계의 apt-get > chocolatey  (0) 2013.09.10
MinGW MSYS ls 컬러링/한글안깨지게  (0) 2013.05.23
Windows SDK 각종 문자열 API  (0) 2010.03.24
ATL/WTL  (0) 2009.07.04

arrow 트랙백 | 댓글



icon Sysinternals Suite - 각종 유용한 윈도우 툴들
개발/Windows 디버깅 | 2009. 10. 16. 02:57

파워유저 / 개발자에게 유용한 툴로 디버깅 시에도 유용할 수 있다.
Process Explorer(procexp) 는 작업관리자를 대체할 수 있는 용도로 매우 쓸모 있다. (FileMon 과 RegMon 을 통합한 기능)
Spy+ 과 비슷한 Process Monitor..

http://technet.microsoft.com/en-us/sysinternals/bb842062.aspx

arrow 트랙백 | 댓글



icon 코드 상으로 debug break 하기
개발/Windows 디버깅 | 2009. 10. 16. 02:45

assert(false) 할 때도 내부적으로 break 가 일어나는데,
이러한 break 는 intrin.h 에 정의된 __debugbreak 함수를 호출한다.
이는 __asm { int 3 } 과 동일하다. intrinsic 헤더인 것을 봐도 동일한 것으로 추측.

http://msdn.microsoft.com/ko-kr/library/f408b4et%28en-us,VS.80%29.aspx


arrow 트랙백 | 댓글



icon 내가 코딩할 때 사용하는 폰트..
개발/기본 | 2009. 9. 13. 14:45

나는 Visual Studio 로 코딩할 때(다른 툴도 거의 마찬가지지만) 꽤 오래전 부터 Courier New 를 사용했다.
아주 초창기 시절에는 bitmap 폰트인 Courier 를 사용했지만, 거의 대부분은 Courier New 와 함께 한 것 가다.

폰트란 생각보다 중요한데 소수의 생각일 수도 있겠지만, Visual Studio 한글판(?)의 기본 폰트인 돋움체는 코딩할 때 멋도 없고 감도 나지 않는다. 진정한 목수는 연장탓을 하지 않는다고 하지만.. 음(?)

본론으로 돌아가서, Courier New 는 벡터 폰트임에도 불구하고 alias 을 안 메기는 것이 훨씬 깔끔하다.
비록 Courier 와 차이가 거의 없어져버리지만..
그렇지만 비스타 시절부터 현재 사용하는 윈도우7 까지 윈도우 폰트 설정은 XP 와 달리 기본적으로 alias 으로 셋팅되어 있다.
이러한 설정은 Visual Studio 에서는 따로 설정할 수 없으므로, 결국 윈도우 셋팅에서 alias 을 제거하거나
Visual Studio 에서 alias 을 한 상태로 사용해야만 한다.
하지만, alias 이 메겨진 Courier New 는 가독성이 그리 높지 않다. 약간 뿌옇기 때문에..
기본적인 폰트인 돋움체로 가는 게 오히려 Courier New 보다 나을지도 모르겠다는 생각이 들었지만 좀 더 찾아보기로 했다.
우선 코딩 폰트는 Fixed-width fonts 여야 한다. 꼭 그럴 필요는 없지만, 편집시 용이하고 깔끔하기 때문이다.
후보는 다음과 같았다.
Fixedsys, Courier, 돋움체, 네이버 코딩 폰트, Consolas, Lucida Console, Lucida Sans Typewriter..
안타깝게도 Fixed-width 폰트임에도 불구하고, 대부분의 Fixed-width 는 한글폭이 영어 폭의 2배랑 같지 않았다.
이는 Visual Studio 개발자가 2바이트 시장을 충분히 고려하지 않아서 생긴 문제점으로 보인다.
누가 좀 피드백 좀 넣어줬으면 하겠는데..
결국, 선택의 폭은 급격히 줄었다. Consolas, Lucida Console 역시 괜찮은 폰트임에도 불구하고 이런 점 때문에
Lucida Sans Typewriter 를 현재까지 사용한 Courier New 의 대체 폰트로 선택했다.
지금까지 몰랐는데, vector 폰트지만 더 진하고 가독성이 좋아보인다. 그리고 폰트 자체도 각이 딱딱 진 것이 아주 마음에 든다. 한 때 네이버 코딩 폰트 등 다른 폰트들도 써봤는데, 결국 Courier New 로 돌아왔었는데.. 과연 이 폰트로 얼만큼 버틸 수 있을지?? ㅎ


arrow 트랙백 | 댓글



icon ATL/WTL
개발/VC++ (윈도우) | 2009. 7. 4. 06:08

WTL 은 Windows Template Library 로,
STL 과 같이 Template 형식의 순수 .h 파일 라이브러리다.
다만 그 목적은 윈도우 어플리케이션 프레임워크인 MFC 와 유사하다.
ATL 과 WTL 사이의 역사는 잘 모르겠지만, 아마도 ATL 이 먼저인 것 같다.
애초에 MFC 개발자들이 구조적으로 MFC 를 일반화하기 위해 내부 코어를 템플릿화시키지 않았을까?
그래서 ATL 이 탄생했고, 과거의 MFC 와 달리 현재의 MFC 는 하위 층에 ATL 을 사용하고 있다.
또한 ATL 을 확장하여 WTL 이 탄생하였는데 ATL 은 MFC 의 베이스를 구성하고 있지만
독립적으로 윈도우 프로그램을 작성할 수는 없다.
(보다 정확히 말하자면 간단한 프로그램을 만들 수 있으나, 고급 수준의 기능을 사용하기에는 다소 부족하다.)
따라서, ATL 의 특성을 바탕으로 MFC 을 대체할 만한 라이브러리인 WTL 가 탄생된 것 같다.

분명히 WTL 은 MFC 에 비해 여러모로 우수하지만, 몇가지 단점으로 인해 MS 가 버린 듯 하다.
버렸다는 얘기는 오픈소스화했다는 것이고, 지금 오픈소스로 명맥이 유지되고 있다.
즉, MS 의 직접적인 지원(개발툴에 포함되는 등의)은 없다.

MFC 에 비해 WTL 이 가지는 장점은, 일단 외부 DLL 이 필요없다.
단순히 API 를 템플릿 차원으로 랩핑했기 때문에 부가적인 오버헤드가 발생하지 않는다.
그리고, 최소한의 가상 메쏘드를 사용하였고 가능한 많은 부분을 제네릭하게 작성하였다.
이러한 점은 많은 이점을 낳는다. 코드의 독립성이 뛰어나게 되며, 재사용성이 증대된다.
또한, 생성되는 실행파일 용량이 훨씬 작고, 성능도 더 우수하다.
게다가 MFC 보다 후에 등장해서 그런지 구조적으로 조금 낫다.
따라서, WTL 은 MFC 에 비해서는 타이핑량이 줄고, 간단한 소스를 만든다.
API 를 아주 추상적으로 랩핑하지 않았음에도 IDE 의존도가 높은 MFC 에 비해서 어느 정도 코드 생산성이 있어 보인다.
(구조적으로 조금 낫다는 것은 WTL 역시 MFC 의 베이스를 깔고 있는 ATL 를 확장한 것이라, 많은 부분 호환적인 소스가 보인다. 만일 이런 부분을 버렸다면, WTL 은 구조적으로 더 발전될 수도 있었을 것 같다.)

그렇지만, WTL 은 MFC 보다 C++ 에 대한 더 높은 이해를 필요로 한다.
그리고 제네릭, 가상함수 등의 지식도 어느 정도 있어야 한다.
사실 MFC 나 ATL/WTL 이나 C++ 을 온전히 모르고 쓸 수 있도록 배려한(?) MS 개발자들의 트릭들이 존재하기
때문에 모든 문법 사항을 필수적으로 알아야 하는 것은 아니다.
그렇지만, 확실히 WTL 코드는 C++ 입문자들이 접하기에는 다소 어려울 듯 싶다.
이 점이 MS 가 WTL 을 포기한 이유인 듯 싶다. (내부적으로 유사한 ATL만을 공유하는듯)

하지만 WTL 에도 어느 정도의 꼼수와 트릭이 제공되는 듯하다.




arrow 트랙백 | 댓글



[PREV] [1][···][4][5][6][7][8] [NEXT]
관리자  |   글쓰기
BLOG main image
code heart story
분류 전체보기 (74)
생활 (0)
잡담 (8)
컴퓨터 (11)
개발 (52)
Total :
Today :
Yesterday :
rss
위치로그 : 태그 : 방명록 : 관리자
코드하트's Blog is powered by Daum / Designed by plyfly.net