완벽함이란 더 이상 무엇인가를 더할 것이 없을때 이루어 지는 것이 아니라, 더 이상 무엇인가를 뺄 것이 없을 때 이루어진다. - 앙뜨완느 마리 로제 드 생떽쥐페리
by 미친병아리 이글루스 피플 2006 이글루스 TOP 100 2007 이글루스 TOP 100
포토로그
메뉴릿
주저리 주저리
라이프 로그
VC++ 프로그래밍 관련 잡다한 정보 몇가지..
사내 게시판에 올렸던 내용중 모아둘만한 것들을 모두 내 블로그에 옮겨본다.. 왜냐면 여기에 모아두는게 더 찾기 편하니까.. 여러 게시판에 흩어져 있는 정보들은 오히려 더 검색이 힘든 단점이 있는 것 같다.. 왜 Microsoft Exchange 서버는 게시판 통합검색은 지원을 안하는지 모르겠다.. 흐흐.. 어쩜 우리가 사용하는게 5.5라서 그런지도 모른다.. 시대에 맞게 회사에서도 Exchange 서버를 최신 버젼으로 업그레이드 했어야 하는건데.. 냠냠..

지뢰찾기 프로그램 해킹??
이건 C# 코드이긴 하지만, 재미나게 읽은 내용이라 같이.. 지뢰찾기 프로그램의 메모리를 덤프해서 지뢰가 있는 곳을 보여주는 프로그램.. Minesweeper, Behind the scenes 나중에 나도 리버스 엔지니어링을 취미삼아 해보게 되면 참조하려고.. 참 신기하다 어떻게 그 위치가 지뢰 정보인줄 알았을까.. 어셈블리를 공부해야 하는 이유가 또하나 늘어나는 순간이기도 하다..

SEH 처리용 클래스
누메가, 바운즈체커로 유명한 개발자라 아는 사람들이 많을 거다.. Matt Pietrek의 멋진 클래스, 오래전부터 MSJ에 기고한 글들도 많기로도 유명한데 97년도에 기고한 글중에 참 유용한 클래스가 있었다.. 좀 더 일찍 알았으면 더 좋았으련만.. 프로그램이 비정상 종료되었을때의 콜스택을 덤프해준다.. 빌드시 map 파일을 만들어뒀다면 어디서 죽었는지 비교적 쉽게 찾아볼 수 있다.. 버그 잡는데 유용하다.. 특히 릴리즈 후 특정상황에서만 죽는 버그..
다른 용도로도 활용될 수 있는데, 클래스를 조금 수정하면 죽은 프로그램을 계속 재실행 시킬 수 있다.. IE 처럼.. 서버 프로그램의 경우는 유용할 수도 있다..

MFC DLL Ordinal 확인하기
우리 함수 내부에서 죽은 경우는 map 파일을 사용하여 함수 번지수를 확인해볼 수 있는데 MFC DLL 등에서 죽은 경우 좀 난감한 경우가 있다.. 다른 DLL들은 모르겠지만, MFC DLL의 경우는 다음과 같은 방법으로 확인이 가능..
VC++ 6.0의 경우
C:Program FilesMicrosoft Visual StudioVC98MFCSRCIntel
폴더에 보면 mfc42.def 라는 파일이 있음.

VC++ 7.1의 경우
C:Program FilesMicrosoft Visual Studio .NET 2003Vc7atlmfc
srcmfcintel (음.. VC++ .NET은 ATL과 MFC가 합쳐졌나 보군)
mfc71.def 파일을 보면됨.
위의 파일을 열어 ordinal 번호를 검색해보면 함수명이 뭔지 알 수 있음. 파일은 디버그용, 유니코드용 각각 조합별로 존재하니 적절한 것을 찾아보자.
바로 위에서 소개한 "SEH 처리용 클래스"를 사용할때도 필요한 경우가 많다..
물론 최상의 경우는 이런거 찾아보게되는 상황을 만들지 않는게 짱이다.. 버그 없는 프로그램 개발.. 인간이라 실수를 할 수는 있겠지만, 충분히 줄일 수 있을 것이다..

