WebDAV+SVN 환경에서 add만 안 되는 문제
Apache+WebDAV+SVN 환경에서 고치거나 지울 수는 있는데 파일을 새로 넣을 수 없는 문제가 생겼습니다. 권한 문제이겠거니 하고 접근했다가 한참 헤맸죠. 문제는 Location에 있었습니다.
<Location />
DAV svn
SVNParentPath /var/svnroot
</Location>
이렇게 설정하면 Modify, Delete는 잘 되지만 Add를 시도할 때 다음과 같은 오류가 나타납니다.
Could not open the requested SVN filesystem [500, #2]
Could not open the requested SVN filesystem [500, #2]
어떤 환경에서는 sqlite 라이브러리가 여러 버전으로 깔려 있을 때 mod_dav_svn.so가 libphp5.so를 따라서 잘못된 버전으로 연결되는 현상 때문에 오류가 나타나기도 하지만 제 경우는 해당이 안 됐습니다.
Apache access log를 뒤져보면 다음과 같이 나타납니다.
- [01/Jul/2011:01:59:44 +0900] "OPTIONS /project/path HTTP/1.1" 401 -
user "OPTIONS /project/path HTTP/1.1" 200 190
user "PROPFIND /project/path HTTP/1.1" 207 708
- "MKACTIVITY /project/!svn/act/c332ed36 HTTP/1.1" 201 368
- "CHECKOUT /project/!svn/vcc/default HTTP/1.1" 201 386
user "PROPPATCH /project/!svn/wbl/c332ed36/10599 HTTP/1.1" 207 466
user "PROPFIND /project/path HTTP/1.1" 207 420
- "CHECKOUT /project/!svn/ver/10597/path HTTP/1.1" 201 395
user "PROPFIND /project/!svn/wrk/c332ed36/path/test_file HTTP/1.1" 500 234
user "PROPFIND /project/path/test_file HTTP/1.1" 500 234
user "DELETE /project/!svn/act/c332ed36 HTTP/1.1" 204 -
새 파일이 들어갈 때 HTTP 500 오류가 떠버리면서 안 됐었네요.
Location을 다음과 같이 바꾸고 다시 시도해 보면 잘 됩니다.
<Location /svnroot>
DAV svn
SVNParentPath /var/svnroot
</Location>
access log에는 500 오류 나던 타이밍이 다음과 같이 바뀝니다.
- "PROPFIND /svnroot/project/!svn/wrk/d677728f/path/test_file HTTP/1.1" 404 1089
- "PROPFIND /svnroot/project/path/test_file HTTP/1.1" 404 1089
user "PUT /svnroot//!svn/wrk/d677728f/path/test_file HTTP/1.1" 201 402
즉, 없는 파일을 한 번 요청하면서 404 오류가 뜨고난 뒤 새 파일이 들어가는 순서인데, 앞서 설정을 Location /로 지정해 svn 모듈로 넘겨 버리니까 Apache가 ErrorDocument 지시자에 의해 잡아두었던 오류를 내뱉지 못하고 500 오류로 넘어가 버렸던 것입니다.
ErrorDocument를 다르게 잡아서 Location /를 그대로 써 보려고 했지만 잘 안되네요. WebDAV 환경이라는 특성때문에 나타나는 현상이라 피하기 힘든가 봅니다.
어쨌든, Location을 /가 아니라 다른 곳으로 잡아서 문제 해결. (사실 WebDAV+SVN 설정하는 글을 찾아 보면 모두 이렇게 처리합니다.)
Snow Leopard에서 Python site-packages 문제
Snow Leopard에서 Python 3rd 파티 모듈을 distutils로 깔아보면 제대로 인식을 안 합니다. 경로가 틀렸기 때문이죠.
python -c "import sys; print sys.path"
명령을 내려서 site-packages가 있는 경로를 찾아보면 다음 한 곳만 나옵니다.
/Library/Python/2.6/site-packages
문제는 distutils.sysconfig에서 잡는 경로가 sys.path 안에 없는 경로를 가리키면서 나타납니다.
$ python -c "from distutils import sysconfig; print sysconfig.get_python_lib()"
/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages
해결책은 두 가지 입니다. PYTHONPATH에 넣거나,
$ echo "export PYTHONPATH=/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages:$PYTHONPATH" >> $HOME/.bash_profile
/Library/Python/2.6/site-packages를 /System/…으로 symlink 걸어버리면 됩니다.
$ sudo ln -s /Library/Python/2.6/site-packages /System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages
32bit/64bit 문제도 있고… 아직은 귀찮군요. :-?
덧) Snow Leopard 서버에는 get_ptyhon_lib() 결과가 제대로 /Library/Python 아래로 잡힙니다.
한글 글꼴에 원화 기호 대신 역슬래시 넣는 방법을 정리했습니다. (FontForge 사용)
한국에선 오랫동안 원화 기호를 입력하기 위해서 역슬래시 자리에 원화 기호를 넣었습니다. 유니코드 덕분에 그럴 필요가 없는 지금도 여전히 호환성이 발목을 잡아 역슬래시 대신 원화 기호가 나타나도록 한글 글꼴을 만들고 있지요.
TTF 글꼴을 직접 고쳐서 역슬래시(U+005C, \)가 역슬래시 모양대로 나오도록 고쳐보겠습니다.
FontForge 를 써서 고치는 방법입니다. 맥, 리눅스 모두 똑같습니다.
글꼴을 엽니다.
글꼴 정보 가운데 Em Size를 확인합니다.Element - Font Info… (Ctrl - Shift - F) - General - Em Size
나눔 고딕 보통은 1000입니다.
고칠 글자를 엽니다.창이 따로 뜹니다.
이 때, 슬래시(/)를 누르면 다른 탭으로 슬래시가 뜨므로 쉽게 비교해 볼 수 있습니다.
모두 고르고 싹 지워버립니다.마우스로 고르거나 Edit - Select - Select All (Ctrl-A)
Edit - Clear (Delete)
너비를 슬래시와 같게 맞춥니다.Metrix - Set Width… (Ctrl-Shift-L)
슬래시를 열어보면 확인 할 수 있습니다. 나눔 고딕 보통은 375입니다.
슬래시의 외곽선을 집어 넣습니다.Element - Insert Text Outlines…
Size에 2번 과정에서 확인한 Em Size 값을 넣고
아래 글자 넣는 칸에 /를 입력한 뒤 Insert 단추를 누릅니다
Em Size에 맞추면 슬래시와 똑 같은 위치에 들어갑니다. 아니면 크기와 위치를 조정해야 합니다.
가로로 뒤집습니다.모두 선택 (4-1번 과정과 같음, 화살표가 노란색으로 바뀜)
Element - Transformations - Transform (Ctrl-\) - Flip - OK
이 때, 기준선과 거리가 왼쪽 오른쪽이 조금씩 차이가 납니다. Transform - Move에서 X축 값을 조절해 옮길 수 있습니다.
글자 목록이 있는 창을 보시면 새로 넣은 역슬래시 모양을 확인할 수 있습니다.
저장하고 새 글꼴로 만듭니다.그냥 저장하면 .sfd라는, 글꼴 소스와 같은 형식으로 저장합니다.
TTF 글꼴로 만들 때에는, File - Generate Fonts… (Ctrl-Shift-G) 글꼴 이름 확인하시고 Save 단추를 누르면 됩니다.
굵은 글씨(Bold)와 더 굵은 글씨(ExtraBold)에도 이 짓을 작업을 해야 매끄럽겠죠?
스크립트를 짜면 간단하겠지만 API 찾아보기 귀찮네요.
VIDEO
지난 100년 동안 영화에 쓴 특수 효과를 모았네요. 상상력은 참 대단합니다.
VIDEO
일본 구글이 만든 길거리 보기(street view)에서 개인 정보 보호에 대한 설명(홍보?) 애니메이션
(ストリートビューのプライバシーについて)