이전 글에서 계속됨
5. 완성 그리고, 남은 이야기들
a. 주요 마일스톤
- 2차 도전 시작: 2012. 4. 5
- 변환 완료: 2012. 6. 16
- 디버깅 완료 후 원작자 통보[각주:1]: 2012. 6. 19
https://twitter.com/chikuyonok/status/214984195234213890
- Notepad2-mod 적용 완료: 2012. 6. 20
b. 누락된 약어
젠코딩에서 사용할 수 있는 약어는 구글 코드에서 확인할 수 있다.
그런데, css 쪽을 보다보니 구현되지 않은 코드가 하나 눈에 띄었다.
exp가 css의 snippet(약어) 테이블에 포함되지 않은 것이다.
그래서 내 마음대로 추가시켰다.
c. js의 구조는 은근히 파스칼을 연상시킴
예전에 파스칼을 한창 사용할 때는 함수 내에 다시 함수를 구현하는 구조를 무척 좋아했다.
무엇보다도 함수의 적용범위(scope)가 명확하다는 장점 때문이었다[각주:2].
그러다가 C++로 넘어가보니, 함수 내에 함수가 들어가는 구조를 사용할 수 없었다.
네임스페이스를 사용할 수도 있긴 했지만, 본질적으론 완전히 다른 얘기였다.
그런데, js는 이런 구조에 있어서는 파스칼에 더 가까운 구성을 갖고 있다.
그리고, 이 구조를 C++로 옮기는 것이 쉽지 않았다.
d. WDK 문제
WDK는 wchar_t 형을 완벽하게 지원하지 못하며, intrinsic 형으로 컴파일하면 종종 오류를 일으킨다.
따라서 컴파일 시 다음 옵션을 붙여 intrinsic 형으로 컴파일하지 않도록 해야 한다.
1 | /Zc:wchar_t- |
관련글: stackoverflow: Is wchar_t Supported in C++ WDK STL?
e. wstring 삽질
wstring을 다루면서 한 가지 간과한 것이 wchar_t*나 CString과 다른 점이 있다는 것이다.
다름 아니라 wstring은 vector 기반으로 문자열 끝이 NULL로 끝나지 않는다는 것이다.
따라서 아래와 같은 코드를 쓰면 그냥 뻗어버린다.
1 2 3 4 5 | wstring str =L "Hello" ;int i=0;while ( str [i]) { if ( str [i++]==L '1' ) return true ; } |
아무 생각 없이 이런 식으로 작성했다가 막판에 몽땅 뜯어고치는 대참사 발생…
게다가 그런 부분은 대부분 정규식을 함수로 변환한 곳이라 눈 빠지는 줄 알았다. >.<
f. toupper/tolower
wstring은 C의 wcsupr()/wcslwr()에 해당하는 기능을 사용하려면 아래와 같이 transform()을 사용하면 된다.
1 | transform ( str . begin (), str . end (), str . begin (), tolower ); |
그런데, transform()은 WDK에선 컴파일이 되지 않는다.
MS가 하는 짓은 다 그렇다.
그래서, 일일이 다시 짰다. OTL
g. stoi
문자열을 숫자로 변환해주는, C의 atoi()에 해당하는 C++/wstring의 함수가 stoi()이다.
하지만, 우리의 WDK는 이런 함수 잘 모른다.
그래서, 이것도 일일이 다시 짰다. OTL
Notepad2-mod r770 한글화 공개 (9) | 2012.08.29 |
---|---|
Notepad2-mod r752 한글화 버전 대공개 (6) | 2012.07.12 |
Zen-coding를 Notepad2에 적용하기 대장정 (2/3) (0) | 2012.06.23 |
Zen-coding를 Notepad2에 적용하기 대장정 (1/3) (0) | 2012.06.23 |
Notepad2-mod에 Zen-coding 적용 99.9% 완료 (2) | 2012.06.19 |
내 블로그 - 관리자 홈 전환 |
Q
Q
|
---|---|
새 글 쓰기 |
W
W
|
글 수정 (권한 있는 경우) |
E
E
|
---|---|
댓글 영역으로 이동 |
C
C
|
이 페이지의 URL 복사 |
S
S
|
---|---|
맨 위로 이동 |
T
T
|
티스토리 홈 이동 |
H
H
|
단축키 안내 |
Shift + /
⇧ + /
|
* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.