SVX日記

2004|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|01|02|03|04|05|06|07|08|09|10|11|12|
2013|01|02|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|05|06|07|08|09|10|11|12|
2015|01|02|03|04|05|06|07|08|09|10|11|12|
2016|01|02|03|04|05|06|07|08|09|10|11|12|
2017|01|02|03|04|05|06|07|08|09|10|11|12|
2018|01|02|03|04|05|06|07|08|09|10|11|12|
2019|01|02|03|04|05|06|07|08|09|10|11|12|
2020|01|02|03|04|05|06|07|08|09|10|11|12|
2021|01|02|03|

2015-02-27(Fri) Yet Another Hikiインストール

  LinuxはCUIによる設定が中心であるため、各種設定の記録が残しやすく、残しておいた各種記録はノウハウとして有用だ。しかし、その記録をどこに残しておくかが問題で、後で見返せないようなら意味がない。

  今回、例によって各種設定の記録を残しながら業務サーバの構築を行なっていたのだが、構築中のサーバ上にHikiを導入し、その上に記録を残すことを思いついた。もしオイラが頓死しても、記録が見つかれば他の誰かがメンテナンスを引き継げる可能性がある。

  というわけで「Ubuntu 14.04.1 LTS」上にHikiを導入しようかと思ったら、Ubuntuのリポジトリ上にあるのね。こりゃ楽でいいや。aptitudeでひょいと入れる。

/root # aptitude install hiki

  setup用スクリプトまである。使い方がよくわからんので、当てずっぽうで実行する。当たった。

/home/user $ mkdir public_html/hiki
/home/user $ hikisetup --lang ja public_html/hiki
/home/user $ vi /home/user/public_html/hiki/hikiconf.rb

  ところが、うまく動かない。Ubuntuの場合、ユーザ権限で動作させるときは、suexec版を入れる必要があるようだ。といっても、作業はこれだけ。

/root # aptitude install apache2-suexec
/home/user $ chmod 755 public_html/

  アッサリ動いたなぁ、と感心しつつ、自作のメーラ「mave」から文書の編集作業が行える(現公開バージョンには未搭載)よう設定してみる。既存文書は読み込めるが、文書の更新ができない。しばらく機能を使ってないし、潜在バグでも残っていたかと思って、ブラウザ上からの更新を試してみたところ、なんと、ブラウザ上からもダメ。「指定したタイトルは既に存在しています。」なんて出る。なんや、Hikiのバグやんか。

  どうやら、文書のタイトルが多バイト文字の場合のみ、問題が出るらしい。「指定したタイトルは既に存在しています。」というメッセージから、逆にコードを追っていったところ、文書の既存チェック部分でコケていた。エンコーディングの変換を忘れてる。

/usr/share/hiki/hiki # diff -bc command.rb.org command.rb
*** command.rb.org	2014-01-17 01:02:29.000000000 +0900
--- command.rb	2015-02-27 17:28:04.915669859 +0900
***************
*** 553,558 ****
--- 553,559 ----
        end
  
        p = (@db.select {|p| p[:title] and unescape(p[:title]) == page})[0]
+       p.force_encoding('UTF-8')
        if p != @p and p != nil
          return p
        end

  上記1行の追加で、無事、文書の更新ができるようになった。

  しかし、こんなバグが残ってるってことは、もうHikiを使ってる人は少ないのだろうか。まぁ、機能的には現状で十分だし、Rubyなら自分で直せるから開発が止まっていても困らないが、ちょっとサミしいなぁ。