Landscape トップページ | < 前の月 2005-02 2005-03 次の月 2005-04 >

Landscape - エンジニアのメモ 2005-03

月ごとの記事一覧
2007年: 1月 2月 3月 4月 5月 6月 7月 8月 9月 10月 11月 12月
2006年: 1月 2月 3月 4月 5月 6月 7月 8月 9月 10月 11月 12月
2005年: 1月 2月 3月 4月 5月 6月 7月 8月 9月 10月 11月 12月
2004年: 1月 2月 3月 4月 5月 6月 7月 8月 9月 10月 11月 12月
2003年: 1月 2月 3月 4月 5月 6月 7月 8月 9月 10月 11月 12月
2002年: 1月 2月 3月 4月 5月 6月 7月 8月 9月 10月 11月 12月
日ごとのページ
2005-03/ 1日 2日 3日 4日 5日 6日 7日 8日 9日 10日 11日 12日 13日 14日 15日 16日 17日 18日 19日 20日 21日 22日 23日 24日 25日 26日 27日 28日 29日 30日 31日

2005-03-31 (Thu)

* USB 2.0 外付けハードディスクケースを購入

この記事の直リンクURL: Permlink | この記事が属するカテゴリ: [買い物] [PC]

手持ちのハードディスクを有効活用するために、USB 2.0 外付けハードディスクケースを購入した。

- 外付けハードディスクケースがほしい

CD からリッピングした音楽、それをリミックスして 2mix にしたデータ、キャプチャした動画、その他友達と交換したデータを収めるため、私は数台の IDE 内蔵ハードディスクを持っている。これらを効率よく運用したい。

5インチベイにマウントする IDE ディスクケース、いわるる「リムーバブルケース」を購入して使っていたことがある。5インチベイに受け側の部品を取り付け、そこに IDE 内蔵ハードディスクを専用のカートリッジに入れてドッキングさせるというものだ。一見便利そうだが、すぐに使わなくなった。

使わなくなった理由は、交換が非常に手間がかかることにある。カートリッジ式なので、PC のケースを開けて IDE ケーブルと電源ケーブルを繋ぎ変えることに比べれば確かに手間は少なくなっている。しかし、マシンをシャットダウンしてからでないとディスクを換装できないという制限があることは変わらない。基本的に PC は常時起動させておくものだし、ディスクをマウントするためだけにシャットダウンして電源を切るなんてのは考えられない。


NAS - Network Area Storage などを導入し、ネットワークドライブとして利用すればいちいちマシンをシャットダウンする必要はなくなるが、NAS のキットは安くても1万円以上する。また、ルータやスイッチングハブは私のメイン PC がある部屋にはない。NAS はスイッチングハブに直接接続するものなので、手元に置けないことになる。このため、NAS のディスクを交換するたびにスイッチングハブのある部屋に行って作業しなければならず、非常に煩わしい。

そもそも NAS は私の環境ではちょっと大げさすぎる。ストレージをネットワーク共有する理由の一つに、複数のクライアントから同時にストレージをアクセスするというものがある。しかし、私の環境ではクライアントは通常時1台。最大時で4台程度。しかも、同じストレージを同時にアクセスすることはあまりない。同時アクセスする場合には、ストレージをマウントしたマシンからネットワークに公開すれば十分だ。


今回の私の要件を満たすには、ホットスワップ、要するに手元で OS を立ち上げたままストレージを交換してマウントできればいいわけだ。となると、IEEE1394 か USB 2.0 で接続できるストレージが一番手軽でコストパフォーマンスも良い。というわけで USB 2.0 の外付けハードディスクケースを選んだ。ハードディスク「ケース」なので、ケースと USB2.0 のインターフェイスしか備えていない。コジマ電気を始めとする家電量販店などでよく「USB 2.0 外付けハードディスク 250GB」などを売っているが、そこからハードディスクドライブを除いたものと考えればよい。

{NV-HD380U 3.5HDDはい~るKIT USB エントリー}:amazon:B0002YJ492

USB 2.0 対応のハードディスクケースはたくさんの種類が出ている。amazon でもいくつか売られている。



- 購入したハードディスクケースのスペック

購入した外付けハードディスクケースは、ドスパラ宇都宮店で税込3480円。とても安い。

ドスパラ - NEXTWAVE ExtHDD case USB2.0 for 3.5inch Rev.1.5
http://www.dospara.co.jp/goods_pc_parts/goods_pc_parts_spec. ...
▼製品スペック・詳細
接続 USB2.0、1.1
対応ドライブ 3.5インチIDEハードディスク
対応OS Win98SE/ME/2000/XP(98SE,Meは付属ドライバ使用)
付属品 USB2.0ケーブル、ドライバCD、ACアダプタ、HDD取り付けネジ
特長 フロントLED部分が電源スイッチになりON/OFFが手軽に行えます。
冷却ファン内蔵で高回転のHDDも安心、ファンのスイッチが背面にあるので手動でファンのON/OFFができます。
注意 ※WesternDigital製HDDには対応しておりません
その他 137GB以上のビッグドライブに対応! ホットプラグOK 前面にHDD LEDを搭載したスタイリッシュケース

ファン付きなのがうれしい。ミドルタワーケースにマウントする場合と異なり、外付けのハードディスクケースに入れたドライブはほとんど密閉された状態になる。ファンがないと排熱がうまくいかず、ドライブの寿命を著しく縮める恐れがある。

あと、「WesternDigital製HDDには対応しておりません」が気になるが、私の持ってるドライブは Maxtor がほとんどなので問題ない。ドスパラのユーザーレビューでは WesternDigital 製ドライブでも動作したという報告が上がっていたし、気にしなくてもいいのかも。

このモデルは AC アダプタを使うタイプ。USB バスパワーで動いて欲しいと一瞬思ったが、そもそも 3.5 インチのハードディスクは USB が供給する電力だけでは電力不足で動かないだろう。

2004-09-25 の「iPod を USB 1.1で PC に接続」で書いたように、私のマシンは USB 1.1 までしか対応していない。USB 2.0 だと 480Mbps の速度が得られるが、USB 1.1 だとたったの 12Mbps になってしまう。さすがにそれだとはもったいないので、ついでにUSB 2.0 PCI 拡張カード ASONIC A-6212-4 も購入。VIA VT-6212 チップ搭載で、ポート数は4。980円と激安だった。これで iPod も USB 2.0 で繋げられるようになる。

- 搭載チップ CY7C68300A-56PVC

ドライブを付けるためにケースを開けると基板も見える。IDE / USB 2.0 変換チップに印刷されている型番をメモしておく。チップのサイズは非常に小さい。メーカーは Cypress というアメリカの会社。

CY7C68300A-56PVC
A 04 PHI 6424
CYP 630765

オフィシャルサイトのデータ。

Cypress Semiconductor Corporation
http://www.cypress-japan.co.jp/products/datasheet.php?partnu ...
Download CY7C68300A Final Datasheet
2003-08-18

EZ-USB AT2 USB 2.0 to ATA/ATAPI Bridge

Features

    * Complies with USB-IF specifications for USB 2.0, the USB Mass Storage Class, and the USB Mass Storage Class Bulk-Only Transport Specification
    * Operates at high (480-Mbps) or full (12-Mbps) speed
    * Complies with T13’s ATA/ATAPI-6 Draft Specification
    * Supports 48-bit addressing for large hard drives
    * Supports PIO modes 0, 3, 4, and UDMA modes 2, 4
    * Uses one external serial EEPROM containing the USB device serial number, vendor and product identification data, and device configuration data
    * ATA interface IRQ signal support
    * Support for a single ATA/ATAPI device configured either as master or slave
    * “ATA-Enable” input signal, which three-states all signals on the ATA interface in order to allow sharing of the bus with another controller (e.g., an IEEE-1394 to ATA bridge chip)
    * Support for board-level manufacturing test via USB interface
    * 3.3V operation for self-powered devices
    * 56-pin SSOP and 56-pin QFN packages.

- まずは接続テスト ・・・あれ? 認識しないよ?

まずは手持ちの 8GB のディスクを繋いでテストしてみる。いきなりバックアップデータを収めた 160GB のディスクを繋いでしまうと、万が一相性問題や初期不良などがあった場合に中のデータを消滅させられる恐れがあるからだ。ちなみに、この 8GB のディスクは 2004-11-23 の「Windows2000 が INACCESSIBLE_BOOT_DEVICE エラー」のときに、急遽 Windows をインストールし、損傷したドライブに chkdsk をかけるために使ったもの。

ケースを開けて、電源コネクタと IDE コネクタを繋いで、ハードディスクケースの電源 ON。USB ケーブルを PC の USB 1.1 ポートに繋ぐ。USB 2.0 のカードは PC のケースを開けるのが面倒なのでまだ取り付けていない。Windows2000 SP4 なので特にドライバなどをインストールしなくても勝手に認識される。

認識が終わってデバイスマネージャを見ると、黄色い三角マークがある。・・・あれ? 認識してないよ? もしかして USB 1.1 で繋いでるのが良くないのかな? リブートしてもダメ。

仕方がないので USB 2.0 の PCI カードを取り付け、そこに繋いでみる。それでもダメ。うーん、8GB の古いドライブだからダメなのかな? 60GB のドライブに変えてみると、見事に認識。フォーマットも無事に完了。よかったー。一時はどうなることかと思った。

