スキップしてメイン コンテンツに移動

投稿

2007の投稿を表示しています

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

ASPN : Python Cookbook : Minimal http upload cgi このあたりを参考に、自分のウェブサイトにPythonによるアップローダのCGIを導入してみた。ローカルのファイルをサーバにアップロード。アップロードされたファイルはウェブサイトのアップローダの画面にリスト表示される。表示されているリンクからダウンロードできる。アップロードするファイルの種類とファイル容量は指定可能。 個人で利用する分には十分な性能だろう。短いコードだが、他人のソースを流用しているので公開は控えたい。使いたい方は上記のサイトを参考にすれば問題なく作れると思う。

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みャイル)などを買ってしまい、手に入れるのが遅くなってしまった。この鴨は音楽を鳴らしておくと歩いたり・踊ったりし、仕草がとてもよくできているのだ。「まいにちいっしょ」をよく利用している人なら買って損はないと思う。 そんなわけで、今後も「まいにちいっしょ」のコンテンツに期待している。クリスマスプレゼントやお年玉などはありそうだなぁ。そう言えば、今月のアップデートで庭ができるらしい。いろいろなアイテムを飾ったり、自分の分身でもあるニャ

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

PSP用ゲームソフトの 「勇者のくせになまいきだ。」 は、モンスターを育てて襲い来る勇者たちを倒すことを目的とするゲームだ。発売日に購入してそのままはまってしまい、ストーリー表・裏、すべてのトレーニング・チャレンジ、おまけ1・2をクリアし、いきものずかんもすべて完成してしまった。 このゲームはジャンルとしてはパズルゲームになるのだろうか。そのゲーム性も面白いのだが、これまでのゲーム、特にRPGに対するオマージュが盛りだくさんであり、このセンスがとても良い。たとえば、「イロイッカイズツ」なんてのは、知っている人が聞いたら絶対にニヤリとしてしまう台詞だろう。 まあ、欲を言えば、もう少しボリュームがあっても良かったように思う。ストーリーは表と裏の二つあり、それぞれ8ステージある。ステージ数はこれで丁度良いと思うが、ストーリーはもっと欲しかった。あと、もともとこのゲームはダウンロード販売であったらしいが、パッケージ販売に変更された。パッケージだといちいちUMDを入れなくてはならず面倒だし、ダウンロードでメモリに保存のほうが読み込みが早い。せめてダウンロードと併売にして欲しかった。 それにしてもついついプレイしてしまう。クリアの感想としては、「おまけ」が面白かった。あと、シンデレラニジリゴケをデレフラワーにするのが苦労したなぁ。

歩行者は右側通行か?

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

死刑制度廃止について

国連で死刑制度廃止のモラトリアムが採択されたらしい。日本やアメリカ、中国などは反対したが、EU諸国の推進に押し切られたようだ。正直なんて押し付けがましいのだろうと思う。現状でさえ、犯罪では加害者ばかりが有利で、被害者にはつらいものになっている。その上、死刑制度廃止とは。もし、死刑制度が廃止されたら、殺人者が一人もいなくなるとか、死んだ人間が蘇るというのならわかるが。この死刑制度廃止もキリスト教の存在が大きいのだろうか。 もし、死刑制度廃止が義務化されたなら、犯罪は増える一方だろうな。刑罰の抑止力を過小評価しているとしか思えない。刑罰が無くなれば好き勝手やる人間は必ず出てくる。たとえ100人虐殺したとしても自分は安全に生きられるのだから。 その昔、江戸時代では刑罰は非常に重いものだった。だから、自分の財布をその辺に置いたまま遊んでいようが、それを盗る人間はほとんどいなかったと云われている。絶対冤罪のない裁判が可能ならなぁ…。 最近、個人情報保護がやたらと云われるようになったが、一昔前の下町のように隣人が何をしているのか分かるような社会が悪いとは思えない。個人情報が洩れて犯罪に巻き込まれるとか云われたりするが、皆が皆、回りを知るようになれば犯罪は減るんじゃないかな? もちろん、犯罪に対する刑罰は重くする。偉い人も偉くない人もそれぞれが同じように自分たちの情報を共有する。悪くないと思うがなぁ。

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

対戦成績が7割になったあと、簡単に負け越してしまった。3勝4敗で、トータルで10勝7敗となってしまった。ダメだ。特にケアレスミスがダメだ。せっかくいい勝負してても計算ミスとか思い違いとか置き間違いとか…。勝負に負けても悔しいとか思わないのだが、自分のミスだけは痛い。 あと、うまい人に当たるとプレイングでへまされることが少なく、必然的にデッキの構築の良し悪しが響くことになる。結構適当にデッキを組んでいたので、真剣に構築しなおすことにした。上位ランカーの対戦相手のデッキを参考に自分なりの考えを加えて組んでみたが、最終的に随分ましになったと思う。その後、一戦交えたが、勝率が8割超えている相手にかなりうまく勝てたようだ。よしよし。しかしまだまだ改良の余地はありそう。カードが足りないが、これ以上買い足すのはちょっとしんどい。 最後に自分の構築したデッキについて。まず、再行動コストが高いものを減らした。召喚マナコストが2でも、再行動も2かかるものははっきり云って重い。召喚3でも再行動1のほうが使いやすい気がする。また、比較的低コストの警戒持ちは便利。ミノスとかエントとか。ただし召喚属性に制限があることに注意。他には憑依がかなり使える。要は自分が出されて嫌なカードを揃えてみた。 しかしまたコテンパンにやられて、新しくデッキを組み直すと。その繰り返しかなぁ。因みにもうCOM戦じゃ相手にならないみたいだ。エキスパートにしても結構余裕で勝てる…。さすがにコンピュータに何手も先を読ませるのは難しいのかな。

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

