Egloos | Log-in


많은 사람들이 착각하는 것.

많은 사람들이 아니라고 생각하지만 실제 그런 것.

1. Win32 API 레벨에서 Path Delimiter는 forward slash('/')를 지원한다. 무조건 backslash('\\') 를 사용해야 한다는 편견을 버려주시길. 다만 인터페이스 상 슬래시를 다른 용도의 delimiter로 사용할 수 있기 때문에, 지원 안하는 것 처럼 보일 수 있지만. 멀티 플랫폼을 위한 프로그래밍을 해야 한다면, 그냥 슬래시를 사용하는게 속이 편하다.

2. GNU/Linux, gcc에서 -fshort-wchar를 써서 wchar_t를 표현하는 데 UCS-2를 사용할 경우 (대부분의 GNU 플랫폼에서는 UCS-4를 사용한다. 윈도우는 UCS-2.) 시스템의 (g)libc API function을 사용하는 것을 포기해야 한다. (ex. wcslen(), wcsdup() 등) gcc 매뉴얼에서도, -fshort-wchar는 binary incompatible code를 생성한다고 명시되어 있다. 뭐 이래저래 따져볼 것 없이, 가장 간단한 문제로 Null-Terminated String을 읽어낼 수 없기 때문에(데이터는 2byte에 걸쳐있는데, libc function에서는 4byte씩 읽어대기 때문.) SIGSEGV가 빵빵 터지게 된다. 만약 멀티 플랫폼을 위한 프로그램이라면, 해당 wide character를 하나로 통일한다고 끝나는 문제가 아님을 기억해 두고, 내부에서 wcs*() 계통의 함수를 대체할 대체 함수를 같은 조건 (-fshort-wchar)에서 빌드하여 해결해야 한다.

애시당초 wchar_t 의 representation에 대한 표준이 없기 때문에 발생한 문제긴 하지만, wchar_t * 계통의 데이터를 담는 데이터를 생성하고, 다루는 플랫폼이 다를 경우에는 이를 신경 써줘야 한다.

3...

이후는 다음에 생각나면 더 적을련다.

by 달가락 | 2009/11/04 00:11 | 재미없는것들 | 트랙백 | 덧글(0)

GNU/Linux상에서의 Daemonizer.

평소대로 짜놓고. While(1) loop를 돌기 전에, unistd.h의 daemon()을 사용하도록.
stdin, stdout, stderr의 /dev/null redirection, fork()등 해 줘야할 것을 왠만큼 다 해준다.

더 궁금하시다면, man 3 daemon

Hangup signal(=SIGHUP)에서의 reloading, Interrupt(=SIGINT)에서의 중단 등에 대해서는 적절한 sigaction() 처리를 추가로 함께 하면 된다.

끝.

by 달가락 | 2009/10/28 22:02 | 트랙백 | 덧글(0)

IIS 6 동적 컨텐츠 압축 ...

IIS 6, Windows 2003 Server EE SP2, Classic ASP 환경.
UTF-8 Page, "text/xml" ContentType의 데이터를 전달할 때,
왠만해서는 문제가 안생길 텐데, 브라우저에서 압축이 풀린 후에 뭔가 데이터가 꼬이는 현상이 벌어졌다.
CodePage나 CharSet을 지정안해서 벌어지는 문제도 아니고,

그래서 일단 동적 압축을 끄는 것으로 해결은 했는데, IIS 6에서 이런 경우는 처음일세.

by 달가락 | 2009/10/16 17:29 | 트랙백 | 덧글(0)

◀ 이전 페이지          다음 페이지 ▶