6月 182009
 

僕はちょっと古い目の MacBook を持っている。と書いた。しかし、これとは別にこの記事を読んで「うひー。MacPro ほすぃなぁ。」とか思い初めて、BootCamp に FreeBSD がインストールできれば買うのになぁ。などと漠然と思った次第です。

まぁ、いっちょ、MacBook に FreeBSD でもインストールしてみんべ。とか思い、現在 BootCamp パーティションにインストールされている Windows Server2003 EPE をぶっつぶせばええやん。って感じで作業をはじめたのでありました;-)。

ちなみに、僕は VMware Fusion のライセンスも持っていて、Windows7 なんかが動いているのだけど、やっぱりネーテブで動く速さにはかなわないよねぇ。ってどうしても思ってしまうのよねぇ・・。

さてと。まず、MacOSX 側でブートを FreeBSD の CD-ROM に指定してリブートします。今回利用した FreeBSD は FreeBSD/amd64 7.1-RELEASE。MacOSX がシャットダウンしてしばし待っていたら・・。

おーー。無事にブートできそうですねぇ。って感じがしてきました;-)。

IMG_5210_boot.JPG

これは中々よさそうですよ。この分だと MacPro を買っても FreeBSD がインストールできそうだ。などとルンルン気分(既に死語か?)で次に進むのであります;-)。

この後、日本語環境を選んでディスクを選択してーー。

FDISK の画面ですが。うひー・・。

IMG_5215_fdisk.JPG

今まで見たことが無いパーティション情報が表示されています・・。ad5p1,ad5p2,ad5p3。で、その間には “-” と言うのがあるし・・。なんじゃこらぁーーっ!!??

この段階で既に手が出ない。Windows Server2003 のパーティションが消えるのは、まぁ、許すとして、MacOSX のパーティションが消える、もしくは MacOSX がブートしてこないなんてことになったら目も当てられない状態なので、さっさと ESC ボタンを押してリブートして事なきを得たのでありました。

さてと。そもそも MacBook と MacOSX は フツーの PC で利用されている BIOS ではなく、EFI を利用しているためにブートする仕掛けがちょっと違う。と言う知識は一応持っていたのだけど、HDD の認識方法が違う。と言うことまでは知らなかったのでありました・・(^^;;。だって、初めての体験だしー。MacOSX はインストールの時、そんなん気にする必要無いしぃ・・(言い訳モード;-)。

IRC などで人に聞いてみると、gpart でホゲってあげないといけないみたいで、既に FDISK は過去のものとなっているようです。詳しいことは今後、色々調査せねば MacBooK にインストールできないぞぉ。などと思い今回の作業は終了したのでありました。

ちなみに FreeBSD をブートし始めたのが今日の 00:00 位から。その後二時間位色々遊んだんだけどねぇ・・。イヤハヤ。眠い・・(^^;;。

さてと。最後にですが、僕は MacOSX 側で BootCamp を利用して Windows Server2003 のパーティション(FAT32)を作成したのだけど、これって実は ad5p3 に入っていることが解りました。ふつー、FreeBSD をインストールする時には ad0s1 に Windows、ad0s2 に FreeBSD をインストールするのが一般的(だよねぇ?僕だけかな?)なんだけど、BootCamp の場合はディスクの後ろのほうの空いたスペースを BootCamp 用に使うことになるのですね。間違っても ad5p1 は消したらダメだよ。ってことですねー。

まぁ、人生、わからない時はアキラメが肝心です。でもって MacPro ですが、購入に関しては却下されそうな気配です・・。トホホ。

それにしてもこのネタ。つづく のかなぁ?(^^;;。

6月 122009
 

遅ればせながら、今回の基調講演を QuickTime で見ました。 Mac を買ってから毎回欠かさず見ているのですが、スティープ・ジョブスが居ないのは悲しいんだけど、けど、シラー副社長は前回よりだいぶ上手になったな。と言う感じがしましたが、ちょっと感想など書いてみたいと思います;-)。

ちなみに大きなディスプレー買ったのでフル HD で思う存分に楽しみました。いやぁ。気持ちが良い。トラフィック的には大体 2M から 3Mbps と言う感じでしょうか。それにしても随分と長い基調講演でしたけど。

http://ascii.jp/elem/000/000/427/427113/

この記事に色々書いてあるのですが、この方が書いている記事は一部の人に人気が無いと言うウワサは耳にしますが、それはちょっとおいといて。と、言う感じです;-)。

で、基調講演の中で iPhone アプリを作っている人が出ているビデオが流れたのですが、あれは確かに良かった。僕もそこはかとなく感動しました。Mac・iPhone ユーザではない人も是非見て欲しいと、僕も思った次第です。
このビデオは渋谷の街も出てきます。全編英語なんですが、字幕をつけて公開すれば良いのに。とか思ってしまいました;-)。

後、スコットは例のごとくそつなくこなしていたな。と言う感を受けました。そして iPhone3G S は大々的にモデルチェンジしなくて良かった。と、僕も思います。思いっ切り形や大きさが変わってしまうとサードパーティが大変でしょー。僕もケースやら自転車や車のホルダーとか買っているのですが、これらが使えなくなるのは非常に悲しいことですしね。

