2009年8月31日月曜日

ハイチュウ ドリアン

20090830



ハイチュウ
ワールドフルーツ
魅惑のフルーツ
ドリアン



そういえば、ドリアンって食べたことないし、そもそも見たこともない。
ハイチュウは、おいしかった。
臭くはなかった [E:coldsweats01]



2009年8月30日日曜日

藤子・F・不二雄大全集 第2回配本(2009年8月)

8月も、もう終わり。やり残したことがいっぱい。何か重要なことを忘れてた気がする。



おっ、藤子F全集が発売されてるはずだ!



あわてて書店にかけこんで買ってきました。



今月2009年8月、第2回配本は、



  • ドラえもん 2


  • キテレツ大百科 1


  • エスパー魔美 1


の3冊。



200908291



表紙のドラえもんが、コロ助と同じ目をしてます。コンポコも同じ目をしたカットはなかったんでしょうか。不気味な統一感が出てよかったのに…



先月のドラえもんもまだ読めていないんですが、2巻では、知る人ぞ知る、幻のキャラクター、「ガチャ子」が出てきますね。



200908292



キテレツ大百科は、かなり長い期間、フジテレビ系列でアニメが放映しているので、知ってる人も多いでしょうね。藤子不二雄のアニメといえば、テレビ朝日で、シンエイ動画、というのが定番だったので、アニメのキテレツ大百科は、ちょっとばかり、雰囲気が違ってたような気がします。



で、漫画のキテレツ大百科ですが、私は、文庫版のものしか読んだことがなかったのですが、何度見ても、コロ助の絵が、どこかやばい気がしてしょうがないです[E:coldsweats01]



ところで、たぶんアニメ放送期間中ですが、田中道明さんが描いたキテレツ大百科の漫画もありました。



200908293



藤子F作品の中で、ドラえもんは殿堂入りとして別格扱いするとして、好きな作品のランキングを決めるとすれば、私の1位は、エスパー魔美です。80年代に、アニメもけっこう長期間にわたって放映されていましたから、エスパー魔美を知っている人も多いかもしれません。たぶん、好き、という人も多いでしょう。



かつてあった恒例行事、ドラえもんオールナイトでも、エスパー魔美の星空のダンシングドールの予告編が流れるときは、映画館の場内に、「ああぁー・・・」と、静かだけど心の底から自然と出てきた、ため息のような切望が混じったような声が響いてましたっけ。



エスパー魔美のどこが好きかっていうと、魔美というキャラがかわいくて、全員みんな生き生きしてるし、心温まる感動モノというストーリーがとにかくいいし、設定もいいし(例のアルバイトとか[E:coldsweats01])、すべてがパーフェクト。



たしか小学生のころに読んだ、単行本のドラえもんの巻末に、そのほかの藤子不二雄の漫画の本を紹介する広告ページがあって、そこにエスパー魔美があったような気がするんですが、子供心にもちょっと対象年齢層が高めな感じがして、どんなのものなのかドキドキしていたような記憶があります。



中学生のときは、素直な心で藤子F作品を読めなかった時期。高校生のとき、アニメのエスパー魔美に出会って、あっこれいいかも、と思った。大学生のとき、文庫版に出会って、どっぷりと魅力に引き込まれた。そんな過去があります。



そういえば、数年前に、実写のドラマが、NHK教育で放映されたこともあったっけ・・・黒歴史?





忘れてたことの1つは、先月買った3冊を読むことでした。



1冊目として読み始めたパーマンの途中で、力尽きた・・・





■ 過去記事









 



2009年8月29日土曜日

(FreeBSD) /libexec/ld-elf.so.1: Shared object "libopenjpeg.so.2" not found, required by "evince"

最近、GNOME2な環境で、PDFファイルをダブルクリックしても表示されないな~と思ってたんです。Adobe Readerでなら表示できるので、ま、いいかと、しばらく放置していたんですが、気持ち悪いので、ようやく調べてみました。



PDFはevinceというツールで表示されるようになっていました。しかし



% evince
/libexec/ld-elf.so.1: Shared object "libopenjpeg.so.2" not found, required by "evince"

ということで、libopenjpegという共有ライブラリが見つからないのが原因でした。




先日
も書いたんですが、



  • ある1台のFreeBSDマシン(A)でだけ、portsを使って、make packageや、「portupgrade -p ナニナニ」でbinaryパッケージを作成する


  • そのほかのFreeBSDマシン(B)では、「portupgrade -PP ナニナニ」で、binaryパッケージを使ってアップデートする


ということをやってます。



今回は、(B)で、libopenjpegが見つからないというエラーになっていて、(A)では、libopenjpeg.so.10があって、ちゃんとevinceが動きます。



(A)で調べてみました。



% pkg_which /usr/local/lib/libopenjpeg.so.2
openjpeg-1.3_1



% pkg_info -R openjpeg-1.3_1
Information for openjpeg-1.3_1:



Required by:
blender-2.49a_1



(B)ではblenderはインストールしていませんでした。そのためopenjpegもインストールされていませんでした。



とりあえず、(B)では、pkg_addでopenjpegをインストールすれば、evinceが動くようになります。



結局、evinceからopenjpegへの依存関係が、portsでは記録されていないのに、実際には依存関係ができてる、というのが問題ですね。



以前も

(FreeBSD) portsのdevel/gettextは、textproc/libcrocoに依存していないようで、実は依存してる

ということがあったように、どうも、portsでは、この依存関係の漏れが、たびたびあるようです。



一概にportsがおかしい、というわけではなくて、たとえば今回の場合、openjpegが無い環境でevinceをビルドすると、openjpegを使わないevinceができあがるはずです。



たまたまインストールされている共有ライブラリを、configureスクリプトで発見してしまって、リンクされるようになる・・・でも、portsはそんなこと知らなかったよ、という感じ。



portsでinstallするときに、リンクされている共有ライブラリを調べて、自動的に依存関係を追加して記録してくれる、とかできるといいかも知れないですが、portsでの処理が重くなってしまうかも。



まあ、地道にportsのほうで対応をしていき、「もしかすると使われるかもしれない、その他のソフト」をきちんと把握して、make configで選択できるようにしたり、WITH_ホゲで、使う/使わないを指定できるようにするのが、正しい解決方法な気もします。





