ハイチュウ
ワールドフルーツ
魅惑のフルーツ
ドリアン
そういえば、ドリアンって食べたことないし、そもそも見たこともない。
ハイチュウは、おいしかった。
臭くはなかった [E:coldsweats01]
ハイチュウ
ワールドフルーツ
魅惑のフルーツ
ドリアン
そういえば、ドリアンって食べたことないし、そもそも見たこともない。
ハイチュウは、おいしかった。
臭くはなかった [E:coldsweats01]
8月も、もう終わり。やり残したことがいっぱい。何か重要なことを忘れてた気がする。
おっ、藤子F全集が発売されてるはずだ!
あわてて書店にかけこんで買ってきました。
今月2009年8月、第2回配本は、
の3冊。
表紙のドラえもんが、コロ助と同じ目をしてます。コンポコも同じ目をしたカットはなかったんでしょうか。不気味な統一感が出てよかったのに…
先月のドラえもんもまだ読めていないんですが、2巻では、知る人ぞ知る、幻のキャラクター、「ガチャ子」が出てきますね。
キテレツ大百科は、かなり長い期間、フジテレビ系列でアニメが放映しているので、知ってる人も多いでしょうね。藤子不二雄のアニメといえば、テレビ朝日で、シンエイ動画、というのが定番だったので、アニメのキテレツ大百科は、ちょっとばかり、雰囲気が違ってたような気がします。
で、漫画のキテレツ大百科ですが、私は、文庫版のものしか読んだことがなかったのですが、何度見ても、コロ助の絵が、どこかやばい気がしてしょうがないです[E:coldsweats01]
ところで、たぶんアニメ放送期間中ですが、田中道明さんが描いたキテレツ大百科の漫画もありました。
藤子F作品の中で、ドラえもんは殿堂入りとして別格扱いするとして、好きな作品のランキングを決めるとすれば、私の1位は、エスパー魔美です。80年代に、アニメもけっこう長期間にわたって放映されていましたから、エスパー魔美を知っている人も多いかもしれません。たぶん、好き、という人も多いでしょう。
かつてあった恒例行事、ドラえもんオールナイトでも、エスパー魔美の星空のダンシングドールの予告編が流れるときは、映画館の場内に、「ああぁー・・・」と、静かだけど心の底から自然と出てきた、ため息のような切望が混じったような声が響いてましたっけ。
エスパー魔美のどこが好きかっていうと、魔美というキャラがかわいくて、全員みんな生き生きしてるし、心温まる感動モノというストーリーがとにかくいいし、設定もいいし(例のアルバイトとか[E:coldsweats01])、すべてがパーフェクト。
たしか小学生のころに読んだ、単行本のドラえもんの巻末に、そのほかの藤子不二雄の漫画の本を紹介する広告ページがあって、そこにエスパー魔美があったような気がするんですが、子供心にもちょっと対象年齢層が高めな感じがして、どんなのものなのかドキドキしていたような記憶があります。
中学生のときは、素直な心で藤子F作品を読めなかった時期。高校生のとき、アニメのエスパー魔美に出会って、あっこれいいかも、と思った。大学生のとき、文庫版に出会って、どっぷりと魅力に引き込まれた。そんな過去があります。
そういえば、数年前に、実写のドラマが、NHK教育で放映されたこともあったっけ・・・黒歴史?
☆
忘れてたことの1つは、先月買った3冊を読むことでした。
1冊目として読み始めたパーマンの途中で、力尽きた・・・
■ 過去記事
最近、GNOME2な環境で、PDFファイルをダブルクリックしても表示されないな~と思ってたんです。Adobe Readerでなら表示できるので、ま、いいかと、しばらく放置していたんですが、気持ち悪いので、ようやく調べてみました。
PDFはevinceというツールで表示されるようになっていました。しかし
% evince
/libexec/ld-elf.so.1: Shared object "libopenjpeg.so.2" not found, required by "evince"
ということで、libopenjpegという共有ライブラリが見つからないのが原因でした。
先日も書いたんですが、
ということをやってます。
今回は、(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に依存しているわけではなくて、
という関係になっていました。
% 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.
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のソースコードはこんな風になってます。
短いですね~ 実質、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)のマニュアルを見てみますと
こんなことが書かれています。
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!だったら、たしかに、有効でしょうね。
とある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のよさではあります。
日曜日に自転車でお台場まで行ったときのこと。
晴海3丁目の交差点で、あれ?っと思ったんですが、道路案内の看板を信じて直進。
そのうち、「あれ~?こんな場所、これまで走ったことないぞ」と、不安になってもきたり。
それでも、出発前に地図を確認したときに想定していたルートどおりに走行して、きちんと目的地に到着。
うちに帰ってから、もう一度地図を確認して、なっとく。
晴海大橋というのが、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]
☆
晴海大橋は、高さもあって、とっても眺めがよく、軽く高所恐怖症な感覚もあじわえたりもしました[E:coldsweats01] 海面を覗き込むとね・・・
この↓写真は、晴海大橋の上から撮ったものなので、正面に写っている橋は、晴海大橋ではないです。
橋の中央には「とよすおおはし」と書かれていました。豊洲大橋というそうで、まだ開通していないみたいです。
☆
高速道路1000円とか言う前に、レインボーブリッジを自転車で渡れるようにしてくんないかなぁ [E:gawk]
日曜日、お台場で紙芝居。
実はすっかり忘れていたんですが、帰りにガンダム見てってね~と勧められたので、しっかりと見てきました。
場所を知らなかったんですが、自転車にのって、たぶんコッチ!と思って走っていた方向で、正解でした。ところどころ、案内看板も出てましたし。
まあ、たしかにすごいと思うんです。しかし・・・
観客の人数の多さのほうに、びっくりしました。
会場へ行くまでの通路は、人気の神社の初詣のような大混雑でした。
木々の間の小道を抜けていったその先、土ぼこり舞い上がる広場に、Gがいた。
数百年~千年以上昔に、巨大な大仏像を作っちゃったときは、きっと、みんなビックリ仰天。
それと同じようなものじゃないんですかね、この21世紀の世の中に現れたガンダムは。
ふと気がつけば、goo地図に、もう載ってる。仕事が早い。
http://link.maps.goo.ne.jp/map.php?MAP=E139.46.23.913N35.37.13.708&ZM=9
お台場で、例の[E:coldsweats01]紙芝居を見てきました。
4人の紙芝居師が、それぞれまったく異なるタイプの紙芝居を口演してて、なるほど、こういうのをやってたんだと、実物を見て、やっとわかりました。
元々、らむねたん[E:coldsweats01]目当てで見に行ったんですが、最初から最後まで、とっても楽しく、あっという間の1時間でした。
例のどこかで見たことあるような(あれは偶然の一致らしい)二人のキャラのお話は、子どもにもわかりやすく、なるほどそういうオチが・・・
はじめて見た「ほっちゃんの夏休み」は、ちょっと心がきゅうぅっとなる、いい話でした。ネタばれ禁止? 昭和テイストたっぷりな男の子が登場した時点で、すぐ、ああいう話になるって気がついたんですけど、うん、いいですね。同じ紙芝居を見て聞いていても、子どもと大人とで、違った印象を受けるんじゃないですかね。
PAでちょっとトラブってたみたいですが、臨機応変に対応してて、さすがだなと関心してしまいました。
ようやく、ドラクエ9で、無線LANを使えるように設定しました。
ふだん無線LANはまったく使っていないのですが、「WEPは使ってはいけない!」とはよく言われるので、WPAとかいうので接続できるように設定してありました。
ところが、ドラクエ9は、それだとダメとのことで、じゃあ使わない、と放置してあったんです。
それでも、まあそのへんの機能も使わないと、ドラクエ9は十分楽しめないんじゃなかな、ということで、ようやく重い腰を上げることに。
そもそも、うちにある無線LANルータってどうやって使うんだっけ?とか、あーパスワード忘れた!とか、そういう段階からつまずいてもみたり。
SSIDを、ポチ、ポチと入力していって・・・
ムキー!間違えてWEP64のを入れちゃった!!
とか、うっかりもあったんですが、あーなんだ、AOSSってのを使えばいいんですね。
あっさりと、接続できちゃいました。
Wi-Fiショッピングというのは、お金をアイテムでも買うのかな、それって公認のリアルマネートレーディング(RMT)か?と思ってたんですが、ゲーム内通貨で買うんですね。
別に買っても買わなくてもどうでもいいものしかありませんでした。
毎日、内容が変わるっぽい感じですね。
portsのpear-1.8.1をportupgradeでインストールしてみたのですが、一部のファイルがコピーされず、不完全な状態になるようです。
原因はあまり詳しく調べていませんが、
という状況で発生しました。
しかも嫌なことに、インストールが不完全だったのにもかかわらず、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は国際化への対応が不完全ってことでしょうか?
今まで、DSiを外に持ち出すことがなかったんですが、先週、実家に行くときに、ドラクエのすれちがい通信をためしてみて、おもしろいと感じたので、昨日、おとついと、2日ほど、すれちがい通信を試していました。
こんなところ(ドコ?)でも、それなりの人数とすれちがいができてるので、「どんだけ売れてるんだよ、ドラクエ9!?」と、ビックリしてます。
けっこう、地図をくれる人が少ない・・・
マルチプレイ時間が0って、友達いない、ってのがバレバレでさみしいね。
たまたま録画されていたテレビ番組
世界SL紀行
短い夏にきらめくスイス フルカ山岳登山鉄道
を見てて、ちょっと驚いたもの。
左から
にょろ~
にょろにょろ~
かっくん
右から、ぐぐぐ・・・
おーらい、おーらい
はい、完成
こんな感じで、SLも通る橋になっちゃいました。
これ、シュテフェンバッハ橋という名前の橋。
冬の間は、たたんで、しまっておくそうです。
田子の月で、「万寿の月」というのをはじめて見つけて、試しに買ってみました。
皮がもちもちした小さなドラ焼き、という感じ。
あんこがおいしい。
消費期限が、売ってる次の日、という短さ。なんとなくプレミア感があっていいかも[E:sign02]
昔(2001~2005年ころ?)、とてもお世話になりました。
ハードウェアMPEG2エンコード機能搭載TVチューナーボード
MTV1000
カノープス
30800円という値札がついたままでしたが、この値段、今思うと、けっこう高いですか?
いえいえ、買ったときは、安くなったなーと納得して買った記憶があります。
このMTV1000以前から、パソコンでテレビを見たり録画したりできるようになる製品はありましたが、画質が非常に悪いものばかりでした。MTV1000のおかげで、あまりお金をかけることなく、パソコンでテレビを自由に録画、編集できるようになった、といってもいいでしょう。
たぶん、MTV1000を買って以降、ビデオテープを買わなくなったと思います。SVHSの10巻パックが、いまだに部屋のどこかに残っています。
部品数が多いですね。
ボードのサイズも大きめですね。
うちはテレビの電波の入りが悪くて、このMTV1000では、ちょっと画質が悪くなってしまい、困ってました。そのため、ゴースト・リダクション機能つきのビデオと組み合わせて使っていました。
その後、MTU2400とか、MTVX2004、MTVX2005を買い足していって、MTV1000は引退となりました。
今でもMTVX2004は現役です。
MTV1000は、実家パソコンで第2の人生を!ということで、先ほどセットアップしてみました。
HDDレコーダに録画されている番組で、なぜかDVD-Rへダビングできないものがあって([E:coldsweats01]理由はわかってる。外部入力で、テレビのデジタル放送を録画したから)、そのダビングにMTV1000を使いたかったのでした。
夏休みは、計画通りにはいかない、ってのは小学生のころからわかりきっているわけで・・・
ああ、また夏が終わる。何もしないまま・・・
連日、ドラクエと「読書」しかしてない。
そんな中、微妙におもしろかった1コマ。
「超絶変身!!アースカイザー」 くぼたまこと
結局、設定が微妙に違うだけで、サンレッドと同じじゃん、ってのは気にすべきことではない、と思う。
以前、
ということがありましたが、Firefox3は、Gran Paradisoという名前になってました。
mozillaのWebサイトにも
http://www.mozilla.org/projects/granparadiso/
というのがちゃんとあるんですね。
さて、今回も懲りずに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がビルドできました。
今週のNHK BShiは、いつもアニメの時間帯で、「シリーズ 証言記録 市民たちの戦争」という番組を放映しているようです。
なんとなく見てしまいました。
防空訓練の映像・・・空襲で火災になったときの消火訓練らしいんですけど、妙に鮮明な映像なので、さきの戦争が、もっと近くにあったことのように感じてきました。
けっきょく、人々がこうやって必死に消火しようとしても、焼夷弾にはまるで対抗できなかった、そればかりか、逃げなかったせいで、多くの方々が亡くなってしまった、とのこと。
☆
国が作った、空襲のときのマニュアルらしいです。
なんか、うーん・・・
60年ちょっと前、真剣にこんなことをやってたんだなぁ、としみじみ。
ハイビジョンの鮮明の映像で、より印象を強く感じました。
特殊な状況ですが・・・
% 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
というわけで、コンパイルしてできたバイナリも、一応動きました。
☆
別の解決方法を考えて見ました。
そもそも
という、素性の異なるものを混在して使っているのが気持ち悪いです。
じゃあ、ってことで
/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が使われているのを発見できます。
Emacsに出会って、もう19年。今日はじめて、Emacsに、calcという電卓機能があることに気がつきました[E:coldsweats01]
そもそもは、Toolsメニューに、Programmable Calculatorというのがあることに気がついた、ってことだったんですが、X clientじゃないころからEmacsを使ってるので、ツールバーなんて普通は使わないですよね。
M-x calc
で実行できるようです。
さて、このEmacs Calculator、10秒ほどいじくってて、ピン!ときました。
たとえば
2 Enter 3 Enter 4 Enter + *
とキーを押すと
14
と表示される。
逆ポーランド記法(RPN)じゃないですか、これは。
一部に強烈な愛好家がいるといわれる、HPの電卓で使われていたRPN。
2 3 4 + *
という並びになってますが、小学校の算数で習った書き方だと、
2 * ( 3 + 4 )
です。
それにしてもEmacsに電卓機能が備わってたなんて、ぜんぜん知りませんでした。
Emacsでちょっと計算をしたいときは、*scratch*バッファのLisp Interactionモードにて、
(* 2 (+ 3 4)) Ctrl+J
とかやってました [E:happy01] マジな話
RPNは、オペランドの後に演算子がくるので、後置記法。
それに対して、Lispは、オペランドの前に演算子がくるので、前置記法。
似てるような似てないような・・・、そんな関係にあります。
☆
infoに、The GNU Emacs Calculatorと、立派なドキュメントが用意されています。
ひまなときに、試してみようかな、という気になりました。
Emacsといえば、「ハノイの塔」とか・・・
Ctrl+U 数字 M-x hanoi
ほかにも、人工無能・・・いや心理療法士?
M-x doctor
なんていう、まったく役に立たないお遊び機能ばかりだと思ってたので、こんなRPN電卓みたいな実用性のあるものがあるなんて、想像もしてなかった[E:coldsweats01]
ちなみに、はじめて使った電卓は、ポケコンのPC-1245でして、数式をそのまま入力できるものでした。そのため、RPNは正直いって苦手、使えません。
☆
どうでもいいネタ
ghostscriptで計算してみよう!
gsコマンドを実行し
2 3 4 mul add = Enter
で、
14
とでるヨ!
もちろん、 2 3 4 * + の計算のこと。
Ghostscriptは、ページ記述言語であるPostScriptのクローンですが、PostScriptはスタックを用いたプログラミング言語です。これ、言語としての基本的なところは、ごく一部で有名だったプログラミング言語「Forth」とほとんど一緒。
この手の言語って、構文解析器がとっても単純になるので、処理系が作りやすいんですよね。