すっかりはまってしまっている。とは云っても仕事やら風邪やらでそれほどプレイできているわけじゃない。とりあえず10回ほど戦ってみた。7勝3敗で勝率は7割。このゲームはプレイヤーのスキルの差が本当に良く出る。適当やっていてもほぼ勝てない。ほぼといったのはドローによる運もあるからだ。ある対戦で、こちらはデッキにスペルカードを7枚仕込んだのだが、前半で全部出てしまって手札7枚中6枚がスペルカードになった。これじゃ勝てない。それともこれだけ偏っても勝てる人は勝てるのだろうか。 そうそう、先日までスターターセット+おまけのブースターセットでプレイしていたが、とうとうテーマデッキ5種+ブースター1BOXを秋葉原のイエローサブマリンで購入してしまった。一気に手持ちのカードが300枚近くに。しかし、ブースターは正規の定価よりも2割5分増の6000円であった。うーむ。まあ、「ウォマック」が入っていたから許す。 と云うわけで週末は新たに組み直したデッキを使ってみた。実際に戦ってみるとカードの使い勝手が予想と結構違うことに気が付いた。まずはスペルカードから。一応デッキには入れているが、「召喚士メスマーの失敗」は思っていたよりも使えない。相手にマナが溜まっている状況で自分の手札に生贄にできるカードが無いといけないが、そういう場面が思ったよりも少ないのだ。あと、「癒しの慈雨」は結構使えると思うが、ほかのカードをどうしても入れておきたくて、これは外してしまった。このカードと迷ったカードは「クレア・ウィルの旗印」。マナ1で+2の攻撃はやはり捨てられない。後絶対に入れておきたいのは「迷いの羅針盤」だ。これはマナコスト無しで自由にクリーチャーの向きを変えられる。攻めにも守りにも使える最上級クラスのカードだと思う。 クリーチャーカードを入れる際の基本的なコンセプトとしては、低コストカード(マナ1~2)が全体の半分ぐらいで残りにそれなりにコストが高いもの。現在は、「ファセウス」、「ウォマック」、「エディン」、「聖ディースを追う者」などを入れている。勇者は4種持っているので悩みどころだが、「エディン」の魔道攻撃は捨てがたい。「聖ディース」はちょっと微妙か。「ファセウス」も使いどころが難しいが、個人的に使いたいカード。あとは王族は一枚も無いし、叛逆者は「ウォマック」のみなのでこれも選択の余地は無

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万ドルの価値はあるのだろう。携帯電話の良し悪しはアプリケーションの良し悪し(とインターフェイス)で決まると思う。

THE EYE OF JUDGMENTオンライン対戦

COM戦のハードで普通に勝てるようになったので、オンラインで初めて対戦してみた。最初の対戦相手は、総合順位100位台の大賢人だった。いきなり上級者との対戦だ。同レベル同士をマッチングしてくれないのだろうか。まあ、当たってしまったものは仕方ないので、TCG初心者、オンライン対戦初めてである自分がどこまでできるかまずはやってみた。 相手はいきなりキュービック。これは初期段階で高コストクリーチャーを召喚させる、もしくは相手の魔道攻撃クリーチャーを引きずり出す作戦だろう。魔道攻撃クリーチャーはいないので物理攻撃してみるが、予想通りかわされ、見たことが無いクリーチャーを召喚された。自分はまだ最初のカードしか持っていないので、見たことが無いカードがたくさんあるのだ。それでも途中までは上手に属性や能力を使った一進一退の良い対戦だと思われたが、途中、クリーチャーを置き間違えたのがいけない。そこから押し切られてしまった。やっぱりミスったら駄目だ。それでもこの対戦から多くのことを学べたのは収穫だった。 次の対戦と思い、検索したが見つからなかったので、今度は自分でルームを作って誰かが来るのを待ってみた。そしたらすぐに相手が入ってきた。今度は総合順位1400位ほどの人だった。早速対戦したが、今回は自分にミスは無く、終始安定したプレイングができたようで、危なげなく勝利できた。初勝利。名声5ポイントで総合順位8000台。 今回は2回の対戦でやめたが、これなら何とかなりそうな印象。1回目の対戦は負けたが、勝った対戦よりもいろいろと収穫が大きく、やはりランキング上位陣との対戦のほうが面白そう。 このゲーム、頭脳戦が非常に面白い。自分で組み立てたカードをドローするゲームなので運が大半を占めるかと思いきや、その運用が大きくものを云うようだ。ゲームバランスも絶妙なようで、ネットの評判もどれも良いものばかり。ただ、実際にカードを購入して集めないことには多様性のあるデッキが作れないので、知り合いなどには気軽に薦めづらい。それでもこういう良質のゲームはもっと流行って欲しいものだ。

お腹がHELLぜ!

ハバネロのフラッシュゲーム 「お腹がHELL!」 をプレイしてみた。これは、サントリーと東ハトとのコラボレーション商品 「暴君ハバネロの旨スープ」 のPRの一環らしいのだが、よく出来ているのでなかなか楽しめた。 ところでこの商品、近くのコンビニで売ってないのだけどどこにあるんだろ。個人的にハバネロ関連のスナックは好きなので、結構気になっている。なかなか美味しいとの話だし、飲んでみたい。おにぎりと一緒に食べると結構いけそうだ。

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枚、マスの上に置くことができれば勝ちなのだ。クリーチャーやマスにはそれぞれ属性と云うものがあり、それにより有利不利が出てくる。また、クリーチャーや魔法も様々な種類があってその組み合わせや運用によって効果が大きく変わってくる。かなりの戦略性があるのだ。その反面、初めてプレイするときには少しとっつきにくいかもしれない。ガイダンスビデオもゲーム内で見ることができるが、それだけ数十分もかかるほどだ。 また、現在、別売りのカードが極度の品薄でなかなか手に入らない。販売元もここまで売れると思わなかったのだろうか。早急に

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

