2007年12月28日金曜日

Pythonでアップローダを作ってみた

このブログ記事をはてなブックマークに追加

ASPN : Python Cookbook : Minimal http upload cgi

このあたりを参考に、自分のウェブサイトにPythonによるアップローダのCGIを導入してみた。ローカルのファイルをサーバにアップロード。アップロードされたファイルはウェブサイトのアップローダの画面にリスト表示される。表示されているリンクからダウンロードできる。アップロードするファイルの種類とファイル容量は指定可能。

個人で利用する分には十分な性能だろう。短いコードだが、他人のソースを流用しているので公開は控えたい。使いたい方は上記のサイトを参考にすれば問題なく作れると思う。

続きを読む...

2007年12月25日火曜日

PS3とPSPのゲームが面白いのですが。

このブログ記事をはてなブックマークに追加

最近、PS3とPSPのゲームが面白くて困る。師走と云うこともあり、個人的に時間が足りない。「アンチャーテッド エル・ドラドの秘宝」、「グランツーリスモ 5 プロローグ」、「THE EYE OF JUDGMENT(アイ・オブ・ジャッジメント) BIOLITH REBELLION 機神の叛乱」、「勇者のくせになまいきだ。」、「どこでもいっしょ レッツ学校! PSP the Best」とその「トレーニング編」など。未購入だが、「PATAPON(パタポン)」や「サイレントヒル ゼロ」も面白そう。来月なら「デビル メイ クライ 4」か。

最近は時間が無いので、これらのうち、アンチャーテッドとGT5Pばかりやっている。どちらも面白くて、やっぱり困る。アンチャーテッドは美しいグラフィックと敵の出てくる緊張感が良い。初めてプレイした時の「バイオハザード」を髣髴とさせる。一方、GT5Pは美しい車体を見ているだけでも楽しい。走っているとついつい時間を忘れてしまう。この頃はフェラーリ599でロンドンの市街を走ってばかりいた。ただ、このゲームをするときはハンドル型コントローラは必須に近いかも。パッド型コントローラとは面白さがかなり違う。

そのうち時間ができたらゲームの感想などをここにアップするかも。

続きを読む...

まいにちいっしょ

このブログ記事をはてなブックマークに追加

PS3の無料コンテンツ「まいにちいっしょ」。これはPS3の発売開始時からのサービスでネコのトロが自分の部屋で生活する姿を見せてくれる一種の環境ソフト。とは云っても、毎日のちょっとした話題などを提供してくれる「トロ・ステーション」はトロとクロが寸劇を交えて面白おかしく説明してくれるし、ほかにも「まいにち右脳ランキング」などのゲームもある。加えて、小額もしくはみャイル(ゲーム内の通貨のようなものでイベントごとにもらえたりする)で部屋の飾りやコスプレなど購入できる。

自分は当初、「へぇ、毎日無料でニュース配信かぁ」ぐらいにしか考えおらず、小額とは云っても有料のアイテムなどは絶対買わないと思っていた。が、動画サイトなどでいろいろほかの人のトロの部屋を見る機会が増えると、こんなにもカスタマイズできるのかと感心してしまい、ついついいろいろとアイテムを購入してしまった。それなりにはまる。まあ、子供も喜んでいるので良しとする。

つい先日、念願の金色の招き猫を購入した。これを購入するのに1000みャイルかかった。みャイルは1回トロ・ステーションを見ることで10みャイル貰える。しかし、これだと実に100日かかる計算だ。まあ、当日配信したものにはボーナスで20%アップの12みャイルもらえたり、クイズを解いてポイントがアップしたり、ゲームをプレイすることで少しもらえたりするので実際はもう少し短期間で溜まる。で、なんでそこまでして金色の招き猫が欲しかったかと云うと、これを飾っておくだけで、当日ボーナスの20%が~100%の幅で変動して、平均50%アップぐらいになるからだ。これでより多くのみャイルが溜まるし、毎日どれだけボーナスがつくか見るのも楽しい。実はとっくの昔に購入できるだけのみャイルを貰っているのだが、ウォーキング鴨・ダンシング鴨(それぞれ300みャイル)などを買ってしまい、手に入れるのが遅くなってしまった。この鴨は音楽を鳴らしておくと歩いたり・踊ったりし、仕草がとてもよくできているのだ。「まいにちいっしょ」をよく利用している人なら買って損はないと思う。

そんなわけで、今後も「まいにちいっしょ」のコンテンツに期待している。クリスマスプレゼントやお年玉などはありそうだなぁ。そう言えば、今月のアップデートで庭ができるらしい。いろいろなアイテムを飾ったり、自分の分身でもあるニャバターを操ってトロたちと遊んだりできるようだ。

あっと、そうそう、先日このブログでも取り上げた「初音ミク」がトロ・ステーションでも取り上げられてた。結構、深く語られていて一見の価値有り。因みに、この回を見ると、おまけで部屋に飾れる初音ミクのポスターも貰える。

追伸: 庭は実装され、トロと一緒に庭で遊ぶことができるようになった。庭ではBGMは鳴らないが、その代わりに環境音が秀逸。魚屋に買い物に来た主婦と店主のやり取りの会話だとか、面白い。また、クリスマスプレゼントにPS3本体をもらった。もちろん、まいにちいっしょ内のアイテムだけど、トロがPS3をプレイしてくれる。ちょっと嬉しい。お年玉も楽しみだ。

続きを読む...

2007年12月11日火曜日

勇者のくせになまいきだ。

このブログ記事をはてなブックマークに追加

PSP用ゲームソフトの「勇者のくせになまいきだ。」は、モンスターを育てて襲い来る勇者たちを倒すことを目的とするゲームだ。発売日に購入してそのままはまってしまい、ストーリー表・裏、すべてのトレーニング・チャレンジ、おまけ1・2をクリアし、いきものずかんもすべて完成してしまった。

このゲームはジャンルとしてはパズルゲームになるのだろうか。そのゲーム性も面白いのだが、これまでのゲーム、特にRPGに対するオマージュが盛りだくさんであり、このセンスがとても良い。たとえば、「イロイッカイズツ」なんてのは、知っている人が聞いたら絶対にニヤリとしてしまう台詞だろう。

まあ、欲を言えば、もう少しボリュームがあっても良かったように思う。ストーリーは表と裏の二つあり、それぞれ8ステージある。ステージ数はこれで丁度良いと思うが、ストーリーはもっと欲しかった。あと、もともとこのゲームはダウンロード販売であったらしいが、パッケージ販売に変更された。パッケージだといちいちUMDを入れなくてはならず面倒だし、ダウンロードでメモリに保存のほうが読み込みが早い。せめてダウンロードと併売にして欲しかった。

それにしてもついついプレイしてしまう。クリアの感想としては、「おまけ」が面白かった。あと、シンデレラニジリゴケをデレフラワーにするのが苦労したなぁ。


続きを読む...

2007年12月5日水曜日

歩行者は右側通行か?

このブログ記事をはてなブックマークに追加

先日、鬱陶しいことに出遭った。道路に面した歩道を歩いていたときのこと、自分は左側を歩いており、前方から来る老人は右側を歩いていた。周りの人たちはすべて左側を歩いており、自分はその流れに乗っていたわけだ。しかし、このままでは前方から来る老人にぶつかってしまう。そこで仕方なく右側に避けた。しかし、左側通行をしている人も向かってきているので、丁度歩道の真ん中を歩く形になったわけだが、なぜかその老人はこちらの方に寄ってくる。そのまま歩いて肩がぶつかったのだが、その老人、えらい剣幕で怒っている。こちらは避けて、そちらはぶつかりに来ていることからもこちら側は悪くないはず。どうやら、道路交通法では右側通行の原則があって、左側を歩いていたこちらが悪いといいたいらしい。「ほかの人もみんな左側歩いていますよ」と云っても、「だから日本人はこんなに酷くなったんだ!」とか訳の分からないことを言い出す始末。どうやら、みんなが右側を歩かないことに対する八つ当たりっぽい。確か、歩道に対しては右側通行は規定されていないと思ったから「右側通行なんてことはない」と云う話をしたら、またまた怒り出し、小学校の教育が悪いとか何とか云い始めた。仕舞いには白黒はっきりさせようと言い出し、110番までする始末。

しばらくして困惑顔の警官が2名来たのだが、こういう話は本人同士で納得してもらう以外、何も打つ手が無いとのことで、かなり迷惑気味。そりゃそうだろう。110番する前に警察も迷惑だからやめたほうがいいのでは、と云ったのだが、老人は聞く耳持たず。一通りあらましを警官に話した後、警官たちにも迷惑掛けたくなかったので、その老人に適当に謝って終わらせることにした。こちらが謝ったとき、警官の一人はこちらに向かって深くお辞儀をしてくれた。ちゃんとこちらが考えていることが分かっていたようで、こちらに非がないにもかかわらず謝り、早く終わらせてくれたことに対する感謝をしてくれたようだ。

さて、ここからが本題なのだが、歩道や十分な幅のある路側帯は右側通行の原則の対象にならない。確かに道路交通法、第2章・第10条の第1項では歩行者は右側通行を原則とすると書かれている。しかしそれは、「歩道または路側帯と車道の区別の無い道路においては、道路の右側端に寄って通行しなければならない」と規定されている。つまり、歩道や路側帯に対しては右側通行である必要は無いのだ。もともと、車両が左側通行で歩行者が右側通行になった理由は、前方から来る車両に対してすぐに対応できるようにするためだ。だから、道路に面する歩道や路側帯では左側通行が理に適っている。すぐ分かることだが、歩道(路側帯)においては、道路を走っている車両に対面する歩行者が車両に近い方を歩く場合、必ず左側通行になるからだ。

誤った知識で物事を判断することほど迷惑なことは無い。歩行者はどんな場合でも右側通行だと思い込んで行動し、それに合わない場合は非難をする。無知が起こす災いの典型的な一例だろう。以前にこのブログでも、神のいない世界はすばらしいというテーマで語ったことだが、無知と偏見、この世でもっとも悪しきものだと思う。

続きを読む...

PS3が売れてる?

このブログ記事をはてなブックマークに追加

11月の集計では、PS3は据え置き型ゲーム機で販売台数がトップになったらしい。直接の原因は40GBモデルと値下げによるものだろう。まあ、何はともあれ、PS3にはもっと頑張ってもらいたい。

以前からPS3を利用しているが、前にも云ったようにPS3の満足度はかなり高い。個人的には面白いゲームが増えてきたと思う。プレイ済みのゲームは、「フォークス・ソウル」、「モーターストーム」、「アイ・オブ・ジャッジメント」、「鉄拳5 DARK RESURRECTION ONLINE」など。後は「まいにちいっしょ」もか。これはゲームとはちょっと違うかもしれないが、無料でこれだけ完成度の高いコンテンツも凄いと思う。ほかに、「ライズ・フロム・レア」も購入したがこれはほとんどプレイしていないなぁ。別につまらないと云うわけではないのだが、ここまで手が回らない。

他の使い方としては、メディアサーバとして使っている。PC上で取り溜めた録画ビデオなどをLANを介してPS3で観る。さらに、PS3を介してPSPで観る。これが思いのほか便利だ。寝床で寝転んで観られるのは良い。PSPからネットを介してPS3をリモートで起動できるので、家のみならず、外出先からでも使うことができるのがさらに良い。便利になったものだ。もちろん、DVDのアップコンバートで非常にクオリティの高い画質とか、BDプレーヤーとしての利用は言わずもがなだ。

それにしても、利用者の満足度はかなり高いと思うのだが、ネットなどではPS3を卑下する発言が多い。実際使ってみるとかなり良いこと分かるのになぁ。まあ、本当に使って合わなかった人は仕方ないけどね。

続きを読む...

2007年12月3日月曜日

死刑制度廃止について

このブログ記事をはてなブックマークに追加

国連で死刑制度廃止のモラトリアムが採択されたらしい。日本やアメリカ、中国などは反対したが、EU諸国の推進に押し切られたようだ。正直なんて押し付けがましいのだろうと思う。現状でさえ、犯罪では加害者ばかりが有利で、被害者にはつらいものになっている。その上、死刑制度廃止とは。もし、死刑制度が廃止されたら、殺人者が一人もいなくなるとか、死んだ人間が蘇るというのならわかるが。この死刑制度廃止もキリスト教の存在が大きいのだろうか。

もし、死刑制度廃止が義務化されたなら、犯罪は増える一方だろうな。刑罰の抑止力を過小評価しているとしか思えない。刑罰が無くなれば好き勝手やる人間は必ず出てくる。たとえ100人虐殺したとしても自分は安全に生きられるのだから。

その昔、江戸時代では刑罰は非常に重いものだった。だから、自分の財布をその辺に置いたまま遊んでいようが、それを盗る人間はほとんどいなかったと云われている。絶対冤罪のない裁判が可能ならなぁ…。

最近、個人情報保護がやたらと云われるようになったが、一昔前の下町のように隣人が何をしているのか分かるような社会が悪いとは思えない。個人情報が洩れて犯罪に巻き込まれるとか云われたりするが、皆が皆、回りを知るようになれば犯罪は減るんじゃないかな? もちろん、犯罪に対する刑罰は重くする。偉い人も偉くない人もそれぞれが同じように自分たちの情報を共有する。悪くないと思うがなぁ。

続きを読む...

2007年11月21日水曜日

THE EYE OF JUDGMENTオンライン対戦その3

このブログ記事をはてなブックマークに追加

対戦成績が7割になったあと、簡単に負け越してしまった。3勝4敗で、トータルで10勝7敗となってしまった。ダメだ。特にケアレスミスがダメだ。せっかくいい勝負してても計算ミスとか思い違いとか置き間違いとか…。勝負に負けても悔しいとか思わないのだが、自分のミスだけは痛い。

あと、うまい人に当たるとプレイングでへまされることが少なく、必然的にデッキの構築の良し悪しが響くことになる。結構適当にデッキを組んでいたので、真剣に構築しなおすことにした。上位ランカーの対戦相手のデッキを参考に自分なりの考えを加えて組んでみたが、最終的に随分ましになったと思う。その後、一戦交えたが、勝率が8割超えている相手にかなりうまく勝てたようだ。よしよし。しかしまだまだ改良の余地はありそう。カードが足りないが、これ以上買い足すのはちょっとしんどい。

最後に自分の構築したデッキについて。まず、再行動コストが高いものを減らした。召喚マナコストが2でも、再行動も2かかるものははっきり云って重い。召喚3でも再行動1のほうが使いやすい気がする。また、比較的低コストの警戒持ちは便利。ミノスとかエントとか。ただし召喚属性に制限があることに注意。他には憑依がかなり使える。要は自分が出されて嫌なカードを揃えてみた。

