Daybreakin Things

Posted
Filed under 살아가기, 생각하기
드디어 오늘 대통령 과학 장학생 면접을 보고 왔다.
거의 가장 마지막이었는지 면접 끝나고 나오니 과학재단 직원분들이 자리에 놓인 번호표를 정리하고 계셨다.

우리 학교 애들은 대부분 어제 면접이었고 나를 포함하여 5명만이 오늘 면접이었는데, 어제 면접 보고 온 아이들의 경험담을 들어보건대 매우 '이상야릇'한 면접이었다. 어떤 아이는 다른 아이의 면접자료로 면접을 보다가 '어, 그거 제꺼 아닌데요' 라고 해서, 물어보던 그 교수한테 다른 교수(심사 교수가 5명이었다)들이 면박을 주어 금방 면접이 끝났다는 경우도 있었고, 한 녀석은 계속 과학논술 자료만 가지고 물어봤었다고 한다(그냥 물어본 게 아니라 설명하려고만 하면 말을 끊었다고 한다). 그 외에도 우리 학교 학생 둘이 연속으로 보는데 뜬금없이 뒤에 아이한테 앞에 나간 아이의 장단점을 말해 보라는 질문을 던지기도 했단다. 전체적인 아이들의 결론은 패널(면접조)마다 교수도 제각각이고 평가관점도 제각각이라 면접의 변별력이 별로 없을 것 같다고 하였다.

아무튼, 나는 오늘 가서 면접을 치뤘는데, 난 다행히 별다른 특별한 점(?) 없이 잘 끝났다. 일단 학업계획과 과학논술에 대해 5분 정도 설명하라길래 KAIST에 붙었고 무얼 공부하고 싶고 인지과학이란 분야에 왜 관심을 가지게 되었는지, 그것이 어떤 학문인지 죽 설명했고, 이어서 인지과학, 로보틱스 관련 질문들이 있었다. 준호와 같이 했던 과학전람회 실험결과를 아는지 물어보기도 했고, 마지막에는 왜 대장금(대통령과학장학금)을 신청했는지와 국가에 대한 의무를 어떻게 생각하냐고 물어보았다.

