2008年4月7日月曜日

今までずっとカッパだと思ってた

秋葉原へ行く途中、神田橋というところなんですが・・・



このあたり




大きな地図で見る





金色の銅像があるんです。




200804061



これって、ずっとカッパだと思ってたんですが、昨日はじめて、「こがね虫」だと知りました。



 



200804062



背中を見ると、カッパの甲羅にしては、ちょっと違うかな、という気もしますし、頭もつんつるてんで、お皿がありません。



200804063



台座にはめ込まれたプレートの解説文によれば、「豊展観守像」という題名だそうで、

この彫刻は、活気とやすらぎ・教育と文化の町として知られる千代田区に住む人々の豊かさと発展する町を観守する姿を、こがね虫と人間の擬人化により、
(中略)
寄贈されたものです。

とのことです。

「平成三年九月」という日付も書かれているんですが、なんとなく、バブル景気の最後のともし火か?!と思ってしまいます。




どうでもいいけど、Google Mapの写真が、以前よりもかなり鮮明になってて驚きました。



この銅像が写っててもおかしくなさそうですが、ちょっと見分けられませんでした。





2008年4月6日日曜日

さくらはもうそろそろ…

200804051



木によっては、もう散ってしまってるものもあったり。



ところで、サクラを見ながら飲み食い…っていう花見ってのは、人生で3~4回くらいしかやったことがないんですけど、それも、東京に住んでたころだけ。ああいう花見って、都内限定なんではないか…なんてことはないか



200804052



久しぶりに秋葉原まで出かけたので、なんとなく500GB SATA HDDなWD5000AACSを、また買ってしまいました。もう8000円を割ってるってねぇ…ありがたいことではありますが。



フラッシュメモリの値段もまた一段とさがっていますね。2GBが1000円割ってたり。



2008年4月5日土曜日

/usr/bin/perl: bad interpreter: No such file or directory

これは、Linux系なOS、とくにFedora Coreで見かけたエラーメッセージなんですが、

/usr/bin/perl: bad interpreter: No such file or directory

というのをネット検索すると、「ファイルの改行コードが違うのが原因」という回答がよくでてきます。



以下は、ちょっとFreeBSDで試してみた例です。



こんなperlスクリプトがあるとします。

% cat aaa.pl
#!/usr/bin/perl



print "hello world\n";

実行してみます。

% chmod +x aaa.pl
% ./aaa.pl
hello world

正常に動いてますよね。



「nkf --msdos」で、改行コードを、MS-DOS形式のCR LF(\0d \0a)にしてみます。

% nkf --msdos < aaa.pl > bbb.pl

ダンプして確認。0d 0aになってます。

% hd bbb.pl
00000000  23 21 2f 75 73 72 2f 62  69 6e 2f 70 65 72 6c 0d  |#!/usr/bin/perl.|
00000010  0a 0d 0a 70 72 69 6e 74  20 22 68 65 6c 6c 6f 20  |...print "hello |
00000020  77 6f 72 6c 64 5c 6e 22  3b 0d 0a                 |world\n";..|
0000002b

実行してみます。

% chmod +x bbb.pl
% ./bbb.pl
./bbb.pl: コマンドが見つかりません.

エラーにはなりましたが、エラーメッセージがぜんぜん違いますよね。でもですね、いや、あの~、./bbb.plはあるんですけど、見つかりませんってどういうこと?



このエラーメッセージって、実は、シェルが出しているものらしくて、今、たまたま、シェルがtcshだったので、「コマンドが見つかりません.」になっています。



そこで、bashを実行して、bashの上で、bbb.plを実行してみます。

% bash
[ttt@FreeBSD ~]$ ./bbb.pl
bash: ./bbb.pl: /usr/bin/perl^M: bad interpreter: No such file or directory

「bad interpreter: No such file or directory」が出ました。
そう、bashが出してるメッセージだったんですね。



「^M」と表示されていますが、これは、文字コード0x0dのことです。0x0dは、10進数で13ですが、A、B、C、…を、1、2、3、…と数えていくと、13番目がMなので、「^M」なんです。



emacsやviなどのテキストエディタでbbb.plを開くと、行末に^Mがついているのを確認できると思います。



ちなみにですが、FreeBSDの/bin/shで試したら

% /bin/sh
$ ./bbb.pl
./bbb.pl: not found

でした。う~ん、微妙。bad interpreterって、bashだけですか?