しかしまたコテンパンにやられて、新しくデッキを組み直すと。その繰り返しかなぁ。因みにもうCOM戦じゃ相手にならないみたいだ。エキスパートにしても結構余裕で勝てる…。さすがにコンピュータに何手も先を読ませるのは難しいのかな。

続きを読む...

2007年11月20日火曜日

THE EYE OF JUDGMENTオンライン対戦その2

このブログ記事をはてなブックマークに追加

すっかりはまってしまっている。とは云っても仕事やら風邪やらでそれほどプレイできているわけじゃない。とりあえず10回ほど戦ってみた。7勝3敗で勝率は7割。このゲームはプレイヤーのスキルの差が本当に良く出る。適当やっていてもほぼ勝てない。ほぼといったのはドローによる運もあるからだ。ある対戦で、こちらはデッキにスペルカードを7枚仕込んだのだが、前半で全部出てしまって手札7枚中6枚がスペルカードになった。これじゃ勝てない。それともこれだけ偏っても勝てる人は勝てるのだろうか。

そうそう、先日までスターターセット+おまけのブースターセットでプレイしていたが、とうとうテーマデッキ5種+ブースター1BOXを秋葉原のイエローサブマリンで購入してしまった。一気に手持ちのカードが300枚近くに。しかし、ブースターは正規の定価よりも2割5分増の6000円であった。うーむ。まあ、「ウォマック」が入っていたから許す。

と云うわけで週末は新たに組み直したデッキを使ってみた。実際に戦ってみるとカードの使い勝手が予想と結構違うことに気が付いた。まずはスペルカードから。一応デッキには入れているが、「召喚士メスマーの失敗」は思っていたよりも使えない。相手にマナが溜まっている状況で自分の手札に生贄にできるカードが無いといけないが、そういう場面が思ったよりも少ないのだ。あと、「癒しの慈雨」は結構使えると思うが、ほかのカードをどうしても入れておきたくて、これは外してしまった。このカードと迷ったカードは「クレア・ウィルの旗印」。マナ1で+2の攻撃はやはり捨てられない。後絶対に入れておきたいのは「迷いの羅針盤」だ。これはマナコスト無しで自由にクリーチャーの向きを変えられる。攻めにも守りにも使える最上級クラスのカードだと思う。

クリーチャーカードを入れる際の基本的なコンセプトとしては、低コストカード(マナ1~2)が全体の半分ぐらいで残りにそれなりにコストが高いもの。現在は、「ファセウス」、「ウォマック」、「エディン」、「聖ディースを追う者」などを入れている。勇者は4種持っているので悩みどころだが、「エディン」の魔道攻撃は捨てがたい。「聖ディース」はちょっと微妙か。「ファセウス」も使いどころが難しいが、個人的に使いたいカード。あとは王族は一枚も無いし、叛逆者は「ウォマック」のみなのでこれも選択の余地は無い。まあ、「ウォマック」は結構使えると思うが。そういや、「シオンダルの大ミノス」も結構使えたな。やはり警戒持ちは便利だ。低コストクリーチャーについてもいろいろと戦略上重要な要素があるのだがここでは割愛する。

そんなわけでもっとこのゲームは流行って欲しいな。今回の10回の対戦では日本人とは一人しか当たらなかった。一番多いのは以外にもフランス人だった。この手のゲームが流行っているのだろうか。

続きを読む...

2007年11月19日月曜日

Google - Android Developer Challenge

このブログ記事をはてなブックマークに追加

Googleの携帯用OS、AndroidのSDKが公開されている。しかも、それで作ったアプリケーションに対して総額1000万ドル(約11億円)の賞金が出るそうな。審査は2段階(Challenge I, Challenge II)に分かれており、Challenge Iは2008年1月2日から3月3日までで50人が選ばれ25,000ドルがもらえる。さらに、Challenge IIは5月1日までで、Challenge Iで選ばれたものの中から10人が選ばれ27万5000ドルが贈られるようだ。さすがGoogle、桁が違う。

別に賞金に釣られてということでもないのだが、早速SDKを落としてみた。開発言語はJavaのようだ。んー、Javaはあまり好きじゃないんだけどなぁ。随分前のこと、Javaが発表されてすぐに飛びついてそのエレガントな設計に将来必ずこれはクルと思ったものだけど、その後のSunの対応などに嫌気がさしてJava自体も嫌いになってしまった。あとは、JITコンパイラなどの起動にいらいらすることが多かったってのもあるかな。決して悪い言語じゃないんだけどね。

そうは云っても、Javaで開発するしかないようなのでアイデアが浮かぶようなら挑戦してみようかな。そこそこのレベルであれば、Javaで開発することもできそうだし。やはりキモになるのはアイデア。良いアイデアさえあれば半分はできたようなもの(云い過ぎ?)。たまに考え付くことがあるけど、都合よく出てくるとは限らないので苦労する。何か小気味好いアイデアないかなぁ。

Google側としては、多少技術的に荒いソフトウェアでも良いアイデアを集めることができれば1000万ドルの価値はあるのだろう。携帯電話の良し悪しはアプリケーションの良し悪し(とインターフェイス)で決まると思う。

続きを読む...

2007年11月16日金曜日

THE EYE OF JUDGMENTオンライン対戦

このブログ記事をはてなブックマークに追加

COM戦のハードで普通に勝てるようになったので、オンラインで初めて対戦してみた。最初の対戦相手は、総合順位100位台の大賢人だった。いきなり上級者との対戦だ。同レベル同士をマッチングしてくれないのだろうか。まあ、当たってしまったものは仕方ないので、TCG初心者、オンライン対戦初めてである自分がどこまでできるかまずはやってみた。

相手はいきなりキュービック。これは初期段階で高コストクリーチャーを召喚させる、もしくは相手の魔道攻撃クリーチャーを引きずり出す作戦だろう。魔道攻撃クリーチャーはいないので物理攻撃してみるが、予想通りかわされ、見たことが無いクリーチャーを召喚された。自分はまだ最初のカードしか持っていないので、見たことが無いカードがたくさんあるのだ。それでも途中までは上手に属性や能力を使った一進一退の良い対戦だと思われたが、途中、クリーチャーを置き間違えたのがいけない。そこから押し切られてしまった。やっぱりミスったら駄目だ。それでもこの対戦から多くのことを学べたのは収穫だった。

次の対戦と思い、検索したが見つからなかったので、今度は自分でルームを作って誰かが来るのを待ってみた。そしたらすぐに相手が入ってきた。今度は総合順位1400位ほどの人だった。早速対戦したが、今回は自分にミスは無く、終始安定したプレイングができたようで、危なげなく勝利できた。初勝利。名声5ポイントで総合順位8000台。

今回は2回の対戦でやめたが、これなら何とかなりそうな印象。1回目の対戦は負けたが、勝った対戦よりもいろいろと収穫が大きく、やはりランキング上位陣との対戦のほうが面白そう。

このゲーム、頭脳戦が非常に面白い。自分で組み立てたカードをドローするゲームなので運が大半を占めるかと思いきや、その運用が大きくものを云うようだ。ゲームバランスも絶妙なようで、ネットの評判もどれも良いものばかり。ただ、実際にカードを購入して集めないことには多様性のあるデッキが作れないので、知り合いなどには気軽に薦めづらい。それでもこういう良質のゲームはもっと流行って欲しいものだ。

続きを読む...

2007年11月14日水曜日

お腹がHELLぜ!

このブログ記事をはてなブックマークに追加

ハバネロのフラッシュゲーム「お腹がHELL!」をプレイしてみた。これは、サントリーと東ハトとのコラボレーション商品「暴君ハバネロの旨スープ」のPRの一環らしいのだが、よく出来ているのでなかなか楽しめた。

ところでこの商品、近くのコンビニで売ってないのだけどどこにあるんだろ。個人的にハバネロ関連のスナックは好きなので、結構気になっている。なかなか美味しいとの話だし、飲んでみたい。おにぎりと一緒に食べると結構いけそうだ。

続きを読む...

2007年11月13日火曜日

THE EYE OF JUDGMENT

このブログ記事をはてなブックマークに追加

PS3とそれに接続したカメラを使ってプレイする次世代トレーディングカードゲーム(以下、TCG)、THE EYE OF JUDGMENT(アイ・オブ・ジャッジメント) BIOLITH REBELLION 機神の叛乱(以下、EOJ)がしばらく前に世界同時発売された。今までに無い、臨場感あふれるカードゲームバトルで白熱したプレイができる。カードにコードが記されており、それをPS3のカメラで読むことで画面上にカードに描かれた生物が浮き出てきて、所狭しと暴れまくるのだ。しかも、自分がカメラを通してそれをつついたりするとそれに反応する。楽しい。

自分はもともとそれほどTCGには目を向けてなかった。興味はあったのだが、まず、周りにプレイする人がいない、それに、カードを集めようと思ったらかなりの出費になるということから敬遠していたのだ。しかし、EOJではまず世界中のプレーヤーとPS3を介してオンラインでプレイできることで、一緒にプレイする人がいなくて困ることは無くなった。また、出費といっても社会人からしてみればそれどの額でもないのでまあ許容できるかと。と云うことで購入してみた。

まあ、それほど期待はしていなかったのだが、プレイしてみたらビックリ。これが非常に面白い。付属のカードはスターターセットとブースターセット、それにおまけで付いてきた1枚の計39枚。それを組み合わせて30枚(これをデッキと云う)にしてプレイする。まずは自分の構築したデッキをカメラで読み込ませてPS3に登録する。そして、そのカードを駆使して、3×3の計9マスの陣地のうち最初に5マスを占領したほうの勝ちとなる。カードには相手を攻撃できるクリーチャーカードと魔法カードがあり、クリーチャーカードを5枚、マスの上に置くことができれば勝ちなのだ。クリーチャーやマスにはそれぞれ属性と云うものがあり、それにより有利不利が出てくる。また、クリーチャーや魔法も様々な種類があってその組み合わせや運用によって効果が大きく変わってくる。かなりの戦略性があるのだ。その反面、初めてプレイするときには少しとっつきにくいかもしれない。ガイダンスビデオもゲーム内で見ることができるが、それだけ数十分もかかるほどだ。

また、現在、別売りのカードが極度の品薄でなかなか手に入らない。販売元もここまで売れると思わなかったのだろうか。早急に何とかしてもらいたい。もっとも自分はしばらく別売りのカードは購入しないかもしれないが。まずは慣れるまで手持ちのカードでいろいろ研究してみるつもりだ。

現在、TCG初心者である自分が数時間プレイした段階で、コンピュータ相手にノーマルでプレイしてなんとか勝てるかな…ぐらい。デッキはスターターセットをもとに、おまけのブースターに入っていた機巧の神ファセウスを火の神と入れ替え、少し機巧ユニットを増やしたってところ。ハードやエキスパートはまだ試してない。さすがにビギナーには無敗だった。まあ、1回のプレイ時間も知れたものだし、時間のあまり取れない自分としてはかなり都合が良いゲームだ。そのうちオンラインでもプレイしてみよう。

以下、ニコニコ動画によるプレイ画面。


続きを読む...

2007年11月12日月曜日

PLAYSTATION 3のメジャーバージョンアップ

このブログ記事をはてなブックマークに追加

やっと来た。PSPからのPS3本体起動。今まではいくらPSPからPS3のデータを読み込めるといっても、PS3を起動させっぱなしでないと駄目だったのだが、これからはPSPとネットワーク環境さえあればどこからでも起動できる。もちろんPS3の電源を切ることもできる。他にもXMBのアイコンや背景をカスタマイズできるようになったり、音楽や動画のプレイリストを作ったり、インフォメーションボード(PS3関係のニュース速報)が追加されたりといろいろと便利になったようだ。ほかにも振動コントローラーに対応したり、SACDが光デジタルで出力できるようになったりしている。

PS3は個人的にはかなり良くできた機種なのだが、悪く云う人が目立つ。しかしその人たちの言葉をよく聞くと、触りもしないで嫌いだからと云う理由でそのように騒いでいるのが多いように思う。少なくとも自分は購入して良かったと思うものの一つだ。これだけの機能があってこんなに安いのはどうかと思うぐらい。まあ、11月11日にさらに値下げされた新型PS3も出たようなので、興味がある人は使ってみてはどうか。

続きを読む...

2007年11月9日金曜日

初音ミク

このブログ記事をはてなブックマークに追加

しばらく前からネットを中心に初音ミクという名前を聞くようになった。これは指示した通りに歌を歌ってくれるソフトウェアであり、デスクトップミュージック(DTM)の一種だ。要はボーカルをやってくれるのである。作曲・作詞はできても、歌ってくれる人がいなければ、人には聴かせることができない。それをこの初音ミクが歌ってくれるのだ。ネットの動画サイトを中心に瞬く間に拡がった。DTMとしては異例の売り上げだそうだ。確かに、技術がある人が利用すると非常にクオリティの高い作品となる(私には無理だが)。



しかし、最初に感じたことだが、このようなソフトでボーカルが務まるようになると、将来、本職や音楽業界・テレビ業界には少なからぬ打撃になるのではないか。もちろん、自動車の発明で馬車が廃れたように、何かの技術が生まれれば、従来のものがそれに置き換わっていくのは仕方ないことかもしれない。それでも、上に挙げたような業界からは激しい抵抗や攻撃があるように思える。実際にTBSでは番組中にあからさまな初音ミクの中傷を行ったり、発売当初から匿名で悪く言う輩が後を絶たない。多分、将来的に不安を感じたものの行動だろう。実際に、大手インディーズ音楽配信サイトmuzieのランキングでも初音ミクがやたらと目に付き、それだけ恐怖心も大きいのだろう。

自分個人としてはこれだけの技術の発達を大いに歓迎したい。私たちは常に進化しているのであり、そうそう後戻りはできない。昔は良かったといえるのも便利な今があるからであり、いきなりすべてが昔に戻ったら医療の未熟さゆえ死亡率は跳ね上がるだろうし、これだけの人口に対して効率よく食料を確保できないことから多くの人が餓死してしまうのではないだろうか。まあ、これはちょっと大きく捕らえすぎなのかもしれないが、技術の進歩に対して、私たちはそれを享受する義務(権利ではなく)があると思う。そんなわけで、初音ミクに対しても優しく接するべきだろう。

因みに以下の『みくみくにしてあげる♪』というのが初音ミク自身が歌うテーマ曲(?)っぽい。これは一般受けするか微妙なところだが、ニコニコ動画あたりでは自作の質のよい楽曲が揃っているようだ。ご試聴あれ。


続きを読む...

2007年11月8日木曜日

世の中は常に混沌に向かっている

このブログ記事をはてなブックマークに追加

