뭘 이런걸..

Posted
Filed under Tech/프로그래밍
Neowiz 는 시스템 설치를 PXE 와 kickstart 의 post script 를 이용하여 자동 관리를 하고 있습니다. 회사에서는 이 시스템을 P.I.P.E (본 뜻은 까먹었음. 그냥 파이프라고 함) 라고 칭합니다.

이번에 pipe system 을 migration 을 하고 있는데, 다음주 즈음 대략 몇백대를 동시에 설치할 일이 있어서, web daemon 을 apache 에서 lighttpd 로 변경을 했습니다.

centos 를 테스트 할 때까지만 해도 좋았는데.. redhat 9 의 anaconda 에서 lighttpd 기반에서 kickstart 파일을 받아오지 않는 난감한 사태가 발생을 하더군요. apache 로 가도 상관이 없지만, 몇백대씩 설치를 하려면 apache 로는 1대로는 버틸수가 없다는 문제가 발생을 합니다. 또한, pipe 의 특성상 설치를 하면서 시스템 내부에서 작업을 많이 하게 되는데, apache 로 몇백대를 설치할 경우에는 시스템이 과부하가 걸리게 됩니다.

그래서 고민하다가, 그래 한번 해결해 보자는 오기가 생기더군요. 원래 제가 이 바닥에서 뽀로꾸로 시작해서 오직

안되면 될 때까지 !!!


라는 신념으로 버텨온지라.. 이번에도 누가 이기나 한번 해 보자는 "자포자기"식으로 도전을 하게 되었습니다.

먼저.. 그럼 뭐가 문제일까.. 하고선 lighttpd 를 debug symbol 을 줘서 빌드한 후에 debugging 도 해 보았지만 뚜력한 이유를 알수가 없었고, 그럼 패킷이 어떻게 지나가나 보자.. 하고선 dump 를 떠 보았지만.. 시간만 속절없이 흘러가더군요. 그러다가.. 제대로 되는 패킷과 안되는 패킷을 비교하는 도중 아래의 붉은 글자 부분의 차이를 발견하게 됩니다.

* 400 Bad Request 경우
0x0000: 4510 0069 52fc 4000 4006 e980 7f00 0001 E..iR.@.@....... 0x0010: 7f00 0001 886f 0050 9443 d892 9435 6606 .....o.P.C...5f. 0x0020: 8018 0040 fe5d 0000 0101 080a 92a6 8da3 ...@.].......... 0x0030: 92a6 8a69 4745 5420 2f70 726f 6669 6c65 ...iGET./profile 0x0040: 2f64 6566 6175 6c74 2e72 6564 6861 742e /default.redhat. 0x0050: 392e 6933 3836 2f70 6970 652e 6b73 2048 9.i386/pipe.ks.H 0x0060: 5454 502f 312e 3009 0a TTP/1.0..


* 200 정상적인 경우
0x0000: 4510 0069 52fc 4000 4006 e980 7f00 0001 E..iR.@.@....... 0x0010: 7f00 0001 886f 0050 9443 d892 9435 6606 .....o.P.C...5f. 0x0020: 8018 0040 fe5d 0000 0101 080a 92a6 8da3 ...@.].......... 0x0030: 92a6 8a69 4745 5420 2f70 726f 6669 6c65 ...iGET./profile 0x0040: 2f64 6566 6175 6c74 2e72 6564 6861 742e /default.redhat. 0x0050: 392e 6933 3836 2f70 6970 652e 6b73 2048 9.i386/pipe.ks.H 0x0060: 5454 502f 312e 300d 0a TTP/1.0..


해당 자리는 carrige return (\r) 이 들어가야 할 자리인데.. 대체 09 가 무야 하고 찍어보니.. tab (\t) 를 찍고 있는 것입니다. 이제껏.. query 를 던지면서 왜 똑같은데 안되지 하고 있었는데.. RH9 anaconda 는

GET http://domain.com/uri\t\n


을 찍고 있었던 겁니다. 그러니 될 턱이 없지요 --; 이것 땜시 anaconda 소스와 lighttpd 의 소스를 까보면서 헛되이 시간을 보내고 있었던 것이었습니다. 알고나자 허탈함이 밀려 오면서.. (속으로는 이런 "씹x"...) 여기서 포기해야 하는가 하다가, 들인 시간이 아까와서 다시

안되면 될 때까지 !!!


의 정신으로, lighttpd 가 저 쿼리를 받아들일 수 있도록 수정해 보자는 말도 안되는 결심을 하게 됩니다. 그렇게 한참을 뒤져서 다음의 패치가 나오게 됩니다.

