아이디어

가끔 엄청나게 오래된 일을 한참을 돌아와서 해결하게 된다.

텍스트큐브가 태터툴즈였던 시절, 작년 중순즈음엔가 fastCGI 환경 지원에 대한 요청이 들어온 적이 있었다. 당시에는 서버에 fastCGI 환경을 쉽게 구축하지 못하였고, 그래서 자연히 뒤로 밀리게 되었다. 이후 조금씩 workaround들을 통하여 구현을 해 놓았지만 역시 제대로 돌아가지는 못하고 있었다.

작년 말에는 '외국계 호스팅에서 태터툴즈가 잘 안돌아간다' 는 문의를 받았다. 직접 서버의 권한을 받아 들어가 본 결과 서버측에서 mod_rewrite에 대하여 선처리를 미리 해 둔 상태였다. 이 경우를 처리하기 위해서는 rewrite 모듈1 에 대한 의존도를 확 줄여야 했다. 이런 경우에 주로 사용하는 방법은 rewrite 모듈의 모든 결과를 하나의 파일로 보내고, 그 파일이 요청을 모두 해석해서 처리하는 방식이다. 그러나 당시 간단하게 테스트 해 본 결과 그림파일이나 음악파일 등등등 까지도 모두 php 엔진을 거쳐서 내보내기 때문에 서버에 무리가 있었다. 소스도 엄청나게 고쳐야 했다. 기존의 방식을 고수하기가 힘들어 보였다. 소스를 대대적으로 개수하기에는 언제나 시점의 무리가 있어서 계속 그 일은 뒤로뒤로 밀려왔다.

그러면서 1년이 넘는 시간이 지났고, 잘은 모르지만 머릿속 어딘가에서 그 생각이 계속 돌아가고 있었나보다. rewrite 모듈이 없는 상황에서 돌아가는 예외 처리를 추가한다거나, fastCGI를 지원하는 예외 처리를 추가한다거나 하는 식으로 대응해 가다가 사흘쯤 전 샤워하다가 아이디어가 떠올랐다. define으로 상수를 정의하는데, 그 상수를 두 번 정의할 경우 어느쪽이 무시되는가? 에 대한 생각이었다. 실험해 보니 처음 define만이 유지되었다. 그 때부터는 문제가 연속적으로 죽 풀렸다.

텍스트큐브는 /lib/suri.php 를 통하여 현재 주소 체계를 해석하고, 어떤 부분이 주소이고 어떤 부분이 파라미터인지 파악해 낸다. 그리고 각 인터페이스 (blog 하위의 디렉토리들은 사실 인터페이스라고 부르는 것이 더 적당하다.) 에서 필요한 라이브러리를 통째로 불러낸다. 과거에는 불가능했지만, 두달 사이에 이루어졌던 컴포넌트 및 라이브러리의 독립화로 인하여 라이브러리를 불러오는 시점의 의존성이 사라졌다. 따라서 suri가 실제로 동작하기 이전이라면 주소 처리 부분을 기존의 suri가 이해하기 좋게 만들어서 suri에 코드 한 줄을 추가하여 호환성을 유지할 수도 있을 것이다. 또한 각 인터페이스에서는 모든 포함관계의 기준이 되는 ROOT를 미리 정의하는데, 인터페이스 파일이 불려지기 이전에 ROOT를 일률적으로 정의해 버리면 이후의 모든 파일 포함관계들도 전부 수정 없이 이식할 수 있지 않을까.

그래서 크리스마스 이브 전날부터 크리스마스 기간 내내 그 부분을 구현하였다. 일단 (못 고치면 블로그 못쓴다-는 자신에게로의 압박을 위해서) 개인 서버의 아파치 웹서버를 fastCGI 기반으로 변경하였다. rewrite 모듈이 보내주는 값을 해석하는 부분은 최소한의 크기로, 또한 앞에서 처리해야 유리한 루틴은 최대한 앞에서 처리하는 식으로 작성하였다. 덕분에 기존 코드는 거의 손을 대지 않은채로, fastCGI나 다양한 rewrite module들에 대한 대응이 가능해졌다.