やっと来た。PSPからのPS3本体起動。今まではいくらPSPからPS3のデータを読み込めるといっても、PS3を起動させっぱなしでないと駄目だったのだが、これからはPSPとネットワーク環境さえあればどこからでも起動できる。もちろんPS3の電源を切ることもできる。他にもXMBのアイコンや背景をカスタマイズできるようになったり、音楽や動画のプレイリストを作ったり、インフォメーションボード(PS3関係のニュース速報)が追加されたりといろいろと便利になったようだ。ほかにも振動コントローラーに対応したり、SACDが光デジタルで出力できるようになったりしている。 PS3は個人的にはかなり良くできた機種なのだが、悪く云う人が目立つ。しかしその人たちの言葉をよく聞くと、触りもしないで嫌いだからと云う理由でそのように騒いでいるのが多いように思う。少なくとも自分は購入して良かったと思うものの一つだ。これだけの機能があってこんなに安いのはどうかと思うぐらい。まあ、11月11日にさらに値下げされた新型PS3も出たようなので、興味がある人は使ってみてはどうか。

初音ミク

しばらく前からネットを中心に 初音ミク という名前を聞くようになった。これは指示した通りに歌を歌ってくれるソフトウェアであり、デスクトップミュージック(DTM)の一種だ。要はボーカルをやってくれるのである。作曲・作詞はできても、歌ってくれる人がいなければ、人には聴かせることができない。それをこの初音ミクが歌ってくれるのだ。ネットの動画サイトを中心に瞬く間に拡がった。DTMとしては異例の売り上げだそうだ。確かに、技術がある人が利用すると非常にクオリティの高い作品となる(私には無理だが)。 しかし、最初に感じたことだが、このようなソフトでボーカルが務まるようになると、将来、本職や音楽業界・テレビ業界には少なからぬ打撃になるのではないか。もちろん、自動車の発明で馬車が廃れたように、何かの技術が生まれれば、従来のものがそれに置き換わっていくのは仕方ないことかもしれない。それでも、上に挙げたような業界からは激しい抵抗や攻撃があるように思える。実際にTBSでは番組中にあからさまな初音ミクの中傷を行ったり、発売当初から匿名で悪く言う輩が後を絶たない。多分、将来的に不安を感じたものの行動だろう。実際に、大手インディーズ音楽配信サイト muzie のランキングでも初音ミクがやたらと目に付き、それだけ恐怖心も大きいのだろう。 自分個人としてはこれだけの技術の発達を大いに歓迎したい。私たちは常に進化しているのであり、そうそう後戻りはできない。昔は良かったといえるのも便利な今があるからであり、いきなりすべてが昔に戻ったら医療の未熟さゆえ死亡率は跳ね上がるだろうし、これだけの人口に対して効率よく食料を確保できないことから多くの人が餓死してしまうのではないだろうか。まあ、これはちょっと大きく捕らえすぎなのかもしれないが、技術の進歩に対して、私たちはそれを享受する義務(権利ではなく)があると思う。そんなわけで、初音ミクに対しても優しく接するべきだろう。 因みに以下の『みくみくにしてあげる♪』というのが初音ミク自身が歌うテーマ曲(?)っぽい。これは一般受けするか微妙なところだが、 ニコニコ動画 あたりでは自作の質のよい楽曲が揃っているようだ。ご試聴あれ。

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

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

GRAN TURISMO 5 Prologue無料体験版

グランツーリスモ5プロローグ の無料体験版が現在ダウンロードできる。11月30日までの限定なので早めに落としておくのが吉。早速プレイしてみたが、ビジュアルがかなりリアルで驚いた。ぱっと見には実写と見紛う。随分前にPSのグランツーリスモと一緒に購入したハンドル型コントローラが利用できるようだったので使ってみたが良い感じである。本ソフトのリリースは12月13日だそうだ。 無料体験版のデモプレイ映像を貼り付けておく。YouTubeのものなのでかなり映像は荒いが雰囲気は感じ取れると思う。 こちらはニコニコ動画のもの。 【ニコニコ動画】GT5 Prologue体験版/鈴鹿サーキット/練習走行「すみません、間違えました」

山場CM

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

Kaspersky Internet Security

先日、とうとうトレンドマイクロのウイルスバスターから Kaspersky Ineternet Security (カスペルスキー・インターネットセキュリティ) に変更した。何度もウイルスバスターがらみでのトラブルがあり、ここ最近でもPCのHDDへのアクセスが数十分も続くことがあり、結局これもウイルスバスターの仕業であったようだ。もっとも今回変更したのはノートPCだけであるが。Kasperskyは価格とライセンス形態に難ありなのだ。 ウイルスバスターを導入する前は、ノートン・インターネットセキュリティを利用していた。しかし、重くてどうしようもなかったので(現在は以前よりも随分軽くなったらしい)、当時、評判の良かったウイルスバスターに乗り換えたのだ。使い始めは良かったのだが、なんというか使うごとに不満が出てきた。自分としては、どうも初心者向けのつくりが気に入らない。いちいちアップデートの表示が出てきたり(多分設定で変えられると思うが)、そうかと思うと、知らないところで勝手にセキュリティ関連プログラムが実行され極度に重くなる。通知無しで起動されると何が原因でシステムが不安定になっているのか特定しにくいことこの上ない。その点、Kasperskyはプログラムが実行されるときにはトレイアイコンが変化するのでわかりやすい。 また、Kasperskyはウイルス駆除率でも定評がある。GIGAZINEの アンチウイルスソフトウェアランキング、最強はどれ? でも1位になっている。より詳しくアンチウイルスソフトを比較したい場合は、 道具解 、 AV-Comparatives あたりが参考になるだろう。 そんなわけで、現在試用版を試しているところだが、今のところ快調だ。試用版は30日間の期間限定だが、それまでにははっきり結論が出せるだろう。

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