위의 내용들에는 뭐 그런대로 다 잘 대답한 것 같은데, (논술 내용에 대한 프레젠테이션 준비를 사전에 전혀 못했기 때문에 처음에 좀 버벅거리긴 했지만) 중간에 테러성 문제가 하나 있었다. 질문 패턴을 보니 물리학과 교수님인 것 같은데 뜬금없이 "도선에서 전자의 속도는 1초에 수 cm 밖에 안 되는데 어떻게 스위치를 누르면 전깃불은 바로 켜지느냐"라는 것이었다. 다행히 아는 [#I_내용|(close)| 전자는 천천히 움직이지만 전기장의 변화(전압에 의한)는 빛의 속도로 전달되기 때문_I#]이어서 잘 대답했으나 갑자기 전자의 역할이 뭐냐고 물었다. (물론, 이것도 사실은 아는 [#I_내용|(close)| 에너지의 전달_I#]이었지만) 이때 긴장해서인지 갑자기 생각이 안 나서 좀 어물쩡거리다가 결국 교수님이 나한테 설명해 주셨다. 그래서 '망했다' 생각하고 있었는데 심사 교수님들이 마지막에 '대답을 또박또박 잘해서 좋았다고 하면서 좋은 소식 있길 바란다'라고 하셔서 조금은 안심이 된다.

그런데 애들한테 내 면접 이야기를 해 주니 매우매우 정상적으로 봤다면서 거의 붙은 것 같다고 부러워하는 것이다. 어쨌든 면접까지 잘 마무리된 것 같아 좋다.
(이제 학교홈페이지, 기숙사 관리와 논문 정리만(?)이 남았다... ㅜㅜ)
Posted
Filed under 컴퓨터
Trackback : http://inureyes.bluemime.com/forest/index.php?pl=308

태터 센터를 돌아다니다가 유용한 정보를 발견했습니다.

물론 태터센터의 설명나 태터툴즈 자체의 스킨을 보고 분석해서 스킨을 만드는 것도 가능하지만 도저히 귀찮아서(-_-) 관두고 있던 터에 아주 좋은 가이드가 될 것 같네요.

나중에 시간 나면(과연 시간이 날지는 아무도 모르...) 함 만들어봐야겠군요.. (적어도 학교홈페이지 만드는 것보단 쉽겠죠..)
Posted
Filed under 컴퓨터
이번에 학교 홈페이지를 만들면서 정말 짜증났던 것이 하나 있다.

stylesheet를 사용해서 block element에 대한 레이아웃을 정의하다 보면 필수적으로 padding(안여백), border(테두리), margin(바깥여백)에 대한 속성을 설정하게 된다.

그런데 아무리 해도 IE와 Firefox 양쪽 모두에서 동일하게 맞출 수가 없었다. 왜 그런고 하니, width와 height를 서로 다르게 해석하고 있더라는 것이다.

즉, 다음 그림과 같이 말이다.


이것은 참 난감한 문제가 아닐 수 없었는데 결국 고심한 끝에 토끼군과 찾아낸 해결방법은 다음과 같다.

1. 먼저 margin과 원하는 width(Firefox의 의미로)를 갖는 바깥쪽 block element를 만든다.
2. 그 안에 원하는 padding을 갖고 width를 갖지 않는 안쪽 block element를 만든다.

이중으로 하면 양쪽에서 모두 동일하게 보인다.
젠장.. 이런 경우는 정말 난감할 뿐인데 혹시나 다른 분들도 이거 보고 더 이상 고생하시는 분들 없기를...

ps. 뭐 이 외에도 몇가지가 더 있는데 tr 태그에 대한 border 설정이 IE에서는 제대로 안 먹힌다는 점, IE와 Firefox의 상속 프로퍼티가 다르다는 것(특히 text-align) 등등이 있다.
Posted
Filed under 살아가기, 생각하기
태어나서 단기간에 이렇게 중요도가 높은 일들을 한꺼번에 해야 하는 것은 이번주가 처음인 듯하다.

대통령과학장학생 결과발표(20일) 및 면접(22~24일중 하루)에 학교 축제인 솔대제 공연에 사용할 Forte(공연은 26일이나 편곡은 19일이고 리허설은 22일, 퓨전 오케스트라 동아리)에 쓸 악보 편곡, 학교 홈페이지 제작(22일 오픈, 특히 HTML, CSS, Flash 디자인을 맡음 - 노가다!-_-), 졸업논문 최종본 제출(20일), 휴먼테크 논문 작성(기한은 26일이지만 실제로는 24일까지).....

어제도 아침 8시부터 새벽 3시까지 학교 홈페이지 작업만 했는데 아직도 요원한 듯 하다.. (어젠 특히나 Flash 액션스크립트에서 무비클립에 설정한 변수가 loadMovie 액션과 함께 갑자기 증발해버리는 현상과, 그 전날은 block element에 대한 스타일시트에서 margin - border - padding에 대해 width를 서로 다르게 해석하는 firefox와 IE의 차이 때문에 몇시간씩 골머릴 썩었다.. ㅜㅜ)

아무튼 이번엔 정말 힘든 주가 될 것이다.
Posted
Filed under 만들어내기
홍보동영상, 학교시설견학, 찾아오시는 길 링크 Flash




(현재 링크는 그냥 daum.net , kshs.hs.kr, daybreakerinfo로 되어 있습니다)
Posted
Filed under 만들어내기
메인화면에 들어갈 플래쉬입니다.




Posted
Filed under 살아가기, 생각하기
작전 성공.

아래 포스트에서 나온 편집 부분인데, 사이트 관리자가 올리면서 제멋대로(아마 위지윅 에디터 같은 것으로 긁었으리라 생각됨 -_-) 고치긴 했으나 내가 코멘트로 넣어둔 저 부분은 그대로 올라갔다. (일부러 남겨둔 것인지는 잘 모르겠다)

아무튼 작전 성공이다.. -_-;;

ps.

Posted
Filed under 살아가기, 생각하기
저녁 먹으러 가기 전에 잠시 짬내서 글을 써 봅니다..

글 보기

Posted
Filed under 살아가기, 생각하기
얼마 전의 포스트 중에 노트북 배터리가 결국 배신했다는 이야기(10분만에 0%로 떨어지고 55분만에 전원 off...)가 있는데, 이번 졸업여행에서도 역시 마찬가지여서 모든 옵션을 최저로 놓고 윈엠프도 Classic 스킨(CPU 소모율이 매우 적음)으로 바꾸어 음악만 듣는데 겨우 2시간 30분 정도 갈 정도였다. (AC 전원에서 만땅으로 충전해 쓰다가 전원 뽑고 처음 노트북을 켜면 배터리가 60% 정도로 나왔을 정도다)

그런데, 오늘 해남에서 올라오는 길에 노트북을 그렇게 틀었는데, 부팅 후에도 100%가 유지되는 것이 신기했다. 게다가 포토샵과 3D 애니메이션 및 비주얼 베이직 등등을 번갈아 가며 1시간동안 돌렸는데 불과 5%밖에(-_-) 줄지 않았던 것이다. 물론 그렇게밖에 줄지 않는다는 것은 잔량 표시기가 완전히 맛이 갔다고밖에 할 수 없으므로 어차피 믿지는 않았지만 그렇게 2시간이 넘게 작업을 했는데도 전원이 꺼지지 않고 잘 유지되었다. -_-;;

그러다가 학교에 도착해서 짐 챙기고 내리느라 잠시 대기모드로 바꾸었는데 이제서야 잔량 표시기가 제대로 돌아왔는지 7% 남았다고 표시되고 있다. (그런데, 남은 사용시간이 3시간으로 표시되고 있음...)

드디어 노트북 배터리가 정상으로 되돌아온 것인가!!

ps. 옆에 있던 다른 친구에게 물어보니 배터리 수명이 막판에 갑자기 늘어났다가 며칠 있으면 켠 후 몇 분 이내에 꺼지는 배터리로 될 거라고 한다... ㅠㅠ
Posted
Filed under 살아가기, 생각하기
지금은 졸업여행으로 해남 땅끝 마을입니다..

비치 모텔이라는 곳에 묵고 있는데, 노트북을 가져왔더니 비록 2 Mbps이긴 하지만 인터넷이 잘 되는군요.. ^^;;

이렇게 되면 아무래도 더 오랫동안 폐인짓을 하게 되지 않을까 생각되는...;;

그럼 이만~
Posted
Filed under 컴퓨터
우리나라에서는 거의 완벽하게 망한 게임이지만 스타크래프트가 처음 나오기 약 6개월쯤 전에 세간의 화제를 모으며 출시되었던 한 고전 게임이 있었다.

이름하여 Total Annihilation!
'완전 전멸'이라는 뜻의 제목은 은하계에서 Arm과 Core 두 파 사이의 오랜 갈등을 암시하고 있다.
(요즘에 이 게임을 아냐고 물어보면 대부분의 사람들은 그 후에 나왔던 Total Annihilation:Kingdoms를 떠올리는데 이건 그 전의 Original 버전으로 중세풍의 배경이 아닌 우주에서 로봇들로 싸우는 이른바 '메카닉 토탈'이다)

게임 소개는 나중에 자세히 하기로 하고, 여기서 이야기하려고 하는 것은 원래 Single과 Multi 2개로 나누어져 있는, 내가 소장하고 있던(?) 이 게임의 정품 CD를 한 장으로 합치는 것에 관한 것이다. 요즘은 어차피 가상 드라이브로 돌리므로 나도 Multi 용 CD를 하드에 이미지를 떠 놓고 사용하고 있었는데 가끔은 오리지날 캠페인도 하고 싶을 때가 있었다.

그래서, 두 시디를 합쳐 보기로 하였는데, CD의 내용물을 잘 살펴보니 totala.id라는 파일이 루트에 있고 그 내용은 다음과 같았다.
[CODE] [Contents] { multiplayer = 1; campaign = 0; } [/CODE]
(물론, single용 CD는 1과 0이 반대였고, 당연히 모두 1로 놓으면 게임 상에서는 이 CD가 싱글도 되고 멀티도 되는 걸로 인식할 거라는 것은 쉽게 알 수 있었다)

예전에 이 게임의 내부 데이터 파일(*.hpi, *.ufo, *.ccx)을 분석하는 툴을 가지고 놀았던 경험이 있기에 단번에 single cd의 totala4.hpi만 multi cd에 합치면 될 거라는 것을 알 수 있었다.

결국, CD안의 파일들을 모두 하드로 복사하고, 오디오 트랙을 따로 추출한 다음(CDEx1.5 이용) Nero를 이용하여 Mix 모드로 가상 이미지를 만든 후 데몬에 넣어 돌린 상태에서 클론CD로 구웠다. (무려 860MB짜리 오버버닝... 내 놋북 ODD가 잘 버텨준 게 신기하다. 그리고, 네로에서 바로 안 구웠던 이유는 네로에서 오버버닝 옵션을 선택하려고 하면 에러가 나 버렸기 때문-_-)

사실 이렇게 하기 전까지 약간(?)의 삽질을 했었는데 그 이유는 내가 가지고 있던 Nero 6.0이 번들로 제공된 것이라서 Mix 모드로는 레코딩이 안되고 확장 모드로만 되어서 데이터 트랙이 1번이 아니라 2번 세션의 첫 트랙이 되어버렸던 것이다. (그래서 결국 CD 1장 날렸다) 이를 해결한 것은 역시 인터넷상의 뒷경로를 통하여... -_-;

아무튼, 이렇게 해서 실행한 결과 싱글과 멀티를 모두 한 CD로 플레이할 수 있었고 게임 중 배경음악도 잘 나왔다.

그런데, 다른 건 다 잘되는데, 멀티 모드에서 AI가 동작을 안한다는....;; (물론 사람들하고 주로 하므로 크게 관계는 없겠지만) OTL
-> 물론, 오리지날 정품 CD를 넣고 다시 해 봤지만 그때도 맛이 가 있었다.

해결 방법은 3rd Party AI 패치들을 모두 제거(disable)한 후 실행하니 잘 된다. (aiboost.ufo는 그대로 뒀는데 그럭저럭 잘 되는듯)

아무튼, 앞으로 토탈을 할 때 윈엠프를 켜놓지 않고 바로 CD에서 음악을 들으며 할 수 있게 되어 기쁘다.. ^^;;
Posted
Filed under 컴퓨터
나는 내 블로그에 앞으로(-_-) 코드들을 많이 올릴 텐데 저번에 VB Accelerator의 라이브러리를 하나 소개하면서 코드를 적다가 코드 중간의 내용을 설명해야 할 필요가 있어 색 강조를 하려고 보니 태터 툴즈에서 제공하는 [CODE] 블록 때문에 <font> 태그가 전혀 먹히질 않더라는 것이다.

그래서 이번에도 토끼군의 도움을 받아(-_-) 간단히 preg_replace 함수로 처리해 보았다.

inc_function.php 파일을 보면 function set_moreless 부분에
[CODE] unset($n1, $n2, $cval); while ($n1 = strpos($str, "[<span style=display:none></span>CODE]")) { $n2 = strpos($str, "[<span style=display:none></span>/CODE]"); if (!$n2 || $n1 > $n2) break; $cval = substr($str, $n1+6, $n2-$n1-6); ob_start(); highlight_string(br2null($cval)); $ret = ob_get_contents(); ob_end_clean(); <font color=red>$ret = preg_replace("#&lt;(/?font.*?)&gt;#i", "<\1>", $ret);</font> $str = substr($str, 0, $n1)."<div style=line-height:120%>".$ret."</div>".substr($str, $n2+7); } [/CODE]

라는 부분이 있는데 여기서 빨간색으로 표시된 부분을 추가하면 된다. 정규표현식을 조금만 응용하면 다른 종류의 태그들에도 적용할 수 있을 것이다. (음.. 정규표현식 공부좀 해야겠군..;;)
Posted
Filed under 살아가기, 생각하기
사실 이건 그저께 발표난 것이지만 간신히(살짝 커트라인에 가까운.. -_-) 졸업논문을 1차에서 통과했다.

(일단 이 글의 내용을 이해하기를 원하시는 분은 여기를 참조..)

왜 점수가 낮았냐 하면 졸업논문의 심사 기준이 주로 본인이 한 것이 무엇인가(이뤄낸 것이 뭔가)에 초점이 맞춰져 있기 때문인데, 나의 경우는 Approximate Sequence Matching 개념을 Image Stitching 알고리즘에 도입했다는 것 말고는 사실상 아무것도(-_-;;) 한 게 없었기 때문이다.

논문 프레젠테이션을 할 때 지금 어디까지 진행됐냐는 물음에 현재 sequence matching을 구현하기 위한 모듈을 제작해 놓은 상태라고 대답했는데 사실은 sequence의 random generator만 만들어 놓은 상태였다.. -_-;;

일단 논문에서 가장 중요한 sequence matching 알고리즘이 빠져 있고...(-_-) 그 알고리즘에서 일단 maximum gap에 대한 것은 정의가 2개로 정리되었는데, 실제 의사코드로 나타내려고 하니 아직도 막막하다.

게다가 논문 심사 위원이셨던 정보 선생님이 말씀하시길 아직 이것이 현실화되지 못한 것이 너무 변인이 많아서였다고 했는데 너도 너무 많은(비현실적인) 가정을 깔고 들어가지 않았냐고 공격(?)하신 게 좀 타격이었던 듯 싶다. 물론 그 가정 하나하나에 대해서 어떤 식으로 해결하면 되며 왜 그런 가정을 두었는지 모두 답변은 했지만 말이다.

그 선생님께선 막연히 '도기 및 토기'로 대상을 잡지 말고 어떤 특정한 시대의 특정한 문양을 지닌 토기 쪽으로 초점을 맞춰보는게 어떻겠냐고 하시는데 그 말엔 동의하지만 사실상 다시 연구해야 하기 때문에... ㅜㅜ

이렇게 되면 휴먼테크 논문은 현재 수준에서 알고리즘만 어느정도 정리해서 내는 수밖에 없을 듯하다. OTL
Posted
Filed under 컴퓨터
태터 툴즈를 보면 more/less 기능이 있는데,

그 기능은 이런 것이다.


그런데 이게 div 태그에 display:block 이란 스타일을 사용하기 때문에 [#I_이것|(닫기)| inline description_I#]은 지원되지 않는다. (즉, 줄 중간에 넣을 수 없고 반드시 독립된 문단으로만 보여진다)

그래서 결국 태터툴즈를 직접 수정하여 위가 가능하게끔 만들었다.
(도움 : 토끼군)

방법 : (0.93, 0.94, 0.95에서 가능)
1. 자기 계정의 태터 툴즈 디렉토리에 접근하여 inc_function.php를 열고 아래와 같은 내용을 찾는다.

[CODE]function set_moreless($str, $pno){ unset($n1, $n2, $cval); while ($n1 = strpos($str, "[##M_")) { // 여기의 #을 한 개로 고쳐서 쓰세요. $n2 = strpos($str, "_M#]"); if (!$n2 || $n1 > $n2) break; $cval = substr($str, $n1+4, $n2-$n1-4); $more = substr($cval, 0, strpos($cval,"|")); $cval = substr($cval, strpos($cval,"|")+1); $less = substr($cval, 0, strpos($cval,"|")); $cval = substr($cval, strpos($cval,"|")+1); $count++; $more_id = "div".$pno.$count."a"; $less_id = "div".$pno.$count."b"; $str = substr($str, 0, $n1)."<div id=$more_id style=display:block><a href=# onclick="layer_toggle(document.getElementById('$more_id')); layer_toggle(document.getElementById('$less_id')); return false; ">$more</a></div><div id=$less_id style=display:none ><a href=# onclick="layer_toggle(document.getElementById('$more_id')); layer_toggle(document.getElementById('$less_id'));return false;">$less</a>$cval</div>".substr($str, $n2+4); } [/CODE]

2. 바로 아래에 다음과 같은 내용을 추가한다.

[CODE] unset($n1, $n2, $cval); while ($n1 = strpos($str, "[##I_")) { // 여기도 #을 한개로.. $n2 = strpos($str, "_I#]"); if (!$n2 || $n1 > $n2) break; $cval = substr($str, $n1+4, $n2-$n1-4); $more = substr($cval, 0, strpos($cval,"|")); $cval = substr($cval, strpos($cval,"|")+1); $less = substr($cval, 0, strpos($cval,"|")); $cval = substr($cval, strpos($cval,"|")+1); $count++; $more_id = "span".$pno.$count."a"; $less_id = "span".$pno.$count."b"; $str = substr($str, 0, $n1)."<span id=$more_id style=display:inline><a href=# onclick="ilayer_toggle(document.getElementById('$more_id')); ilayer_toggle(document.getElementById('$less_id')); return false; ">$more</a></span><span id=$less_id style=display:none ><a href=# onclick="ilayer_toggle(document.getElementById('$more_id')); ilayer_toggle(document.getElementById('$less_id'));return false;">$less</a>$cval</span>".substr($str, $n2+4); } [/CODE]

3. 태터툴즈 메인 디렉토리에서 lib.js를 열고 다음을 추가한다.

[CODE]function ilayer_toggle(obj) { if (obj.style.display == 'none') obj.style.display = 'inline'; else if (obj.style.display == 'inline') obj.style.display = 'none'; } [/CODE]

그렇게 하면 [ #M_ more.. | less.. | _M# ] 태그를 추가한 후 M을 I로 고쳐서 inline description을 사용할 수 있다. (여기서 "I"는 대문자 i이다)

(여기에 덧붙여, admin 폴더 내의 article_edit.php를 수정하여 편집툴에 바로 이것을 넣도록 수정할 수도 있다.)
Posted
Filed under 살아가기, 생각하기
요즘에 블로그를 시작하면서 일상에서 생각나는 것들을 가끔씩 글로 정리하여 포스팅하는 것과 다른 블로그들(아직은 태터센터를 주로 이용)을 돌아보는 데 재미를 들였다.

다른 사람들을 블로그를 보면 다양한 사상과 다양한 생각으로, 그리고 다양한 의도로 글을 작성하는 것을 볼 수 있는데, 이는 내게 오프라인의 인간관계에서는 얻을 수 없는 새로운 경험이 되었다.

그런데 블로그에 글을 포스팅한다는 건 적어도 개인 일기나 '헛소리'가 아닌 이상 다른 사람들에게 전하고자 하는 내용이 있기 때문일 것이다. 사실 나도 이렇게 글을 써 보는 것이 상당히 오랜만이어서(그 몇년 동안은 학교에서 필수적으로 쓰라고 하는 보고서나 인터넷에서 프로그래밍 관련 질문/답변 정도만 해 왔다) 그런지 별로 글이 조직적으로 정리가 안되고, [#I_태터센터에 sync|(닫기)|내가 사용하고 있는 태터툴즈 블로그에서는 태터센터라는 곳에 글을 자동으로 sync하여 기록을 남길 수 있는데 이는 태터센터를 방문하는 모든 사람들에게 공개되는 목록에 나타난다. _I#]한 글이더라도(내 것이든 다른 사람 것이든) 처음에는 뭔가 진지한 이야기를 하려고 하다가 갑자기 개인적인 푸념(?)으로 변질되는 경우가 있다.

사실 블로그에 포스팅하는 글이 반드시 '진지한' 것이어야 하는가? 다른 사람들에게 정보를 주기 위한 글이라면 아무래도 객관적으로 서술하는 것이 나을 것이고, 그렇지 않은 private 글이라면 자기 내키는 대로 써도 괜찮을 거라고 생각한다.

아무튼, 블로그에 글을 포스팅한다는 것. 물론 블로그는 개인형 미디어임에 틀림없지만, 어느 정도의 글 구성력을 갖춘다면 더 좋은 블로그가 될 수 있을 것이다.