diff -urNp lighttpd-1.4.11.org/src/connections.c lighttpd-1.4.11/src/connections.c --- lighttpd-1.4.11.org/src/connections.c 2006-07-21 00:27:44.000000000 +0900 +++ lighttpd-1.4.11/src/connections.c 2006-07-21 00:26:47.000000000 +0900 @@ -910,15 +910,21 @@ int connection_handle_read_state(server /* check if we need the full package */ if (con->request.request->used == 0) { buffer b; + char *_bptr; b.ptr = c->mem->ptr + c->offset; b.used = c->mem->used - c->offset; + /* fixed redhat 9 anaconda bug */ + _bptr = strstr (b.ptr, "\t\n"); + if ( _bptr != NULL ) *_bptr = '\r'; + + //log_error_write(srv, __FILE__, __LINE__, "ss", "request header1:", b.ptr); if (NULL != (h_term = buffer_search_rnrn(&b))) { /* \r\n\r\n found * - copy everything incl. the terminator to request.request */ buffer_copy_string_len(con->request.request, b.ptr, h_term - b.ptr + 4);


간단하게, \t\n 을 찾아서 \t 를 \r 로 바꾸는 거죠. ^^; 이렇게 하다가 갑자기 포인터로 구현을 해 보고 싶더군요. 전 앞에서 밝혔다 시피 뽀로꾸와 수많은 닥질의 경험으로 오늘날의 바탕을 마련했는데, C 역시 그냥 마구잡이로 소스를 써내려간 막가파로서, 포인터에 대한 이해가 전혀 없이 사용해 왔는데 갑자기 포인터가 이해가 되는 듯한 느낌이 들었습니다. 그래서 별 소용은 없지만 다음과 같은 코드도 만들게 됩니다.

diff -urNp lighttpd-1.4.11.org/src/connections.c lighttpd-1.4.11/src/connections.c --- lighttpd-1.4.11.org/src/connections.c 2006-07-21 00:27:44.000000000 +0900 +++ lighttpd-1.4.11/src/connections.c 2006-07-21 00:26:47.000000000 +0900 @@ -910,15 +910,31 @@ int connection_handle_read_state(server /* check if we need the full package */ if (con->request.request->used == 0) { buffer b; + char *_bptr; b.ptr = c->mem->ptr + c->offset; b.used = c->mem->used - c->offset; + /* fixed redhat 9 anaconda bug */ + if ( strchr (b.ptr, '\t') != NULL ) { + _bptr = b.ptr; + while ( *_bptr != 0 ) { + if ( *_bptr == '\t' ) { + if ( *(_bptr+1) == '\n' ) { + *_bptr = '\r'; + break; + } + } else *_bptr++; + } + } + /* fixed redhat 9 anaconda bug */ + + //log_error_write(srv, __FILE__, __LINE__, "ss", "request header1:", b.ptr); if (NULL != (h_term = buffer_search_rnrn(&b))) { /* \r\n\r\n found * - copy everything incl. the terminator to request.request */ buffer_copy_string_len(con->request.request, b.ptr, h_term - b.ptr + 4);


누워서 침뱉기 일지는 모르겠지만.. 포인터를 사용하면서 한번에 이렇게 써 내려간 적은 처음인 듯 싶습니다. 예전에 기타를 칠때도 한동안 안 늘다가 어느날 갑자기 못치던 것을 치게 되는 경우가 있었는데, 마치 오늘 위의 코드가 그런 경우인 듯 싶습니다. 스스로가 감탄스럽더군요. (저는 가끔 제멋에 뻑 갈때가 종종 있습니다. ^^)

RH9 의 말도 안되는 request query 덕분에, 고생도 엄청 했고, 저런 것까지 처리를 해 주고 있는 apache 에 대해서 새삼스럽게 존경을 하게 되었으며 (괜히 apache 라고 하는게 아니구나..), 이런 코드를 한번만에 만들어 낸 자신에게 감탄도 하고.. (워낙 설계라는 것 없이 하나 보니, 한번에 쓰는 경우는 정말 드물었죠..), 금방 위치를 찾아낸 것도 감탄 스럽고.. 몸은 힘들었지만, 마음은 그대로 나름대로 뿌듯합니다.

처음에는 google 신에게 구걸을 하려고 시도를 했으나, 결국에는 찾지를 못하여.. 이 글로 내가 했던 고생을 좀 덜 수 있으면 다행이라 생각하고 후기를 남깁니다.
2006/07/21 04:01 2006/07/21 04:01
비밀방문자

관리자만 볼 수 있는 댓글입니다.

김정균

ㅎㅎ 버그가 맞네요. \t\n 을 \r\n 으로 하는 것이 목적인데, 제 코드는 \t\r 을 만들고 있었네요. ㅋㅋ 오류 알려 주셔서 감사합니다.

뭐 어차피 이 코드는 실제 패치에 사용한 코드가 아니라 그냥 심심해서 만들어본 코드였으니 상관은 없습니다만..

그리고 요즘 버전은 이 패치가 맞지 않습니다. 그래서 패치 자체도 바뀌었죠. 요즘은..

+ /* if rh9 support flag on, convert \t\n to \r\n */
+ if ( srv->config_storage[0]->rh9support ) {
+ //log_error_write (srv, __FILE__, __LINE__, "s", "RH9 Support flag on";);
+ if ( ch == '\\t' && b.ptr[i+1] == '\n' )
+ b.ptr[i] = '\\r';
+ }

이정도로 처리가 되고 있네요 :-)

popori

역쉬 뽀로꾸 마왕.. 그거땜시 내 점심이 날아간겨?

박정욱

이야.. 그때 그놈이군요.. 당황케했던.. 결국 발견.. @.@

Posted
Filed under Tech/Mozilla
오랜만에 관리하던 extension 들의 버전을 업데이트 해 보았습니다. 다행히도, 언어팩 변경사항이 없어서 별 작업이 없었습니다.

1. Tidy extension 0.7.9.3 update 2. Thunderbird Display mail User Agent 1.3.1 update


별로 한 작업은 없지만.. 그래도 기록으로.. ㅋㅋ

distplay mail user agent 는 언어팩을 저자에게 보냈으니, 다음부터는 따로 작업을 하지 않아도 상관 없지 않을까 예상하고 있습니다. ^^ tidy 는 보내야 할지 말지를 아직 갈등중.. tidy 의 경우에는 help message 들이 있는데, 이걸 아직 모두 번역을 한 상태가 아니라서.. 좀 애매하게 생각하고 있어 보내지를 못하겠네요 쩝.

http://validator.kldp.org 도 업데이트를 해야 하는데.. 귀찮아서.. 쩝.
2006/07/03 17:02 2006/07/03 17:02

미루다가 미루다가 한글팩 업데이트를 단행했습니다. Tidy extension 의 경우에는 옵션 번역은 그리 양이 많지 않은데, help file 번역이 굉장히 많습니다. 더군다나, 0.8 부터는 SGML 파서 - http://validator.w3.org 에서 사용되는 파서 - 를 지원하도록 되어서, 그 양이 더 많아졌습니다. 그래서 업데이트를 할까말까 상당히 갈등을 했습니다. 영문판으로 계속 버텨보다.. 한글이 보고싶어, 드디어 큰 맘을 먹고 단행..

Posted
Filed under 주절주절
휴가라기도 그렇고, 그냥 주말 껴서 1박 2일로 W hotel package 로 휴식을 취했습니다. 어떻게 보면 특급 호텔에서 잔다는 것이 낭비인것 처럼 보일 수도 있지만, 저처럼 비행기 타기 싫어하고, 또 움직이는 것을 극도로 귀찮아 하는 사람에게는 괜찮은 방법입니다. 특히, 럭셔리 모드 1박으로 마눌님 만족을 시켜줄 수 있기 때문에, 보통 3박 4일의 외국 여행을 가는 것 보다 경비 절감 효과가 아주 크답니다. ^^; (이런 쪽으로의 잔머리는 거의 10성에 다다르지 않았나 싶군요 ㅋㅋ)

W hotel 은 6성으로 방마다 테마가 있습니다.

Spa < Spa Junior < Spa sweet
wonderful < media < media junior
Scent

의 테마를 가지고 있으며, Spa 는 말 그대로 Spa 시설의 욕조가 있는 방이고, wonderful 계열의 붉은색 테마 입니다.
Scent 는 청색 테마로, 향기가 테마인데, Scent 는 별로 입니다. (제 취향에는..)

제일 비싼 방은 Spa sweet 이고, 그 다음이 media Junior 인데, (물론 Spa sweet 위에 하나 더 있음다. 위성미가 묶었다는 방.. --) upgrade 혜택을 받아서 Spa sweet 에 한번 묶어 봤는데, 여기서 잔 이후로는 딴 방이 눈에 들어오지 않더이다 --;

이번에는 한국 vs 스위스 전을 W 에서 보겠다는 마눌님의 의지에 의해 주말에 가서, upgrade 혜택을 받지 못하고 그냥 Spa Junior 에 여장을 풀게 되었네요.

수영장 가서 군이랑 놀아주기.. 산보, 새벽 한국전 응원(전 잤습니다. ^^) 으로 하루를 보냈고, wife 의 한국전 응원 때문에 다음날 완전히 녹초가 되어 버렸음 --;

사진 보기..

2006/06/26 16:14 2006/06/26 16:14
popori

앙 거기 또 갔구나.. 매년 너무 울궈먹는거 아녀요?

박정욱

아아~~ 부러워요~~ 나도 빨리 장가가서 잔머리 10성 해봤음 한다는 ㅋㅋ

Posted
Filed under 군이
군이랑 해질 무렵 아파트 앞 마당에서 파워레인저 전투씬을 찍어 보았습니다. 엄마에게 파워레인저 동화책으로 만들어 달라고 해야 겠군요. 여기선 간단 스토리보드를.. :-)

대치중


저녁 석양이 지기 시작하는 무렵 황량한 벌판(실은 아파트 앞 마당)에서 빨간 파워레인저와 노란 파워레인저가 괴물 2마리가 전투를 하기 위해 대형을 갖추고 있다. 파워레인저 로봇은 심판을 보는 것인가? 아니면 그냥 저기에 서있는 것인지는 모르겠다 --;

파란 파워레인저는 어디갔는지 모르겠고.. (땡땡이를 치는 건가? 아님 무서워서 숨어 있는 건가?) 괴물 한마리는 집 침대 옆에 버려져 있다. (군이는 모른다 ㅋㅋ)

전투중


드디어 전투가 시작이 되고, 빨간 파워레인저와 노란 파워레인저는 각각 괴물 1마리씩과 1대1 전투를 시작했다. 노란 파워레인저는 파워레인저 수첩을 이용하여 "똥딴" - 이건 파워레인저 수첩에서 나는 소리를 군이가 따라하는 의성어다 - 을 하고 있고, 빨간 파워레인저는 해골 괴물에게 덮침을 당하고 있다.

도와줘!


빨간 파워레인저는 해골 괴물에게 고전을 면치 못하고 있고, 괴물을 해치운 노란 파워레인저가 빨간 파워레인저를 도우려 하고 있다.

승리의 포즈를..


노란 파워레인저의 도움으로 해골 괴물을 무찌르고(비.. 비겁한..) 승리의 포즈를 취하는 빨간 파워레인저와 노란 파워레인저.. 괴물 두마리는 포개어져 쓰러져 있다. 정의는 항상 승리한다. (비겁하게 ㅋㅋ)


전투가 끝나고 스토리보드 작성에 도움을 준 군이와 함께한 엔딩화면.. 역시 필자는 찍사인 관계로 출연하지 못한다.

파워레인저 출연진

2006/05/21 21:01 2006/05/21 21:01
Posted
Filed under 주절주절
2006년 5월 9일 점검 후에 하남의 장수촌이라는 곳에서 팀원끼리 회식을 한 사진들 입니다. 찍사인 이유로 (비록 카메라 폰이지만.. ^^) 전 없습니다.

네오위즈 network 를 관리하는 송민석님


현재 네오위즈 네트워크를 좌지우지 하는 분입니다. 나이는 저와는 좀 차이가 많이 나는 편이지만, 업무 처리면과 네트워크에 관련된 분야에서의 실력은 제가 제 분야에서 가지고 있는 만큼 실력을 가지고 계신 분입니다. 요즘 제가 네트워크에 대해서 잘 모르겠는 부분을 열심히 물어보면서 슬쩍 지식을 훔쳐내고 있습니다. ㅋㅋ


시스템팀 이상신 팀장님과 피파 온라인을 담당하는 박정욱님. 두 분은 찍사의 위치상 독사진 구도가 나오지 않아 2장을 찍어 드렸습니다. :-)

스페셜포스를 담당하는 이진성님


대박 게임을 담당 하셔서.. 월드컵때 회사에서 독일을 보내 준답니다. 작년에는 동경 게임쇼도 갔다 왔습니다. 부럽3 --+

네오위즈 backend 시스템을 담당하는 장현성님


90년대 후반 부터 알고 지내던 후배를 이번에 제 부사수로 데려왔습니다. 매일 구박만 받지만, 마음씨가 좋아서인지 항상 웃습니다. 아마 내가 왜 구박하는지 잘 알고 있을거라 믿습니다. 강하게 키워야해!!

그 외, 시스템팀 SE 채널을 담당하시는 박효신님, pmang web game 을 담당하시는 김동하님, 모니터링및 L4 장비들을 담당하시는 김주희님, 보안을 담당하시는 정정화님.. 등등 미쳐 같이 못오신 분들도 나중에 꼭 찍어 드리죠. 카메라 폰으로 ㅋㅋ
2006/05/21 20:37 2006/05/21 20:37
popori

머야 분위기 좋구만.. -- 나 없으니 더 좋은거 같네
여기 글남기는 사람들은 다 없어지는건가?

김정균

음.. 버리고 간 사람이 누군데.. --+

박정욱

나 게임말고 다른 것도 많이 맡고 있는데.. ㅎㅎ

Posted
Filed under 주절주절
방명록과 댓글이 달리지 않아서 왜그런가 했더니.. 스킨을 잘못 고쳐서 방명록과 댓글이 등록이 되고 있지 않았더군요. 디폴트 스킨이 제대로 작동하는 것으로 보아서는 스킨 문제인 듯 싶은데.. 도저히 모르겠어서 결국에는 메인 코드의 java script 를 고치고 말았습니다. 이게 먼 짓인지..

회사에서는.. 아주 짧은 기간에 아주 많은 일을 해야 하는 프로젝트를 진행 중인데, 내일 모래 오픈을 기다리며, 겨우 완성해 놓은 dist UI program 을 일주일 전 소스로 덮어쓰기를 하고 만 엄청난 사태도 당해 버렸습니다. 그래서 현재 닥질을 하며 복구 중인데, 기억이 잘 안나네요. 어떻게 만들어야 하느냐가 문제가 아니라.. 무엇을 만들어야 하는지가 기억이 나지를 않는 것이 더 .. T.T
2006/05/17 03:21 2006/05/17 03:21
Posted
Filed under 주절주절
흠.. 작년 하반기에 큰맘먹고 카메라 달린 mobile 을 장만했는데, 사진을 보니 내 사진은 없고 군이 사진만 가득하군요. 요 근래의 내 사진이 없어 정리해 봅니다.

종우랑  유람선


mobile 새로 산지 얼만 안되서 작년 9월 21일 한강 유람선을 타러 가서 찍은 사진입니다. 이 때만 해도 말을 잘 못해서 "큰 배 타러가자~~" 고 막 떼쓸데 였죠. 군이 눈에는 유람선이 큰 배 였나 봅니다. --;

잠실 롯데

롯데 백화점 쇼핑 후



2005년 11월 26일 군이 이모랑 장모님이랑 쇼핑 후에 롯데 백화점 앞에서 찍은 사진입니다. 남자 아이라서 그런지 한 30개월이 지나고 나서 부터는 안기려고 하지를 않아서 이렇게 꼭 잡고서야 같이 사진을 찍을 수 있습니다. --

네오위즈 휴게실


2005년 12월 16일 네오위즈 휴게싶에서 시스템 개발팀의 김 귀현님이 찍어 주신 사진입니다. 살찌고 나서는 사진이 이뿌게 나오지를 않아서 잘 안찍는 편인데, 기습적으로 두방을 찍어 주셨습니다.

마르코폴로


2006년 3월 15일 와이프 생일겸 해서 무역센터 꼭대기의 마르코폴로에서 점심을 먹었습니다. 결혼하고선 처음으로 내가 알아서 예약하고 준비했다고 칭찬 많이 들었습니다. :-)