なので、外側はそのまま。中身がちょっとのハードとたくさんのソフトウェアに変更が入った。というのはそれはそれで喜ばしいことだと思います。

さて。上記 URL の記事を読んで驚いたのですが、iPhoneOS 3.0 では iPhone App が HTML5 でも書けるようになるんですかね。「Objective-C は大変だぞぉ。」などと密かに思っていたのですが、HTML5 でも書けるとなるとちょっと凄いぞ。と言う感じはします。

とわいえ、私は HTML-3.2 の人で今でも table タグ使っているですけどね(^^;;。

その昔、ちっこい Windows アプリを書いて商売している人(シェアウェアなど)たちが「ミニ・ゲイツ」と呼ばれていた時期がありましたが、今は iPhone App で「金鉱を掘り当てる」時代になったのでしょうかねぇ。

まぁ、それは、僕が 2,3 の Apple 製品を持っているのでそー感じただけなのかも知れませんが、実際に Windows バリバリな「ミニ・ゲイツ」な人たちは iPhone App にシフトしていくのでしょうか?

最後にですが、それにしても Safari4。Windows Server2003 EPE 上では動作せんぞっ!!ってのはおいといて、エロサイトばっか見ている人は大変だろうな。とか「おまえ、仕事してねーなっ!!」とか突っ込み受けることはまず間違いなさそうななので、使うのちょっと怖いんですけど;-P。

6月 082009
 

ここんとこ、自宅に設置してある FreeBSD のサーバが安定しない。と、言うのはこのブログにずっと書き続けていたのだけど、一日一回 cron で shutdown -r now するようにしたら安定してくれるようになったのでしばらくそれで運用しています。

でもって FreeBSD が安定しないぜ。ベイビー。と言うのはいよいよ FreeBSD-users-jp にも流れたですねぇ。これでいきなりメジャー化するかなぁ・・。

さてと。話の本題はここからで、自宅のサーバが安定しないのでキーボードとディスプレーはずっと付けっぱなしにして、イザと言うときにただちに対応できるようにしているのだけど、ディスプレーがまぶしすぎる・・。

X が動作しているデスクトップなどは省電力機能が働いてディスプレーの電源をスリープモードなどにしてくれるのだけど、X がインストールされていないサーバなどはそれができないので夜中でもこうこうと電気が付いていて login: プロンプトが表示されているのでした。

マメにディスプレーの電源切れば良いじゃんとは言いつつも、そんな根性ないし・・。と、言うことでコンソールでも、接続されたディスプレーの電源を落とす方法は無いものか調べてみようかと思ったのだけど、どうも google での検索文字列に何を指定して良いのかいまいち解らない・・。トホホ。

で IRC で人に聞いたら green_saver.ko と言うカーネルモジュールがあるらしい。と言うのを教えて頂きました。ありがとうございます。けど、使い方がいまいち解らないなー。ヒントとして green_saver.ko と言うを教えてもらったので、これで google を再度検索したら、おー。出てきました。

jman splash などして splash(4) を見れば良いわけねー。で、この man page によると kldload green_saver.ko とした後、 vidcontrol -t 120 とコマンドを打つと、何もキー入力がないと 120 秒後にちゃんとディスプレーの電源が切れる(正確に言うと省電力機能が働いたと言うのか?)ことが確認できました。

ちなみに起動時に設定することもできるようで /boot/lorder.conf には以下のように書きます。

green_saver_load="YES"

 
そして /etc/rc.conf には以下のように書くと起動時から情報を反映してくれることでしょう。

blanktime="120"
saver="green"

 
これで夜中でもディスプレーがランランと輝いている状態からは解放されそうです。ふぅ。

それにしても最近、省電力ネタ多いかな? ついこの間 CPU ネタ書いたばっかりだけどなぁ;-)。

デスクトップで利用している FreeBSD も acpiconf -s3 でスリープしてくれると良いのだけどねぇ・・。FreeBSD や NetBSD をデスクトップ(ラップトップ含む)として使うのヤメて、MacBook 使う人が多くなったとは良く聞くけど、サスペンドしない、もしくは X が表示してくれる色がショボイ(少ない)と言う意見が大勢を占めている。と言うのもまた事実か。

そー言う僕も MacBook 使いで写真の編集などは Mac でやっているけど;-)。

5月 182009
 

僕は Core2Duo になった一代目の MacBook を持っていて、型版的には Apple MacBook 2GHz MA700J/A と、言うのかな。2006 年 11 月に発売されてすぐに飛びついて買って今まで使ってきた。最近動作がモッサリして来たので新しい MacBook 欲しいなぁ。とか思い、色々手を回したのだけど MacBook に投入できる予算が捻出できなかったので、バーツを購入してパワーアップすることにした。

まずはウェブで情報を入手し、購入すべきものを調べます。今回購入したのはこんな感じ。

・DDR2 SO-DIMM PC-533 2GByte * 2
・2.5 インチ HDD Hitachi HTS545025B9A300 250GByte