ちなみに、evinceが直接openjpegに依存しているわけではなくて、



  • evinceはpopplerに依存していて、


  • popplerはopenjpegに依存している、


という関係になっていました。



% ldd /usr/local/lib/libpoppler.so.4
/usr/local/lib/libpoppler.so.4:
        libjpeg.so.10 => /usr/local/lib/libjpeg.so.10 (0x2818c000)
        libopenjpeg.so.2 => not found (0x0)
        libxml2.so.5 => /usr/local/lib/libxml2.so.5 (0x284a9000)
        libfreetype.so.9 => /usr/local/lib/libfreetype.so.9 (0x285ce000)
        libfontconfig.so.1 => /usr/local/lib/libfontconfig.so.1 (0x281c0000)
        libz.so.4 => /lib/libz.so.4 (0x281e9000)
        libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0x28640000)
        libm.so.5 => /lib/libm.so.5 (0x28735000)
        libc.so.7 => /lib/libc.so.7 (0x28089000)
        libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x2874a000)
        libiconv.so.3 => /usr/local/lib/libiconv.so.3 (0x28755000)
        libexpat.so.6 => /usr/local/lib/libexpat.so.6 (0x2884e000)





poppler-0.10.6のconfigureスクリプトでは、openjpegを使うかどうか、コントロールできるようになっているみたいです。



% ./configure --help | grep -i openjpeg
  --disable-libopenjpeg   Don't build against libopenjpeg.



2009年8月28日金曜日

(FreeBSD) apacheで、[warn] (2)No such file or directory: Failed to enable the 'dataready' Accept Filter

FreeBSDのportsで、apacheが2.2.13になってますが、さっそくアップデートしてみたところ、/usr/local/etc/rc.d/apache22 start して、apacheが起動する時に

Starting apache22.
[Thu Aug 27 08:58:26 2009] [warn] (2)No such file or directory: Failed to enable the 'dataready' Accept Filter

とか表示されました。



なんだこれは?と思って、ソースコードをgrepしてみたんですが[E:coldsweats01]、apache httpdのマニュアルによれば、このAcceptFilterのことらしいです。

AcceptFilter ディレクティブ
http://httpd.apache.org/docs/2.2/mod/core.html#acceptfilter

これ、どこかで見た覚えがあるぞ、という感じがしますが、以前あった、accf_httpとよく似たものですね。

(FreeBSD) apache-2.2.xの「httpd -DNOHTTPACCEPT」って何だ? ~ accf_http

apache httpdのマニュアルを見て、なるほど[E:wink]、と思ったんですが、accf_dataは、httpsのSSL通信のときに、パフォーマンスを向上させるもの、とのこと。



accf_httpは、クライアントから送られてくるリクエストのGET、HEADがサーバーに届くまで、ソケットのacceptを遅らせて、無駄なコンテキストスイッチを無くすことで、処理性能が向上する、という機能でした。



ところがhttpsのときは、カーネルのレベルではまだ暗号化されているデータしか見えてないので、GETやHEADといった文字列を検索することができず、accf_httpは使えない
・・・そこで、accf_dataでは、データの中身は気にせず、とにかく、クライアントからサーバーまで何かデータが到着するまでは、カーネルにてacceptを遅らせるってわけですね。



ちなみに、accf_dataのソースコードはこんな風になってます。



http://www.freebsd.org/cgi/cvsweb.cgi/src/sys/netinet/accf_data.c?rev=1.12.2.1;content-type=text%2Fx-cvsweb-markup



短いですね~ 実質、if文が1個だけですか。





未確認ですが、2.2.11のときは、accf_dataはデフォルトで有効になっていなかったと思うんですけど、2.2.13からデフォルトになったのでしょうか。





root権限で、あらかじめ、



kldload accf_data



を実行して、カーネルモジュールのaccf_data.koをロードしておいてから、/usr/local/etc/rc.d/apache22 startしてやれば、Failed to enable the 'dataready' Accept Filter がでなくなるようです。



/usr/local/etc/rc.d/apache22の中で、accf_http.koは自動でロードさせることができるのですが、accf_data.koはロードしてくれません。



そもそもhttpsを使うかどうかを、httpd.confでコントロールできるようになっているので、httpsを使わない場合は、accf_data.koをロードしても無意味なので、という考えがあるのでしょうか。



それとも、まだ/usr/local/etc/rc.d/apache22を更新するのを忘れているだけ、とか?





FreeBSDのaccept_filter(9)のマニュアルを見てみますと



http://www.freebsd.org/cgi/man.cgi?query=accept_filter&apropos=0&sektion=9&manpath=FreeBSD+7.2-RELEASE&format=html



こんなことが書かれています。

HISTORY
The accept filter mechanism was introduced in FreeBSD 4.0.

AUTHORS
This manual page was written by Alfred Perlstein, Sheldon Hearn and
Jeroen Ruigrok van der Werven.

The accept filter concept was pioneered by David Filo at Yahoo! and
refined to be a loadable module system by Alfred Perlstein.



そういえば、Yahoo!で、FreeBSDが使われているという話がありましたっけ。



直感的には、accf_httpって、ものすごくたくさんのアクセスがあるWebサーバーでしか、パフォーマンス向上が目に見えてこないんじゃない? と思うところがあったんですが、Yahoo!だったら、たしかに、有効でしょうね。





2009年8月27日木曜日

08月27日のココロ日記(BlogPet)

飼育当番で短いビックリにえさをあげました。ココロにすりすりしてくれました。

*このエントリは、ブログペットのココロが書いてます♪

(FreeBSD) libmagic.so.1が2つある

とあるFreeBSDマシン(1)で、偶然気がついたんですが



% ldd /usr/local/lib/php/20060613/http.so
/usr/local/lib/php/20060613/http.so:
        libmagic.so.1 => /usr/local/lib/compat/libmagic.so.1 (0x281d9000)
        libevent-1.4.so.3 => /usr/local/lib/libevent-1.4.so.3 (0x281e6000)
        libcurl.so.5 => /usr/local/lib/libcurl.so.5 (0x28300000)
        libssl.so.5 => /usr/local/lib/libssl.so.5 (0x28341000)
        libcrypto.so.5 => /usr/local/lib/libcrypto.so.5 (0x28385000)
        libz.so.4 => /lib/libz.so.4 (0x284cc000)
        libc.so.7 => /lib/libc.so.7 (0x28089000)
        librt.so.1 => /usr/lib/librt.so.1 (0x284de000)
        libthr.so.3 => /lib/libthr.so.3 (0x284e3000)



