Oct 29, 2007

日本シリーズ、いけるかもという慢心

クライマックス・シリーズからの流れで日本シリーズの調子も悪くない、我らがドラゴンズ。打線はDH立浪がまったく役に立っていないこと(立浪は9番に入れてチャンスメイクに集中してもらった方が良くないか?)を除けば問題ないし、先発投手のコンディションは良すぎるくらい。相変わらずテンションの低い落合監督と高いドアラに萌える。

ところで忘れてはいけない歴史がある。ダイエーと戦った1999年のことだ。

1999年度日本シリーズ 試合結果

1999年2007年
第1戦 福岡ドーム。ダイエー・工藤、中日・野口の両エース対決(二人とも元の球団に留まっていないあたりが涙を誘うが)。ドラゴンズ打線は工藤の前に13三振。3-0で完封負け。 札幌ドーム。日ハム・ダルビッシュ、中日・川上の両エース対決。ドラゴンズ打線はダルビッシュの前に13三振。3-1で完投負け。
第2戦 福岡ドーム。ダイエー・若田部、中日・川上(大卒、2年目)の対決。先頭打者の秋山にホームランを打たれるも川上が8回まで2失点の好投。ドラゴンズ打線は10安打。8-2で大勝。関川、福留、神野、大西の盗塁。 札幌ドーム。日ハム・グリン、中日・中田(大卒、3年目)の対決。4番セギノールのホームランを打たれるも中田が8回まで1失点の好投。ドラゴンズ打線は8安打。8-1で大勝。荒木の盗塁2。

この後、1999年のドラゴンズファンはみんな、

「なんだ、工藤(ダル)以外のピッチャーなら打てるじゃん。
 やっぱりゴメス・立浪(モリ・ノリ)は神。
 盗塁の成功率も高いし、機動力も活かせてる。
 これからホームで3連戦だし、今年こそはいけるんじゃね?」

なんて思って慢心していたわけだが、ナゴドに帰ってきた第3,4戦でダイエーの投手リレーの前に2安打、5安打で連続完封される。第5戦は再度エース野口を投入するも、福留の失策が大量点に繋がり、惜敗。日本シリーズでの4回連続敗退が確定したのだった。

忘れてはいけない。

Oct 25, 2007

三井住友カード、終わったかもな

ワールドプレゼント「ポイント移行サービス」のサービス内容変更について:三井住友VISAカード

とんでもない改悪だ。三井住友カードのポイントからEdyにコンバートする場合を考えると特にひどい。

元々のルールは、

  • A. ANAマイレージ1ptは、Edy 1ptに交換できる。
  • B. 三井住友カードの通常ポイント・ボーナスポイント1ptは、Edy 5ptに交換できる。ただし一回の交換に付き30円の手数料がかかる。
  • C. 三井住友カードの通常ポイント1ptは、ANAマイレージ10ptに交換できる。ただし年間6300円の手数料がかかる。

である。2008年度からは最後のルールが

  • C'. 三井住友カードの通常ポイント1ptは、ANAマイレージ3ptに交換できる。

に変わる。

例を挙げて考えてみる。三井住友カードの通常ポイント3000、ボーナスポイント1000を持っているとする。

旧ルールでは、通常ポイントをすべてANAマイレージに交換後さらにEdyに交換し、ワールドポイントをすべて直接Edyに交換することで受け取るEdyを最大化できる。

(3000 × 10 × 1 - 6300) + (1000 × 5 - 30) = 28670円 …(ア)

通常ポイント・ボーナスポイントとも直接Edyに交換すると、

(3000 + 1000) × 5 - 30 = 19970円 …(イ)

さて、新ルールでは、(ア)のようにANAマイレージを使った三角交換をすると、

(3000 × 3 × 1) + (1000 × 5 - 30) = 13970円 …(ウ)

新ルールでは(イ)のように直接交換した場合に受取額を最大化できる。つまり、マイラーでもない限り、ANAマイレージに交換する意味がまったくなくなるということ。