今までは DDR2 SO-DIMM PC-533 1GByte * 2 だったのが倍になり、けど OS 的には 3GByte までしか認識しないのは有名な話。menumeters を起動すると、実際に 3GByte しか認識されていないことが良く解ります;-)。

HDD は FUJITSU MHV2080BHPL 80GByte から Hitachi HTS545025B9A300 の 250GByte のやつに交換。単純計算で三倍の容量になりました。これで VMware Fusion 2.0 を利用してもディスクイメージは MacBook 内に置くことができます。

iPhoto と iTunes のデータは外付け HDD に置いておいたのだけど、160GByte のやつから 250GByte のやつに変更。Time Machine でガンガンバックアップから取れるようになります;-)。

後は HDD を交換したので MacOSX Leopard を再インストール。僕は今まで大文字小文字を区別する Journaled HFS+ を利用していたのだけど、このファイルシステムっててんで役に立たないと言うのを実感しているのであります。

例えば Adobe のアプリは大文字小文字を区別するファイルシステムにはインストールできない。Microsoft のリモートデスクトップは全部小文字でインストールするのでとんでもないディレクトリを勝手に作ってしまう。あげくの果てに Time Machine は大文字小文字を区別するファイルシステムから区別しないファイルシステムにはバックアップできない。と来ている・・。はぁ・・。と、言う感じだったので今回は大文字小文字を区別しない Journaled HFS+ をチョイスしたのでありました。

インストールは簡単に終わり、起動後は交換したパーツは特に問題なく動いております。

ちなみに、今回の改造のためにかかったお値段はメモリが 2,480yen * 2 HDD が 4,940yen。両方併せても 10,000yen かかってないんですねぇ。安いですねぇ;-)。

さてと。話はここで終わってしまったら面白くないので、BootCamp の話をしておきましょう。MacOSX Leopard では BootCamp が標準で利用できるので今回初めて使ってみました。VMware Fusion 2.0 を持ってはいるのですが、バーチャルマシンは遅いのでネーテブで Windows を起動してみたい。と言うのと BootCamp パーティションの Windows も VMware Fusion から起動できる。というので試してみることにしたのでありました。

BootCamp アプリを起動して Windows の領域を 32GB ほどを FAT32 で確保し Windows のメディアを突っ込んでブートするのですが、手元にある WindowsXP の CD-ROM は PS2 ではないのでブートしませんでした。なので Windows Server2003 Enterprise Edition のメディアがあったのでそれを突っ込んだら無事にブートしたので、これインストールするべ。と言うことになったのでありました;-)。

しかし、インストールが無事に終わった後が大変です。 VMware Fusion 側から BootCamp パーティションの Windows Server2003 は比較的容易に利用することができます。しかし、ブートドライブを BootCamp にしてブートし、Windows Server2003 が起動した後、Ctrl+Alt+Del キーを受け付けてくれないのでありました。なので何も出来ない状態・・orz。 WindowsXP なら自動ログオンもできるだろうけど、Windows Server2003 は無理だぁ・・。

手元にあった HHK Lite2 を接続して Ctrl+Alt+Del キーを押したら、おぉっ!! 無事にログオンは出来たので、ありました。良かった。

しかしっ!! 安心はまだできないのであります。 Windows で MacOSX Leopard の DVD を突っ込むとドライバのインストールをしてくれるのですが、 Windows Server2003 では自動的にドライバのインストールはできません。DVD の Drivers の中のを端からクリックしてインストールを進めていきます。

一番最初に簡単にインストールできるのは無線 LAN かもしれないです。Atheros のドライバをインストールすれば無線 LAN は利用可能になるので、DVD のドライバをインストールしても ! マークが付く場合にネットワークからインストールすれば良いでしょう。

無線 LAN が動いたので Windows update をしつつドライバを更新したらサウンドドライバだけ利用できないだけで後は一応動き出した。と、言う感じでしょうか。iSight は使うことは無いのでまぁ、ドーデも良いと言えば良いのですが;-)。

それにしても Apple 謹製の BootCamp 用のプログラムがインストールできないのは痛いかも・・。ブートドライブ切り替えユーティリテーなどがインストールされていないので、Windows をシャットダウンした後 Option キーを押しながらブートしないと MacOSX がブートできない状態となります。

とまぁ、Windows Server2003 についてはこんな感じでしょうか。

とは言いつつもう一個大きな問題が・・。BootCamp 側で Windows Server2003 のアクティベーションを行ったのですが、その後 VMware Fusion で起動したら、ハードウェアの変更が多すぎるので再度アクティベーションします。とメッセージが・・。今度、BootCamp 側でブートしたら再度出るんかなぁ・・?

とまぁ、メモリと HDD を交換したので OS を再インストールしたり Windows をインストールしてみたりと色々楽しんだ週末だったのでありました;-)。それにしても Windows Server2003 Enterprise Edition をデスクトップとして使うんかなぁ? 一応、ターミナルサーバとか IIS、 WindowsMedia サーバとかも起動しているけどさぁ;-)。

VMware Fusion には他に WindowsXP Windwos7 RC2 もインストールされているけど;-)。そー考えると僕もすっかりと Windows ユーザになったのか?;-P。