エネルギー危機とは云うけれど、エネルギー保存則で分かるように、世の中のエネルギーが失われることは無い。ある場所からある場所へ移るだけだ。なら、エネルギーによる危機など始めから存在しないのだと思われるが、そうは問屋が卸さない。エネルギーは変わらないが、そのかわりエントロピーが増加するのだ。これがエントロピー増大則である。仕事が行われる際(歩いたり、喋ったり、自動車を運転したり、テレビを見たりなど…なんでもよい)、価値の高いエネルギーから価値の低いエネルギーに移るが、それによってエントロピーは増えるのである。全体のエントロピーは決して減ることは無い。ある一部においてはエントロピーが減少しているように見えても、ほかのところでそれ以上にエントロピーは増えている。エントロピーとはすなわちカオスのことであり、世の中は常に混沌に向かっているのだ。なので、エネルギー危機とは正確ではなく、エントロピー増大の危機というのが正しい。

以上については、『エントロピーと秩序―熱力学第二法則への招待』に詳しく書かれている。エントロピーについて知りたい人には必読の書だ。

続きを読む...

2007年11月7日水曜日

GRAN TURISMO 5 Prologue無料体験版

このブログ記事をはてなブックマークに追加

グランツーリスモ5プロローグの無料体験版が現在ダウンロードできる。11月30日までの限定なので早めに落としておくのが吉。早速プレイしてみたが、ビジュアルがかなりリアルで驚いた。ぱっと見には実写と見紛う。随分前にPSのグランツーリスモと一緒に購入したハンドル型コントローラが利用できるようだったので使ってみたが良い感じである。本ソフトのリリースは12月13日だそうだ。

無料体験版のデモプレイ映像を貼り付けておく。YouTubeのものなのでかなり映像は荒いが雰囲気は感じ取れると思う。



こちらはニコニコ動画のもの。


続きを読む...

2007年11月6日火曜日

山場CM

このブログ記事をはてなブックマークに追加

番組が盛り上がってきたところで流すCMのことを山場CMと云うらしい。クイズ番組で正解を発表する直前とか、ドラマで犯人が判明するところとか。これって視聴者をいらいらさせるばかりで構成としては最悪なんじゃないかと前々から思っていたが、実際に多くの視聴者が同じように感じているようだ。少し考えれば分かりそうなものなのに…。ほかにもCMのあと再度同じ場面を繰り返すのも酷いやりかただ。これじゃ、その番組も見なくなるだろうし、いらいらしているときに流されるCMの商品なんて買いたくもなくなるだろう。因みに海外では日本のような山場CMは極端に少ないんだそうだ。

というわけで自分はTVをほとんど見なくなって久しい。くだらないことで時間を浪費することもなくなったし、その分、自分の時間として有効に使えるようになって良いこと尽くめ。テレビ局は視聴者の立場に立った番組作りを理解してもらいたいものだ。

続きを読む...

2007年11月3日土曜日

Kaspersky Internet Security

このブログ記事をはてなブックマークに追加

先日、とうとうトレンドマイクロのウイルスバスターからKaspersky Ineternet Security (カスペルスキー・インターネットセキュリティ)に変更した。何度もウイルスバスターがらみでのトラブルがあり、ここ最近でもPCのHDDへのアクセスが数十分も続くことがあり、結局これもウイルスバスターの仕業であったようだ。もっとも今回変更したのはノートPCだけであるが。Kasperskyは価格とライセンス形態に難ありなのだ。

ウイルスバスターを導入する前は、ノートン・インターネットセキュリティを利用していた。しかし、重くてどうしようもなかったので(現在は以前よりも随分軽くなったらしい)、当時、評判の良かったウイルスバスターに乗り換えたのだ。使い始めは良かったのだが、なんというか使うごとに不満が出てきた。自分としては、どうも初心者向けのつくりが気に入らない。いちいちアップデートの表示が出てきたり(多分設定で変えられると思うが)、そうかと思うと、知らないところで勝手にセキュリティ関連プログラムが実行され極度に重くなる。通知無しで起動されると何が原因でシステムが不安定になっているのか特定しにくいことこの上ない。その点、Kasperskyはプログラムが実行されるときにはトレイアイコンが変化するのでわかりやすい。

また、Kasperskyはウイルス駆除率でも定評がある。GIGAZINEのアンチウイルスソフトウェアランキング、最強はどれ?でも1位になっている。より詳しくアンチウイルスソフトを比較したい場合は、道具解AV-Comparativesあたりが参考になるだろう。

そんなわけで、現在試用版を試しているところだが、今のところ快調だ。試用版は30日間の期間限定だが、それまでにははっきり結論が出せるだろう。

続きを読む...

2007年11月2日金曜日

何でもできる宇宙のような箱

このブログ記事をはてなブックマークに追加



こういう時代があったな…。本当に何でもできると思ってたよ。


続きを読む...

神のいない世界はすばらしい

このブログ記事をはてなブックマークに追加

リチャード・ドーキンスの『神は妄想である』を読んだ。ドーキンスは無神論者で有名だが、まさにそれを表す過激なタイトルの通り、内容は「神などまず存在しない」と云うものだった。自分も神などいないと思っているので多くの部分で共感を持てた。

特に問題となるのは、宗教・神を信じることが人間を不幸にしているということだ。これは自分も前々から感じていたことで、9・11のテロ事件も、イラク侵攻も、現在行われてる世界の様々な紛争も、古くは魔女狩りや十字軍も、そして日本ではサリン事件、すべて宗教に関わるものだ。聖書の内容も酷いもので、特に旧約聖書については目も当てられない。女性なんてその辺の石ころ並みの扱いだ。

また、宗教のせいで、科学が言われ無き迫害を受けている。聖書と矛盾する進化論や地球の年齢を端から間違っていると決め付け、「人間のような複雑なものが自然にできるわけが無い。つまり、神のみが人間を誕生させることができるのだ」と云う論調。大体、その全知全能の神はどうやって作られたというのか?全知全能なんて途方も無く複雑だろうに。

さらに、信者は神がいなかったらどうやって人間は道徳を身に付けるのかとまで云っているらしい。酷い話だ。宗教に入っている人たちは、もし神がいないとしたら(実際いないのだが)、道徳観念を捨てて悪逆非道を尽くすのだろうか。私は無神論者だが、良いことと悪いことは知っているつもりだ。

自分は物事を良く知ることこそ、世界から偏見をなくし、本当のことと嘘のことを区別する能力を与え、世界から争いを減らすことができる力だと思っている。それは、偏見や嘘にあふれている宗教の世界を無くす、もしくは形骸化させる力になる。勉強することにはこのように大変重要な意味があるのだ。巷でよく聞く、この勉強・あの勉強は、将来役に立つ・役に立たないという議論などまるっきりナンセンスだと思う。

最後に、ロシアの小学校で起こったテロの悲惨さを伝える秀逸なフラッシュ・アニメーション、『未来はすばらしい』を紹介しておく。これはチェチェンとロシアの紛争によるものだが、その背景には宗教が深く関わっている。因みに、フラッシュの右上に表示されるSubtitleをJapaneseにすると、字幕が日本語で表示される。

続きを読む...

2007年11月1日木曜日

不意の拍手

このブログ記事をはてなブックマークに追加

以前、たくさんの人たちが集まる発表会の会場で、そこにいた子供がゴム風船を誤って離してしまい、会場の天井で引っかかってしまった。その高さはゴム風船の紐の端に大人がジャンプしてぎりぎり届くか届かないかというところ。自分はその会場の関係者であったので、それを取ることに。かなりぎりぎりの距離だと思ったので、風船の真下に来て、慎重に位置を決めて、何度か屈伸して、今だというタイミングでジャンプ一番、何とか風船を掴むことができた。さて、子供に渡そうとふと後ろを振り向いてみると、一般客たちが自分を囲むように取り巻いて、今のジャンプに対して拍手、拍手。まさかそんなにギャラリーが集まっているとは思っていなかったので、面食らってしまった。嬉しいような、恥ずかしいような。不意に拍手をもらうことなんてそうあるもんじゃなく、めったにできない体験でした。

続きを読む...

2007年9月30日日曜日

遅いPCはいらない

このブログ記事をはてなブックマークに追加

仕事なりプライベートなりでPCはよく使う。しかし、最近特に動作の遅いことにイライラすることが多い。前に比べて自分が短気になったとかそういうことじゃないと思う。以前からも動作が遅いときにはイライラすることは普通にあったし。そういえば自分が子供のころはクソゲーの条件で最初に挙げられていたのが「動作が遅い」だったな。その当時から、とにかく動作が遅いだけですべてを台無しにすると思っていた。

まず、いつまでもHDDをカリカリ読み込んでいる時点で終わっていると思う。CPUだけ速くてもだめだ。これからのPCはこれを何とかしないと将来に期待が持てない。すべてオンメモリにするとか。それに肥大化したアプリケーションを何とかしないと。中間言語を使うソフトウェアもひどい。JITコンパイラも最悪だ。Javaと聞いただけで背筋が寒くなる。とにかくどれもこれも初期化に時間がかかるのだ。

また、起動や終了もひどい。自分の使っているノートPCを起動してすべてのスタートアップを読み込んでHDDが静かになるまで(ここが重要!)5分かかり、シャットダウンが完了するまでに2分半かかった。いい加減にして欲しい。つけて消すだけで7分半ですよ。飯が食い終わります。

とにかく、これがサクサクスイスイ動くのなら、今の10倍以上の速さで仕事をこなせると思う。そんな素敵なPCでないかな。少々値が張っても絶対買うと思う。

そういえばこの記事を書いていて一つ気が付いたことがある。CUI、いわゆるコマンドラインでのプログラムにイライラすることはほとんどない。それはプログラムに時間がかかったとしても、それを待っている間にほかの事ができるからだ。実行する前のコマンドライン入力自体で待たされることがないからだ。一方、GUIだとまず画面が表示されるまでに待たされる。その間、何もできない。この違いは決定的だ。

一つのプログラムだけ利用するならばGUIでも問題ない。しかし、PCは一つのプログラムだけで使うものではない。複数の様々なプログラムを同時に利用するのだ。

続きを読む...

2007年9月29日土曜日

Folding@Homeはどうやって病気を治すのか?

このブログ記事をはてなブックマークに追加

PS3のFolding@Homeは、ついに1Pflopsの大台に乗った。いやはや数の力は偉大だ。ところでこのFolding@Homeだが、これがどのようにして病気の治療に役立つのかちゃんと理解している人がどれだけいるだろう。ただなんとなく人の役立つから動かしてみてるだけという人がほとんどじゃないだろうか。そこでここではその仕組みについて簡単に解説したいと思う。

まず、Foldingの意味から。Foldingとは折り畳みという意味で、ここではタンパク質の折り畳みを意味する。タンパク質はDNAから設計され、数十から数百のアミノ酸が一列に連なったものだ。なので、タンパク質の端と端をつかんで引っ張れば一本の細長い紐のようになる。この紐はアミノ酸の並びによって必ず決められた形に折り畳まれ落ち着くのだが、これをFoldingというのだ。

ではこのタンパク質の折り畳みがなぜ重要なのか? それはこの折り畳み構造によって生体で機能する働きが決定するからだ。この折り畳まれた構造に別のタンパク質や生体分子がくっつき、生命に必要な機能を発揮する。現在では、人間のすべてのDNAが解読されたので、すべてのタンパク質のアミノ酸の並びがわかる。もし、アミノ酸の並びだけで折り畳み構造がわかれば、苦労して生体からタンパク質を見つけ出さなくても良くなるのだ。そして、その構造が、薬の開発や病気の解明などの研究に繋がるわけだ。もっとも、現状ではアミノ酸の並びだけではまだまだ折り畳み構造を決定するのは難しいのだが。

Folding@Homeでは、単に折り畳み構造を求めるだけではなく、現在構造が明らかになっているタンパク質に対しても機能の解明などで役立っている。例えば、タンパク質の一部のアミノ酸(タンパク質は基本的には20種類のアミノ酸から構成されている)が別のアミノ酸に変異すると異常な働きをして病気になる。それがどのように起こるのかを、タンパク質の動きなどから予測できる。

最後にFolding@Homeの実際の計算方法について述べる。上記に示した折り畳みや機能の解明は、分子動力学計算や分子力場計算によって行われる。分子動力学計算とは、原子間の力を古典力学のニュートン方程式を解くことで、その動的な過程を解析する。分子力場計算では、原子間の位置エネルギーの総和から分子のもっとも安定な構造を決定する。基本的には分子動力学計算の方が、長時間の計算が必要になる。

以上、簡単にだがFolding@Homeについて説明してみた。自分が何をしているのか知ることは大事なことだと思う。

続きを読む...

2007年9月25日火曜日

怖い乱数

このブログ記事をはてなブックマークに追加

Javaのjava.util.Randomで適当な種を与えてnextDoubleなんて使ったりすると、最初の値が非常に狭い範囲(0.7前後)でしか生成されないことが分かる。かなり酷い。特に検証もされていないプログラムでは使われていそうで怖い。これじゃ乱数の意味無し。

また、こちらはかなり有名だと思うが、C言語標準のrand関数で生成された乱数は、最下位ビットが0と1の繰り返しになる。これも酷い。少し前に、あるゲームソフトがこのせいでサイコロがランダムではなくなってしまい、問題になっていた。回収や修正騒ぎになって売り上げにも響くわけで「あーあ」じゃ済まされない。

良い乱数・悪い乱数で詳しい解説がされているので乱数を使う際には一読しておくのが良いかも。

続きを読む...

2007年9月24日月曜日

マシン語至上主義

このブログ記事をはてなブックマークに追加

とあるブログで、プログラムというのはマシン語を理解して初めて「書ける」とあった。それはどうかと思う。特に最近よく使われるようになったLL言語なんてのは、内部を隠すように設計されていて、どのコンピュータ・どの環境でもその違いを見せないようにしているのにマシン語が必要なんて矛盾している。

もちろん、マシン語はハードウェアを知る上でも習得しておいたほうが良いが、わざわざ強制してマシン語を覚えさせることはないなぁ。下手するとマシン語を変に良く知っているせいで、それが災いすることもある。

例えば、以前あるプログラミング雑誌でC++の記事を読んだことがあるのだが、その記事によると、プログラムからアセンブリ言語を予想できなければいけないと書いてあり、実際にその記事にはプログラムコードが示されるたびに、それをアセンブリ言語に変換したものが載っていた。で、そのコードをみて、こういう動作をするのでこのように書くこともできると、規格外の書き方が記載されていたのだ。確かに、そのコンピュータのその環境ではうまく動くかもしれないが、それは標準規格では動作を保障していない。「正しい」プログラムは「正しい」書き方をしたものでなければならない。その場だけで通用する書き方ではだめなのだ。

