Daybreakin Things

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 글이라면 자기 내키는 대로 써도 괜찮을 거라고 생각한다.

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