VC++ 6.0 STL의 버그픽스
템플릿을 많이 사용하는 C++ 개발자들에게는 VC++ .NET 이전 버젼들은 C++ 컴파일러도 아니다라고 할 정도로 표준 C++을 제대로 지원 못하기로 유명한데, 그나마 이 버그들을 직접 수정하면 좀 더 쓸만해진다.. 뭐, 여전히 부족하긴 하지만.. 제대로 쓰려면 VC++ .NET 2003을 사용해야 한다.. Fixes for Library Bugs in VC++ V5.0/V6.0
Microsoft는 도대체 왜 서비스팩에 이런건 포함 안시키는가 모르겠다.. 최신 서비스팩을 설치했어도 이 버그픽스는 직접 해야 한다.. 생각보다 노가다다..

VC++ 6의 리모트 디버깅 활용하기
사용해보면 무척 편리한데 의외로 모르는 사람들이 많다.. 특정 환경에서 이상하게 동작하는 경우 재현이 힘들면 그 PC에서 직접 디버깅을.. 환경 세팅이 그다지 어렵지 않으니, 재현시키려고 고생하는 것 보다 경제적이다..
Remote Debugging in MSVC++ 6.0 - Step by step in the OnPaint message handler
간혹, 어떤 사람들은 리모트 디버깅이 VS .NET 부터나 가능한 것으로 아는 경우가 있는데, 그렇지 않음.. VC++ 6부터 지원되던 기능임..

재미난 템플릿 클래스, 하위 클래스인지 여부 판별
누가 작성했는지는 몰라도, 오.. 정말 멋진 코드입니다.. 놀라운 창의력..
#include <iostream>

template<typename Derived, typename Base>
class IsDerivedFrom
{
    class No
    {
    };

    class Yes
    {
        No no[2];
    };

    static Yes Test(Base*);    // 선언만..구현은 필요없음
    static No Test(...);       // 역시 마찬가지

public:
    enum { Is = sizeof(Test(static_cast<Derived*>(0))) == 
        sizeof(Yes) };
};

class A
{
};

class B: public A
{
    int a;
};

class D
{
};

void main()
{
    IsDerivedFrom<B,A> p1;
    IsDerivedFrom<D,A> p2;

    std::cout << p1.Is << std::endl;
    std::cout << p2.Is << std::endl;

    getchar();
}
누구도 생각지 못한 이런 생각들을 하는거 보면, 정말 창의력이 필요하다는 생각이 든다.. 창의력은 두고 두고 보답한다는데 나도 씽크빅 같은 것으로 다시 공부를 시작해 봐야하나..

C++에서 사용하는 캐스팅 연산자
C++의 새로운 캐스팅 연산자들이 등장하게된 이유를 자세히 설명해준 글.. 두번째 글은 C++의 창시자 비얀 스트로스트럽의 글인데.. 좀 짧다..
Casting in C++: Bringing Safety and Smartness to Your Programs
What good is static_cast?
음.. 생각보다 읽기 힘든 내용이다.. 아무래도 내 C++ 공력이 딸려서 인듯.. 이해하기가 힘들다.. 난 쉽고 친절한 설명이 좋은데.. 흐흐흐..

헝가리언 표기법이 C++에서 좋지 않은 이유
이제 헝가리언 표기법은 C와 Win32 API로 프로그래밍을 하던 시대의 유물로 남는가.. 하긴 알고보면 헝가리언 표기법은 챨스시모니가 Microsoft에 입사하기도 전에 만든 것 같은데.. 무자게 오래된 관행이긴 하다..
Conversations: Hungarian wartHogs
아직까진 내게도 더 편하긴 한데, 자바나 C# 같은데를 봐도 굳이 그럴 필요 없어 보이기도 하고.. 암튼 C++에서는 템플릿 때문에 별로라는 이야기인것 같음..

auto_ptr에 관련된 읽을거리
사실 난 그간 auto_ptr을 잘 사용하지 않아 왔기 때문에 별로 관심이 없었다.. 하지만 주위에서 그래도 쓰는게 훨 좋다는 이야기를 하도 많이 들어서..
Using auto_ptr Effectively
GotW #25: SPECIAL EDITION: auto_ptr
GotW #42: Using auto_ptr
GotW #56: Exception-Safe Function Calls
GotW #62: Smart Pointer Members
Exceptional C++ - More auto_ptr: auto_ptr and Exception Safety
Conversations #1: Re-membering auto_ptr
뉴스그룹에서 이런 저런 이야기 나누며 나온 링크들을 모조리 모아둔 것.. 이중 몇몇 내용들은 아마 Herb Sutter의 책으로도 소개되었을거다..