リチャード・ドーキンスの 『神は妄想である』 を読んだ。ドーキンスは無神論者で有名だが、まさにそれを表す過激なタイトルの通り、内容は「神などまず存在しない」と云うものだった。自分も神などいないと思っているので多くの部分で共感を持てた。 特に問題となるのは、宗教・神を信じることが人間を不幸にしているということだ。これは自分も前々から感じていたことで、9・11のテロ事件も、イラク侵攻も、現在行われてる世界の様々な紛争も、古くは魔女狩りや十字軍も、そして日本ではサリン事件、すべて宗教に関わるものだ。聖書の内容も酷いもので、特に旧約聖書については目も当てられない。女性なんてその辺の石ころ並みの扱いだ。 また、宗教のせいで、科学が言われ無き迫害を受けている。聖書と矛盾する進化論や地球の年齢を端から間違っていると決め付け、「人間のような複雑なものが自然にできるわけが無い。つまり、神のみが人間を誕生させることができるのだ」と云う論調。大体、その全知全能の神はどうやって作られたというのか?全知全能なんて途方も無く複雑だろうに。 さらに、信者は神がいなかったらどうやって人間は道徳を身に付けるのかとまで云っているらしい。酷い話だ。宗教に入っている人たちは、もし神がいないとしたら(実際いないのだが)、道徳観念を捨てて悪逆非道を尽くすのだろうか。私は無神論者だが、良いことと悪いことは知っているつもりだ。 自分は物事を良く知ることこそ、世界から偏見をなくし、本当のことと嘘のことを区別する能力を与え、世界から争いを減らすことができる力だと思っている。それは、偏見や嘘にあふれている宗教の世界を無くす、もしくは形骸化させる力になる。勉強することにはこのように大変重要な意味があるのだ。巷でよく聞く、この勉強・あの勉強は、将来役に立つ・役に立たないという議論などまるっきりナンセンスだと思う。 最後に、ロシアの小学校で起こったテロの悲惨さを伝える秀逸なフラッシュ・アニメーション、 『未来はすばらしい』 を紹介しておく。これはチェチェンとロシアの紛争によるものだが、その背景には宗教が深く関わっている。因みに、フラッシュの右上に表示されるSubtitleをJapaneseにすると、字幕が日本語で表示される。

不意の拍手

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

遅いPCはいらない

仕事なりプライベートなりでPCはよく使う。しかし、最近特に動作の遅いことにイライラすることが多い。前に比べて自分が短気になったとかそういうことじゃないと思う。以前からも動作が遅いときにはイライラすることは普通にあったし。そういえば自分が子供のころはクソゲーの条件で最初に挙げられていたのが「動作が遅い」だったな。その当時から、とにかく動作が遅いだけですべてを台無しにすると思っていた。 まず、いつまでもHDDをカリカリ読み込んでいる時点で終わっていると思う。CPUだけ速くてもだめだ。これからのPCはこれを何とかしないと将来に期待が持てない。すべてオンメモリにするとか。それに肥大化したアプリケーションを何とかしないと。中間言語を使うソフトウェアもひどい。JITコンパイラも最悪だ。Javaと聞いただけで背筋が寒くなる。とにかくどれもこれも初期化に時間がかかるのだ。 また、起動や終了もひどい。自分の使っているノートPCを起動してすべてのスタートアップを読み込んでHDDが静かになるまで(ここが重要!)5分かかり、シャットダウンが完了するまでに2分半かかった。いい加減にして欲しい。つけて消すだけで7分半ですよ。飯が食い終わります。 とにかく、これがサクサクスイスイ動くのなら、今の10倍以上の速さで仕事をこなせると思う。そんな素敵なPCでないかな。少々値が張っても絶対買うと思う。 そういえばこの記事を書いていて一つ気が付いたことがある。CUI、いわゆるコマンドラインでのプログラムにイライラすることはほとんどない。それはプログラムに時間がかかったとしても、それを待っている間にほかの事ができるからだ。実行する前のコマンドライン入力自体で待たされることがないからだ。一方、GUIだとまず画面が表示されるまでに待たされる。その間、何もできない。この違いは決定的だ。 一つのプログラムだけ利用するならばGUIでも問題ない。しかし、PCは一つのプログラムだけで使うものではない。複数の様々なプログラムを同時に利用するのだ。

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