実は、こんなことがおきてます。


  1. シェルに対して、ユーザーが./bbb.plを実行しろ、と指示をする


  2. シェルは、./bbb.plのファイルの先頭を読み出す


  3. 「#!」と書いてあった場合、そのあとに書かれているコマンドを実行する(厳密には、このへんのカラクリには、もっといろいろあるらしい)


  4. そのあとに書かれているのは、「/usr/bin/perl」だったらそれを実行するんだけど、改行コードが、MS-DOS形式の0x0d 0x0aとなっている場合が問題。


  5. UNIXでは、改行コードは0x0aだけなので、0x0dがあまってる。「/usr/bin/perl」に0x0dまでくっつけた、「/usr/bin/perl^M」までをコマンド名だと思って、実行しようとする。


  6. でも、「/usr/bin/perl^M」は無いので、エラーになる、と。

以上のようなことなので、改行コードが間違っている以外の場合でも、たとえば、「#!/usr/bin/pearl」と書いてしまったとしても

[ttt@FreeBSD ~]$ ./bbb.pl
bash: ./bbb.pl: /usr/bin/pearl: bad interpreter: No such file or directory

とエラーになります。



・・・まあ、ここまでは、よくある話。





私、GridEngineというソフトウェアを使って、多数のホストで、大量のプログラムを並列実行させることがあるのです。



ホストには、いろんなOS、いろんなCPUアーキテクチャ、いろいろあります。



プログラムは/bin/shのシェルスクリプトにしてあり、そこからperlスクリプトを実行したり、その他バイナリプログラムの場合でも、アーキテクチャの違いを気にしなくてもいいように、環境を整えてあります。



これで、とってもうまいこと動いてくれているのですが、なぜか、Linuxでだけ、ごくごくまれに、だいたい数百~数千回に1回程度の低い確率で、

/usr/bin/perl: bad interpreter: No such file or directory

というエラーがでるのです。たまに、微妙に違うメッセージになったりもしてるのですが、No such file or directoryは共通でした。



これを、ちょっと調べてみました。怪しいのは、automountなんじゃないか?と思って。



たとえば、automountによって、/host/server01/が自動的にNFSマウントされるようになっていたとします。



/host/server01/script/aaa.pl という名前で、以下のようなperlスクリプトをおきます。


#!/usr/bin/perl



for ( $i = 0; $i <20; $i ++ ) {
    print $i . "\n";
    system("mount | grep server01");
    sleep 10;
}


あるLinuxマシンで、/host/server01/script/aaa.pl を実行します。



実行しようとした瞬間/host/server01がNFSマウントされますが、60秒ほど経過すると、自動的にアンマウントされます。



このautomountが自動的にアンマウントするタイミングって、正確にはいつなんでしょうね?マニュアルを読んでもよくわかんなかったのですが・・・



タイムアウト時間が設定できるようになっているんですが(Fedoraなどでは、デフォルトが60秒になっているようです)、タイムアウトって、いつから計ってるんですかねぇ?



マウントしたときから? そのファイルシステムへ最後にアクセスしてから?
後者だという気はしますけど・・・



GridEngineで実行しているシェルスクリプトは、/host/server01/とはぜんぜん別のところにあるのですが、そのシェルスクリプト中に、/host/server01/script/aaa.plを実行しようとします。



ここからはまったくの予想なんですが・・・



NFSのキャッシュかなんかで、/host/server01/script/aaa.pl の先頭に、「#!/usr/bin/perl」と書かれていることだけは、なぜかわかっていて、aaa.plの後半を本格的に読み出そうとしたときに、偶然、automountによって、アンマウントされているんじゃないか?



そうだとすれば、偶然たまたま、すごく低い確率でエラーがでるのも、納得。



ただ、なんとなく、つじつまがあわないんですよね。



aaa.plの「#!/usr/bin/perl」を読み出した時点で、タイムアウト時間が先延ばしになって、アンマウントされるのって、おかしくない?



aaa.plの「#!/usr/bin/perl」を読み出せていたんなら、/usr/bin/perl: bad interpreter: No such file or directory じゃないんじゃない?



という感じ。ただ、perlの実行が開始したあとに、aaa.plが読めないというエラーも、まれに発生してたような、してなかったような・・・


回避方法として、こんなのを考えてみました。



シェルスクリプトの中で、こんなの書き足してみました。

{ cd /host/server01/script/; sleep 1200 & }

NFSマウント先をカレントディレクトリとするプロセスがいれば、自動的にアンマウントされないでしょうからね。



これで、しばらく様子を見てみようと思います。



2008年4月4日金曜日

リラックママグカップ

まず、1こ。



20080403



生産国は中国だと書いてあります。





シール20点で、マグカップが1個、もれなくもらえます。



シール貼付期間は、2008年3月4日から、5月6日まで。



引換期間は、5月12日まで。