무스쿠스에서


2006년 4월 15일 잠실 롯데 캐슬 2층에 있는 무스쿠스라는 일식 부페입니다. 역시 같이 사진을 찍기 위해서 "꼼짝마!" 포즈로 한 컷 같이 찍었습니다. :-)

자전거 출근길


3월 말에 부모님 결혼 기념일날 사내 전체 모임에 참석을 하지 못하고, 경품 추첨에 명함만 보내고 왔는데, 자건거가 당첨이 되었습니다. 그 이후로 자전거 출퇴근을 하고 있는데 (일주일에 2일 정도 하는 것 같군요), 4월 16일날 한강에서 한 컷 찍었습니다. 바람이 불어 머리가 무슨 모자처럼 부풀어 올랐군요. --;

정기점검 중


네오위즈는 매월 2,4 주 화요일 새벽에 정기점검을 합니다. 2006년 5월 9일 정기점검 중에 한 컷 찍었으며, 밤에 잠을 뒤척이며 못자서 폐인 모드입니다.
2006/05/09 07:39 2006/05/09 07:39
Posted
Filed under 군이
4월 25일 군이가 태어난지 40개월만에 첫 입원을 했습니다. 감기 증상에 중이염까지 와서 결국에는 2일간 입원을 했는데 아직까지 낫지를 않고 있네요.