PS3の Folding@Home は、ついに 1Pflopsの大台に乗った 。いやはや数の力は偉大だ。ところでこのFolding@Homeだが、これがどのようにして病気の治療に役立つのかちゃんと理解している人がどれだけいるだろう。ただなんとなく人の役立つから動かしてみてるだけという人がほとんどじゃないだろうか。そこでここではその仕組みについて簡単に解説したいと思う。 まず、Foldingの意味から。Foldingとは折り畳みという意味で、ここではタンパク質の折り畳みを意味する。タンパク質はDNAから設計され、数十から数百のアミノ酸が一列に連なったものだ。なので、タンパク質の端と端をつかんで引っ張れば一本の細長い紐のようになる。この紐はアミノ酸の並びによって必ず決められた形に折り畳まれ落ち着くのだが、これをFoldingというのだ。 ではこのタンパク質の折り畳みがなぜ重要なのか? それはこの折り畳み構造によって生体で機能する働きが決定するからだ。この折り畳まれた構造に別のタンパク質や生体分子がくっつき、生命に必要な機能を発揮する。現在では、人間のすべてのDNAが解読されたので、すべてのタンパク質のアミノ酸の並びがわかる。もし、アミノ酸の並びだけで折り畳み構造がわかれば、苦労して生体からタンパク質を見つけ出さなくても良くなるのだ。そして、その構造が、薬の開発や病気の解明などの研究に繋がるわけだ。もっとも、現状ではアミノ酸の並びだけではまだまだ折り畳み構造を決定するのは難しいのだが。 Folding@Homeでは、単に折り畳み構造を求めるだけではなく、現在構造が明らかになっているタンパク質に対しても機能の解明などで役立っている。例えば、タンパク質の一部のアミノ酸(タンパク質は基本的には20種類のアミノ酸から構成されている)が別のアミノ酸に変異すると異常な働きをして病気になる。それがどのように起こるのかを、タンパク質の動きなどから予測できる。 最後にFolding@Homeの実際の計算方法について述べる。上記に示した折り畳みや機能の解明は、分子動力学計算や分子力場計算によって行われる。分子動力学計算とは、原子間の力を古典力学のニュートン方程式を解くことで、その動的な過程を解析する。分子力場計算では、原子間の位置エネルギーの総和から分子のもっとも安定な構造を

怖い乱数

Javaのjava.util.Randomで適当な種を与えてnextDoubleなんて使ったりすると、最初の値が非常に狭い範囲(0.7前後)でしか生成されないことが分かる。かなり酷い。特に検証もされていないプログラムでは使われていそうで怖い。これじゃ乱数の意味無し。 また、こちらはかなり有名だと思うが、C言語標準のrand関数で生成された乱数は、最下位ビットが0と1の繰り返しになる。これも酷い。少し前に、あるゲームソフトがこのせいでサイコロがランダムではなくなってしまい、問題になっていた。回収や修正騒ぎになって売り上げにも響くわけで「あーあ」じゃ済まされない。 良い乱数・悪い乱数 で詳しい解説がされているので乱数を使う際には一読しておくのが良いかも。

マシン語至上主義

とあるブログで、プログラムというのはマシン語を理解して初めて「書ける」とあった。それはどうかと思う。特に最近よく使われるようになったLL言語なんてのは、内部を隠すように設計されていて、どのコンピュータ・どの環境でもその違いを見せないようにしているのにマシン語が必要なんて矛盾している。 もちろん、マシン語はハードウェアを知る上でも習得しておいたほうが良いが、わざわざ強制してマシン語を覚えさせることはないなぁ。下手するとマシン語を変に良く知っているせいで、それが災いすることもある。 例えば、以前あるプログラミング雑誌でC++の記事を読んだことがあるのだが、その記事によると、プログラムからアセンブリ言語を予想できなければいけないと書いてあり、実際にその記事にはプログラムコードが示されるたびに、それをアセンブリ言語に変換したものが載っていた。で、そのコードをみて、こういう動作をするのでこのように書くこともできると、規格外の書き方が記載されていたのだ。確かに、そのコンピュータのその環境ではうまく動くかもしれないが、それは標準規格では動作を保障していない。「正しい」プログラムは「正しい」書き方をしたものでなければならない。その場だけで通用する書き方ではだめなのだ。 マシン語至上主義は「良くない」と思うが、自分自身はマシン語を覚えていて良かったと思う。コンピュータを使い始めたころはプログラムでも組まなくてはあまり使い道がなかったのもあって、マシン語・アセンブリ言語でいろいろ遊んでみた。ハンドアセンブルしていたことが懐かしい。マシン語は覚えるのは簡単だけど、それで複雑な仕事をさせるのはかなり大変。そういえば、ゲーム雑誌ログインには毎回ゲームのマシン語ダンプリストが載っていたなぁ。今じゃCD付けて終わりってところだろうけど、自分で打ち込んだ苦労があるからか、そこに載っていたゲームは面白いものが多かったように思う。確かあの木屋さんが作ったドラゴンスレーヤーのダンプリストもあったはず。 あまり関係ないけど、以前、知り合いで計算速度ではFORTRANが一番速いって言っていたのを思い出した。FORTRANが吐き出したコードはすべてマシン語で書くことができて、(作成の困難さを度外視すれば)マシン語で書かれたものが一番速いか最悪で同じ速度って言ってもなかなか理解してもらえなかった

似非科学