この件以外にも三井住友カードは以下のような制度変更を行っている。

ボーナスポイント:三井住友VISAカード

簡単に言うと、2007年度は前年度100万使った人に与えていた特典を、2008年度は前年度300万使った人にしか与えないよ、それ以外の人はもらえるボーナスポイントが目減りするよ、ということである。

Oct 23, 2007

Gutsy Gibbonで一部ホットキーが機能しない問題を何とかする

Ubuntu 7.10 (Gutsy Gibbon)がリリースされて喜び勇んでアップデートしてしまったのだが、ThinkPadなど一部のノートPCではFn+F7を使ったディスプレイ切り替えや無線LAN切り替えができないという問題がある。これではプレゼンテーションや飛行機内での使用に差し支える。

ググるといっぱいヒットする。

Gutsy Fn+F7 - Google 検索

よくよく調べるとThinkPad以外でも同様の現象があり、まだ修正方法は見つかっていないようだ。現象を端的に言うのは結構難しい。

まず、acpi_listenコマンドを使ってFn+F5、Fn+F7を押下してもibm/hotkey HKEYイベントが観測できる場合とそうでない場合がある。イベントが検出できない場合には、acpid経由で/etc/acpi以下のスクリプトも実行されない、だから切り替えられない。

もう少し調べてみる。/proc/acpi/ibm/hotkeyをcatとしてみると、

$ cat /proc/acpi/ibm/hotkey
status:         enabled
mask:           0xffff7f
commands:       enable, disable, reset, 

とか表示されるが、このmask値が0xffffffならFn+F5やFn+F7を拾えるのだが、このmask値が0xffffff以外に設定されてしまう場合があるようだ。

ではそのmask値は誰が設定しているかというと、/etc/init.d/hotkey-setupで設定している。このスクリプトの中では、/etc/X11/xorg.confの中から正規表現を使ってディスプレイドライバ名を切り出しているのだが、不完全である。例えば、「Driver "ati"」が2回現れる/etc/X11/xorg.confに対して「ati ati」という文字列をディスプレイドライバ名として認識してしまい、そんなドライバは存在しないので、Fn+F7を拾えないようなmask値を/proc/acpi/ibm/hotkeyに設定してしまう。

したがって、/etc/X11/xorg.confをしかるべく書き直すか、/etc/init.d/hotkey-setupを書き直す必要がある。

もう一つは、/etc/acpi/events/ibm-videobtnを見れば分かるとおり、acpidがイベントを拾えたとしても/bin/trueしか実行されないようになっていることである。/bin/trueの代わりに切り替え用のスクリプトを実行する必要がある。

で、確かFeistyでも/bin/trueになっていた。どうやって切り替えを実現していたのかは分からないけど。

そのうちアップデートが出るだろうが、とりあえずの対策を考えてみた。

無線LANの切り替え (Fn+F5)

/etc/acpi/events/ibm-wirelessを見るとFn+F5を押したときには、/etc/acpi/ibm-wireless.shが実行されることが分かる。このスクリプトを使ってトグルでオン・オフできる。

sudo /etc/acpi/ibm-wireless.sh

ディスプレイの切り替え (Fn+F7)

前準備として/etc/X11/xorg.confを適当に設定しておく。例えば以下の操作を行っておく。

  1. VGA/DVIケーブルを繋がない状態でマシンを起動し、gdmからログインする。
  2. VGA/DVIケーブルを繋ぐ。繋ぐディスプレイはそこそこ解像度があれば何でもいい。
  3. GNOMEのメニューから「システム>システム管理>モニタとグラフィックスカード」を起動する。
  4. 「ディスプレイ2」を選択し、「Plug 'n' Play」「1280x1024」「60Hz」あたりを選び、「無効にする」状態のまま「OK」する。
  5. 「All users must log off for ...」というメッセージが出るので、VGAケーブルを抜いてから、「システム>終了」からログアウトし、再度ログインする。