입원했어요

입원했어요



퇴원 후에 좀 낫는가 싶더니 결국 어린이날 응급실을 가고 말았습니다. 열이 40도를 넘으면서 완전히 정신을 차리지 못하더군요.

응급실 대기중

응급실 대기중 병든닭 모드



열이 40도를 넘으면서 간호하는데, 잘못된 상식이라는 것은 모두 사용한 듯 싶습니다. 열이 난다고..

1. 머리에 물수건 올려 놓기
2. 얼음물로 체온 내리기
3. 땀 흘리라고 옷 입혀 놓고 이불 덮어씌어 놓기 ..

보통 열을 내리기 위해서 하는 행동들인데, 아주 안좋은 행동입니다. 보통 열을 내리기 위해서는 기화열을 이용하여 체온을 내리는데, 머리에 물수건을 올려 놓으면, 계속 축축한 상태여서 기화가 되지 않습니다. 그리고, 얼음물 (차가운물) 을 이용하는 경우에는 모공을 축소 시켜서 열을 내리지 못한다고 하네요. 그리고 결정적으로 어른들의 경우 감기 걸리고 열날때 땀빼야 한다고 생각하는데, 아기들의 경우에는 오히려 체온이 더 올라갈 수 있다고 합니다. 또한, 체온을 내리기 위해서는 미지근한 물로 몸을 닦아 주어야 하는데, 이 경우에도 해열제를 쓴 상태에서 해 줘야지 그러지 않으면, 몸의 잘못된 온도계가 체온이 내려가서 열을 더 내도록 하게 한답니다. 저와 와이프는 이 모든 잘못된 지식을 이용해서 간호를 하고 있었더랍니다. T.T