その後 8GB のディスクに戻してみると、無事認識。USB 1.1 のポートに繋いでも問題なく使える。うーん、もしかして IDE コネクタの接触不良かな。これって接続しにくい構造してるもんなあ。えーい、基板をケースに留めているネジを外して、コネクタを繋ぎやすくしちゃえ。

とりあえず手持ちのドライブをすべて繋いで読み書きしてみたところ、特に問題なく使えた。

- 快適なホットスワップ生活をエンジョイできちゃう

OS 立ち上げたままディスクをとっかえひっかえできるのって、やっぱり便利。ファンも静かだし、気にならない。良い買い物だったな。

2005-03-30 (Wed)

* Perl の範囲演算子 .. の使い方

この記事の直リンクURL: Permlink | この記事が属するカテゴリ: [Perl]

- 範囲演算子

2005-03-29 の「RFC2045 Base64 で使用する文字の種類」で書いた Base64 で使用する文字列は以下の perl ワンライナーで生成した。

$ perl -e 'for (a..z) { print $_ }'
abcdefghijklmnopqrstuvwxyz

$ perl -e 'for (A..Z) { print $_ }'
ABCDEFGHIJKLMNOPQRSTUVWXYZ

$ perl -e 'for (0..9) { print $_ }'
0123456789

範囲演算子 .. を使っている。a..z で a から z までを指定できる。数字も指定可能。

- ワンライナーなのに3つ書くのはなんか変

問題なのは、ワンライナーなのに三回記述していること。一行で望む出力をすべて得られるようにしたい。はじめは以下のようにすれば大文字と小文字両方のアルファベットが得られるかなと思ったんだけど、小文字しか得られなかった。

$ perl -e 'for (a..Z) { print $_ }'
abcdefghijklmnopqrstuvwxyz

範囲の指定ルールがよくわからないが、範囲演算子 .. では大文字小文字を一気に指定できないのかもしれない。大文字小文字を一気に指定できたとしても、数字が残っている。どうしようかなー。

ちょっと考えて、以下のようにしてみたらうまくいった。カンマで区切って3つリストを指定するだけ。なんで最初にこれを思いつかなかったんだろう。別の視点から考えると物事を簡単に解決できることがある、という例だ。

$ perl -e 'for (a..z, A..Z, 0..9) { print $_ }'
abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789


2005-03-29 (Tue)

* RFC2045 Base64 で使用する文字の種類

この記事の直リンクURL: Permlink | この記事が属するカテゴリ: [メモ] [プログラミング] [RFC]

バイナリデータをテキストデータ化する時によく使われる Base64 についてのメモ。

- Base64 で使用する文字の種類

大文字と小文字の両方のアルファベットと、0から9までのアラビア数字、/ スラッシュと + プラス記号を主に使う。 = イコールは一行の文字数が足りないときのパディング(詰め物)として使う。

以下、使用する文字。
abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789/+=

種類は (26 * 2) + 10 + 2 = 64。
あ、64種類だから Base64 なのか。= を入れたら 65種類だけど。

- Base64 エンコード後のサイズ

英数字と記号だけで表現しようとするため、Base64エンコード後のデータのサイズは、エンコード前のデータに比べて 3分の4倍、すなわち 約133%に増大する。

- Base64 についての RFC

Base64 について言及した RFC は、RFC 3548が最新の模様。

RFC 3548
http://suika.fam.cx/~wakaba/-temp/wiki/wiki?RFC%203548
一部日本語訳がある。

今となっては RFC 3548を参照する方が良いと思うけど、メモ。

RFC 2045 の 6.8 Base64 Content-Transfer-Encoding
http://www.akanko.net/marimo/data/rfc/rfc2045-jp.txt
6.8.  Base64 Content-Transfer-Encoding

    Base64 Content-Transfer-Encoding は、人間的に読みやすい必要のない
  フォームにおいてオクテットの任意のシーケンスを表すように設計されてい
  る。符号化と解読のアルゴリズムは簡単である。しかし符号化されたデータ
  は符号化されないデータよりほんの僅か、約33%大きくなる。RFC 1421 にお
  いて定義されたように、この符号化は、実質的に Privacy Enhanced Mail
  (PEM) アプリケーションに使われるものと同じである。

    US-ASCII のサブセットの 65文字を使い、6ビットが印刷できるキャラク
  タとして表すことを可能とする(余分の第65のキャラクタ "=" は、特別な
  機能処理を意味するために使われる)。

    注意事項:
      このサブセットは、それが全く同じに ISO 646 (US-ASCII を含む)
  の全てのバージョンの代表を務める重要なプロパティを持っており、そして
  サブセットにおける全てのキャラクタは、 EBCDIC の全てのバージョンにお
  いても全く同じく表される。マッキントッシュ binhex 4.0 [RFC-1741] 、
  及び base85 符号化は、Level 2 ポストスクリプトの一部として、
  エンコーディングのような他のポピュラーな符号化が uuencode ユーティリ
  ティによって使用したことを指定した。これらの資産を分配しないこと。そ
  して、メールのためのバイナリトランスポート符号化処理が満たさなければ
  ならないような可搬性の要求を満たしてはならない。

    符号化プロセスは、4つの符号化された出力文字列が、入力ビットの24
  ビットグループを表現している。左から右へ処理し24ビットの入力グルー
  プは、3つの8ビット入力グループのシーケンスにより形成される。

    これらの 24ビットは、4つの連結された 6ビットグループ (各々がbase64
  アルファベットにおける 1桁の数字に変換される) のように、その時扱われ
  る。base64 符号化を経たビットストリームを符号化する時には、ビットの
  ストリームは、最初、最も多く重要なビットによって命じられると推定され
  なければなりません。すなわち、流れの最初のビットは、高いオーダービッ
  トの最初の8ビットバイトであり、8番目のビットは、低いオーダービットの
  最初の8ビットバイトなどである。

    各 6ビットグループは、一連の 64個の印刷可能な文字へのインデックス
  として使われる。インデックスによって参照を付けられた文字は、出力文字
  列に配置される。下記表1に示したこれらの文字は、一般的に再提供可能な
  ように選択されて、セットは、特有の意味によって、RFC 2046において定義
  されたSMTP(例えば、"."、CR、LF)およびマルチパートの境界デリミタの
  文字を遮断する(例えば "-")。


                    表1: Base64 アルファベット

        値 符号化      値 符号化      値 符号化      値 符号化
        0 A            17 R            34 i            51 z
        1 B            18 S            35 j            52 0
        2 C            19 T            36 k            53 1
        3 D            20 U            37 l            54 2
        4 E            21 V            38 m            55 3
        5 F            22 W            39 n            56 4
        6 G            23 X            40 o            57 5
        7 H            24 Y            41 p            58 6
        8 I            25 Z            42 q            59 7
        9 J            26 a            43 r            60 8
        10 K            27 b            44 s            61 9
        11 L            28 c            45 t            62 +
        12 M            29 d            46 u            63 /
        13 N            30 e            47 v
        14 O            31 f            48 w      (穴埋め) =
        15 P            32 g            49 x
        16 Q            33 h            50 y


    符号化された出力ストリームは、わずか 76文字しかない行で表されなけ
  ればならない。すべての改行、または表1に発見されなかった他の文字は、
  ソフトウェアで解読する際に無視されなければならない。base64 において、
  データ、表1以外のキャラクタ、改行、及び、他の空白文字は、おそらく伝
  送エラー(警告メッセージ、またはメッセージ拒絶さえも、いくらかの情況
  下に於いては適切だろう)を示す。

    もし最大 24ビットで符号化されたデータの終りに利用可能であるなら、
  特別な処理が行われる。完全なエンコーディング量は、ボディの終りで常に
  完成される。最大 24 入力ビットが入力グループにおいて利用可能であると
  き、ゼロのビットは、必須の数の 6 ビットグループを形成するために加え
  られる(右に)。データの終りのパディング(穴埋め)は、"=" 文字を用いて行
  われる。全ての base64 入力が必須の数のオクテットであるので、次の場合
  のみが起こるかもしれない: (1)入力を符号化することの最終の量は、24ビ
  ットの必須の倍数である; ここで、符号化された出力の最終のユニットは、
  "=" パディングなしの 4文字の必須の倍数であろう。(2)入力を符号化する
  ことの最終の量は、ちょうど 8ビットである; ここで、符号化された出力の
  最終ユニットは、2個の "=" パディング文字が続いている 2文字であろう。
  もしくは (3)入力を符号化することの最終の量は、ちょうど 16ビットであ
  る; ここで、符号化された出力の最終のユニットは、1個の "=" パディング
  文字が続いている 3文字であろう。

    それがデータの終りの穴埋めにのみ使われるので、あらゆる "=" キャラ
  クタの発生は、データの終りに到達した (通過における切頭なしで) という
  証拠として考えられるだろう。しかし、違う。送られたオクテット数が 3の
  倍数であり、どの "=" 文字も無い時には、そのような保証が可能である。

    base64 アルファベット以外のあらゆる文字は、base64 符号化されたデー
  タにおいては無視されねばならない。

    base64 符号化が直接正規のフォームに変換されなかったテクスト材料に
  適用されるならば、改行に適したオクテットを使うために注意が行われなけ
  ればならない。特に、テクスト改行は、base64 符号化の前に CRLF シーケ
  ンスに変換されていなければならない。重要な注意点として、これがいくら
  かの実装(インプリメント)における前の正規化ステップにおいてより、むし
  ろ直接符号化処理(エンコーダ)によって行われるかもしれないことである。

  注意事項:
    base64 符号化の時にハイフン文字は全く使われないので、マルチパート
  なエンティティ内の base64符号化ボディ中の潜在的な境界デリミタについ
  て悩む必要はない。

