«前の日記(2004-08-04 (水)) 最新 次の日記(2004-08-06 (金))»  

まちゅダイアリー


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>

とするとうまく動いた。 これで移転に一歩前進かな。

Tags: memo

さくらインターネット その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ソフトを使って手動でやってもいい。

Tags: memo

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)
Tags: BitChannel

UNIX Tips

ちょっとした使い方が分からなくて迷うことが多いので、 こういった Tips 集は役に立つ。

http://www.nihira.jp/cyber/UNIXtips.html

Tags: memo

日本一わかりやすい「プロ野球1リーグ案がダメな理由」

1リーグのチーム数が増えると、優勝争いと関係のない試合が劇的に増加するのです。

今までの5位と6位の試合だって十分つまらなかったのですが、これにさらに 7位〜10位の試合が付け加わります。組み合わせの数を考えるとバカに出来ません。シーズン中盤以降は消化試合だらけです。

なるほど。 確かにこれはダメかもなぁ。

巨人、ダイエー、西武など上位の球団同士の対決は面白くなるかもしれないけど、これじゃ1リーグになってもますます球団数は減りそうだね。

(via 僕は発展途上技術者)

Tags: memo

Blue Note Tokyo

初めての体験。 本日の出演者はアンジェリーク・キジョーというアフリカの歌姫。 力強いバンドサウンド(なんて言えばいいのか分からない)で、 最後は会場が総立ちになるくらい盛り上がった。 大きなコンサートでのライブもいいけど、 こういった密閉された空間もいいねぇ。

ただ、そうそういける値段じゃないんだよねぇ。

Tags: Life