Template Metaprograms
오.. 아주 재미난 코드입니다.. (관련자료 보기)
// Template Metaprograms
template < int N >
class Factorial
{
public:
    enum { value = N * Factorial < N-1 >::value };
};

class Factorial < 1 >
{
public:
    enum { value = 1 };
};

int main(int argc, char* argv[])
{
    std::cout << Factorial < 10 >.value << std::endl;
    return 0;
}
실행시간이 아닌 컴파일 타임에 재귀호출이 일어나네요.. 마치 인터프리터처럼.. 후후.. 템플릿 전문화를 사용하여 1! 예외처리를 했구요..

내 소스코드가 C++ 표준에 맞는지 궁금하다면
여기에서 확인해보자.. 간편히 확인 가능하다..

C++을 안다는 것은
뉴스그룹에서 읽었던 재미난 글을 옮겨보자..
"사람의 언어처럼, C++ 언어를 안다는 것은 단지 문법과 규칙을 안다는 것을 뜻하지는 않는다. '관용구'도 알아야 한다."

"As with spoken languages, there is more to knowing the C++ language than just knowing the grammar and the rules. You must know the idioms."
- Jim Hyslop and Herb Sutter, "Virtually Yours"

이런 글들을 읽으면서 난 아직도 멀었다는 생각이 드는건, 아직 경력과 경험이 더 필요하다는 것이겠지.. 갈길은 여전히 멀고도 멀다.. 흐흐흐.. 그러나, 뽈레뽈레.. 쿠쿠쿠..

by 미친병아리 | 2004/01/26 00:18 | ▣ 컴터야그 ▣ | 트랙백(7) | 덧글(14)
트랙백 주소 : http://madchick.egloos.com/tb/237931
☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]
Tracked from 아침햇살을 맞으며 at 2004/01/26 14:33

제목 : VC++ 프로그래밍 관련 유용한 정보
VC++ 프로그래밍 관련 유용한 정보 몇가지.. 나도 이제 Windows 플랫폼에 지긋히 몸을 담아야 할 사람으로써.. 열심히 하자!...more

Tracked from ☆★☆★수호천사★☆★☆ at 2004/01/27 02:53

제목 : VC++ 관련 유용한 잡동사니들
VC++ 프로그래밍 관련 잡다한 정보 몇가지.. 현재 필요한 것들도 있고... 나중에 알아야 할것들도 있는듯 하다... 이런것들을 금새 이해 할수 있는 수준이 될려면... 크~~~ 천천히 천천히 하자... 급할수록 돌아가라는 말이 있지 않은가... ...more

Tracked from In The Life .. at 2004/01/27 13:06

제목 : VC++ 프로그래밍 관련 잡다한 정보 몇가지..
프로그래밍을 시작할 무렵 미친병아리(madchick)님의 홈페이지에서 많은 정보를 얻기 시작하여 지금까지도 많은 정보를 얻고 있다. 일주일에 한번정도는 방문하여 새로운 지식 + 정보를 얻고 있는데. 이번에는 VC++ 프로그래밍 에 관련된 정보 몇가지를 얻을수 있었다. http://madchick.egloos.com/237931/...more

Tracked from CN의 작업장 at 2004/01/28 22:34

제목 : Visual C++ 6.0 STL의 패치입니다.
Visual C++ 6.0에 포함된 STL에는 버그가 꽤 많습니다. 그런데 서비스팩을 깔아도 그 버그들이 패치가 되지 않습니다. 서비스팩은 STL에 대해서 지원하고 있지 않습...more

Tracked from 내게로 와~ at 2004/02/26 13:48

제목 : VC++ 프로그래밍 관련 유용한 정보
미친 병아리님 ...more

Tracked from ~★~ 우하하!!~ 프.. at 2004/11/07 00:25

제목 : VC++ 프로그래밍 관련 정보(STL)
VC++ 프로그래밍 관련 잡다한 정보 몇가지.. 이 중에서 VC 6.0의 STL 버그를 수정한 파일을 압축해서 올려놓는다. 이 파일들은 미친병아리님이 직접 타이핑한 것이다. 함께 첨부된 mhtml 파일 안에 덮어쓰기할 디렉토리 정보가 있다. 내려받기...more

Tracked from Seize the day at 2004/11/17 13:56