最後にですが、MacBook はコマンドラインから system_profiler と打つとバババと情報を表示してくれます。これみると Mac って好き放題最新の技術投入しているよなー。とか思います。

僕のは 2006 年 11 月に買ったハードウェアなのに BIOS は EFI を利用しているし、HDD は ICH7 に引っ張られて SATA-150 だけど、IDE ではなくちゃんと S-ATA な HDD を利用しているし、更に接続が AHCI を利用している。 Windows が動作する PC ではちょっと考えられないよなー。2006 年でこれくらいのスペックの PC 出したベンダあるかなぁ?とか思ってしまうわけです。ハードと OS を作っているメーカの強みなんでしょうねぇ。

5月 152009
 

HP の 1U サーバで ProLiant DL320 G5p と言うのが、今、手元に四台あるのだけど、こいつには現在、以下の OS がインストールされている。

・FreeBSD/amd64 6.4-RELEASE-p3
・FreeBSD/amd64 7.0-RELEASE-p9
・CentOS release 5.2 x86_64(後にバージョンアップして CentOS release 5.3 x86_64)
・Windows Server2003 EPE

でもって、このサーバの FreeBSD で見た場合のスペックはこんな感じ。

CPU: Intel(R) Xeon(R) CPU            3075  @ 2.66GHz (2660.01-MHz K8-class CPU)
Origin = "GenuineIntel"  Id = 0x6fb  Stepping = 11
Features=0xbfebfbff
Features2=0xe3fd
AMD Features=0x20000800
AMD Features2=0x1
Cores per package: 2
usable memory = 2132668416 (2033 MB)
avail memory  = 2058006528 (1962 MB)
ACPI APIC Table: 
FreeBSD/SMP: Multiprocessor System Detected: 2 CPUs
cpu0 (BSP): APIC ID:  0
cpu1 (AP): APIC ID:  1

 
今回は CPU のお話です。

今まで僕個人的には、これらのサーバ群は FreeBSD で利用していたので特には気にしていなかったことがあります。それは CPU クロック。FreeBSD の場合 powerd を動作させるといとも簡単に SpeedStep(正確には EIST・Enhanced Intel SpeedStep Technologyですね) が動き出すので sysctl で後は見るだけ。って感じだった。

FreeBSD で見た CPU クロック、今はこんな感じ。

dev.cpu.0.freq: 330
dev.cpu.0.freq_levels: 2647/-1 2316/-1 1985/-1 1654/-1 1323/-1 992/-1 661/-1 330/-1

 
でもって CeotOS でも SpeedStep 動かないかなぁ?とか思い格闘したのだけど、ダメみたいねぇ。
CeotOS 5.2 ではダメで 5.3 なら OK よ。ってのをみつけて yum upgrade して試したのだけど・・。

# modprobe /lib/modules/2.6.18-128.1.10.el5/kernel/drivers/cpufreq/cpufreq_conservative.ko
# modprobe /lib/modules/2.6.18-128.1.10.el5/kernel/drivers/cpufreq/cpufreq_ondemand.ko
# modprobe /lib/modules/2.6.18-128.1.10.el5/kernel/drivers/cpufreq/cpufreq_powersave.ko
# modprobe /lib/modules/2.6.18-128.1.10.el5/kernel/drivers/cpufreq/cpufreq_stats.ko
# modprobe /lib/modules/2.6.18-128.1.10.el5/kernel/drivers/cpufreq/freq_table.ko
# modprobe /lib/modules/2.6.18-128.1.10.el5/kernel/arch/x86_64/kernel/cpufreq/acpi-cpufreq.ko
# modprobe /lib/modules/2.6.18-128.1.10.el5/kernel/arch/x86_64/kernel/cpufreq/powernow-k8.ko
# modprobe /lib/modules/2.6.18-128.1.10.el5/kernel/arch/x86_64/kernel/cpufreq/speedstep-centrino.ko

 
関連しそうな全てのモジュールをロードしてみたけど FATAL: Module hoge not found. だそうです・・。Linux のこの辺りのこと、僕はあんまり良く解らないのだけどもね。

でもって cpufreq-selector と言うのは無いので cpufreq-info と言うのを実行してみたら以下の通り。

# cpufreq-info
cpufrequtils 005: cpufreq-info (C) Dominik Brodowski 2004-2006
Report errors and bugs to cpufreq@vger.kernel.org, please.
analyzing CPU 0:
no or unknown cpufreq driver is active on this CPU
analyzing CPU 1:
no or unknown cpufreq driver is active on this CPU

 
なんか「Xeon には対応してねーんじゃねぇの?」とか思えて来た段階で Linux についてはしゅーりょー。だって動かないんだもの。ちなみにカーネルは 2.6.18-128.1.10.el5 の x86_64 です。CeontOS release 5.3。

続いて Windows Server2003 EPE エディション行ってみましょう。どうすれば WindowsServer で SpeedStep が有効になるんだ?とか思ったのですが、考えてみると、僕は普段から FreeBSD と AMD のプロセッサしか使ってないので Intel の Xeon なんざ今まで気にしたことも無かった。

で、ググってみたら以下の URL を発見。

http://www.intel.com/cd/channel/reseller/asmo-na/eng/203838.htm