차병원에서차병원에서

차병원에서



계속 열이 오르락 내리락 해서 아직까지도 군이는 오락가락 하고 있습니다. 현재 중이염이 계속되서 그렇다고 하는데 안쓰럽군요. 더군다나 와이프까지 군이 간호에 지쳐 고열과 몸살에 시달려.. 저는 아플틈도 없는 상황입니다. T.T 아무래도 군이와 와이프가 다 낫으면, 제 차례일 것 같군요 T.T
2006/05/09 07:11 2006/05/09 07:11
Posted
Filed under 주절주절
한마디로 환장 하겠습니다. migration 자체에는 별 문제가 없었던 듯 싶습니다. 하지만.. 괜히 업데이트를 했다는 생각이 절로 들게하는 짜증나는 요소가 한두개가 아니더군요. 리포팅좀 해 볼까해도, 도대체 어디다 리포팅 하라는 것인지 찾기도 쉽지않고..

일단, 짜증나는 요소 몇가지를 들자면..

1. 반복적인 코드를 여러파일에서 계속 가지고 다니기 2. xhtml 표준에 맞추고는 싶은 것인지? 3. WYSIWYG 이 과연 대세인가?

대략 3가지의 의문점을 가집니다.

하나씩 따져 보자면..

1. 반복적인 코드를 여러 파일에 계속 가지고 다니기....


