July 04, 2004
カーナビ
いまふとテレビに目をやったらパイオニアのカロッツェリアの CM をしていた。つかこれは、と思ったのでメモ。
車を運転していてその車の上に3人の人(運転手と同じ人を小さくしたの)がいて、んで3人がナビをあらわしている。そんで、3人が「ご主人様は裏道がお好き!」とか運転手の好みと現在の道路状況を加味して、「次の道は左!」とやって、運転手が「なんでそんなこと知ってるの!?」と驚く。最後に「僕の結婚も近いかな?」と聞くと3人は黙るというのが落ち。
もちろん CM が面白いんじゃなくてシステムがとてもおもしろおいということね。ゼッタイこういうシステムが来るよなあっていうのが来たという感じがした。遊んでみたい。車買ってこのカーナビをいじってみたい。
追記
カロッツェリアのページによると CM ほどインテリジェントじゃないことが分かった。けっこう微妙。
June 22, 2004
HTTP のはなし
サーバー間の通信を HTTP で楽しようと思ったらおもいっきりはまる。ネットワークのことは丸々 Apach に投げて、後はやりとりするデータのことだけ考えればいいと思っていたのに。
というのも、そのやりとりするデータはテキストなのだがいろんな文字が混じっているために、CGI を利用する際の邪魔になる。「&」とか「;」とかその他いろいろ問題になっているということはわかったのだが、Ruby でも Perl の CGI.pm でもなぜだかうまくエスケープができないようだ。意味がわからん。そもそも CGI.pm のマニュアルとやらはつらつらと文章が羅列してあって調べたいものが調べられないし、苦労して読んだら自身が持っている全てのメソッドについてまったくかかれていない気がしてならない。MovableType なんかはこの辺の処理をどうしてるんだろうか。さっぱりわからない。
仕方が無いので HTTP のデータ部分は全て送信したいテキストのみとし、その他のいろいろな値は HTTP のヘッダに独自のパラメータを付けて送信することにする。と思ったら、むむ、Perl は HTTP のヘッダを取得する方法が無い?
とりあえず全てのヘッダは環境変数化しているらしい、なんだそれは。とりあえず下のような Perl スクリプトを回してみる。
foreach (sort(keys %ENV)){
print "$_ = $ENV{$_}\n";
}すると不思議な環境変数として取得できることがわかった。例えば HTTP のヘッダに
Leo-Health: too_bad\n
なんていうのを入れてあげると、Perl からは
$ENV{'HTTP_LEO_HEALTH'} = too_badというようにゲットできるようだ。なんとも不思議な実装だと思うのは僕だけでしょうか。
かなり悩んで、問題は解決したけどもなんだかすっきりしないので、とりあえず文字にして昇華〜。
April 26, 2004
NNNスペシャル
NNNスペシャルを見ていたらカリスマらしい小学校校長の話をやっていた。ゆとり教育に疑問を感じ如何にして「学力」をつけるかという取り組みをする校長を中心とした広島の小学校の話し。百掛け計算とか音読とか、基礎学力を反復して鍛える。番組としてはそれを実行する校長とその周りの教師の葛藤とか色々。
僕は勉強が面白いと思っている人なので、そうではない人から見ると僕の感覚は信じられないんだろうけども。でも例えばセンター試験なんていうものは死ぬ気でやれば80%は取れる、まあ僕はとってないのにこんなこといってますが。僕の場合誤算だったことは、有機化学が面白くなってしまって物理とかやらなかったし、まあ勉強が好きで点とることはどうでも良くなったことだろうね。
努力する力も才能という見方もあるだろうけども、今日見た番組はそういった感覚をある程度否定するものであったとは思う。3分とか4分かかるものを、高々数週間の訓練で、半分の時間でできるようになる事実は驚いたが、つまりはそうなんだろうなと思ったりした。
村上龍の『13歳のハローワーク』だかがとても売れているそうだ。先日チラッと見たがよくわからない本だった。必要性を否定はできないが、疑問を持つのは恐らく僕の感覚とずれているからだろう。一つの考え方、というか多分僕自身の話であるのであろうが、ある程度の力があれば仮に自分の進む道の決定が高校2年でも好きなようにできる。少なくとも東大だとか京大が敵でもいまいる自分の位置から著しく負けるとも思えないし。結果論的ではあるが、僕は自分が信じて通ってきた道がかなり所謂よく言われるような学歴的ステップであるが、まったく疑問は無い。まあ運がいいのかもしれないが、それだけでもないってことは少なくともうちの研究室にいる人には分かって欲しいなあ。
結論が見えないかね。ごめんなさいうまくまとめれません。僕はいま文書を書いて飯を食う方向にはまったく進んでいないが、自分の進むべき方向に自信を持っているし楽しくやっているので、13歳の時点で村上龍の本は読まずに勉強しといてよかったって言うことだ。広島の小学校の子をうらやましく思うのは、恐らく僕が数学にあまり興味が無いからだろう。計算とかあまり得意ではなかったから。
僕の知り合いの尊敬すべき人は、数学は全然できなかったが論理的であるということをいっていた(ような気がする)人がいる。もし氏が本当に論理的ならば恐らく数学なんていうのはそれほどたいしたことじゃないのと思うのは、ある程度数学をこなしてきた僕の感覚だったりするし、同意も得られませんかね?恐らく不幸なのは数学を苦手だと思ってしまった状況にあるというのが漠然としたものとしてある。言い換えると、興味のもてなかったものに興味を持てるような状況に至れなかった不幸かね。
うーん、まとめるつもりがまとまらない、読んでる人ごめんなさい。適当にコメント付けて突っ込んでね。
あー、簡単に言うとオンリーワンとか言ってるんじゃないよそんなもん当然なのでナンバーワンになれってことですか。これは多少飛躍したか、でも結論としては一つの事実じゃないですか。
April 11, 2004
C#
ちょこっとだけ C# とやらをつかってみた。うむ Java っぽい。GUI アプリケーションがとても作り易い。
あーでもやっぱり一度 Ruby を使ってしまうと、Ruby の手軽さからは抜けることはできない。C# もめんどくさく感じてしまうほど Ruby は作り易い。簡単に違いを言うと、C#(および Java 等)ははっきりと書いて上げなくてはいけないのだけども、Ruby は適当に書いてもいいというところかね。はっきり言わなくても分かることは分かるってことで処理してくれる Ruby は、より人間に近い。当然色々がんばって解釈してくれる分だけ実行速度はそれなりになるんだけども。
結局 Ruby はすばらしいという話しではなくて、C# もすばらしいのでぜひ機会があれば使っていきたいですね。
November 26, 2003
tf-idf その2
登録した URL からファイルをがっつり取ってこれるようになったのはいいが、さてどこからどうやって取ってくればいいのか、文章部分だけ抽出するスクリプトは RSS で書かれたものしか考慮されていないので、上手に RSS で書かれているものだけをゲットしてきたい。
Google からなんとか引っ張ってみようと思ったが、どうもたくさん取れそうにはない。そもそも RSS なんて普及していない。MovableType だとデフォルトで出力してくれるんだがなあ、ってあーそういえばはてなアンテナも出力しているじゃない、ということではてなアンテナに大量負荷攻撃お願いして RSS を頂くことにする。
んで、はてなアンテナの更新リストからはてなを利用して日記を書いている人のページを取得するスクリプトを作成。15,000 人のはてなダイアリーの URI をゲット。そして3スレッドからなる大量ダウンロード。相当に負荷が掛かってたらごめんなさい。
おかげでなかなかよろしい結果が出ているように見えるが、多くのページをゲットしたにもかかわらず単語リストの成長があまりよろしくないように思えるんで、はてなの RSS を覗いてみると description がかなりカットされていて、RSS には全文が書かれているわけではないのね。いやまあ RSS の規格的にはそうなんだろうけど。やはり、HTML から上手に文章をゲットすることが重要となりそうね。めんどい。XML で書かれていると perl でいとも簡単に取りたいところだけ取れるので、ぜひとも XHTML なりの XML を皆さんに使っていただきたいと思った。
November 24, 2003
tf-idf
今週も実に爽やかに澄んだ日曜の朝を迎えた。やはりこういう日は洗濯をし掃除機をかけた後、秀丸を開いてギコギコと perl プログラミングに限る。
久しぶりに perl の正規表現でさくっとプログラムを書こうとしたら正規表現がわからないったらわからない。ちょろっとした知識でかけそうなスクリプトしか書いたことがなかったわけだが、僕の正規表現というかパターンマッチングに関する知識はかなり胡散臭いものであったというか、渋君に間違ったことをいってしまっていたような気がしなくもない、わはは、笑い、ごめん。
さておき、perl とさらに格闘することとなったのが、何を勘違いしてしまったのか、perl によるマルチスレッドプログラミングをやり始めてしまったことにある。あの頃よりネットワーク周りの知識も増えたからその辺もさくっとプログラミングできるだろうし(とはいっても perl では LWP とかいうモジュールを使うととても簡単に HTTP が使えたりするのであんま関係ないね♪)、やはりネットワークプログラミングといえばマルチスレッドなりを使ったほうが効率がよろしい(ネットワーク論の課題では C++ を使いながらまったくそんなこと考えないで作ったのにね♪)。
気持ちの悪い括弧内の音符マークはスルーするとして、どうやら perl のマルチスレッドするためのモジュールであるらしい threads にはまだバグがあるようなないような。なぜだか「Unbalanced string table refcount: (3) for "Socket" during global destruction.」なんていうエラーが、スクリプトの処理終了時に出る。参考にしたスクリプトでは発生しない。とりあえず Google 君で、日本語のページの中にこのエラーに悩まされている人がいないか探し出す、が、日頃こんなに仲良くしているのに欲しいページを出してくれないので、仕方なく全言語から探し出すと、あった。んで、どうすればいいんだ、どうすればいいかを書いてくれ。これだからインターネットの人たちは仕方がない。
エラーは出る、しかしがっつりとファイルをダウンロードしてきてくれるのでエラーは無視することにして、URL をガツガツとかき集めては登録し、一気にダウンロード。各種サーバーに対して大量の GET を投げてあげる。このスクリプトではてなからファイルをゲットしようとして利用すると十分負荷攻撃になりそうだ。
上述したプログラムに関する話だが、タイトルにもした tf-idf の前処理に過ぎない。idf の値を出すために各地から文書をゲットしようとしていたのだ。というのも、idf は「ある単語を含む文書の総数/全文書の総数」であってある文書における「ある単語の総数/単語の総数」じゃないため、長い文書が1つあってもまったくおかしな結果となってしまう。「する」とかいう単語が最上位に来てタバコ5本吸い終わるぐらいの間悩んだ。どうしておかしくなるのかはちょっと手で計算してみればわかるのにね、笑い。
そんなわけで、前処理のプログラムを作っている、未完成。