コントロールパネルの電源管理で「ポータブル/ラップトップ」を選択すると SpeedStep が有効になるのかと思いきや全然ダメ。BIOS の設定を見ても EIST の設定なんざありゃしない。困りはてて HP のサポートに電話して聞いたら、ドキュメント番号 232907191 の P.21 を参照してみてくれ。とのことでこのドキュメントを探そうとしたけど、全然みつかんないじゃーん。と、言うことでこれまたしゅーりょー。

ちなみに Windows Server2003 EPE 上で CPU-Z を起動したキャプチャをアップしておきます。

WinServ2003.png

Core Speed って所が 0.3MHz 程度なら変動するんですが、大きく、上記の FreeBSD のようには可変にはなりません。でもって大体 2GHz のちょっと下辺りでふらついている。って感じでしょうか。

あ、あれーー?? DL320G5p って Xeon 3075 で MAX が 2.66GHz の CPU なんだけどっ!! それが 2GHz も出ていないってどーいうことーーっ!!??

さてと。そろそろ結論フェーズに持っていくことにしましょう。

CeontOS も Windows Server2003 も本当に地球環境に優しくない OS ですねぇ。FreeBSD なら OS をインストールして再起動した直後(正確には powerd を起動した直後だけど;-)から CPU 速度は抑えられて運用が始まるのになぁ。そして、何も設定せずに CPU クロックが下げられる。けど、どうして FreeBSD だけかまともに動作するんだ? OS がちゃんとしていると言うことか? Linux は NotePC メインに考えていて サーバの SpeedStep にまでまだ手が回ってないとか?(まぁ “Linux” って言ってしまうと範囲が広すぎるので “SentOS” って書いたほうが良いかな。この場合。)

あー。後、今回はワットチェッカーとか科学的な根拠に基づいては書いていません。ただ単におのおのの OS 上で動作したプログラムが示した値を基準にしています。が・・。そー考えると Linux はカーネルモジュール自体がロードできなかったので値は取れていない状態だなぁ・・。

5月 132009
 

前回書いた続編と言うか・・。

一応、apache を Proxy として利用できるようになり、コメントで hagyさん から、mod_mem_disk と mod_mem_cache の両方を書いたときの動作確認してよー。って言われたので、そのテストをしようと思った矢先・・。

テスト環境では、キャッシュしようと思っていたデータがベーシック認証の中にあったのでありました。つまり、キャッシュしてはいけないデータなので apache Proxy はデータをキャッシュしてくれないんですね・・。

フリーソフトウェアのほとんどの Proxy サーバはベーシック認証やダイジェスト認証の中にあるコンテンツについて、セキュリティの観点によりキャッシュサーバでは絶対にキャッシュしない。と言うポリシーのもとで作成されているみたいです。apache の場合、ドキュメントにちゃんと書いてあります。

http://httpd.apache.org/docs/2.2/ja/mod/mod_cache.html#cacheignorecachecontrol

NetApp 社の NetCache もしかりですが、設定が用意されているみたいで on no-cache とか on uncond-cache がそれにあたります(当然、設定 GUI からもできるとは思いますが;-)。

さてと。どーすんべなぁ。とか思って、一応 apache のソースを眺めたらわりと簡単にソース修正できそうだったので変更してしまいました。以下はそのパッチです。