이 점.. 정말 환장 합니다. 좀 고쳐 보려고 하니.. 코드 한줄 추가하면 되는데.. TT 에서는 include 대신에 계속 반복적으로 같은 코드를 file 에서 직접 가지고 있기 때문에, 여러 파일을 계속 반복적으로 고쳐줘야 하는 단점이 있습니다. 고치려다 보니 환장 하겠더군요. 제 개인적인 생각이지만, GPL 로 내놓기 위해서 코드를 아주 더럽게 만들고자 한 음모론이 있었던 것이 아닌가 생각 됩니다. 만약 이런 이유가 맞다면.. 정말 제대로 성공한 전략이 아닌가 싶습니다. --;

2. xhtml 표준에 맞추고는 싶은 것인지?


이 부분 정말, 강력하게 비판하고 싶습니다. 분명히 1.0 에서 표준을 지키겠다고 했는데, 1.0 skin 중 일부만 지켰다는 것이지, 그나마 css 를 이용한 디자인을 이용했다는 것 뿐이지, 너무 소스코드 안에서는 정말 기본적인 것도 지쳐지지 못했다는 것이 문제입니다. 가령 예를 들어 table tag 에서의 height, td tag 의 background, 그 외의 name method 의 남발.., 중복된 name/id method 사용.. 등.. 더군다나.. 정말 validator 를 돌려 보기나 했을까 싶게 TT 홈페이지에서도 valid 한 페이지를 찾기가 힘듭니다. 이거 맞추려고 고치려다 보니 성질이 확 나더군요.

아니, 여기까지는.. any browser 에서 표현이 되기만 한다면.. 문제가 없다고 칠 수 있겠습니다. 하지만 url link 의 한글 encode 처리는 기본인데.. 이것을 빼먹었다는 것은 정말 아니라고 생각 됩니다. 링크가 깨지는 문제가 발생할 수 있는 문제인데..


3. WYSIWYG 이 과연 대세인가?