スラッシュドット に お茶の水大、「ニセ科学批判」がらみで提訴される という記事が載っていた。ホント、世の中、似非科学に騙される人が多いこと、多いこと。マスメディアに踊らされた挙句、まったく効果がないものを買わされる。マイナスイオン、酸素水などなど。みんな有難がって買っていく。今の世の中、少し調べれは分かることなのに…。また、一般教養レベルの科学の知識があれば回避できることも多い。権威(たとえばどこそこ大学の教授など)が言うことには皆弱いのか。 ゲーム脳なんてのもあったな。これ、提唱者の実験結果にかなりの恣意性が入っていることは有名だ。ちゃんとしたところでゲームにおける影響を調査したが、結局、有意な悪影響は認められなかったそうだ。自分だけならこんなくだらないことに引っかかったりすることは無いのだが、驚いたことに自分の子供を預けている保育園担当の医師がゲーム脳になるからゲームはやるなと父母に力説していた。自分が子供のころ、海で陽に焼くと冬に風邪を引かないとか(実際には免疫力が下がって病気になりやすい)、歯を磨くときは歯ブラシを縦にして磨くほうが良いとか(実は歯茎を傷めやすい)、これらと同じように、将来になって今の子供たちが、ゲーム脳なんてでたらめなことが流行っていたなぁ、なんてことを言うのが今から目に浮かぶ。 カール・セーガンの「人はなぜエセ科学に騙されるのか」は随分前に読んだのだが、かなり役に立つことが書かれているので一読したほうがいい。…と思ったらもう絶版なのかな。いい本なんだけどなぁ。

悪徳商法マニアックス

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

ポケモンにはまる

しばらく前から子供が ポケモン にはまっていて、先日は映画にも行かされた。ポケモンなんて子供のお遊びぐらいにしか思っておらず、ほとんど興味を持ったことは無かったのだが、映画を観たり、ゲームをプレイしたりするうちに、これはこれで面白いかもと思うようになった。 基本的には、世界にうろうろしている生き物であるポケモンを捕まえてペットにする。そしてそのポケモンをさらにほかのポケモンと戦わせて捕まえる。戦えば戦うほど強くなるし、一緒にいればいるほどなついてくる。また、ポケモンは500種類近くいるので切手集めのような収集モノにも通じる。通信機能を使えば友達同士で戦ったり、ポケモンを交換したり、協力しあうこともできる。ポケモンのゲームデザイナーによると、子供のころにカブトムシやクワガタムシなどを捕まえることが面白かったからそれを何とかゲームにできないかと考えて作ったらしい。なるほど、だからポケモンは草むらから飛び出し、木に甘い蜜を塗ると寄ってくるのか。 というわけで年甲斐も無くはまってみた。いろいろと細かなギミックも周到に用意され、その一つとして、木の実を土に蒔き、自分で肥料や水をやって育てたりもできる。それも実時間をもとに成長するので、水遣りなどを忘れると木になる実の数が減ったりする。実を土に植えてから成長して実が再び実るまでの時間は、実の種類によって異なるのだが、長いもので4日ほどもかかる。 子供のおもちゃだと思って侮ってはならない。

アンチハッカー法

INTERNET Watch によるとドイツで「アンチハッカー法」が先月施行されたらしい。ネット上での攻撃ツールの作成はもちろん、所持もできなくなるとのこと。 これで何が困るかと云うと、セキュリティのチェックなどもできなくなる点。攻撃ツールでセキュリティのチェックは普通に行われているが、そのツールが使えなくなってしまうのだ。そのため、この法律が施行される前からセキュリティ関連の技術者が施行反対のデモ活動が行われていた。 セキュリティの確認が難しくなるドイツのネットが世界各国のクラッカーから狙われたりして。

Python 3000

先日、 Python 3000のアルファ版 が公開された。今までのPythonと基本的に互換性が取られていないのでまだ試してないが、Python 2.6のソースコードを変換するユーティリティは出るらしい。詳しくは PEP 3000 あたりを参照のこと。 以前のバージョンと比べると、printなどに変更が入り、クラスについてはもう少し良くなるようだ。まあ、リリース予定の一年後に使うかどうかは決めるつもり。開発版では仕事に使うのはちょっと難しそうだし。

世界陸上2007大阪

毎日新聞によると 手配ミスでエリトリアの選手がホテルの床で一夜 を過ごしたらしい。酷い話だ。実は話はこれだけに留まらず、ボランティアや職員のシフトが主な原因でいろいろと問題が出ているらしい。詳しいことはGIGAZINEの 「世界陸上」の真の裏舞台、運営がむちゃくちゃで現場は大混乱 がまとまっていて分かりやすい。 そにれしても知れば知るほど酷い話だ。個々の事例は良くあるお役所主義やだめな会社・できない社員ということでありふれたものだけど、舞台が世界陸上だとそれがそのまま日本の評価に繋がることになる。実際にIAAF(国際陸上競技連盟)から運営が酷いということで怒られているらしい。日本人として恥ずかしい。運営は大阪で、日本だけの話だったら「大阪つかえねぇ」で済む(?)ところだけど、世界を相手にした仕事なんだからホント頼みますよ。それに、志を持って駆けつけたボランティアの方もかわいそうだ。

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でもまともな処理ができるかもしれない。

NANACA†CRASH!!

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

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の威力を実感

マルチページ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コードの方が速いみたい。

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

近所の花屋でウツボカズラが売っていたので思わず購入した。昔から食虫植物に興味を持っていて、前々からウツボカズラが欲しかったのだ。買ったやつは単にウツボカズラとしか書かれていなかったが、調べてみると和名がヒョウタンウツボカズラ、学名がNepenthes alataらしい。 ところで、これまでに2回ほどハエトリグサを育ててみたのだが、うまく育たなかった。食虫植物は育てることが難しいことでも有名で、ある程度の湿度と温度がなくてはならない。また、下手に肥料などをやってしまうと根から腐ってしまうこともある。もっとも、今回のN. alataは比較的育てるのが容易ではあるようだ。 今はウェブでいろいろと調べることができるのでそれでも楽になったと思う。さてさて、ちゃんと育ってくれるかな。

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

