#action Blog 블로그 더하기 ##Blog {{{#!blog hyacinth 2014-02-20T05:32:23 Moniwiki fake crtime 알려졌다시피 대부분의 *nix 환경(ext4 이전 파일 시스템을 사용하는)에서는 파일 생성 시간을 제공하지 않는다. (그리고 많은 사람이 이를 알고 놀란다. 그리고 여기서 놀란 사람은 ctime이 생성시간(creation time)이 아니라는 것에 한 번 더 놀란다─웃기게도 ctime은 원래 creation time을 의미했다[[footnote(http://en.wikipedia.org/wiki/Stat_(system_call)#ctime)]]. 이건 언젠가 이야기하고 싶은 주제인데 다음으로 미룬다.) 이게 모니위키와 관련이 있는 이유는 모니위키는 페이지 관리를 DB가 아닌 파일 시스템을 사용하기 때문인데, 그래서 페이지 수정 시간은 {{{ filemtime() \}}} 으로 쉽게 구할 수 있지만(페이지 Footer 부분의 `Modified on 2:32 pm, February 20, 2014' 와 같은) 페이지 생성 시간은 쉽게 구할 수가 없다! 모니위키에서 페이지(파일) 수정 시간을 구하는 방법은 두 가지가 있는데 하나는 페이지 파일의 mtime을 직접 얻는 방법과 모니위키에서 관리하는 수정 이력(editlog)으로부터 fake mtime을 구하는 방법이다. (이는 config.php의 $use_fakemtime=1 또는 0으로 선택된다.) editlog 형식은 다음처럼 되어 있다. {{{ FrontPage 59.15.101.153 1178892564 59.15.101.153 hyacinth SAVE FrontPage_2f2007_2d05 59.15.101.153 1178893017 59.15.101.153 hyacinth Blog entry "테스트" added SAVE FrontPage_2f2007_2d05 59.15.101.153 1178893030 59.15.101.153 hyacinth SAVE FrontPage 59.15.101.153 1178893517 59.15.101.153 Anonymous SAVE ... ... \}}} 공공 위키위키에서 페이지 생성시간은 그렇게 중요한 정보가 아니다. 하지만 개인 위키에선 Published date를 보여주고 싶을 수 있다. editlog 내용을 보고 이로부터 fake crtime을 구할 수 있다고 생각했다. editlog를 처음부터 읽어 그 페이지의 가장 처음 나온 기록이 바로 생성 시간일 것이다. 여기까지 생각이 들었을 때 바로 위키 엔진에 아래를 추가했다. {{{#!php function crtime($pagename) { if (!$this->use_crtime) return; $pagename=$this->pageToKeyname($pagename); $fp_editlog = fopen($this->editlog_name, 'r'); while(!feof($fp_editlog)){ $buffer=fgets($fp_editlog); if (strlen($buffer)>0 && preg_match("/^$pagename\t.[^\t]*\t(.[^\t]*)/",$buffer,$matches)) return $matches[1]; } fclose($fp_editlog); return; } \}}} 이제 페이지 아래 Published on 5:22 am, February 2, 2014. 를 표시할 수 있게 되었다. :) }}} [[HTML(
)]] http://hyacinth.byus.net/img/flower.jpg [[HTML(
)]] {{{#!blog hyacinth 2014-02-01T20:22:20 좋아하는 노랫말을 적어보자 최근 린진/자이토카인이 내는 앨범은 모두 마음에 든다. 활동도 적지 않다. 큰 행사마다 새 앨범을 내는데 항상 마음에 드는 노래가 있다. I've의 2000년대 초중반을 보는 듯하다. 지금이 전성기다. 예대제든 코미케든 반드시 체크해야 할 서클. ##http://www.youtube.com/v/S2x9KNj5d-s [[HTML()]] 03:10 다정함의 의미를 優しさの意味を 누구보다도 알고 있었어 誰より知っていた 상처입히는 것을 傷つける事を 몇 번이고 몇 번이고 단념하면서 何度も何度も諦めて 나는 여기에 있고, 너도 여기에 있어 僕はここにいて 君もここにいる 하지만 알고 있었어 だけど分かってた 이 소리는 더는 닿지 않는다는 걸 この声は もう届かない事 ''(해질녘 찾았던 첫번째 별 夕暮れ時 探していた 一番星'' ''다가오는 달 끌어 안는 별 너의 곁에) 寄り添う月 引き合う星 君のそばに'' 네가 불렀던 노래를 찾고 있었어 君が奏でてた 歌を探してた 잊어버리지 않도록 忘れないように 몇 번이고 몇 번이고 손을 휘두르며 何度も何度も手を振って 나는 여기에 있고, 너도 여기에 있어 僕はここにいて 君もここにいる 하지만 알고 있었어 だけど知っていた 이 순간은 두번 다시 오지 않으리란 걸 この瞬間 もう二度とない事 }}} [[HTML(
)]] http://hyacinth.byus.net/img/flower.jpg [[HTML(
)]]