2005-03-25 (Fri)

* 三国志大戦 カード配列表

この記事の直リンクURL: Permlink | この記事が属するカテゴリ: [ゲーム] [三国志大戦]

セガの三国志大戦のカード配列表が2ちゃんねるに投稿されていた。

- 配列表とは

配列というのは、カードが出てくる順番のこと。つまり、スーパーレアのカードがいつ出てくるかを予測できるかもしれないということだ。

ただ、以下の配列表がどの程度信頼できるかはわからない。店側がランダムに混ぜてるかもしれないし、出荷時にランダマイズされるようになるかもしれない。

そもそもいま人気沸騰中のゲームなので、プレイ回数制限をしていたり、予約制にしているゲームセンターも多い。配列表があっても、レアやスーパーレアを狙って引き当てるのは難しいと思う。

- 2ちゃんねるに投稿されていた配列表

三国志大戦 配列晒し
http://game10.2ch.net/test/read.cgi/arc/1111146041/l50
16 :1 [age] :05/03/20 00:02:13 ID:???
1パックを開けた結果、以下のようになった。(R、SRには★マーク)


C(他)コウソ→C(蜀)カコウゲッキ→★R(呉)シュウタイ→C(蜀)ビフジン→C(呉)ショウキン→
C(魏)ブンペイ→UC(魏)キョチョ→UC(呉)ショカツキン→UC(蜀)バタイ→C(魏)シンコウゴウ→
UC(呉)ショウキン→UC(呉)テイフ→C(蜀)ゴイ→C(他)コウソ→UC(呉)ダイキョウ→
C(魏)ブンペイ→C(呉)リョウソウ→C(蜀)カコウゲッキ→★R(魏)テンイ→C(他)テイエンシ→
C(蜀)モウタツ→C(蜀)ビフジン→★SR(他)リョフ→UC(蜀)ゲンガン→C(呉)チンブ→
C(魏)ソウショウ→C(魏)シンコウゴウ→C(他)コウソ→C(魏)ソウショウ→★R(呉)ソンケン(孫権)→
C(他)テイエンシ→C(魏)ブンペイ→UC(魏)ソウジン→C(他)テイエンシ→UC(蜀)チントウ→
C(呉)チンブ→★R(蜀)コウチュウ→UC(呉)コウガイ→C(蜀)ゴイ→C(呉)リョウソウ→
UC(魏)ベンコウゴウ→C(蜀)モウタツ→UC(蜀)リュウゼン→★R(呉)タイシジ→C(魏)ソウショウ→
UC(魏)ウキン→UC(他)シュウソウ→C(魏)シンコウゴウ→UC(呉)テイフ→★R(蜀)ホウトウ

合計50枚、うち6枚R、SRは呂布の一枚だけという結果に。

48 :1 ◆6F1/cd/fqw [age] :2005/03/22(火) 09:03:52 ID:???
本日(というか昨日)の結果

C(他)シュウソウ→C(他)リュウショウ→C(呉)シュカン→★R(呉)シュウユ→
UC(魏)ソウジン→
C(蜀)ソンケン→UC(蜀)リュウゼン→C(他)リュウヒョウ→C(蜀)オウヘイ→
UC(呉)テイフ→
C(魏)ソウヒ→UC(魏)シバイ→UC(呉)チョウコウ→C(魏)リテン→UC(呉)
ショウキョウ→
C(呉)トウシュウ→C(魏)ギュウキン→C(蜀)リュウホウ→C(魏)カク皇后→C
(蜀)リュウショウ→
★R(魏)カコウエン→C(呉)シュカン

[渋々サテを移動]

49 :1 ◆6F1/cd/fqw [age] :2005/03/22(火) 09:04:27 ID:???
UC(魏)チョウコウ→C(蜀)オウヘイ→UC(蜀)カンウ→C(魏)ソウヒ→★R
(呉)リクソン→
C(蜀)リュウホウ→C(蜀)ソンケン→C(魏)リテン→C(呉)トウシュウ→UC
(他)コウソンサン→
UC(蜀)ビジク→C(魏)カク皇后→C(呉)シュカン→C(他)チョウホウ→UC
(呉)ショウキョウ→
C(呉)トウシュウ→★R(蜀)ジョショ→C(魏)ギュウキン→C(他)リュウヒョウ
→C(魏)カク皇后→
★SR(魏)ホウトク→UC(魏)サイブンキ→C(他)チョウホウ→C(蜀)リュウホウ
→C(魏)ギュウキン→
UC(呉)カンネイ→UC(蜀)チョウヒ→C(魏)リテン→C(魏)チンキュウ→C
(蜀)チンケイ&チントウ→
★R(呉)ソンサク→C(他)ケイドウエイ→UC(魏)シバイ→C(呉)グホン→C
(魏)サイボウ→
UC(呉)チョウコウ→C(蜀)カンペイ→UC(呉)ショウキョウ→C(他)チョウリョ
ウ→C(呉)ハンショウ→
C(魏)チングン→★R(魏)カコウエン→UC(蜀)カンウ→UC(魏)シバイ→C
(蜀)チョウショウ→
UC(蜀)チョウヒ→★R(蜀)キョウイ→C(蜀)リョウカ→[終了]

本日の総排出枚数 70枚
かかった時間  14時間
引いたレア     7枚
引いたスーパーレア 1枚
かけた費用  最低でも2万円以上
帰り道に味わう後悔にも似たなんともいえない気分   priceless

2005-03-23 (Wed)

* 巨大な RSS/RDF/Atom を求めて

この記事の直リンクURL: Permlink | この記事が属するカテゴリ: [RSS] [XML]

巨大な RSS は男のロマンだという話。

- 108 件のRSS

Dead bookmark - 徹人28号が行く++
http://kitsune.info/blog/?itemid=434
さて、この freshmeat の RSS フィードですが、数ヶ月前まではほんの数件(たしかひと桁だったと思う)しかフィードしてくれませんでした。オープンソースソフトウェアは世界中で日夜開発が続けられているので、これではあっという間にフィードの中身が入れ替わってしまいます。当然見落としがあるでしょうから、これは不便な話でした。

ところがある時から、freshmeat のフィード件数が増えたのです。それもふたつみっつ増えたなんてレベルじゃありません。クリックするとモニタの下限まで行ってまだ余るくらいの数です。今までにいろいろな RSS フィードを見てきましたが、こんなに件数が多いフィードは見たことがありません。freshmeat に登録されているプロジェクトは 3万6千件以上あるらしいので、それもまた当然といえば当然なのですが、それにしても多すぎます。

先ほどふと思い立って、いったい何件フィードされているのか調べてみることにしました。方法は簡単。全フィードを個別のタブで開けばよいのです。私の Firefox は多段タブにしてあるので、全部開けばかけ算でフィード件数がわかります。

……あれ、Firefox が入力を受け付けなくなってしまった。さすがにこんなに開いたらメモリの食い過ぎか?

待つこと 10分。ようやくコントロールを取り戻した Firefox のタブを数えてみました。その数なんと 108枚。まさか 3桁の大台に乗るとは。普通 RSS フィードつーたらあーた、多くても 30件くらいでしょうが。

ちょうど108件なんて、除夜の鐘みたいだ。煩悩が詰まった RSS か。読んでみたいな。

でも、108件のフィードなんて大したこと無いですよ。手前味噌ながら、当サイト Landscape の RSS http://sonic64.com/cl-full.xml にはこの記事を含めて677件のフィードが入ってますから。freashmeat の RSS の約7倍の件数だから、70分あれば Firefox でも開けます。たぶん。

少食な RSS リーダの方には http://sonic64.com/cl.xml がおすすめ。直近7日分の記事しか入れていないので、全記事を格納した RSS に比べてとてもコンパクトです。

- 膨大な情報が詰まったテキストファイルは男のロマン

108件しか入ってないとはいえ、大きな RSS フィードというだけで興味をそそられる。ファイルサイズも巨大だとなお良い。2004-02-17 の「攻殻機動隊 S.A.C. 第5話を見る」でも書いたけど、テキストファイルに膨大な情報が詰まっているっていうだけでワクワクする。男のロマンだ。蛇足だけど、2004-02-17 に書いた「とあるデータファイル」とは、前述の Landscape の 全記事を格納したRSSのこと。

よし、freashmeat の RSS を見に行ってみよう。「俺より強い奴に会いに行く」って感じかな。

- freashmeat の RSS

http://freshmeat.net/ にアクセスすると、右上に XML アイコンがある。これかな。

freashmeat XML アイコンのリンク先
http://download.freshmeat.net/backend/
Files