제목 : [펌]VC++ 프로그래밍 관련 잡다한 정보 몇가지..
VC++ 프로그래밍 관련 잡다한 정...more

Commented by choissi at 2004/01/26 04:12
저는 Smart Pointers 관련 자료를 정리 해두었는데,
http://www.ezdoum.com/stories.php?story=02/04/30/2036878
미친병아리님 auto_ptr관련 내용을 퍼값니다.

Commented by 루저 at 2004/01/26 19:09
망할 STL 때문에 VS.NET으로 옮겨 갈까 한참을 고민했지만, 단축키가 바뀌고, 클래스 위저드가 없어진 것 까닭에 아직도 VS6를 쓴다지요. 언젠가는 바꿔야 할 텐데...
Commented by kindlion at 2004/01/27 02:55
좋은 내용인듯...
지뢰찾기 같은 것은 평소에 해보고 싶었던 것들인데...
ㅋㅋㅋ 재밌을꺼 같네요~~~
빨리 이정도의 실력을 쌓아야....^^
Commented by 이호영 at 2004/01/27 09:45
아아~ 고수에의 길!
Commented by 狂風 at 2004/01/27 17:08
우쓰.. 모르는게 많네요. 감사~ 아니 퍼갈까..
Commented by 조병완 at 2004/01/28 11:46
처음으로 글 남기는것 같네요.
지뢰찾기 리버싱을 하는 이야기가 나와서 말인데요.
제가 가끔 취미생활로 크랙을 공부하고 있는데요.
IDA Pro를 이용해서 리버스 엔지니어링 세계로 한번 빠져보세요 정말 잘 만들어진 쉽게 분석 가능하게 만들어주는 프로그램이예요... 소프트아이스에 버금가는...
언제 제 홈페이지에 이와 관련된 정리를 좀 해야하겠는데...
저는 왜이리 정리가 잘 안되는지 ㅜ.ㅡ
Commented by 99koRn at 2004/01/28 20:03
좋은 정보 잘봤습니다. 뭐 아직 멀었구나 싶습니다만..머리에서 정리가 잘 안됨 -_-;
오늘 깜짝놀랬습니다.데브피아 온라인세미나를 자주는 아니지만 아주 가끔은 이용하는 편인데 .NET Framework관련 세미나를 보다가 낯이 익은 사람같아서 이름을 보니 미병님이더군요.정작 본명은 잘 몰르고 있었습니다만..-_-a
뭐 세미나도 잘보고 좋은 정보 감사합니다
Commented by 미친병아리 at 2004/02/14 18:13
choissi님 : 핫.. 좋은 정보 감솨.. 네.. 얼마든지 퍼가셔도 됩니다..

루저님 : 흐흐.. 저두 아직까지는 VC++ 6.0으로..

kindlion님 : 네.. 지뢰찾기 기사는 참 재미나죠?

이호영님 : 걍, 살다 되면 좋고 안되면 말고.. 고수가 인생의 목표는 아니니..

狂風님 : 네.. 푹푹 퍼가세여~

조병완님 : 자주 놀러오셔요~ 크랙.. 재미난 분야죠.. IDA Pro라.. 함 구경해봐야겠네요.. 근데, 소프트아이스도 전혀 사용할 줄을 몰라서리.. 흐흐..

99koRn님 : 헉.. 거, 엄청 벅벅대며 제가 첨으로 많은 사람 앞에서 떠들어본건데.. 데브피아에 아직도 올라가 있는가 보군요.. 흐흐..
Commented by at 2004/02/26 11:47
좋은 정보 감사합니다. :)
Commented by 미친병아리 at 2004/02/28 20:27
곤님 : 네.. 반갑습니다.. 자주 놀러오세여~
Commented by CN at 2005/04/06 14:49
Modern C++ Design의 Andrei를 볼때마다 어떻게 저런 코드를 짜지? 란 생각이 들더군요. 템플릿을 잘했으면 좋겠습니다. ㅜㅜ
Commented by 볼세르크 at 2005/04/07 10:12
Factorial 소스 GCC 버젼으로 고쳤습니다.

#include <iostream>
using namespace std;

template < int N >
class Factorial
{
public:
enum { value = N * Factorial < N-1 >::value };
};

template <>
class Factorial < 1 >
{
public:
enum { value = 1 };
};