というように、/usr/local/lib/compat/以下の共有ライブラリが参照されていました。



別のFreeBSDマシン(2)で調べてみると



% ldd /usr/local/lib/php/20060613/http.so
/usr/local/lib/php/20060613/http.so:
        libmagic.so.1 => /usr/local/lib/libmagic.so.1 (0x481d9000)
        libevent-1.4.so.3 => /usr/local/lib/libevent-1.4.so.3 (0x48300000)
        libcurl.so.5 => /usr/local/lib/libcurl.so.5 (0x48316000)
        libssl.so.5 => /usr/local/lib/libssl.so.5 (0x48357000)
        libcrypto.so.5 => /usr/local/lib/libcrypto.so.5 (0x4839b000)
        libz.so.4 => /lib/libz.so.4 (0x481ed000)
        libc.so.7 => /lib/libc.so.7 (0x48089000)
        librt.so.1 => /usr/lib/librt.so.1 (0x484e2000)
        libthr.so.3 => /lib/libthr.so.3 (0x484e7000)



という感じで、compatではない、/usr/local/lib/の共有ライブラリが参照されていました。



どちらも、FreeBSD 7.2なマシンなんですが、同じlibmagic.so.1を見ているけど、場所が異なるって、どういうこと?



FreeBSDマシン(1)で調べてみると、libmagic.soなファイルは



% locate libmagic.so.
/usr/lib/libmagic.so.3
/usr/local/lib/compat/libmagic.so.1
/usr/local/lib/compat/libmagic.so.2



1、2、3と、3種類もある。



FreeBSDマシン(2)でも同様に調べてみると、libmagic.soなファイルは



% locate libmagic.so.
/usr/lib/libmagic.so.3
/usr/local/lib/compat/libmagic.so.2
/usr/local/lib/libmagic.so.1



やっぱり1、2、3と、3種類もあるんですが、ディレクトリが異なります。



FreeBSDマシン(1)でのlibmagic.so.1は何者ぞ?



% pkg_which /usr/local/lib/compat/libmagic.so.1
compat5x-i386-5.4.0.8_9



FreeBSDマシン(2)でのlibmagic.so.1は何者ぞ?



% pkg_which /usr/local/lib/libmagic.so.1
file-4.26



おぉ?! なんだそりゃ。



同じ名前で、由来の異なる共有ライブラリがあるじゃないですか。



トラブルのタネになりそうで、気持ち悪いです。



ついでにいえば、file-4.26は、ports/sysutils/fileでインストールしたものですが、/usr/bin/fileと、/usr/local/bin/fileの、2つのfileコマンドが存在することになってしまうんですよね。それも、トラブルのタネになりそうです。



そういえば、昔、/usr/bin/lprと/usr/local/bin/lprの2つの、同名だけど微妙に別機能のコマンドがあって、混乱したことがあったっけ。



なぜFreeBSDマシン(2)では、portsのfileがインストールされてたかというと、



% pkg_info -R file-4.26
Information for file-4.26:

Required by:
amavisd-milter-1.4.0
amavisd-new-2.6.4_1,1



ふーん・・・



実は、FreeBSDマシン(2)でバイナリパッケージを作っておいて、そのあとFreeBSDマシン(1)でバイナリパッケージを使って、インストール/アップデートをしています。



ただ、FreeBSDマシン(1)には、amavisd-*をインストールしていませんでした。たまたまインストールしてあったcompat5x-i386-5.4.0.8_9には、同名のlibmagic.so.1があったので、偶然にもライブラリのシンボルは解決できてしまっていた、というわけでした。気持ち悪いなぁ。







/usr/local/lib/php/20060613/http.so は、ports/www/pecl-pecl_httpでインストールされたファイルだったと思いますが、これ、どうせなら/usr/lib/libmagic.so.3をリンクしてくれればいいのに、と思いました。



似たようなところで、ports/sysutils/pecl-fileinfo の場合、



% ldd /usr/local/lib/php/20060613/fileinfo.so
/usr/local/lib/php/20060613/fileinfo.so:
        libmagic.so.3 => /usr/lib/libmagic.so.3 (0x2818f000)
        libc.so.7 => /lib/libc.so.7 (0x28089000)
        libz.so.4 => /lib/libz.so.4 (0x281a1000)



と、/usr/lib/libmagic.so.3なんですよね。







/usr/local/lib/compat/以下のライブラリが参照されることに気がついたのは、最近、ports/devel/libltdl22へアップデートしたので、再ビルドしまくっていたときのことでした。

% ldd /usr/local/lib/php/20060613/mcrypt.so
/usr/local/lib/php/20060613/mcrypt.so:
        libmcrypt.so.8 => /usr/local/lib/libmcrypt.so.8 (0x28194000)
        libltdl.so.4 => /usr/local/lib/compat/pkg/libltdl.so.4 (0x281c5000)
        libc.so.7 => /lib/libc.so.7 (0x28089000)

という感じで、古いライブラリをリンクしたままのものが、いくつか見つかりました。portsのバージョン番号(末尾につく、_1とか_2の部分)が更新されないので、こうなってしまうんですが、仕方ないので、portupgrade -fで、強制的に再ビルドしまくりました。

ついでに見つかったのが、gnutlsで、これも古いほうをリンクしたままのがいくつかありました。

% ldd /usr/local/libexec/clock-applet|grep compat
        libgnutls.so.26 => /usr/local/lib/compat/pkg/libgnutls.so.26 (0x292db000)

portsは、ソフトのバージョンアップにすばやく対応できるすぐれものですが、なかなかすぐには完璧に対応しきれないところもありますね。



もっとも、わかっていれば、自分でなんとかなってしまう、ってのもportsのよさではあります。





2009年8月26日水曜日

晴海大橋 ・・・なんてあったっけ?

日曜日に自転車でお台場まで行ったときのこと。



晴海3丁目の交差点で、あれ?っと思ったんですが、道路案内の看板を信じて直進。



そのうち、「あれ~?こんな場所、これまで走ったことないぞ」と、不安になってもきたり。