Fn+F5の場合と同様に/etc/acpi/events/ibm-videobtnを見ると/bin/trueを実行することが分かる。要はプレースホルダとして用意されているだけで、仮にacpidがFn+F7押下を検出したとしても実際にはディスプレイ切り替えは行われない設定になっている。

ではどうするかというと、/proc/acpi/ibm/videoを叩く方法と、xrandrコマンドを使う方法がある。ここでは後者を紹介する。

次に下のスクリプトをダウンロードして、chmod +xする。

gutsy-display-switcher.sh.txt

必要に応じて接続するディスプレイの解像度をEXT_RESOLUTIONに設定しておく。デフォルトでSXGAに設定してある。大抵の液晶モニタ・プロジェクタは対応しているだろうから変更は必要ないと思われる。あとはスクリプトを使っていつでも切り替えられる。

内蔵のLCDのみで表示する場合:

$ ./gutsy-display-switcher.sh 0

内蔵のLCDと外部ディスプレイで表示する場合:

$ ./gutsy-display-switcher.sh 1

外部ディスプレイのみで表示する場合:

$ ./gutsy-display-switcher.sh 2

こんな感じ。

Oct 21, 2007

クライマックス・シリーズ制覇きたーよ

マタキタ━━━(゚∀゚)━( ゚∀)━(  ゚)━(  )━(  )━(゚  )━(∀゚ )━(゚∀゚)━━━!!!!!

セ・リーグのクライマックス・シリーズ第2ステージの第1戦、第3戦を東京ドームで観てきました。

Yahoo!プロ野球 - 2007年10月18日 巨人vs.中日 結果
Yahoo!プロ野球 - 2007年10月20日 巨人vs.中日 結果

去年の10月10日も観に行ったのですが、二年続けて東京ドームで決定試合が観られるだなんて、レフドラ連中はなんて幸運なんでしょう!!!

第1戦、第3戦ともタイロンの一発が決勝点、投手陣が2失点で切り抜けるというドラゴンズらしい試合でした。第1戦の小笠原と中継ぎ陣にはまったくもってヤキモキさせられましたし、第3戦の中田の2暴投?にもヒヤリとさせられました。まあ、シーズン中と一緒なんですけどね。それにしても、中田の奪三振は熱い!

第3戦は、立ち見席初体験でした。第2戦の勝利が確定してからローソンに走った結果、立ち見席しか買えなかったので。試合開始直前にドームに行ったにも関わらずレフトのポール際に何とかスペースを見つけられてラッキーでした。それにしてもヌンチャクバット(初期装備の武器)以外のろくな装備なしで出かけたせいで、座れない、移動できない、当然飯も買えない、食えない、トイレに行けないのでビールも飲めない、というのは大変でした。空腹と応援疲れで最後はへとへとでした。立ち呑み屋にでも寄るような調子でドームに出かけた私に「立ち見なめんなっ!」「いいから出かける前に『やくそう』を買っとけっ!」とあらかじめ諭してくれる人がいれば良かったのですけど。次回は装備を念入りにするか、指定席で。

日本シリーズはおとなしくテレビ観戦の予定です。

iPod touch 8GBを買いました

今さらですが、14日(日曜日)にアマゾンで注文したiPod touch 8GBが17日(水曜日)に届きました。最初からjailbreakして遊んでいるところです。

今の時期に買ったのは、発売直後と年末商戦時の品薄状態を避けて購入したかったため。8GBにしたのは、中村ノリというブランドをまず考えて近鉄で終わっていいのかというのは文脈的に関係なくて、装置の構成要素を考えたときに16GBより8GBの方が割安感があると判断したため。

iPod touchは私の中の分類では完全にPDAです。ミュージックプレイヤーとしての操作性が悪いのはさておき、jailbreakしてしまえばほとんど完全に自由に使える超モバイルPCになってしまうのは、ただのミュージックプレイヤーを逸脱・超越しすぎた機能という他ありません。