ローソンのこういうキャンペーンで、以前、引換期間終了近くに交換にいったら、景品の在庫がなくなってしまっていて、引換券になっちゃったことがあります。



■ 過去記事





2008年4月3日木曜日

YouTubeからダウンロードした動画をiPodでそのまま見る方法がある、というのでやってみました

さっき、たまたまこんな記事を発見。

http://plusd.itmedia.co.jp/pcuser/articles/0804/02/news042.html
高橋敦の「Macでいいじゃん!」第11回:
YouTubeから高画質な動画をゲットしてiPodへ直送する

超要約すると、



  1. YouTubeから動画をダウンロードするときのURLの末尾に「&fmt=18」をつけると、映像がH.264で音声がAACなMP4ファイルになる


  2. そのMP4ファイルをiTunesの上にドラッグ&ドロップして、iPodを同期して、動画ファイルをiPodへ持っていける


  3. iPodで再生~


ということだそうです。

ホントですか?記事の日付は4月2日ですね・・・
とりあえずだまされたと思ってやってみました。

私は、YouTubeとかニコニコ動画とか、ネット上の動画をぜんぜん見ないので、以下のやり方は、ぜんぜん簡単じゃないし、参考になりません

まず、Firefoxで、YouTubeにアクセス。適当な動画を選らんでみました。

そして、URLに「&fmt=18」をつけてみました。うむ?画質よくなりましたかね?よくわかんないです。



200804021



YouTubeを普段使ってないので、YouTubeをGoogle検索しちゃって…なんか恥ずかしい。



で、動画ファイルをダウンロード。世の中には、いろいろ便利な方法があるってことは知ってるんですが、普段YouTubeは利用していないので、こういうときにすぐに出てこない・・・

というわけで、いきなり、Adblock Plusで、ブロック要素の一覧を表示して、それっぽいURLを探す。



あ~、「get_video」ってのがついてるこれですね。



200804022



そのあと、URLをコピーして、FreeBSDな別パソコンにログインして、wgetを使ってダウンロード。ファイル名はaaa.mp4とかにしておきます。



200804023



ちなみに、「wget -O ファイル名 'URL'」で、ファイルに保存するときのファイル名を指定できます。



FreeBSDのfileコマンドでファイルの種類を調べてみたら

% file aaa.mp4
aaa.mp4: ISO Media, MPEG v4 system, version 2

だそうです。





iTunesをインストールしてあるパソコンは、また別のパソコンなので(なんでこんなことに、3台もパソコンを使ってるんだい…)、SambaでFreeBSD上のファイルにアクセス。





200804024



ダウンロードしたファイルaaa.mp4を、iTunesのウインドウの上の適当なところへ、ドラッグアンドドロップ。

ライブラリの「ムービー」の中に登録されました。



200804025



ついでに、ファイルのプロパティを見てみたり。たしかに、MPEG4で、H.264ですね。



200804026



あとは、iPodに同期。



おー!再生できたじゃないですか。



200804027



また、iPod nanoが楽しくなってきました。



どうせなら、iTunesの中からYouTubeにアクセスできればいいのに・・・



とか思ったみたり。





なんか変だぞ! さっき突然、こんな風になりました。



200804028



文字の大きさが、ガタガタ…



200804029



昔の、誘拐事件の脅迫状みたい。





2008年4月2日水曜日

あんたの家が火事よ。

てんとう虫コミックス「ドラえもん」第10巻(小学館)収録の『ハリ千本ノマス』より、しずかちゃんのセリフ。



そのセリフの前に、しずかちゃんが言ってるんですが

よろこばせてがっかりさせるのはかわいそうよ。

まあ、かわいそう、かな。

それより、びっくりさせといてあとでほっとさせるほうが親切だわ。

いや、あの、「親切」ってことはないでしょう。





ところで、このコマ



200804011



どうしてドラえもんのポケットが無いんだろう?



これってトレースなのかな?



集合住宅のポストによく入ってる迷惑チラシ。



200804013



何かあるのか?とドキっとさせておいて、もうまったく…



よく文章を読めば、勧誘チラシだって判断できるので、悪質な詐欺だ!と決め付けるほどではないかもしれませんが、「騙されて加入する人が少しでもいればラッキー」的な、こういう商売のやり方、いやです。





2008年4月1日火曜日

白いおしゃれ小鉢 やっと1個

春のパンまつりの「白いおしゃれ小鉢」、やっと1個、もらってきました。
なんとまあ遅いペース。ローソンと同時参加のせいかな。
シール貼付期間は、5月15日まで。もうちょっとがんまります。



200803311



この小鉢、写真ではもっと小さいように思えたんですが、そうでもなかったです。




200803312



■ 過去記事