それでも、出発前に地図を確認したときに想定していたルートどおりに走行して、きちんと目的地に到着。



200908251



うちに帰ってから、もう一度地図を確認して、なっとく。




大きな地図で見る



晴海大橋というのが、2006年3月25日に開通してたんですね。

晴海大橋 (ウィキペディア)
http://ja.wikipedia.org/wiki/%E6%99%B4%E6%B5%B7%E5%A4%A7%E6%A9%8B

一番最近このあたりへ来たのは、2007年8月18日だったんですが、そのときは橋があることに気がついていませんでした。



これまでは、晴海通りを走り続ける、やや迂回ぎみのコースでして、晴海3丁目の交差点を左折して(一番最初、右折した。方向としては右が正しいけど、橋がなくて行き止まり[E:coldsweats01])、豊洲とか東雲とかを通ってました。晴海大橋のおかげで、すんなりと直進できますね。便利。



しかも!



道路は広いし(歩道も広いけど、砂利っぽい)、なんだか、やたらと交通量が少ないです。自転車で走りやすい[E:happy01]



200908253





晴海大橋は、高さもあって、とっても眺めがよく、軽く高所恐怖症な感覚もあじわえたりもしました[E:coldsweats01] 海面を覗き込むとね・・・



この↓写真は、晴海大橋の上から撮ったものなので、正面に写っている橋は、晴海大橋ではないです。



200908254



橋の中央には「とよすおおはし」と書かれていました。豊洲大橋というそうで、まだ開通していないみたいです。








200908252



高速道路1000円とか言う前に、レインボーブリッジを自転車で渡れるようにしてくんないかなぁ [E:gawk]



 



2009年8月25日火曜日

G

日曜日、お台場で紙芝居



実はすっかり忘れていたんですが、帰りにガンダム見てってね~と勧められたので、しっかりと見てきました。



場所を知らなかったんですが、自転車にのって、たぶんコッチ!と思って走っていた方向で、正解でした。ところどころ、案内看板も出てましたし。



まあ、たしかにすごいと思うんです。しかし・・・



200908240



観客の人数の多さのほうに、びっくりしました。



200908241



会場へ行くまでの通路は、人気の神社の初詣のような大混雑でした。



木々の間の小道を抜けていったその先、土ぼこり舞い上がる広場に、Gがいた。



200908242



数百年~千年以上昔に、巨大な大仏像を作っちゃったときは、きっと、みんなビックリ仰天。



それと同じようなものじゃないんですかね、この21世紀の世の中に現れたガンダムは。



ふと気がつけば、goo地図に、もう載ってる。仕事が早い。



200908243



http://link.maps.goo.ne.jp/map.php?MAP=E139.46.23.913N35.37.13.708&ZM=9



 



2009年8月24日月曜日

紙芝居

お台場で、例の[E:coldsweats01]紙芝居を見てきました。







20090823



4人の紙芝居師が、それぞれまったく異なるタイプの紙芝居を口演してて、なるほど、こういうのをやってたんだと、実物を見て、やっとわかりました。



元々、らむねたん[E:coldsweats01]目当てで見に行ったんですが、最初から最後まで、とっても楽しく、あっという間の1時間でした。



例のどこかで見たことあるような(あれは偶然の一致らしい)二人のキャラのお話は、子どもにもわかりやすく、なるほどそういうオチが・・・



はじめて見た「ほっちゃんの夏休み」は、ちょっと心がきゅうぅっとなる、いい話でした。ネタばれ禁止? 昭和テイストたっぷりな男の子が登場した時点で、すぐ、ああいう話になるって気がついたんですけど、うん、いいですね。同じ紙芝居を見て聞いていても、子どもと大人とで、違った印象を受けるんじゃないですかね。






200908232



PAでちょっとトラブってたみたいですが、臨機応変に対応してて、さすがだなと関心してしまいました。



 



2009年8月23日日曜日

ようやくWi-Fi

ようやく、ドラクエ9で、無線LANを使えるように設定しました。



ふだん無線LANはまったく使っていないのですが、「WEPは使ってはいけない!」とはよく言われるので、WPAとかいうので接続できるように設定してありました。



ところが、ドラクエ9は、それだとダメとのことで、じゃあ使わない、と放置してあったんです。



それでも、まあそのへんの機能も使わないと、ドラクエ9は十分楽しめないんじゃなかな、ということで、ようやく重い腰を上げることに。



そもそも、うちにある無線LANルータってどうやって使うんだっけ?とか、あーパスワード忘れた!とか、そういう段階からつまずいてもみたり。



SSIDを、ポチ、ポチと入力していって・・・

ムキー!間違えてWEP64のを入れちゃった!!

とか、うっかりもあったんですが、あーなんだ、AOSSってのを使えばいいんですね。



あっさりと、接続できちゃいました。



20090822



Wi-Fiショッピングというのは、お金をアイテムでも買うのかな、それって公認のリアルマネートレーディング(RMT)か?と思ってたんですが、ゲーム内通貨で買うんですね。



別に買っても買わなくてもどうでもいいものしかありませんでした。



毎日、内容が変わるっぽい感じですね。



 



2009年8月22日土曜日

(FreeBSD) ports/devel/pearで、一部のファイルがコピーされない

portsのpear-1.8.1をportupgradeでインストールしてみたのですが、一部のファイルがコピーされず、不完全な状態になるようです。



原因はあまり詳しく調べていませんが、



  • 古いphp4をインストールしてあるマシンだった


  • インターネット接続できない環境でmake installしていた。/usr/ports/distfiles/pear-1.8.1.tar.bz2はある


という状況で発生しました。



しかも嫌なことに、インストールが不完全だったのにもかかわらず、portsとしては、まったくエラーにはなっていません。表面上は、正常にインストールできたっぽい感じで、make installは完了します。



portupgradeで、pear-1.8.1へアップデートされるときのログ。



