2008. 10. 17. 18:02

Visual Studio, Pocket PC 2003 SDK, Windows CE SDK 및 Mobile 5 SDK 설치

NHN에서 새로운 폰트를 무료로 배포하였다. (신문에서도 아름다운 한글 글꼴이라는 기사를 본 적이 있는 것 같다. 기존의 MS에서 제공하는 폰트들은 제대로 만들어진 폰트가 아니라는 얘기였다.) 지금 "나눔고딕"으로 글을 쓰고 있는데 글씨가 참 보기 좋게 눈에 잘 들어 오는 것 같다. 

Windows Live writer 라는 툴을 처음 사용해서 작성하는데, 기본 폰트 지정 방법을 아직 모르겠다. 언젠가는 되겠죠?

 본론으로 들어가서, 우선 개발 툴 3가지를 보면, 순서를 지켜야만 한다고 한다. 여러 사이트를 찾아보면, eVC4와 Visual Studio 2005 설치 순서가 나와 있는데, 자세히 보면 시간적은 발매 순서랑 연관이 있는 것 같다.

 참고 사이트: [Embedded CE] Embedded Visual C++ 4 설치 및 Setting

                     Embedded Visual Tool 설치 순서

                     Windows Mobile 5.0 SDK for Pocket PC 설치 에러

 그래서 우선 3가지 툴을 설치하는데 필요한 화일들은 아래와 같다. 

1. Visual Studio 6 & MSDN 1999/02/10
2. Visual Studio 6 service pack 5 2001/02/08
3. Embedded Visual C++ 4 
   (TRT7H-KD36T-FRH8D-6QH8P-VFJHQ)
2003/12/20
4. Visual Studio 6 service pack 6 2004/03/13
5. Embedded Visual C++ 4 service pack 4 2004/07/15
6. Windows XP serivce pack 2 XP에 포함됨
7. Visual Studio 2005 & MSDN 2005/12/15
8. Visual Studio 2005 TS service pack 1 2006/12/14
9. Windows XP service pack 3 2008/05/06

이다. 아예 테이블을 날짜 순으로 정리했다. 테이블 순으로 설치하면 될 것 같다.

이제 Windows CE SDK 및 Windows Mobile SDK 관련되어 설치를 언급하겠다. 각 버젼별로 개발 툴하고 관계가 밀접하다. 유의할 점은 Windows CE 5.0 SDK까지는 eVC4가 커버한다는 것이고, Windows Mobile 5 SDK는 Visual Studio 2005 설치 이후에 설치가 가능하다는 것이다.

추가로 설치할 SDK는 두 종류이다.

먼저 Pocket PC 2003 및 2003 Second Edition을 위한 SDK는

A.1. SDK for Windows Mobile 2003-based Pocket PCs  
A.2. Developer Resources for Windows Mobile 2003 SE  
A.3. 한글 Pocket PC 2003 SE Emulator Image  
A.4. Run-time Type Information Library for the Windows Mobile-based Pocket PC 2003 SDK  

이고, Windows Mobile 5를 위한 SDK는

B.1. Windows CE 5.0 Standard SDK  
(B.2. Windowds CE 5.0 Platform Builder)  
B.3. Windows Mobile 5.0 Developer resource Kit  
B.4. ActiveSync 4.2 or 4.5  
B.5. 영문 Pocket PC용 Windows Mobile 5.0 SDK
      영문 Smartphone용 Windows Mobile 5.0 SDK
 
(B.6. 영문 Windows Mobile 5.0 Pocket PC Emulator Image)
(      한글 Windows Mobile 5.0 Pocket PC Emulator Image)
 

이다. 괄호 안의 것은 설치하지 않아도 된다.

다른 자료를 참고한 것을 정리하면,

A.1~A.4 항목은 앞의 항목 5. Embedded Visual C++ SP4 설치 이후에 진행하는 것이 바람직하며,

B.1~B.6 항목은 항목 7. Visual Studio 2005 설치 이후에 진행하는 것이 좋겠다.

그럼 이 순서대로 설치해 보고 문제가 있으면 추후 업데이트할 예정이다.

(문서 정리하는 것 참 어렵군요)

2008. 10. 16. 10:09

Windows XP - 지연된 쓰기 실패

나는 IEEE1394 HDD 쓰는 것을 좋아한다.
USB 보다도 빠르고 안정적이기 때문이다.

전에는 그런 문제가 없었는데, 최근 1년 정도는 "지연된 쓰기 실패" 오류 때문에 외장 HDD 사용에 심한 걱정을 한다. 보통은 잘 동작하다가 조금 큰 화일을 복사 혹은 이동하면 시간이 걸리기 시작하면서 예상 시간이 늘어난다. 20분...30분까지 늘어난 후에, "실패" 메시지가 뜨면서 "지연된 쓰기 실패"와 함께, 외장 HDD가 시스템에서 사라진다. 다시 뺏다가 꽂아도 나타나질 않는다. 가끔 나타나면, 이상한 HDD로 제대로 인식되지도 않는다. 결국 Reboot 하면 다시 잡힌다...

오늘 맘 먹고 인터넷을 뒤졌더니, 해결책이 있기는 한가 보다.

Windows XP에서 문서를 저장하거나 이동하면 "지연된 쓰기 실패" 오류 메시지가 나타날 수 있다.