ああ、目に見えるようです。Palmの頃はCPUパワーやメモリやI/Oが超しょぼくてとてもできないと諦められていた、あんなことやこんなことが次から次へと実現されていくさまが。例えば、touchとiTunesを無線LANで同期するなんてことは誰かがすでに取り組んでいてすぐに実現されてしまうでしょう。Googleの中の人は20%ルールを使ってGoogle Mail / Calendarのオフラインインタフェースとして使えるメールアプリ / スケジュールアプリを作っている最中に違いありません。FLVからH.264へのコンバートでtouch本体を発熱させちゃってる方だってきっといるはずなんです。

夢が広がりますねー。


ああ、売り上げランキングでは16GBの方が上なんですね。8GBが品薄なのか、16GBを買いたい人が多いのかどちらかですね。

Oct 19, 2007

AjaxCommentsをUTF-8以外のcharsetに対応させる

こういう改造は...。

The blog of H.Fujimoto:AjaxComments for MT4プラグインの利用法

まず、Comments.pmを継承するAjaxComments.pmクラスを作り、lib/MT/Appかextlib/MT/Appの下に置きます。

package MT::App::AjaxComments;
use strict;

use base 'MT::App::Comments';

sub init_request {
    my $app = shift;
    $app->SUPER::init_request(@_);

    my $q = $app->param;

    if ($q->param('ajax') || $q->param('charset')) {
        require MT::I18N;
        my $post_charset = $q->param('charset') || 'utf-8';
        my $mt_charset = MT::ConfigMgr->instance->PublishCharset || 'utf-8';
        if ($post_charset ne $mt_charset) {
            for my $name ($q->param) {
                my $value = $q->param($name);
                $value = MT::I18N::encode_text($value, $post_charset, $mt_charset);
                $q->param($name, $value);
            }
        }
    }
}

1;

次にMTのルートディレクトリにmt-ajax-comments.cgiを作ります。

#!/usr/bin/perl -w
use strict;
use lib $ENV{MT_HOME} ? "$ENV{MT_HOME}/lib" : 'lib';
use MT::Bootstrap App => 'MT::App::AjaxComments';

最後にmt-config.cgiに以下のように追加し、再構築します。

CommentScript mt-ajax-comments.cgi

動くかどうかはしらん。

Movable Type WEBデザインの新しいルール

yujiro本をいただきました。ありがとうございます。

これは美しい本ですね。MT4をはじめてインストールする人などは参考になると思います。現状、唯一のMT4本ですしね。

Chapter 05は全体の構成からするとちょっと浮いているかもしれません。小粋空間ネタからピックアップしたものなのかなと思いました。プラグインハック、テンプレートハックはそれだけで本書けちゃいそうですけどね。

Oct 18, 2007

Cybozu2iCal 0.20公開

サイボウズオフィス6のカレンダーアイテムを取得して、iCalendar形式に変換するスクリプト、Cybozu2iCalを更新しました。

Cybozu2ICal - ogawa - Google Code

樋口さんから以下の記事にインスパイヤされ、新たなオリジナリティを加えてキャラクター化機能追加したものです。

Quick Hack [サイボウズのスケジュールをiPod Touchに同期させてみた] - higuchi.com blog
手段と目的が逆転しているかも [Cybozu2ICalの改造 その2] - higuchi.com blog

このバージョンから、Google Calendarに読み込ませるiCalendarファイルを生成する場合には、「--compat-google-calendar」オプションを明示的に指定する必要があります(以前のバージョンではデフォルトでそうなっていました)。

Oct 17, 2007

亀亀にそろそろ一言言っとくか

いろいろあったが、言いたいことは二点。