** Forcing upgrade of a held package: devel/pear
--->  Upgrading 'pear-1.7.2' to 'pear-1.8.1' (devel/pear)
--->  Building '/usr/ports/devel/pear'
===>  Cleaning for pear-1.8.1
===>  Extracting for pear-1.8.1
=> MD5 Checksum OK for pear-1.8.1.tar.bz2.
=> SHA256 Checksum OK for pear-1.8.1.tar.bz2.
===>  Patching for pear-1.8.1
===>  Applying FreeBSD patches for pear-1.8.1
===>  Configuring for pear-1.8.1
--->  Backing up the old version
--->  Uninstalling the old version
--->  Deinstalling 'pear-1.7.2'
pkg_delete: package 'pear-1.7.2' is required by these other packages
and may not be deinstalled (but I'll delete it anyway):
pear-HTML_Common-1.2.4
pear-HTML_Form-1.3.0
pear-HTML_Select-1.2.1
pear-HTML_Table-1.8.2
[Updating the pkgdb <format:bdb_btree> in /var/db/pkg ... - 546 packages found (-1 +0) (...) done]
--->  Installing the new version via the port
===>  Installing for pear-1.8.1
===>   pear-1.8.1 depends on file: /usr/local/include/php/main/php.h - found
===>   pear-1.8.1 depends on file: /usr/local/lib/php/20020429/pcre.so - found
===>   pear-1.8.1 depends on file: /usr/local/lib/php/20020429/xml.so - found
===>   Generating temporary packing list

Bootstrapping Installer...................
Bootstrapping PEAR.php............(local) ok
Bootstrapping Archive/Tar.php............(local) ok
Bootstrapping Console/Getopt.php............(local) ok

Extracting installer..................
Using local package: PEAR.............ok
Using local package: Structures_Graph....ok

Preparing installer..................
Updating channel "doc.php.net"
Channel "doc.php.net" is not responding over http://, failed with message: Connection to `doc.php.net:80' failed: Invalid argument
Trying channel "doc.php.net" over https:// instead
Cannot retrieve channel.xml for channel "doc.php.net" (Connection to `doc.php.net:443' failed: Invalid argument)
Updating channel "pear.php.net"
Channel "pear.php.net" is not responding over http://, failed with message: Connection to `pear.php.net:80' failed: Invalid argument
Trying channel "pear.php.net" over https:// instead
Cannot retrieve channel.xml for channel "pear.php.net" (Connection to `pear.php.net:443' failed: Invalid argument)
Updating channel "pecl.php.net"
Channel "pecl.php.net" is not responding over http://, failed with message: Connection to `pecl.php.net:80' failed: Invalid argument
Trying channel "pecl.php.net" over https:// instead
Cannot retrieve channel.xml for channel "pecl.php.net" (Connection to `pecl.php.net:443' failed: Invalid argument)

Installing selected packages..................
Installing bootstrap package: PEAR...................warning: pear/PEAR requires package "pear/Archive_Tar" (recommended version 1.3.3)
warning: pear/PEAR requires package "pear/Structures_Graph" (recommended version 1.0.2)
warning: pear/PEAR requires package "pear/Console_Getopt" (recommended version 1.2.3)
warning: pear/PEAR requires package "pear/XML_Util" (recommended version 1.2.1)
install ok: channel://pear.php.net/PEAR-1.8.1
PEAR: Optional feature webinstaller available (PEAR's web-based installer)
PEAR: Optional feature gtkinstaller available (PEAR's PHP-GTK-based installer)
PEAR: Optional feature gtk2installer available (PEAR's PHP-GTK2-based installer)
PEAR: To install optional features use "pear install pear/PEAR#featurename"
Installing bootstrap package: Structures_Graph.......XML Error: 'not well-formed (invalid token)' on line '10'
Installing local package: Archive_Tar-stable.........install ok: channel://pear.php.net/Archive_Tar-1.3.3
Installing local package: Console_Getopt-stable.......install ok: channel://pear.php.net/Console_Getopt-1.2.3
===>   Registering installation for pear-1.8.1
===>  Cleaning for pear-1.8.1
--->  Cleaning out obsolete shared libraries


このあとで、pear-HTML_Commonもportupgradeしようとしたら、こんなエラーが出ました。



Warning: sortpackagesforinstall(Structures/Graph.php): failed to open stream: No such file or directory in PEAR/Downloader.php on line 1217



Warning: sortpackagesforinstall(Structures/Graph.php): failed to open stream: No such file or directory in /usr/local/share/pear/PEAR/Downloader.php on line 1217



Fatal error: sortpackagesforinstall(): Failed opening required 'Structures/Graph.php' (include_path='/usr/local/share/pear') in /usr/local/share/pear/PEAR/Downloader.php on line 1217
*** Error code 255



どうやら、Structures/Graph.phpというファイルが見つけられていないようで、実際、本当にGraph.phpがありません。



さきほどのpearがインストールされるときのログをじっくりと見ると



Installing bootstrap package: Structures_Graph.......XML Error: 'not well-formed (invalid token)' on line '10'



というエラーが出ていますが、このせいで、Structures_Graphがインストールされなかった、ということらしいです。



Structures_Graph-1.0.2の中を見てみると、package.xmlの<name>のところに、非ASCII文字が入っているのが原因で、
XML Error: 'not well-formed (invalid token)' on line '10'
が出ているようでした。



<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE package SYSTEM "http://pear.php.net/dtd/package-1.0">
<package version="1.0" packagerversion="1.5.0">
<name>Structures_Graph</name>
<summary>Graph datastructure manipulation library</summary>
<description>Structures_Graph is a package for creating and manipulating graph datastructures. It allows building of directed
and undirected graphs, with data and metadata stored in nodes. The library provides functions for graph traversing
as well as for characteristic extraction from the graph topology.
</description>
<maintainers>
  <maintainer>
   <user>sergiosgc</user>
   <name>Sシォrgio Carvalho</name>



この部分を書き換えて(なんとなくライセンス違反な感じがしないでもない)、Structures_Graph-1.0.2.tgzを作って、pear install -O Structures_Graph-1.0.2.tgz とやってみたんですが、なぜかうまくいかなかったので、手でファイルをコピーしちゃいました・・・



php4のXMLは国際化への対応が不完全ってことでしょうか?



2009年8月21日金曜日

もう、すれちがいっぱなし

20090820



今まで、DSiを外に持ち出すことがなかったんですが、先週、実家に行くときに、ドラクエのすれちがい通信をためしてみて、おもしろいと感じたので、昨日、おとついと、2日ほど、すれちがい通信を試していました。



こんなところ(ドコ?)でも、それなりの人数とすれちがいができてるので、「どんだけ売れてるんだよ、ドラクエ9!?」と、ビックリしてます。



けっこう、地図をくれる人が少ない・・・



マルチプレイ時間が0って、友達いない、ってのがバレバレでさみしいね。



2009年8月20日木曜日

折りたたみ式?

たまたま録画されていたテレビ番組

世界SL紀行
短い夏にきらめくスイス フルカ山岳登山鉄道

を見てて、ちょっと驚いたもの。



左から



200908191



にょろ~



200908192



にょろにょろ~



200908193



かっくん



200908194



右から、ぐぐぐ・・・



200908195



おーらい、おーらい



200908196



はい、完成



200908197



こんな感じで、SLも通る橋になっちゃいました。



200908198



これ、シュテフェンバッハ橋という名前の橋。



冬の間は、たたんで、しまっておくそうです。



 



2009年8月19日水曜日

08月19日のココロ日記(BlogPet)

にょほほさんと旅行するなら、ぜったいハノイには行きたいんですよね

*このエントリは、ブログペットのココロが書いてます♪

万寿の月

田子の月で、「万寿の月」というのをはじめて見つけて、試しに買ってみました。



200908181



皮がもちもちした小さなドラ焼き、という感じ。



200908182



あんこがおいしい。



消費期限が、売ってる次の日、という短さ。なんとなくプレミア感があっていいかも[E:sign02]



2009年8月18日火曜日

カノープス MTV1000

昔(2001~2005年ころ?)、とてもお世話になりました。



ハードウェアMPEG2エンコード機能搭載TVチューナーボード
MTV1000
カノープス



200908171



30800円という値札がついたままでしたが、この値段、今思うと、けっこう高いですか?



いえいえ、買ったときは、安くなったなーと納得して買った記憶があります。



このMTV1000以前から、パソコンでテレビを見たり録画したりできるようになる製品はありましたが、画質が非常に悪いものばかりでした。MTV1000のおかげで、あまりお金をかけることなく、パソコンでテレビを自由に録画、編集できるようになった、といってもいいでしょう。



200908172



たぶん、MTV1000を買って以降、ビデオテープを買わなくなったと思います。SVHSの10巻パックが、いまだに部屋のどこかに残っています。



200908173



部品数が多いですね。



200908174



ボードのサイズも大きめですね。



うちはテレビの電波の入りが悪くて、このMTV1000では、ちょっと画質が悪くなってしまい、困ってました。そのため、ゴースト・リダクション機能つきのビデオと組み合わせて使っていました。



その後、MTU2400とか、MTVX2004、MTVX2005を買い足していって、MTV1000は引退となりました。



今でもMTVX2004は現役です。



MTV1000は、実家パソコンで第2の人生を!ということで、先ほどセットアップしてみました。



HDDレコーダに録画されている番組で、なぜかDVD-Rへダビングできないものがあって([E:coldsweats01]理由はわかってる。外部入力で、テレビのデジタル放送を録画したから)、そのダビングにMTV1000を使いたかったのでした。



 



2009年8月17日月曜日

夏休みの計画は

夏休みは、計画通りにはいかない、ってのは小学生のころからわかりきっているわけで・・・



200908161



ああ、また夏が終わる。何もしないまま・・・



200908162



連日、ドラクエと「読書」しかしてない。



そんな中、微妙におもしろかった1コマ。



200908163



「超絶変身!!アースカイザー」 くぼたまこと





結局、設定が微妙に違うだけで、サンレッドと同じじゃん、ってのは気にすべきことではない、と思う。



2009年8月15日土曜日

pkgsrcでFirefox3をインストールしたらGran Paradiso

以前、



pkgsrcでFirefox2をインストールしたらBon Echo ???



ということがありましたが、Firefox3は、Gran Paradisoという名前になってました。



200908141



mozillaのWebサイトにも
http://www.mozilla.org/projects/granparadiso/
というのがちゃんとあるんですね。



200908142



さて、今回も懲りずにSolaris8でpkgsrcを使ってFrefox3をインストールしたんですが、Firefox 2のときのように、bmake installだけでは済まず、いろいろと手を加えてやる必要がありました。



ビルドしたときはfirefox-3.0.13でして、そのうちpkgsrcのほうが修正されて、すんなりインストールできるようになってしまうかもしれませんが。


まず最初に起きたエラーは、mozilla/memory/jemalloc/jemalloc.c で、

jemalloc.c:317:20: stdint.h: No such file or directory
jemalloc.c:1029: error: thread-local storage not supported for this target

というもの。

stdint.hは、無いものは仕方が無いのでincludeしなきゃいい、ってだけのこと。

問題は2個めのほうの、thread-local storage not supported for this target というエラー。

よくわかんないので、Webで見つけた情報に従うことにして、/etc/mk.confに
PKG_OPTIONS.gecko=-mozilla-jemalloc
と書き加えました。jemalloc自体を使わなくしてしまう、ってことでしょうか。

PKG_DEFAULT_OPTIONS=-mozilla-jemalloc
よりは、
PKG_OPTIONS.gecko=-mozilla-jemalloc
の方が、いくらか望ましいんじゃなかな、という感じで。
ちなみに、最初、
PKG_OPTIONS.firefox3=-mozilla-jemalloc
と書いて、時間を無駄にしました。
geckoなのか。

ビルド中に表示されるメッセージ
==========================================================================
The supported build options for firefox3 are:

        debug mozilla-jemalloc mozilla-single-profile
        official-mozilla-branding

The currently selected options are:

        mozilla-jemalloc

You can select which build options to use by setting PKG_DEFAULT_OPTIONS
or the following variable.  Its current value is shown:

        PKG_OPTIONS.gecko (not defined)

==========================================================================

をちゃんと見てればわかることではありますけど。



次のエラーは
mozilla/uriloader/base/nsDocLoader.cpp あたりの

In file included from ../../dist/include/gfx/nsCoord.h:42,
                 from ../../dist/include/layout/nsIPresShell.h:58,
                 from nsDocLoader.cpp:58:
../../dist/include/xpcom/nsMathUtils.h: In function `float NS_roundf(float)':
../../dist/include/xpcom/nsMathUtils.h:54: error: `floorf' was not declared in this scope
../../dist/include/xpcom/nsMathUtils.h:54: error: `ceilf' was not declared in this scope
../../dist/include/xpcom/nsMathUtils.h: In function `float NS_ceilf(float)':
../../dist/include/xpcom/nsMathUtils.h:111: error: `ceilf' was not declared in this scope
../../dist/include/xpcom/nsMathUtils.h: In function `float NS_floorf(float)':
../../dist/include/xpcom/nsMathUtils.h:123: error: `floorf' was not declared in this scope

というエラー。

なるほど、Solaris8には、floorf、ceilfという関数が無いんですか。


これについては、使われている箇所が少なかったので、ひたすら、castを使って全部書き換えました。

return x >= 0.0f ? floorf(x + 0.5f) : ceilf(x - 0.5f);
となっていれば
return x >= 0.0f ? (float)floor((double)(x + 0.5f)) : (float)ceil((double)(x - 0.5f));
という感じ。



次のエラーは
mozilla/gfx/src/thebes/nsThebesDeviceContext.cpp

nsThebesDeviceContext.cpp: In member function `nsresult nsThebesDeviceContext::SetDPI()':
nsThebesDeviceContext.cpp:177: error: `round' was not declared in this scope
というもの。

はぁ、Solaris8には、roundも無いんですか。

FreeBSDの
/usr/src/lib/msun/src/s_round.c
でroundのソースコードがあったので、それをもらってきてコピペしました。
ただ、FreeBSDではisfiniteという関数が使われていて、Solaris8にはisfiniteも無かったんです。

FreeBSDの
/usr/src/lib/msun/src/s_isfinite.c
を見ると、これは使えないだろう、という気がしたのでパス。

Solaris8には、finiteという関数ならあったので、それでいいんぢゃね?と・・・微妙に違いがあるようですけど、まあいいか。

こんなのをコピペしました。

#include <ieeefp.h>
double
round(double x)
{
    double t;

    //if (!isfinite(x))                                                         
    if (!finite(x))
        return (x);

    if (x >= 0.0) {
        t = floor(x);
        if (t - x <= -0.5)
            t += 1.0;
        return (t);
    } else {
        t = floor(-x);
        if (t + x <= -0.5)
            t += 1.0;
        return (-t);
    }
}


次のエラーが少し面倒な感じ。
mozilla/toolkit/xre/nsNativeAppSupportUnix.cpp
にて

nsNativeAppSupportUnix.cpp: In member function `virtual nsresult nsNativeAppSupportUnix::Start(PRBool*)':
nsNativeAppSupportUnix.cpp:242: error: `setenv' was not declared in this scope
nsNativeAppSupportUnix.cpp:251: error: `unsetenv' was not declared in this scope

というエラー。Solaris8には、setenv、unsetenvが無い、と。あってよさそうなのに無い、ってのが多い。

これですが、pkgsrcで用意してくれている、libnbcompat.aというライブラリの中に、setenv、unsetenvがあるので、このlibnbcompatをリンクしちゃえばいい、と思いまして、
nsNativeAppSupportUnix.cpp
の中に
extern "C" {
int setenv(const char *name, const char *value, int overwrite);
void unsetenv(const char *name);
}
を書き加えて、あとは、めんどくさかったので、Makefileを直接書き換え。
mozilla/toolkit/library/libxul-rules.mk
の中で、うーん・・・と眺めていって
EXTRA_DSO_LDOPTS += \
        $(LIBS_DIR) \
        $(JPEG_LIBS) \
        $(PNG_LIBS) \
        $(LCMS_LIBS) \
        $(MOZ_JS_LIBS) \
        $(NSS_LIBS) \
        /usr/pkg/lib/libnbcompat.a $(NULL)
でいいんじゃないかな、と。


最初、extern "C"をつける必要があることに気がついてなくて、リンク時に、またもやsetenv、unsetenvが無いとエラーになり、悩んでしまいました。ここはC++でしたね。C++の場合、関数名だけじゃなくて、引数の型まで厳密に見てるので、こうやらないといけないんですよね。


とまあ、だいたい、以上のような修正で、firefox3がビルドできました。




2009年8月14日金曜日

すれちがい・・・・

はじめての、ドラクエ9の「すれちがい通信」。



20090814



なんとなく、おもしろさがわかった気がする!



地図も2枚もらった。



2009年8月13日木曜日

世の中が変になってたころ

今週のNHK BShiは、いつもアニメの時間帯で、「シリーズ 証言記録 市民たちの戦争」という番組を放映しているようです。



なんとなく見てしまいました。



防空訓練の映像・・・空襲で火災になったときの消火訓練らしいんですけど、妙に鮮明な映像なので、さきの戦争が、もっと近くにあったことのように感じてきました。



200908121



けっきょく、人々がこうやって必死に消火しようとしても、焼夷弾にはまるで対抗できなかった、そればかりか、逃げなかったせいで、多くの方々が亡くなってしまった、とのこと。



200908122





国が作った、空襲のときのマニュアルらしいです。



200908123



なんか、うーん・・・



200908124



60年ちょっと前、真剣にこんなことをやってたんだなぁ、としみじみ。



ハイビジョンの鮮明の映像で、より印象を強く感じました。



2009年8月12日水曜日

08月12日のココロ日記(BlogPet)

いつか、するバージョンがほしいです。ココロの夢です。

*このエントリは、ブログペットのココロが書いてます♪

Assembler messages: Error: suffix or operands invalid for `push'

特殊な状況ですが・・・



  • かなり古いkernel-2.4系のi386なLinuxマシンで、pkgsrcでgccをビルドしてあった


  • (ちょっと古いけど)x86_64なLinuxマシン上で、上記gccを用いて、


  • とりあえずこんなサンプルプログラムを、コンパイル


% cat hello.c
#include <stdio.h>



int
main( int argc, char* argv[] )
{
    printf("hello world\n");
    return 0;
}



gccでコンパイルしてみると



% gcc hello.c
/tmp//ccMnfFZA.s: Assembler messages:
/tmp//ccMnfFZA.s:9: Error: suffix or operands invalid for `push'



というようなエラーメッセージが出ました。



ここで使っているgccは、冒頭で述べたように、i386な環境でビルドしたgcc。



% which gcc
/usr/pkg/gcc34/bin/gcc



どうも、

Error: suffix or operands invalid for `push'

というメッセージが出るのは、32bit環境のgccで生成されたアセンブラコードが、64bit環境のアセンブラで処理されて、エラーとなっている・・・らしいです。





とりあえずの解決方法



謎のオプションをつけます。



% gcc -m32 -Wa,--32 hello.c
/usr/bin/ld: skipping incompatible /usr/lib64/libc.so when searching for -lc
/usr/bin/ld: skipping incompatible /usr/lib64/libc.a when searching for -lc



なにやらメッセージが出ていますが、これはエラーではないようなので、無視してよさそうです。



% ./a.out
hello world



というわけで、コンパイルしてできたバイナリも、一応動きました。



  • 「-m32」は、32bitコードを生成しなさい、のオプション


  • 「-Wa」は、アセンブラ(GNU as)へ渡すオプションを指定するもので、asに「--32」が渡る


  • 「--32」は、i386において、32bit用で処理する、みたいな意味のオプションらしい。as --helpでは表示されないけど、asのinfoには掲載されている




別の解決方法を考えて見ました。

そもそも



  • pkgsrcのgcc


  • OSのas


という、素性の異なるものを混在して使っているのが気持ち悪いです。

じゃあ、ってことで

/usr/pkgsrc/devel/binutils

をインストールしてみました。pkgsrcのデフォルト設定のままでは、

/usr/pkg/bin/gnu-addr2line  /usr/pkg/bin/gnu-ld       /usr/pkg/bin/gnu-readelf
/usr/pkg/bin/gnu-ar         /usr/pkg/bin/gnu-nm       /usr/pkg/bin/gnu-size
/usr/pkg/bin/gnu-as         /usr/pkg/bin/gnu-objcopy  /usr/pkg/bin/gnu-strings
/usr/pkg/bin/gnu-c++filt    /usr/pkg/bin/gnu-objdump  /usr/pkg/bin/gnu-strip
/usr/pkg/bin/gnu-gprof      /usr/pkg/bin/gnu-ranlib

という名前で、一連のツールがインストールされました。gnu-asがgccから実行されるようにしなくちゃなりません。

「gcc -v hello.c」とかやると気がつきますが、

/usr/pkg/gcc34/lib/gcc/i686-pc-linux-gnu/3.4.6/specs

というようなファイルがあって、その中に、アセンブラを起動する方法が指定されています。そこを、こんな風に変更します。asをgnu-asに置き換えただけです。

*invoke_as:
%{!S:-o %|.s |
gnu-as %(asm_options) %|.s %A }

システム全体で使われているファイルを直接書き換えてしまうのも気持ち悪いので、別のファイル(たとえば/tmp/specs)にしておいて、

% gcc -specs=/tmp/specs hello.c

みたいに使わせることもできます。

これで、「-m32 -Wa,--32」が不要になりました。

「-v」オプションをつけて、

gcc -v -specs=/tmp/specs hello.c

と実行すれば、たくさん表示されるメッセージの中に、

GNU C version 3.4.6 (i686-pc-linux-gnu)
        compiled by GNU C version 3.4.6.
GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072
gnu-as -V -Qy -o /tmp//ccg6llBp.o /tmp//ccxsSXGL.s
GNU assembler version 2.17 (i386-debian-linux) using BFD version 2.17

というメッセージもあって、gnu-asが使われているのを発見できます。



2009年8月11日火曜日

Emacs Calculator ~ Emacsの電卓

Emacsに出会って、もう19年。今日はじめて、Emacsに、calcという電卓機能があることに気がつきました[E:coldsweats01]



そもそもは、Toolsメニューに、Programmable Calculatorというのがあることに気がついた、ってことだったんですが、X clientじゃないころからEmacsを使ってるので、ツールバーなんて普通は使わないですよね。



M-x calc



で実行できるようです。



200908101



さて、このEmacs Calculator、10秒ほどいじくってて、ピン!ときました。



たとえば



2 Enter 3 Enter 4 Enter + *



とキーを押すと



14



と表示される。



200908102



逆ポーランド記法(RPN)じゃないですか、これは。



一部に強烈な愛好家がいるといわれる、HPの電卓で使われていたRPN。



2 3 4 + *



という並びになってますが、小学校の算数で習った書き方だと、



2 * ( 3 + 4 )



です。



それにしてもEmacsに電卓機能が備わってたなんて、ぜんぜん知りませんでした。



Emacsでちょっと計算をしたいときは、*scratch*バッファのLisp Interactionモードにて、



(* 2 (+ 3 4)) Ctrl+J



とかやってました [E:happy01] マジな話



200908107



RPNは、オペランドの後に演算子がくるので、後置記法。



それに対して、Lispは、オペランドの前に演算子がくるので、前置記法。



似てるような似てないような・・・、そんな関係にあります。





infoに、The GNU Emacs Calculatorと、立派なドキュメントが用意されています。



200908103



ひまなときに、試してみようかな、という気になりました。



Emacsといえば、「ハノイの塔」とか・・・



Ctrl+U 数字 M-x hanoi





200908105



ほかにも、人工無能・・・いや心理療法士?



M-x doctor



200908106



なんていう、まったく役に立たないお遊び機能ばかりだと思ってたので、こんなRPN電卓みたいな実用性のあるものがあるなんて、想像もしてなかった[E:coldsweats01]



ちなみに、はじめて使った電卓は、ポケコンのPC-1245でして、数式をそのまま入力できるものでした。そのため、RPNは正直いって苦手、使えません。





どうでもいいネタ



ghostscriptで計算してみよう!



200908104



gsコマンドを実行し



2 3 4 mul add = Enter



で、



14



とでるヨ!



もちろん、 2 3 4 * + の計算のこと。



Ghostscriptは、ページ記述言語であるPostScriptのクローンですが、PostScriptはスタックを用いたプログラミング言語です。これ、言語としての基本的なところは、ごく一部で有名だったプログラミング言語「Forth」とほとんど一緒。



この手の言語って、構文解析器がとっても単純になるので、処理系が作りやすいんですよね。





2009年8月10日月曜日

ドラクエ9 やっと・・・

ドラクエ9ですが、やっとこさ、ラスボス?倒せました。



200908091



たまにしかやってない時期もあったので、かなり時間かかりました。



200908092



なるほど、まだ、このあともつづくんですね・・・