Landscape トップページ | < 前の月 2005-10 2005-11 次の月 2005-12 >

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

月ごとの記事一覧
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-11/ 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日

2005-11-30 (Wed)

* C# の StringBuilder と += による文字列連結の速度比較

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

C# で文字列連結するとき、string 型を += で連結するとパフォーマンスが落ちるので、ある程度の回数以上の文字列連結には StringBuilder を使うということが常識となっている。string は不変なので、連結の度に新しいオブジェクトの生成と破棄がおこなわれるからというのが差の発生原因。

ただ、私は実際どの程度性能が劣化するのか計測したことがない。このままだとコードレビューの時に「StringBuilder 使え」と指摘をしても、その根拠となる数値を示せない。後輩などに「計測もしないで性能が落ちるなんて言ってるんですか? 性能を理由にコードを書き換えるときはまず計測しろって言ってたのは斎藤さんじゃないですか?」とか言われかねないので、計測してみる。幸いなことに、私の所にはこの程度の指摘をする必要のある後輩はいないので問題ないけど。

- 計測用コード

傾向がわかればいいので、コードは簡単に書いた。

using System;
using System.Text;

namespace ConsoleApplication1
{
    /// <summary>
    /// Class1 の概要の説明です。
    /// </summary>
    class Class1
    {
        /// <summary>
        /// 文字列連結の速度比較
        /// </summary>
        [STAThread]
        static void Main(string[] args) {

            int times = 100000;
            Console.WriteLine("{0:d} times loop.", times);

            DateTime start_str = DateTime.Now;
            string str = string.Empty;
            for (int i = 0; i < times; i++) {
                str += i.ToString();
            }
            Console.WriteLine("String += : " + (DateTime.Now - start_str).ToString());


            DateTime start_str_builder_default = DateTime.Now;
            System.Text.StringBuilder sb_default = new System.Text.StringBuilder();
            for (int i = 0; i < times; i++) {
                sb_default.Append(i);
            }
            Console.WriteLine("StringBuilder: " + (DateTime.Now - start_str_builder_default).ToString());
        }
    }
}

ちなみに実行環境は以下の通り。
富士通 FMV-E600 Celeron 1.7GHz 512MB Memory
Visual Studio 2003 C# のコンソールアプリケーションとして作成。
Debug モードでコンパイルし、CTRL + F5 で実行。

- 計測結果

計測した結果。times の数を変えて3パターン計測。

1000 times loop.
String += : 00:00:00.0156250
StringBuilder: 00:00:00

千回のループ。StringBuilder を使ったときの所要時間がゼロになってる。このタイマーの精度は 15ミリ秒単位で出力できる程度だっけ? その範囲内に収まっちゃったってことか。何にせよ1000回じゃ少ないなあ。

10000 times loop.
String += : 00:00:01.8125000
StringBuilder: 00:00:00.0156250

一万回のループ。百倍くらい違うな。実際にはいろいろ無茶をやった分に付随するコストも加算されるだろうから、環境によって差は変動するかもしれない。

100000 times loop.
String += : 00:05:20.5000000
StringBuilder: 00:00:00.0781250

十万回のループ。+= の方は耐えられないくらい遅い。指数的に処理時間が増大している。一方、StringBuilder は安定しているな。

これだけ差があれば、StringBuilder 使えという根拠は示せるね。使う基準としては、ループ内だったら迷わず StringBuilder。回数が固定的なループでも、設定の値や仕様が変わってループ回数が変わるのは良くあることだし。ループ外でも回数が多ければ StringBuilder。ループ外で、かつ一桁程度の回数しか連結しないんだったら += でもいい。

ところで、コンパイラは += を StringBuilder に置き換えるという最適化とかしてくれないのかな。この問題については、人間が適切な文字列連結手法を選ぶ方がスマートだと思うけど、コンパイラによる力業で解決できないのかな。

- StringBuilder のキャパシティの初期サイズによる速度の違い

StringBuilder は内部バッファを持っている。扱うデータのおおよそのサイズがあらかじめわかっているなら、そのバッファのキャパシティをコンストラクタに指定しておいた方が、バッファの拡張のオーバーヘッドを抑えられるので速くなるとのこと。これについても計測してみた。

計測に使ったコードは以下の通り。環境は変更なし。
バッファサイズは 1, 8, 64, 256, 1024, 8192, 16384, 65536, 16777216 を試すことにした。この数値の根拠は勘。ちなみに何も指定しない場合のデフォルトは 16 だそうだ。

using System;
using System.Text;

namespace ConsoleApplication1
{
    /// <summary>
    /// Class1 の概要の説明です。
    /// </summary>
    class Class1 {
        /// <summary>
        /// 文字列連結の速度比較
        /// </summary>
        [STAThread]
        static void Main(string[] args) {

            int times = 1000000;
            Console.WriteLine("{0:d} times loop.", times);

            DateTime start_str_builder_default = DateTime.Now;
            System.Text.StringBuilder sb_default = new System.Text.StringBuilder();
            for (int i = 0; i < times; i++) {
                sb_default.Append(i);
            }
            Console.WriteLine("StringBuilder: Capacity: Default: " + (DateTime.Now - start_str_builder_default).ToString());

            int[] capacity_list = {1, 8, 64, 256, 1024, 8192, 16384, 65536, 16777216};
            foreach (int capacity in capacity_list) {
                DateTime start_str_builder = DateTime.Now;
                System.Text.StringBuilder sb = new System.Text.StringBuilder(capacity);
                for (int i = 0; i < times; i++) {
                    sb.Append(i);
                }
                Console.WriteLine("StringBuilder: Capacity: " + capacity.ToString() + " : " + (DateTime.Now - start_str_builder).ToString());
            }
        }
    }
}

1000000 times loop.
StringBuilder: Capacity: Default: 00:00:00.8437500
StringBuilder: Capacity: 1 : 00:00:00.8281250
StringBuilder: Capacity: 8 : 00:00:00.8593750
StringBuilder: Capacity: 64 : 00:00:00.8281250
StringBuilder: Capacity: 256 : 00:00:00.8593750
StringBuilder: Capacity: 1024 : 00:00:00.9375000
StringBuilder: Capacity: 8192 : 00:00:00.8593750
StringBuilder: Capacity: 16384 : 00:00:00.8750000
StringBuilder: Capacity: 65536 : 00:00:00.8593750
StringBuilder: Capacity: 16777216 : 00:00:00.8125000

まずは百万回。うーん、あんまり変わらないね。ほんの少しだけ値が変動してるけど、百分の一秒レベル。F-ZERO でタイムアタックするなら大きな違いだけど、ここではそこまで重要な意味は持っていないと思う。誤差の範囲。

3000000 times loop.
StringBuilder: Capacity: Default: 00:00:02.7031250
StringBuilder: Capacity: 1 : 00:00:02.6562500
StringBuilder: Capacity: 8 : 00:00:02.7968750
StringBuilder: Capacity: 64 : 00:00:02.8437500
StringBuilder: Capacity: 256 : 00:00:02.9687500
StringBuilder: Capacity: 1024 : 00:00:02.8437500
StringBuilder: Capacity: 8192 : 00:00:02.9687500
StringBuilder: Capacity: 16384 : 00:00:02.8593750
StringBuilder: Capacity: 65536 : 00:00:02.9687500
StringBuilder: Capacity: 16777216 : 00:00:02.9062500

三百万回に増やしてもあまり変わらないね。本当はこのあと一千万回も試そうとしたんだけど、512MB のメモリしかない私のマシンではメモリを使い尽くしてスワップが発生し始めたので取りやめた。

キャパシティを指定した場合とそうでない場合で有意な差は見いだせなかった。もちろん、実行環境やデータのサイズによっても変動してくるとは思う。ただ、キャパシティの値はとりあえずデフォルトでも良いかなあ。とにかく += じゃなくて StringBuilder を使う方が大切ってことだな。極限までチューニングする必要があるときは、計測した上でどうするか決めれば良い。でも、そういう時ってたぶん StringBuilder 以外にボトルネックがありそうな気がする。

2005-11-29 (Tue)

* Winny の技術を読了

この記事の直リンクURL: Permlink | この記事が属するカテゴリ: [] [winny] [ネットワーク]

Winnyの技術Winnyの技術

金子 勇 / アスキー書籍編集部
発売日: 2005/10


amazon で詳しく見る   bk1で詳しく見る

「Winny の技術」を読了した。この本はピアツーピア (P2P) のファイル共有ソフト Winny を、その作者の金子勇氏が解説した技術解説本。純粋に Winny の設計と実装を解説した技術本であるため、Winny の使い方や法律論などは載っていない。

2005-10-05 の『Winny の技術解説本「Winny の技術」を発注』で購入しておいたのだが、読むのがだいぶ遅くなってしまった。

- 資料的価値がある

今まで Winny のソースコードやプロトコルは非公開だった。Winny の設計や実装を学ぶためには、配布された実行ファイルをソースコードに逆変換したりするリバースエンジニアリングや、通信パケットを解析するのが一般的だったようだ。また、作者自身とユーザーが掲示板などに書き込んだ情報を元に推測するということもおこなわれていた。

Winny のネットワークは大規模といえるレベルまで成長しており、その設計と実装を作者自らが解説したこの本は、資料的価値がある。以下に参考になった部分を列挙する。

- 上流と下流によるノードの重み付け

Winny では、Winny ネットワークに参加するノードを対等な関係とするのではなく、上流と下流という概念を取り入れ、回線速度や処理性能で分類している。

過去の P2P アプリケーションは参加するノードが入り交じり、全体の効率を落としていた。回線と処理性能に余裕があるノードは上流に位置づけ、大量のデータをやりとりさせる。また、人気のあるファイルは上流でキャッシュするようにし、Winny ネットワーク内での流通速度を上げる。一方、回線や処理性能に余裕のない下流ノードは上流のノードにぶら下がるようにし、相応の負荷に抑える。

この仕組みであれば、上流は負荷が高いがその分大量のファイルを受信できるし、下流よりも広い範囲でファイルを探すことができる。下流は自分の身の丈にあった範囲でファイルを探すことができ、それぞれの住み分けができる。

上流と下流の概念があることで、どんな参加ユーザーでも受け入れることができ、ネットワーク全体の受容能力が高まる。ネットワークの価値は、まず参加しているノードの数で決まる。もちろん、各ノードの持っているリソースの質も重要だが、量は質に転換する。それを踏まえた設計になっているのが素晴らしい。

- クラスタリングによる分割統治

Winny はクラスタという概念を取り入れ、ネットワークの規模が大きくなっても効率を落とさない仕組みを実現している。

参加しているノードの数が増え、ファイルの流通量が爆発的に増えると、流通量全体に占める目当てのファイルの比率が下がる。これはネットワークが成長すると避けられない事態だ。この問題への対処は上流と下流だけでは難しい。そのため、目当てのファイルや保持しているファイルの傾向でノードを分類し、集団 (クラスタ) を形成するようになっている。これにより、目当てのファイルの検索ヒット率と、キャッシュヒット率が向上する。

問題解決の基本は「分割して統治せよ」だ。上流と下流という一次元の軸しかなかった Winny ネットワークにクラスタという別の次元の軸を与えることで、大量のノードを分割して統治することができる。しかも、お互いのクラスタは明確に分割されるのではなく、ある程度のつながりを保持したままゆるく分割されていく。良くできた仕組みだ。

- 自動ダウンロード、自動ハッシュチェック

Winny は自動ダウンロード、自動リトライ、自動ファイルハッシュチェックなど、Winny ネットワークとアプリケーションの信頼性を高める仕組みを導入している。

欲しいファイルを「予約」して Winny を起動しておけば、あとは Winny 自身が勝手にファイルを持っているノードを検索し、リクエストを発行してダウンロードし、ファイルの整合性のチェックまでしてくれる。

この仕組みはユーザの手間を減らすという点で非常に強力だ。とくに、ネットワークアプリケーションで懸念されるデータ化けやファイル破損を、MD5 ハッシュのチェックをおこなうことで回避している点が良い。TCP 自体にエラーチェックの仕組みがあるが、アプリケーションが保証していることが重要だ。

この仕組みがあることで、数百メガバイトを超えるファイルの共有も安心してできるようになる。チェックは自動でおこなわれるので、ユーザーに手間をかけさせない。安心して任せられるので、流通するファイルが増える。その結果、Winny ネットワークはより大きくなる。

全体的に見て、Winny はファイルの交換を促進する良い仕組みを持っている。IX やプロバイダーが Winny のトラフィックの増加に悩んでいたようだが、これだけの機能を備えていれば、それも頷ける。

- 疑問点

共有できるファイルサイズの上限が 2GB というのはちょっと少ない。たとえば、Debian GNU/Linux sarge の DVD ISO イメージは 4GB くらいあったはず。こういう巨大ファイルは分割しなければならない。開発当時のネットワーク回線事情では、この程度のサイズのファイルを気軽に流通させることはできなかったのかもしれない。

表紙がグレーなのは、Winny の利用される形態が「グレーゾーン」だからかな?