fm-projects-0.1.dtd Mon May 5 08:14:45 2003  7979 bytes
fm-projects-0.2.dtd Mon May 5 08:15:15 2003  8140 bytes
fm-projects-0.3.dtd Mon Nov 10 00:04:05 2003  9209 bytes
fm-projects-0.4.dtd Mon Jan 3 01:38:10 2005  9454 bytes
fm-projects.rdf.bz2 Wed Mar 23 04:01:38 2005  7172546 bytes
fm-releases-global.xml Wed Mar 23 08:55:14 2005  80365 bytes
fm-releases-handhelds.xml Wed Mar 23 08:55:15 2005  1570 bytes
fm-releases-osx.xml Wed Mar 23 08:55:16 2005  9021 bytes
fm-releases-themes.xml Wed Mar 23 08:55:16 2005  394 bytes
fm-releases-unix.xml Wed Mar 23 08:55:29 2005  79254 bytes
fm-search-0.1.dtd Sun May 5 11:05:31 2002  7774 bytes
fm-search-0.2.dtd Mon Jan 3 01:37:54 2005  9194 bytes
fm-trove-0.1.dtd Tue Nov 4 04:30:30 2003  7113 bytes
fm-trove.rdf Wed Mar 23 04:03:08 2005  10186180 bytes
recentnews.txt Wed Mar 23 08:50:04 2005  953 bytes
rss-0.91.dtd Sun Nov 28 05:07:41 2004  8361 bytes

こりゃすごい。fm-trove.rdf がとくに突き抜けてる。10186180 bytes だって。カンマを振らないと読みにくいな。10,186,180 だから・・・約10メガバイトか。すごいな。当サイトの RSS の約3倍強のサイズだ。これは中も見てみなきゃね。bloglines で読んでみるか。

・・・って、あれ? http://www.bloglines.com/sub/http://download.freshmeat.net/b ... から購読しようとしたけどエラーになっちゃうな。

No feeds were found. Please verify that the website publishes an RSS feed.
あれ? これって RSS じゃないの?

- fm-trove.rdf の中身テキストエディタで見てみる

bloglines で見られないので、ダウンロードしてテキストエディタで開いてみる。

fm-trove.rdf
http://download.freshmeat.net/backend/fm-trove.rdf
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE trove-listing SYSTEM "http://freshmeat.net/backend/fm-trove-0.1.dtd">
<trove-listing>
  <descriminator>
    <id>6</id>
    <name>Development Status</name>
    <parent_id>0</parent_id>
    <root_id>0</root_id>
  </descriminator>
  <descriminator>
    <id>7</id>
    <name>Development Status :: 1 - Planning (disabled category)</name>
    <parent_id>6</parent_id>
    <root_id>6</root_id>
    <projects>
      <project_id>302</project_id>
      <project_id>4754</project_id>
      <project_id>7408</project_id>
      <project_id>8708</project_id>
      <project_id>8805</project_id>
      <project_id>10136</project_id>
      <project_id>12161</project_id>
      <project_id>12568</project_id>
      <project_id>12784</project_id>
      <project_id>12850</project_id>
      <project_id>13629</project_id>
      <project_id>13896</project_id>
      <project_id>13960</project_id>
      <project_id>14018</project_id>
      <project_id>14045</project_id>
      <project_id>14295</project_id>
      <project_id>14408</project_id>
      <project_id>15813</project_id>
      <project_id>15865</project_id>
      <project_id>15919</project_id>
      <project_id>16233</project_id>
      <project_id>16315</project_id>
      <project_id>16339</project_id>
      <project_id>16978</project_id>
      <project_id>16979</project_id>
      <project_id>17218</project_id>
      <project_id>17303</project_id>
      <project_id>17336</project_id>
      <project_id>17337</project_id>
      <project_id>17692</project_id>
      <project_id>17906</project_id>
      <project_id>17966</project_id>
      <project_id>18118</project_id>
      <project_id>18336</project_id>
      <project_id>18759</project_id>
      <project_id>19086</project_id>
      <project_id>19763</project_id>
      <project_id>19923</project_id>
      <project_id>20175</project_id>
      <project_id>20317</project_id>
      <project_id>20329</project_id>
      <project_id>20415</project_id>
      <project_id>21161</project_id>
      <project_id>28022</project_id>
      <project_id>30241</project_id>
      <project_id>30545</project_id>
      <project_id>33206</project_id>
      <project_id>34481</project_id>
      <project_id>34484</project_id>
      <project_id>34517</project_id>
      <project_id>34767</project_id>
      <project_id>36449</project_id>
      <project_id>37421</project_id>
      <project_id>37855</project_id>
      <project_id>38283</project_id>
      <project_id>38800</project_id>
      <project_id>41048</project_id>
      <project_id>44057</project_id>
      <project_id>45123</project_id>
      <project_id>45242</project_id>
      <project_id>45682</project_id>
      <project_id>45747</project_id>
      <project_id>45759</project_id>
      <project_id>46083</project_id>
      <project_id>47001</project_id>
      <project_id>47421</project_id>
      <project_id>48002</project_id>
      <project_id>48778</project_id>
      <project_id>49010</project_id>
      <project_id>49154</project_id>
      <project_id>49984</project_id>
      <project_id>50637</project_id>
      <project_id>50810</project_id>
      <project_id>52002</project_id>
      <project_id>52649</project_id>
      <project_id>52707</project_id>
      <project_id>52747</project_id>
      <project_id>53131</project_id>
      <project_id>53231</project_id>
    </projects>
  </descriminator>

(以下略)

RDF ではあるけど、RSS じゃあないのか。残念。せっかく巨大な RSS に巡り会えたと思ったのにね。

というか、
<!DOCTYPE trove-listing SYSTEM "http://freshmeat.net/backend/fm-trove-0.1.dtd">
ってちゃんと書いてある。同じディレクトリに fm-trove-0.1.dtd などのファイルが置いてある時点で気づくべきだったな。

RSS で最大サイズなのは fm-releases-global.xml かな。
http://download.freshmeat.net/backend/fm-releases-global.xml

サイズは 80365バイト。うーん、大したことないね。「もっと強い奴と戦いたい!」って感じ。

あー、どこかに巨大な RSS や Atom は無いかな。アルバム1枚分の mp3 を Base64 エンコードして RSS に入れて配信するとか・・・これは巨大ではあるけど品性に欠けるか。そうだなあ、Wikipedia の全データを RSS に叩き込むとか、青空文庫の全作品を RSS にして配布するとか、そういうクールでアグレッシブなことをどこかでやってないかなあ。

2005-03-22 (Tue)

* 宇都宮で三国志大戦が稼働しているゲームセンター

この記事の直リンクURL: Permlink | この記事が属するカテゴリ: [ゲーム] [三国志大戦]

2005-03-21 の「三国志大戦のチュートリアルをプレイ」という記事に書いたセガのネットワーク対戦型シミュレーションゲーム「三国志大戦」。宇都宮周辺で三国志大戦が稼働しているゲームセンターのリスト。

三国志大戦くらいの大型筐体のゲームだと、普通はオフィシャルサイトに「ロケーション情報」などと称して設置店舗情報があるものなのだが、三国志大戦に限ってなぜか情報が載っていない。知ってる限りメモ。といっても確認したのは2店舗だけだけど。

三国志大戦公式ウェブサイト
http://www.sangokushi-taisen.com/top_main.html

- グッドヒル宇都宮

栃木県宇都宮市川田町字免の内1000番地1 宇都宮モール SOLE21
http://www.mapfan.com/index.cgi?MAP=E139.53.31.2N36.31.57.3& ...
http://www.goodhill.co.jp/
2005年3月21日確認。上三川街道沿い。4席設置。混雑時は店員に予約する方式。
スターターパックを買うとカードケースをもらえるキャンペーン中。買ってから店員に言ってもカードケースをもらえたけど、店員に言ってから買う方が確実かな。

- セガワールド宇都宮

栃木県宇都宮市東宿郷5-1-10 営業時間 10:00 から 24:00
http://www.mapfan.com/index.cgi?MAP=E139.54.42.5N36.33.18.3& ...
http://www.sega-am.jp/seek2/database.cgi?cmd=dp&DataNum= ...
2005年3月21日確認。駅東大通り沿い。4席設置。待ち行列方式。
店員に言ってからスターターパックを買うとカードケースがもらえるキャンペーン中。

- INTER PARK+1 インターパーク プラスワン

栃木県宇都宮市東谷町立野885 年中無休 午前9時から翌午前5時まで営業
http://www.mapfan.com/index.cgi?MAP=E139.54.35.5N36.29.7.4&a ...
http://www.am-plus1.co.jp/index2.html
2005年3月27日確認。FKD インターパーク南のゲームセンター。4席設置。混雑時は店員に予約する方式。
2005年5月29日追記。新たに4台のサテライトが追加され、合計8台になった。宇都宮で最大規模か。クレジット制限も6クレジットまでだったのが9クレジットまでに緩和された。

- シーサイドリゾート アミューズメントパーク

栃木県宇都宮市睦町7-3
http://www.mapfan.com/index.cgi?MAP=E139.51.49.0N36.33.36.5& ...
2005年3月27日確認。鹿沼街道沿い。4席設置。混雑時は店員に予約する方式。

- プラボ宇都宮店

