getpass라는 unix library function이 있다. 이 함수는 /dev/tty를 열어 echo를 끈상태로 입력을 받아 버퍼에 읽어 들인 데이터를 돌려주는 함수인데, 쉬운말로 해서, 암호를 입력받는 함수이다. 이 함수가 apr(Apache Portable Runtime) project에서 사용되며, 웹서버에 쿼리하기전 인증(Basic auth)을 하기 위해 암호열을 받는 행동을 한다. 그런데, 문제는 Apache가 관리하는 암호열이 getpass의 제약사항과는 상관없다는 것인데, getpass는 고전적으로 8자만 받아서 넘겨주는 고리타분한 행동을 한다. 리눅스의 경우 255자까지 되어 있지만, HPUX에서는 그렇지 않다는 것이다. Subversion이 apr을 이용하여 코드 저장소를 접근하는..
테스트가 드라이브하는(주도하는) 프로그래밍 쉽게 생각하기에는 테스트 코드를 반드시 작성해야한다고 생각하기 쉽지만, 이 방법은 다음과 같은 극단적인 프로그래밍 습관의 변화를 내포한다. 어떻게 사용할지 사용 형태의 샘플을 먼저 작성한다. 어떤 환경설정 파일을 사용할지 샘플 환경을 작성한다. 테스트해야할 함수와 테스트하지 않아도될 함수를 적절히 나누어 작성하게 된다. 자동화된 테스트를 위한 로그를 작성한다. 어떻게 사용할지 사용 형태의 샘플을 먼저 작성한다. 사용되는 곳에 쓰일 샘플을 먼저 작성하지 않으면, 설계의 정확한 의도를 파악하지 못한 채 작성하기 쉽다. 만약 직접 설계한 코드를 만든다고 할 지라도, 전체적인 방향이 주먹구구일 수 있다. 즉, 필요하지도 않은 인자를 함수에 전달 할 수도 있고, 필요한 ..
검색엔진들은 검색결과를 통해서 사용자들이 링크를 누르는 순간 자신이 먼저 받고, 실제 사이트로의 재전환(Redirection)해주는 기능으로 동작하기도 한다. 라이코스의 경우 http://r.lycos.com/r/XXXXX/http://originalsite.com/ 과 같은 형식으로 내려보내주고, r.lycos.com에서 r 이라는 cgi가 받아서 사용자 통계를 내는 것인지 아니면 죽어 있는 링크를 조사하기 위한 것인지 아뭏든 위와 같은 방법을 사용할 수 있다. 야후의 경우 http://rds.yahoo.com/XXXXXXX/*-http://originalsite.com/ 과 같은 형식으로 보내준다. http://r.lycos.com/r/jflskdajkflasijefiwoa89kdjsalkfjslka..
스팸을 걸러내는 방법중에 몇년전부터 유행인 RBL (Realtime Blackhole List; Relay Block List)이라는 것이 있다. 이 서비스는 DNS 서비스 즉, 영문 이름을 IP 주소로 변환시켜주는 도메인 네임 서비스를 기반으로 만들어지는데, 그 개념이야말로 상당히 깜찍하다. 메일서버 입장에서 보면, 지금 접속해 들어온 IP 주소가 혹시 스패머가 이용하는 설정이 제대로 안되어 아무나 메일 서버로 사용되는 서버이거나, 아니면 실제 메일 발송기가 장착된 스팸 발송 머신이 아닐까 확인할 수 있는 방법이 있다면 참 좋은 것이 아니겠는가? 이를 위해서 별도의 연동 라이브러리가 필요없이 DNS를 기반으로 그 서비스를 한다니 참 신통방통한 방법이다. 그 원리는 다음과 같다. 만약 외부에서 접속해 들..
문서화 되지 않은 키 몇가지를 경험상 쓰고자한다. 나야 유닉스 쟁이이긴 하지만, 하도 오랫동안 OE를 써와서, 다른 것보다 친근하다. 문서화 되지 않은 바로가기 키 Ctrl+F3: 메시지 MIME 원문을 보는 키로써, 나 같은 개발자에게는 아주 도움이 되는 키이다. Ctrl+F2: 메시지가 HTML일 경우 HTML 소스를 보여주는 것으로, MIME 원문이 대개 Base64 로 인코딩된 경우에도 보여주는 기능을 한다. Ctrl+H : 메시지를 주제별로 쓰레드를 만들어 주는 기능을 한다. 물론 메뉴에 있지만, Alt+VVG 를 차례로 누르는 것 보다는 빠르다. 가장많이 쓰이는 바로가기 키 뭐니 뭐니해도 Ctrl+R: 답장을 하는 것 Ctrl+Shift+R: 전체 답장을 하는 것 Ctrl+F: 전달하는 것 이..
indent라는 C 소스의 들여쓰기, 띄어쓰기 괄호 위치 등을 정리해주는 프로그램은 의외로 오래된 프로그램 중의 하나이다. 1988년의 오래된 이메일 http://www.pell.portland.or.us/~orc/Code/bsd/bsd-current/indent/ 를 보면, 원작은 David Willcox가 일리노이 대학교에서 어떤 프로젝트로 인해 필요해서 만들었고, 그 이후 여기 저기 떠돌다가 4.2 BSD에 처음 들어왔다고 한다. 그러나, linux에는 그 소스의 최신(?) 수정본이 들어 있다. 최신이래봐야 2002년 버전인데, 지금쯤 C++이 적절히 반영된 최신버전이 들어옴직한데, 뭘 고민하는지 그간 업데이트가 없다. indent는 여러 옵션을 가지고(실로 엄청난 옵션이다.) 수행되는데 이 옵션들..
아래는 Cascading Style Sheet - The Designer's Edge (Holzschlag) 라는 책의 한 부분을 인용한 것이다. 저자에게는 허락을 받지 않았으나, 미안하긴 하지만 게재한다.아래는 의역입니다. So why should you follow standards? A lot of people say, “Hey, I can use nonstandard markup that works just fine.” 그러면 왜 표준을 지켜야하는가. 많은 사람들이 말하길 "뭐, 난 표준이 아닌 태그를 이용해도 잘 돌아가."라고들 말한다. There are several reasons why understanding and following standards makes sense. Here are..
온갖 상상이 난무하고, 추측과 확신이 교차하는 작업이 디버깅이라고해도 과언이 아니다. 디버깅은 아는 것 만큼 혹은 조금 더 상상한 것 만큼만 해결 가능하고, 그 외의 것들은 모두 우연한 실수일 뿐이다. 어쩌다 문제를 해결했어도 그것은 실수로 해결한 것이리라. 잔인한가? 디버깅이야말로 책으로 보아왔던 지식이 살아나는 현장이고, 디버깅이야말로 책을 들여다보게 만드는 작업이다. 디버깅을 하면서 가장 중요한 자세 하나를 생각해보고자 한다. 디버깅의 가장 큰 적은 "그 부분은 문제없을텐데"라고 믿게되는 근거를 알 수 없는 자기확신이다. 만일 디버깅을 잘하고자한다면, 지금까지 확실하다고 생각했던 부분을 다시 한 번 보라. 프로그래머가 가져야할 가장 중요한 덕목 중에 하나는 논리적인 무결성과 실제 데이터의 무결성에 ..
요즘에야 프로젝트의 시작부분에 설치본을 만드는 것이 당연하다 생각되나, 나 자신도 몇년전에는 그러하다 생각지 못하였는데, 그 이유는 "설치할 것이 있어야 설치본을 만들지!"라는 생각에서였다. 하지만, 제일 쉬우면서도 가장 오래, 배포되는 프로그램의 끝까지 애를 먹이는 것이 바로 배포를 위한 설치본, 또는 부분패치 설치본이며, 이것은 릴리즈 엔지니어링의 마지막 결과물에 해당한다. 강조를 백번해도 모자랄 정도로 프로젝트의 시작부분에서의 설치본인데, 이것은 개발조직이 분화되기 위한 첫걸음이된다. 개발초기부터 테스팅 및 릴리즈를 위한 얘기를 할 수 있고, 중간 단계쯤에서 그간 진행된 기능에 대한 다양한 피드백을 받을 수도 있고, 나중에 고생할만한 일을 초기에 잡을 수 있는 아주 필수적인 것이 개발팀이 설치본을 ..
Subversion : http://subversion.tigris.org/ TortoiseSVN: http://tortoisesvn.tigris.org/ poedit: http://www.poedit.org/translations.php 나는 요 세가지의 한국어 문자열을 관리하고 있는데, 어떤 소프트웨어가 맘에 들면 번역을 시도해보는 것은 그 프로그램을 깊이 이해하는데 더 도움이 된 것 같다. 가장 활발히 하는 것은 TortoiseSVN인데, 그 이유는 일주일에 한 번 씩 번역 상태가 메일로 오고 각 언어별 번역율이 그래프로 나오는 것이 약간의 경쟁을 유도하게한다. subversion은 일주일에 한 번정도 모든 언어들의 번역상태가 메일링리스트로 전송되어 온다. Translation status repo..
- Total
- Today
- Yesterday
- 대화
- Subversion
- MySQL
- Tattertools plugin
- 벤자민
- SSO
- 오픈소스
- ssh
- 수선화
- 클레로덴드럼
- TCP/IP
- 구근
- 퀴즈
- JavaScript
- OpenID
- macosx
- url
- nodejs
- 커피
- writely
- perl
- Linux
- 디버깅
- 킹벤자민
- VIM
- BlogAPI
- 식물
- tattertools
- 덴드롱
- SVN
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |