Strict Standards: Non-static method Soojung::addReferer() should not be called statically in /home/lifthrasiir/sites/sapzil.info/soojung/settings.php on line 79

Warning: Cannot modify header information - headers already sent by (output started at /home/lifthrasiir/sites/sapzil.info/soojung/settings.php:79) in /home/lifthrasiir/sites/sapzil.info/soojung/classes/Counter.class.php on line 63

Strict Standards: Non-static method Entry::getEntry() should not be called statically in /home/lifthrasiir/sites/sapzil.info/soojung/entry.php on line 51

Strict Standards: Non-static method Soojung::entryIdToFilename() should not be called statically in /home/lifthrasiir/sites/sapzil.info/soojung/classes/Entry.class.php on line 182

Strict Standards: Non-static method Soojung::queryFilenameMatch() should not be called statically in /home/lifthrasiir/sites/sapzil.info/soojung/classes/Soojung.class.php on line 55
TokigunStudio3 | 블로그: 최악의 삽질

내용으로 바로 넘어 가기


TokigunStudio3

228 / 3282   


더 이상 이 블로그는 운영되지 않습니다. 새 블로그로 가 주세요.

최악의 삽질

2004/08/09 PM 11:56 | [옛글] 컴퓨터 삽질 기록 | 0 comments | 0 trackbacks | AllBlog: vote, to pocket

일러두기: 이 글은 옛날에 사용하던 엔비 블로그에서 가져 온 것으로, 원문은 여기에서 볼 수 있습니다.

저야 뭐 컴퓨터로 삽질하는 걸 좋아하고 즐기는 인간이다 보니까 삽질하는 것에 대해서 회의는 없습니다만... 그래도 이런 삽질은 하기 싫군요. _-_; 오늘의 삽질은 카운터 스크립트에서 발생한 환장하는 문제였습니다.

엔비는 아직 베타 서비스다 보니까 문제가 약간 약간씩 드러납니다. 서비스 자체에는 뭐 불만이 있을 리가 없는데 버그가 저를 귀찮게 하는 거죠. 이번 버그는 템플릿에서 발생하는 건데, &가 들어 가면 그게 다음 수정때는 &로 바뀌어서-_- 나옵니다. (정확하게는 HTML 자체는 &로 출력되겠지요) 이러다 보니까 좀 수정 좀 할라 치면 카운터에 포함된 &가 &... 식으로 무한 반복을 하질 않나... 도저히 고쳐질 때까지 기다릴 수 없게 된 저는 이 문제를 일단 땜빵용 자바스크립트로 해결하기로 마음 먹었습니다. &가 들어 있으면 문제가 발생하니까 & 대신 딴 문자(여기서는 |)로 써 놓고 최종적으로 출력할 때 &로 바꾸면 되지 않겠냐는 게 제 방법이었죠.

중복되는 부분들을 적당히 문자열로 빼고 빼니까 이런 코드가 나왔습니다. .replace(/\|/,unescape('%26'))이 핵심 부분입니다. (|를 unescape('%26') == &로 바꾸는 부분)

<script type="text/x-javascript">a='<a href="http://counter.cgiworld.net/cgi-bin/redirect.cgi?id=tokigun0"><img src="http://counter.cgiworld.net/cgi-bin/counter.cgi?id=tokigun0|d=c|r=0|g=0|b=0|l=c_';b='" width="90" height="16" style="border:0px;" alt="tokigun.enbee.com ';c=', powered by HolyNet Free Counter" align="absmiddle"></a>';document.write('<span style="color:white;">'+a+'aqua|no=7'+b+'Visitors'+c+' visitors + '+a+'snow|no=8'+b+'Pageviews'+c+' pageview</span>'.replace(/\|/,unescape('%26'));</script>

그러나 rebuild 후에 확인해 보니 스크립트 자체가 실행되지 않는 것이었습니다. 무슨 문제일까 고민하던 저는 HTML 파일 만들어서 확인해 보고 나서야 첫째 버그를 찾아 냈습니다. text/javascript만 인식하는 것이었습니다. OTL (text/x-javascript로 되어 있는 걸 어디서 봐서 그것 때문에 저렇게 쓴 모양입니다;)

<script type="text/javascript">BLAHBLAHBLAHBLAH</script>

그러나 고친 소스가 출력하는 내용을 보니까 이미지가 깨지는 것이었습니다. 보니까 |가 &로 안 바뀌어 있더군요. -_- 한참 생각하다가 문제를 알아 냈습니다. .replace(...)를 적용하는 게 한 문자열이 아니라 +로 연결된 문자열 수식인데 괄호로 안 묶은 것이었습니다. OTL;;

<script type="text/javascript">BLAHBLAH;document.write((BLAHBLAH).replace(/\|/,unescape('%26'));</script>

하지만 그래도 고쳐지진 않는 것이었습니다. 보다 못한 저는 아예 replace의 인수들을 고쳐 놓고 되는 지 안 되는 지 테스트해 보다가, 혹시나 제가 잘못 쓴 거 아닌가 하고 DevGuru의 자바스크립트 레퍼런스에서 replace()를 찾아 보기도 하고 한참 삽질을 했습니다. 그러다가 document.write가 아니라 alert로 대체하고 테스트하던 중 제 실수를 알아 차렸습니다. 뭘까요?






...global match를 안 해서 처음에 나오는 | 하나만 바뀌었던 겁니다. OTL;;;;;;;; (/../g 이렇게 g를 붙여 줘야 하는데... -_-;;) 이렇게 하니까 잘 되더만요. -_-;

<script type="text/javascript">BLAHBLAH;document.write((BLAHBLAH).replace(/\|/g,unescape('%26'));</script>

으으... -_-; 이 덕분에 30분 삽질했습니다. 으흑흑흑흑. 아까운 30분!


그런데 사실 저는 이런 삽질을 평소에 자주 합니다. 역시 삽질 대마왕은 어딜 가나 삽질 뿐인 것인가... (┓-)

TrackBack URL: http://sapzil.info/soojung/trackback.php?blogid=364

Copyright (c) 1995-2005, Kang Seonghoon (Tokigun).