본문 바로가기

프로그래밍

디버깅 잘하는 방법 처음부터 버그 없는, 모든 예외 사항에 대해 유연한, 미래의 환경 변화에도 에러 없는, 에러의 원인과 해결 방법을 자세히 알려주는 완벽한 프로그램을 만들 수 있다면, 얼마나 좋을까~?? 하지만, 현실에서는.....많은 버그/에러를 접하게 된다. 실무에서는 특히, 자신이 혼자 작성한 소스보다는..... 선임자가 미리 만들어 놓은 프로그램 코드를 수정하거나, 여러 사람이 함께 개발하는게 대부분이다. 그래서, 버그 발생의 확률은 더 높아진다. --; 더구나...자신이 작성한 소스에서의 버그를 해결 못해서...힘들어 하는 경우가 대부분이다. ^^;;;; 디버깅 기술은 printf(), TRACE() 같은 걸로 해도 되고, 로그 파일을 이용해도 되고, 개발툴에서 제공하는 TRACE 기능을 이용해도 된다. 의심되는.. 더보기
비스타, 비주얼 스튜디오 구버전 지원 불가 마이크로소프트의 차세대 운영체제인 윈도우 비스타가 구 버전의 비주얼 스튜디오를 지원하지 않는다. 따라서 비스타 용의 애플리케이션 개발을 진행하는 개발자들은 비주얼 스튜디오 2005로 업그레이드를 해야 할 것이라고 마이크로소프트가 밝혔다. 비스타 호환 애플리케이션을 개발하는 개발자들은 비주얼 스튜디오 2002, 비주얼 스튜디오 2003을 비스타에서 사용할 수 없게 된다고 마이크로소프트는 밝혔다. 이 사항은 마이크로소프트 개발자 사이트인 마이크로소프트 커넥트를 통해서 비주얼 스튜디오 2005 서비스팩1이 공개되면서 발표되었다. 마이크로소프트는 비스타가 WPF(Windows Presentation Foundation), 에어로글래스 등의 새로운 동작방식으로 인해서 이를 반영한 개발 환경이 필요하며 이것이 구형.. 더보기
CE 5.0 에뮬레이터 때문에 하드 날라갈뻔 했다 EVC++ 4.0이랑 Win CE 5.0 (.NET) 에뮬레이터를 사용하고 있었는데... 갑자기 컴퓨터가 거의 다운 직전이고.....CE 에뮬레이터의 CPU 점유율은 99%에 육박하고... 리소스 부족으로...최악의 상태인... 드라이브가 모두 접근이 불가능해지는 사태까지 이르렀었다. ㅠㅠ (드라이브 핸들이 모두 잠긴 듯 했다.) C / D 드라이브 모두 접근 불가능이라서, Windows의 환경은 물론, EVC Workspace 파일 및 모든 프로그램이 오작동 했으며, 시스템 종료하는데만.....10분이 걸렸다.ㅠㅠ 하드 디스크에 불량섹터가 생겼을까봐, 불안불안해하며....안전모드로 부팅했고, 디스크 검사까지 했다. (디스크 검사 총 1시간) 다행히 하드 디스크에는 문제가 없지만.... 작업 표시줄이 먹.. 더보기
프로그래밍을 하는 PC에서는...되도록이면 윈도우 계정을 영문으로.. 예전엔, 계정을 무조건 영어로 했었지만,요즘 Windows XP에서는....보통 로그인하는 계정 이름을 한글로 한다. (보통 자신의 이름..) (한글로 해도 불편할게 없으므로~)나도 얼마전에 산 VAIO 노트북의 계정 이름을 내 이름으로 했다. 하지만.....eMbedded Visual C++로....CE 5.0용 프로그램을 빌드했더니 다음과 같은 에러가 발생하였다.------------------------------------------------------------------------------ CVTRES : fatal error CVT1102: out of memory; 41 bytes required LINK : fatal error LNK1123: failure during convers.. 더보기
C, C++의 포인터...무조건 악몽만은 아니다. 이번에 OOP 수업을 듣는데, C나 C++의 포인터 얘기만 나오면 교수님은 항상 Nightmare 라고 하신다.(영강 수업;;) 물론 C나 C++로 작성한 프로그램에서...포인터 연산 에러는 매우 빈번하다. 조금이라도 실수하면 프로그램이 금방 죽기도 한다.. 또한, 포인터가 없는....JAVA가 더 안정적이라 할지도 모르겠다. 하지만, 나는 무조건 포인터 = Nightmare란 생각은 안 한다. 포인터를 잘만 쓰면 꽤 유용하고 재미가 있기도 하다.^^ JAVA 코딩을 하다보면......가끔 포인터가 없는게, 아쉬울 때도 있다. (아마도 이건 내가 C/C++에만 익숙해져서겠지만.....^^;;) 포인터가..어렵고, 에러 발생률을 높이기는 하지만, 무조건......포인터 개념을 거부하거나 및 기피하는 모습이.. 더보기
[MFC]CWebBrowser2(웹브라우저 컨트롤)에서 POST 방식으로 데이터 넘기기 소스 많은 시행착오 끝에....성공했다. ㅠㅠ 다이얼로그에 웹브라우저 컨트롤인 CWebBrowser2를 삽입하고, CWebBrowser2 에 쿠키를 설정하려고 했으나 실패(CInternetSession과 연결 시도 실패)하고, 결국 POST 방식으로 하려했으나....여러번 실패 끝에 성공을 하였다. Post Data를...일반 문자열 BSTR이 아닌 VT_ARRAY로 해야하는 것을 간신히 찾았다. 참고로 m_ctlWebBrowser의 형은 다음과 같다. CWebBrowser2 m_ctlWebBrowser; --------------- 소스 --------------- Written by dukgun.com(덕근닷컴) CString strUrl = _T("http://www.dukgun.com/test.asp".. 더보기
(MFC 6.0) CInternetSession::SetCookie의 첫번째 파라미터때문에 발생했던 버그 CInternetSession::SetCookie Sets a cookie for the specified URL. static BOOL SetCookie ( LPCSTR pstrUrl, LPCTSTR pstrCookieName, LPCTSTR pstrCookieData ) 2번째와 3번째 파라미터는 LPCTSTR형이므로, 비유니코드에서는 char* 형으로, 유니코드에서는 WCHAR*형으로 넣으면 되는 것이다. 하지만, Host 주소가 들어가는 첫번째 파라미터는 LPCSTR...... 유니코드인 경우, WideCharToMultiByte를 통해 멀티바이트로 바꿔서 넣어야만 한다???? 프로젝트 셋팅에서 2000과 XP의 경우에는 _UNICODE가 Define되어 있는 상태이다. 실험 결과 --------.. 더보기
[Visual C++]data_seg pragma를 이용하여 DLL과 데이터(메모리) 공유하기 DLL을 Application(EXE)이나 다른 DLL과 연동하여 사용할 때~ DLL 내부에서 생성한 데이터(메모리)를 외부 프로세스에서 공유해야 될 필요가 생길 수도 있다. DLL과 데이터를 공유하기 위해서는 2가지 방법이 있다. 1. data_seg pragma를 사용하여 공유할 섹션 만들기 2. 메모리 맵 파일 (memory mapped files)을 사용하기 1번째 방법을 사용해 봤는데, 간단해서 사용하기 쉽다. 1. 우선은 공유할 데이터(변수)를 Global 변수로 선언하고 #pragma data_seg를 다음과 같이 추가하기 #pragma data_seg("SHAREDATA") int g_nCount = 0; char g_szText[12] = "hello world"; #pragma data.. 더보기
Microsoft 프로그래밍 언어 4종 비교 분석 Microsoft 프로그래밍 언어Prashant Sridharan 수석 제품 관리자2003년 7월목차Microsoft .NET의 이점 Visual Basic .NET Visual C++ .NET (US) Visual C# .NET Visual J# .NET 요약Microsoft .NET의 이점Microsoft .NET Framework는 차세대 응용 프로그램과 XML 웹 서비스를 구축 및 실행하기 위한 필수 Microsoft Windows® 구성 요소입니다. .NET Framework는 기업에서 바로 사용할 수 있는 표준 기반의 생산적인 다국어 환경을 제공합니다. 이 환경은 개발을 단순화하고 개발자가 기존의 기술을 활용할 수 있도록 해 줄 뿐만 아니라 기존 소프트웨어와의 통합을 용이하게 하고 인터넷 수준.. 더보기
[프로그래밍]C 언어도 진화한다「C99」 C 언어도 진화한다「C99」연재순서 1회. C언어의 변천사 2회. C99 컴파일러 이야기 3회. C99 이후의 C 언어. 전웅 (필자) (마이크로소프트웨어) 2004/09/22필자가 가지고 있는 가장 오래된 C 언어 책은 1970년대에 출판된 것이다. 지금은 자바나 파이썬 같은 강력한 기능의 좋은 언어들이 쏟아져 나와 지나치게 광범위한 분야에서 사용되어온 C 언어가 자리를 내어주고 있지만, 지금까지도 강산이 3번 변하기 전에 탄생한 언어가 각종 개발에서 가장 빈번하게 쓰이는 언어로 자리를 지키고 있다는 사실이 조금은 부조리해 보일 수도 있다. 하지만 이 글의 제목에서도 알 수 있듯이 이는 기우일 뿐이다. 우리에게 그 사실이 잘 알려지지 않을 뿐 지금 이 순간에도 C 언어는 최신 기술들과 빠르게 변화하는 .. 더보기
64비트 시스템으로 본「OS 패러다임의 변화」 64비트 시스템으로 본「OS 패러다임의 변화」프로세서는 이미 64비트가 되었으나 운영체제는 32비트 골격을 유지하면서 64비트로 이행하고 있다. 64비트 운영체제가 조금 더 흔해지게 되면 데이터를 다루는 패러다임 자체에 변화가 올 것이고 사람들이 어떤 대상을 생각하는 방법이 바뀌기 시작하면 그때는 큰 변화가 올 것이다.안윤호 (아마추어 커널해커)2004/04/1264비트 운영체제는 말 그대로 64비트 프로세서를 사용하기 위한 운영체제이다. 사용자들은 자신도 모르는 사이에 알파(alpha)나 울트라스팍(UltraSPARC)을 사용하는 서버에 접속하고 있고 이들이 바로 64비트 운영체제를 사용하고 있다. 이들 운영체제의 동작환경 중 어떤 부분이 32비트 모드이거나 32비트 호환 모드에 있다거나 컴파일러나 다.. 더보기
PDC 2003, 소프트웨어 혁신 신물결 소개 마이크로소프트, 소프트웨어 혁신 신물결 소개 PDC 2003, 윈도우 “롱혼” 개념 첫 소개 이밖에 WinFX, WinFS 등 새로운 윈도우 플랫폼 기술 소개 한국에서도 개발자 100 여 명 참가 2003 년 10 월 27 일 , 로스엔젤레스 - 마이크로소프트 회장 겸 최고 소프트웨어 아키텍트인 빌 게이츠는 오늘 (미국 현지 시각) 역사상 가장 큰 규모의 마이크로소프트 전문 개발자 컨퍼런스 2003 (PDC 2003, Professional Developers Conference)을 통하여 소프트웨어 개발의 차세대 물결에 대한 마이크로소프트의 비전 및 방향을 밝히고, 개발자들이 소프트웨어 개발 기회 관련 새로운 물결을 십분 활용할 수 있도록 마이크로소프트가 어떻게 지원할 것인가에 대한 자세한 계획을 발표.. 더보기
마이크로소프트, 개발자들과 소스코드 공유 마이크로소프트, 개발자들과도 소스코드 공유한다 마이크로소프트 선정 MVP들에게 윈도우 소스 코드 공유 우리나라에서도 80 여 MVP 혜택, 온라인 커뮤니티 활성화 기대 2003 년 10 월 22 일 , 레드몬드 - 마이크로소프트는 오늘 (미국 현지 시각) 기존의 소스코드 공유 정책 (Shared Source Initiative)에 MVP용 소스 라이선스 프로그램 (Most Valuable Professional Source Licensing Program, MVPSLP) 을 추가한다고 발표하였다. MVP SLP 프로그램은 마이크로소프트 사용자들을 지원하기 위하여 적극적으로 온라인 등에서 활약하고 있는 마이크로소프트 제품 및 기술 전문가들의 노력에 보답하기 위한 것이다. 금번의 프로그램으로 MVP 커뮤니티.. 더보기
[마이크로소프트 보안 업데이트 MS03-040] Internet Explorer 누적 패치 → 자세한 내용 보기 및 패치 다운로드마이크로소프트 보안 업데이트는 마이크로소프트 제품의 보안 관련 업데이트, 바이러스 안내, 기타 보안과 관련된 리소스와 관련 정보를 제공하고 있습니다. 아래 새로운 보안 업데이트에 대한 정보를 확인하시기 바랍니다. 지난 8월 21일자의 Internet Explorer 누적패치 이후에 발견된 2가지 새로운 보안 취약점을 추가로 해결하는 누적패치 MS03-040이 게시되었읍니다. 패치를 설치하지 않은 상태에서 악의를 가진 웹사이트를 방문하거나 HTML 메일을 읽음으로써 공격자가 선정한 임의의 코드가 사용자의 컴퓨터에서 실행될 수 있읍니다. Internet Explorer의 모든 사용자는 컴퓨터를 보호하기 위하여 MS03-040 설치를 권장합니다.[MS03-040] Inte.. 더보기
[MFC]fatal error C1010: unexpected end of file while looking for precompiled header directive fatal error C1010: unexpected end of file while looking for precompiled header directive VC++은 파일 하나를 컴파일 할때 INCLUDE해야 할 파일이 너무 많아서 컴파일이 늦어지는 것을 막기위해 precompiled header라는 것을 만들었습니다. 이 헤더 파일(보통 stdafx.h)을 include한 .cpp는 미리 만들어진 precompiled header를 기본으로 사용하게 되어 있습니다. 하지만 다른 컴파일러로 만들어진 라이브러리(소스)에는 이런 것이 없겠죠. 그럼에도 VC++ 컴파일러가 자기는 precompiled header가 필요하다고 저런 이상한 메시지를 냅니다. 이런 경우.. 해당하는 모든 .cpp의 맨 첫줄에 .. 더보기
[프로그래밍/UNIX/LINUX/GCC/C/C++]GCC의 컴파일 옵션 설명 gcc는 예전에는 GNU C Compiler의 약자였으나 지금은 GNU Compiler Collection의 약자로 다양한(?) 언어의 컴파일러들의 집합체이다. gcc는 한마디로 GNU에서 개발된 ANSI C 표준을 따르는 C 언어 컴파일러라고 말할 수 있다. gcc는 ANSI C 표준에 따르기는 하지만 ANSI C 표준에는 없는 여러 가지 확장 기능이 있다. 또한 gcc는 통합개발환경(IDE)을 가지고 있지 않은 command line 컴파일러이다. 옛날 Turbo-C를 주로 사용해 보셨던 분들은 tcc.exe와 비슷하다고 생각하면 된다. (*) -v 옵션 현재 사용되고 있는 gcc의 버전을 나타내는 옵션이다. 특정 소프트웨어 패키지를 컴파일하기 위해 어느 버전 이상의 gcc를 쓰도록 권장하는 경우가 .. 더보기
[MFC]error LNK2001: unresolved external symbol _WinMain@16 해결 방법 error LNK2001: unresolved external symbol _WinMain@16 -------------------------------------------------------------------------------- 발생하는 현상: Microsoft Visual C++ generates the link error: msvcrt.lib(crtexew.obj) : error LNK2001: unresolved external symbol _WinMain@16 or msvcrtd.lib(crtexew.obj) : error LNK2001: unresolved external symbol _WinMain@16 원인: The linker is looking for the entry poi.. 더보기
[MFC]Visual C++과 MFC를 위한 좋은 책...3권 추천 우선 제가 그동안 봐온 책이 있습니다. Visual C++ 6 완벽 가이드 (CD 1 포함) | 김용성 저 | 영진.COM 출간 이 책은 제 주변 친구들 3~4명이상이 산 책입니다. 보통의 전공책보다 약간 두껍지만 MFC의 다른 책에 비하면 얇은편입니다.(1407쪽) 이 책의 단점은, 아래의 책보다는 라이브러리 함수들의 사용법이 적다는 것입니다. 그렇지만 기본적인 것은 다 있고, 부록 CD또한 자료가 괜찮습니다. 다음으로 추천할 책은 Visual C++ 6의 모든것 [CD 포함] | 변영철 저 | 비앤씨 출간 Visual C++ Programming Bible Ver 6.X | 이상엽 저 | 영진.COM 출간 입니다. 현재 제가 회사에서 보고 있는 책입니다..^^ 위 두권은 각각 2092쪽, 2248쪽으.. 더보기
[Study]Embedded zerotree wavelet (EZW) algorithm http://www.owlnet.rice.edu/~elec539/Projects99/BACH/proj1/report/node8.html http://perso.wanadoo.fr/polyvalens/clemens/ezw/ezw.html http://image.kwangwoon.ac.kr/activity.htm 더보기
[Study]RGB와 YCrCb 간의 Conversion RGB -> YCrCb Y = 0.299R + 0.587G + 0.144B Cb =-0.172R - 0.339G + 0.511B Cr = 0.511R - 0.428G - 0.083B YCrCb -> RGB R = Y + 1.371Cr G = Y - 0.698Cr - 0.336Cb B = Y + 1.732Cb --------------------------------------------- Y = 0.299*R+0.587*G+0.114*B Y = +0.299*R +0.587*G +0.114*B R-Y = +0.701*R -0.587*G -0.114*B B-Y = -0.299*R -0.587*G +0.886*B Y = = +0.299*R +0.587*G +0.114*B V =(R-Y)/1.14 = +0.61.. 더보기