2008年4月30日水曜日
変わったマンホール
世の中には、マンホールの写真を撮って日本中を旅する愛好家がおられるようなので、私のような素人があれこれ言うのは恥ずかしいんですけど、まあそこそこ風変わりかな?と思えるマンホールを見つけました。
富士山と、井戸?
富士山噴火の前兆か!? 井戸から水が噴き出した!
とか
東海地震で、液状化現象が発生!
とか、そういう意味ではないんだと思います。
なるほど、そういうことですか。
2008年4月29日火曜日
2008年4月28日月曜日
リラックマ マグカップは2個だけにしておく
ローソンの「春のリラックマフェア」というので、ポイントシールを20点あつめれば、もれなく「リラックマ マグカップ」がもらえる、というもの。
- シールが貼り付けられているのは、5月6日まで。
- 引換期間は、5月12日まで。
ということで、まだがんばれるんですが・・・
2個だけでやめておくことにしました。
というのは、どうも、じわじわと太ってきたから・・・(笑)
運動量を増やせばいいんですけどねぇ。なかなかうまくいかず。
あれ、今気がついたんですが、ウェブでダウンロードするシールの台紙には、最初からポイントシール1点が、おまけでついてるんですね。
http://www.lawson.co.jp/campaign/rilakkuma/mug.html
■ 過去記事
2008年4月26日土曜日
L字型の字幕まで出す必要あるの?
「あたしンち」で、長野聖火リレーLIVEっていう・・・
冒頭3分ほどで消えてしまいました。
☆
ところで、来年2009年の夏から、テレビ画面の上下に黒帯をもうけて、「アナログ放送が終了します」っていう字幕を流すそうです。
(たぶんそのころには、ほとんどすべての番組の画面サイズが16:9になってるから、4:3なテレビでは、自然と上下黒帯ができる。あまってるそこを使っちゃえば、ちょうどいい。俺って頭いい!みたいな議論がされてるんでしょうね・・・)
いやがらせですか?
いじめ、よくない!
ひさしぶりにFirefoxが起動しなくなりました(笑)
Windows版のFirefoxですが、今朝、こんなことがありました。
- Firefoxを起動した。
- アドオンを更新するか?って聞かれた。
- 更新させないと、Firefoxが落ちることはわかっているので、更新させた。
(過去記事) 「Windows版のFirefoxで、「Firefox アドオンの更新」で[スキップ]ボタンをクリックすると、Firefoxが異常終了する」 - 更新処理の途中で、よくわかんないエラーがでた。
- Firefoxが異常終了した。
- 仕方ないから、もう一度、Firefoxを起動。
- 即座に、異常終了するようになった。
- もう、何をやっても、いきなり異常終了。
☆
さてさて、
そんなことは想定の範囲内だよっ!
っていう声が聞こえてくるかのように、ご丁寧なことに、スタートメニューの中には、「Mozilla Firefox (セーフモード」)」というのが登録されてます。
いきなり異常終了じゃ、できることがないので、素直に、セーフモードで起動。
なんか言ってるけど、チェックボックスはぜんぶオフのままにしておき、「セーフモードを続ける」をクリック。
先ほど、「いきなり異常終了」のきっかけを作ったアドオンを無効にする。
セーフモードなFirefoxを終了。
Firefoxを普通に起動。
うん、直った。
☆
Windowsの常識として、
Windowsを安定して動かしたかったら、余計なソフトはインストールしない
ってのがあります。よくある話。
某メーカー製の新品のパソコン。電源を初めて入れる。どうでもいいアプリがてんこ盛りでインストールされてる。買ったばかりの状態で、すでになんだこりゃ、もっさりもっさり。こんなの、使えねー。
まあ、それと同様に、Firefoxを安定させて使いたかったら、アドオンなんてインストールしない、ってあるのかなぁ。
アドオンなしの、素のFirefoxって、それはそれで、使い物にならないって感じも。だんだんよくはなってきてるけど。
☆
このブログを書いている途中でも、Firefoxは、異常終了しました。
ムキーーー!!! なんだよ、これ。
2008年4月25日金曜日
ラジオ スクライド in ロストグラウンド 第2回
最近の楽しみが、ネットラジオの「スクライド in ロストグラウンド」。
http://dbeat.bandaivisual.co.jp/netradio/scryed.php
今回も、電車の中で聞いてました。もう2回目なので大丈夫です。何が?
これを聞くと、あれ?それってなんだっけ?って気になりだして、DVD BOXが欲しくなってしまうので危険です。
☆
このスクライド5.1ch DVD BOXと、ラジオの話ってのは、実は去年の8月19日
で、ポロって話が出てて、でもどうせ大人の社交辞令なんでしょ、みたいに思ってたんです。
本当に実現したわけでして、ああ、もうしわけない。
☆
ところで、どうでもいいんですが、先月のブログ、
でさりげなく、こんな例題を…
使っていた私は、やっぱり先見の明がある。
なんてね。
2008年4月24日木曜日
一部お見苦しい箇所があります。
ハードディスクレコーダの中に、すっかり忘れていた「ドリフ大爆笑」が録画されてました。
で…
一部お見苦しい箇所があります。
ということなんですが、
・
・
・
・
・
・
これのこと?
長さんと志村。
☆
前にもブログに書いたような気もしますが、中学校のときの英語の先生の家は、駅前にあって、長さんのお父さんが、よく自転車をその家にとめさせてもらって、電車に乗って出かけていったそうです。
競輪かなんかのギャンブルに行くために。
今となっては、どこまで実話なのか、確かめようのない話ですが。
2008年4月23日水曜日
IMAPフォルダに日本語を使ったときの文字化けみたいなやつ … 「IMAP-UTF7」というそうだ
普通の人はあんまり見ることはない気もしますが、IMAPでフォルダ名に日本語を使うと、BASE64みたいな、アルファベットや記号など7bitコード文字だけにエンコードされた名前になります。
あれって、IMAP-UTF7という名前のエンコーディングなんだそうです。
簡単にデコードできるツールってないかな?と思って、FreeBSDのportsの中を探してみたら、
ports/converters/p5-Unicode-IMAPUtf7/
というのがありました。
付属していたスクリプトをそっくりマネして書いただけなんですが、とりあえずテストするスクリプト。
require 'Unicode/IMAPUtf7.pm';
my $t = Unicode::IMAPUtf7->new, 'Unicode::IMAPUtf7';my @input = qw(&Tgtm+DBN- &kAFP4W4IMH8wojCkMMYw4A- &j,dg0TDhMPww6w-);
for (my $i = 0; $i < @input; $i++) {
$tmp = $t->decode($input[$i]);
print "|" . $input[$i] . "| -> |$tmp|\n";
}
実行してみる。
% perl imap-utf7.pl | nkf
|&Tgtm+DBN-| -> |下DBN-|
|&kAFP4W4IMH8wojCkMMYw4A-| -> |送信済みアイテム|
|&j,dg0TDhMPww6w-| -> |迷惑メール|
なるほど・・・
ただ、1個めのデコード結果がおかしいような。本当は「下書き」になるはずなんだけど。
nkfがおかしいのかな?と思い、iconv。
% perl imap-utf7.pl | iconv -f 'utf-8' -t euc-jp
|&Tgtm+DBN-| -> |下DBN-|
|&kAFP4W4IMH8wojCkMMYw4A-| -> |送信済みアイテム|
|&j,dg0TDhMPww6w-| -> |迷惑メール|
だめですね。
いろいろ試す。
|&Tgtm+DBN-| -> |下DBN-|
|&Tgs-123| -> |下123|
|&ZvgwTQ-| -> |書き|
|&ZvgwTw-| -> |書く|
|&Tgswa2b4ME0-| -> |下に書き|
|&Tgtm+A-| -> |下A-|
「下書」がアウトらしい・・・
ひょっとして、Unicode/IMAPUtf7.pm がおかしい???
2008年4月22日火曜日
RSSはweb bugだらけ!?
今日、ネットワークが遅い環境で、FirefoxのSageでRSSを表示したところ、なんか妙にたくさんネットワークアクセスしてるな~、と気がつき、ソースを眺めてみたら・・・
web bugってのは、目で見てもわからないような、サイズが1x1の小さい画像ファイルを、HTML中に埋め込んでおいて、ユーザーがどのウェブサイトをアクセスしているのかを追跡するために使われるものです。
プライバシーの侵害だ、ってことで嫌われることが、多いようです。
なお、上のは、某A新聞のRSSを、Sageで処理したあとのソースなので、オリジナルのRSSそのものではないです。
念のため、生のRSSファイルで確認してみると、やっぱり、1つの記事エントリにつき、2個のweb bugがくっついてます。
あの・・・、入れるにしても、RSS1個に、web bug1個、でいいんじゃないの?
1つずつ切り出して表示するツールもあるだろうから、ってことで、徹底的に埋め込んでいるんだと思いますけど。
A新聞以外にもあるのかなと思って、ほかの購読中のRSSを確認してみたら、たくさん、ありました。
☆
RSS・RDFって、シンプルなテキストだけで、「軽い」っていうイメージだったんですが、まさかこんなことになっていたとは・・・
2008年4月20日日曜日
微妙な笑顔。みょうがのミョーちゃん
ひねってるんだか、ひねってないんだか、もうわからない、至高の境地。
やなせたかし先生には脱帽。
みょうがのミョーちゃん
検索してみたら、ミョーちゃん以外にも、何種類ものキャラたちがいました。
には、『高知の野菜11人きょうだい』が、控えめに登場。
- なすのナコさん
- ピーマンのピーくん
- こねぎのネギコちゃん
- きゅうりのキューコさん
- メロンのメロさん
- にらのニラコさん
- 米ナスのナスコさん
- みょうがのミョーちゃん
- おくらのくらちゃん
- ししとうのシシトくん
- しょうがのしょうたくん
このキャラたちは、けっこう前からあるものなんですかね?
ここには、動画がありました。
さらに、
には、「高知やさい体操」という動画が公開されてます。さっき見ようとおもったんですが、なぜか見られませんでした。
・・・あ、見られた。Firefoxじゃダメなの???
(FreeBSD) 1GBのCFをATAに接続したら、timeout waiting to issue command / error issuing READ_DMA command
CF (Compact Flash)を、ATA HDDとして接続できる変換アダプタがあるんですけど、それを使って、1GBのCFを接続して、FreeBSD 7.0-RELEASEを起動したら、こんなエラーメッセージが表示され、結局、CFにアクセスできませんでした。
ad2: 967MB <CF 1GB 20061215> at ata1-master WDMA2
ad2: timeout waiting to issue command
ad2: error issuing READ_DMA command
ad2: FAILURE - READ_DMA timed out LBA=1981725
ad2: timeout waiting to issue command
ad2: error issuing READ_DMA command
ad2: timeout waiting to issue command
ad2: error issuing READ_DMA command
ad2: timeout waiting to issue command
ad2: error issuing READ_DMA command
ad2: timeout waiting to issue command
ad2: error issuing READ_DMA command
(しばらく続く)
ちなみに、1GBのCFの代わりに、64MBのCFを接続した場合は、
ad2: FAILURE - SETFEATURES SET TRANSFER MODE status=51<READY,DSC,ERROR> error=4<ABORTED>
ad2: 61MB <SanDisk SDCFB-64 Vdg 1.21> at ata1-master BIOSPIO
となって、いったんエラーは出るものの、一応認識されて、アクセスできました。
BIOSPIOってのが、なんとなく遅そうなイメージがありますが…
昔から、「ノートパソコンなどでHDD関係のエラーが出たときはsafe modeで」、なんていう話があったので、なんとなく、boot loaderのメニューでsafe modeにしたら、1GBのCFを接続したときでも、今度はエラーにならずに、アクセスできました。
こんな感じで認識されてます。
# dmesg | grep ata
atapci0: <Intel ICH UDMA66 controller> port 0x1f0-0x1f7,0x3f6,0x170-0x177,0x376,0x2000-0x200f at device 31.1 on pci0
ata0: <ATA channel 0> on atapci0
ata0: [ITHREAD]
ata1: <ATA channel 1> on atapci0
ata1: [ITHREAD]
ad0: 117246MB <Maxtor 4R120L0 RAMB1TU0> at ata0-master PIO4
ad2: 967MB <CF 1GB 20061215> at ata1-master PIO4
ネットで検索してみると、こんな情報を見つけました。
http://www.bramschoenmakers.nl/node/85
Installing FreeBSD on a Compact Flash card
これによれば、
FreeBSD 6.2を2GBのCFにインストールしようとすると、
ad2: timeout waiting to issue command
error issuing READ_DMA command ad2というようなエラーがでるので、boot loaderのメニューで、promptへ抜けてから
set hw.ata.ata_dma=0
すればよい。インストール完了後には、/boot/loader.confに
hw.ata.ata_dma=0
と書いておけばよい。
とのことでした。
これと同じ症状みたいですね。
CFの容量によって、ATAのコマンドに対する反応が微妙に異なるのでしょうか。しかし、なんにしても、FreeBSDのataドライバの出来がちょっと悪い、っていう気もします。
☆
今現在、HDDで動かしているFreeBSD 7.0-RELEASEを、必要最小限なファイルだけ、1GBのCFへコピーして、CFだけで動かそうと思って、あれこれやってたんです。
コピーするときは、CFとHDDの両方を接続しているんですが、上記のことをやってしまいますと、HDDのほうまで、PIO4という遅そうなモードになってしまいます。
これは、カーネルがブートした後で、「atacontrol mode」コマンドでモード変更できます。
「atacontrol mode ad0」のようにして、ドライブごとに、現在のモードを確認できます。
# atacontrol mode ad0
current mode = PIO4# atacontrol mode ad2
current mode = PIO4
今、ad0がHDD、ad2がCFなので、ad0だけ変更するには、こんな感じです。
# atacontrol mode ad0 UDMA66
current mode = UDMA66
これで、なんとなく体感的にもキビキビ動くようになった感じがします。
UDMA66以外にもいろんなモードを指定できるので、詳しくはman atacontrolで確認を。
2008年4月19日土曜日
phpDocumentorの-iオプションで、ディレクトリを無視する処理が変?
phpDocumentorで、PHPのファイルから、ドキュメントを自動生成できるといので使ってみているのですが、どうも動きが超遅い・・・。
なんだと思えば、見なくてもいいサブディレクトリ(数千~数万のファイルがある)まで見に行ってるので、そこで時間がかかってました。
「-i」オプションで、無視させることができるらしいのですが、無視していないように見えます。
というわけで調べてみました。
■ 再現用の環境
テスト用の環境を作っておきます。
- 例題として、Console_GetOptを使いました。
- 余計なサブディレクトリを作りました。
- 「-is」オプションをつけると、「Symlink ... Ignored」というメッセージが表示されるので、phpDocumentorが中身をそのディレクトリを探索しているかどうか、観測できるので、適当にシンボリックリンクのファイルを配置しておきます。
% cp -pr /usr/local/share/pear/Console /tmp/
% cd /tmp/Console/
% ls
Getopt.php
% mkdir dir1
% mkdir dir1/dir2a
% mkdir dir1/dir2b
% mkdir dir1/dir2a/dir3
% ln -s /etc/motd dir1/mushi.txt
% ln -s /etc/motd dir1/dir2a/mushi.txt
% ln -s /etc/motd dir1/dir2b/mushi.txt
% ln -s /etc/motd dir1/dir2a/dir3/mushi.txt
■ 実行してみる
% cd /tmp
% phpdoc -is -i 'dir*' -d ./Console -t /tmp/doc/
PHP Version 5.2.5
phpDocumentor version 1.4.1Parsing configuration file phpDocumentor.ini...
(found in /usr/local/share/pear/data/PhpDocumentor/)...done
Maximum memory usage set at 256M after considering php.ini...
using tokenizer Parser
Symlink /tmp/Console/dir1/dir2a/dir3/mushi.txt Ignored
Symlink /tmp/Console/dir1/dir2a/mushi.txt Ignored
Symlink /tmp/Console/dir1/dir2b/mushi.txt Ignored
Symlink /tmp/Console/dir1/mushi.txt IgnoredGrabbing README/INSTALL/CHANGELOG
(以下略)
「-i 'dir*'」オプションを指定しても、「dir1/dir2a」、「dir1/dir2a/dir3」など、奥深いところまで、サブディレクトリを探索しています。
■ ソースコードをながめたり、動作をおっかけてみたりしてみた
phpdocの挙動を追っかけていってみると、どうやら、最初に、ドカッ!と全部のファイルリストを取得してから、その後に、無視するかどうか、チェックしてました。
なにこの、富豪的プログラミングは!?
■ プログラムを改造してみた
最初のファイル一覧を作るところでも、無視するかどうかチェックする処理を追加してみました。
こんなパッチです。
「phpdocumentor.diff.txt」をダウンロード
表面的なとこだけ見て書いたので、すべてのケースできちんと動くかどうか、あまり厳密にチェックしていません。
また、適当にパパッと作っちゃったものなので、どうも、ちゃんと対応しきれていないらしく、「-i」で指定したディレクトリでも、1階層だけ、1度だけは、下っているみたいです。まぁ、いいか…
■ 改造後の動作
% phpdoc -is -i 'dir*' -d ./Console -t /tmp/doc/
PHP Version 5.2.5
phpDocumentor version 1.4.1Parsing configuration file phpDocumentor.ini...
(found in /usr/local/share/pear/data/PhpDocumentor/)...done
Maximum memory usage set at 256M after considering php.ini...
using tokenizer ParserGrabbing README/INSTALL/CHANGELOG
「Symlinkうんぬん」言われなくなったので、-iオプションで指定したサブディレクトリが、きちんと枝狩りされていると思います。
(ただ、先に書きましたが、どうも1階層だけは下ってから、無視するかのチェックをしているっぽいような…)。
■ 関連記事
2008年4月18日金曜日
echo -n
とあるシェルスクリプトで、なぜか、「-n」というログメッセージが表示されるのでなんだろうと思ったら…
Solaris8のechoでは
$ echo -n ""
-n
ああ、そうですか。
☆
-nオプションは、改行しない、っていうオプションのつもりでつけてたんですが、
Solarisの/bin/shのbuiltinなechoと、/bin/echoでは、-nオプションというものは存在していなくて、-nそのものを表示してしまう。
ただしSolarisでも、/usr/ucb/echoの場合は、-nオプションは、改行しない、っていう意味に。
ああ・・・めんどくさい。
☆
echo -nとは関係ないですが、ふと気になったので、Windows XPのコマンドプロンプトで確認。
C:\>echo
ECHO は <ON> です。
おお、これはMS-DOSのころから変わってない。
AUTOEXEC.BATで、最初にecho offと書くけど、そのecho off自体はエコーバックされてしまう。
で、MS-DOS バージョン4でしたっけ? @echo offとかけば、echo offもエコーバックしないようにできた。
ああ、懐かしい。
2008年4月17日木曜日
(Windows XP) ネットワークが使えなくなった。DNSがひけてないっぽい。pingの表示が文字化けする。
ひさびさに電源を入れたノートパソコンで、
- ウイルス定義ファイルのアップデートをしたり、
- Microsoft Update(Windows Update)をしたり、
- そしたらCドライブの空き容量不足になったので、ソフトをアンインストールしたり、
- 固定IPアドレスにしてたのをDHCPに変更したり、
一度にあれこれやったら、ネットワークへのアクセスができなくなりました。
いや、正確に言うと、まったくネットワークアクセスができないわけではなかったです。IP的には通じていて、ちゃんとルータを超えた先にもpingは通りました。
nslookupを実行すると、ネームサーバのIPアドレスの逆引きができない、といきなり表示され(たしか最初に逆引きするんでしたよね)、そのあと、何をやっても、正引き、逆引き、まったくひけない。
Internet Explorerでも、名前引きができないので、まったく使えない。
というわけで、どうもDNSがだめっぽい。
ついでに、DHCPでアドレスも取れなくなった。
変な現象として、pingを実行すると、表示メッセージの一部が文字化けしていて、しかも、ピーとかビープ音がなったり。
その文字化けしている部分って、正常なWindows XPで見てみると、IPアドレスかホスト名が表示されている部分なので、やっぱりDNSの名前引きに関係しているっぽい。
pingの途中でcontrol+Cで中断させると、盛大に文字化けしたり…
いやぁ~、Unixを使い慣れた人からみると、もうまったく意味不明な現象です。お手上げ。
☆
あれこれ悪戦苦闘すること数時間。
ふと、以前おきたトラブルを思い出しました。
そして、マイクロソフトのサポート情報を見る。
http://support.microsoft.com/kb/817571/ja
ネットワークに接続すると、エラー メッセージ "ソケット以外のものに対して操作を実行しようとしました" が表示される
そんなメッセージは出てないのですが、気になったのは、
「TCP/IP を削除して再インストールします」
が、もしかして効果あるかもしれない!と。
というわけで、
- レジストリをバックアップしてから削除、
- TCP/IPを再インストールして(Windows XPの場合、TCP/IPをアンインストールできないんですと)、
- 再起動。
- そして、神様に祈る。
・
・
・
復活しました。
2008年4月16日水曜日
(FreeBSD) find: -delete: /tmp/ttt: relative path potentially not safe
findコマンドってのも、FreeBSD、Solaris、Linuxの何か等、OSごとに「方言」がきついコマンドの1つですよね。OSごとに、オプションがあったりなかったりすることは、よくあります。
いざとなれば、GNUのfindutilsをインストールすれば、違いを吸収できたりしますが…。
さてさて、FreeBSDのfindコマンドには、-deleteという、ファイルを削除してくれるオプションがあります。「-exec rm {} \;」と書かなくてすむので、いくらか便利かな、みたいなものですが。
しばらく前から気になってたんですが、
find: -delete: /tmp/ttt: relative path potentially not safe
というようなメッセージが表示されることがあります。
実例をあげます。
たとえば、以下のようなお膳立てをしておきます。
cd /tmp
mkdir ttt
mkdir ttt/uuu
mkdir ttt/uuu/vvv
touch ttt/uuu/vvv/www.txt
touch ttt/uuu/vvv/xxx.txt
touch ttt/uuu/vvv/yyy.txt
そのあと、あまり実用的でない、無意味な実行例ですが、「find /tmp/ttt -print -delete」を実行します。
% find /tmp/ttt -print -delete
/tmp/ttt/uuu/vvv/www.txt
/tmp/ttt/uuu/vvv/xxx.txt
/tmp/ttt/uuu/vvv/yyy.txt
/tmp/ttt/uuu/vvv
/tmp/ttt/uuu
/tmp/ttt
find: -delete: /tmp/ttt: relative path potentially not safe
「relative path potentially not safe」がでますね。
そして結局、/tmp/tttというディレクトリは削除されずに残ります。
% ls -lRa /tmp/ttt
total 6
drwxr-xr-x 2 ttt wheel 512 4 15 22:37 ./
drwxrwxrwt 10 root wheel 3072 4 15 22:37 ../
ちなみに、以上は、FreeBSD 7.0-RELEASEで実行した結果です。
findコマンドのマニュアルを読んでみますか。
-delete
Delete found files and/or directories. Always returns true.
This executes from the current working directory as find recurses
down the tree. It will not attempt to delete a filename with a
``/'' character in its pathname relative to ``.'' for security
reasons. Depth-first traversal processing is implied by this
option.
なるほど。でも、ここの意味
a filename with a ``/'' character in its pathname relative to ``.''
なんか微妙というか、あいまいな気がしません?
/tmp/ttt だったら、relativeじゃなくて、absolute pathじゃないか…って。
わからないことがあったら、ソースコードを確認。
の、この部分ですね。
/*
* -delete functions --
*
* True always. Makes its best shot and continues on regardless.
*/
int
f_delete(PLAN *plan __unused, FTSENT *entry)
{
/* ignore these from fts */
if (strcmp(entry->fts_accpath, ".") == 0 ||
strcmp(entry->fts_accpath, "..") == 0)
return 1;
/* sanity check */
if (isdepth == 0 || /* depth off */
(ftsoptions & FTS_NOSTAT) || /* not stat()ing */
!(ftsoptions & FTS_PHYSICAL) || /* physical off */
(ftsoptions & FTS_LOGICAL)) /* or finally, logical on */
errx(1, "-delete: insecure options got turned on");
/* Potentially unsafe - do not accept relative paths whatsoever */
if (strchr(entry->fts_accpath, '/') != NULL)
errx(1, "-delete: %s: relative path potentially not safe",
entry->fts_accpath);
strchr(entry->fts_accpath, '/') で判断しているので、“/”が含まれているときはエラー扱いになるようで。
manに書いてある“.”なんてのは関係なくて、directory tree内をtraverseしていって 、降りていったディレクトリをカレントディレクトリとみなして、そこからの相対パスで、というか、ディレクトリ名をまったくつけない(/を含まない)、ファイル名だけが、entry->fts_accpathに入ってるっぽいです。ふつうは。
ただし、findの起点を/tmp/tttのように絶対パスで指定すると、最後の最後で、entry->fts_accpathには、起点の/tmp/tttが、そのまま代入されてしまうみたいで、
find: -delete: /tmp/ttt: relative path potentially not safe
となっていた、というわけですか。
じゃあ、どうすればいいかっていうと、起点を/tmp/tttのような絶対パス指定しなければいいというわけで、正解は「find ttt -print -delete」になるんでしょうね。
% cd /tmp
% find ttt -print -delete
ttt/uuu/vvv/www.txt
ttt/uuu/vvv/xxx.txt
ttt/uuu/vvv/yyy.txt
ttt/uuu/vvv
ttt/uuu
ttt
% ls -ld ttt
ls: ttt: No such file or directory
ただ、起点となるディレクトリは消えて欲しくない、っていう場合もあったりしまして~、実は私のやりたかったことが、まさにそれでして、たまたま結果オーライで、「find /tmp/ttt ...」でうまくいってたのでした。
2008年4月15日火曜日
(FreeBSD) portsでインストールしたphpDocumentorが動かない ~ PHP Parse error: syntax error, unexpected T_DNUMBER in /usr/local/share/pear/PhpDocumentor/phpDocumentor/Setup.inc.php on line 193
あまりよく知らないんですが、javadocみたいに、PHPでソースコードからドキュメントを生成できるphpDocumentorというツールがあります。
FreeBSDでは、portsになっていて、ports/devel/pear-PhpDocumentorです。
さっそく使ってみようと思ったら、
PHP Parse error: syntax error, unexpected T_DNUMBER in /usr/local/share/pear/PhpDocumentor/phpDocumentor/Setup.inc.php on line 193
というエラー。
ファイル
/usr/local/share/pear/PhpDocumentor/phpDocumentor/Setup.inc.php
の193行目を見てみると…
192 $phpver = phpversion();
193 $phpdocver = PHPDOCUMENTOR_1.4.1;
194 if (isset($_GET['interface'])) {
195 $phpver = "<b>$phpver</b>";
196 $phpdocver = "<b>$phpdocver</b>";
197 }
198 phpDocumentor_out("PHP Version $phpver\n");
199 phpDocumentor_out("phpDocumentor version $phpdocver\n\n");
「PHPDOCUMENTOR_1.4.1」というのが、定数っぽいけど、なんとなく文法的におかしい。
そこで、その部分を適当に書き換えてみて、もう一度実行してみると、今度はべつのところで、似たようなエラー。
910 {
911 $this->render->addConverter('HTML','frames','default/');
912 }
913 if (empty($this->render->converters)) addErrorDie(PDERROR_NO_CON1.4.1TERS);
今度のは、「PDERROR_NO_CON1.4.1TERS」・・・って何これ?!
ports/devel/pear-PhpDocumentor/Makefileを見ると、こんなのがあります。
post-patch:
.for file in ${SUBFILES}
@${REINPLACE_CMD} -e 's|VER|${PORTVERSION}|g ; \
s|@PEAR-DIR@|${PEARDIR}|g ; \
s|@DATA-DIR@|${DATADIR:S,/${PORTNAME}$,,}|g ; \
s|@WEB-DIR@|${DATADIR:S,/${PORTNAME}$,,}|g ; \
s|@DOC-DIR@|${DOCSDIR:S,/${PORTNAME}$,,}|g' ${WRKSRC}/${file}
.endfor
どうも、sedの置換コマンド、s|VER|${PORTVERSION}|g で、VERというところを、手当たりしだいに置換しているらしく、たとえば、
PHPDOCUMENTOR_VER が PHPDOCUMENTOR_1.4.1 へ
PDERROR_NO_CONVERTERS が PDERROR_NO_CON1.4.1TERS へ
という具合に、勢いあまって、余計なところまで書き換えてしまっているようです。
とりあえず、portsのMakefileを、こんな風に書き換えて、VERを置換しないようにして、動作を確かめてみました。
post-patch:
.for file in ${SUBFILES}
@${REINPLACE_CMD} -e '\
s|@PEAR-DIR@|${PEARDIR}|g ; \
s|@DATA-DIR@|${DATADIR:S,/${PORTNAME}$,,}|g ; \
s|@WEB-DIR@|${DATADIR:S,/${PORTNAME}$,,}|g ; \
s|@DOC-DIR@|${DOCSDIR:S,/${PORTNAME}$,,}|g' ${WRKSRC}/${file}
.endfor
これでmake installしてから、phpdocを実行。
% phpdoc -d ./html -t ./html_doc
PHP Version 5.2.5
phpDocumentor version @VER@
Parsing configuration file phpDocumentor.ini...
(found in /usr/local/share/pear/data/PhpDocumentor/)...
done
Maximum memory usage set at 256M after considering php.ini...
using tokenizer Parser
(以下略)
@VER@というのが変ですが、とりあえず動きました。
ということは
@${REINPLACE_CMD} -e 's|@VER@|${PORTVERSION}|g ; \
の間違いなのかな?
2008年4月14日月曜日
自宅サーバをFreeBSD 7.0-RELEASEにアップグレードしてみた ~ 1年くらい前の6.2-STABLEから7.0-RELEASEへ…ちょっとめんどくさかった。
自宅サーバといってもたいそうなものではなく、アキバで買ってきたジャンク・パーツと、余ってたパーツのよせあつめで組み立てた、Celeron 900MHz、512MB程度なFreeBSDマシン。
普段は、ディスプレイも、キーボードも、マウスもつながず、apache、samba、imap-uw、ntp、vtundなどを動かしている程度。
土曜日、なんとなくその気になったので、思い立ったが吉日、去年の秋くらいの6.2-STABLEから、7.0-RELEASEにアップグレードしてみたました。いつもRELEASE版はインストールせずに、インストールしようと思った時点のSTABLE版をインストールしてたんですが、なぜか気まぐれで、snapshot版の7.0-STABLEにしませんでした。
会社で使ってるパソコンは、今は、3月末ころの7.0-STABLEで、自分でmake buildworldしたやつで、とくにトラブルもなく動いてますけど。
☆
いつものように、非常に正しくないインストール方法で、アップグレード。失敗すると、起動しなくなりますけど。
- 今動いているFreeBSD上で、ftpサイトから、7.0-RELEASE-i386-bootonly.isoという34MBほどの小さいファイルをダウンロード。
- isoイメージを、mdconfigして、mount。
- isoイメージ内の/boot以下を、今動いているFreeBSDのハードディスクの/bootとしてコピー。一応、もともとの/bootは、mv /boot /boot- とかやって残しておくけど。
- おもむろにreboot。
- boot loaderのメニューで、loaderのプロンプトに抜けて、boot -a
- rootパーティションはどこですか?と聞いてくるので、ufs:md0a
- これで、インストーラが起動するので、あとはupgradeを実行。
まあ、ほんとに、めちゃくちゃな方法ですが、これでもけっこううまくいくし、いざとなれば、別の方法で…
というわけで、うまく行くかと思ったら、インストーラで、ファイルのコピー中、そう、GENERIC kernelをコピーしている最中に、ファイルシステム・フルでエラーに・・・
あ~、そういえば、そんな話がありました。
7.0-RELEASEでは、なぜか、acpi.ko.symbolsなど、*.symbolsというファイルが/boot/kernel/以下へコピーされるので、ルート(/)パーティションの空き容量不足になる恐れがあると…
初めてインストールしたFreeBSDは、バージョン1.1くらいでしたが、あのころって、/パーティションは64MBにしてたと思います。その後、なんとかやりくりしてたんですけど、いつのバージョンだったか、どうやっても足りない、ってことで256MBに増やしました。
今の自宅サーバはまだ256MBのままですが、ここ1~2年くらい、新規インストールするときは512MBにしてます。
ちなみに、/パーティション1つだけ、ってのは、個人的にはめったにやりません。/、/var、/usr、/usr/local、/home、きちんとわけます。バックアップをとるときに、細かく分けておいたほうが便利だから、っていう理由からです。
☆
さて・・・、7.0-RELEASEで、またしてもディスクの空き容量不足。
- インストール中、Alt + F4で、端末を切り替えると、シェルが動いているので、そこで、ファイルを消しまくったり、別パーティションへ退避したり。
- そこそこ空いたので、Alt + F1で、インストーラの画面に戻り、なんかキーを押したら、もう一回コピーすんの?と親切に聞いてくれてるので、もう一回、kernelのコピー。
- 心配だったので、コピーしている最中に、Alt + F4して、*.symbolsを削除したり(コピー中は、/boot/kernelではなくて、/boot/GENERIC/だったかも?)。
とりあえず、ベース部分は、これで7.0-RELEASEにアップグレードされました。
/etc/以下のファイルとか、置き換えたり書き換えたりする必要がある場合もありますが、あとまわし。
FreeBSD6のときのバイナリをしばらくの間そのまま実行できるようにするため、/usr/ports/misc/compat6x をインストールしました。
そして、/lib、/usr/lib、/sbinなどに、古いファイルが残ったままになってるので、これを削除します。いつも、タイムスタンプを見てエイヤで消してたんですけど、なんかいい方法を見つけました。
FTPサイトから、src以下にある、sbase.*と、stools.*をダウンロードする
/usr/src/以下に展開する。
こんなファイルがありますが…
-rw-r--r-- 1 root wheel 6188 1 1 18:36 COPYRIGHT
-rw-r--r-- 1 root wheel 399 1 13 2006 LOCKS
-rw-r--r-- 1 root wheel 6918 5 24 2007 MAINTAINERS
-rw-r--r-- 1 root wheel 11597 11 22 10:33 Makefile
-rw-r--r-- 1 root wheel 37935 1 22 06:58 Makefile.inc1
-rw-r--r-- 1 root wheel 193168 1 31 03:12 ObsoleteFiles.inc
-rw-r--r-- 1 root wheel 3077 6 7 2006 README
-rw-r--r-- 1 root wheel 37842 2 24 14:17 UPDATING
drwxr-xr-x 12 root wheel 512 2 25 00:20 tools/
この中のMakefileを見てみます。このへん。
# check-old - List obsolete directories/files/libraries.
# check-old-dirs - List obsolete directories.
# check-old-files - List obsolete files.
# check-old-libs - List obsolete libraries.
# delete-old - Delete obsolete directories/files/libraries.
# delete-old-dirs - Delete obsolete directories.
# delete-old-files - Delete obsolete files.
# delete-old-libs - Delete obsolete libraries.
いつのころからか、「make delete-old」とかで、古いファイルを削除できるんですよね。便利。すごく便利。
これをするために、全部のソースは必要ないようで、先ほどの、sbase、stoolsだけで十分なようです。
まずはmake check-oldなどで確認してから、make delete-oldで削除するのですが、削除していいか、いちいち聞かれて、yと答えてやらなければならないので、けっこう面倒です。
というわけで、「yes | make delete-old」とかやっちゃいます。意味がわかんない人は、yesというコマンドを実行してみてください。意味がわかんないことになると思いますけど(笑)。
/usr/bin/yesは、ひたすら、yと出力しつづけるコマンドです。
☆
とりあえず、これでも、6.2-STABLEのときのバイナリはそのまま実行できるはずなんですが、なんか微妙に動かないものがいくつかあるみたいでした。
たとえばvtund。
# /usr/local/etc/rc.d/vtund start
Starting vtund.
/libexec/ld-elf.so.1: /lib/libc.so.7: Undefined symbol "environ"
なぜ6.2-STABLEのときにビルドしたvtundが、7.0-RELEASEのlibc.so.7をリンクしているのでしょうかね。なんかおかしい。
% ldd /usr/local/sbin/vtund
/usr/local/sbin/vtund:
liblzo.so.1 => /usr/local/lib/liblzo.so.1 (0x280fb000)
libcrypto.so.5 => /lib/libcrypto.so.5 (0x28117000)
libc.so.7 => /lib/libc.so.7 (0x28270000)
# ldd /lib/libcrypto.so.5
/lib/libcrypto.so.5:
libc.so.7 => /lib/libc.so.7 (0x28080000)
ふーん、libcrypto.so.5がlibc.so.7ですか・・・って、libcrypto.so.5も、FreeBSD7用みたいなんですけど。
去年の10月くらいのsnapshot版の6-STABLEのISOイメージがまだFTPサイトにあるので、中を見たら、
-r--r--r-- 2 root wheel 996688 10 13 2007 libcrypto.so.4
なぜ、うちのFreeBSDは、libcrypto.so.5になってるんですかね…
もともと/usr/local/lib/libcrypto.so.5があったのが、何かのときに削除されてしまった、とか?
今はもうportupgradeしてしまったので、何が起きたのか、もはやわかりません。
まあいいや。
☆
FreeBSDで気に入ってるのは、OSのバージョンアップ時に、ダウンタイムを極力短くできることです。
- (本当はまずいのですが…)、動かしたまま、make installworldで、新しいファイルをコピーしてから、一度リブート。
- そのあと、新バージョンのOSでブートしても、既存のインストール済みソフトは、とりあえずそのまま動く。
- 動かしながら、暇をみつけながら徐々に、portupgradeで再ビルドしする。
今回も、ソースのコンパイルからはやりませんでしたが、これと同様の作戦で行こうと思ったら、なんかうまくいかなかったです。わりと、あわててportupgradeしてやららねばならぬ、ってことになりました。
FreeBSD7になって、/lib/libthr.soというスレッドライブラリが使われるようになって、これのせいで、FreeBSD6のときのバイナリが動かなくなることが多いんですけど、今回もそれですかねぇ?
以前、こんなこともありました。
opensslをportupgradeした後、wgetが動かなくなりました。
# ldd /usr/local/bin/wget
/usr/local/bin/wget:
libintl.so.8 => /usr/local/lib/libintl.so.8 (0x280af000)
libssl.so.5 => /usr/local/lib/libssl.so.5 (0x280b9000)
libcrypto.so.5 => /usr/local/lib/libcrypto.so.5 (0x280fa000)
libc.so.6 => /usr/local/lib/compat/libc.so.6 (0x2823d000)
libiconv.so.3 => /usr/local/lib/libiconv.so.3 (0x28324000)
libthr.so.3 => /lib/libthr.so.3 (0x2841c000)
libc.so.7 => /lib/libc.so.7 (0x2842f000)
libc.so.6とlibc.so.7がまじってるのも気持ち悪いですが、libthr.so.3が入ってますね。そのせいっぽいです。
そのほか・・・
% ls -l /*.core
-rw------- 1 root wheel 28672 4 12 11:17 /httpd.core
-rw------- 1 root wheel 18743296 4 12 11:17 /nmbd.core
-rw------- 1 root wheel 65536 4 12 11:17 /smbd.core
-rw------- 1 root wheel 12288 4 12 11:17 /spamass-milter.core
-rw------- 1 root wheel 67604480 4 12 11:16 /testparm.core
-rw------- 1 root wheel 67584000 4 12 11:17 /wget.core
もう、ボロボロですね。
OSのメジャーバージョンがあがったときなどは、portupgrade -afするのがたぶん正式な方法だと思います。…が、Celeron 900MHzでそれをやるのはつらいです。
とりあえず、サーバとして動いているソフトは先にportupgradeしてやり、できるだけ迅速にネットワークサービスを再開。
残りは、ぼちぼちとportupgradeしていくということで。
☆
なんだか早々にエラーがでました。
---> Skipping 'print/cups-base' (cups-base-1.3.5) because a requisite package 'gnutls-2.0.2_1' (security/gnutls) failed (specify -k to force)
---> Skipping 'japanese/samba3' (ja-samba-3.0.28,1) because a requisite package 'gnutls-2.0.2_1' (security/gnutls) failed (specify -k to force)
** Listing the failed packages (-:ignored / *:skipped / !:failed)
! graphics/tiff (tiff-3.8.2_1) (unknown build error)
! security/gnutls (gnutls-2.0.2_1) (unknown build error)
* print/cups-base (cups-base-1.3.5)
* japanese/samba3 (ja-samba-3.0.28,1)
tiffでこけてますね。
# make
===> Building for tiff-3.8.2_1
Making all in port
Making all in libtiff
make all-am
/bin/sh /usr/local/bin/libtool --tag=CXX --mode=link c++ -O -pipe -march=pentiumpro -L/usr/local/lib -o libtiffxx.la -rpath /usr/local/lib -no-undefined -version-number 4:0:0 tif_stream.lo ../libtiff/libtiff.la ../port/libport.la -ljpeg -lz -lm -lc
c++ -shared -nostdlib /usr/lib/crti.o /usr/lib/crtbeginS.o .libs/tif_stream.o -Wl,--whole-archive ../port/.libs/libport.a -Wl,--no-whole-archive -Wl,--rpath -Wl,/home/ports.work/usr/ports/graphics/tiff/work/tiff-3.8.2/libtiff/.libs -Wl,--rpath -Wl,/usr/local/lib -Wl,--rpath -Wl,/usr/local/lib -L/usr/local/lib ../libtiff/.libs/libtiff.so /usr/local/lib/libjpeg.so -lz -L/usr/lib -lstdc++ -lm -lgcc_pic /usr/lib/crtendS.o /usr/lib/crtn.o -march=pentiumpro -Wl,-soname -Wl,libtiffxx.so.4 -o .libs/libtiffxx.so.4
/usr/bin/ld: cannot find -lgcc_pic
*** Error code 1
なんですか、この「-lgcc_pic」ってのは。
あれこれ調べてみたら、libtoolがくっつけてるみたいです。
# grep gcc_pic /usr/local/bin/libtool
postdeps="-lstdc++ -lm -lgcc_pic -lgcc_pic"
# ls -l /usr/local/bin/libtool
-r-xr-xr-x 1 root wheel 228170 11 20 23:03 /usr/local/bin/libtool
# pkg_which /usr/local/bin/libtool
libtool-1.5.24
libtoolが、6.2-STABLEのときのままだったのがいけなかったみたいです。libtool、ついでにauto*などを、先にportupgradeすべきだったんですね。
gccのバージョンが、3.4.xから4.2.xに変わったんでしたっけ?
とりあえず、これで解決。
☆
重要なソフトはportupgradeが終わったので、残りは、とりあえずportupgrade -aしてやりました。
一晩あけたら、エラーで終わってたんですが、エラーの理由は、ldconfig_compat-1.0_8がどーのこーの。
これ、baseにもう入ってるので、入れなくてもいいパッケージなんでしたよね。
pkgdb -Fしても依存関係から消してくれなかったので、pkg_delete -f ldconfig_compat-1.0_8 で無理やり削除してから、pkgdb -F
今度は
Stale dependency: xrx-1.0.1 -> ldconfig_compat-1.0_8 (misc/ldconfig_compat):
-> Deleted. (irrelevant)
とかえんえんと出続けて、依存関係を直してくれてますが・・・これがもうすごく遅い。かなり時間がかかりました。
☆
portupgrade -aは終わりました。
でも、これは、portsでバージョンがあがってるパッケージしかビルドされません。
バージョンが変わっていないパッケージは、まだ、6.2-STABLEのときのバイナリのままです。
なので、portupgrade -fで、再ビルドしていきます。
これをするとき、いい方法ってあるんですかね? portupgrade -afだと、さきほど再ビルドしたものまで全部、また再ビルドしちゃうし。
どうやら「+DESC」というファイルのタイムスタンプが、インストールしたときのものらしいのですけど…
% cd /var/db/pkg
% ls -ltr */+DESC | head
-rw-r--r-- 1 root wheel 325 12 3 2005 p5-Sys-Hostname-Long-1.4/+DESC
-rw-r--r-- 1 root wheel 317 12 3 2005 uudeview-0.5.20/+DESC
-rw-r--r-- 1 root wheel 418 12 4 2005 texi2html-1.76_1,1/+DESC
-rw-r--r-- 1 root wheel 472 12 4 2005 nasm-0.98.39,1/+DESC
-rw-r--r-- 1 root wheel 207 12 4 2005 wakeonlan-0.41/+DESC
-rw-r--r-- 1 root wheel 176 1 27 2006 p5-gettext-1.05_1/+DESC
-rw-r--r-- 1 root wheel 187 1 28 2006 uulib-0.5.20_1/+DESC
-rw-r--r-- 1 root wheel 138 1 28 2006 tex-texmflocal-1.9/+DESC
-rw-r--r-- 1 root wheel 406 1 28 2006 libmng-1.0.9/+DESC
-rw-r--r-- 1 root wheel 225 3 25 2006 ja-gawk-3.0.6/+DESC
これを目安にしながら、portupgradeしてます。
% ls -lt */+DESC | grep '200[567] ' | grep -v ' font-'
| grep -v 'xorg-fonts' | grep -v linux-
| gawk '{print $9}' | sed 's:/+DESC::' | sort | less
みたいな感じでしょうか。
☆
まだまだ終わりそうもないです。
でもまあ、これがまた楽しいんです。だからFreeBSDを使っているわけでして。
■ 関連記事
2008年4月13日日曜日
ロシアパン … 解説つきで謎が解けた
渋い顔の絵がついた「ロシアパン」を見つけました。
なぜ「ロシアパン」という名前なのか、解説がついてます。きっと、メーカーに
「どうしてロシアパンという名前なんですか?」
と電話をかけてくる人があまりにも多くて、
あー、もうめんどくさいから、パッケージに書いておけ!
ってことなんでしょうね。
これの解説によれば、「現在では~形と大きさのみの名前」ということなので、
楕円形の大きいパンは全部ロシアパン!?
やや小さくなるとコッペパン?!
なんでしょうか。
☆
1個、733キロカロリー
■ 過去記事
2008年4月12日土曜日
「ニフ亭」が「二つ亭」に見えて仕方がない
というのを、最近iPodでよく見てますが
何度見ても、「二つ亭」にしか見えないんですけど、二つ目の落語家にかけてる…わけじゃないですよね、まさか。
そんなことはどうでもいいんですけど、このぽっどきゃすてぃんぐ落語、すっごくおもしろいなぁ。
…と思ってたら、「重要なお知らせ」、「配信回数を減」、「スポンサーを募集」だって。
あらら。
☆
高校の授業の一環として、落語家さんを招いて古典落語を聞くイベントがありました。たしか漫画の「味いちもんめ」にも同じようなことがことが描かれていたんですけど、授業で強制的に聞かされたというのは、ぜんぜん面白くなかったような。
というか、あの年代のガキに古典落語って、そりゃ無茶ですよ。
落語のほかに文楽も見たこともあったなぁ。
2008年4月11日金曜日
イヤフォンを買ってきた。安物だけど
今年の2月に、
となったわけなんですが、不満に思ってたのが、iPodに付属のイヤフォン。
音がどーのこーの、っていうことじゃなくて、すぐにポロリと耳から抜け落ちちゃう、それがいかんともしがたく。
だんだんとなじんできたのか(それとも、使ってるうちに、汚れがついてきて、ぺっとりと、耳にくっつくようになってきた・・・?)、そう頻繁にポロポロ抜けることはなくなってきたんですが、今度は、音が気になってきて。
イヤフォンは消耗品だから3000円まで、という自分ルールにしたがって、店頭で、直感に任せて、てきとーに選んで買ってきました。ポイントもずいぶん貯まってるし…
SONY NUDE EX MDR-EX55SL
キャリングポーチが付属していて、iPod nanoごと入ってしまうので便利かも…使ってないけど(笑)
ところで、しばらく前にP905i用に買ったBluetoothヘッドセットがあったんです。
というか、元々、これを使うときに、充電するのがめんどくさくてしょうがなく、iPodのほうがいいかも?と思いだしたころに、偶然、iPod nanoをもらっちゃった、といういきさつもあったんですが、唯一気に入ってたのは、こっちのイヤフォン。音がなんとなく好みにあってました。
で、今回買ったほうは、ずいぶんと軽いかんじの音でした。う~ん、微妙。
オーディオの世界はきりが無いので、あまり欲をださないようにしておこう。うん。
☆
今朝、NHKのニュースで見たんですが、一人ひとりの耳の形に合わせて特注でつくるイヤフォンがあるそうです。10万円とかいう値段もおどろきだったんですが、一番おどろいたのは、耳に樹脂を流し込んで型を採ってるってこと。なんか、そのまま耳がふさがってしまうんじゃないか?とちょっと怖いような。
☆
(2008-4-13)
本末転倒だけど、こういうのも、ちょっと欲しくなったり…。
プラネックス、iPod用Bluetoothアダプター
http://plusd.itmedia.co.jp/lifestyle/articles/0804/09/news060.html
もともと、Bluetoothヘッドセットの充電がめんどくさい、が出発点だったはずなのに。
2008年4月10日木曜日
風が変わった
具体的なデータを示しながら論述することはできませんが、
今期、女性向けのアニメが増えたな~、と。
2007年後半以降、再放送が増えたな~、ということは、新作が減ってるんだな~、つまり、もうこの路線で突き進むのはダメなんだとようやく認めたんだろうな~、という感じがしてきてました。
というわけで、ここにきて、新たな市場開拓をする・・・って。
NHKが、特番をするほど「今日からマ王」に力いれてるのって、何なんだ?!
それでもまだ多すぎる。
2008年4月9日水曜日
東田研に聞け
今日は雨がけっこうしっかりと降ってました。雨を見ながら、ふと、2~3週間前に見た、「東田研に聞け」を思い出しました。
絵は弘兼憲史で、中身は、ようするに東京電力の広告なんですが、そのとき見たのは電気自動車の話。
将来、一戸建て住宅には、自動車の車庫はいらなくなる。電気自動車だったら、家具の一部として、部屋の中に入れてしまえばいい。
というアイデア。
あ、あの~、雨が降ったら、車には乗らないつもりなんでしょうか…
それに、雨にぬれなくても、やっぱり外を走れば、土ぼこりがついたり、自動車って、汚れてくるはずですよね。
部屋の中に入れるたびに、洗車するつもりなんでしょうか… それはぜんぜんエコロジーじゃない。
将来、汚れない車、ってのができるのでしょうか。光触媒とか…
☆
雑誌に掲載されていたのは4ページだけでしたが、Webでは、音声付きのロングバージョンが見られます。
http://www.tepco.co.jp/pavilion/energy/
そっちにはもっとすごいアイデアが提案されていて、救急車は、そのまま手術室へ入ってしまえ、とか(おもいっきり汚染されるじゃない)、スーパーマーケットの中に、車のまま入ってお買い物、とか(商品をどうやって手に取るのやら)、つっこみどころ満載。
2008年4月8日火曜日
ぱんつ
使われなくなって久しい5インチフロッピーディスク。ちなみに、実家のどこかに、8インチフロッピーも残っているかも…
そのディスクを入れる紙のジャケットのことを、俗に、パンツといいます。
用例
- パンツを脱ぎっぱなしで、だらしないな。読めなくなるぞ。
- パンツを脱いだりはいたりしているうちに、いつのまにか、違うパンツをはいてることあるよね。
なんてことはまったく関係ないんですが、今ごろになって、iPod nanoのパンツを買ってきました。
開けてみてはじめて気がついたんですが、ものすごくショボくて、成形不良で、変なところに穴があいてしまってました。
2mmくらい、微妙にサイズがあわなくて、ちぢんで中身がはみ出してしまったり、または画面に重なって、映像の邪魔になったり。
ストラップは、すぐにもちぎれてしまいそうで、大丈夫かね?と心配なんですが、箱の注意書きに、ものすごく小さい文字で、「破損する恐れがあります」と、どうどうと開き直ったことが書いてあるし・・・
値段が一番安いのにしたら、ホントに、安っぽかったです。
あーあ、損した。
2008年4月7日月曜日
今までずっとカッパだと思ってた
秋葉原へ行く途中、神田橋というところなんですが・・・
このあたり
☆
金色の銅像があるんです。
これって、ずっとカッパだと思ってたんですが、昨日はじめて、「こがね虫」だと知りました。
背中を見ると、カッパの甲羅にしては、ちょっと違うかな、という気もしますし、頭もつんつるてんで、お皿がありません。
台座にはめ込まれたプレートの解説文によれば、「豊展観守像」という題名だそうで、
この彫刻は、活気とやすらぎ・教育と文化の町として知られる千代田区に住む人々の豊かさと発展する町を観守する姿を、こがね虫と人間の擬人化により、
(中略)
寄贈されたものです。
とのことです。
「平成三年九月」という日付も書かれているんですが、なんとなく、バブル景気の最後のともし火か?!と思ってしまいます。
☆
どうでもいいけど、Google Mapの写真が、以前よりもかなり鮮明になってて驚きました。
この銅像が写っててもおかしくなさそうですが、ちょっと見分けられませんでした。
2008年4月6日日曜日
さくらはもうそろそろ…
木によっては、もう散ってしまってるものもあったり。
ところで、サクラを見ながら飲み食い…っていう花見ってのは、人生で3~4回くらいしかやったことがないんですけど、それも、東京に住んでたころだけ。ああいう花見って、都内限定なんではないか…なんてことはないか
久しぶりに秋葉原まで出かけたので、なんとなく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/perlprint "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だけですか?
☆
実は、こんなことがおきてます。
- シェルに対して、ユーザーが./bbb.plを実行しろ、と指示をする
- シェルは、./bbb.plのファイルの先頭を読み出す
- 「#!」と書いてあった場合、そのあとに書かれているコマンドを実行する(厳密には、このへんのカラクリには、もっといろいろあるらしい)
- そのあとに書かれているのは、「/usr/bin/perl」だったらそれを実行するんだけど、改行コードが、MS-DOS形式の0x0d 0x0aとなっている場合が問題。
- UNIXでは、改行コードは0x0aだけなので、0x0dがあまってる。「/usr/bin/perl」に0x0dまでくっつけた、「/usr/bin/perl^M」までをコマンド名だと思って、実行しようとする。
- でも、「/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こ。
生産国は中国だと書いてあります。
☆
シール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へ直送する
超要約すると、
- YouTubeから動画をダウンロードするときのURLの末尾に「&fmt=18」をつけると、映像がH.264で音声がAACなMP4ファイルになる
- そのMP4ファイルをiTunesの上にドラッグ&ドロップして、iPodを同期して、動画ファイルをiPodへ持っていける
- iPodで再生~
ということだそうです。
ホントですか?記事の日付は4月2日ですね・・・
とりあえずだまされたと思ってやってみました。
私は、YouTubeとかニコニコ動画とか、ネット上の動画をぜんぜん見ないので、以下のやり方は、ぜんぜん簡単じゃないし、参考になりません。
まず、Firefoxで、YouTubeにアクセス。適当な動画を選らんでみました。
そして、URLに「&fmt=18」をつけてみました。うむ?画質よくなりましたかね?よくわかんないです。
YouTubeを普段使ってないので、YouTubeをGoogle検索しちゃって…なんか恥ずかしい。
☆
で、動画ファイルをダウンロード。世の中には、いろいろ便利な方法があるってことは知ってるんですが、普段YouTubeは利用していないので、こういうときにすぐに出てこない・・・
というわけで、いきなり、Adblock Plusで、ブロック要素の一覧を表示して、それっぽいURLを探す。
あ~、「get_video」ってのがついてるこれですね。
そのあと、URLをコピーして、FreeBSDな別パソコンにログインして、wgetを使ってダウンロード。ファイル名はaaa.mp4とかにしておきます。
ちなみに、「wget -O ファイル名 'URL'」で、ファイルに保存するときのファイル名を指定できます。
FreeBSDのfileコマンドでファイルの種類を調べてみたら
% file aaa.mp4
aaa.mp4: ISO Media, MPEG v4 system, version 2
だそうです。
☆
iTunesをインストールしてあるパソコンは、また別のパソコンなので(なんでこんなことに、3台もパソコンを使ってるんだい…)、SambaでFreeBSD上のファイルにアクセス。
ダウンロードしたファイルaaa.mp4を、iTunesのウインドウの上の適当なところへ、ドラッグアンドドロップ。
ライブラリの「ムービー」の中に登録されました。
ついでに、ファイルのプロパティを見てみたり。たしかに、MPEG4で、H.264ですね。
あとは、iPodに同期。
おー!再生できたじゃないですか。
また、iPod nanoが楽しくなってきました。
どうせなら、iTunesの中からYouTubeにアクセスできればいいのに・・・
とか思ったみたり。
☆
なんか変だぞ! さっき突然、こんな風になりました。
文字の大きさが、ガタガタ…
昔の、誘拐事件の脅迫状みたい。
2008年4月2日水曜日
あんたの家が火事よ。
てんとう虫コミックス「ドラえもん」第10巻(小学館)収録の『ハリ千本ノマス』より、しずかちゃんのセリフ。
そのセリフの前に、しずかちゃんが言ってるんですが
よろこばせてがっかりさせるのはかわいそうよ。
まあ、かわいそう、かな。
それより、びっくりさせといてあとでほっとさせるほうが親切だわ。
いや、あの、「親切」ってことはないでしょう。
☆
ところで、このコマ
どうしてドラえもんのポケットが無いんだろう?
これってトレースなのかな?
☆
集合住宅のポストによく入ってる迷惑チラシ。
何かあるのか?とドキっとさせておいて、もうまったく…
よく文章を読めば、勧誘チラシだって判断できるので、悪質な詐欺だ!と決め付けるほどではないかもしれませんが、「騙されて加入する人が少しでもいればラッキー」的な、こういう商売のやり方、いやです。
2008年4月1日火曜日
白いおしゃれ小鉢 やっと1個
春のパンまつりの「白いおしゃれ小鉢」、やっと1個、もらってきました。
なんとまあ遅いペース。ローソンと同時参加のせいかな。
シール貼付期間は、5月15日まで。もうちょっとがんまります。
この小鉢、写真ではもっと小さいように思えたんですが、そうでもなかったです。
■ 過去記事