〒321-0933 栃木県宇都宮市簗瀬町1606-1
http://maps.google.co.jp/maps?q=%E6%A0%83%E6%9C%A8%E7%9C%8C% ...
http://www.namco.co.jp/ar/location.php?id=37
2005年4月4日に友達が、2005年4月10日に私が確認。国道4号線沿い。ドンキホーテの向かい。フェドラ P&D の中。4席設置。待ち行列方式。

- オートスナックつるまき

〒321-0933 栃木県宇都宮市簗瀬町217
http://www.mapfan.com/index.cgi?MAP=E139.54.20.1N36.32.42.9& ...
2005年6月頃確認。国道4号線沿い。4席設置。予約システムについての案内はなし。連コインで台を占有するのがデフォルトの模様。

- ハーマンプラス HarmanPlus

栃木県宇都宮市平松本町1109-8。
http://www.mapfan.com/index.cgi?MAP=E139.54.25.6N36.32.28.2& ...
2005年8月15日確認。前述のオートスナックつるまきと国道4号線の交差点を東南に向かうと右手に見えてくる。
4席設置。予約システムについての案内は特になかった。プレイには支障はないようだが、筐体が非常にボロボロ。夜になると非常に殺伐とした雰囲気になるんじゃないかと思えるほど。昼過ぎに行ったので実際に見たわけではないんだけど。

- (有) 安佐エース

栃木県佐野市堀米町614。
http://www.mapfan.com/index.cgi?MAP=E139.35.13.8N36.19.43.3& ...
確認日不明。2005年5月頃、モニターで「大激戦」のリプレイが流れていてて、そこに「栃木」地区として表示されていた。ゲームに表示するゲームセンター名に (有) って入れてあるのは珍しい。道楽好きの有限会社の社長が三国志大戦の筐体を購入して、それを社員がプレイしてるんじゃないかと思った。

- 三国志大戦を設置していない店舗

訪問時に設置していないことを確認した店舗を列挙。

- タイトー ラクガキ王国 in 宇都宮。宇都宮市陽東6-2-1ベルモール宇都宮2F

http://www.taito.co.jp/shisetsu/space/314.html
2005年3月27日確認。Quest of D は4席設置されてたんだけど、三国志大戦は設置されていなかった。

- 未確認の店舗

稼働してそうだけど未確認な店舗。
e3陽東店。ベイシアの向かいあたりのお店。

- 公式サイトに設置店舗情報が掲載された

2005-04-11 追記。三国志大戦の公式サイトに設置店舗情報が掲載された。

三国志大戦公式ウェブサイト 設置店舗情報
http://www.sangokushi-taisen.com/tenpo04.html#tochigi
ゲーム&ビリヤード 遊ing : 栃木県宇都宮市石井町下平出境2707−4
グッドヒル :   栃木県宇都宮市川田町字免の内1000-1
セガワールド宇都宮 : 栃木県宇都宮市東宿郷5−1−10
INTER PARK+1宇都宮 : 栃木県宇都宮市東谷町立野885
シーサイドリゾート アミューズメントパーク : 栃木県宇都宮市睦町7−3
プラボ宇都宮店 : 栃木県宇都宮市簗瀬町1590−6
アミューズメントパーク ハーマン佐野店 : 栃木県佐野市大橋町3183−2
スカイラブ : 栃木県佐野市富岡町1711

2005-03-21 (Mon)

* セガの三国志大戦のチュートリアルをプレイ

この記事の直リンクURL: Permlink | この記事が属するカテゴリ: [ゲーム] [三国志大戦]

セガのネットワーク対戦型シミュレーションゲーム「三国志大戦」をプレイしてきた。

- 三国志大戦とは

三国志大戦はセガのネットワーク対戦型シミュレーションゲーム。オフィシャルサイトだと「ジャンル:リアルタイムカードアクション」って書いてあるけど、アクションの要素は少しだけしか無い。戦術級のリアルタイムシミュレーションゲームと捉えた方が正確だ。

三国志大戦公式ウェブサイト
http://www.sangokushi-taisen.com/top_main.html

アーケードゲームでしかも結構大型の筐体なので、大きめのゲームセンターでないと置いてないかも。最近のゲームセンターでは大型筐体でプレイするカードゲームというのが流行っている。

セガ 「ダービーオーナーズクラブ」競走馬育成シミュレーションゲーム
セガ 「アヴァロンの鍵」カードで遊ぶボードゲーム。
セガ 「Quest Of D」ダンジョン攻略型ネットワークゲーム
セガ 「World Club Champion Football」サッカーゲーム
ナムコ 「ドラゴンクロニクル」ドラゴン育成ゲーム

たいてい IC カードとトレーディングカードを併用してゲームする。ゲームの進行度や自分の情報を IC カードにセーブし、トレーディングカードをゲーム中の駒として使う。

三国志大戦もこういったカードゲームの流れをくむ。プレイヤーは軍勢の指揮官となり、トレーディングカードに描かれた武将を自軍の駒として戦っていく。敵陣に攻め込み、敵の城を落とせば勝ち。

手持ちのカードで「デッキ」を組み、それを自軍としてコンピュータの指揮する軍勢や、ネットワークで繋がれた他のゲームセンターのプレイヤーの軍勢と対戦する。1プレイにかかる料金は300円とちょっと値が張るが、1プレイ毎に武将カードがもらえる。1プレイにかかる時間は15分くらいかなあ? 稼働開始から間もないので、どこのゲームセンターでもプレイ待ちの人が出るほどの人気ぶりだ。

真・三國無双4真・三國無双4

コーエー
発売日: 2005/02/24
PlayStation2

amazon で詳しく見る

ちなみに、三国志の知識があるとより楽しめると思う。光栄の三国無双をプレイしておくとか、横山光輝の三国志の漫画を読むとか、吉川英治の三国志を読んでおいたりしておくと良いかも。ちなみに私は三国無双しかやってない。
三国志〈1〉三国志〈1〉

吉川 英治
発売日: 1989/04


amazon で詳しく見る


- 三国志大戦 プレイレポート

私は今日が初プレイ。ということで、まず500円のスターターパックを買う。筐体の近くの自動販売機で売っていて、パックの中にはゲームをセーブするための「君主カード」と呼ばれる IC カードと、武将カードが4枚入っている。

カードはその希少度によって以下の4種類に分けられる。

C (Common - コモン) 普遍的なカード。白色。
UC (Uncommon - アンコモン) 珍しいカード。黒色。
R (Rare - レア) 希少なカード。銀色。15枚に1枚くらいの確率らしい。
SR (Super Rare - スーパーレア) とても希少なカード。金色。30枚に1枚くらいの確率らしい。

私のスターターパックには以下のカードが入っていた。

C 曹彰 (そうしょう) 魏 騎兵
C 潘璋 (はんしょう) 呉 槍兵
C 蒋欽 (しょうきん) 呉 弓兵
UC 甘寧 (かんねい) 呉 弓兵

騎兵の曹彰と槍兵の潘璋で敵陣に切り込み、弓兵の蒋欽と甘寧で後方からの支援をおこなうのが基本かな。

そうそう、今スターターパックを買うと三国志大戦のロゴ入りのカードケースがもらえるゲームセンターが多いようだ。私がスターターパックを買ったゲームセンターでも、店員に言うとカードケースをもらえた。

- さあプレイ開始

今日はセガワールド宇都宮に来ている。

セガワールド宇都宮
http://www.sega-am.jp/seek2/database.cgi?cmd=dp&DataNum= ...

セガワールド宇都宮には三国志大戦が4席分設置されていた。連休ということもあってか、待ちができている。並んで待つこと10分くらいで席に着くことができた。待っている間は説明書を読んだり、先にプレイした友達に話を聞いたり、モニターに流れている合戦ハイライトを見ていたりしていたので、そんなに待たされたという感じはなかった。

コインと君主カードを筐体に入れ、プレイ開始。最初の2回はチュートリアルだそうだ。タクティクスオウガなどもそうだったけど、こういう戦術シミュレーションは説明書を読むよりもチュートリアルをプレイする方がわかりやすい。

チュートリアルは軍師役の人がいろいろとアドバイスしてくれる形で進む。武将ユニットの動かし方や、ユニット同士の得手不得手を表す「三すくみの法則」などを教わり、敵の城の攻め方、武将が持つ「計略」の発動のさせ方を教わる。そして、練習軍との対戦となった。

このゲームでは、ゲーム画面上部に自分のプレイしているゲームセンターの名前が出る。もちろん、敵軍のゲームセンター名もだ。私の場合「セガワールド宇都宮」と出ているが、練習軍のゲームセンター名は「ハイテクセガ赤壁」とか「セガワールド許昌」とか「ジョイポリス洛陽」とかだった。そんなところにもゲームセンターがあるんですか。さすがセガ。

練習軍は非常に弱い。そもそも敵武将の武力レベルや知力レベルが異常に低いし、特徴のない「歩兵」ユニットなので簡単に蹴散らせる。騎兵の曹彰と槍兵の潘璋があっという間に敵城門に到達し、攻城を開始。あわせて弓兵の甘寧と蒋欽を前線まで進軍させる。完全に我が軍の優勢となった。