一つは、日本ボクシングコミッションの当事者能力は、日本相撲協会のそれに比べて格段に優れているということ。連れの言葉を引用すれば、「さすがに長年大衆向け興業に携わってきただけあって決断も早い」という他ない。別の、良くない言い方をすれば、「さすがに不祥事慣れしている」。大衆向け興業は人気商売。騒ぎが長引けば年末にかけての興業が全滅しかねないだけに、この件に関して即断できたことはひとまず称賛していい。

日本相撲協会にもそういう能力を期待しているが、無理なら早々にコミッショナー制に移行したらいい。日本に古くはケネソー・ランディスや、NBAのデビッド・スターンのような人材が求められるかどうかは疑問だが、若く、カリスマがあり、何より相撲好きな閣下を初代コミッショナーに私は推したい。ちなみにJBCのコミッショナーは後楽園ホールの経営者であって実際に興業全体の利益に関心を持たざるを得ない立場。そのことが当事者能力を高めることにもなるが、「もっとずっと前にこの裁定ができたのではないか=興業の利益のために裁定を意図的に遅らせていないか」という疑問に答えるのに十分ではないように思える。

もう一つは、この騒動をきっかけに「美しい、正しいボクシング」に関する知識と情報を共有するチャンスを我々は得た、ということである。例えば、Youtubeやニコニコ動画で川島郭志や畑山隆則の映像が検索・閲覧できるようになること、それに関心を持つ人が一人でも増えることは、明白な「進歩」である。

Oct 15, 2007

六鳳居に行ってきた

今さら気がつくのもなんだけど、去シーズンから私のような個人客が活きた上海蟹を手に入れることはできなくなった。なぜかというと、上海蟹=チュウゴクモズクガニが外来種被害防止法の適用対象種となったから。中華食材屋の店先で100gあたり数100円の上海蟹を品定めするという古き良き習慣はもう過去のもので、食べたくなったら素直に中華屋に足を運んで一杯あたり最低1500円くらいのものを食すほかない。

さて、横浜中華街の上海蟹フェアが今年も始まっている。去年はフラグを立て損なったので今年は是が非でもということで、日曜日に六鳳居に行ってきた。この店はフェアと関係なく、蟹が手に入る季節には間違いなく置いてあってハズレがないし、他のメニューも薄味でとても食べやすかった。

蒸し蟹二杯と、海鮮粥とビーフンで割とよい散財だったけど、とてもおいしかった。また来年行こう。

Oct 12, 2007

BatchAuthorCreator 0.01公開

複数のユーザ(およびユーザの個人用のブログ)を一度にまとめて登録する機能を提供するプラグインを作ったので公開しておきます。MT4専用。

BatchAuthorCreator - ogawa - Google Code

Movable TypeのCMSを使ってたくさんのユーザを手動で登録するのは苦痛の極みです。一人分登録するのに2分かかるとして30人分で一時間。こんな非人間的な作業を一時間も集中してできる人はそういません。

BatchAuthorCreateプラグインを使うと、ユーザ設定情報をYAML形式でオフラインファイルとして記述しておき、あとでアップロードしてまとめてバッチ的に登録する、というフローでこの非人間的な作業を大幅に省力化できます。YAML形式なので可読性もあるし、他のテキスト形式から変換して生成するのも容易でしょう。

Oct 7, 2007

EstCrawler Plugin 0.01公開

エントリをまとめてHyper Estraierのデータベースに追加したり、エントリの追加・削除に応じてHyper Estraierのデータベースを自動的に更新したりする機能を提供するプラグインを作りました。MT4専用。

EstCrawler - ogawa - Google Code

まあなんですか?「文書ドラフト」形式でエントリ別アーカイブを静的生成するとかダルいでしょ?そう思っちゃう人は使ってみてください。

あとついでに、データベースに登録するときにタグやカテゴリーの情報もアトリビュートとして突っ込んであります。

(何を使って検索しても構いませんが)estseek.cgiを使う場合、下のような問い合わせをすればhogeタグを持つエントリを表示できます、とか。

http://.../estseek.cgi?attr=tags+STRINC+%5Bhoge%5D&perpage=10

