2004-08-05 (木)
■ さくらインターネット その5 - 日記のURL
先日の日記に書いたけど、 さくらインターネットでは mod_rewrite が使えない。 なので、tDiary を「20040804.html」のような URL で使うためには、 ErrorDocumentを使う方法が必要。
しかし、この方法をさくらのサーバで試したところ、どの日付の日記にアクセスしても常に最新の日記しか表示されなかった。 「ErrorDocumentを使う方法」では、tDiary が REDIRECT_URL という環境変数を見ているみたい(参考)だけど、 どうやらこの環境変数が設定されていないみたい。
でも、同じくさくらに移転されたkosaka日記では、 ErrorDocument を使う方法でうまくいったとのこと。 ちょっと悩んだけど、ErrorDocument の転送先のURLに サーバ名まで含んでいたのが原因だった。 結局
<Files ~ "^([0-9]{6}|[0-9]{8}).html$">
ErrorDocument 404 http://www.machu.jp/diary/nph-index.cgi
</Files>
ではなく、
<Files ~ "^([0-9]{6}|[0-9]{8}).html$">
ErrorDocument 404 /diary/nph-index.cgi
</Files>
とするとうまく動いた。 これで移転に一歩前進かな。
■ さくらインターネット その6 - 日記データの移行
XREAに設置している tDiary の日記データを、さくらのサーバに移した。 tDiary はプログラムとデータがうまく分離されているので、移行はそれほど難しくなかった。
tDiary本体は、これまでも自宅サーバから XREA にアップロードしていたので、 これをさくらにも同じようにアップロードするだけ。 .htaccess と tdiary.conf はさくらの環境に書き換えた。
データの移行には sitecopy を使った。 まず sitecopyrc に以下のように記述しておく。
site xrea-tdiary-data server example.xrea.com username machu password ********** local /home/machu/var/tdiary remote /data/tdiary site sakura-tdiary-data server example.sakura.ne.jp username machu password ********** local /home/machu/var/tdiary remote /home/machu/var/tdiary/
sitecopy を使って XREA から日記データを取得する。
$ sitecopy --fetch xrea-tdiary-data $ sitecopy --catchup xrea-tdiary-data
次にこのデータをさくらのサーバへ転送する。 (あらかじめさくらのサーバに /home/machu/var/tdiary というディレクトリは作っておく)
$ sitecopy --initialize sakura-tdiary-data $ sitecopy --update sakura-tdiary-data
これで日記データの移行は完了。 ツッコミやリンク元などの情報もちゃんと移行されている。
あとは、絵日記プラグインを使ってアップロードした画像も 忘れずにコピーする。 (tDiaryのCGIディレクトリの下の images ディレクトリにある) こっちは数が少ないので、FTPソフトを使って手動でやってもいい。
■ WikiFarm を動かす
さくらインターネットでの検証の続きで、BitChannelが動くかどうかを確認してみた。 せっかくなので、WikiFarmを試してみる。 farm.rb でエラーがでて悩まされたけど、どうにか動くようになった。
以下がその差分。 以前のコードでは、 cvs import で空のリポジトリを作ってから、 cvs add で一つ一つのファイル(ページ)を追加していたんだけど、 wc.cvs_add にて -d オプションによる CVSROOT の指定がされていないために エラーになっていた。 本当は、 wc.cvs_add にて -d をつけるように修正するべきなのかもしれないけど、 技量が追いつかなかったので、cvs import で一括してページをインポートするようにした。 cvs add では -kb オプションを使っているようだけど、この方法だとこのオプションは使われない。 とりあえず動いているけど、何か悪影響があるかもしれないや。
bash-2.05b$ cvs diff -u lib/bitchannel/farm.rb
Index: lib/bitchannel/farm.rb
===================================================================
RCS file: /src/bitchannel/lib/bitchannel/farm.rb,v
retrieving revision 1.7
diff -u -r1.7 farm.rb
--- lib/bitchannel/farm.rb 23 Jun 2004 15:28:41 -0000 1.7
+++ lib/bitchannel/farm.rb 5 Aug 2004 01:43:54 -0000
@@ -287,6 +287,12 @@
end
Dir.mkdir "#{tmpprefix}/cache"
initialize_working_copy tmpprefix, id
+ repo = Repository.new({
+ :cmd_path => @cmd_path,
+ :wc_read => "#{tmpprefix}/wc.read",
+ :wc_write => "#{tmpprefix}/wc.write",
+ :cachedir => "#{tmpprefix}/cache",
+ }, id)
repo.properties = prop
File.rename tmpprefix, prefix(id)
ensure
@@ -296,17 +302,15 @@
end
def initialize_working_copy(tmpprefix, id)
- wc = CVSWorkingCopy.new(id, "#{tmpprefix}/tmp", @logger)
+ wc = CVSWorkingCopy.new(id, "#{tmpprefix}/tmp", @cmd_path, @logger)
Dir.mkdir wc.dir
wc.chdir {
log = 'BitChannelFarm auto import'
- wc.cvs '-d',@repository, 'import', '-m',log, id, 'bcfarm', 'start'
Dir.glob("#{@skeleton}/*").select {|n| File.file?(n) }.each do |path|
name = decode_filename(File.basename(path))
wc.write name, File.read(path)
- wc.cvs_add name
- wc.cvs_checkin name, 'checkin from skeleton'
end
+ wc.cvs '-d',@repository, 'import', '-m',log, id, 'bcfarm', 'start'
}
Dir.chdir(tmpprefix) {
wc.cvs '-d',@repository, 'co', '-d','wc.read', id
@@ -429,7 +433,7 @@
end
def prefix
- File.dirname(@wc_read)
+ File.dirname(@wc_read.dir)
end
end # class Repository
追記
空のファイルで import し、それぞれのファイルを個別に add しているのは、BitChannelCommentに書かれている revision 0 問題に対応するためかもしれない。
追記 その2
CVSROOT が分からないところは、cvs import した直後に cvs co すればいいのか。 こんな感じかな。
@@ -296,11 +302,12 @@
end
def initialize_working_copy(tmpprefix, id)
- wc = CVSWorkingCopy.new(id, "#{tmpprefix}/tmp", @logger)
+ wc = CVSWorkingCopy.new(id, "#{tmpprefix}/tmp", @cmd_path, @logger)
Dir.mkdir wc.dir
wc.chdir {
log = 'BitChannelFarm auto import'
wc.cvs '-d',@repository, 'import', '-m',log, id, 'bcfarm', 'start'
+ wc.cvs '-d',@repository, 'co', '-d','.', id
Dir.glob("#{@skeleton}/*").select {|n| File.file?(n) }.each do |path|
name = decode_filename(File.basename(path))
wc.write name, File.read(path)
■ 日本一わかりやすい「プロ野球1リーグ案がダメな理由」
1リーグのチーム数が増えると、優勝争いと関係のない試合が劇的に増加するのです。
今までの5位と6位の試合だって十分つまらなかったのですが、これにさらに 7位〜10位の試合が付け加わります。組み合わせの数を考えるとバカに出来ません。シーズン中盤以降は消化試合だらけです。
なるほど。 確かにこれはダメかもなぁ。
巨人、ダイエー、西武など上位の球団同士の対決は面白くなるかもしれないけど、これじゃ1リーグになってもますます球団数は減りそうだね。
(via 僕は発展途上技術者)
■ Blue Note Tokyo
初めての体験。 本日の出演者はアンジェリーク・キジョーというアフリカの歌姫。 力強いバンドサウンド(なんて言えばいいのか分からない)で、 最後は会場が総立ちになるくらい盛り上がった。 大きなコンサートでのライブもいいけど、 こういった密閉された空間もいいねぇ。
ただ、そうそういける値段じゃないんだよねぇ。