이 부분은 가장 비판을 가하고 싶은 부분입니다. 1.0 올라오면서 아주 개판이 되었다고 생각되는 부분 중에 하나 입니다. 물론 HTML 코드를 제대로 사용하지 못하거나, WYSISYG 이 표현해 주는 것에 불만이 없다면 상관이 없겠지만, 내가 표현하려고 하는 HTML 코드를 자기 마음대로 변경한다는 점에서는 아주 미치고 환장 하는 기능 입니다. 더군다나, WYSIWYG 을 사용하지 않으려고 해도, 이미 WYSIWYG 이 변경한 코드를 TEXTAREA 로 넘겨 주는데서는 아주 환장 하겠더군요.

그래서.. 아예 script/editor.js 에서 WYSIWYG 을 사용하지 못하도록 수정.. --;

더 화가 나는 것은.. 왜.. "\n" 를 강제로 br tag 로 바꾸는 것인지는 더 이해가 가지 않습니다. 저 개인적으로는 (제가 만든 게시판에서도..) 결코 사용자가 의도하지 않은 일을 발생하게 하는 것은 좋지 않은 개발 방향으로 생각이 됩니다만.. TT 에서는 왜이런 정책을 사용하려는지 좀 아쉽습니다.

결론은.. 현재 다시 0.9x 로 내릴지.. 아니면 아쉽더라도 그냥 갈지를 결정해야 하는데.. 현재 상태에서는 정말 머리 아픕니다. 유지하는데도 머리가 아프고.. (고친 것이 많아서..), 다시 back 하자니.. 새로 올린 글들을 포기해야 할 수도 있다는 점이.. 나를 귀찮게 합니다. --;
2006/04/17 01:45 2006/04/17 01:45
신현석

HTML Tidy extension은 무지 좋은 툴입니다. 일일이 validation을 해보지 않아도 바로바로 에러나 경고를 확인 할 수 있으니까요. 하지만 HTML Tidy extension이 완전한 validation을 하는 것은 아니기 때문에 (DTD기준이 아닙니다.) HTML Tidy에서 어느정도 테스트 후에 W3C Validator로 최종적으로 확인을 해 보는 것이 좋습니다.

저도 태터의 2% 모자란 부분들 때문에 아쉬워하고 있었는데 앞으로는 더 나아지기를 바랍니다.

inureyes

카테고리 트리에 오류가 발생하는 부분은, 1.0 이상에서는 [## _category_list_ ##] 치환자를 따로 제공합니다. (저도 몰랐어요 ㅠ_ㅠ) 트리 스킨의 레거시때문에 예전 방식을 일단 남겨둔 것 같습니다. 그 쪽을 사용하시는 것이 좋을 것 같습니다. 이 쪽으로 바꾸니 validation은 통과하는군요 :) only리눅스에 firefox 유저라 web developer toolbar는 잘 사용하고 있습니다만, tidy extension은 써보질 않았네요 :) 감사합니다.

관리자 메뉴는... 아직 답이 안 나옵니다. =_= 모두 문제를 알고는 있는데 일단 잘 돌아가니 뒤로 미루자고 하고 있습니다. 아침놀님 중간고사 끝나면 왕창 찔러볼렵니다.

urlencode관련해서는 게시판에 엄청 다양한 이야기들이 있습니다. :( 이유는 아직 파악중이지만 서버에 따라 희한한 동작을 보이는 경우가 있다고 하네요. 현재는 경우에 따라 소스의 그 부분을 수정하는 쪽을 권하고 있습니다. 태터 내부에 구현된 iconv를 이용해서 수동으로 파싱해 보는 것은 어떨까라는 생각도 해 보았습니다만, 속도가 걸려 다른 분들께 아직 이야기를 꺼내지는 못했습니다. (chester님의 목표는 태터 하나 설치한 후 mod_alias 전용 모드에서 10만명 이상 사용이 가능한 툴인것 같습니다 =_=)

위지윅부분은... 이야기 꺼내 보겠습니다. :) 안되면 억지로라도... (장기적 로드맵에 에디터 모듈의 독립이 있습니다. 그 때가 되면 쉽게 에디터 모듈 자체를 교환할 수 있게 되겠지만, 그게 언젠지 며느리도 몰라요; )

저도 sandbox 에 commit 권한 획득한지 이제 열흘이라, 아직 소스파악에 정신이 없는 상태입니다. 수정하신 부분 많으시고 다른 분들에게도 필요하다 싶으시면 그 부분 많이 도와주세요 ㅠ_ㅠ 게시판에 올려주시면 확인 후 바로 commit해 보겠습니다.

inureyes

아는대로만 답변해 보겠습니다.

첫번째 지적은, dev.tattertools.com에서 소스트리 다운로드 받으시면 알겠지만 원래 소스트리는 안 그렇게 생겼습니다 :) 나중에 배포본을 만들 때 소스트리의 include된 것들 중에서 필요한 함수만 골라서 그런식의 output을 따로 만들어내는 프로그램이 있습니다. 사용자 입장에서의 브라우저 로드를 줄이기 위한 최적화 프로그램이죠. (물론 오리지널 소스트리를 가져다 설치해도 잘 돌아갑니다. 전 그렇게 쓰고 있습니다:) )