Oct 1, 2007

MT4のmt-search.fcgiの性能

Ogawa::Buzz: mt-searchがどうこうという話の続き。

MT4標準のmt-searchの性能をFastCGI環境でもう少し詳細に調べてみた。ベンチマークの条件は、

  • MT 4.01 + FastCGI環境。
  • デフォルト(No Cache)、MemcachedLocalを使った場合(MemcachedLocal)、Memcachedを使った場合(Memcached)の3つを比較。
  • MaxResultsは10,20,40,60,80,100でそれぞれ測定。
  • 検索処理(Search)、レンダリング処理(Render)、それ以外(Misc.)に要する時間をそれぞれ計測。
  • 計測は20回のシーケンシャルリクエストの最良値と最悪値を除いた値を平均化。
  • 対象データはこのブログのある時点でのスナップショット。

まず、デフォルトテンプレートによる検索時間の結果。

MemcachedLocalを用いることで最大約23%の全体処理時間の短縮が実現できている。レンダリング処理に限れば40%以上の時間短縮が期待できる。

Memcachedを用いることで、MemcachedLocalと同様にレンダリング処理の時間短縮が期待できる。ただし、検索処理自体に要する時間が増加しているため、効果が相殺されてしまい、MaxResultsの値が大きい領域でしか高速化できない。Memcachedを用いた場合には、データベースからロードされたデータ本体もキャッシュされるため、そのオーバーヘッドがあるものと思われる。

次に、デフォルトテンプレートからメタ情報(MTEntryCommentCount, MTEntryPingCount)の表示部分を削除したテンプレートによる検索時間の結果。

MemcachedLocalを用いてもほとんど高速化されない。微妙に速くなっているが測定誤差の範囲。Memcachedとの組み合わせで検索処理が遅くなるのは、メタ情報ありの場合と共通している。

数値データコミコミで以下で公開。

Google ドキュメント - MT4: mt-search.fcgi performance

MemcachedLocal Plugin 0.01公開

オブジェクトの外部メタデータ(例えば、エントリのコメント数、トラックバック数、タグなど)をキャッシュすることで、特にFastCGI環境などでのテンプレートの再構築を高速化を実現するプラグインを作りました。

MemcachedLocal - ogawa - Google Code

平たく言うと、FastCGI環境でこのプラグインを使うと、テンプレートの再構築を高速化できますよ、mt-searchも全再構築も速くなりますよ、ということです。

(memcachedを利用しない設定の)MT4では、リクエストごとにオブジェクトの外部メタデータ(例えば、エントリオブジェクトのコメント数、トラックバック数、タグなど)がキャッシュされますが、そのキャッシュはオブジェクトの生存期間のみ有効となっています。リクエストごとにオブジェクトが生成され破棄されるので、リクエストごとにキャッシュも破棄され、次回以降のリクエストで再利用されることはありません。

一方、memcachedを利用している場合には、このキャッシュが別プロセスで動作しているmemcachedプロセス上に確保されるため、キャッシュはリクエストにまたがって有効です。このため、オブジェクトの外部メタデータへのアクセスが高速化されます。しかし、memcachedとのプロセス間通信のオーバーヘッドがあるため、ある程度の規模のサイトでないと高速化のメリットが享受できません。

MemcachedLocalプラグインは、memcachedを使わない永続環境(例えば、FastCGI環境)で、memcachedの代替となるオブジェクトの外部メタデータのキャッシュを実現します。MemcachedLocalでは(FastCGIの)インスタンス内にメタデータキャッシュを持つので、アプリケーションインスタンスが生存している限りはキャッシュが再利用できます。

ベンチマークなどはOgawa::Buzz: MT4のmt-search.fcgiの性能で紹介します。

About Me

My Photo

つくばで働く研究者

Total Pageviews

Amazon

Copyright 2012 Ogawa::Buzz | Powered by Blogger
Design by Web2feel | Blogger Template by NewBloggerThemes.com