--- modules/cache/mod_cache.c.ORG       2009-05-02 10:40:03.000000000 +0900
+++ modules/cache/mod_cache.c   2009-05-02 10:39:25.000000000 +0900
@@ -95,9 +95,12 @@
/* First things first - does the request allow us to return
* cached information at all? If not, just decline the request.
*/
+
+    /* Authorization pass.
if (auth) {
return DECLINED;
}
+    */
/* * Try to serve this request from the cache.

 
認証を通った後の判断を調べてリターンしている所をそっくりコメントアウトするパッチです。これにより、ベーシック認証通過後のコンテンツもキャッシュすることができるようになります。

ふぅ。これでキャッシュ用 Proxy サーバはなんとかでき上がりました。では続いて懸案であった、mod_mem_disk と mod_mem_cache の両方を書いたときの動作確認をしたいと思います。

が・・。どう言うわけか mod_mem_cache の設定を書いていると httpd が Segmentation fault(11) してしまいます(今回は prefork で make したので一個のプロセスが Segmentation fault を起こすのみで、全ての httpd は死んではいないため port:80 では LISTEN が可能状態です)。一番最初、キャッシュしていない状態でアクセスがあった場合はマスターサーバから、仮に「A」と言うコンテンツを取ってきてキャッシュして、そしてクライアントに返します。

次に別のクライアントがコンテンツ「A」を取りに来たとき、httpd がこの時に Segmentation fault(11) で落ちてしまう。と言う状態に陥ったのでありました。なので、コンテンツは DISK 上(もしくはメモリ上)に溜まるけど、利用されることは無い。と言う感じですね。

#ちなみに mod_mem_cache で溜まったキャッシュの情報ってどうやって確認するのだろう・・。メモリ利用量のみで判断するのかなぁ?

mod_mem_cache を削除して mod_mem_disk の設定のみを書いたときは正しくキャッシュできて、 Segmentation fault(11) もせず、キャッシュされたデータも再利用できることを確認しました。なので運用的にはキャッシュデータは DISK のみに保存する。と言う方向で行きたいと思います。

ごめんねー。hagyさん。

それにしても、色々詳しく調べるまで、ベーシック認証配下のコンテンツはキャッシュしない。と言うのを知らなかったなぁ。まぁ、考えてみれば当たり前だよなー。認証の奥にある情報が実は Proxy キャッシュサーバの中に残っていた。なんてのは怖いことだもんなぁ。

4月 302009
 

iPhne3G/iPod Touch の App に産経新聞があるのだけど「無料で毎朝産経新聞が読めますよ。」って触れ込み、僕も毎朝ダウンロードして毎朝電車の中で読んでいます。

ここ一ヶ月で新聞を読んでいて気がついたこと。それはレコード会社の全面広告が二枚入るようになって、しかもフルカラー。ページの一覧を見たときに目立つ目立つ。レコード会社は実際の新聞を読む人の他に iPhne3G/iPod Touch ユーザをもターゲットにしているんだなぁ。と言う感じが見て取れます。

で、僕が新聞社の社員だったとして考えたソリューション。産経新聞の広告の中に URL があったらそこをタップするとブラウザに飛ばしてその URL を表示できるようにするとか、レコード会社の広告にある URL の場合、iTMS でダウンロードできる楽曲であるならそのまま購入の画面を表示するとかできたらグーかも。

僕は多分、曲は買わないとは思うのだけど、広告主が iPhne3G/iPod Touch ユーザをターゲットとして載せる機会が増えると思ったのね。アブリはずっと無料にしておいて、広告収入を増やす。「うちの新聞に広告載せればこんな付加価値が付きますよー。」みたに営業が動けば良いのね。で、アフリエイトみたいなのも付加して「ね。新聞に広告載せたらこんなにアクセスあったでしょー。」みたいになるし。

そんな感じだとみんなが幸せになれそうな気がします。

ちなみに、この間 iPhone3G 買った人にアンケートが届いたので僕はやってみたのだけど、その中に「日経新聞が2,000yenだったら買うか?」ってのがあった。機能的は産経新聞のと一緒なので、僕は「買わない。」を選択したけど・・。それにしても 日経 は横柄だな。って思った。まぁ、新聞のランクとしては日経と産経では全然違うけど、それにしても横柄だろ。日経。とか思った。もう一回言う?;-)

で、新聞 App が有料になったとしたらどんなものが欲しいか。当日の新聞が読めるのは当然として、一番は過去記事表示機能かなぁ。例えば昨日の新聞小説を読み逃した。状態になったら新聞の紙面をタップしたら過去のその記事が一覧が表示されて見逃した日を選択するとダウンロードして表示してくれる。とかね。

後、新聞の一部分だけ毎日、新聞とは別に保持してくれるとか。例えば新聞見出しの下の部分 10cm 四方を毎日保存していつでも見たいときに呼び出せるとか。株のページなんかで使えそうなワザかなぁ。

新聞の切り抜きが商売になるので、それ位やってくれたら有料でも良いような気がします。あ、著作権とか考慮してないけど、自社の新聞なんだからきっとできるよねぇ?それ位。

とまぁ、今回は iPhone/iPod Touch 上の一個の App に付いてイヤに熱く語ってしまいましたが、まぁ、それはそれでよしとしてください(^^;;。

4月 242009
 

前回は、mrtg が実質的に IPv6 に対応していないねぇ。って所で話が終わったのですが、そこから進展がちょっとあったので書いてみたいと思います。

net-snmp に対して IPv6 で接続したい人は前の記事を先に読んで 、その後でこの記事を読んでください。

さてと。物語りは前回からの続きなのですが、mrtg の config ファイルを記述した時、 Target に IPv6 を記述した場合 ifIndex でしかトラフィック情報が取得できない。と言う所で終わりました。

確かに、何度試してもダメだったので、debug オプションを有効にしてログを見つつソースコードなどを眺めていたら問題点を発見しました。最近の ports-current から mrtg をインストールするとmrtg-2.16.2,1 がインストールされるのですが、その時に /usr/local/lib/perl5/site_perl/5.8.9/Net_SNMP_util.pm も併せてインストールされます。こいつの中で Net::SNMP を呼んでいる時に -domain で udp/IPv4 しかセットしていないみたいなので udp/IPv6 をセットするようにしたら IPv6 でも一応動くようになりました。

修正分のパッチはこの辺りに置いておきます

このパッチを適用することにより、FQDN で問い合わせした時は ifDescr でも値が取れる事を確認できました。以下におさらいしてみることにしましょう。

・IPv6 で SNMP が取得できるもの

Target[dir_re1]: 2:public@taro6.running-dog.net:
Target[dir_re1]: \re1:public@taro6.running-dog.net:
Target[dir_re1]: 2:public@[2001:200:161:14cc::1:1]:161:

 
taro6.running-dog.net は DNS に IPv6 のみのアドレスが登録されています。

この設定では IPv6 では ifIndex と ifDescr でトラフィック量を取得することができました。

・取得できないもの

MAC アドレス指定(FQDN・IPv6 共に)
ifDescr 指定での IPv6 アドレスを記述した場合

とまぁ、こんな感じで ifDescr で取得できるようになったのでヨシとしておきましょう。それにしても DNS は必須になってしまうのですが・・。

後、net-snmp って –enable-ipv6 で make しても snmpwalk は IPv6 に対応していないのねぇ。DNS に IPv6 のみ登録してある FQDN を指定しても「そんなアドレス知らん。」とか言われます。/etc/hosts に書いてもダメ。snmpd が IPv6 に対応しているだけにもったいないことです・・。

さてと。ここまでは net-snmp と mrtg のお話で、前回の続きの完結編。と言う感じになります。

続きまして rrdtool に行ってみましょうか。ports 的には ports/databases/rrdtool になりますが、これをインストールすると RRDs と言う perl のモジュールをインストールしてくれて RRDs::graph と言うモジュールを使うと MRTG グラフを表示してくれます。グラフを作成する際のオプションとして IPv6 アドレスが存在した場合にどうなるのか?

正解ですが、”:” は区切り文字に使われているので DEF: の設定に IPv6 アドレスがあるとまともに動作してくれません。

ports 的な rrdtool-1.3.5 のソースを見てみると rrdtool-1.3.5/src/rrd_graph_helper.c に以下のような記述が所々にあり、”[]” で囲むとか “\:” などしても全然対処できないと言うことが解ります。

if (line[*eaten] == '\0' || line[*eaten] == ':') {
    dprintf("- no (or: empty) legend found\n");
    return 0;
}

 
と、言うことで RRDs を使う場合には IPv6 を意識しないようにしないとまずいです。では、どんな時に IPv6 を使う必然性が出てくるのかとなるのですが、僕の場合、rrdfile と PNG ファイルの保存場所に IP アドレスを利用してる感じですね。

/data/mrtg/192.168.1.1/re1.rrd
/data/mrtg/2001:200:161:14cc::1:1/re1.rrd

でもって RRDs::graph では以下のようなコーテイングをしていたらこらアカンですわなー。

:
my $rrdfile = "/data/mrtg/2001:200:161:14cc::1:1/re1.rrd";
my $pngfile = "/data/mrtg/2001:200:161:14cc::1:1/re1.png";
push (@options
    :
    ,"DEF:avein0=${rrdfile}:ds0:AVERAGE",  "CDEF:avein=avein0,8,*"
    ,"DEF:maxin0=${rrdfile}:ds0:MAX",      "CDEF:maxin=maxin0,8,*"
    :
);
my @rv = RRDs::graph( $pngfile ,@optins : );

 
なので、結局 $rrdfile =~ s/:/_/g; など言う弱いことをして問題回避したのでありました。

これで、net-snmp・mrtg・rrdtools の IPv6 対応が一応終わった感じかなぁ。10Gbps 問題も回避できたし、今の所は多分これで IPv6 な世界が来ても大丈夫なような気がします。が・・。mrtg には IPv6 対応をもう少し頑張ってもらい所ではあります。

http://oss.oetiker.ch/mrtg/doc/mrtg-ipv6.en.html

こんな所読んだって Target の所がハショッて書いてありすぎで全然ダメなんだもの・・。トホホ。

くーーっ。MacOSX Leopard の /usr/sbin/snmpd は 5.4.1 使っているのに IPv6 に対応してないじゃん。 udp6:161 のオプション、そんなのねーー。とか言いやがる・・orz。これはヒサンだ・・。

つまり、どういうことかと言うと、例えば MacOSX を leopard.running-dog.net と言う FQDN で 192.168.1.30 と 2001:200:161:14cc::1:10 の二つ RR レコードを記述していた場合、mrtg.cfg の Tagrt に FQDN を記述すれば mrtg は IPv6 で問い合わせに行くことになります。

けど、MacOSX の snmpd は IPv4 にしか答えないので mrtg はエラーとなります。そして、mrtg は「IPv6 から IPv4 にフェイルオーバーしないよ。」と言う仕様なので、MacOSX への mrtg.cfg の設定における Target は FQDN ではなく、IPv4 アドレスを記述しないと正しく情報が取得できないことになります。

いやぁ・・。奥が深い・・。まず最初に監視対象機器が DNS に A と AAAA があるか確認した後、当該機器の snmpd が IPv6 に対応しているか確認してからでないと mrtg.cfg の記述が完成しないんだー・・。

と。言うこで、このネタ。ここまでにしておきましょう・・。

4月 202009
 

さてと。久しぶりに FreeBSD ネタ;-)。

rcNG。僕は好きく無いんだけど、/usr/local/etc/rc.d/ 配下に自分で書いたスクリプトを置いて、一番最後に実行させるべく PROVIDE:・REQUIRE:・KEYWORD: などを書いても絶対に一番最後にはならない。BEFORE: bgfsck とか書いても、bgfsck が 上のほうに来てしまうし・・。

# rcorder -s nostart /etc/rc.d/* /usr/local/etc/rc.d/*

 
と、言うコマンドを叩くと実行される順番が表示されるけど、自分で実行したい順番にならない・・。
もうどうにもならないので考えた技。上記コマンドを打ったとき、一番最後に実行されるのが、/etc/rc.d/bgfsck なのでこの中からスクリプトを呼んでしまえっ。技を考え出しました;-)。修正分をパッチにするとこんな感じ。

--- /home/takachan/bgfsck       2009-04-20 16:58:23.000000000 +0900
+++ /etc/rc.d/bgfsck    2009-02-08 10:10:39.000000000 +0900
@@ -16,6 +16,11 @@
bgfsck_start () { + +# It operates at the very end. rc is started. + echo 'Starting very end RC.' + /usr/local/site/bin/rc.lastexec + if [ -z "${rc_force}" ]; then background_fsck_delay=${background_fsck_delay:=0} else

 
/etc/rc.d/bgfsck の 中から /usr/local/site/bin/rc.lastexec を呼んでいる。でもって呼び出されたこのスクリプトでは自分が一番最後に実行したいものをツラツラと書いて行けばおしまい。って状態にしています;-)。

同じようなことは他にもあるけどねぇ。例えば /etc/rc.d/LOGIN の中に上記のパッチみたく書けば、その直後に実行されるとか(本当か?試して無いけど;-)、ネットワーク系のデーモンはもっと早い時にに起動したい場合は、じゃぁ、必要なスクリプトから呼んじゃエー。みたいな。

これは FreeBSD の流儀的には美しく無いのだろうけど、思った所でバシっと動作してくれないのが困ってしまうのよ・・。rcNG は・・。はぁ。

まぁ、今の所は一番最後に起動したいのが一番多いのでそれはそれでよしとしています。xdm(僕の場合は kdm だけど)なんざ、一番最後に起動して欲しいのよねぇ。/etc/ttys 経由では無く、rc スクリプト経由で。

/etc/ttys から xdm を呼んじゃうと kill しても自動的にまた起動してしまうでしょ。あれ、好きくないのよ。今はそんなことなくなったのかな?最近のは試してないけど。

それにしてもこの技、よい子はマネしないでねぇ;-)。

4月 192009
 

iPhone 3G に「全力案内!」をインストールして、自転車で出かけてみました。目標をセットしてフリーモードで利用すると緑色の線が表示されてナビゲージョンしてくれます。

今回は自転車に付けて試してみました。付けた自転車はブリヂストンのトランジットセブン。この自転車、僕的にはお遍路さん仕様なのであります;-)。

これに、サンワサプライのホルダーを装着。今回装着した図はこんな感じ。

KC3N0010_chariandiphone.JPG

ハンドルの下に T バーを付けているので、そこにスピードメータと iPhone 3G を装着。ちょっとブレーキワイヤなどの取り回しが苦労するけど、なんとか見えないこともない。

iPhone は「自動ロック」の設定を”しない”にしていざ出発。iPhone の画面をずっと見ているとあぶないのでチラッと見るのだけど、光を反射して異様に見にくい。保護シートが太陽光を反射して見にくくしている。ってのがある。

後、「全力案内!」の「ヘッドアップ」の機能について。走ったところを青い点で残してくれる(15m ごとに一個の点が付くと言うのだけど、本当かなぁ・・)のだけど、交差点を曲がって、大体三個ほど青い点が付くとヘッドアップしてくれる。曲がった後にちょっと遅れてヘッドアップ。って感じでしょうか。

ホルダー自体は特に問題も無く。と言う感じでしょうか。多少の段差が合ってもグラグラしないです。僕は YAMAHA の TT250R にも装着できるかなぁ。まぁ、林道を走ることはしたくないけど・・(^^;;。

とまぁ、iPodTouch には無かった GPS ですが、思いっきり堪能しています。そー考えると 3G があるので地図も空から降ってくる。と言うのも良いですねぇ。au の ez ナビウォークでもやってみようと思ったけど、タッチな地図が無いしぃ・・。って感じです。

あ。「全力案内!」の地図データ。これは良いですねぇ。僕は車にパナソニックのストラーダカーナビの DVD 版を付けているのだけど、この地図データよりずっと良いと思います。こんなすばらしい地図が空から降ってくるんだからすばらしい。と思います;-)。

ちなみに都内を自転車で走り、その時 mobilepoint のあるところばっかり拾って走ったら 3G 使わなくて良いかなぁ?などと思ってしまいますが;-)。

それにしてもバッテリーの持ちは悪いです。30 分位でバッテリ半分終了。って感じでしょうか・・。チャリは車とは違いバッテリと言うのが無いので充電が出来ない。太陽光発電をするかなぁ。と言う感じですが、以前、アキバで手回し式の携帯電話充電器を 300yen 位で買ってきたので、それを発電機として USB 経由で iPhone 3G に充電するしかけを作ろうかと考えている最中です。

バイクの場合はシガーソケットのメス部分をバッテリに接続すれば車と一緒になるので特に問題は無いかと思っています。

それにしても GPS はやっぱり良いなぁ;-)。ちょっとお腹が空いたのでぐねなびで検索するかなぁ。みたいにもできるしねぇ。