(링크가 문제가 있어서 다른 링크 https://blog.naver.com/wung9/80128056510 )


여기를 보니 "디스크에 쓰기 캐시 사용" 기능을 해제하라고 한다. 뭐 이딴 해결책이 있어(궁여지책인듯). 이건 아니라는 생각이 들어 내용을 더 보았다.

아래쪽에 보면 지연된 쓰기 실패 라는 구문이 있는데, 거기에 이상한 말이 있다.

Windows XP에서 큰 시스템 캐시 기능을 사용할 수 있도록 설정한 경우 데이타가 손상될 수 있습니다.
음 아무리 Windows 가 꼬지긴 했어도. 참 그런데 아래 말은 더 어이가 없다.

  • 512Mb보다 큰 시스템 메모리 (1GB의 RAM이 일반적임)
  • 큰 NTFS 디스크 볼륨 및 여러 큰 볼륨 (60~100GB의 하드 드라이브, RAID 배열에 있을 수 있음)
  • 큰 파일 전송. 이 문제는 컴퓨터에 시스템 페이지 테이블 항목이 부족한 경우 발생합니다. 컴퓨터가 시작되면 Windows에서 사용 가능한 시스템 메모리 크기에 따라 할당할 페이지 테이블 항목의 기본 수를 결정합니다.
여하튼 마지막 항목에 해당하나 보다... 시스템 페이지 테이블 항목이 부족하다???
여하튼 그 아래의 해결 과정으로 SystemPages 값을 변경하였다.
혹시나 해서 이 값에 대한 다른 시스템의 값을 조사해 보았다.
  • DELL505 P4-M 1.6GHz 1G RAM 은 기본값이 0x63000 이었네. (Intel Graphic)
  • DELL800 (Single Core) 및 DELL820 (Dual Core)은 P4-M 2GHz, 1G RAM 모두 0x3F000 이다. (nvidia graphic)
음. D8x0이 왜 더 작을까??? 시스템 규격은 훨씬 더 높은데... RAM은 동일하고 아마도 Graphic 카드 때문에 시스템 메모리를 더 쓰기 때문인가??? 뭐 자세한 것은 모르겠다.

여하튼 권고사항 대로 0xFFFFFFFF 로 설정하였다... 재 부팅하고, 오호 문제가 생기지 않았다.
그런데, 아무래도 0xFFFFFFFF 는 너무 큰 값이라 생각된다. 뭐 이 값을 사용한다고 해서 Page file 크기가 늘어나는 것이 아니고, (추측) 아마도 위에서 언급한 시스템 페이지 테이블 항목의 수가 최대값을 설정한 것이 아닌가 한다. 작업관리자로 검사해 보면 메모리 사용량에 대한 비율이 크게 변하지 않았으며, C:\ 폴더의 Pagefile.sys 도 변하지 않았다.

우선은 이 값으로 사용해 보고 나중에 문제가 생기면 바꿔 봐야 겠다.

<결론적으로, SystemPages 값만 바꿔서 문제가 없어진 듯 하다>

여하튼 "지연된 쓰기 실패"의 괴로움에서 벗어나는 듯 싶다.


2008. 10. 14. 15:58

ATL and MFC String Conversion Macros - 유니코드와 아스키 변환


Visual Studio 6 을 사용할 때는 무조건 ASCII 를 사용했는데,
Visual Studio 2005를 사용하니, 유니코드를 Default로 사용하게 되는 군요.

그런데, 여전히 CFile 이라는 함수의 멤버들은 모두 ASCII 문자 처리를 하니 무척 난감합니다.

char 배열을 만들어서 일일히 옮겨서 썼었는데, 이미 훌륭한 매크로를 제공하고 있더군요.

여러 사이트에서 이미 소개되고 있기도 하죠.

참고 사이트: USES_CONVERSION을 사용하려면

추가로, MSDN을 찾아 보니 위의 제목으로 설명하고 있더군요.

이것도 버젼이 있군요. ATL 3.0 과 ATL 7.0 인데, 차이점은

 Old ATL 3.0 Conversion Macros  New ATL 7.0 Conversioin Classes
 스택을 사용함  작은 문자열은 스택을 사용하고, 스택이 충분히 크지 않으면 Heap을 사용함 
 함수가 종료될 때 문자열이 Free됨  변수의 영역(scope)을 벗어나면 문자열이 Free됨 
 예외처리자를 사용할 수 없음  예외처리자를 사용할 수 있음 
 반복 루틴(Loops)에서 사용하기 적합하지 않음. 함수가 종료할 때까지 메모리가 증가함  반복 루틴에서의 사용을 지원함. 매번의 반복 루틴에서 문자열이 Free됨
 큰 문자열에 적합하지 않음. 스택의 크기 제한에 걸림  문자열이 커도 상관 없음. Stack/Heap을 사용하기 때문
 USES_CONVERSION 정의가 필요함  USES_CONVERSION 정의를 하지 않음
 OLE의 경우에는 OLE2ANSI를 정의  OLE인 경우에는 W와 동등하게 취급함

이군요.

차이점만 봐서는 무조건 ATL 7.0의 classes를 써야 겠군요.

ATL 7.0 에서는

A, W, T , OLE 라는 문자를 조합해서 사용합니다.

사용법은 나중에 시간이 되면, 써 보도록 하죠.

그럼. 근데 문서 만들기 무척 힘들군요. 쉬운 방법 없을까요? 뭐 워드로 만들어서 올린다던가 뭐 그런거요?