2ページ目の鍵の指紋が気になる。金子氏はこれで何をしようとしているんだろう?

Fingerprint:

16B6 7953 A7C1 2DCA 9DEF C7D1 2546 1CCE C03F 2BA3

- Winny の技術 pdf 版を Winny でダウンロード

Winny の技術 winny ネットワーク上で流通しているようだ。以下がファイル情報。左から順に、ファイル名、 Winny 上のトリップ、ファイルサイズ、md5 ハッシュ。

PDF(一般書籍) [金子勇] Winnyの技術 [05-10-03].zip cbwdWRCPoE 1,900,259 9d2dd618c580e38ea6869c51d9ed1107

2005-11-28 (Mon)

* おいでよ どうぶつの森 タヌキ商店 買い取り価格リスト

この記事の直リンクURL: Permlink | この記事が属するカテゴリ: [ゲーム] [おいでよ どうぶつの森]

タヌキ商店のたぬきちがアイテムを買い取ってくれる価格のリスト。五十音順。
今日釣ったり拾ったりしたものだけなので、全然網羅してない。攻略サイト見れば全部載ってるだろうけど、それじゃ楽しくない。

追記。2005-12-02 に「おいでよ どうぶつの森 タヌキ商店 買い取り価格リスト Ver.2」を書いた。

- くだもの

さくらんぼ 100ベル

私のソニック村にはさくらんぼがいっぱいあるので、買い取り価格は100ベルと安め。他の外来の果物なら200ベルになるんじゃないかなあ?

- 魚

アジ 150ベル
ウグイ 200ベル
カレイ 300ベル
スズキ 160ベル

ウグイはちっちゃいのに意外と高い。イシダイとかシーラカンスとか早く釣りたいなー。あれは四匹か五匹釣れば、家が建つくらい高いもんね。まるでマグロ一本釣りみたいだ。

- 貝

エビスガイ 90ベル
サンゴ 250ベル
サンドダラー 60ベル
タカラガイ 30ベル

サンゴは見た目もわかりやすい。見つけたら速攻拾うべし。
ところで、サンドダラーってゲームキューブ版にもあったっけ? そもそもサンドダラーって何?

2005-11-27 (Sun)

* SSL 証明書を見てる間は IIS 5.0 が停止する

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

運用系でやってしまった。監視システムから障害報告が上がってきて驚いた。

2005-11-26 (Sat)

* おいでよ どうぶつの森とニンテンドーDSを購入

この記事の直リンクURL: Permlink | この記事が属するカテゴリ: [ゲーム] [買い物] [おいでよ どうぶつの森]


「おいでよ どうぶつの森」をプレイするために、ニンテンドー DS を購入。

色は基本のプラチナシルバーを選択。グラファイトブラックとどっちにしようか迷ったんだけど、前のゲームキューブはブラックを選んだし、暗いところでも見つけやすい色にしたかったのでシルバーとなった。

- ヤマダ電機テックランド宇都宮南店

購入先はショッピングセンター アピタの敷地内にできたヤマダ電機テックランド宇都宮南店。11月25日に開店したばかりでオープニングセール中のため、税込13900円で1807ポイント還元という値付けになっていた。ポイントを考えると、まあまあ安いかな? 2005-10-10 の「MCP 70-316 を受験して合格した」で計上した自分用ご褒美予算を使った。本当はプレイステーション3用の予算だったんだけど、おいでよ どうぶつの森とマリオカート DS の魅力には抗えずに使ってしまった。PS3 の予算については発売日が決まった後もう一度考えよう。

ヤマダ電機テックランド宇都宮南店はそんなに広くはない。PC 用マウスの展示が他のヤマダの支店よりもちょっと多めだったかな? 開店から間もないため、店員も客も多かった。DS を買いに来ただけなので、ざっと見て、あとは消耗品だけ買って帰った。

- おいでよ どうぶつの森をプレイ

おいでよ どうぶつの森おいでよ どうぶつの森

任天堂
発売日: 2005/11/23
Nintendo DS

amazon で詳しく見る

2005-10-29 の「おいでよ どうぶつの森 ニンテンドーDS をちょっとやりたい」から一ヶ月。とうとう買っちゃった。
2005-10-29 で書いたように、このゲームは動物たちのいる村で生活するというとてものんびりした内容となっている。そのためこのゲームは「毎日ちょっとずつ楽しむ」というプレイスタイルが適している。私は今他にも3本のゲームを進めているのだが、それらの後の息抜きにプレイするのがよさそう。

さあ、ゲームスタート。

お、前作の GC 版のオープニングでは電車で村へ向かってたけど、今回はちょっと違うのね。この話相手のどうぶつ、後ろ姿しか見えないけど、前作にも出てきた彼かな? 今回はまだ歌は聴かせてくれないのか。

自分の名前は、いつも使ってる「あくあ」にしておこう。ゲームによってはアルファベット表記にしたりカタカナ表記にしたりするけど、どうぶつの森だったらひらがなにしておいた方が雰囲気に合ってるかな。村の名前は「ソニック村」で決まり。話相手の彼と話しているうちに村へ到着。

タッチスクリーンの操作にはすぐに慣れた。ボタンと十字キーを使うよりやりやすいかも。役場で地図をもらい、用意された自宅に向かう。自宅みっけ。中に入ると、みかん箱の上にろうそくが一本と、ラジカセが一台あるのみ。うわー、質素だー。怪談とかを話すにはいいかもしれないけど、これじゃあなあ・・・。まあ、これからいろいろコーディネートしていけばいいか。

家の代金を支払うために、ソニック村唯一のお店のタヌキ商店でバイトすることになった。村の掲示板にお店の宣伝を書いたり、お使いしたり、住民に挨拶したり。前もそうだったけど、ここまでがチュートリアルなんだな。良くできてるよなあ。よし、バイト完了。今日はここまでにしておこうか。釣り竿を買ったので、明日は釣りに出かけよう。

ニンテンドーDS の音質はなかなか良いね。少なくとも、ゲームボーイアドバンスのような劣悪な音じゃない。これはすごく重要なこと。私が任天堂の携帯機にそんなにはまらなかった最大の理由は音質の悪さだが、ニンテンドーDS はそれが解消されている。

2005-11-25 (Fri)

* ASP.NET のパイプライン処理と発生するイベント

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

HttpApplication オブジェクトから発生するイベントの一覧。

セキュリティ保護された ASP.NET アプリケーションの構築 : 動作のしくみ
http://www.microsoft.com/japan/msdn/net/security/SecNetAP04. ...
各 HTTP モジュールには、これらのイベントをフックするイベント ハンドラを実装できます。

BeginRequest    要求処理の開始前に発生
AuthenticateRequest    呼び出し元を認証
AuthorizeRequest    アクセスチェックを実行
ResolveRequestCache    キャッシュから応答を取得
AcquireRequestState    セッション状態をロード
PreRequestHandlerExecute    要求をハンドラ    オブジェクトに送信する直前に発生
PostRequestHandlerExecute    要求をハンドラ    オブジェクトに送信した直後に発生
ReleaseRequestState    セッション状態を保存
UpdateRequestCache    応答キャッシュを更新
EndRequest    処理の終了後に発生
PreSendRequestHeaders    バッファ内の応答ヘッダーを送信する前に発生
PreSendRequestContent    バッファ内の応答本体を送信する前に発生

2005-11-24 (Thu)

* Gmail 等のメールアドレス画像を作れる E-Mail Icon Generator

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

友達に「http://sonic64.com/img/mail.png の画像ってどうやって作ったの?」と聞かれた。どこかの画像生成サービスで作ったということは覚えてるんだけど、サービスの URL がわからない。「ウェブ全体から検索」に切り替えたうえで、Google で Gmail Icon を検索するとヒット。

E-Mail Icon Generator
http://services.nexodyne.com/email/

このページだったかなあ? 違うような気もするけど、とりあえず生成してくれる画像は想像通りなので、たぶんここだろう。

E-Mail Icon Generator は多数のメールサービスに対応していて、それぞれのサービスの意匠を反映した画像を作ってくれる。こんな感じ。

Gmail
http://services.nexodyne.com/email/icon/b6N0IZUe0MU%3D/ZRw7P ...

Yahoo.co.jp
http://services.nexodyne.com/email/icon/JxajfHjVQRk%3D/hklZ% ...

Hotmail
http://services.nexodyne.com/email/icon/gSwcZ9PsmoM%3D/6vmnU ...

現時点で対応しているサービスは以下の通り。

AOL
ATT
Bigfoot
Blueyonder
Comcast
Cox
Earthlink
GMail
Hotmail
Lycos
MSN
Mac
Netscape
QQ
Rocket
Rogers
SBC
Sina
Spymac
Sympatico
VIPSina
Verizon
Yahoo

- みんなが同じ画像生成サービスを使うと、スパム業者に画像解析されちゃうのでは?

メールアドレスをテキストではなく画像にする理由の一つは、スパム業者やワームにアドレスを収集されないようにするため。でも、みんながみんな同じメールアドレス画像生成サービスを使っていると、画像のパターンからアドレス文字列を解析されてしまうかもしれない。

とくに、画像を自分のサイトにアップロードせずに生成サービスの URL を直接参照して画像を表示させるようにしていると、アドレス収集者に「この画像はメールアドレス画像」というヒントを与えてしまうことになり、より危険性が増すだろう。それを防ぐためには、自分の管理しているドメインや無料ホームページスペースに、メールアドレス画像と類推されないようなファイル名を付けてアップロードするのがよい。前述のメールアドレス画像のサンプルへのリンクなどは危険だ。たとえば、Gmail のメールアドレス画像 URL http://services.nexodyne.com/email/icon/b6N0IZUe0MU%3D/ZRw7P ... なら %3D/R01haWw%3D/0 という文字列が入るようだし。

なんか過敏になってるような気もするが、そのくらい用心しないとスパムは減らない。

2005-11-23 (Wed)

* 無線 LAN ルータ WHR-G54S のファームウェア更新に失敗

この記事の直リンクURL: Permlink | この記事が属するカテゴリ: [PC] [ネットワーク]

無線 LAN ルータを壊してしまった。原因はファームウェアの更新失敗。

BUFFALO WHR-G54S 無線LANBUFFALO WHR-G54S 無線LAN

バッファロー
発売日: 2005/08/31


amazon で詳しく見る

壊したのはバッファローの AirStation WHR-G54S という無線 LAN ルータ。ニンテンドーDS の「おいでよ どうぶつの森」を接続するために、2005-11-18 の「ニンテンドーWi-Fiコネクション用 無線LANルータ/アクセスポイント選び」でいろいろ検討した結果選んだものだ。

- WHR-G54S の最新ファームウェア 1.23 ではいくつかの不具合修正済み

amazon で購入し、今日のお昼頃に我が家に配送されてきた。いろいろ設定などをしていたところ、ファームウェアが最新のものでないことに気づいた。私の WHR-G54S のファームウェアのバージョンは 1.20 で、最新版は 1.23 だ。

ちなみにファームウェアは、 ハードウェアほど固定的でなく、ソフトウェアほど頻繁に変更されないものを指す。ファームのスペルは firm で、固いという意味。組み込み機器に搭載されたソフトウェアをこう呼ぶことが多い。

ファームウェアは組み込み機器自身を制御することが多いため、アップデートに失敗するとその機器が使えなくなったりするというリスクがある。リスクがあるので、私はアップデートの必要がなければ手を出さない派なのだが、1.23 では機能追加だけでなく、いくつかの不具合修正がなされているとのこと。

ドライバ ダウンロード WHR-G54S
http://buffalo.melcoinc.co.jp/download/driver/lan/whr-g54s.h ...
Ver1.21→Ver1.23

【不具合修正】

1. マルチクライアント機能を有効にしたイーサネットコンバータを使用した機器が
  IPアドレスの更新が出来ない不具合を修正しました。
2. 機能設定「インターネット対応ゲームを使う」の設定画面内の補足説明を変更
  しました。
3. IPフィルタ設定で登録最大数まで入力するとページエラーになる不具合を修正
  しました。
4. エアステーション名に不正な入力が出来る不具合を修正しました。
5. Flash-ROMへ設定保存時、異常に時間がかかる場合がある不具合を再度、修正
  しました。
6. システム情報ページの「製品名」項目に詳細な機器情報を表示する様にしました。
7. アドレス変換を使用しない設定で使用した場合に正常に動作しない不具合を修正
  しました。
8. アタックブロック情報を消去しても再表示される不具合を修正しました。
9. DHCPサーバ設定のDNSサーバとWINSサーバ項目に不正な入力ができる不具合を修正
  しました。
10. パケットフィルタの設定変更した場合、わずかな時間だけフィルタが効かなくなる
  不具合を修正しました。
11. ブリッジモード時に機能設定「無線LANの暗号化を設定する」のページで表示されない
  ページがある不具合を修正しました。
12. アドレス変換設定でポート変換テーブルを既存のグループに対して新規追加した場合に、
  既存グループの有効無効状態に合わせて追加するように修正しました。
13. WEB設定画面のヘルプの誤記修正/内容追加をしました。