マシン語至上主義は「良くない」と思うが、自分自身はマシン語を覚えていて良かったと思う。コンピュータを使い始めたころはプログラムでも組まなくてはあまり使い道がなかったのもあって、マシン語・アセンブリ言語でいろいろ遊んでみた。ハンドアセンブルしていたことが懐かしい。マシン語は覚えるのは簡単だけど、それで複雑な仕事をさせるのはかなり大変。そういえば、ゲーム雑誌ログインには毎回ゲームのマシン語ダンプリストが載っていたなぁ。今じゃCD付けて終わりってところだろうけど、自分で打ち込んだ苦労があるからか、そこに載っていたゲームは面白いものが多かったように思う。確かあの木屋さんが作ったドラゴンスレーヤーのダンプリストもあったはず。

あまり関係ないけど、以前、知り合いで計算速度ではFORTRANが一番速いって言っていたのを思い出した。FORTRANが吐き出したコードはすべてマシン語で書くことができて、(作成の困難さを度外視すれば)マシン語で書かれたものが一番速いか最悪で同じ速度って言ってもなかなか理解してもらえなかった。そういや、以前のg77 FORTRANコンパイラはひどく性能が悪かったなぁ。

続きを読む...

似非科学

このブログ記事をはてなブックマークに追加

スラッシュドットお茶の水大、「ニセ科学批判」がらみで提訴されるという記事が載っていた。ホント、世の中、似非科学に騙される人が多いこと、多いこと。マスメディアに踊らされた挙句、まったく効果がないものを買わされる。マイナスイオン、酸素水などなど。みんな有難がって買っていく。今の世の中、少し調べれは分かることなのに…。また、一般教養レベルの科学の知識があれば回避できることも多い。権威(たとえばどこそこ大学の教授など)が言うことには皆弱いのか。

ゲーム脳なんてのもあったな。これ、提唱者の実験結果にかなりの恣意性が入っていることは有名だ。ちゃんとしたところでゲームにおける影響を調査したが、結局、有意な悪影響は認められなかったそうだ。自分だけならこんなくだらないことに引っかかったりすることは無いのだが、驚いたことに自分の子供を預けている保育園担当の医師がゲーム脳になるからゲームはやるなと父母に力説していた。自分が子供のころ、海で陽に焼くと冬に風邪を引かないとか(実際には免疫力が下がって病気になりやすい)、歯を磨くときは歯ブラシを縦にして磨くほうが良いとか(実は歯茎を傷めやすい)、これらと同じように、将来になって今の子供たちが、ゲーム脳なんてでたらめなことが流行っていたなぁ、なんてことを言うのが今から目に浮かぶ。

カール・セーガンの「人はなぜエセ科学に騙されるのか」は随分前に読んだのだが、かなり役に立つことが書かれているので一読したほうがいい。…と思ったらもう絶版なのかな。いい本なんだけどなぁ。

続きを読む...

悪徳商法マニアックス

このブログ記事をはてなブックマークに追加

世の中には様々な詐欺まがいの商売や勧誘が蔓延っている。電話勧誘やspamメールなどは被害を受けない者の方が少ないぐらいだ。そんな悪徳商法について情報提供や解説をしているサイトがある。悪徳商法マニアックスだ。非常に有名なサイトなので知っている人も多いかと思うが、一時期、Google八分に遭い、Googleから検索できなかったことでも知られている。このサイトで紹介されたサイトからクレームが来て、検索対象からはずされたらしい。さらに、ここのサイトにはたくさんの嫌がらせもあるそうだ。憎まれっ子世に憚るというが、悪徳業者には世に憚ってもらっては困る。

多くの人がこのような悪徳業者の餌食となり、被害を蒙っている。こういったサイトなりで啓蒙していくしか被害拡大を食い止める手段は無いかもしれない。

続きを読む...

2007年9月7日金曜日

ポケモンにはまる

このブログ記事をはてなブックマークに追加

しばらく前から子供がポケモンにはまっていて、先日は映画にも行かされた。ポケモンなんて子供のお遊びぐらいにしか思っておらず、ほとんど興味を持ったことは無かったのだが、映画を観たり、ゲームをプレイしたりするうちに、これはこれで面白いかもと思うようになった。

基本的には、世界にうろうろしている生き物であるポケモンを捕まえてペットにする。そしてそのポケモンをさらにほかのポケモンと戦わせて捕まえる。戦えば戦うほど強くなるし、一緒にいればいるほどなついてくる。また、ポケモンは500種類近くいるので切手集めのような収集モノにも通じる。通信機能を使えば友達同士で戦ったり、ポケモンを交換したり、協力しあうこともできる。ポケモンのゲームデザイナーによると、子供のころにカブトムシやクワガタムシなどを捕まえることが面白かったからそれを何とかゲームにできないかと考えて作ったらしい。なるほど、だからポケモンは草むらから飛び出し、木に甘い蜜を塗ると寄ってくるのか。

というわけで年甲斐も無くはまってみた。いろいろと細かなギミックも周到に用意され、その一つとして、木の実を土に蒔き、自分で肥料や水をやって育てたりもできる。それも実時間をもとに成長するので、水遣りなどを忘れると木になる実の数が減ったりする。実を土に植えてから成長して実が再び実るまでの時間は、実の種類によって異なるのだが、長いもので4日ほどもかかる。

子供のおもちゃだと思って侮ってはならない。

続きを読む...

アンチハッカー法

このブログ記事をはてなブックマークに追加

INTERNET Watchによるとドイツで「アンチハッカー法」が先月施行されたらしい。ネット上での攻撃ツールの作成はもちろん、所持もできなくなるとのこと。

これで何が困るかと云うと、セキュリティのチェックなどもできなくなる点。攻撃ツールでセキュリティのチェックは普通に行われているが、そのツールが使えなくなってしまうのだ。そのため、この法律が施行される前からセキュリティ関連の技術者が施行反対のデモ活動が行われていた。

セキュリティの確認が難しくなるドイツのネットが世界各国のクラッカーから狙われたりして。

続きを読む...

2007年9月4日火曜日

Python 3000

このブログ記事をはてなブックマークに追加

先日、Python 3000のアルファ版が公開された。今までのPythonと基本的に互換性が取られていないのでまだ試してないが、Python 2.6のソースコードを変換するユーティリティは出るらしい。詳しくはPEP 3000あたりを参照のこと。

以前のバージョンと比べると、printなどに変更が入り、クラスについてはもう少し良くなるようだ。まあ、リリース予定の一年後に使うかどうかは決めるつもり。開発版では仕事に使うのはちょっと難しそうだし。

続きを読む...

2007年8月31日金曜日

世界陸上2007大阪

このブログ記事をはてなブックマークに追加

毎日新聞によると手配ミスでエリトリアの選手がホテルの床で一夜を過ごしたらしい。酷い話だ。実は話はこれだけに留まらず、ボランティアや職員のシフトが主な原因でいろいろと問題が出ているらしい。詳しいことはGIGAZINEの「世界陸上」の真の裏舞台、運営がむちゃくちゃで現場は大混乱がまとまっていて分かりやすい。

そにれしても知れば知るほど酷い話だ。個々の事例は良くあるお役所主義やだめな会社・できない社員ということでありふれたものだけど、舞台が世界陸上だとそれがそのまま日本の評価に繋がることになる。実際にIAAF(国際陸上競技連盟)から運営が酷いということで怒られているらしい。日本人として恥ずかしい。運営は大阪で、日本だけの話だったら「大阪つかえねぇ」で済む(?)ところだけど、世界を相手にした仕事なんだからホント頼みますよ。それに、志を持って駆けつけたボランティアの方もかわいそうだ。

続きを読む...

2007年8月23日木曜日

Windows PowerShell

このブログ記事をはてなブックマークに追加

Windows PowerShellとは、Microsoft Windowsで利用できる強力なコマンドラインシェルおよびスクリプト言語のことだ。これまでのWindowsでは貧弱なコマンドプロンプトしか実装されていなかったので、コマンドラインで一括処理などをさせることが難しかった。それをUnixの同等以上の性能のシェルを開発することでその問題を解決した。

たとえば、Unix上で、

% find . -name "*.txt" -print

という処理は、

> Get-ChildItem . -include *.txt -recurse

とする。また、以下のスクリプトを、たとえば find.ps1 とファイルに保存すれば、

Param([String]$root, [String]$filename) Get-ChildItem $root -include $filename -recurse

> ./find.ps1 . *.txt

と実行すれば同じ結果を得ることができる。さらに、