두번째 문제는, 켁; 제 블로그도 validation error가 두 개가 뜨는군요. 그리고 url관련해서는 제 경험상 url encoding 이 utf8이 아닌 형태로 나가는 것을 본 적이 없어서 잘 모르겠습니다^^

세번째 문제는 wygiwyg 모드를 켜고 끌 수 있는 옵션을 추가하면 될 것 같네요. 내일이나 모레 시간 나면 추가해서 소스트리에 commit 해 보겠습니다.

개선할 점이나 여러가지 의견 등등은 http://www.tattertools.com/ko/forum 에서 많은 사람들이 의논하고 있으니, 와서 이런저런 의견을 주시거나 직접 소스코드에 대한 의견을 주시거나 하시면 될 듯 합니다. :)

김정균

앗.. 개발자이신가 보군요. 감사합니다. source include 문제는 내심으로는 그렇게 생각하기는 했습니다. 그냥 좀 웃자고 한 표현이었고요.

두번째 문제는.. w3c 의 validator 를 돌리시면 2개 밖에 안나오지만, 이는 parsing 을 멈춰서 그런 것이고요. 실제로 완전히 돌려 보시면 경고가 꽤 많습니다. 개발을 하시는 것이라면 firefox 에 tidy extension 을 설치하시고 작업을 해 보시면, 브라우저 우측 하단에 에러/경고 를 표시해 주므로, 작업에 한결 편리하실 겁니다. 특히 눈에 거슬리는 부분은 메뉴 트리 부분의 name attritubute 를 이용하고 있는 부분과, 관리 메뉴의 필터링 관련 메뉴에서 name attribute 와 id attribute (name attribute 는 사용하지 않는 것이 표준 입니다.) 가 유일값이어야 하는데 중복값을 왕창 가지고 있다는 부분입니다.

또한, urlencode 문제는 ascii 값 외에는 %AC 와 같이 encoding 처리를 해야 합니다. 한글 환경에서는 (utf8이든 euc-kr 이든..) 메뉴나 태그에서 한글이 나오기 쉬우므로, 이 부분은 php 의 경우 urlencode 함수를 이용해서 encoding 을 해 주어야 합니다.

wygiwyg mode 를 끌 수 있는 옵션은 정말 바라고 바라고 있겠습니다. :-)

Posted
Filed under Tech/안녕리눅스
안녕 리눅스 1.2 R3 가 릴리즈 되었습니다.

커널 2.4 를 사용하는 1.x serise 는 1.2 R2 에서 정리하려고 했는데.. 어찌하다 보니 R3 까지 나오게 되었습니다.

2.0 작업을 전혀 안하고 있는 것은 아니지만, 이제껏은 귀찮아서 밀리고 있었는데, 요즘은 정말 시간이 없어서 밀리는 현상이 발생을 하네요. 올해로 10년차인데.. 이렇게 정신없이 일을 해 보는 것은 처음 인 듯 싶습니다.

1.2 R3 는 커널 보안 업데이트 및, 신규 chipset driver 들이 몇몇 업데이트가 되었습니다. 기존에 installer 에서 잡히지 않던 e1000/tg3/3w-9xxx 등이 새로이 installer 에서 지원이 가능하며, ML 150 에 포함되어 있는 aar81xx SATA driver 의 경우에는 addon 으로 제공을 합니다. (aar81xx 는 지원 장담 못함 --)

뭐 어쨌든.. 또하나의 버전이 릴리즈 되었고.. 언제까지 커널 2.4 를 우려 먹는지 저도 한번 지켜봐야 겠습니다. ^^;

아마.. 장비만 주어진다면.. 2.x 는 어쪄면 x86_64 (AMD Dual Core) 용이 먼저 나오게 될 지도 모르겠습니다.
2006/04/02 05:49 2006/04/02 05:49
골빈해커

여기가 김정균님 블로그였군요. 몰랐네요^^;
안녕리눅스는 정말 감사히 잘 사용하고 있습니다. 특별히 따로 써야 할 기능이 없다면 생각없이 사용할 수 있는 서버로는 최고인 것 같습니다. (칭찬인거 아시죠?;; )
언젠가 돈을 많이 벌게되는 날이 오면 개발용 서버라도 보태드릴께요(...)