気になるのは 5番、10番、11番だ。私はブリッジモードで使う予定なのでとくに11番は困る。10番のセキュリティ系の不具合も、ルータモードの時のみに問題になることなのですぐには影響がないかもしれないが、こういうのは早めに手当てしておきたい。

- WHR-G54S のファームウェアをアップデートする

アップデートした方が良さそうなので、バッファローのウェブサイトからファームウェア whrg54s-123.exe をダウンロード。自己解凍ファイルを展開して、ブラウザの AirStation 設定画面からアップデートファイルのパスを指定して POST する。「更新には180秒ほどかかる」という画面が出た。どうやら正常にアップデートファイルを WHR-G54S に転送できたようだ。更新が終わるまでしばらく待つ。

しかし、更新中を示す本体のランプの点滅がいつまで経っても収まらない。1時間くらい待ってもずーっと点滅中。不具合の5番「Flash-ROMへ設定保存時、異常に時間がかかる場合がある不具合」に該当しているのかもしれないが、それにしても時間がかかりすぎる。やばいかも。

メーカーのウェブサイトの FAQ を探してみる。

ファームウェアの更新に失敗した場合の対処方法【AirStation、BroadStation】
http://qa.buffalo.jp/eservice/qid.asp?id=BUF2943
ファームウェア更新失敗後、製品本体前面のDIAGランプが点滅(点灯)している場合、
一度電源の抜き差しを行ない、点滅(点灯)が消えることを確認ください。

うん、やってみよう。・・・。DIAG ランプの点滅は収まったけど、パワーランプしか点灯しなくなった。これってどうなの?

電源の抜き差しを行ってもDIAGランプが点滅(点灯)し続ける場合、もしくは
 Powerランプのみが点灯し、Wirelessが点灯しない場合、誠に申し訳ございませんが、
 製品本体とACアダプタを弊社修理センターまでお送りください。

ダメじゃん。壊れたー。一応本体の初期化スイッチを押してみるが、症状は変わらず。えー、ファームウェアのアップデート失敗って、こんな簡単に発生するものなの? マニュアルの手順を踏んだだけなのに? 今までマザーボードのファームウェア更新とか何度もやってきたけど、失敗したのは初めてだ。マザーボードなどでは、BIOS 用のフラッシュメモリを複数搭載していて、一個がダメになったらスペアから起動できるようになってるものがあるが、家庭用ルータではまだ一般的ではないようだ。

あ、ファームウェアが壊れていても、無線とルータ部分が使えないだけで、スイッチングハブとしては使えるのね。って、それじゃあ買った意味がないよー。購入してから5時間くらいで、無線 LAN ルータが単なるスイッチングハブになっちゃった・・・。

仕方ないのでメーカーのサポート行き。web から修理依頼をかけて修理受付番号を発行してもらい、それを書いた紙を添えてメーカーに送る。早くよくなって帰ってきてね。

- 「おいでよ どうぶつの森」もまだ届かない

おいでよ どうぶつの森おいでよ どうぶつの森

任天堂
発売日: 2005/11/23
Nintendo DS

amazon で詳しく見る

ちなみに今日はニンテンドーDS の「おいでよ どうぶつの森」の発売日。amazon にはすでに発注済みだけど、まだ発送されていない模様。

なんだか不運が続くなあ。もっとも、まだニンテンドーDS 本体を買ってないから、ソフトだけ到着してもプレイできないんだけどね。ルータの修理には6から9営業日かかると書いてあったし、まあ気長に待ちますか。

2005-11-22 (Tue)

* Visual Studio ユーザーグループ フォーラムの OPML

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

先日、Visual Studio のユーザーグループ VSUG が発足した。

Visual Studio User Group > ホーム
http://vsug.jp/

vsug.jp にはユーザーが投稿できるフォーラムと呼ばれる掲示板があり、RSS も提供されている。しかし、それらを一気に RSS リーダーに登録する簡単な方法がない。RSS Auto Discovary もないし、OPML もない。

手軽に登録したいので OPML を作った。以下をファイル名 opml.xml などとして文字コード UTF-8 で保存し、OPML 対応の RSS リーダーに読ませればすべてのフォーラムを一気に購読できる。

<?xml version="1.0"?>
<opml version="1.1">
<head>
  <title>Planet .NET Japan</title>
  <dateCreated>Tue, 22 Nov 2005 15:18:02 +0000</dateCreated>
  <dateModified>Tue, 22 Nov 2005 15:18:02 +0000</dateModified>
  <ownerName>Saito Hiroaki</ownerName>
  <ownerEmail><img src="http://sonic64.com/img/mail.png" /></ownerEmail>
</head>

<body>
  <outline text="VSUG - .NET Framework" title="VSUG - .NET Framework" type="rss" xmlUrl="http://vsug.jp/Rss/GetRss.aspx?forumid=51&amp;nossl=x"/>
  <outline text="VSUG - Office 開発・VSTO" title="VSUG - Office 開発・VSTO" type="rss" xmlUrl="http://vsug.jp/Rss/GetRss.aspx?forumid=54&amp;nossl=x"/>
  <outline text="VSUG - VSUGからのお知らせ" title="VSUG - VSUGからのお知らせ" type="rss" xmlUrl="http://vsug.jp/Rss/GetRss.aspx?forumid=70&amp;nossl=x"/>
  <outline text="VSUG - Visual Basic" title="VSUG - Visual Basic" type="rss" xmlUrl="http://vsug.jp/Rss/GetRss.aspx?forumid=44&amp;nossl=x"/>
  <outline text="VSUG - Visual C#" title="VSUG - Visual C#" type="rss" xmlUrl="http://vsug.jp/Rss/GetRss.aspx?forumid=45&amp;nossl=x"/>
  <outline text="VSUG - Visual C++/CLI その他" title="VSUG - Visual C++/CLI その他" type="rss" xmlUrl="http://vsug.jp/Rss/GetRss.aspx?forumid=46&amp;nossl=x"/>
  <outline text="VSUG - Visual Studio 2005" title="VSUG - Visual Studio 2005" type="rss" xmlUrl="http://vsug.jp/Rss/GetRss.aspx?forumid=42&amp;nossl=x"/>
  <outline text="VSUG - Visual Studio 旧環境" title="VSUG - Visual Studio 旧環境" type="rss" xmlUrl="http://vsug.jp/Rss/GetRss.aspx?forumid=43&amp;nossl=x"/>
  <outline text="VSUG - Web アプリケーション" title="VSUG - Web アプリケーション" type="rss" xmlUrl="http://vsug.jp/Rss/GetRss.aspx?forumid=47&amp;nossl=x"/>
  <outline text="VSUG - Web ホスティングアプリケーション" title="VSUG - Web ホスティングアプリケーション" type="rss" xmlUrl="http://vsug.jp/Rss/GetRss.aspx?forumid=55&amp;nossl=x"/>
  <outline text="VSUG - データベース・データアクセス" title="VSUG - データベース・データアクセス" type="rss" xmlUrl="http://vsug.jp/Rss/GetRss.aspx?forumid=49&amp;nossl=x"/>
  <outline text="VSUG - マイグレーション・COM 相互運用" title="VSUG - マイグレーション・COM 相互運用" type="rss" xmlUrl="http://vsug.jp/Rss/GetRss.aspx?forumid=53&amp;nossl=x"/>
  <outline text="VSUG - モバイル・スマートクライアント" title="VSUG - モバイル・スマートクライアント" type="rss" xmlUrl="http://vsug.jp/Rss/GetRss.aspx?forumid=50&amp;nossl=x"/>
  <outline text="VSUG - ライティング・セキュアコード" title="VSUG - ライティング・セキュアコード" type="rss" xmlUrl="http://vsug.jp/Rss/GetRss.aspx?forumid=56&amp;nossl=x"/>
  <outline text="VSUG - リッチクライアント・UI コントロール" title="VSUG - リッチクライアント・UI コントロール" type="rss" xmlUrl="http://vsug.jp/Rss/GetRss.aspx?forumid=48&amp;nossl=x"/>
  <outline text="VSUG - 談話室" title="VSUG - 談話室" type="rss" xmlUrl="http://vsug.jp/Rss/GetRss.aspx?forumid=58&amp;nossl=x"/>
  <outline text="VSUG - 運用管理" title="VSUG - 運用管理" type="rss" xmlUrl="http://vsug.jp/Rss/GetRss.aspx?forumid=57&amp;nossl=x"/>
  <outline text="VSUG - 開発プロセス" title="VSUG - 開発プロセス" type="rss" xmlUrl="http://vsug.jp/Rss/GetRss.aspx?forumid=52&amp;nossl=x"/>
</body>
</opml>

VSUG に投稿しておいた。

Visual Studio User Group > フォーラム > VSUG フォーラム RSS の OPML を作りました
http://vsug.jp/tabid/63/forumid/58/postid/479/view/topic/Def ...

2005-11-21 (Mon)

* 崩撃雲身双虎掌 (ほうげきうんしんそうこしょう) のアスキーアート

この記事の直リンクURL: Permlink | この記事が属するカテゴリ: [アスキーアート] [2ch] [ゲーム]

崩撃雲身双虎掌 (ほうげきうんしんそうこしょう) は、セガの格闘ゲーム「バーチャファイター」の主人公である結城晶 (ゆうき あきら) の奥義。彼が使っている八極拳に本当にこんなコンボがあるかどうかは知らない。アキラスペシャルとも呼ばれるらしいけど、崩撃と略す方が私の周りでは一般的だった。

「ふっ ふっ はぁっ」のかけ声とともに3段攻撃を放つ。作品によっては技の一部が投げ技になったり打撃技になったり、投げ抜けできたりできなかったりする。でも、そんな細かいこと覚えてても、ゲーム中に投げ抜けコマンドなんか入力する余裕を私は持ち合わせていないので無意味。というかそもそも私はアキラ使いじゃないし、こんな難しいコマンド技出せない。バーチャジャンキーでアキラ使いの弟は出しまくってた。

1段目は崩拳 (ぼんけん)。
両手を大きく広げるタイプの中段攻撃。
強い踏み込みを伴う 震脚 (しんきゃく) を伴うため、画面が揺れたりしたような気もするが、もうあんまり覚えてない。

2段目は鷂子穿林 (ようしせんりん)。
相手の背後に回り込み、自分の背中で体当たりする。鉄山靠 (てつざんこう) との違いを弟が解説してくれたけど全部忘れた。

3段目は双掌 (そうしょう)。
相手を吹っ飛ばす。ガイーンはクリティカルヒットかな? 毎回この音鳴ってたっけ?