しかし、油断大敵。攻城中にも結構ダメージを受ける。その結果、騎兵の曹彰と槍兵の潘璋のユニットが兵力を失い自陣に撤退することとなった。撤退しても一定時間経てば回復して再度出陣できるが、時間がかかる。撤退する前に自陣に戻して兵力を回復させるべきだったな。しばらくして曹彰と潘璋は復活。一直線に敵城門に突撃させる。城門は弱点となっているので、ここを攻めることで敵城に大ダメージを与えられる。今度は兵力も十分残っているため敵城を攻め続けることができ、難なく敵の城を陥落させた。やったー、勝ったぞー。

チュートリアルは25分くらいで終了した。次回は上級チュートリアルだそうだ。武将カードが払い出され、IC カードに結果が書き込まれてゲーム終了。

- 今日手に入れた三国志大戦カード

チュートリアルの結果もらったカードは C 張任 (ちょうじん) 他勢力 弓兵 だ。武力6、知力6 でコスト1.5、伏兵の特技を持つ。なかなか使えそうだけど、弓兵で伏兵ってどうなんだろう? 弓を撃ったらバレバレな気がする。

あと、他勢力なのが残念。デッキ中の勢力数が増えてしまうと、「士気」の最大値が減ってしまう。士気の最大値が低いと、武将の持つ計略を散発的にしか発動できなくなってしまう。まあ、多少士気の最大値が下がってもユニットが多い方が良さそうなので、張任は次回から参戦させる予定だ。

残念ながらレアはなかった。スターターパックにもレア以上のカードは入っていなかった。そのため私のデッキは知らない武将ばかりだ。甘寧は三国無双の顔つきキャラだったので覚えてるけどね。

あ、でも蒋欽って名前には覚えがあるな。カード裏面の説明を読んでみる。
蒋欽

呉の将軍。周泰と強盗をしていたが、孫策の人柄に惚れ傘下に入った。その後も長く将として活躍し、赤壁の戦いでは水軍を率いて、先鋒として活躍した。また実直な人柄で、張遼に撃たれそうになった孫権を守りきった。

「殿、お下がりください。この場は俺が!」

周泰って強盗だったのか。蒋欽もカードの絵柄を見ると悪人顔だ。「蒋欽は X-MEN のウルヴァリンに似てる」と友達が言ってた。

2005-03-19 (Sat)

* Mozillaで XSLT適用後のDOMのinnerHTML にアクセスするとエラー

この記事の直リンクURL: Permlink | この記事が属するカテゴリ: [Mozilla] [XML] [JavaScript]

2005-03-16 の「RSS を XSLT で html に変換して見栄え良く表示する」において、「Mozilla の XSLT プロセッサは disable-output-escaping="yes" を無視する」という現象を書いた。Misc Change Log のいわたさんがいろいろと調査してくださった。ありがとうございます。

- 本家 bugzilla には登録済み

Bug 98168 - <xsl:text disable-output-escaping="yes"> not working
https://bugzilla.mozilla.org/show_bug.cgi?id=98168

すでに本家には登録済みなんですね。bugzilla をチェックすることまでは思いが至りませんでした。
このバグは
Status:  VERIFIED
Resolution:  WONTFIX
になってるってことは、えーと、

Bugzilla の検索フォームを使用するためのヘルプ
http://bluequartz.org/bugzilla-jp/queryhelp.cgi
VERIFIED- QA がバグと処理方法を見た上で、適切な処理がなされたと同意した。
(略)
WONTFIX - 将来にわたって修正されることはないとされた問題。

すなわち修正されないってことが決まったってことですか。ええー、そんなー。

- JavaScript で「Mozilla の XSLT プロセッサは disable-output-escaping="yes" を無視する」に対処する

いわたさんが書いてくださったのが以下の JavaScript。

disable-output-escaping="yes"
http://quasiquote.org/log/2005/03/18/disable-output-escaping
代替案としては上のリンクにあるように、innerHTML をいじればいいのだろうか。

      ...
      </head>
      <script type="text/javascript">
        function onload_cb() {
            var elements = document.getElementsByTagName('div');
            for (var i = 0; i &lt; elements.length; i++) {
                var el = elements[i];
                if (el.className == 'description') {
           el.innerHTML = el.textContent;
                }
            }
        }
      </script>
      <body>
    <xsl:if test="system-property('xsl:vendor')='Transformiix'">
     <xsl:attribute name="onload">onload_cb()</xsl:attribute>
    </xsl:if>
    <div class='description'>
     <xsl:value-of select="content:encoded" disable-output-escaping="yes"/>
    </div>
    </p>
      ....


みたいにしてみたけど、innerHTML に代入するところで例外吐いて死ぬ。ううむ。

確かにエラーになりました。Mozilla/5.0 (Windows; U; Windows NT 5.0; ja-JP; rv:1.7.5) Gecko/20041108 Firefox/1.0 です。でも何でだろう? el.innerHTML = el.textContent; の右辺の el.textContent を固定文字列に変えてもエラーになるので、innerHTML のアクセス時の例外か。

Firefox の JavaScript コンソールに表示されたエラー
エラー: uncaught exception: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsIDOMNSHTMLElement.innerHTML]"  nsresult: "0x80004005 (NS_ERROR_FAILURE)"  location: "JS frame :: file:///E:/cygwin/home/sonic/public_html/log/cl.xml :: onload_cb :: line 6"  data: no]

- XSL 変換後文書の DOM ツリーをチェックしてみる

Firefox 付属の DOM インスペクタで XSL 変換後の文書の DOM ツリーを確認したが、問題なさそうだ。エラーになる原因として考えられるのは、XSL 適用後の DOM ツリーの場合、innerHTML にはアクセスできないという制約または仕様の存在かなあ。

html に XSL 変換後の文書をハードコーディングしたときはちゃんと el.innerHTML = el.textContent; が動作する。以下の html を euc-jp で保存して Firefox にレンダリングさせたら、エスケープした h1 がちゃんとエスケープ解除されて html としてレンダリングされた。つまり、JavaScript 自体には問題がないということだ。

<html lang="ja"><head>
<meta http-equiv="Content-Type" content="text/html; charset=euc-jp">
<!-- 京 -->
<title>Landscape - エンジニアのメモ</title>
<link rel=stylesheet href="diary.css" media="all">
<meta http-equiv="Content-Style-Type" content="text/css">
<meta http-equiv="Content-Script-Type" content="text/javascript">

    <script type="text/javascript">
        function onload_cb() {
            var elements = document.getElementsByTagName('div');
            for (var i = 0; i < elements.length; i++) {
                var el = elements[i];
                if (el.className == 'sec_body') {
                  el.innerHTML = el.textContent;
                }
            }
        }
    </script>

</head>
<body onload="onload_cb()">
<div class="day">
<p class="pdate"><span class="date"><a name="2005-03-16" href="2005-03-16.html">2005-03-16 (Wed)</a></span></p>
<div class="body">

<div class="section">
<div class="subtitle"><h2><a name="2005-03-16-1" href="2005-03-16.html#2005-03-16-1"><span class="sanchor">*</span></a> <strong class="clitemheader">XML: RSS: RSS を XSLT で html に変換して見栄え良く表示する</strong></h2><p>この記事の直リンクURL: <a href="2005-03-16.html#2005-03-16-1" title="この記事にリンクする場合などに使う恒久的な URL">Permlink</a> | この記事が属するカテゴリ:  [<strong><a href="cat_xml.html" title="XML カテゴリの記事一覧">XML</a></strong>] [<strong><a href="cat_rss.html" title="RSS カテゴリの記事一覧">RSS</a></strong>]</p></div>
<div class="sec_body">

&lt;h1&gt;H1&lt;/h1&gt;

</div>
</div>
</div>
</div>
</body>
</html>

うーん、今回は有効な対処法がなかったなあ。Google で disable-output-escaping を検索したら、属性値のエスケープを解除する裏技的な方法はあったんだけど、私がやりたいことには応用できなさそうだし。

属性値のエスケープ無効化 - XML & SOA
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=1206 ...
飛騨の職人さんのような、手作りも現在は可能です。
[xml-users 8826] Re: MSXMLと.NETFramework ClassLibraryのXSLT変換の相違
http://www2.xml.gr.jp/log.html?MLID=xmlusers&TID=8815

<xsl:for-each select = "@*">
<xsl:text> </xsl:text>
<xsl:value-of disable-output-escaping="yes" select="name()" />
<xsl:text>=</xsl:text>
<xsl:text disable-output-escaping="yes">"</xsl:text>
<xsl:value-of select="." />
<xsl:text disable-output-escaping="yes">"</xsl:text>
</xsl:for-each>

XSLT !斬り!

とりあえず今回はお手上げ。

2005-03-17 (Thu)

* リッジレーサーズのサントラ リッジレーサーズ ダイレクト・オーディオ発売決定

この記事の直リンクURL: Permlink | この記事が属するカテゴリ: [音楽]


PSP のリッジレーサーズのサントラが発売決定。

2004-09-21 に書いた「GRIP - Ridge Racer2 / 佐野電磁 (sanodg) 最高!」で、
リッジレーサーズのサントラはどうなるんだろう? 2枚組で全曲収録してくれたら買っちゃうだろうなー。
と書いたけど、とうとう現実となった。

ダイレクト・オーディオっていう名前は R4 - RidgeRacer Type 4 のサントラを意識してるのかな。R4 の時とはレーベルは別みたいだけど。