말이 길었다. 결론은 간단하다. 아이디어는 하늘에서 떨어지지는 않는다. 그렇다고 아이디어를 낼려고 머리 싸매고 있다고 튀어 나오는 것도 아니다. 문제를 완벽히 이해할 때 까지 생각하고 곱씹는 과정에서 문제의 한계라고 스스로 생각하고 있는 무엇인가를 넘기위한 뇌의 싸이코 댄스가 시작된다. 그 댄스 중 일부가 실제로 먹히면 그 댄스에 아이디어라는 이름이 붙게 된다.

아이디어는 사고의 형태에 붙는 명칭이 아니라 이미 일어난 사고에 붙이는 자격이다.

  1. 아파치 웹서버 등에 들어있는, 주소를 처리해서 미리 정해놓은 인터페이스로 연결해주는 모듈이다. 텍스트큐브의 글들의 주소가 괴상한 숫자등이 아니라 읽을 수 있는 문자가 되도록 도와주는 모듈.
이올린에 북마크하기

"물리와 셈틀 이야기" 카테고리의 다른 글

Posted by inureyes

2007/12/25 23:36 2007/12/25 23:36
, ,
Response
No Trackback , 3 Comments
RSS :
http://forest.nubimaru.com/rss/response/2040995

Trackback URL : http://forest.nubimaru.com/trackback/2040995

Comments List

  1. 도아 2007/12/26 13:44 # M/D Reply Permalink

    서버의 환경이 워낙 다양하기 때문에 모두 만족 시키기는 힘들 것 같습니다. 웹 호스팅도 세계적인 표준이 지정되어야 하지 않을지...

    남은 한해 잘 마무리하시고 다가 오는 새해에는 즐거운 일만 가득하시기 바랍니다.

    1. inureyes 2007/12/29 04:27 # M/D Permalink

      노력하고 있습니다.ㅠ_ㅠ 나라마다 선호하는 호스팅 환경이 또 다르더군요. 흑흑

      2008년에는 조금 더 즐거운 미래를 꿈꿀 수 있었으면 합니다.^^

  2. 2008/01/08 03:50 # M/D Reply Permalink

    안녕~먼저 새해 복많이 받으렴~~
    그럼 자격시험은 통과된것인가?? 아님 아직 다른 시험들이 남은건가??
    가끔 너의 홈페이지에 와서 글을 읽는데
    디테일한 내용은 사실 알아들을 수 없지만 이번 글의 주제는 마음에 심히 다가오는군....ㅡㅡ;;
    싸이코 댄스를 직업으로 삼는게 밖에서는 쉬어보이나 실제로는....더구나 실질적으로 힘든것은 아이디어가 되지못한 생각들로 가득차 있으면 하루종일 내가 멀 한지 알 수 없고, 교수는 내가 아무것도 안했다고 생각하지.....ㅠㅠ..
    내 머리속에서 빠져나간 아이디어가 될 수 없는 생각들이 종이로 몇십장 몇백장은 되겠지......그리고 내가 좀더 공부한다면 몇년 후에 이런것들도 퍼즐의 한조각이 될 수 있을지도....(라고 스스로 위안하고 있어...)
    암튼 2008년 화이팅!

Leave a comment
[로그인][오픈아이디란?]
« Previous : 1 : ... 115 : 116 : 117 : 118 : 119 : 120 : 121 : 122 : 123 : ... 1013 : Next »

블로그 이미지

시간의 토양에 기억의 나무를 심으며

- inureyes

Calendar

«   2008/07   »
    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 31    
256명이 RSS를 구독하고 있습니다.

지난 글들

Creative Commons License

이 저작물은 크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다.