有料でもいいから、誰かなんとかして
http://salad.2ch.net/hard/kako/987/987858002.html
7 :不明なデバイスさん [sage ] :2001/04/21(土) 22:17
     フ ッ
    Λ_Λ     ∧_∧
  ミ ( ´∀`)    (´Д` )
 ⊂ニ    ニつ☆(    ⊃
ミ  | Π |    | | | ))
   (__)(_)   (_(__)
             フ ッ
   ∧_∧ ミ  Λ_Λ
   (´Д` )  ∩(  ´∀)  ノ
  ⊂  ⊂ )☆\_    ニつ ノ
   く く く  ミ |〇\\   ノ
   (_(_)   (__) [_)
  ガ イ ー ン
   ∧_∧    Λ_Λ
   (´Д` )☆  (´∀` )  ハ ッ !
   し  し) ∩ニ ∩ニ ) ≡
    \\\   〈 (~\\ ≡
      し し/  (_) (_|

アスキーアートは古いログを整理していたら見つけた。

よりオリジナルに近い見た目でアスキーアートを鑑賞するには、以下をクリックしてください。フォントの種類や行間の指定などを解除できます。
スタイルシート解除の Bookmarklet (クリックして実行)

2005-11-20 (Sun)

* ?B は「はてなブックマーク」を意味する

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

?B ってソーシャルブックマークサービスの「はてなブックマーク」の略記だったのね。今まで Unicode 文字が文字化けしてるのかと思ってたよ。

2005-11-19 (Sat)

* Google Analytics サポートからタグ位置について返答

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

Google Analytics のサポートへ送信した質問に回答があった。意外と早かったね。

ちなみに 2005-11-17 に書いた「Google Analytics のタグを head に入れる理由は?」で送信した質問は以下の通り。
トラッキングコードのインストール位置についての質問です。
質問は二つありあます。

1.
トラッキングコードが JavaScript なのであれば、head 要素以外の場所に
インストールしても動作するのではないでしょうか?

2.
もし head 要素以外の場所にインストールした場合、何か問題はありますか?
たとえば、トラッキングが正常におこなわれない、トラッキングの精度が落ちる、
Google がトラッキングコードを認識しにくくなる、といった不都合はありますか?

以上、よろしくお願いいたします。

Google Analytics サポートからの回答を以下に転載。私の本名の部分は伏せたが、それ以外は原文のまま。

******** *** 様

平素より Google Analytics をご利用いただき、誠にありがとうございます。

このトラッキングシステムは <HEAD></HEAD>タグの間に挿入していただかなければ正常に作動いたしません。
何卒ご理解賜りますようお願い申し上げます。

Google Analytics サポート

ほとんど質問の答えになってない。要するに企業秘密があるので答えられないか、答えたくないか、ヘルプデスク担当者向けマニュアルがないかのいずれかなんだろう。

- 「正常に動作しない」というのはどういうこと? 本当に動かない?

正常に動作しないというのはどういうことだろう? 精度が悪くなる? トラッキングが全くなされない? 「サイトの確認」ができない? 何だろう? ただ、2005-11-17 で書いたように、トラッキングコードを head 要素に入れずに html の一番下の方に配置するように変更したが、問題なくレポートが継続して表示されている。dkiroku さんも私と同様にレポートが表示されているそうだ。

Google Analytics のタグを head に入れる理由は?
http://dkiroku.com/2005-11-18-15.html
で、疑問に思っているのは、なんでトラッキング用のコードのインストール位
置が head 限定なのかということ。

知らなかった。
でもheadに入れてなくてもレポートは出ていますよ。

私と dkiroku さんの2例しかないが、とりあえず解析は可能なようだ。

ただ一つ気になる点がある。私は最初は head 要素にインストールして「サイトの確認」を済ませ、その後疑問に思ってトラッキングコードを html の下の方に移動させた。そうせずに、全く最初から head 要素以外の場所にインストールした場合はどうなるだろう? とりあえず http://sonic64.com/ を解析対象に追加して実験してみることにした。これでいつまで経ってもサイトの確認がなされない場合は、サイトの確認の問題が原因の一つだと推測できる。

追記。
最初から head 要素以外の場所にインストールした http://sonic64.com/ も、レポートが表示されるようになった。とりあえず問題なさそう。

- インストール位置による HTTP トランザクションの中身の変化はない

ふと思ったので、ブラウザが www.google-analytics.com に送信している内容とその応答、いわゆる HTTP トランザクションの中身を比較してみることにした。たぶん違いはないと思うけど。でも、これ載せちゃっていいのかな? 私の環境固有の情報とかかなり入ってるんだけど・・・まあいいか。

まず、当サイト Landscape 流に html の末尾付近に配置した場合。

GET /__utm.gif?utmwv=1&utmn=1809224424&utmsr=1600x1200&utmsc=32-bit&utmul=ja-jp&utmje=0&utmfl=6.0%20%20r29&utmdt=Google%20Analytics%20%u306E%u30BF%u30B0%u3092%20head%20%u306B%u5165%u308C%u308B%u7406%u7531%u306F%3F&utmhn=sonic64.com&utmr=0&utmp=/2005-11-17.html&utmac=UA-54034-1&utmcc=__utma%3D160379711.1091067899.1131959904.1132385137.1132444634.6%3B+__utmb%3D160379711%3B+__utmc%3D160379711%3B+__utmz%3D160379711.1131959904.1.1.utmccn%3D%28direct%29%7Cutmcsr%3D%28direct%29%7Cutmcmd%3D%28none%29%3B HTTP/1.1
Host: www.google-analytics.com
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; ja-JP; rv:1.7.12) Gecko/20050919 Firefox/1.0.7
Accept: image/png,*/*;q=0.5
Accept-Language: ja,en-us;q=0.7,en;q=0.3
Accept-Encoding: gzip,deflate
Accept-Charset: Shift_JIS,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive
Referer: http://sonic64.com/2005-11-17.html
Pragma: no-cache
Cache-Control: no-cache

HTTP/1.x 200 OK
Content-Type: image/gif
Last-Modified: Sat, 19 Nov 2005 14:09:27 GMT
Server: ucfe
Content-Length: 35
Date: Sat, 19 Nov 2005 23:57:30 GMT

Google Analytics の指示通り head 要素内に配置した場合。

GET /__utm.gif?utmwv=1&utmn=1910400003&utmsr=1600x1200&utmsc=32-bit&utmul=ja-jp&utmje=0&utmfl=6.0%20%20r29&utmdt=Google%20Analytics%20%u306E%u30BF%u30B0%u3092%20head%20%u306B%u5165%u308C%u308B%u7406%u7531%u306F%3F&utmhn=sonic64.com&utmr=0&utmp=/2005-11-17.html&utmac=UA-54034-1&utmcc=__utma%3D160379711.1091067899.1131959904.1132385137.1132444634.6%3B+__utmb%3D160379711%3B+__utmc%3D160379711%3B+__utmz%3D160379711.1131959904.1.1.utmccn%3D%28direct%29%7Cutmcsr%3D%28direct%29%7Cutmcmd%3D%28none%29%3B HTTP/1.1
Host: www.google-analytics.com
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; ja-JP; rv:1.7.12) Gecko/20050919 Firefox/1.0.7
Accept: image/png,*/*;q=0.5
Accept-Language: ja,en-us;q=0.7,en;q=0.3
Accept-Encoding: gzip,deflate
Accept-Charset: Shift_JIS,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive
Referer: http://sonic64.com/2005-11-17.html
Pragma: no-cache
Cache-Control: no-cache

HTTP/1.x 200 OK
Content-Type: image/gif
Last-Modified: Sat, 19 Nov 2005 14:09:19 GMT
Server: ucfe
Content-Length: 35
Date: Sun, 20 Nov 2005 00:05:49 GMT

相違点は utmn=1809224424 が utmn=1910400003 になっているところだけ。名前から推察するに、これはタイムスタンプだろう。それ以外はまったく同じだった。

あともう一つ気になったことが、Cookie を使ってないというところ。同じユーザーかどうかを調べるには、Cookie を使うのが手っ取り早い。そうしない理由は何だろう? 他のパラメータ中に GUID みたいなものがあるんだろうか?

- トラッキングコードのインストール位置、どうする?

トラブルを避けたい人は Google Analytics の指示通り設置するのが良い。HTTP トランザクションレベルでは相違点が見つからなかったが、私が何か見落としている可能性もあるし、また今後何か変更が加えられるかもしれないからだ。

トラッキングコードを head 要素に入れるという条件を満たせないためにGoogle Analytics の利用を見合わせている人は、とりあえず試してみる価値はある。解析結果に100% の精度は得られないかもしれないが、参考にはなる。全く利用できないかもしれないが、とりあえず無料なんだし、試すだけなら簡単。アクセス解析で大変なのは、集計よりは結果の分析の方だし。

私はとりあえず傾向がわかればいいというレベルなので、このまま head にはトラッキングコードをインストールせずに、html の末尾に配置しておくことにする。

2005年12月25日追記。
タグ位置が body 要素の末尾に変更になった。2005-12-25 の「Google Analytics のタグ位置が body の末尾に変更」を参照。

2005-11-18 (Fri)

* ニンテンドーWi-Fiコネクション用 無線LANルータ/アクセスポイント選び

この記事の直リンクURL: Permlink | この記事が属するカテゴリ: [ゲーム] [ネットワーク] [PC]

任天堂公式サイトで、ニンテンドーWi-Fiコネクション対応の無線 LAN ルータやアクセスポイントの製品一覧が発表された。

Wi-Fiコネクションサービスにつながる動作確認済み「無線LANアクセスポイント」機種一覧
http://wifi.nintendo.co.jp/information/router/

2005-11-15 の「ニンテンドー DS の Wi-Fi コネクションの接続テスト」では「ニンテンドーWi-Fi USBコネクタ」を検討したが、他に接続したい PC もあるし、そろそろ我が家のネットワークにも無線 LAN を導入しても良い頃。では、私はどの機種を買ったらいいんだろう?

- 我が家のネットワーク構成

確実に無線で接続する機器は、ノート PC 2台とニンテンドーDS。デスクトップ PC は有線 LAN で接続予定。
この他に、PSP (プレイステーションポータブル)、プレイステーション3、任天堂の次世代機「レボリューション」もいずれ購入するので無線で繋ぎたい。購入予定は全くの未定だが。XBOX360は今のところ購入予定無しなので気にしない。

ルータは持っていないが、プロバイダ貸し出しのモデム付きルータはある。貸し出し品なのでプロバイダを乗り換えると返却しなければならない。スイッチングハブは4ポートのものが1台、8ポートのものが1台ある。

- 無線LAN 機器の種類

無線 LAN 機器の種類をメモ。

無線 LAN アクセスポイント
無線 LAN 対応機器の基地局となり、各機器の中継をするもの。「無線 LAN ブリッジ」や「無線 LAN ルータ」などのこと。

無線 LAN ブリッジ
無線 LAN 機器をレイヤ2で接続するだけの無線 LAN アクセスポイント。スイッチングハブのようなもの。

無線 LAN ルータ
レイヤ3のルーティング機能を持った無線 LAN アクセスポイント。ルータモードとブリッジモードを切り替えられる機種もある。

- ニンテンドーWi-Fiコネクション用 無線LANルータ/アクセスポイント選び

私はルータを持っていないので、家庭用のものなら一台くらい手元にあってもいい。というわけで、無線 LAN ブリッジではなく、無線 LAN ルータを買おう。

予算は2万円で。安い機種でもいい。
メーカーにもこだわりがないが、ニンテンドー DS は BUFFALO 無線 LAN 自動設定ツール「AOSS」と NEC の 無線 LAN 自動設定ツール 「らくらく無線スタート」に対応しているので、これら2社のものがいい。私はエンジニアなので、自動設定はたぶん使わないと思うけど。

IEEE802.11a は不要。あってもいいけど、無くても構わない。IEEE802.11g があればいい。

BUFFALO WHR-G54S 無線LANBUFFALO WHR-G54S 無線LAN

バッファロー
発売日: 2005/08/31


amazon で詳しく見る

で、選んだ機種が BUFFALO の WHR-G54S。1万円でおつりが来る。無線 LAN ルータとブリッジを切り替えられる。IEEE802.11g にも対応。4ポートのスイッチングハブ付き。私にはこれで十分だな。

BUFFALO WHR-HP-G54 無線LANBUFFALO WHR-HP-G54 無線LAN

バッファロー
発売日: 2005/08/31


amazon で詳しく見る

WHR-HP-G54 は交信性能を強化したハイパワー版。こっちも検討したけど、私の家ならたぶん WHR-G54S で十分だと思う。


NEC の AtermWR7850S と AtermWR6650S の2機種は IEEE802.11a にも対応。でも、IEEE802.11a は必須じゃないし、BUFFALO の方が手頃な値段なので見送り。



- 動作確認済みルータ・無線アクセスポイント

任天堂のオフィシャルサイトから、動作検証の結果に ○ が付いていた機種を抜粋。なので、NEC のモデルは掲載していない。すべて2005年11月18日現在。たぶん今後検証機種は増えていくだろうし、ユーザーからの報告もあるだろう。

Wi-Fiコネクションサービスにつながる動作確認済み「無線LANアクセスポイント」機種一覧
http://wifi.nintendo.co.jp/information/router/

amazon で買うのも楽でいいけど、これを印刷して近くの電器店に行って品定めして買うのが良いと思う。そのために価格と納期がわかるような形で表示した。

- BUFFALO の Wi-Fiコネクション動作確認済み無線LANアクセスポイント

バッファローは任天堂と提携しているだけあって、最多の動作確認済み機種数を誇る。ただ、どう見ても業務用としか思えないモデルも入ってるね。値段も3倍くらいするものとか。

BUFFALO WHR-G54S 無線LANBUFFALO WHR-G54S 無線LAN

バッファロー
発売日: 2005/08/31


amazon で詳しく見る

BUFFALO WHR-HP-G54 無線LANBUFFALO WHR-HP-G54 無線LAN

バッファロー
発売日: 2005/08/31


amazon で詳しく見る














BUFFALO WLAH-G54BUFFALO WLAH-G54

バッファロー
発売日: 2004/03/31


amazon で詳しく見る

FS-G54FS-G54

バッファロー
発売日: 2004/08/31


amazon で詳しく見る



BUFFALO WHR2-G54BUFFALO WHR2-G54

バッファロー
発売日: 2003/09/30


amazon で詳しく見る

WHR3-AG54WHR3-AG54

バッファロー
発売日: 2004/05/31


amazon で詳しく見る

WZR-G54WZR-G54

バッファロー
発売日: 2004/07/31


amazon で詳しく見る

BUFFALO WHR2-A54G54BUFFALO WHR2-A54G54

バッファロー
発売日: 2003/11/30


amazon で詳しく見る


- コレガの Wi-Fiコネクション動作確認済み無線LANアクセスポイント

「無線LANアクセスポイントの送信レートを2Mbpsに設定する。」「無線LANアクセスポイントのXR機能をオフに設定する」必要があるものは除外したので、4機種のみ。


{CG-WLBARAGL 切換利用対応無線LANルータ: エレクトロニクス}:amazon:B0009QZWPI

{corega CG-WLBARAG: エレクトロニクス}:amazon:B0001VCT2K

{corega WLBAR-54GT White 802.11g/54Mbps 無線ルーター: エレクトロニクス}:amazon:B00009RGHG


- ELECOM の Wi-Fiコネクション動作確認済み無線LANアクセスポイント



- ICOM の Wi-Fiコネクション動作確認済み無線LANアクセスポイント

{SR-5000VOIP VOIP対応ワイヤレスブロードバンドルータ: エレクトロニクス}:amazon:B0001931H4


- I-O DATA の Wi-Fiコネクション動作確認済み無線LANアクセスポイント


I-O DATA WN-APG/BBRI-O DATA WN-APG/BBR

アイ・オー・データ
発売日: 2003/12/10


amazon で詳しく見る





- LINKSYS の Wi-Fiコネクション動作確認済み無線LANアクセスポイント

WRT54GS-JPWRT54GS-JP

シスコ・リンクシス
発売日: 2004/08/07


amazon で詳しく見る

WRT54G-JP V2 54M 無線LAN ルータWRT54G-JP V2 54M 無線LAN ルータ

シスコ・リンクシス
発売日: 2004/06/12


amazon で詳しく見る

WAP54G-JP V2 無線LAN アクセスポイントWAP54G-JP V2 無線LAN アクセスポイント

シスコ・リンクシス
発売日: 2004/05/14


amazon で詳しく見る


- NETGEAR の Wi-Fiコネクション動作確認済み無線LANアクセスポイント




- PLANEX の Wi-Fiコネクション動作確認済み無線LANアクセスポイント


{PLANEX BRC-W14V eXgateシリーズ マルチユースワイヤレスVPNルータ: エレクトロニクス}:amazon:B000127XTS




{PLANEX BRC-AP04 eXgateシリーズ マルチユースアクセスポイント: エレクトロニクス}:amazon:B000127XT8



- Apple の Wi-Fiコネクション動作確認済み無線LANアクセスポイント




- マリオカート DS 動画

マリオカート DS の動画。やばいよ、これ。ちゃんと秒間60フレームで動いてる! Wi-Fi 通信対戦だとここまでのフレームレートは出ないかもしれないけど、普通の通信対戦ならこれくらい行けるのか。

http://media.ds.ign.com/media/682/682877/vids_1.html

2005-11-17 (Thu)

* Google Analytics のタグを head に入れる理由は?

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

私は Google が好きなので、御多分に漏れず Google Analytics を導入している。

Google Analytics
http://www.google.com/analytics/ja-JP/

で、疑問に思っているのは、なんでトラッキング用のコードのインストール位置が head 限定なのかということ。導入の説明やヘルプセンターのサポート文書にもすべて、head 要素内の meta 要素の後 に入れるようにと書いてある。

こういうオプション的なものって、私はページの一番下に配置したい。読み込みとかレンダリングのスピードに影響を与えるだろうし、検索エンジンは先頭 n バイトしかキャッシュしないことが多いから。サイドバーを html 的にメインコンテンツの後に置いているのも同じ理由。はてなの Hatena ID Auto-Discovery も html の最後の方に配置してる。

Google Analytics のヘルプを読んでみる。

ウェブ サイトにトラッキング コードを追加するにはどうすればよいですか。
http://www.google.com/support/analytics/bin/answer.py?answer ...
すべてのウェブ ページの <head> タグと </head> タグの間で、<meta> タグの後に次のコードを挿入します。 インクルードまたはテンプレートを共有している場合は、これらのファイルのいずれかに挿入します。

<script src="http://www.google-analytics.com/urchin.js" type="text/javascript">
</script>
<script type="text/javascript">
  _uacct="UA-xxxx-x";
  urchinTracker();
</script>

やっぱりとくに理由は書いてない。なんでだろう? urtin.js を2分くらい読んだけど、理由になるようなものは見つけられなかった。あ、もしかしてサイト滞在時間とかを厳密に計測するため? それとも Google がトラッキングコードの存在を認識する精度を上げるため?

トラッキングコードの存在を認識する精度を上げるためだったら、認識した後は位置を変えても問題ないんじゃないのかな? 頻繁に再認識してるならダメだけど。

とりあえず試してみるか。「データの待機中: sonic64.com Analytics を正常にインストールし、データの収集を開始しました。 最初のレポートは 12 時間以内に表示できます。」という表示も出たし、レポートも正常に表示されるようになった。この状態で、トラッキングコードを body のかなり下の方に貼り直してみた。さあ、どうなるかな。

考えても埒があかないし、実験だけだと不足なので Google Analytics サポートにも質問を送信した。

トラッキングコードのインストール位置についての質問です。
質問は二つありあます。

1.
トラッキングコードが JavaScript なのであれば、head 要素以外の場所に
インストールしても動作するのではないでしょうか?

2.
もし head 要素以外の場所にインストールした場合、何か問題はありますか?
たとえば、トラッキングが正常におこなわれない、トラッキングの精度が落ちる、
Google がトラッキングコードを認識しにくくなる、といった不都合はありますか?

以上、よろしくお願いいたします。

回答待ち。

追記。
Google Analytics サポートから返答が来た。詳しくは 2005-11-19 の「Google Analytics サポートからタグ位置について返答」を参照。

2005年12月25日追記。
タグ位置が body 要素の末尾に変更になった。2005-12-25 の「Google Analytics のタグ位置が body の末尾に変更」を参照。

2005-11-16 (Wed)

* フレーム内にある .jpg のリンクを開く JavaScript ブックマークレット CGI 除外版

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

2005-11-12 の「フレーム内にある .jpg のリンクを開く JavaScript ブックマークレット」を修正。リンク先が CGI だったら開かないようにした。URL に ? が入っていたら CGI とみなして開かない。

変更した理由は、CGI を連続的に開くとサーバに負荷がかかるから。あと、jpg じゃないのに CGI のクエリ文字列が .jpg で終わってるため jpg と誤判定して開くのを防ぐという目的もある。

javascript:(function() {var max=30; for (var f = 0; f < frames.length; f++) {var z=frames[f].document.links; for(var i = 0; i < z.length && 0 < max; ++i) { if (z[i].href.match(/\.jpg$/i) && z[i].href.indexOf('?') == -1) { void(window.open(z[i].href)); max--;}}}}) ();

フレーム内にある .jpg で終わる URL へのリンクをすべて開く (CGI 除外版)

2005-11-15 (Tue)

* ニンテンドー DS の Wi-Fi コネクションの接続テスト

この記事の直リンクURL: Permlink | この記事が属するカテゴリ: [ゲーム] [おいでよ どうぶつの森] [PC]

おいでよ どうぶつの森おいでよ どうぶつの森

任天堂
発売日: 2005/11/23
Nintendo DS

amazon で詳しく見る

2005-10-29 に書いた、ニンテンドー DS の「おいでよ どうぶつの森」の発売日が近い。このゲームは無線 LAN の Wi-Fi に対応しているので、そろそろネットワーク環境をどうするか考える。

ニンテンドー DS は標準で IEEE802.11b と 独自規格の無線 LAN に対応している。実際にプレイヤーが集まれるなら独自規格の LAN の方だけで十分。しかし、インターネットを経由した通信や対戦の場合、一般の無線LAN機器はニンテンドー DS の独自規格には対応してないので、どうにかして IEEE802.11b で接続する必要がある。

ニンテンドーWi-Fiコネクション http://wifi.nintendo.co.jp/ のオフィシャルサイトによると、選択肢は3つ。

1.全国に設置される無線欄スポット「ニンテンドーWi-Fi ステーション」に DS を持って行ってプレイ。
2.無線 LAN アクセスポイントや無線 LAN ルータを買って、自室でプレイ
3.「ニンテンドー Wi-Fi USB コネクタ」買って、PC を無線アクセスポイント化する。

1. は恒常的にやるのは無理。自室でリラックスしてプレイしたい。
2. は検討に値する。プレイステーション3も任天堂の次世代機レボリューションも無線 LAN 対応だっていうし、無線 LAN ルータ買ってもいい。
3. もいい。何より簡単そう。

- ニンテンドーWi-Fi USBコネクタと接続テスト


ニンテンドーWi-Fi USBコネクタはなかなかいいな。エンジニアの遊びとしては、こんなものに頼ってないで自分で無線 LAN ルータを設定すべきかもしれないけど。

オフィシャルサイトにニンテンドーWi-Fi USBコネクタを使って接続できるかどうかを確認できるページがあるので、やってみる。ActiveX をオンにして、いざテスト。

http://wifi.nintendo.co.jp/information/check/
接続不可

現在のお客様のネットワーク環境では
ニンテンドーWi-Fiコネクションは
ご利用になれません。

ええええー、そんなー! なんで? うちがプライベート IP アドレス環境だから? プロバイダ変更しなきゃならないかなあ・・・。

結構落胆した。で、何の気無しにブラウザでページをリロードしたわけですよ。そしたら、

接続可能

お使いのネットワーク接続でご使用になれます。

とか言われた。なんか信用できないぞ・・・。まあいいや。

こういうテストって判定の意味がいくつかある。そのテストが「絶対に大丈夫」であることを判定するのか、それとも「全然ダメ」であることを判定するのか、テストによって意味が異なる。

今回は「全然ダメではない」ということなんだろう。何しろ私の環境は2重に NAT された プライベート IP アドレス環境だし、それでも大丈夫な可能性があるとわかっただけでも十分。

ところで、取扱説明書 pdf http://wifi.nintendo.co.jp/usb-connector/usb_manual.pdf の19ページ目「その他: USB ハブや USB1.0/2.0 インターフェイスカード/ボードでは動作しません。」が気になる。私はこれを使うとしたら PC 本体に接続するから問題ないけど、ハブとかじゃダメなんだ。なんでだろう? 供給される電力が足りないとか? そんなことないか。

マリオカートDSマリオカートDS

任天堂
発売日: 2005/12/08
Nintendo DS

amazon で詳しく見る

インターネット経由で対戦可能なマリオカートも出るし、この冬は他に魅力的なタイトルが出なければ、DS にしよう。

2005-11-14 (Mon)

* ブログや掲示板に書込む時のメールアドレス欄に何を入力するか

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

最近、ブログや掲示板にコメントを投稿するとき、メールアドレス欄には http://sonic64.com/img/mail.png と書くようにしている。

- スパムはイヤ

ブログや掲示板のメールアドレス欄。そのまま自分のメールアドレスを書くと、スパム業者のロボットにアドレスを収集されてスパムメールがわんさか来るようになるので、そのままでは書きたくない。コメントやお礼は書きたい。でもスパムに悩まされたくはない。スパムフィルタを使うのもいいけど、そもそもスパムが来ない方が良い。

2ちゃんねるだったら、メール欄は sage って書いたり空欄なのが普通なのでそれでいい。あれはメールアドレスを書く欄として使ってる人はまずいない。

一般の掲示板や blog だと、コメント時のメールアドレスは入力必須にしてるところもある。そういうときは example@example.com って書いてた。でも、それもなんだか相手に失礼。捨てアドレスでもいいが、そうすると返信されてもまったく気づかない。

なので、最近は http://sonic64.com/img/mail.png って書くようにしている。要するに、メールアドレスを書いた画像ファイル の URL。これならスパムに使われる可能性は文字に比べて激減するし、人間には読める。blog や掲示板管理者はダミーでない連絡先を知ることができ、私はあまり後ろめたい気持ちを持たずにメールアドレス欄に入力できる。

あ、でも気合いの入ったスパム業者だと、有名なメールアドレス画像生成サービスの生成した画像くらいは解析できるようにしてそうだ。しかも、メールアドレス欄に書いちゃうとメールアドレス画像ってことを明示してるようなものなので、より解析される危険性が高まりそうだ。まあ、そうしたらスパムフィルタ使えばいいか。とにかく、機械解析のハードルを高くすることが重要だからね。

- 当サイト Landscape もコメント欄付けよう

やっぱりコメント欄あった方がすぐにツッコミや指摘ができて便利だ。そのうち付けよう。

2005-11-13 (Sun)

* 「プロフェッショナルの条件」のドラッカーが死去

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

経営学者のドラッカー氏が老衰のため死去。95歳。

プロフェッショナルの条件―いかに成果をあげ、成長するかプロフェッショナルの条件―いかに成果をあげ、成長するか

P・F. ドラッカー / Peter F. Drucker / 上田 惇生
発売日: 2000/07


amazon で詳しく見る

私が読んだことがあるドラッカー本は、「プロフェッショナルの条件」だけ。ちなみにこの本、その昔に仕事場で全員に配られ、一部の人には読了所感の提出も指示された。確かにいい本だった。仕事に対するやる気を引き出すことができる。

最近こういう本あまり読んでない。自己啓発本ってビタミンみたいなもので、定期的に摂取してないとモチベーションなどを維持しにくくなる。書いてあることは正論で当たり前のことが多く、かつ重複が多いために読まなくてもいいような気がするが、ある程度定期的に読む方がいい。

そういえば、仕事場の上司は「プロフェッショナルの条件」が配られたとき、「内容は読まなくてもわかるよ。ドラッカーだから。」って言ってた。それでもちゃんと読んでいたのは、ビタミンの補給みたいなものだったんだろうな。

2005-11-12 (Sat)

* フレーム内にある .jpg のリンクを開く JavaScript ブックマークレット

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

フレーム内にある .jpg で終わる URL へのリンクをすべて開くブックマークレットを作った。

javascript:(function() {var max=30; for (var f = 0; f < frames.length; f++) {var z=frames[f].document.links; for(var i = 0; i < z.length && 0 < max; ++i) { if (z[i].href.match(/\.jpg$/i)) { void(window.open(z[i].href)); max--;}}}}) ();

フレーム内にある .jpg で終わる URL へのリンクをすべて開く

フレームのページ専用。ちょっと書き換えればフレームを使ってないページでも動くようにできるけど、当面の問題を片づけるにはフレーム専用で十分なのでこれでいいや。

こんなときに使う。
・フレームで区切られたページで、
・JPEG 画像へのリンクがたくさん設定されていて、
・でも HTML へのリンクも入り交じっていて、
・JPEG 画像へのリンクだけを一気に開きたいとき。

タブブラウザ推奨。タブブラウザじゃないと、たくさんウィンドウが開かれてしまうので使いにくいだろうね。あと、このブックマークレットのいいところは、リンクを開いたときにリファラが設定されない点にある。

IE6 というか Sleipnir 1.66 で動作することを確認している。ピュアな IE や Firefox でも動くと思う。ただ、ブラウザのポップアップブロックをオフにしていないとブロックされちゃうかも。

一応、開くリンクの最大数を30に制限している。そうじゃないと、ブラクラ (ブラウザクラッシャー) のようにものすごい勢いでウィンドウを開いちゃって、OS や相手先サーバに負荷をかけるかもしれないし。本当は Sleep を入れてゆっくり開いていくようにしたかったんだけど、JavaScript には Sleep がないみたい。残念。

と、ここまで書いて思った。なんか似たようなのを過去に作ったことがある気がする。探してみよう。・・・あった。2004-01-29 の「Google の検索結果一覧画面からキャッシュのリンクだけを開く Bookmarklet」だ。使ってないので忘れてた。

2005-11-11 (Fri)

* Visual Studio 2005 Express Edition の制限

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

Visual Studio 2005 Express Edition には制限がある。事実上の無償提供版なので仕方ないけど。

Product Feature Comparisons
http://msdn.microsoft.com/vstudio/products/compare/default.a ...
Extensibility Add external tools to the menu only. Use 3rd party controls.

じゃあ、プラグインを入れたりして、ソリューションエクスプローラからソース管理ツールの Subversion と連携させることはできないってこと? えー。素人は TortoiseSVN でも使ってろって? それでもいい気はするけど、ソリューションエクスプローラとソースコード管理の連携は超便利だからなあ。残念。

prog-blog から。
http://s03.2log.net/home/nsharp/archives/blog385.html
Express Editionには重要な制限事項があります。っていうか、ここにはっきりと書いてあります。

 Extensibility Add external tools to the menu only. Use 3rd party controls.

- Visual Studio 2005 Express Edition 機能比較

Visual Studio 2005 Express Edition には、ほかにもいくつか制限がある。説明が短すぎるので詳細がよくわからないんだけど、気になったものをいくつかメモ。

Data access VB, VC#, VC++, VJ#:local, Visual Web Developer: local and remote

製品によって、使用できるデータベース接続が異なる? 接続文字列変えてもダメなの? そういうレベルじゃない?

Class Designer / Object Test Bench  No

新機能のクラスデザイナも使えないと。これ使いたかったのになあ。

Source Code Control  No

個人的に一番残念なのはこの Source Code Control No だ。他の製品は MSSCCI-compatible (Visual SourceSafe sold separately) なんだけど、Express Edition が No ってことは、ソリューションエクスプローラからソースコード管理できないってこと。前述の Subversion プラグインはおろか、Visual Soource Safe さえ使えないってことだ。

XML Support  XML only

XSLT の開発支援機能も無しと。もっとも、支援機能があったとしても XSLT はあまり近寄りたくはないなあ。

- でも Visual Studio 2005 を使っちゃいそう

GPL の .NET 統合開発環境 SharpDevelop とどっちがいいかな。やっぱりいろいろ制限があっても、仕事でも使ってて慣れてる Visual Studio を選んじゃうんだろうなあ。

2005-11-10 (Thu)

* xyzzy/Emacs のバッファとウィンドウの違い

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

2005-11-01 の 「xyzzy でバッファを閉じるには CTRL + x k」について反応があった。反応を読んだ結果、私は xyzzy/Emacs のバッファとウィンドウの違いを理解してないことを痛感したので、違いを調べた。

- バッファとウィンドウを混同している私

[MM]51さんのメモ - MM/Memo
http://1470.net/mm/mylist.html/51?date=2005-11-02#m100069
kill-buffer(C-x k)とdelete-window(C-x 0)を混同されているように思われる。

どれを使ったらいいのかよくわからなかった。閉じられればどれでもよかった。今は反省している。という状態でした。あのメモは以下のような思考過程の結果です。

1. 複数ファイルを編集してて、今のファイルの編集が終わったので閉じたい。
2. xyzzy の上部メニューの「ウィンドウ (W)」 に、「現在のウィンドウを閉じる CTRL + x 0」とあったのでやってみた。
3. でも、「カレントウインドウは削除できません」と警告が出て閉じることができない。
4. なんでだろう?
5. CTRL + x k をやってみたら閉じることができた。
6. なんだ、CTRL + x k でいいのね。ChangeLog メモに書いておこう。

要するに、私は xyzzy や Emacs のバッファとウインドウの違いがわかってないということですね。調べよう。

- xyzzy/Emacs のバッファとウインドウの違い

検索したら GNU Emacs の マニュアルがヒット。xyzzy は Emacs 系のエディタだから、Emacs の資料でも役に立つはず。

GNU Emacs Manual - Visiting - ファイルの読み込み
http://flex.ee.uec.ac.jp/texi/emacs-jp/emacs-jp_68.html#SEC8 ...
ファイルの読み込みとは,編集のためにEmacsにファイルの内容を写すことです.Emacsは読み込むファイルそれぞれに対して,新たにバッファを作成します.これからファイルを読み込んだというときには,バッファをつくって,そこに読み込んだという意味です.

あー、なるほど。Emacs におけるバッファとは、ファイルを編集するためにメモリに読み込んだものを指すのか。だからバッファなんだ。じゃあ、ウィンドウはそのバッファの中身を表示してる枠みたいなもの? データベースにおけるビューみたいなイメージかな?

GNU Emacs Manual - Basic Window - Emacsのウィンドウの概念
http://flex.ee.uec.ac.jp/texi/emacs-jp/emacs-jp_94.html#SEC1 ...
複数のウィンドウが表示されているとき,各ウィンドウはそこに表示されているEmacsバッファと結び付いています.1つのバッファが複数のウィンドウで表示されることもあります.そうなっているとき,テキストを変更すると,変更した所を表示していたすべてのウィンドウに変更が現れます.しかし,同一のバッファを表示しているウィンドウは,そのバッファの別の部分を表示することもできます.それは,各ウィンドウは独自のポイントの位置を持っているからです.

常に1つのウィンドウが選択されたウィンドウとなり,そこに表示されているバッファがカレントバッファとなります.

うん、なるほど。わかった。「カレントウインドウは削除できません」って言われる理由も理解できた。カレントウインドウを削除しちゃうとバッファを表示するものがなくなっちゃうので、削除できないって言われるんだ。

- CTRL + F4 でバッファを閉じる

WOMO :: ?xyzzy でバッファを閉じる :: 2005/11/02
http://womo.nconc.net/2005/11/02/close-buffer
Landscape で xyzzy でバッファを閉じるには CTRL + x k という記事がありましたが、私は Ctrl + F4 でバッファが閉じられるようにしてあります。
以下の記述を .xyzzy に書くだけです。

(global-set-key #\C-F4 'close-selected-buffer)

これ、いいですね。私も使ってみます。ありがとうございました。

こういうカスタマイズが簡単にできるってことを忘れてた。xyzzy を ChangeLog メモを書いたり、秀丸レベルのエディタとしてしか使ってないからなあ。もっと活用しよう。エディタはエンジニアの武器だからね。

2005-11-08 (Tue)

* 7zip をコマンドラインから使って圧縮

この記事の直リンクURL: Permlink | この記事が属するカテゴリ: [ソフトウェア]

7zip はファイル圧縮ツール。7z, zip, cab, rar, arj, lzh, chm, gzip, bzip2, tar, cpio, rpm, deb の各形式に対応している。ライセンスは LGPL。

7-Zip ようこそ7-Zipウェブサイトへ!
http://www.7-zip.org/ja/

- 7zip で作った zip ファイルは互換性もあるし圧縮率も高い

7zip は独自形式の 7z 形式ばかり注目されがちだが、一般的な zip や bzip2 や gzip や lzh の圧縮もできる。また、7zip で作成した圧縮ファイルは、一般的なファイル圧縮ツールで圧縮したものよりもサイズが小さくなるという特徴を持つ。もちろん、一般的なファイル圧縮ツールで生成した圧縮ファイルと互換性がある。他のツールよりも圧縮に時間をかけて、より圧縮率が高くなるようにしているとのこと。

つまり、「圧縮率は重視するが、作成した圧縮ファイルは一般的なファイル展開・解凍ツールで展開できるようにしておきたい」という場合は、7zip を使って zip 形式や bzip2 形式で圧縮ファイルを作成すればよい。

- コマンドラインから 7zip を使う

7zip の配布パッケージには GUI 版だけでなくコマンドライン版も同梱されている。今回はこれを cygwin のコマンドラインから使う。目的は例によって以下の2つの記事で書いた gzip 圧縮した RSS ファイルや index.html ファイルを得るため。

2005-09-14 「Content Negotiation でリクエストに応じて gzip 圧縮ファイルを返す」
2005-09-15 「mod_rewrite でリクエストに応じて gzip 圧縮ファイルを返す」

ちなみに、シェル統合の機能があるので Windows のエクスプローラの右クリックから圧縮したいファイルを指定して 7zip を起動するのが一般的な使い方だ。

- 7zip.exe と Gnu gzip コマンドの圧縮率と所要時間の差

それぞれ time コマンドをかませて、圧縮所要時間を計測。

7zip のコマンドラインオプションの意味は以下の通り。
-tgzip は圧縮形式に gzip を指定。
-mx は 圧縮レベルに最高の9を指定。
-mfb は「Deflate エンコーダに渡す Fast Bytes の値」の指定。大きいほど圧縮率が上がるが、その分遅くなる。128を指定。

$ time /cygdrive/c/Program\ Files/7-Zip/7z.exe a -tgzip -mx=9 -mfb=128 cl-full.xml.7zip.gz cl-full.xml

7-Zip 4.23  Copyright (c) 1999-2005 Igor Pavlov  2005-06-29

Scanning

Updating archive cl-full.xml.7zip.gz

Compressing  cl-full.xml

Everything is Ok

real    0m5.470s
user    0m0.015s
sys    0m0.015s

$ gzip -V
gzip 1.3.5
(2002-09-30)

$ time gzip -9 -c cl-full.xml >cl-full.xml.gzip.gz

real    0m0.552s
user    0m0.546s
sys    0m0.030s

7zip は5秒ほど、GNU gzip は0.6秒ほど。所要時間約十倍。ちなみに実行環境は 2005-06-18 の「Athlon64 マシンを自作する」で作った Athlon64 3000+ (Venice コア)、メモリ 2GB のマシン。

サイズは 7zip で作ったものの方が40KB ほど小さくなっている。約4%。これだけだと差は小さい気がする。

-rw----r--  1 landscape なし 4191059 Nov  8 22:24 cl-full.xml
-rw----r--  1 landscape なし  912885 Nov  8 22:27 cl-full.xml.7zip.gz
-rw----r--  1 landscape なし  952781 Nov  8 22:28 cl-full.xml.gzip.gz

- スクリプトに組み込み

できた。2005-10-25 の「一定以上のサイズを持つファイルを gzip 圧縮するシェルスクリプト」に以下を追加した。

cd $HOME/public_html/log.sonic64/
seven_zip_target="cl-full.xml index.html cl.xml"
for file in $seven_zip_target; do
  echo "compressing with 7zip $file"
  /cygdrive/c/Program\ Files/7-Zip/7z.exe a -tgzip -mx=9 -mfb=128 $file.gz $file
  touch -r $file $file.gz
  chmod 604 $file.gz
done

最初に cd している理由は、パスの処理を一ディレクトリ内で完結させるため。cygwin から 一般のコマンドを呼び出しているときは、そのコマンドは / から始まる cygwin のファイルシステムのパスを解釈してくれない。これを解決するには、カレントディレクトリ内ですべてを実行するのが手っ取り早い。

2005-11-07 (Mon)

* MCP 70-316 受験レポート 友人編

この記事の直リンクURL: Permlink | この記事が属するカテゴリ: [MCP] [.net] [C#]

友達が MCP 70-316 を受験して合格したとのこと。で、受験レポートを寄稿してくれた。載せていい? と聞いたら OK をくれたので、ここに掲載しておく。

友人はメインの開発環境として VS.NET を使っていないとのこと。合格できたのは、繰り返し復習したおかげなんだろうな。iStudy の 70-316 の出来が良くないというのは同意。ちなみに、友人と私はそもそも職場が異なるし、具体的に何を開発しているかはお互い知らない。とても忙しいプロジェクトに参加しているようだ。

■受験時点でのC#経験
以前、C# で開発中のプロジェクトに 5 ヶ月間、ヘルパーとしてプログラミングを
担当する機会があった。
ちなみに本来所属するプロジェクトでは、VS.NET 及び C# は採用していない。
Windows Form の入力画面と、画面で扱うデータを XML Web Service で取得・更新すると
いう、基本的かつ低めのレベルのモジュールを担当していた。

私がこのプロジェクトに参加した時点では、ベースとなるフレームワークが完成済であっ
たため、MCP で問われるような細かい設定等を担当する機会はなかった。
また、言い訳になるがヘルプ要請が急で、業務の時間的制約もあり、深い部分まで理解を
広げることはなかった。

というわけで、私は C# については、初心者に毛を生やした程度のレベルと思われる。
そういうレベルの方の参考になれば幸いである。

■受験勉強
勤務先で、講師を招いての研修会が開催されたので、利用することにした。
研修はカテゴリごとにテキストの解説と iStudy の演習を行うスタイル。
試験合格のみを目的としており、ポイントが明確で得意分野・苦手分野がはっきり掴め
るので、良い研修だと感じた。

ただ、基本的なプロパティや文法などは知っている前提での研修である。
C# での開発経験が全く無いか、非常に浅い方には苦しい研修になる可能性がある。
そういう方は、テキストが事前に配布されるので予め目を通しておくと良いだろう。

毎日の研修後、その日の範囲のテキスト精読と iStudy で復習を行った。
なお、iStudy の品質は劣悪で、設問ミス・回答解説の誤りや不足が多い。
責任問題に発展するのではないかという品質である。

研修では誤っている問題の訂正と丁寧な解説が行われるため、聞き漏らさず、正解選択
肢はもちろん、不正解選択肢についても、本来の使用目的や効果まで把握しておきたい。
ただし、選択肢の中にはそんなプロパティは存在しない、等のでっち上げ選択肢もある。
研修期間終了後は、受験までの1週間、帰宅後に iStudy 模擬試験とテキストの精読を
行った。iStudy 模擬試験では、93 〜 98 % の正答率だった。

■試験会場
R-PROMETRIC 社で申し込み、受験した。

■試験内容
出題は 42 問。
他の方の話を伺うと 50 問以上出題されたという話も聞いた。難易度などを組み合わせて
出題されるのだろうが、詳細は分からない。

私に出題された問題の内訳は、iStudy の内容とほぼ同じか、研修や iStudy で得た知識が
ストレートに問われた問題が約 5 割、その知識を基に思考すれば解ける問題が約 3 割、
残りは回答に必要な知識が不足していると感じる問題であった。

http://sonic64.com/2005-08-28.html の 70-315 のレポートでは、
iStudy をしっかりマスターすれば合格は確実、との内容だが、70-316 はそうではないと感じた。
C# の経験が浅い方は、iStudy や研修テキストの他、実際にコーディングしてみたり、
ヘルプを精読するなど、+αの努力が必要と思われる。

■時間配分
試験時間は 160 分。
1 問目から順に進め、少しでも正解かどうか怪しい問題にはマークを付けて進める。
即答できる問題もあれば、10 分ほど考えた問題もある。勉強不足を痛感した。
全部の問題を一巡した時点で、68 分経過とスローペースであった。

この間、一緒に受験した友人が 60 分ほどで退室。モニターに反射して映る友人の顔には、
晴れやかな余裕の表情が浮かぶ。たぶん合格したのだろう。
少し焦る。
一巡後、マークを付けた問題は 19 問。これらが全て不正解だと、間違いなく不合格だ。
更に焦る。

窓越しに秋雨模様の市街を眺め、気持ちを落ち着けて二巡目へ。
マークを付けていない問題は回答の選択ミスが無いかを確認し、マークを付けた問題は慎
重に再検討した。
二巡目では、回答修正が 2 問、選択ミス発見が 1 問あった。
試験のフォームは、コンポーネントのコントロール領域が広く、不用意なクリックで意図
しない選択肢にチェックが付いてしまうため、必ず見直すようにしたい。
また、マークを付けた問題のうち 7 問は回答に自信を持つことができた。
その結果、マークを付けた問題が 12 問となる。

これらが全て不正解だと、配点によっては不合格の危険性が残る。
だが、うち 6 問は正解候補を二択にまで絞り込めていて数問の正解が見込まれることと、
再度検討しても回答は変わらないと思われることから、終了することにした。
この時点で 103 分経過。

祈る気持ちでテスト終了ボタンをクリックした。
テスト結果を印刷中とのメッセージが 1 分ほど表示された。
緊張感と脱力感、期待と不安が入り交じった、嫌な時間が長く感じられた。
結果は 760 点。薄氷の合格だった。
もっと勉強と経験が必要だ。

合格おめでとう。

2005-11-06 (Sun)

* SC-724A YMF-724 搭載サウンドカードのメモ

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

書きかけのメモを整理していたら、「SC-724A YMF-724 搭載サウンドカードのメモ」というのを見つけた。途中で終わってるけど、消すのはもったいないのでここに記録しておくことにする。

今は 2005-06-18 の「Athlon64 マシンを自作する」で作った Athlon64 マシンがメインマシンになっている。ASUS A8V-E マザーボードのオンボード SPDIF を使ってるために YMF-724 はサブマシン行きになったけど、いまでも愛着はある。

- SC-724A YMF-724 搭載サウンドカードのメモ

メインで使っている YMF-724 チップ搭載サウンドカード SC-724A についてのメモ。

- SC-724A とは

SC-724A は SOUND CROWN 社のサウンドカード。 YAMAHA の YMF-724 チップ搭載。他の YMF-724 搭載カードの OEM 品の模様。

今週見つけた新製品(1998/6/27)
http://www.watch.impress.co.jp/akiba/hotline/980627/newitem. ...
最近話題のYAMAHA製サウンドチップ YMF724を搭載したPCIサウンドカード。基板には「HARMONY 3DS724A」や「ATC6655」などと書いてあり、カードのデザインも同じ事からA-TRENDのATC-6655と同じ製品のようだ。

パッケージにはカエルとトンボの写真があしらわれている。
http://www.watch.impress.co.jp/akiba/hotline/980627/image/sc ... の画像ではパッケージがカードに隠れていて見えないけど。

- YMF-724 は人気だった

当時は YMF-724 チップ搭載カードに人気があった。何より安かったしね。

YMF-724 は YAMAHA MU-50 相当の XG MIDI 音源を搭載していた。さすがにこれを音源として作曲したりするのは難しいが、聴くだけなら結構使えた。当時は mp3 は流行始めで、ネットワークで配布されている音楽といえば MIDI や MOD だった。

MIDI を聴く場合は MIDI 音源が必要。お金のある人は Roland の SC-88Pro や YAMAHA の MU-90 などの MIDI 音源を購入していたが、これらは DTM を楽しんだりする人向け。値段も8万円くらいするため、聴くだけの人にはちょっと手が出ない。

ソフトウェア MIDI 音源というものもあったが、フリーのものでは使いこなすのはちょっと難しかった。シェアウェアでは WinGroove が、製品では Roland の Vritual Sound Canvas などがあったが、CPU パワーを消費するという仕組み上避けられない欠点があった。1998年頃の CPU って PentiumII や K6 が主流の頃 CPU の性能も低かったので、常に CPU パワーを食われるのはつらい。何より OS が Windows98 とかなので不安定。負荷をかけるソフト自体をあまり使いたくなかった。

そこに YMF-724 が登場した。XG 互換の MIDI 音源が搭載されていたことは非常に歓迎された。あんまり使われていないようだけど、Sondious XG という物理モデリング音源まで搭載されていたようだ。チップ自体も良くできていたようで、メーカー製パソコンのオンボード音源として採用されることが多かったようだ。

YMF-724 搭載カードにはデジタル音声出力端子が付いているモデルが多く、手軽に高音質を実現できるデジタルアウトを実現する手段として利用されることが多かった。私がこのカードを購入したのもデジタルアウトを使いたかったからだ。

その後 YMF-744 や YMF-754 などの後継チップが出た後、YMF-724 シリーズは終了してしまったようだ。ただ、これらの技術は携帯電話向け音源チップに受け継がれているという話をどこかで聞いたことがある。詳しくないのでよく知らないけどね。

- SC-724A の購入場所と価格と時期

私の SC-724A の購入場所は秋葉原のソフトクリエイト FM 館だったと思う。今はもうなくなっちゃったかな。パッケージに貼ってある値札シールによると、価格は4250円。私は1998年頃にデジタル入力端子付きの AV アンプを購入しており、それに接続できるカードを探していた。で、4000円強でデジタルアウトできるカードということで SC-724A に飛びついたのだ。

購入した1998年からずーーーっっと使い続けてる。もう7年目になるか。電源とケースに次いで長く使ってるパーツだ。

- S/PDIF 同軸デジタル出力端子搭載

このカードを購入した最大の理由がこれ。とにかくデジタル音声出力端子を使いたかった。当時のサウンドカードや PC ではアナログで音声を出力していることが多かった。ノイズ渦巻く PC からアナログ出力すれば、当然出力にもノイズが乗る。それを解決するのがデジタルアウトというワケだ。

SC-724A のデジタル出力端子は同軸。コアキシャルとも呼ばれるタイプ。S/PDIF の同軸デジタル音声ケーブルはビデオの黄色いケーブルと物理的な規格が同じ。つまり、2004-12-10 に書いた「S端子ケーブルでテレビとゲーム機を繋ごう」のコンポジットケーブルの黄色い部分ってことだ。

私はビデオデッキにおまけで付いてたケーブルから、黄色の線だけを引きちぎって一本だけにして、それをサウンドカードとアンプの接続に使っている。もちろん、音質を重視するエンスージアスユーザー向けには高級な同軸デジタルケーブルが売られている。でも、私にはこれで十分。ケーブルにお金をかけるよりも、スピーカーにお金をかける方が先だと思うしね。

- YMF724 のデジタルアウトは 48KHz 固定

YMF-724 のデジタルアウトは 48KHz 固定だ。CD からリッピングした音声データは普通 44.1KHz だが、YMF-724 からデジタル出力すると強制的に 48KHz にアップサンプリングされる。このときに音質劣化が発生するそうな。ダウンサンプリングじゃなくてアップサンプリングしてるだけだから波形は変わらないような気もするけど。

アップサンプリングを回避するには、ダイレクトに出力できる機能を持ったカードとドライバを使う必要がある。

- YMF-7x4 シリーズとドライバ

YMF-7X4 シリーズはドライバを他社の YMF-7X4 チップ搭載カードに適用できることが多い。というわけで、私も Labway か NEC のカード向けのドライバを使っていたと思う。というか、安定しすぎてどこのドライバ使ってるのか忘れた。
2ちゃんねるの「YMF-7X4 シリーズ友の会」スレや「YMF-7x4の備忘録」が役に立つ。というか、それを見れば十分。

YMF-7X4シリーズ友の会 Part6
http://pc7.2ch.net/test/read.cgi/jisaku/1091619668/l50

YMF-7x4の備忘録、題して「はじめてのインストール」
http://www.dd.iij4u.or.jp/~nmaeda/computer/ymf7x4/

そういえば、私のドライバのバージョンはいくつだろう。

コントロールパネルの ヤマハ DS-XG 設定の概要タブにドライバのバージョンが表示される。

ヤマハ DS-XG 設定
Version
5.12.01.2240
Copyright(c) YAMAHA Corporation, 1998-2001
All rights reserved.

あれ? このバージョンのドライバってちょっと古いよね。まあいいか。

2005-11-05 (Sat)

* Athlon64 X2 のライオン着ぐるみアスキーアート

この記事の直リンクURL: Permlink | この記事が属するカテゴリ: [アスキーアート] [PC]

ライオンとロバの着ぐるみのアスキーアート。
▼ の鼻と、八重歯のようなライオンの牙が好き。

左が AMD のデュアルコアプロセッサ Athlon64 X2 を表している。ちゃんとおなかに X2 って書いてある。

ちなみに右のインテルのロバのおなかに書いてある「炭」というのは、PentiumD のコードネーム Smithfield (スミスフィールド)、通称「炭」を意味している。ロバという文言は、インテルの PentiumD とは別の本命のプロセッサを担当している部門から出た。PentiumD は急ごしらえだったため、発熱が大きかったり消費電力が高い。インテル自身も出来がよいとは思っておらず、Smithfield をロバ扱いしたことから。ロバって歩みが遅いので、プロセッサに例えるときはいいイメージじゃない。

Pentium EE vs Athlon 64 X2 をLiveで見守るスレ(2)
http://pc7.2ch.net/test/read.cgi/jisaku/1119030161/99
99 :Socket774 [sage] :2005/06/19(日) 18:50:43 ID:bOnWtLqG
   ミAミミ彡A彡       Inヾ
 彡ミミ ’ .▼’;彡     /  ` |ミ
 彡彡;;  v┴v ミ    (_ο..  |ミ
  彡彡ミ(,・∀・)ミ     (`∀´) |ミ
   |:: (ノ  |)      (|  .、)|
   l::::  X2::!        | 炭  |
  .o人.;;; ;;;;;:/        ヽ.._人
    U" U          U"U
「PentiumDが”ロバ”と呼ばれるならば、Athlon64 X2は百獣の王”獅子”である!」
                      BY 日本AMD社長 デイビッド・M・ユーゼ氏

よりオリジナルに近い見た目でアスキーアートを鑑賞するには、以下をクリックしてください。
スタイルシート解除の Bookmarklet (クリックして実行)

2005-11-04 (Fri)

* 年賀状作成用のプリンタ選び

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

年賀状を作るための新しいプリンタがほしいと父が言い出した。

2005-08-17 に書いた、「Canon BJ-F200 があるじゃないか」と伝えたところ、「あれは古いし印刷遅いしあんまり綺麗じゃないしヤダ」とか言ってる。だんだんワガママになってきたな。

確かに BJ-F200 は古くて印刷が遅い。でも、印刷が遅いといっても、印刷中は映画見てたりして放置してるんだから別にいいじゃん。まあ、この BJ-F200 も友達がくれた奴だし、古いのは事実だし、新しいプリンタを買っても良いかな。

- 父のためのプリンタ選び

要件定義。
カラーで印刷ができて、今の BJ-F200 より印刷が速いもの。父の要望はそれだけ。父は「スキャナって何だ?」と言ってたので、プリンタだけで十分と。コピーも不要。というわけで、流行のオールインワンタイプじゃなくてプリンタ専用機で十分。余計な機能やモードが付いてると、かえってわかりにくいだろうし。

amazon で軽く見積もり。

Canon PIXUS iP1500Canon PIXUS iP1500

キヤノン
発売日: 2004/10/08


amazon で詳しく見る

Canon PIXUS iP1500 が手頃だな。要件は十分に満たしてる。同じ Canon だし、父も違和感なく使えるだろう。値段も約1万円と安い。


あ、HP (ヒューレットパッカード) の PSC 1510 も安いな。コピーとスキャナが付いたオールインワンタイプで、PictBridge 対応なのは良いね。でも持ってるデジカメ側が対応してないし、写真の印刷はカメラ店を使うので不要と。なんかカラーインクが高い気がするな。本体安くして消耗品で儲けるスタイルか。


決めた。Canon PIXUS iP1500 でいいや。HP はまた今度ね。

あと、はがき作成ソフトの筆王2006も買ってくれと言われたので注文。筆王2002の標準パッケージと筆王2004のアップグレードパッケージを持っているので、今度もアップグレードパッケージを購入。前は CD-ROM だったけど、2005-04-21 の「ノートパソコン DELL Inspiron2200 を購入」で買った DELL Inspiron2200 は DVD ドライブが付いてるので DVD 版を注文。これで良しと。

2005-11-03 (Thu)

* Tropy (とろぴぃ) という新しい CGI

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

結城さんが Tropy (とろぴぃ) という新しい CGI を作って公開している。
http://www.hyuki.com/tropy/

作者の結城さんによる Tropy の特徴の説明。
http://www.hyuki.com/d/200511.html#i20051103183338
Wikiのように誰でも自由にページを作れるし、編集できる。
誰がそのページを書いたかは分からない。
でも、Wikiとはまったく異なります。というか、通常のWebページとはまったく異なる方向性を持ちます。特徴を列挙しますね。

WikiNameを使ったページ間のリンクはない。
URLを書いても、リンクが自動的に作られることはない。
もちろんHTMLのタグは書けない(書いても単なる文字として扱われる)。
検索機能がない。
ページの一覧もない。
最近更新されたページがどれなのか分からない。
いつ作られたページなのかもわからない。
RSSもない。
さらに。

1ページのサイズや行数に制限がある。つまり一ページにたくさん書くことはできない。
ページを渡り歩くのはランダムジャンプしかない。

うーん、これって何に使えるんだろう? と思って、以下の書き込みをした。

自分のぬいぐるみに話すようなものかな?

だれかに聞いてもらいたいけど、自分のサイトに書いておくのは怖いな、って思うことを書く場所にできるかな。

そうしたら、以下のように加筆されてて笑った。

自分のぬいぐるみに話すようなものかな?

だれかに聞いてもらいたいけど、自分のサイトに書いておくのは怖いな、って思うことを書く場所にできるかな。
殺人予告とかね。

あはは。殺人予告はさすがに書かないって。しばらくしてから見たら、殺人予告の部分は削除されてた。

Tropy は他にどんなことに使えるんだろう? ツールは表現を規定する。良い意味でも、悪い意味でも。Tropy ならでは、というものがきっとあるはず。

Tropy の特徴はランダムってところ。ということは、そうだなあ。何かの抽選とか、出会い系のカップリングとか、モノポリーのチャンスカードとか、おみくじとか? でも、それぞれもっと適したシステムが他にありそうだ。やっぱり一言何かを残すのがいいのかなあ。ポエムとか。

2005-11-02 (Wed)

* sonic64.com の転送量の80%が RSS

この記事の直リンクURL: Permlink | この記事が属するカテゴリ: [sonic64.com] [Apache] [ネットワーク] [RSS]

当サイト Landscape が infoseek isweb から移転して sonic64.com を使うようになってから、1か月ほど経った。というわけでアクセスログを見てみる。

- Landscape - エンジニアのメモ 2005年10月のアクセス

総ページビューとか、人気のあったページとかはまあどうでもいいんだけど、いちおうメモ。ページビューは372969。約37万。Webalizer によるページビューなので、今までとはカウント方法が異なっている可能性はある。

月間総転送量は 63557488KB。約60GB、一日あたり2GBというところか。なんだか減ってる気がする。旧サイトを置いていた infoseek isweb では、多いときで一日5GB、少ないときで1GBくらいだったと思う。平均すると一日あたり 3GB から 4GB くらいだったかな。移転後に転送量が減ってる理由は、移転に伴って検索エンジンの順位が下がったりとか、あとは 2005-09-15 の「mod_rewrite でリクエストに応じて gzip 圧縮ファイルを返す」などの効果のためだろう。

- sonic64.com の転送量の80%が RSS

興味深かったのが、転送量の内訳。infoseek ではこういう統計は提供されなかったし、httpd の生のアクセスログも提供されなかったので調べられなかったけど、今は生ログがもらえるので解析できた。

解析の結果、転送量のほとんどが http://sonic64.com/cl-full.xml に集中してることがわかった。60GB の転送量のうち、50816191KB、すなわち 50GB 程度がこの RSS の転送のために使われていた。cl-full.xml は「すべての記事全文を含む RSS」 なので、サイズが大きいのは仕方がないが、それが sonic64.com の転送量の約80%を占めているとは、ちょっと意外だった。20%80%のパレートの法則を超えるような状態だ。

ちなみに、トップページ http://sonic64.com/ の月間転送量は 471425KB で、471MB。全体に占める割合はたったの 0.74%。まあ、こんなものでしょ。

月間60GBという転送量は、私の見積もりの範囲内なのでまったく問題ない。必要ならどんどんアクセスしてほしい。全体の転送量の80%が RSS というのはちょっと意外だったのだけど。infoseek からの移転先としてさくらインターネットを選んだ理由の一つは、転送量制限の値が高めで余裕があるからだ。

- HTTP リクエストヘッダ Accept-Encoding: gzip をちゃんと送ってる?

気になるのは、http://sonic64.com/cl-full.xml へアクセスするときに、HTTP リクエストヘッダ Accept-Encoding: gzip を送ってないクライアントが多いんじゃないかということ。

cl-full.xml は今日現在 4MB 弱のサイズがあるが、Accept-Encoding: gzip をつけて送れば900KB くらいに圧縮されたデータがサーバから返される。そのために 2005-09-15 の「mod_rewrite でリクエストに応じて gzip 圧縮ファイルを返す」などの仕組みを取り入れたんだけど、それが使われてなかったとしたら残念だ。無駄は嫌いなんだ。無駄、無駄、と。昨日のアクセスログを grep して調べてみる。

grep 'GET /cl-full.xml' ~/log/access_log_`date +%Y%m%d` |grep ' 200 '

上記のようにして 200 OK で完結したリクエストのログをざーっと眺めてみる。うん、以下の Mozilla Thunderbird は圧縮された cl-full.xml を取ってきてるね。返された cl-full.xml のサイズが 942606 バイトになってる。

"GET /cl-full.xml HTTP/1.1" 200 942606 "-" "Mozilla/5.0 (Windows; U; Windows NT 5.1; ja-JP; rv:1.7.10) Gecko/20050716 Thunderbird/1.0.6"

一方、 Accept-Encoding: gzip をリクエストにつけていないため、圧縮してないデータを返されたクライアントも結構あった。とくに、ロボットや Web 型 RSS リーダーのクローラーにこの傾向が強いように感じる。

"GET /cl-full.xml HTTP/1.1" 200 4147427 "-" "Mozilla/4.0 (compatible; Google Desktop)"

以下、UserAgent 名だけ列挙。

InfoSeek RssReader/0.1"
FEEDBRINGER/0.1 (http://feedbringer.net/; 10 subscribers)"
Google Desktop
blogWatcher_crawler/0.2
Accelatech RSSCrawler/0.4
HepCat: http://www.witha.jp/
Hatena RSS/0.2 (http://r.hatena.ne.jp; 7 subscribers)
cococ/1.04
gooRSSreader2/2.0-build 20050818 (based on glucose)
Headline-Reader [t] (http://www.infomaker.jp/)

Bloglines はちゃんと Accept-Encoding: gzip をつけてリクエストしてる。さすがだね。

- Accept-Encoding: gzip なしのリクエストは mod_rewrite でリダイレクト

今のところ転送量にはまだ余裕がある。Accept-Encoding: gzip なしのリクエストを、圧縮しなきゃダメと 403 Forbidden で追い返したり、問答無用で圧縮したファイルを返すようなことはしたくない。でも、今時の HTTP クライアントなら Accept-Encoding: gzip くらい送ってきて欲しい。一般的なクライアント型 RSS リーダーだと、ファイアウォールソフトや proxy によって Accept-Encoding: gzip を削除されてしまうことがあるようだけど、ロボット系はそんなこともないだろうしなあ。

そうだ。Accept-Encoding: gzip を送ってきてないクライアントは、HTTP 302 Moved Temporarily で RSS 広告社の Trend Match の RSS http://rss.rssad.jp/rss/qArzgZHGLg5Z/rss_0002 にリダイレクトするようにしよう。Trend Match から 返される RSS は gzip 圧縮がかかってないから、問答無用で圧縮したファイルを返すよりもずっといい。

2005-10-12 の「RSS広告社の広告プログラム Trend Match に参加」で書いたように、http://rss.rssad.jp/rss/qArzgZHGLg5Z/rss_0002 にアクセすると、Internal Server Error になってしまっていた。その後、2005-10-26 の「RSS広告社の Trend Match の RSS サイズ制限が緩和された?」で、エラーにならずにアクセスできるようになったのを確認した。正式対応のアナウンスはまだ無いが、いまのところ問題がない。そのうち cl-full.xml への全リクエストをリダイレクトしようかと思っていた。でもやっぱりいきなり全リクエストをリダイレクトするのは不安なので、まず一部だけでテストしたいところ。Accept-Encoding: gzip を送ってきてないリクエストにそのテスターになってもらうことにしよう。

さっそく mod_rewrite の RewriteRule を書こう。

RewriteCond %{REQUEST_URI} cl-full\.xml(\.gz)?$
RewriteCond %{HTTP:Accept-Encoding} !gzip
RewriteRule .+ http://rss.rssad.jp/rss/qArzgZHGLg5Z/rss_0002 [L,R]

できた。これを .htaccess に設定して、Firefox と LiveHttpHeaders の HTTP リクエストリプレイ機能で、Accept-Encoding: gzip があるリクエストと、ないリクエストの両方でテスト。よし、OK だ。これで全員が幸せになれるね。Win-Win-Win だ。

2005-11-01 (Tue)

* xyzzy でバッファを閉じるには CTRL + x k

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

テキストエディタ xyzzy でバッファを閉じるには CTRL + x k を使う。

CTRL + x k を入力すると、ミニバッファに閉じたいバッファの名前入力欄が表示される。デフォルトはカレントのバッファ。バッファ名を入れて enter を押すと閉じることができる。

ミニバッファへの入力なしで閉じる方法は見つけられなかった。分割したウインドウなら CTRL + x 0 で閉じることはできたが、分割してないと「カレントウインドウは削除できません」と警告が出て、閉じることができない。

すべての記事の見出し (全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 はランドスケープと読みます。
ひらがなだと らんどすけーぷ です。