佐野電磁 (sanodg) さんの新曲も入ってるんでしょ? 購入決定。ゲームは買ってないし、新曲も CM やウェブ上の動画で流れた部分くらいしか聞いていないけど、買う。私にとって、佐野電磁さんはそういうアーティストだから。即 CD に焼いて車で聴きまくりだろうな。

4月27日、ついに登場! 「リッジレーサーズ ダイレクト・オーディオ」 から。
http://www.watch.impress.co.jp/game/docs/20050316/rrs.htm

- PSP + リッジレーサーズはそのうち買おうと思ってる

RIDGE RACERSRIDGE RACERS

ナムコ
発売日: 2004/12/12
Sony PSP

amazon で詳しく見る

ゲームはこっち。でも、PSP 本体の品薄や不良品騒動とかのために、まだ購入には至っていない。

最近 PS2 のリッジレーサー V を友達と遊んでたらとても面白くて、それで十分だったってこともあったし。リヴェルタ・ソラーレでのタイムアタックが楽しかった。乗りこなしにくい暴れ馬を手足のように扱ってドリフトでコーナーをクリアしていくのはすごく面白い。

PSP の品薄問題は解消されたようだし、リッジレーサーズの通信対戦やってみたいし、いろいろ購入欲をかき立てられる部分はあるので、リッジレーサーズ + PSP はそのうち買うだろう。

2005-03-16 (Wed)

* RSS を XSLT で html に変換して見栄え良く表示する

この記事の直リンクURL: Permlink | この記事が属するカテゴリ: [XML] [RSS]

Landscape の RSS に XSL (スタイルシート) を付けて、RSS を XSLT (XSL Transformations) を施した html として表示するようにした。

- XSLT で RSS を見栄え良く

当サイト Landscape は直近7日分の記事の全文入り RSS と、全記事・全文入りの RSS を配布している。

直近7日分の記事全文を含む RSS
http://sonic64.com/cl.xml

すべての記事全文を含む RSS
http://sonic64.com/cl-full.xml

これらは生の XML ファイルなので、そのままブラウザで閲覧しようとすると XML データがそのまま表示される。Mozilla などで Landscape の RSS を表示すると、以下のように「XSL が無いから仕方なく XML ドキュメントツリーを表示するよ」といった主旨のメッセージが表示される。
この XML ファイルにはスタイル情報が関連づけられていないようです。以下にドキュメントツリーを表示します。

実際に RSS のデータを利用するときは Bloglines や RSS リーダーで処理して表示させることがほとんどだと思われるので、 XSL が無くても問題はない。ただ、XSL があった方がブラウザで生の XML データを表示させたときに見やすい。というわけで、XSL を書いて RSS を html に変換して表示するようにしてみる。

- 先達の知恵を使え

ゼロから XSL を書き起こすのは大変そうなので、先達の書いた XSL を修正して自分好みの XSL を作ることにする。

日本で RDF/RSS やセマンティックウェブといったら The Web KANZAKI http://www.kanzaki.com/ だ。http://www.kanzaki.com/info/memo.xsl を参考に Landscape の XSL を記述する。

- RSS の content:encoded を XSL 変換後の文書に表示

2004-10-26 の「content:encodedが足りねぇ… じゃんじゃん 持ってこい」で書いたように、私は RSS に記事全文を入れる派だ。なので、今回の XSL でも content:encoded のデータをそのまま表示させるようにしたいところだ。

Web KANZAKI の XSL は content:encoded ではなく description を表示するようにしているので、ここは修正が必要。以下のようにした。

content モジュールの指定を追加。
description を呼び出している部分を content:encoded を呼ぶようにし、disable-output-escaping 属性を属性値 yes で追加。

  xmlns:content="http://purl.org/rss/1.0/modules/content/"
(略)
<xsl:value-of select="content:encoded" disable-output-escaping="yes"/>

- 完成した XLS

html で使っていたスタイルシート (CSS) を XSL 変換後の文書にも流用したかったので、同じような論理構造で html を出力するように XSL を仕上げた。以下に仕上げた XSL を引用しておく。favicon を呼び出すための記述なども追加しておいた。

http://sonic64.com/rss.xsl
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0"
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
  xmlns="http://www.w3.org/1999/xhtml"
  xmlns:rss="http://purl.org/rss/1.0/"
  xmlns:dc="http://purl.org/dc/elements/1.1/"
  xmlns:content="http://purl.org/rss/1.0/modules/content/"
  exclude-result-prefixes="rdf rss dc content"
>

<xsl:template match="/">
  <xsl:apply-templates select="rdf:RDF"/>
</xsl:template>

<xsl:template match="rdf:RDF">
  <html xml:lang="ja" lang="ja">
  <head>
    <title><xsl:value-of select="rss:channel/rss:title"/></title>
    <meta http-equiv="Content-Script-Type" content="text/javascript" />
    <link rel="stylesheet" href="diary.css" type="text/css" />
    <link rel="alternate" type="application/rss+xml" title="RSS" href="http://sonic64.com/cl.xml" />
    <link rel="alternate" type="application/rss+xml" title="RSS full archive" href="http://sonic64.com/cl-full.xml" />
    <link rel="shortcut icon" href="favicon.ico" />
  </head>
  <body>
    <h1><a href="{rss:channel/rss:link}"><xsl:value-of select="rss:channel/rss:title"/></a></h1>

    <p><a href="{rss:channel/rss:link}"><xsl:value-of select="rss:channel/rss:title"/></a> の記事<xsl:value-of select="count(rss:item)"/>件の全文です。RSS フィードを XSL 変換して表示しています。この RSS フィードをお使いの RSS リーダーに登録すれば <a href="{rss:channel/rss:link}"><xsl:value-of select="rss:channel/rss:title"/></a> の RSS を購読できます。</p>

    <xsl:apply-templates select="rss:item"/>

    <p class="credit">斎藤 宏明 <a href="mailto:sonic64@infoseek.jp">sonic64@infoseek.jp</a></p>
  </body>
  </html>
</xsl:template>

<xsl:template match="rss:item">
  <div class="day">
  <p class="pdate"><span class="date"><a href="{rss:link}"><xsl:value-of select="substring(dc:date, 1, 10)" /> </a></span></p>
  <div class="section">
    <div class="subtitle"><h2><a href="{rss:link}"><span class="sanchor">*</span></a> <strong class="clitemheader"><xsl:value-of select="rss:title"/></strong></h2>
    </div>
    <div class="sec_body">
    <xsl:value-of select="content:encoded" disable-output-escaping="yes"/>
    </div>
  </div>
  </div>
</xsl:template>

</xsl:stylesheet>

- RSS にスタイルシートを呼び出す記述を追加

RSS からスタイルシートを呼び出すための記述を追加する。

以下を RSS に追加するだけ。非常に簡単。
<?xml-stylesheet href="rss.xsl" type="text/xsl" media="screen"?>

- Mozilla の XSLT プロセッサは disable-output-escaping="yes" を無視する

Mozilla で動作確認をしてみると、content:encoded 部分が意図したとおりに表示されない。content:encoded 中の html タグがエスケープされているような動きをしている。

エスケープされるのを防ぐために、disable-output-escaping="yes" を追加しておいたが、それが効いていないようだ。
<xsl:value-of select="content:encoded" disable-output-escaping="yes"/>

どうやら、Mozilla に搭載されてる XSLT プロセッサは disable-output-escaping="yes" の指定を無視するようだ。その結果、content:encoded の中身がそのまま表示されてしまうわけだ。この現象は Mozilla/5.0 (Windows; U; Windows NT 5.1; ja-JP; rv:1.7.5) Gecko/20041108 Firefox/1.0 の環境で発生した。

なんとかならないかなあ。JavaScript を使って UserAgent が Mozilla のときは document.write でレンダリングさせたりすればいいのかな。なんか手間がかかるなー。仕方ないので今回はとくに対処しないことにする。

追記。2005-03-19 に「Mozillaで XSLT適用後のDOMのinnerHTML にアクセスするとエラー」を書いた。結局問題は解決できなかったけど。

- xsl:output を付けると IE6 で文字化け

実は IE でも問題が発生していた。

<xsl:output method="html" encoding="utf-8" />
XSL に上記の指定を付けると WindowsXP の IE6 では盛大に文字化けしてくれる。どうやら出力を Shift_JIS として解釈してる模様。仕方がないので、xsl:output は指定しないことにした。

- さあ XSLT 付きの RSS を見てみよう

さあ、丹誠込めて作った XSL を適用した RSS をぜひ見て欲しい。

直近7日分の記事全文を含む RSS
http://sonic64.com/cl.xml

すべての記事全文を含む RSS
http://sonic64.com/cl-full.xml

直近7日分の方はせいぜい数十KB のサイズなのですぐにレンダリングされるけど、すべての記事全文の方はかなり重い。そもそも RSS 自体が 3MB 程度もあるからなー。

で、なにが便利なの? って聞かれるとちょっと困る。

「すべての記事全文を含む RSS」の方は利用価値があるかも。ブラウザの検索機能などを使って全文検索をしたいときに使えるだろうしね。あとは、Landscape の中身を全部印刷して読みたいときとかに有用かな。たぶん合計で数百ページ以上になると思うけど。

- 今後の野望