電磁誘導の実験中のファラデーの名言。この実験に対して聴衆の一人が「これが何の役に立つんだ」と言ったことに対し、このように答えたという。 基礎研究は近視眼的な見方では、その価値を計ることはできない。今は何に役立つか分からないことでも、後でとても役に立つことは多々ある。そしてその力は非常に大きいことが多い。だからこそ、基礎研究の規模は国力をも表している。 物事を良く知り遠くまで見通すことができる人は基礎研究の重要性を知っているが、そうでない人は役に立つか分からないからいらないという。自分が今いる便利な世の中がそういう基礎研究があって初めて存在できるというのにね。

King's Court

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

B-CAS

B-CAS なんて使っている時点で地上デジタル放送の普及なんて難しいんじゃないかな。 最近、地上デジタルチューナーは5,000円以下で商品化されるべきという情報通信審議会からの要請があったが、B-CAS使っている現状じゃそれも難しいし、大体、今まで視聴できていた番組に対して新たに5,000円もの金なんて払えない・払いたくないという人も多いと思う。 利用者のことを考えずに利権だけを求める今の放送業界やそのシステムじゃ、利用者離れと不正利用の横行を促すだけになるだろうね。本当、正直者と無知な者がバカを見るだけ。 自分の場合だったら、そんなTV番組なんて見ないし、Webによる動画で十分かな。HDコンテンツを観たいならBDあたりを観るだろうし。ところで、BDはアメリカと日本のリージョンが一緒なのが良いね。HD DVDなんてリージョンフリーだし。

LittleBigPlanet

LittleBigPlanet は一言で説明するには難しい新ジャンルのコミュニティベースのクリエイティブアクションアドベンチャーゲームだ。最初はそれほど興味は無かったが、世界中の人たちと自分の分身である人形を操って協力しながらプレイする様は見ているだけで楽しくなる。 結構前から知られているタイトルだがまだ発売日も決まっていないので、のんびり待つことにしよう。PS3のタイトルが本格的に揃いだすのは来年になるだろうな。 以下、LittleBigPlanetのトレイラー。

一家に1枚周期表

一家に1枚周期表第3版について (文部科学省) 元素それぞれにその用途や写真などを載せてあり、見てるだけで楽しい周期表。教科書に載っているような味気ないものよりもこちらのほうが断然良い。

diNovo Edgeキーボード

diNovo Edge™ キーボード(DN-1000)が日本でも8月10日に出るらしい。充電式Bluetoothワイアレスキーボードだ。ガラスのような質感で外観もスタイリッシュでよい感じ。パナソニックのLet's noteでお馴染みのぐるぐるスクロールも搭載している。価格は24,800円と、現在、自宅でも職場でもメインで使っている HHKB Professional とほぼ同じ値段。 リビングにTV兼用のPCを購入したのでそこで使いたいが、子供たちも利用するのでちょっと考えてしまうなぁ。すぐに壊されてしまいそうだ…。

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

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

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

上の図のAのタイルとBのタイルでどちらの色の方が濃い? 答えは、どちらも同じ濃さ。疑うのであれば、画像ファイルの問題のタイルだけ切り出して比べてみると良い。人間の目は信用ならないという話でした。 MITの Edward H. Adelson教授 の Checkershadow Illusion から。

echochrome

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

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

以前に比べてプログラムのソースコードにコメント書くことが少なくなった。まあ、大抵は自分だけが見るものだから他人に迷惑はかからないと思うのだけど、改めてそのことについて考えてみた。 確かに以前はそれなりにコメントを入れていたけど、それはそのコードを数ヶ月後に見たとき、何をしているのかわからなくなっていたからだ。しかし、今はコメントが書かれていなくても以前作ったコードを見て何をしているのかわかる。それは、クラス名、関数名、変数名を付けるときかなり慎重に決めるようになったのが大きいと思う。その関数や変数を見れば、大体何をしているかわかるのだ。関数や変数を見れば何をしているかわかるのに、わざわざコメントを付けるのもなぁ、と考えて付けなくなってきたのだと思う。 後は、クラスを使ったオブジェクト指向なプログラミングのおかげだろう。それぞれのクラスが独立しているおかげで、互いの依存関係をほとんど無視できるから、そのクラスや関数の動作も理解しやすいのだ。デザインパターンに沿っていれば、全体の動作はすぐに頭に浮かぶ。 そのようなわけで、コメントが減った。まあ、共同作業ではそうも言っていられないのだろうけど。因みに自分がよく使うプログラミング言語はC++とPythonだ。

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

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

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キーも初めのうちは動作がぎこちなく使い勝手が悪いんじゃないかと思ったが、使っているうちにこなれてきてうまく動作するようになった。 後は、無印のときでもそうだったように、便利なアプリケーションをインストールすればもっと良くなるだろうな。そういや、普通の操作では

新型PSP

軽量・薄型に進化し、ビデオ出力機能を標準搭載した 新型 PSP®「プレイステーション・ポータブル」(PSP-2000) カラーバリエーションとともに9月発売決定 新型のPSPが9月に発売らしい。これは欲しいかも。今までのPSPからの変更点は、重さが2/3、厚さが4/5、UMD読み込み短縮、外部ディスプレイへの出力などで、利用してるFull HDディスプレイにD端子で接続できるのは嬉しい。

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()

37%ルール

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

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

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

セカンドライフとPS3のHome

