나의 즐겨찾기 | 블로그홈 | 바로가기 바로가기 | 로그인
블로그  |  사진갤러리  |  동영상갤러리 방명록  |   즐겨찾기 추가
전체 글보기(15)
오픈 다이어리
HanRSS 로 구독하기Fish 로 구독하기
2009 11월
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
최근 댓글 전체보기
오... 부럽습니다! ..
바벨 이전의 언어인가요..
포스팅하느라 msn대답..
아, 이 블로그가 서상..
named.conf에 ..
오늘 전체
방문자 22 102124
구독자 0 5
댓글 0 12
참조글 0 458
개설일 : 2003/10/08
 

DNS 라는게 yahoo.com 같은 도메인 이름을 IP 주소로 바꾸어 주는 서비스라는 건 다들 아실테고, DNS 서버 중에 가장 널리 쓰이는 것이 BIND입니다. 버클리 인터넷 네임 도메인(Berkeley Internet Name Domain)의 약자라고들 합니다만, 수많은 보안 버그로 버그많은 인터넷 네임 대몬(Buggy Internet Name Daemon)이라는 별명도 있지요. 그건 그렇고...

BIND 네임 서버의 설정파일은 named.conf입니다. man named.conf 하면 named.conf(5) 맨페이지를 볼 수 있습니다. (맨페이지의 5번 섹션은 파일 포맷에 대한 페이지들입니다.) 이 설정파일을 파싱해서 현재 네임서버 정보를 DB에 넣을 일이 생겼는데, 파일 포맷 문서를 보아하니:

Comments may appear anywhere that whitespace may appear in a BIND configuration file. To appeal to programmers of all kinds, they can be written in C, C++, or shell/perl constructs.

흐앗? 이게 무엇이냐? 해석해 보면 "주석문은 공백이 나타날 수 있는 곳이면 어디에나 나타날 수 있다. 각약강색의 프로그래머들을 행복하게 하기 위해, 주석문을 C 식으로도, C++ 식으로도, 쉘 식으로도 쓸 수 있게 했다."는 것인데, 각약강색의 프로그래머들이 행복해졌는지는 모르겠지만 파싱하려는 사람 입장에서 보면 OTL. 뭔가 좌절스러운 문서가 아닐 수 없습니다. (참고로 OTL은 좌절해서 머리를 땅바닥에 대고 있는 사람의 모습을 형상화한 것입니다. orz 같은 변형도 있죠.)

음, 그래서 어떻게 되었냐구요? 이야기는 해피 엔딩입니다. 파이썬에서 파싱하는 패키지 중에 pyparsing이란 놈이 있습죠. 홈페이지는 http://pyparsing.sourceforge.net/ 입니다. (맨 아래의 Acknowledgements에 Seo Sanghyeon이라는 누군가의 이름이 나온다고 절대로 말하려는 의도는 없었습니다. 정말이에요.) 코멘트 처리는 실제로 다음과 같이 세 줄로 끝납니다.

parser.ignore(cStyleComment)
parser.ignore("//" + restOfLine)
parser.ignore("#" + restOfLine)

cStyleComment와 restOfLine은 pyparsing에서 기본으로 제공하는 토큰입니다. ignore 메소드는 특정 토큰을 "공백이 나타날 수 있는 곳이면 어디에나 나타날 수 있게" 해 줍니다.

멋진 파이썬 세상!

토끼군 2004.09.17  11:20  [210.179.65.1]

만세!

답글쓰기
nohmad 2004.10.07  16:45  [221.147.82.180]

named.conf에 다양한 주석을 쓸 수 있게 해준 BIND 개발자들에게 감사합니다. (다양성은 인민의 아편!)

답글쓰기

댓글쓰기

댓글쓰기 입력폼

포스트 목록 닫기

목록보기