今回は比較的質素な XSL を書いたが、もっといろんな機能を盛り込んだ html を出力する XSL を書いても面白いかも。Google の検索窓を付けたり、amazon のライブリンク付けたり、記事一覧を付けたりして html 版と同じような見た目を再現してみようかな。あんまり意味ないけどね。

あとは http://sonic64.com/rss.xsl にアクセスすると生の XML 文書が表示されるのはなんか中途半端なので、XSL を XSL で見栄え良くするというのはどうだろう。

2005-03-01 (Tue)

* Subversion を Windows で GUI 中心に使う

この記事の直リンクURL: Permlink | この記事が属するカテゴリ: [Windows] [Subversion]

2005-02-28 の「CVS から Subversion に乗り換え」の続き。Windows 環境で GUI なバージョン管理システムを使うために、Subversion と TortoiseSVN をインストールする。

- Subversion 本体のダウンロード

subversion: ファイルの共有: Windows
http://subversion.tigris.org/servlets/ProjectDocumentList?fo ...

上記ページから以下の実行ファイルをダウンロード。

svn-1.1.3-setup.exe
http://subversion.tigris.org/files/documents/15/20015/svn-1. ...

- Subversion のインストール

ダウンロードした実行ファイルをダブルクリックしてインストール開始。Next を連打してどんどん進める。

インストールが終わったとき、以下のメッセージが表示された。インストール直後の警告やメッセージって、たいていプログラムを動作させるために最低限必要なことだったりすることが多いので、読んでみる。

Information

Please read the following important information before continuing.

When you are ready to continue with Setup, click Next.

Post installation notes for Subversion:

Read the documentation included with this distribution.
For more info - Fire up your browser and point it to:
  http://subversion.tigris.org/ and look for documentation.
Take a close look in the Readme.txt file found in the Subversion folder and  the start menu. It may save you some time if you get into trouble.
Notes for Windows 9x and Millenium users:
Add this line to your Autoexec.bat file (adjust the path so it fits your system) if it's not there:

    SET APR_ICONV_PATH="C:\Program Files\Subversion\iconv"

Restart your machine if your Autoexec.bat file are changed.

Thanks for using Subversion! And..  enjoy..
Your Subversion team

Windows 95系のユーザは 環境変数 APR_ICONV_PATH をセットしろと言ってる。私は Windows2000なので何もせずに続行。無事 Subversion 本体をインストール完了。

- Subversion の GUI クライアント TortioseSVN のダウンロード

Subvresion 本体はインストールしたので、現状でもコマンドラインから使うことはできる。でもコマンドラインではなく GUI から使いたいので、GUI のクライアント TortoiseSVN (とーたすえすぶいえぬ) をインストールする。

Tortoise って最初は とーといず って読んでしまったけど、トータスって読むんだね。トータス松本のトータスだ。亀という意味らしい。

tortoisesvn: TortoiseSVN Downloads
http://tortoisesvn.tigris.org/download.html

上記ページから、以下の2つをダウンロードした。

Version 1.1.3.2502 for NT4/Win2k/XP
http://tortoisesvn.tigris.org/files/documents/406/20001/Tort ...

メニューなどの文言を日本語化するために、Japanese Language Pack もダウンロード。
http://tortoisesvn.tigris.org/files/documents/406/20028/Lang ...

- Subversion の GUI クライアント TortioseSVN のインストール

これもダブルクリックしてインストーラを起動し、あとは Next 連打。超簡単。インストール完了時に OS の再起動を要求されたので再起動。シェル統合とかしてると再起動が必要なんだろうな。

- Subversion リポジトリを作成

まず、リポジトリのデータベースを置きたいディレクトリをエクスプローラから作っておく。今回は d:\svn に作ってみる。

作ったディレクトリを右クリックして TortoiseSVN の中の Create repository here を選ぶ。リポジトリで使うデータベースの種類を尋ねてくる。

Select the type of repository you want to create:

◎ Berkeley Database (BDB)
○ Native Filesystem (FSFS)

デフォルトの Berkeley DB でいいよね。2004-11-09 の 「GMail をバックアップストレージとして使う」で書いたスクリプトを使って、リポジトリは圧縮と暗号化を施して毎日 Gmail に投げる予定だし。万が一 Berkeley DB で何らかの不具合が起きたときは FSFS を試してみることにするけど。

The Repository was sucessfully created.

上記ダイアログが出たら、無事作成完了。

- リポジトリにインポート

インポートしたいディレクトリを右クリックし、import を選択。で、どのリポジトリにインポートしたいかを指定。それだけ。あとは進行状況が表示される。あー楽だ。GUI でできるっていいなあ。

- update, commit

svn update や svn commit も簡単。単に対象を右クリックしてやりたい操作を選ぶだけ。

- 日本語ファイル名への対応

一応日本語のファイル名が通るかどうかを軽くテスト。

リポジトリへの追加、削除、ファイル名の変更、コミットを試したが、とくに問題なく処理がおこなわれた。まあ、個人的には ascii 以外を積極的に使うつもりはないけど。

以下のファイル名で試した。
日)椨狂.txt
ソースコードチェックリスト.txt
能力表.txt

一つめは日本語文字列 + 丸付き数字、全角のローマ数字。日1本II語.txt と書いた。このメモは euc-jp で書いてるけど、utf-8 にすると化けちゃうかな。RSS で読んでる人は適当に脳内で補ってね。
2つめは半角カナ文字。ソースコードチェックリスト.txt と書いた。
3つめは Shift_JIS エンコーディングのときに \ が含まれる能 や 表 を含んだ文字。能力表.txt と書いた。

- subversion には cvs release ってある?

Google で subversion "cvs release" を検索

subversion には cvs release に類するコマンドは存在しない模様。rm -rf などで直接ファイルシステムから削除してしまって構わないようだ。

Subversion スレッド その3
http://pc5.2ch.net/test/read.cgi/linux/1100622362/287-
287 :login:Penguin:05/02/16 00:07:44 ID:FUKFr12X
cvs release -d に相当するコマンドはありますか?
今ググったりして探してるんだけど1.1.3 releasedとかのお知らせばっかり引っ掛かって・・・


288 :login:Penguin:05/02/16 06:24:57 ID:c55Mr6CX
rm -rf しちゃっていいんじゃなかったっけ?
ぐぐるなら、"cvs release" とかクォーティングすれば良いと思われ


289 :login:Penguin:05/02/16 13:30:42 ID:2EWi4Gho
cvs editとか使ってるんでない限り、cvs releaseって必要ないからなぁ。



290 :287:05/02/16 21:46:56 ID:FUKFr12X
>> 288, 289
サンクス。リポジトリ側でバックアップ取って作業コピー rm -rf してみました。
特に問題ない模様。リポジトリ側で誰が作業中かとか管理してたらやだなと思ったの
ですがそこまでしてないみたいですね。


291 :login:Penguin:05/02/17 00:34:54 ID:dOR7Wnf2
管理してないですよ。Subversionはその辺りは一切見ていません。
だって誰がどこを作業してもよいようになっているので。
svn diffやsvn statusだって、何のオプションもつけなかった
わざわざリポジトリにアクセスしません。

- Subversion + TortoiseSVN は実に楽。

しばらくこの環境でやってみよう。Subversion ・・・いや、TortoiseSVN は実に素晴らしい。楽すぎ。Tortoise のスペルは覚えられないけど。コマンドラインと GUI の両方があるとやっぱり楽だなあ。

- Subversion を使う際に参考になったサイト

Subversion - メモ
http://terai.s55.xrea.com/Subversion.html

Subversionの基礎練習
http://www.hyuki.com/techinfo/svninit.html
「CVS の基礎練習」の続編かな。コマンドラインから使う方法を解説してある。

すべての記事の見出し (全1029件)
全カテゴリの一覧と記事の数
カテゴリごとに記事をまとめ読みできます。記事の表題だけを見たい場合は、すべての記事の見出し (カテゴリ別表示) へ。

直近30日分の記事
2007-04-23 (Mon)
2007-03-07 (Wed)
2007-02-27 (Tue)
2007-01-17 (Wed)
2007-01-15 (Mon)
2007-01-14 (Sun)
2007-01-08 (Mon)
2006-12-01 (Fri)
2006-11-22 (Wed)
2006-11-20 (Mon)
2006-11-19 (Sun)
2006-09-30 (Sat)
2006-08-29 (Tue)
2006-08-04 (Fri)
2006-07-27 (Thu)
2006-07-23 (Sun)
2006-07-17 (Mon)
2006-07-10 (Mon)
2006-07-06 (Thu)
2006-07-03 (Mon)
2006-06-29 (Thu)
2006-06-28 (Wed)
2006-06-27 (Tue)
2006-06-25 (Sun)
2006-06-19 (Mon)
2006-06-18 (Sun)
2006-06-15 (Thu)
2006-06-11 (Sun)
2006-06-01 (Thu)
2006-05-30 (Tue)
プロファイル
斎藤 宏明。エンジニアです。宇都宮市に住んでいます。
リンク
RSS
スポンサードリンク
Powered by
さくらインターネット

© 斎藤 宏明 Saito Hiroaki Gmail Address
Landscape - エンジニアのメモ http://sonic64.com/
Landscape はランドスケープと読みます。
ひらがなだと らんどすけーぷ です。