int main(int argc, char* argv[])
{
std::cout << Factorial < 10 >::value << std::endl;
system("PAUSE");
return 0;
}
Commented by htna at 2005/04/08 00:57
좋은글 읽구갑니다. 일부 퍼갑니다. *^^*
Commented by 미친병아리 at 2005/04/23 23:15
CN님 : 네.. 정말 부럽지요.. C++ 전문가들 사이에서도 스타인데요..

볼세르크님 : 좋은 정보 감사합니다..

htna님 : 네.. 반갑습니다..

:         :

:

비공개 덧글

Creative Commons License

< 이전페이지 다음페이지 >


이글루 파인더
카테고리
태그
최근 등록된 덧글
최근 등록된 트랙백
마이클잭슨 사망 소식들..
by Bluesky
후아유(2002) : 2000년대 ..
by 생활의 발견
知的人의 생각
by peter_c's me2DAY
톰캣!!
by 나두미키님의 이글루
정규 표현식 완전 해부와..
by 김재호의 디지털보단 아..
HTML 소스 제대로 보자,..
by [부동산]개발.정비구역
내 손안의 PC - 자바가 ..
by 上善若水
Stringbuilder OutOfMe..
by Pinch of Smack for D..
웹 오피스 정리
by Web N Bizr
네이버 블로그 검색 - ..
by InformationRedesign
에반게리온: 서 - 사운드..
by LG전자 XCANVAS홈..
블로그에서 수익은 기대..
by IT, 모바일, 엔터테..
"다음으로 지원한 이메일..
by 민노씨.네
알라딘 TTB2 둘러보다
by NKOKON's Web-Note
문답 # ActiveX 문답
by 아이리스가 만개한 언덕..
미친병아리의 생각
by madchick's me2DAY
나의 에반게리온, 그리..
by 공포영화를 좋아하는 블로그
소비지향의 대학축제
by 세상을 보는 또 다른 시선
러브양이님에 의해 도서..
by 도서가격비교 와비
덕평 자연 휴게소
by 지민아빠의 해처리
이글루 링크
EBC (Egloos Broad..
erehwon.LAB
About willy
Living Loving and L..
修身齊家萬事成
【 이름쟁이™의 눈으로 】
개 풀 뜯어먹는 소리
觀鷄者의 망상 공간
Oz in Wonderland
김명신의 즐거운 하루
Clip for 눈love
함께.. 늘 그렇게..
荷花(hehua)
소스코드위를 걷다.....
가로등 프로젝트
zoops 이야기
까모의 룰루랄라~
▒ 제닉스의 사고뭉치 ▒
河伊兒의 고물상
가로수들은 여전히 제자..
餘分D: physics and fun
hansang's world is no..
길고양이 이야기
어쨌건간에 흘러가는 者
선인장 일지
~★~ 우하하!!~ 프로..
without coffee
Lady Nariel's Golde..
검색엔진 루씬 Lucene..
fire, walk with me
디지털을 말한다 by oojoo
♠후리지아 향기처럼♠
일상 생활 속의 파편들
뽐뿌 inside
책읽는 엄마의 보석창고
Mono log
blogger jely
반복되는 일상속의 비정..
골룸에세이
질풍 17주의 머브러브 라..
maniacs
AURA's Showcase
ozzyz review 허지웅..
디제의 애니와 영화 이야기
ANTIEGOIST : GyuHo..
미달이의 육아일기
All about IT Trends
Suicide Solution
얼음집
외계인 교차점
모기불통신
Trip
찬별은 초식동물
숲 속 작은 섬
snowcat blog
전도서에 바치는 장미
한글이 꿈틀
이우진의 UCC 제작실 ..
INVENT
위로..위로..위로..
woody's film review
Show me the money
전자음악 알아보기
sunny's store
이규영 연예영화 블로그
◀ M.HOUSE - Masade..
공순이 감성로그
쉽니다.
roadster
무디의 무책임한 세상
이제 다시... 바라보다.
random life
Beyond Web
ricordati di me
Jania's Blog
Gaious 功房 네오베..
애자일 이야기
- Last Paromix -
T9T9 Research Center
양군 블로그
소프트웨어 이야기
chef's garden
Requirement Enginee..
티오
고재관의 블로그
mocca
yundream의 프로그래..
통TON
lalou
생각이 없는 블로그
이전 블로그
rss

skin by 이글루스