最初に言っておくが、セカンドライフ(Second Life)とPS3のHomeは別物だ。どちらも3D空間をアバター(プレイヤーの操作するキャラクター)が自由に動き回れる。しかし、ユーザーコンテンツを主体とするセカンドライフに対して、PS3のコミュニティの場を主眼としてるHomeでは根本的な存在意義が違うのだ。 セカンドライフではユーザーが自由に「モノ」を作ることができる。たとえば、野球のボールでも、公園の滑り台でも、天を突くような高層ビルでも作ることができる。それは形だけではなく動作などもプログラムを組むことにより実現できる。また、そうしたものをほかのユーザーに売ることもできる。さらに売った金は現実の金に換金できるのだ。つまり、セカンドライフはそれ自体で完結した世界を持つコンテンツなのだ。 一方、PS3のHomeではどうか。発表された資料によれば、まず、ユーザーがコンテンツを自由に作成できない。また、Homeでユーザーが金を稼ぐこともできない。そして、コミュニティの場を提供するというコンセプトからHome自体が独立したコンテンツとはならないだろう。 では、セカンドライフはすべてにおいてHomeより秀でているのだろうか。それは違うと思う。 まず、第一にグラフィックはHomeの方が格段に良い。実行する環境の性能の違いというわけではなく、ソフトウェア側のデザインの問題である。最初に選べるアバターがあんなに酷いはわざとではないかと勘ぐってしまうほどだ。ユーザーが作成したものはかなり良いものもあるが、それらは購入しなければならない。腕に自信のあるユーザーは自分で作成することもできる。それでも、大抵の人は最初に選べるものよりも良いものはなかなか作れないだろう。 まあ、アバターはどうにかできるとしても、セカンドライフ内の環境を変更することは難しい。ここでいう環境とはプログラム動作のことだ。ネットワーク回りの出来の良し悪しに関わるのか、周りの建物や木などの「モノ」が一つ一つ描画されるのが見て取れるほど表示が遅い。さらに、たくさんの人が集まる場所に行くと止まったかと思うほど動きが遅くなる。これは、プレイアビリティを著しく低下させている。自分は1999年に発売されたEverQuest(EverQuest2ではない)をかれこれ8年もプレイしているが、この古いネットゲー

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]]) >>>

虚数のテトレーション

虚数 i の「 i の i 乗」乗はテトレーション(tetration)として以下のように表すことができる。 3 i = i i i で次のような計算を行ってみた。 ∞ i = 0.438282936727…+0.360592471871… i 実数部と虚数部は収束してそれぞれ0.43828…と0.36059…となる。 これって何か意味がある数なのか?

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

e i π + 1 = 0 をPythonで実際に計算してみる。証明などは Wikipedia あたりでどうぞ。 >>> from math import * >>> exp(1)**(1j*pi)+1 1.2246063538223773e-016j という訳で、1.22×10 -16 i という極小の虚数が出てきたが、これは計算誤差ということでオイラーの等式は正しく計算されることがわかった。 ついでに Googleでも計算 してみた。

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進数なので先頭

マスコミと中立性

「一部報道に関するマイクロソフトの見解」 から。 「コンピュータソフトの政府調達において、原則として、マイクロソフト製品(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

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

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の問題については以下にヒントを書いておく。どうしてもわからない場合にだけ見て欲しい。 2 38 と画面に出てるが、これを計算するだけである。あとはURLで示されている"0.html"を" 計算の答え .html"に変更すれば良い。

次世代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は子供のおもちゃになった。 ドリンクの自販機…取り出し口から取り出しにくい。これじゃ駄目だ。失格。そう思っていたら、取り出し口から自動でせり出てくる自販機に出会った。これはすばらしい。合格。

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 お勧めです。

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, &

バーナム効果

まずは、 究極の血液型心理検査 を実際に試してから続きを読んで欲しい。 誰にでも当てはまるような適当な話をされると、多くの人は自分にだけに当てはまるもののように錯覚し、自分をぴたりと言い当てているように感じる。占いや血液型性格診断で良く当たると思われるものはこの バーナム効果 のためだと解釈できる。 まあ、人に迷惑をかけない限り占いや血液型診断を信じるのは構わないが、このバーナム効果のことは知っておいたほうが良いだろう。多くの詐欺に使える手口なので、これを知っていることで騙されることが回避できるかもしれない。まあ、騙される人はそれでもきっと騙されるのかもしれないけど。人を見たら泥棒と思え…とはまで言わないけど、冷静になって客観的に自分を見る目を養うことは重要だと思う。

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を利用しなければならない。

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

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

「 カオス―新しい科学をつくる 」は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"

複数の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_s

氷と炎の歌

久々に寝食を忘れて読める本に出会った。 氷と炎の歌 シリーズは、ジョージ・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)」、現在では死に絶えたと言われる「ドラゴン」、ある種の魔法など、いくつかのファンタジーの要素もあるにはあるが、物語を味付けするためのスパイスとして入れられているに過ぎず、それが主となることはない。この物語は、現実世界となんら変わるところはない人間の生き様や愛憎を扱った、ヒューマンドラマなのだ。それだけに、嫉妬や憎悪など人間の負の面が赤裸々に描かれており、所謂「綺麗な」話を望む人々や子供たちは読まないほうが良いだろう。 この氷と炎の歌で特筆されることは、明確な主人公がいないことである。それぞれの章で登場人物の一人が指定され、その主観で物語が綴られている。その人物が感じたこと考えていることで構成されいるので、同じ物事の描写も章によって大きく異なる。また、選ばれる人物は基本的に立場の弱い人々である。弱いといっても社会的弱者という意味ではなく、その環境で困難な状況にある人物という意味であり、身分としての弱者ではない。このマーティンという作家は弱者を描くのがとてもうまいと思う。 この物語では主人公がいないと書いたが、裏を返せば安全な

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'

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 Curv