> Get-WMIObject Win32_LogicalDisk -filter "DriveType = 3" | Select-Object DeviceID | ForEach-Object {Get-Childitem ($_.DeviceID + "\") -include *.txt -recurse}

とすれば、存在するすべてのハードディスク上のテキストファイルを探すことができる。PowerShell上ではすべてがオブジェクトとして処理される。

ただし、PowerShellはWindowsに最初から入っているわけではないので、Microsoftの公式サイトからダウンロードしてこなくてはならない。

Windows PowerShellでのスクリプティング

これでようやくWindowsでもまともな処理ができるかもしれない。

続きを読む...

2007年8月22日水曜日

NANACA†CRASH!!

このブログ記事をはてなブックマークに追加

NANACA†CRASH!!

Flashゲームなんだけど、くだらなくて良いです。くだらないと言ってもFlashの完成度はとても高い。よく考えつくなぁ。因みに元ネタはCROSS†CHANNELという18禁ゲームらしい。

続きを読む...

2007年8月16日木曜日

ActionScript 3.0を使ってみた - ShootNumbers

このブログ記事をはてなブックマークに追加

ActionScript 3.0によるシンプルなFlashゲーム、ShootNumbersを作ってみた。落ちてくる数字をすばやくマウスクリックで消していく。消した数字がそのまま得点になる。BGMが終了するまでにできるだけ多くの得点を挙げることが目的だ。因みにFlashを利用しているが制作するために必要なツールはすべて無料だ。

今年になってAdobe Flash CS3 Professionalがリリースされ、搭載されているプログラミング言語ActionScriptがバージョン3.0になった(Flexでは昨年)。前々からFlashには興味はあったのだが、如何せん価格が高い。アドビストアでは、通常価格で88,000円、アカデミック価格で33,600円もする。1ヶ月だけ使えるお試し版もあるが、ある程度時間が取れるときでないとほとんど使わずじまいになる可能性が高い。そこで、Flex 2 SDKを利用してみることにした。これはFlex Builder 2のコア部分のみを利用でき、オーサリングツールなどはついておらず、純粋にActionScript 3.0(およびMXML)のコンパイルのみが行える。それでもずっと無料で使えるのでActionScript 3.0を試しに使ってみるには最適だろう。

ActionScriptを使うのはほぼ初めてなので、まず、FlashリソースFlexドキュメンテーションなどを読み漁ってみた。C++やJavaなどのオブジェクト指向プログラム言語をある程度理解していれば問題なさそうだ。実際、すぐにプログラムを書き始めても何とかなった。マニュアルを読みつつ作ったShootNumbersも一日もかからず仕上げられたし。因みに、PDFによるドキュメントではすべてを網羅したリファレンス的なマニュアルは用意されていないようだったので、ウェブによるActionScript 3.0 コンポーネントリファレンスガイドも多用した。

ShootNumbersを作った際に感じたのは、マルチメディア系の素材の扱いが非常に楽ということだ。サウンド、画像、動画、等々。また、タイマーやキーボード・マウスなどの処理はすべてイベントドリブン方式だ。今回のプログラムでは、主にサウンドとタイマーについてActionScript 3.0の威力を実感した。

ActionScript 3.0は、マルチメディア系の作品、特にゲームなどを作るのにはかなり強力な言語であることがわかった。こんなに手軽に作れるようになるとは、いい時代になったものだ。…とは言いつつも、もっと本格的に作成するのにFlash CS3も欲しくなるなぁ。

ShootNumbersの遊び方

適当なキーを押せばゲームが始まる。BGMが終わるまでの間にできるだけ多くの落ちてくる数字をクリック。うまくクリックできればその数字が消えて得点なる。だんだんと数字は小さくなり、落ちる速度が速くなっていくが、その分、クリックしたときにもらえる得点は高くなる。本作品では効果音gで配布しているサウンドをアレンジして利用させてもらった。※音が出るので注意!


続きを読む...

2007年8月9日木曜日

マルチページTIFFを分割する

このブログ記事をはてなブックマークに追加

TIFFフォーマットは一つのファイルに複数の画像を保存できるマルチページTIFFをサポートしている。これはこれでなかなか便利であると思うが、それを表示させたり、利用したりするときに困ることがよくある。そこで、ここでは簡単にマルチページTIFF画像ファイルを分割してJPEGやPNGで保存する方法を以下に書いてみる。

まあ、普通に考えたらImageMagickのconvertコマンドで一発なんだけど、それだと面白くないので、ここではPython+PILを使った方法を使ってみる。因みに、ImageMagickでJPEGファイルを作成する場合は以下のように実行すれば良い。

convert file.tif file_%04d.jpg

次に、Python+PILのコードを以下に示す。

import sys, os, Image filename = sys.argv[1] im = Image.open(filename) try: count = 0 while 1: im.seek(count) im.save(os.path.splitext(filename)[0] + "_%04d" % count + ".jpg") count += 1 except EOFError: pass
これを適当なファイル名、たとえばsplit_tiff.pyとして保存して、

split_tiff.py file.tif

のように実行すれば良い。file_0000.jpg, file_0001.jpg, file_0002.jpg, ...のように連番で出力してくれる。簡単。因みにconvertもPythonコードも拡張子 .jpg を .png に変更すればPNG画像ファイルに変換してくれる。あと、デカイTIFFファイルを扱う場合、いったん全部読み込んで処理するconvertよりもPythonコードの方が速いみたい。

続きを読む...

2007年8月8日水曜日

ウツボカズラを育ててみる

このブログ記事をはてなブックマークに追加

近所の花屋でウツボカズラが売っていたので思わず購入した。昔から食虫植物に興味を持っていて、前々からウツボカズラが欲しかったのだ。買ったやつは単にウツボカズラとしか書かれていなかったが、調べてみると和名がヒョウタンウツボカズラ、学名がNepenthes alataらしい。

ところで、これまでに2回ほどハエトリグサを育ててみたのだが、うまく育たなかった。食虫植物は育てることが難しいことでも有名で、ある程度の湿度と温度がなくてはならない。また、下手に肥料などをやってしまうと根から腐ってしまうこともある。もっとも、今回のN. alataは比較的育てるのが容易ではあるようだ。

今はウェブでいろいろと調べることができるのでそれでも楽になったと思う。さてさて、ちゃんと育ってくれるかな。

続きを読む...

2007年8月7日火曜日

その赤ん坊は将来、何の役に立つ?

このブログ記事をはてなブックマークに追加

電磁誘導の実験中のファラデーの名言。この実験に対して聴衆の一人が「これが何の役に立つんだ」と言ったことに対し、このように答えたという。

基礎研究は近視眼的な見方では、その価値を計ることはできない。今は何に役立つか分からないことでも、後でとても役に立つことは多々ある。そしてその力は非常に大きいことが多い。だからこそ、基礎研究の規模は国力をも表している。

物事を良く知り遠くまで見通すことができる人は基礎研究の重要性を知っているが、そうでない人は役に立つか分からないからいらないという。自分が今いる便利な世の中がそういう基礎研究があって初めて存在できるというのにね。

続きを読む...

2007年8月6日月曜日

ドコモPHSの番号がウィルコムで利用可能に

このブログ記事をはてなブックマークに追加

ITmediaによると、ドコモのPHS、同一番号でウィルコム引き継ぎ可能になるとのこと。まあ、乗り換えたい人にとっては朗報だろうけど、発表するのが遅すぎる気が。

続きを読む...

King's Court

このブログ記事をはてなブックマークに追加

King's CourtはUNOに似たカードゲームである。自分が学生時代に購入して、友人たちとカードがぼろぼろになるまでプレイしたものだ。UNOよりもカードの種類が多く、戦略性もあり、洒落たデザインで、かなりに気に入っていたのだが、今はもう絶版らしい。

まだ実家にあるはずなので、久々にプレイしたくなるときもあるが、周りに一緒にプレイしてくれる人がいないのが問題だ…。

続きを読む...

2007年8月4日土曜日

B-CAS

このブログ記事をはてなブックマークに追加

B-CASなんて使っている時点で地上デジタル放送の普及なんて難しいんじゃないかな。

最近、地上デジタルチューナーは5,000円以下で商品化されるべきという情報通信審議会からの要請があったが、B-CAS使っている現状じゃそれも難しいし、大体、今まで視聴できていた番組に対して新たに5,000円もの金なんて払えない・払いたくないという人も多いと思う。

利用者のことを考えずに利権だけを求める今の放送業界やそのシステムじゃ、利用者離れと不正利用の横行を促すだけになるだろうね。本当、正直者と無知な者がバカを見るだけ。

自分の場合だったら、そんなTV番組なんて見ないし、Webによる動画で十分かな。HDコンテンツを観たいならBDあたりを観るだろうし。ところで、BDはアメリカと日本のリージョンが一緒なのが良いね。HD DVDなんてリージョンフリーだし。

続きを読む...

2007年7月30日月曜日

LittleBigPlanet

このブログ記事をはてなブックマークに追加

LittleBigPlanetは一言で説明するには難しい新ジャンルのコミュニティベースのクリエイティブアクションアドベンチャーゲームだ。最初はそれほど興味は無かったが、世界中の人たちと自分の分身である人形を操って協力しながらプレイする様は見ているだけで楽しくなる。

結構前から知られているタイトルだがまだ発売日も決まっていないので、のんびり待つことにしよう。PS3のタイトルが本格的に揃いだすのは来年になるだろうな。

以下、LittleBigPlanetのトレイラー。




続きを読む...

2007年7月26日木曜日

一家に1枚周期表

このブログ記事をはてなブックマークに追加

一家に1枚周期表第3版について (文部科学省)

元素それぞれにその用途や写真などを載せてあり、見てるだけで楽しい周期表。教科書に載っているような味気ないものよりもこちらのほうが断然良い。

続きを読む...

diNovo Edgeキーボード

このブログ記事をはてなブックマークに追加

diNovo Edge™キーボード(DN-1000)が日本でも8月10日に出るらしい。充電式Bluetoothワイアレスキーボードだ。ガラスのような質感で外観もスタイリッシュでよい感じ。パナソニックのLet's noteでお馴染みのぐるぐるスクロールも搭載している。価格は24,800円と、現在、自宅でも職場でもメインで使っているHHKB Professionalとほぼ同じ値段。

リビングにTV兼用のPCを購入したのでそこで使いたいが、子供たちも利用するのでちょっと考えてしまうなぁ。すぐに壊されてしまいそうだ…。

続きを読む...

2007年7月25日水曜日

C99におけるrestrictポインタの存在意義

このブログ記事をはてなブックマークに追加

ベクトル型スーパーコンピュータでは必要不可欠。ポインタをrestrictで修飾することで、そのポインタは別名を持たない、つまり、どの変数からも参照されないことが保証される。なので、ベクトル・プロセッサやSIMD演算での最適化を効率よく行うことができる。因みに、C99以前でも拡張仕様でrestrictは使われていた。

尚、restrictについては、プログラミング言語 C の新機能 - restrictポインタでの説明が詳しい。

続きを読む...

2007年7月23日月曜日

色が濃い方のタイルはどちら?

このブログ記事をはてなブックマークに追加


上の図のAのタイルとBのタイルでどちらの色の方が濃い?

答えは、どちらも同じ濃さ。疑うのであれば、画像ファイルの問題のタイルだけ切り出して比べてみると良い。人間の目は信用ならないという話でした。

MITのEdward H. Adelson教授Checkershadow Illusionから。

続きを読む...

echochrome

このブログ記事をはてなブックマークに追加

エッシャーの騙し絵の中を歩く人形を誘導するゲーム。まずはトレイラーを見て欲しい。これは面白そう。見ているだけでも楽しいね。OLE Coordinate Systemってのを使っているらしいんだけど、その解説サイトからPC用のお試し版がダウンロードできる。ほかに、ウェブサイト上でJavaを利用したデモプレイもできる。PS3, PSP用。


続きを読む...

2007年7月21日土曜日

ソースコードにコメント書かなくなったかも…

このブログ記事をはてなブックマークに追加

以前に比べてプログラムのソースコードにコメント書くことが少なくなった。まあ、大抵は自分だけが見るものだから他人に迷惑はかからないと思うのだけど、改めてそのことについて考えてみた。

確かに以前はそれなりにコメントを入れていたけど、それはそのコードを数ヶ月後に見たとき、何をしているのかわからなくなっていたからだ。しかし、今はコメントが書かれていなくても以前作ったコードを見て何をしているのかわかる。それは、クラス名、関数名、変数名を付けるときかなり慎重に決めるようになったのが大きいと思う。その関数や変数を見れば、大体何をしているかわかるのだ。関数や変数を見れば何をしているかわかるのに、わざわざコメントを付けるのもなぁ、と考えて付けなくなってきたのだと思う。

後は、クラスを使ったオブジェクト指向なプログラミングのおかげだろう。それぞれのクラスが独立しているおかげで、互いの依存関係をほとんど無視できるから、そのクラスや関数の動作も理解しやすいのだ。デザインパターンに沿っていれば、全体の動作はすぐに頭に浮かぶ。

そのようなわけで、コメントが減った。まあ、共同作業ではそうも言っていられないのだろうけど。因みに自分がよく使うプログラミング言語はC++とPythonだ。

続きを読む...

なぜこの方程式は解けないか? - 天才数学者が見出した「シンメトリー」の秘密

このブログ記事をはてなブックマークに追加

なぜこの方程式は解けないか?―天才数学者が見出した「シンメトリー」の秘密を読んだ。群論の基礎を築いたエヴァリスト・ガロアの波乱万丈の人生を中心に、群論にかかわる様々な出来事やそのすばらしい応用をわかりやすい例をとって語っている。軽く読める数学史と言ったところ。軽く読めるからといって内容が軽薄というわけではなく、できるだけ多くの専門外の人々にわかるように、数学、物理学、生物学、果ては音楽まで関わってくる群論の凄さと面白さを伝えている。

正直に言うと、自分は昔からあまり群論は好きではなかった。しかし、これを読んだあとは群論に強い興味を抱いた。もう少し群論について学んでみようかなぁ。やはり、好きこそ物の上手なれ、だ。



続きを読む...

2007年7月20日金曜日

WS011SHを使う際にまずやっておくこと

このブログ記事をはてなブックマークに追加

Advanced/W-ZERO3[es] WS011SHが7月19日に発売された。事前に予約しておいたこともあり、当日に問題なく購入できた。今まで利用していた無印W-ZERO3に比べ、画面解像度が640×480から800×480になり、幅50mm×高さ135mm×厚さ17.9mmと大幅に小さくなって軽くなり、CPUの性能が上がり、USBホスト機能が搭載され、メモリが倍に増えた。

性能はこのように大幅に上昇したわけだが、使う前にいくつか気をつけるべき点がある。まず、このWS011SHにはソフトキーが無い。これは非常に不便だ。そこで、スタートメニューから[設定]-[ボタン]-[ソフトキー]を選んで、ソフトキーを使えるようにする。この設定はちょっとわかりにくかったので、もう少し解りやすくしてもいいのではないかな。個人的にはデフォルトでもいいくらいだ。電話掛けるときとかメール書くときとかソフトキーを使いまくる自分としては、もしこの設定が無かったらWS011SHの個人的評価は限りなく下がっていたと思う。

次に、電波状態ランプをOFFにする。無印W-ZERO3でもそうだったのだが、これで電池の持ちがかなり変わるので必ずやっておくこと。スタートメニューから[設定]-[パワーマネージメント]で設定できる。

そして、microSDを用意する。いろいろとデータは溜まるもので、容量は多いに越したことは無い。自分はWS011SHを受け取りに行った際に、近場で購入した。2GBで約3,200円だった。安くなったものだ。そうそう、購入と言えば、ストラップも必要だ。今回はタッチペンが内蔵型ではなく、ストラップにつけて使うようになっているので、もし、適当なストラップを持っていなければ用意しておく必要がある。

後は、音やマナーモードの設定を変更したり、文字の大きさやToday画面を変更したり、メールやActiveSyncの設定を行ってまずは完了。使い勝手はなかなか良いかな。もう少し慣れればもっと使いやすくなると思う。Xcrawlキーも初めのうちは動作がぎこちなく使い勝手が悪いんじゃないかと思ったが、使っているうちにこなれてきてうまく動作するようになった。

後は、無印のときでもそうだったように、便利なアプリケーションをインストールすればもっと良くなるだろうな。そういや、普通の操作では着信メロディにMP3を利用できないが、レジストリをいじれば聴けるようになるらしい。自分はほとんどの場所でマナーモードにしているのであまり関係ないけど。

続きを読む...

2007年7月14日土曜日

新型PSP

このブログ記事をはてなブックマークに追加

軽量・薄型に進化し、ビデオ出力機能を標準搭載した 新型 PSP®「プレイステーション・ポータブル」(PSP-2000) カラーバリエーションとともに9月発売決定

新型のPSPが9月に発売らしい。これは欲しいかも。今までのPSPからの変更点は、重さが2/3、厚さが4/5、UMD読み込み短縮、外部ディスプレイへの出力などで、利用してるFull HDディスプレイにD端子で接続できるのは嬉しい。

続きを読む...

2007年7月13日金曜日

matplotlib: 3次元プロットの雛形

このブログ記事をはてなブックマークに追加

matplotlibで3次元プロットする際の雛形を示す。たったこれだけ。

from pylab import * import matplotlib.axes3d as p3 x = [2.36, 1.33, 1.10, 1.33, 2.36] y = [10.0, 8.00, 6.00, 4.00, 2.00] z = [1.10, 1.20, 1.44, 2.07, 4.30] ax = p3.Axes3D(figure()) ax.plot3D(x, y, z, color=(0.0, 0.0, 1,0)) ax.scatter3D(x, y, z, color=(1.0, 0.0, 0.0), marker="o", s=10) show()

以下はもう少しコメントと装飾を加えたソースコード。

from pylab import * import matplotlib.axes3d as p3 # データ. x = [2.36, 1.33, 1.10, 1.33, 2.36] y = [10.0, 8.00, 6.00, 4.00, 2.00] z = [1.10, 1.20, 1.44, 2.07, 4.30] ax = p3.Axes3D(figure()) # ラベル. ax.set_xlabel("X") ax.set_ylabel("Y") ax.set_zlabel("Z") # 青線を引く. ax.plot3D(x, y, z, color=(0.0, 0.0, 1,0)) # サイズ10の赤丸で表示. ax.scatter3D(x, y, z, color=(1.0, 0.0, 0.0), marker="o", s=10) # 表示範囲. ax.set_xlim(1.0, 3.0) ax.set_ylim(1.0, 12.0) ax.set_zlim(1.0, 5.0) # DPI=100でPNGファイル(plot3d.png)を作成. savefig("plot3d.png", dpi=100) # 画面に表示. show()

続きを読む...

2007年7月11日水曜日

37%ルール

このブログ記事をはてなブックマークに追加

たくさんある中でより良いものを選びたい場合、最初の 37% まで確認した後、それまでよりも良いものに出会った時点でそれ採用するのが確率的にもっとも成功率が高い。群論から。因みに 37% は 1/e に近い数だ。

続きを読む...

2007年7月7日土曜日

銀行で暗証番号を変更しようとしたときのこと

このブログ記事をはてなブックマークに追加

まだ、ATMでキャッシュカードの暗証番号が変更できなかったころのこと。自分が利用していたキャッシュカードの暗証番号が推測されやすいものだと思ったので、銀行に変更を申し出た。ところが変更するのに手数料として1,500円かかるとのこと。よっぽど解約して新規に作成してやろうかと思ったが(それなら無料)、矛盾したシステムだと思いながらも、その場は結局変更せずに済ました。

それから半年もせずにATMで暗証番号を変更できるようになった。すぐに変更を済ませたことは言うまでもない。

銀行の自分本位な、もしくは何も考えていない体質が良くわかる出来事だった。

続きを読む...

2007年7月6日金曜日

セカンドライフとPS3のHome

このブログ記事をはてなブックマークに追加

最初に言っておくが、セカンドライフ(Second Life)とPS3のHomeは別物だ。どちらも3D空間をアバター(プレイヤーの操作するキャラクター)が自由に動き回れる。しかし、ユーザーコンテンツを主体とするセカンドライフに対して、PS3のコミュニティの場を主眼としてるHomeでは根本的な存在意義が違うのだ。

セカンドライフではユーザーが自由に「モノ」を作ることができる。たとえば、野球のボールでも、公園の滑り台でも、天を突くような高層ビルでも作ることができる。それは形だけではなく動作などもプログラムを組むことにより実現できる。また、そうしたものをほかのユーザーに売ることもできる。さらに売った金は現実の金に換金できるのだ。つまり、セカンドライフはそれ自体で完結した世界を持つコンテンツなのだ。

一方、PS3のHomeではどうか。発表された資料によれば、まず、ユーザーがコンテンツを自由に作成できない。また、Homeでユーザーが金を稼ぐこともできない。そして、コミュニティの場を提供するというコンセプトからHome自体が独立したコンテンツとはならないだろう。

では、セカンドライフはすべてにおいてHomeより秀でているのだろうか。それは違うと思う。

まず、第一にグラフィックはHomeの方が格段に良い。実行する環境の性能の違いというわけではなく、ソフトウェア側のデザインの問題である。最初に選べるアバターがあんなに酷いはわざとではないかと勘ぐってしまうほどだ。ユーザーが作成したものはかなり良いものもあるが、それらは購入しなければならない。腕に自信のあるユーザーは自分で作成することもできる。それでも、大抵の人は最初に選べるものよりも良いものはなかなか作れないだろう。

まあ、アバターはどうにかできるとしても、セカンドライフ内の環境を変更することは難しい。ここでいう環境とはプログラム動作のことだ。ネットワーク回りの出来の良し悪しに関わるのか、周りの建物や木などの「モノ」が一つ一つ描画されるのが見て取れるほど表示が遅い。さらに、たくさんの人が集まる場所に行くと止まったかと思うほど動きが遅くなる。これは、プレイアビリティを著しく低下させている。自分は1999年に発売されたEverQuest(EverQuest2ではない)をかれこれ8年もプレイしているが、この古いネットゲームよりもかなり見劣りするこの環境に早々に嫌気がさしてしまった。LSLプログラミングには興味があったのだが環境がこれではちょっと…。

ほかにもセカンドライフの多くのコンテンツが性的コンテンツであることにも閉口してしまうし、商売して儲かるという話も富を稼いだのは最初に土地の売買をしたごく一部の人たちだけで、大抵の人はそんなに儲かることは無い。儲けたければ現実世界の何倍もの苦労と努力が必要じゃないかな。それどころか、まともに遊ぼうと思うのなら金無しでは何もやっていけないのがセカンドライフだ。現実世界と同じように商売する自由はあるし、現実世界と同じように何かするには金がかかる。これらの点については日本では特に知られていない気がする。

Homeではさすがにグラフィックには力を入れていると見えて、アバターの外見は格段に良くなっている。日本人には合わないのではないかという話も聞くが、自分が見た限りではグラフィックはかなり良い。少なくともセカンドライフよりは優れていると思う。また、コミュニティの強化を狙ったものだけあって、PS3のゲームスコアでトロフィーが貰えたり、それをHome内にある自分の家に飾り、Home内の友人を招待して見せたりすることもできる。ほかに、ビリヤードやボーリングなどを複数の友人たちと一緒にプレイしたりもできるようだ。自分としてはゲームの楽しさとグラフィックは別物だと考えているが、見た目がプレイする人々に対して求心力を持っていることは否めない。

どちらにしろ、プレイする人々が居つきさえすればそれは成功である。セカンドライフは既にサービスインしていて、多くのプレイヤーを獲得したと謳っているが、日本ではセカンドライフを知っている人のうち、実際にプレイしている人は1%に満たないとの報告もある。PS3のHomeは今秋からサービスされるとのことだが、どのように動くのか興味深い。

追伸: splumeとmeet-meは見なかったことにする。正直コンセプトがはっきりしない。和製セカンドライフのつもりなら普通にセカンドライフを選びたい。

セカンドライフ トレイラー


PS3 Home トレイラー

続きを読む...

2007年7月5日木曜日

SciPyの使い方: 行列演算

このブログ記事をはてなブックマークに追加

PythonのモジュールであるSciPyを使った行列演算を示す。scipy.linalgではBLASやLAPACKを利用しているので、高速な演算が可能になっている。

>>> from scipy import * >>> a = [[1, 3, 5], [2, 5, 1], [2, 3, 8]] # リスト >>> A = mat(a) # リスト→行列 >>> A.tolist() # 行列→リスト [[1, 3, 5], [2, 5, 1], [2, 3, 8]] >>> A # 行列 matrix([[1, 3, 5], [2, 5, 1], [2, 3, 8]])

>>> A.I # 逆行列 matrix([[-1.48, 0.36, 0.88], [ 0.56, 0.08, -0.36], [ 0.16, -0.12, 0.04]]) >>> A.H # エルミート行列 matrix([[1, 2, 2], [3, 5, 3], [5, 1, 8]]) >>> A.T # 転置行列 matrix([[1, 2, 2], [3, 5, 3], [5, 1, 8]]) >>> A.A # 行列→配列 array([[1, 3, 5], [2, 5, 1], [2, 3, 8]]) >>> A.A1 # 行列→1次元配列 array([1, 3, 5, 2, 5, 1, 2, 3, 8]) >>> A[1] # 2番目の行を取り出す matrix([[2, 5, 1]]) >>> A.T[1] # 2番目の列を取り出す matrix([[3, 5, 3]]) >>> A.conj() # 共役行列 matrix([[1, 3, 5], [2, 5, 1], [2, 3, 8]]) >>> A.diagonal() # 対角化 matrix([[1, 5, 8]]) >>> linalg.det(A) # 行列式 -25.000000000000004 >>> linalg.eig(A) # 固有値と固有ベクトル (array([ 10.5540456 +0.j, -0.5873064 +0.j, 4.03326081+0.j]), array([[-0.51686204, -0.94195144, 0.11527992], [-0.32845853, 0.31778071, -0.81936883], [-0.79054957, 0.10836468, 0.56155611]])) >>> linalg.norm(A) # 正規化 11.916375287812984 >>> linalg.lu(A) # LU分解 (array([[ 0., 1., 0.], [ 0., 0., 1.], [ 1., 0., 0.]]), array([[ 1. , 0. , 0. ], [ 1. , 1. , 0. ], [ 0.5 , -0.25, 1. ]]), array([[ 2. , 5. , 1. ], [ 0. , -2. , 7. ], [ 0. , 0. , 6.25]])) >>> linalg.qr(A) # QR分解 (array([[-0.33333333, -0.52297636, -0.78446454], [-0.66666667, -0.45760432, 0.58834841], [-0.66666667, 0.7190925 , -0.19611614]]), array([[-3. , -6.33333333, -7.66666667], [ 0. , -1.69967317, 2.68025385], [ 0. , 0. , -4.90290338]])) # 四則演算 >>> A + A matrix([[ 2, 6, 10], [ 4, 10, 2], [ 4, 6, 16]]) >>> A - A matrix([[0, 0, 0], [0, 0, 0], [0, 0, 0]]) >>> A * A matrix([[17, 33, 48], [14, 34, 23], [24, 45, 77]]) >>> A / A matrix([[1, 1, 1], [1, 1, 1], [1, 1, 1]]) >>> A * A.I matrix([[ 1.00000000e+00, 0.00000000e+00, 8.32667268e-17], [ -1.66533454e-16, 1.00000000e+00, 1.94289029e-16], [ -4.44089210e-16, 1.11022302e-16, 1.00000000e+00]])

続きを読む...

虚数のテトレーション

このブログ記事をはてなブックマークに追加

虚数iの「ii乗」乗はテトレーション(tetration)として以下のように表すことができる。

3i = iii

で次のような計算を行ってみた。

i = 0.438282936727…+0.360592471871…i

実数部と虚数部は収束してそれぞれ0.43828…と0.36059…となる。

これって何か意味がある数なのか?

続きを読む...

オイラーの等式を実際に計算してみる

このブログ記事をはてなブックマークに追加

eiπ + 1 = 0 をPythonで実際に計算してみる。証明などはWikipediaあたりでどうぞ。

>>> from math import * >>> exp(1)**(1j*pi)+1 1.2246063538223773e-016j

という訳で、1.22×10-16i という極小の虚数が出てきたが、これは計算誤差ということでオイラーの等式は正しく計算されることがわかった。

ついでにGoogleでも計算してみた。

続きを読む...

人類の至宝 - オイラーの等式

このブログ記事をはてなブックマークに追加

eiπ + 1 = 0

自然対数の底と虚数単位と円周率と1と0だけが入ったこの式が、ほとんどどんなものよりも美しく見えるのは自分だけではないはず。凄いなぁ。

続きを読む...

2007年7月4日水曜日

iGoogleのテーマを「スイートドリーム」にして午前3時14分になると…

このブログ記事をはてなブックマークに追加

iGoogleはテーマを選ぶことでサイトの見た目を変えることができる。自分は時刻によって背景や明るさの変わる「スイートドリーム」が気に入っている。

ところで先ほど気がついたのだが、午前3時14分になると、夜空に円周率πの文字が浮かび上がることを発見した。こういうちょっとした洒落は嬉しくなるね。

続きを読む...

C++の規格書

このブログ記事をはてなブックマークに追加

CD2とはSecond Committee Draft(修正された2度目の委員会での草案)のこと。
ftp://ftp.research.att.com/dist/c++std/WP/CD2/
ここからPDFファイルを取ってこられる。無料だけど、草案なので実際の規格と違うことが多々あり。

FDISとはFinal Draft International Standard(国際標準の最終草案)のこと。ISO/IEC FDIS 14882:1998
http://www.kuzbass.ru/docs/isocpp/
ここでHTML文書を読める。無料で、しかも最終草案だけあってISとあまり違いはない。

ISとはInternational Standard(国際標準)のこと。ISO/IEC 14882:2003 (古いバージョン ISO/IEC 14882:1998)
http://www.plumhall.com/
この辺で買う。もっとも信頼できるけど有料(PDFファイルで$30)。

JTC1/SC22/WG21 - The C++ Standards Committee
http://www.open-std.org/jtc1/sc22/wg21/
http://www.open-std.org/jtc1/sc22/wg21/docs/projects
ISで見つかった間違いなどの修正リストがある。ISと合わせてここを読めば完璧。

因みに、JIS規格のC++はこちら。
JIS X 3014:2003
基本的にISの翻訳かな。17,325円はちょっと高いなぁ。

C++ 11のIS - INCITS/ISO/IEC 14882-2012
INCITS/ISO/IEC 14882-2012 ($30)

C++ 11(0x)の草案 - N3337 - 2012-01-16
Working Draft, Standard for Programming Language C++ (PDF)
JTC1/SC22/WG21 - Papers 2012
C++の最新の標準規格。2011年に制定され、C++0xからC++11となった。規格を読むだけであれば草案で十分だと思われる。制定された年は2011年だが、0xは16進数なので先頭が0で問題ないとのこと。

続きを読む...

2007年7月3日火曜日

マスコミと中立性

このブログ記事をはてなブックマークに追加

「一部報道に関するマイクロソフトの見解」から。

「コンピュータソフトの政府調達において、原則として、マイクロソフト製品(Microsoft(R) Office Word、Microsoft(R) Office Excel(R))を新規購入しない」という報道が一部の報道機関であったそうだ。その報道機関というのはNHKらしいのだが。

この手の話はよくある事だ。マスメディアは偏った報道をする。一部の人間の考えの反映でしかない。

以前asahi.comで、読売ジャイアンツの元オーナーを大変な剣幕で扱き下ろす記事をトップが掲載された。こんなこと書いて平気なのかと思ったが、ほんの数分で記事は消されていた。クラックされたのでなければ、似たようなことが数度あったことからも、元オーナーに大して不満を持っている編集者が内部にいたのだろう。程度の差こそあれ、マスメディアではいつだって同じことが繰り返されている。

マスコミが中立になることは無理だとしても、偏りすぎる報道は避けるべき。もしくは始めから「我社では○○な立場を取っています」、「右派・左派」、「アンチ○○」等々、宣言するとかね。

続きを読む...

Xbox360の故障率は33%らしい

このブログ記事をはてなブックマークに追加

前々から故障率が高いといわれていたXbox360。GIGAZINEで知ったのだけど、ここに来て衝撃の記事が。

DailyTech - Retailers Estimate Xbox 360 Failure Rate High as 33 Percent (販売小売店ではXbox360は33%という高い故障率であると見積もっている)

販売小売店で調べた結果、Xbox 360の故障率は30~33%にも達しているらしい。PS3を含むほかのゲーム機は1%にも満たないとのことなのに。ちゃんとした商品ならそれが普通だと思うけどね。そう言えば、しばらく前にある夫婦が買った7台ものXbox360が1年半で全部壊れたとかいう話を聞いたな。

人には必ず間違いはある、故障はあって当たり前…という精神を持つアメリカ製品でもこれは酷いよなぁ。

続きを読む...

連続した静止画を動画にする方法

このブログ記事をはてなブックマークに追加

mplayerに付属しているmencoderを使う。MPlayer - Downloadからダウンロードできる。Windowsでも、Unixでも利用できる。Windowsではコマンドプロンプト上で使う。詳しくはマニュアルを参照のこと。

連続した複数のPNG画像をフレームレート30でAVI動画ファイル(output.avi)に変換する。

mencoder "mf://*.png" -mf fps=30 -o output.avi -ovc lavc -lavcopts vcodec=msmpeg4v2

ついでに、ImageMagickを利用した画像フォーマットの変換についても載せておく。

mencoderはBMP画像を取り扱えないので、BMP画像を動画にしたい場合は予め変換しておく必要がある。ImageMagickについては、Googleあたりで検索すれば詳しいインストールや扱い方が見つかると思う。

PostScript画像(input.ps)をGIF画像(output.gif)に変換する。

convert input.ps output.gif

複数あるBMP画像を同じ名前でPNG画像にする。拡張子だけが変わる。

mogrify -format png *.bmp

続きを読む...

2007年7月2日月曜日

The Python Challengeのヒント

このブログ記事をはてなブックマークに追加

The Python Challengeのヒント集。とは言っても、自分が使ったプログラムで利用したモジュールを列挙しただけだけど。模範解答のプログラムではないので、不要なモジュールもあるかも。あと、こちらが解いたlevel 22までの問題のみ。

一部、標準以外のモジュールも含まれる。特に、PIL(Image)は必須っぽい。ほかは多分いらないと思う。

自力で解きたい人は、これ以降は読まないように。

level 0 : なし level 1 : string level 2 : string level 3 : re level 4 : urllib, re level 5 : pickle, urllib level 6 : os, re, zipfile level 7 : Image, urllib, StringIO level 8 : bz2 level 9 : Image, ImageDraw level 10: re level 11: Image, ImageDraw, urllib, StringIO level 12: os, Image, ImageFile level 13: xmlrpclib level 14: Image, ImageDraw, urllib, StringIO level 15: calendar level 16: Image, urllib, StringIO level 17: re, urllib, ClientCookie, bz2 level 18: urllib, difflib, Image level 19: email, urllib, wave level 20: urllib2, re, sys level 21: zlib, bz2, sys level 22: sys, os, Image, urllib, StringIO

続きを読む...

2007年7月1日日曜日

FizzBuzz問題

このブログ記事をはてなブックマークに追加

「どうしてプログラマに・・・プログラムが書けないのか?」に、

1から100までの数をプリントするプログラムを書け。ただし3の倍数のときは数の代わりに「Fizz」と、5の倍数のときは「Buzz」とプリントし、3と5両方の倍数の場合には「FizzBuzz」とプリントすること。

という問題が載っていて、一時期話題になった。この記事によると自称上級プログラマが10-15分ほどもかかったそうだ。かなりひどいと思う。まあ、自称だから仕方がないか。

かなり前の話になるが、知り合いがある有名大学の情報系にいた。そこでは、学部の4年になってもまともなプログラムどころかコンピュータさえろくに扱えない学生ばかりだったそうだ。

因みに、こちらはPythonで書いて1分ぐらいだった。大抵のプログラマならば、やり方は一瞬で理解できるだろうから、あとはコーディング速度の問題になる気がする。なので、タイプ量が少ないコンピュータ言語のほうが有利かもしれない。ただ、プログラムの技巧に凝ろうとすると時間がかかるかも。

続きを読む...

The Python Challenge

このブログ記事をはてなブックマークに追加

The Python Challengeをしばらく前にやってみた。これは、Pythonを利用してウェブの画面をヒントに謎を解く。最初は何のことかぜんぜんわからなかったりもするが、いろいろと推理していくうちにこうすれば良いかもとピンとくる。下手なアドベンチャーゲームよりもよほど面白い。かなりやり応えのある難問が揃っているのでぜひ挑戦してみてはどうだろうか。問題をこなしていくうちにPythonの理解力も格段に上がると思う。

現在のところ全部でlevel 33までの問題があり、こちらはlevel 23の問題まで行った。さすがにこの辺になってくると解くのに時間がかかる。

最初のlevel 0の問題については以下にヒントを書いておく。どうしてもわからない場合にだけ見て欲しい。

238と画面に出てるが、これを計算するだけである。あとはURLで示されている"0.html"を"計算の答え.html"に変更すれば良い。

続きを読む...

2007年6月30日土曜日

次世代DVDの威力

このブログ記事をはてなブックマークに追加

Blu-ray Disk(BD)の映画を観たが、今までのDVDとまるきり違う精細さに驚いた。今までは内容の良し悪しが重要で映像など二の次だと考えていた。ある意味そうなのだろうが、映像の表現力がここまで変わってくると断言できなくなる。今までつぶれて見えなかった部分が見えてくる。映像の情報量が違うのだ。

これからは映像のHD化が進み、2011年7月24日には地上アナログTV放送は姿を消す予定だ。そのため、かなりの世帯でHD対応TVを持つことになるだろうし、そうするとDVDは一般の放送よりも劣った映像になってしまう。対価を払って購入したDVDが普段のTV放送よりも画質が劣っていてはさすがに納得いかない。ここで、BDやHD DVDなどの次世代DVDに存在価値が出てくる。次々世代DVDを待つという人もいるが、2011年にそれが普及しているとはとても思えないので、多分、BDかHD DVDはそれなりに認められ、ある程度普及しているのではないだろうか。BDとHD DVDのどちらがより多く普及しているか現段階では断言できないが、今のところBDが一歩リードしているようだ。

もし、Full HD対応TVで次世代DVDプレイヤーを利用できる機会があったら是非観て欲しい。今までの違いに驚くはずだ。(注: BD/HD DVDのソフトの中には劣悪なものも含まれるのでその辺はちゃんと確認して欲しい。)

続きを読む...

たまには独り言

このブログ記事をはてなブックマークに追加

京速コンピュータ…三社連合の複合アーキテクチャは良い。決定が遅すぎるのは悪い。

マスコミ…何であんなにいい加減なことで許されるんだ? 能力の限界か。せめて嘘言うのはやめよう。

Advanced/W-ZERO3[es]…まあまあ良い。多分使う。

次世代ゲーム機…Wiiはまったく興味がなくなってしまった。やりたいゲームも無い。PS3のゲームはかなり期待してる。Xbox360でも良いんだけど、PS3のほうがアーキテクチャが面白かった。やはり、ゲーム機に性能は必須。世間一般のゲームの捉え方と自分の理想との乖離が酷くなってきているようだ。

携帯ゲーム機…PSPは自分のおもちゃになった。NDSは子供のおもちゃになった。

ドリンクの自販機…取り出し口から取り出しにくい。これじゃ駄目だ。失格。そう思っていたら、取り出し口から自動でせり出てくる自販機に出会った。これはすばらしい。合格。

続きを読む...

2007年6月29日金曜日

Civilization Revolution

このブログ記事をはてなブックマークに追加

次世代ゲーム機および携帯ゲーム機用にCivilization Revolutionが作成されるらしい。PC用ゲームのCivilizationを元にしているが、コンシューマゲーム用にいろいろと変更を加えるようだ。PC用のCivilization IVは持っているが、腰を据えてプレイするだけの時間がなかなか取れないので、PSPで出ると嬉しい。正式なアナウンスはまだ無いが、対応機種は、PS3, PSP, Xbox360, NDSのようだ。


続きを読む...

matplotlib: 多項式によるフィッティング

このブログ記事をはてなブックマークに追加

matplotlibでは、polyfitを使えば簡単に多項式によるフィッティングを行える。図ではオリジナルのデータを赤でプロットし、それに対し、1次(黒)、2次(緑)、3次(青)の多項式によるラインを描いている。

以下、ソースコード。

from pylab import * x = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] y = [1, 1, 2, 3, 5, 6, 8, 9, 8, 6] coeffs1 = polyfit(x, y, 1) coeffs2 = polyfit(x, y, 2) coeffs3 = polyfit(x, y, 3) besty1 = polyval(coeffs1, x) besty2 = polyval(coeffs2, x) besty3 = polyval(coeffs3, x) plot(x, y, "ro") plot(x, besty1, "-k", linewidth=2) plot(x, besty2, "-g", linewidth=2) plot(x, besty3, "-b", linewidth=2) grid(True) legend(["Data", "Order=1", "Order=2", "Order=3"], "best", numpoints=3) show()

続きを読む...

iGoogleのすゝめ

このブログ記事をはてなブックマークに追加

「Yahoo! Japan」が5月の月間ページビュー数で世界一になったらしい。自分はシンプルなGoogle派なのでごちゃごちゃしてるYahoo!はあまり見ることは無いのだけど、一般には受けるんかね。

単に検索するためだけならブラウザの検索ボックスがあるからページを開く必要は無いんだけど、iGoogleは便利なのでそれを良く使ってる。コンテンツをページの好きな場所に自由に貼り付ける感じもいい。Yahoo!にもMy Yahoo!があるけど、やっぱり広告が邪魔だし、ごちゃごちゃしているので自分の好みじゃないんだよね。

と云うわけで、iGoogleお勧めです。

続きを読む...

2007年6月28日木曜日

matplotlibによる線種や色などの指定方法

このブログ記事をはてなブックマークに追加

matplotlibの線の色、線種、線幅の指定方法を記しておく。

線の色はplot上で、青なら"b"、緑なら"g"のように指定する。ここでは、白い線を見せるために背景を灰色にしている。



以下、図の作成に使ったソースコード。

from pylab import * axes(axisbg="#777777") # 背景を灰色に. x = arange(-20, 20, 0.3) plot(x+1, x, "b") # 青. plot(x+2, x, "g") # 緑. plot(x+3, x, "r") # 赤. plot(x+4, x, "c") # シアン. plot(x+5, x, "m") # マゼンタ. plot(x+6, x, "y") # 黄. plot(x+7, x, "k") # 黒. plot(x+8, x, "w") # 白. plot(x+9, x, color="#77ff77") # エメラルドグリーン. legend(["blue", "green", "red", "cyan", "magenta", "yellow", "black", "white", "#77ff77"], "lower right") xlim(2, 12) ylim(-5, 5) show()

次に、線種の指定方法を示す。



以下、ソースコード。

from pylab import * x = arange(-20, 20, 0.3) plot(x+1, x, "-") plot(x+2, x, "--") plot(x+3, x, "-.") plot(x+4, x, ":") plot(x+5, x, ".") plot(x+6, x, ",") plot(x+7, x, "o") plot(x+8, x, "^") plot(x+9, x, "v") plot(x+10, x, "<") plot(x+11, x, ">") plot(x+12, x, "s") plot(x+13, x, "+") plot(x+14, x, "x") plot(x+15, x, "D") plot(x+16, x, "d") plot(x+17, x, "1") plot(x+18, x, "2") plot(x+19, x, "3") plot(x+20, x, "4") plot(x+21, x, "h") plot(x+22, x, "H") plot(x+23, x, "p") plot(x+24, x, "|") plot(x+25, x, "_") legend(["-", "--", "-.", ":", ".", ",", "o", "^", "v", "<", ">", "s", "+", "x", "D", "d", "1", "2", "3", "4", "h", "H", "p", "|", "_"], numpoints=5, pad=0.1) xlim(0, 30) ylim(-5, 5) show()

線の色や線種は複数を同時に指定することができる。また、線の幅も指定できる。



from pylab import * # linewidth の代わりに lw と書くこともできる. plot(arange(0, 10), "r--o", linewidth=2) show()

続きを読む...

バーナム効果

このブログ記事をはてなブックマークに追加

まずは、究極の血液型心理検査を実際に試してから続きを読んで欲しい。

誰にでも当てはまるような適当な話をされると、多くの人は自分にだけに当てはまるもののように錯覚し、自分をぴたりと言い当てているように感じる。占いや血液型性格診断で良く当たると思われるものはこのバーナム効果のためだと解釈できる。

まあ、人に迷惑をかけない限り占いや血液型診断を信じるのは構わないが、このバーナム効果のことは知っておいたほうが良いだろう。多くの詐欺に使える手口なので、これを知っていることで騙されることが回避できるかもしれない。まあ、騙される人はそれでもきっと騙されるのかもしれないけど。人を見たら泥棒と思え…とはまで言わないけど、冷静になって客観的に自分を見る目を養うことは重要だと思う。

続きを読む...

2007年6月27日水曜日

Internet Archive: Wayback Machine

このブログ記事をはてなブックマークに追加

Internet Archive: Wayback Machineで、過去のウェブサイトの情報を得ることができる。既になくなってしまったサイトなどを探すときに便利。

続きを読む...

matplotlibで3次元プロット

このブログ記事をはてなブックマークに追加

一昔前は2次元しか扱えなかったが、最近では3次元プロットも利用できるmatplotlib。Cookbook/Matplotlib/mplot3Dあたりを読めばなんとなく使い方はわかる。利用するには、以下のようにモジュールを読み込んでおく。

import pylab as p import matplotlib.axes3d as p3

ネットで調べてみたらscipy+matplotlibによる3元連立常微分方程式の軌道について書かれているサイトを発見。ふむふむ、参考になる。Gnuplot.pyは知らなかったな。でも最終更新が2003年と古い。numpyではなく古いNumericを使っているっぽい。やはり、matplotlibがいいなぁ。でも、plot3Dだとうまくいかないようなことが書かれている。そうなのか…と思って試してみた。例示されているコード中のscatter3Dをplot3Dに変更するだけ。見た目はまったく問題ないように見えるけど、何か問題があるのかな? バージョンの違い? どちらにしろ自分としてはこれで十分かな。

余談だが、現時点で最新のscipy-0.5.2とnumpy-1.0.3の組み合わせでは正常にコンパイルできない。

svc co http://svn.scipy.org/svn/numpy/trunk numpy svc co http://svn.scipy.org/svn/scipy/trunk scipy

上記のようにsvcで最新のバージョンを取ってくるか、numpy-1.0.2を利用しなければならない。

続きを読む...

2007年6月26日火曜日

PythonでRSSやAtomを読み込む

このブログ記事をはてなブックマークに追加

PythonでRSSやAtomなどのフィードを読み込んでみた。feedparserを使えば一発。簡単。

import feedparser d = feedparser.parse("http://handasse.blogspot.com/feeds/posts/default") print d.feed.title 良いもの。悪いもの。 print d.feed.link http://handasse.blogspot.com/

続きを読む...

C言語で実行時間測定

このブログ記事をはてなブックマークに追加

C言語で実行時間を測定する方法。覚書。正確さから言えばgettimeofdayかな。手軽さからならclockあたりで。Unixであれば、timeコマンドがソースの変更もなく手間もかからず簡単。Windowsの場合は、timeitコマンドリソースキットに含まれている。

% time 実行ファイル

以下、Cのコード。

clock

#include <stdio.h> #include <time.h> int main() { clock_t t1, t2; t1 = clock(); /* 処理. */ t2 = clock(); printf("%f\n", (double)(t2 - t1) / CLOCKS_PER_SEC); return 0; }

gettimeofday

#include <stdio.h> #include <time.h> #include <sys/time.h> double gettimeofday_sec() { struct timeval tv; gettimeofday(&tv, NULL); return tv.tv_sec + tv.tv_usec * 1e-6; } int main() { double t1, t2; t1 = gettimeofday_sec(); /* 処理. */ t2 = gettimeofday_sec(); printf("%f\n", t2 - t1); return 0; }

getrusage

#include <stdio.h> #include <time.h> #include <sys/time.h> #include <sys/resource.h> double getrusage_sec() { struct rusage t; struct timeval tv; getrusage(RUSAGE_SELF, &t); tv = t.ru_utime; return tv.tv_sec + tv.tv_usec * 1e-6; } int main() { double t1, t2; t1 = getrusage_sec(); /* 処理. */ t2 = getrusage_sec(); printf("%f\n", t2 - t1); return 0; }

times

#include <stdio.h> #include <time.h> #include <unistd.h> #include <sys/time.h> #include <sys/times.h> clock_t times_clock() { struct tms t; return times(&t); } int main() { clock_t t1, t2; t1 = times_clock(); /* 処理. */ t2 = times_clock(); printf("%f\n", (double)(t2 - t1) / sysconf(_SC_CLK_TCK)); return 0; }

続きを読む...

2007年6月25日月曜日

カオス - 新しい科学をつくる

このブログ記事をはてなブックマークに追加

カオス―新しい科学をつくる」は15年も前に読んだ本なのだが、非常に面白かった。以前からマンデルブロ集合やローレンツアトラクタなどに興味を持っていたのだが、素人にもわかりやすく記述されており、世界にはなんて奇妙で不可思議な現象があるのだろうと素直に感じた。事実は小説より奇なりとはよく言ったものだ。こんなこと、事実を目の当たりにしなければ、到底信じられない。

例えば、x(next)=rx(1-x) という式がある。これは一見何の変哲もない式に見えるが、rのパラメータを変化させていき、xがどの値に落ち着くか観察してみるといい。とても奇妙な振る舞いが見られる。xの初期値を0.4としたとき、r=2.8ならばxの値は1つに落ち着くが、r=3.2だと2つ、r=3.5だと4つ、r=3.7だと無数になる。そうかと思えば、r=3.84だと3つに収束する。なんとも不思議だ。こういった予測できない振る舞いがカオスなのである。

上記のグラフはPython+matplotlibで描いたが、そのコードを書いておく。

from pylab import * def calc(r, x, n): values = [] f = lambda r, x: r * x * (1.0 - x) for i in xrange(n): x = f(r, x) values.append(x) return values if __name__ == "__main__": n = 1000 x = 0.4 for r in arange(2.8, 4.0, 0.001): plot([r for i in xrange(n-n//10)], calc(r, x, n)[n//10:], "b.", markersize=1) axis([2.8, 4.0, 0.0, 1.0]) text(2.9, 0.2, r"$x_\rm{next} = rx(1-x)$", fontsize=30) xlabel(r"$r$", fontsize=20) ylabel(r"$x$", fontsize=20) show()

続きを読む...

複数のSPEを利用したCellプログラムの雛形

このブログ記事をはてなブックマークに追加

入力データ in を複数のSPEに割り当てて処理を行う。結果は出力データ out に格納される。

program_ppe.c

/* ppu-gcc -lspe2 -lpthread program_ppe.c -o program_ppe */ #include <stdio.h> #include <libspe2.h> #include <pthread.h> #define SPE_PROGRAM "program_spe" #define NUM_SPE 4 #define SIZE (10000) #define DMA_BY_TYPE (16) /* (16) for char, (4) for int */ typedef struct { unsigned long long ea_in; unsigned long long ea_out; unsigned int size; int pad[3]; } params_t; params_t params[NUM_SPE] __attribute__((aligned(16))); typedef struct { spe_context_ptr_t spe; params_t *params; } thread_arg_t; void *run_spe(void *thread_arg) { int ret; thread_arg_t *arg = (thread_arg_t *)thread_arg; unsigned int entry; spe_stop_info_t stop_info; entry = SPE_DEFAULT_ENTRY; spe_context_run(arg->spe, &entry, 0, arg->params, NULL, &stop_info); return NULL; } void process_spe(unsigned char *in, unsigned char *out) { int i; int size, spe_size[NUM_SPE]; spe_program_handle_t *prog; spe_context_ptr_t spe[NUM_SPE]; pthread_t thread[NUM_SPE]; thread_arg_t arg[NUM_SPE]; prog = spe_image_open(SPE_PROGRAM); for (i = 0; i < NUM_SPE; i++) { spe[i] = spe_context_create(0, NULL); spe_program_load(spe[i], prog); } size = SIZE / DMA_BY_TYPE / NUM_SPE; for (i = 0; i < NUM_SPE - 1; i++) spe_size[i] = size * DMA_BY_TYPE; spe_size[NUM_SPE - 1] = (SIZE - size * DMA_BY_TYPE * (NUM_SPE - 1)); size = 0; for (i = 0; i < NUM_SPE; i++) { params[i].ea_in = (unsigned long)&in[size]; params[i].ea_out = (unsigned long)&out[size]; params[i].size = spe_size[i]; size += spe_size[i]; arg[i].spe = spe[i]; arg[i].params = &params[i]; pthread_create(&thread[i], NULL, run_spe, &arg[i]); } for (i = 0; i < NUM_SPE; i++) { pthread_join(thread[i], NULL); spe_context_destroy(spe[i]); } } int main() { unsigned char in[SIZE] __attribute__((aligned(16))) = { 0 }; unsigned char out[SIZE] __attribute__((aligned(16))); process_spe(in, out); return 0; }

program_spe.c

/* spu-gcc program_spe.c -o program_spe */ #include <stdio.h> #include <spu_intrinsics.h> #include <spu_mfcio.h> #define DMA_BUFSIZE (16 << 10) #define DMA_BY_TYPE (16) /* (16) for char, (4) for int */ unsigned char in[DMA_BUFSIZE] __attribute((aligned(16))); unsigned char out[DMA_BUFSIZE] __attribute((aligned(16))); typedef struct { unsigned long long ea_in; unsigned long long ea_out; unsigned int size; int pad[3]; } params_t; params_t params __attribute__((aligned(16))); int main(unsigned long long spe, unsigned long long argp, unsigned long long envp) { int i; int tag = 1; unsigned int bufsize; unsigned int padding = 0; spu_mfcdma64(&params, mfc_ea2h(argp), mfc_ea2l(argp), sizeof(params_t), tag, MFC_GET_CMD); spu_writech(MFC_WrTagMask, 1 << tag); spu_mfcstat(MFC_TAG_UPDATE_ALL); for (i = 0; i < params.size; i += DMA_BUFSIZE) { if (i + DMA_BUFSIZE > params.size) { bufsize = params.size - i; padding = bufsize % DMA_BY_TYPE; if (padding != 0) bufsize += (DMA_BY_TYPE - padding); } else bufsize = DMA_BUFSIZE; spu_mfcdma64(in, mfc_ea2h(params.ea_in+i), mfc_ea2l(params.ea_in+i), bufsize * sizeof(char), tag, MFC_GET_CMD); spu_writech(MFC_WrTagMask, 1 << tag); spu_mfcstat(MFC_TAG_UPDATE_ALL); /* processing */ spu_mfcdma64(out, mfc_ea2h(params.ea_out+i), mfc_ea2l(params.ea_out+i), bufsize * sizeof(char), tag, MFC_PUT_CMD); spu_writech(MFC_WrTagMask, 1 << tag); spu_mfcstat(MFC_TAG_UPDATE_ALL); } return 0; }

続きを読む...

2007年6月24日日曜日

氷と炎の歌

このブログ記事をはてなブックマークに追加

久々に寝食を忘れて読める本に出会った。

氷と炎の歌シリーズは、ジョージ・R・R・マーティンが著者のローカス賞受賞作だ。全7部作("A Game of Thrones" (1996), "A Clash of Kings" (1998), "A Storm of Swords" (2000), "A Feast for Crows" (2005), "A Dance with Dragons", "The Winds of Winter", "A Dream of Spring")の予定で、現在、原書で第4部まで刊行されており、日本語訳は第3部(「七王国の玉座(しちおうこくのぎょくざ)」、「王狼たちの戦旗(おうろうたちのせんき)」、「剣嵐の大地(けんらんのだいち)」)まで出ている。

内容は簡単に言えば、戦記もので第1部のタイトルにも入っているように、ある事件がきっかけで複数に分裂した王国の群雄割拠物語である。それだけに登場人物も非常に多い。北部では人外の者である「異形人(The Others)」、現在では死に絶えたと言われる「ドラゴン」、ある種の魔法など、いくつかのファンタジーの要素もあるにはあるが、物語を味付けするためのスパイスとして入れられているに過ぎず、それが主となることはない。この物語は、現実世界となんら変わるところはない人間の生き様や愛憎を扱った、ヒューマンドラマなのだ。それだけに、嫉妬や憎悪など人間の負の面が赤裸々に描かれており、所謂「綺麗な」話を望む人々や子供たちは読まないほうが良いだろう。

この氷と炎の歌で特筆されることは、明確な主人公がいないことである。それぞれの章で登場人物の一人が指定され、その主観で物語が綴られている。その人物が感じたこと考えていることで構成されいるので、同じ物事の描写も章によって大きく異なる。また、選ばれる人物は基本的に立場の弱い人々である。弱いといっても社会的弱者という意味ではなく、その環境で困難な状況にある人物という意味であり、身分としての弱者ではない。このマーティンという作家は弱者を描くのがとてもうまいと思う。

この物語では主人公がいないと書いたが、裏を返せば安全な人物はいないということだ。どんな人物もいつでも死と隣りあわせなのだ。たとえいなくなれば物語が破綻しそうなだと思われるような本当に重要な人物だとしてもだ。それだけに、先の読めない展開にはらはらどきどきし、時を忘れて読み耽ってしまうのだ。

三国志演義や戦国時代の歴史小説などが好きな人やダーク・ファンタジーの好きな人には薦められると思う。

文庫本





単行本(ハードカバー)






続きを読む...

2007年6月22日金曜日

C++による数値・文字列の変換

このブログ記事をはてなブックマークに追加

C++ではsstreamを使うことで、数値から文字列、文字列から数値への変換を行うことができる。

#include <iostream> #include <sstream> using namespace std; int main() { stringstream ss; double pi; // 文字列から数値に変換. ss << "3.14"; ss >> pi; cout << showpoint << pi << endl; ss.clear(); // 状態をクリア. ss.str(""); // 文字列をクリア. // 数値から文字列に変換. ss << 123 << "NUMBER"; cout << ss.str() << endl; return 0; } 3.14000 123NUMBER

続きを読む...

C++マニピュレータ

このブログ記事をはてなブックマークに追加

#include <iostream> // 引数なしマニピュレータ #include <iomanip> // 引数付きマニピュレータ

endl
改行文字"\n"を負荷して出力をフラッシュ。

ends
NULL文字"\0"を負荷して出力をフラッシュ。

flush
出力をフラッシュ。

boolalpha | noboolalpha
boolの値を "true", "false" で出力する/しない(デフォルトでは 1, 0)。

showbase | noshowbase
16進数のとき"0x"、8進数のとき"0"を先頭に付加して出力する/しない。

showpos | noshowpos
正の数のとき + 符号を出力する/しない。

showpoint | noshowpoint
浮動小数点表示で末尾の 0 を出力する/しない。

skipws | noskipws
入力時、空白を読み飛ばす/読み飛ばさない。

uppercase | nouppercase
16進数表示(a~f)や概数表示(e)のときアルファベットを大文字で出力する/しない。

left
フィールド幅が設定されているとき、値を左寄せ。"123 "

right
フィールド幅が設定されているとき、値を右寄せ。" 123"

internal
フィールド幅が設定されているとき、符号を左寄せ、値を右寄せ。"+ 123"

dec
10進数で出力(デフォルト)。

hex
16進数で出力。

oct
8進数で出力。

fixed
概数表示をしない(デフォルト)。"123.456"

scientific
概数表示をする。"1.23456e+003"

setbase(int base)
基数を設定。16進数ならば、setbase(16)

setfill(char f)
詰め文字を設定。setfill('0')の場合、"000123"

setprecision(int p)
浮動小数点表示のときの表示桁数を設定(デフォルトは6)。

setw(int width)
フィールド幅を設定(デフォルトは 0)。

setioflags(ios_base::fmtflags f)
指定の書式設定フラグを設定。

使い方の例:

#include <iostream> #include <iomanip> using namespace std; int main() { cout << "PI = "; cout << fixed << setw(7) << setprecision(5) << 3.14159265 << endl; cout << scientific << uppercase << 123.456789 << endl; return 0; } PI = 3.14159 1.23457E+002

続きを読む...

2007年6月20日水曜日

matplotlibの簡単な説明

このブログ記事をはてなブックマークに追加

matplotlibはPythonで利用できるグラフ作成モジュールで、高機能で使いやすい。とても便利なので是非ともインストールしておこう。

以下のようにモジュールを読み込み、matplotlibを利用できるようにする。

from pylab import *

直線を描く。

plot([1, 2, 3]) show()



続けてグラフを描くとき、以前のグラフを残したままだと同じ図にプロットされてしまう。以前の図の内容を消去したい場合は、

clf()

とすればよい。

グラフの範囲をaxisで指定し、x, yに対応したリストでポイントに赤丸を打ち、赤い線で結ぶ("ro-")。

plot([1, 2, 3, 4, 5], [5, 10, 20, 50, 100], "ro-") axis([0, 6, 0, 100]) show()

axisの代わりに、

xlim(0, 6) ylim(0, 100)

でも可。



二次曲線を緑の線("g")で描く。タイトルもつける。

x = arange(0.0, 10.0, 0.01) title(r"Quadratic Curve", fontsize=20) plot(x, x**2, "g") show()



正弦曲線を描く。タイトルとラベルをつける。タイトルやラベルにはTeXの形式で数式を書くこともできる。

t = arange(0.0, 2.0, 0.01) s = sin(pi * t) plot(t, s) title(r"Sine Curve", fontsize=20) xlabel(r"$\theta$", fontsize=15) ylabel(r"$\rm{sin}(\theta)$", fontsize=15) show()



正弦曲線のグラフ内に二次曲線のグラフを埋め込む。さらに、EPS形式でグラフをファイルに書き出す。

t = arange(0.0, 2.0, 0.01) s = sin(pi * t) plot(t, s) title(r"Sine Curve", fontsize=20) xlabel(r"$\theta$", fontsize=15) ylabel(r"$\rm{sin}(\theta)$", fontsize=15) a = axes([0.60, 0.55, 0.25, 0.25]) x = arange(0.0, 10.0, 0.01) title(r"Quadratic Curve") plot(x, x**2, "g") setp(a) savefig("curve.eps") show()



後は、チュートリアルユーザーズガイド(PDF)を参考に。

続きを読む...

2007年6月19日火曜日

Pythonで宛先ごとにスパムメール数を調べる

このブログ記事をはてなブックマークに追加

1日200通ほどのスパムメールが来る。ほとんどのスパムメールはフィルターを通して処理されるので実害は少ないが、気持ちの良いものではない。ふと、複数のメールアカウントを使っていてどのアカウントが一番被害があるのかちょっと気になったので、メールアドレスごとにスパムメールを数え上げ、数の多い順に表示するPythonプログラムを書いてみた。Pythonらしからぬばっちぃコードなのであまりコーディングの参考にしないこと。

import re def read_spam(fname, pattern): data = [] for d in [[s for s in l.replace(":", " ").replace("<", " ").replace(">", " ").strip().rstrip().split()[1:] if not re.search("\"", s) if re.search(".+@.+", s)] for l in file(fname) if re.search(pattern, l)]: data.extend(d) data_counts = {} for d in set(data): data_counts[d] = data.count(d) for d in sorted(data_counts, cmp=lambda x, y: cmp(data_counts[x], data_counts[y]), reverse=True): print "%5d %s" % (data_counts[d], d)

普段はThunderbirdを利用しており、デフォルトではスパムメールはJunkファイルに落とされる。その場合、以下のように実行すればOK。

read_spam("Junk", "^To: ")

以下のように表示される。

4652 aaa@mail.address 3745 bbb@mail.address 2176 ccc@mail.address 1819 ddd@mail.address 686 eee@mail.address (以下、略)

メールアドレスは変更しているがメール数は実際に計測した数値である。まあ、大体予想通りであったが、それにしても多すぎる。ひどいものだ。

続きを読む...