2007年3月5日

iframe をちょっと使ってみました。

iframe というコマンドを使うと、他の URL を参照する「箱」が作れる。そこで、その実力を見せてもらうべく、ちょいとくら実験だ。

実験の被害者はhttp://www.linux-m32r.org/lxr/http/source/arch/i386/kernel/i387.c?a=i386#L51
という URL。Linux のソースコードが「さくさくっ」と参照できる良いページ。登録されているページが偏っているのが弱点。

<iframe src="http://www.linux-m32r.org/lxr/http/source/arch/i386/kernel/i387.c?a=i386#L51"
style="width:90%;height:3em;" scrolling="no" marginwidth="0" marginheight="0" frameborder="1" align="center"></iframe>


という iframe を仕掛けてみる。うりゃっ!




こんな結果が出ました。うーん。「3行」ぴったり表示させるには height の指定をどうすればいいのか、が課題ですな。3em ではちょっと合わないらしい。あと、align="center" がいまいち効果が無い。なにより、このテンプレート、横幅が足りませんね。

でも、GLOBAL や LXR と連動して…という場合、上記のような記述を半自動で作れる仕組みがあると、とても良いかもしれない。Ajax で作れるかもしれないなぁ(というか、自分で作るのは面倒だから、誰か作ってくれないかなぁ…他力本願寺)。

leverage all over the place

金持ち父さんシリーズで、まだ読んでいない本がBookOff においてあったので読むことにした。このシリーズはたまに「はっ」とするような素人向けの説明があるので一応チェックすることにしているのだ。

この本の本当のポイントはレバレッジらしい。つまり 1の作業で、1の結果を得るのではなく、1の作業から10も100も結果を得なさい、ということだ。

お金を得るためのレバレッジと考えるとなかなか思いつかないが、他のものでもよいとなると、なるほど。確かに、世の中、レバレッジを使ったほうが良いことで溢れている。

たとえば、私がたくさん本を読むのもレバレッジの一種だ。
何か新しいことをやる場合、その前に入門書と専門書を最低1冊づつ手に入れるようにしている。で、入門書を必死こいて読む。「物事を始める前に」これをやっておく。たとえ OJT のようなものだとしても、これだけは手を抜かないようにしている。

入門書を読んだからと言って、これからやる仕事のコツがつかめるわけではない。しかし、何の予備知識も無い、0の状態からスタートするわけでもない。全体が100だとするならば、この努力で 1 か 2 辺りからスタートできる。周りが100を学ぶときに、自分は99とか98で済む、と言うのは心理的にすごく楽になる。結果、狭視野に陥りにくくなる。で、その分少しだけほかの事に気がつきやすくなる。

また、専門書はその分野についてのエッセンスが書いてある。一般に経験だけから全てを導き出そうとすると、S/N 比が悪すぎる。だから他の人が S/N 比を改善し、情報を集中させた専門書は、理解速度を上げるのに役立つ。

それだけではない。そもそも知識を全部暗記するのは不可能だ。知っていることを全部書き出すのは手間がかかりすぎる(数回、雑誌に記事を書いただけでしみじみ思うもの)。他の人がエッセンスを書き出しておいてくれたものを手元に置いて、必要に応じて参照するのは、とても有効なことだ。

これら全てが、情報収集に関するレバレッジである。

こう考えると、金持ちになるためという目的のためにはレバレッジを使っていないだけで、人間はレバレッジを結構使っている。「その発想を金に対しても使え」と言うのはある意味、妥当だ。

実は、fj の教祖様の蔵書/既読書@GeoCities もレバレッジだ。本をある程度読むと、「役に立たない本」とか「時代遅れな本」が判るようになる。が、さらにしばらくすると「どの本が役に立たなかったのか」を忘れてしまう。そこで、自分の脳みそではなく、外部記憶にそれらの情報を記録することになる。

検索性などを考えると、紙と鉛筆よりも計算機上に記録するのが正しいのは間違いない。しかし、手元のローカルマシンにだけその情報を置いてしまうと、今度はマシンがクラッシュしたときにデータを全滅させてしまう恐れが出てくる。本屋へ行くときに持ち歩きたい、という要望が、マシンクラッシュの確率をさらに上げる。

ならば、他の人にも公開して、リモートからもアクセスできるようにすれば、携帯端末からでもアクセスでき、マシンクラッシュの確率も下がり、バックアップも世界中に取れている、と一石三鳥だ。しかも、検索はgoogleの計算機パワーを使える。ちょいと、他の人のお役に立てるかもしれない状態にするだけでこれこの通り、自分にとって とっても便利な状態が発生する。1が2,3,4 倍ぐらいにはなってくれている。

ようするに、お金がたくさん欲しかったら、お金に関しても同じような事をしなさい、とまぁようするにそういうことなんだな、と理解した。

2007年3月2日

Google誕生

いや、これは面白かった。
出版日は2006年6月1日で、実際結構前に読み終わってたんだけど、再度読んでしまいました。

一応、今はまだ 既読・コンピューター と言う分類にしてあるのですが、果たしてそれが本当に正しいのか、正直わかりません。微妙にもれ出てくる、Googleエンジンの他のサーチエンジンとの違いの所だけを考えるとコンピューターという分類なんでしょう。

でも、Google最大の特徴は、「研究室を運営しているかのごとく」行われているその運営方針でしょう。この会社、社員に対して要求するレベルがとんでもなく高い代わりに、提供してくれるサービスもとんでもなく高い。
『ちゃんと環境を用意してあげるから、インターネットに奉仕する、と言う形で Google に奉仕しなさい』
というのは、広告を主たる収入源にしている Google にとって、大正解な戦略。


ここまで正解かつ大胆な会社運営方針を思いつくだけでもえらいと思いますが、はて、正解が判っていても、これを実行できる人が他にいるだろうか?? Microsoft をも含めて、ね。

…まぁ、できれば実行できる人になりたいやね。そのためにも、まずは大それた収入源を作らなくては。

業務連絡

えー、Alicia! Alicia!! Alicia!!! は、実はある実験のためにちょっと凝ってみたものです。というわけで、凝った結果の報告。

見ての通り、一応ソースコードを表示できます。テンプレートに手を加え、HTMLを直接編集する必要がありましたが。

テンプレートへの変更は次の通り。

まずは色の定義を2つ追加しました。ソースコードの文字本体の色は変更するつもりは無かったので、背景色と、囲み枠の色だけです。

<variable name="mainSourceBgColor" description="Main Sourcecode Background Color" type="color" default="#e0e0e0" value="#e0e0e0">

<variable name="mainSourceBorderColor" description="Main Sourcecode Border Color" type="color" default="#000000" value="#000000">


次に、ソースコード用のクラスを用意しました。これは /* Posts 行で始まる、投稿用クラスセットの末尾に追加したものです。

span.post-sourcecode {
background-color: $mainSourceBgColor;
border: 1px solid $mainSourceBorderColor;
}
div.post-sourcecode {
margin: .25em .25em;
background-color: $mainSourceBgColor;
border: 1px solid $mainSourceBorderColor;
}
pre.post-sourcecode {
margin: .25em .25em;
background-color: $mainSourceBgColor;
border: 1px solid $mainSourceBorderColor;
}


インデントの事を考えると、divはほとんど活躍の機会はないと思います。span は行の中にコードをいれたい時専用ですね。

で、その上で、
もし、あなたが Term::ReadLine::Perl を使って何かしたければ、<div class="post-sourcecode">$readline = new Term::ReadLine::Perl 'hoge';</div>とすればよい。

や、
あとは<span class="post-sourcecode"> $readline->readline(); </span>のようにメソッドを呼べばよい。

あるいは、
次のパッチを当てればよい:<pre class="post-sourcecode">diff -ur Alicia-1.1.4/lib/Alicia/ReadLine.pm Alicia-1.1.4-fix/lib/Alicia/ReadLine.pm
--- Alicia-1.1.4/lib/Alicia/ReadLine.pm 2005-03-03 13:47:00.000000000 +0900
+++ Alicia-1.1.4-fix/lib/Alicia/ReadLine.pm 2007-03-02 00:17:21.238375000 +0900
@@ -14,12 +14,13 @@
package Alicia::ReadLine;
(中略)
- my $self = new Term::ReadLine;
+ my $self = new Term::ReadLine::Gnu $class;
return bless $self;
}
</pre>

ようするに Term::ReadLine::Gnu を強要してしまえばよいのだ。


のように HTML レベルで編集すれば、Blogger でもソースコードを掲載することはできます。

ただし、あまりお勧めではありません。
  • テンプレートをゴリゴリ弄り回すと言うことは、何かの拍子にテンプレートモデルが大幅に変更になると、作りこみが全部消えてしまうのだ。そりゃ、どこかに保存して、再度 apply すればいいんだろうし、それは全部のコードを弄り回すのに比べれば楽なのだろうが…。それでも結構辛いだろう。
  • ソースコードの中の不等号を全部置き換えて回るのは手作業になる。これは思った以上に辛い。いや、Alicia のソースの場合はまだいいのだけれど、上記の例の場合、タグの山なので…。
というわけで、他もどっこいどっこいだ と判ったら Blogger を使えばいいと思う。逆に、ソースコードを掲載するのに都合のよい Blog が判ったら教えてくれぃ。私もソースコードものはそちらに書くことにするから。

2007年3月1日

Alicia! Alicia!! Alicia!!!

Alicia というのは、この場合 Uniadex 社さんが開発した crash のフロントエンドソフトだ。
最新版は 1.1.4で、sourceforge に登録されたのが「2006-3-14」という実に『年度末』を意識したいいタイミングで更新が止まってしまっている。頼むよ…。

おおよそ1年経つと他のソフトはイロイロ進化していくわけで、そういう意味ではIPAのお金で開発するのはいいがその後の金策の目処が立たない場合、お金以上に人の努力が風化してしまうという、実にもったいない代物である。

その中でも最ももったいないのが、
このプログラムは perl の Term::ReadLine::Perl を前提にしている
という点だったりする。

ご存知の通り、perl は 5になってからオブジェクト指向もどきな記述も許すようになった。この事実と CPAN の発展のおかげで、perl には山のような…そう、文字通り山のようなライブラリセットがある。その中に、readline ライブラリを perl で実装する、というものがある。

Term::ReadLine::Stub というライブラリがスタブライブラリだ。デフォルトでもこいつは存在するが、コイツ自身はスタブなので本当の本当に最小限度の事しかしてくれない。オブジェクト指向と言った通り、もし独自の Term::ReadLine もどきのライブラリが作りたければ、Term::ReadLine::HogeHoge という名前で作ればよい。Term::ReadLine とメソッドなどの形式をきっちりあわせておけば、Term::ReadLine を使うように作られたプログラムは、全部あなたの Term::ReadLine::HogeHoge でも動くことになる。

で、大雑把に言って、HogeHoge の部分には今、2種類の実装がある。Term::ReadLine::Perl と Term::ReadLine::Gnu の2つだ。

Term::ReadLine::Perl は、結構昔からある実装で、deprecated扱いである。ようするに、今これをベースに物を作ってもうまく動かないのだ。

Term::ReadLine::Gnu は、gnu readline ライブラリのフロントエンド perl ライブラリで、これを導入すると、Term::ReadLine のデフォルトが stub から Gnu に完全に override するという気合の入った代物だ。

さて。通常のオブジェクト指向であれば、Term::ReadLine::Perl と Term::ReadLine::Gnu は同居できる。もし、あなたが Term::ReadLine::Perl を使って何かしたければ、
$readline = new Term::ReadLine::Perl 'hoge';
とすればよい。Term::ReadLine::Gnu を指定する必要があるなら、
$readline = new Term::ReadLine::Gnu 'hoge';
になるし、どれでもいいや、というなら、
$readline = new Term::Readline 'hoge;
と初期化すればよい。あとは $readline->readline(); のようにメソッドを呼べばよい。

しかし、相手は perl。そうは問屋がおろさない。

問題は、Term::ReadLine::Perl は deprecated な理由。実は、Term::ReadLine::Gnu と Term::ReadLine::Perl のインストール順序と、利用するコードによっては、 $readline-> で参照しているはずの関数の一部が、Term::ReadLine::Gnu のもののままになっており、そいつが必要なメソッドを Term::ReadLine::Perl が実装していないため、実行時エラーを吐いて止まってしまうのだ。Aliciaにはどうやらこのような使い方をしている部分があるらしい。そして、Term::ReadLine::Perl しかインストールしていない環境でしかテストしていないらしいのだ。

厄介なのは、
$readline = new Term::ReadLine 'hoge';
のようにデフォルト利用に設定した場合、実は何が使われるかはインストール順序依存だ、という点にもある。環境によって、Alicia は動いたり動かなかったりするのだ。

実は直す方法は判っている。次のパッチを当てればよい:
diff -ur Alicia-1.1.4/lib/Alicia/ReadLine.pm Alicia-1.1.4-fix/lib/Alicia/ReadLine.pm
--- Alicia-1.1.4/lib/Alicia/ReadLine.pm 2005-03-03 13:47:00.000000000 +0900
+++ Alicia-1.1.4-fix/lib/Alicia/ReadLine.pm 2007-03-02 00:17:21.238375000 +0900
@@ -14,12 +14,13 @@
package Alicia::ReadLine;

use Term::ReadLine;
+use Term::ReadLine::Gnu;

@ISA = qw (Term::ReadLine);

sub new {
my $class = shift;
- my $self = new Term::ReadLine;
+ my $self = new Term::ReadLine::Gnu $class;
return bless $self;
}

ようするに Term::ReadLine::Gnu を強要してしまえばよいのだ。

取り合えず、この方法で Alicia は動く。
問題は、Alicia を作った人たちが、Term::ReadLine::Perl を使ったと言いながら、Term::ReadLine で $self を作り上げている点だ。彼らは、Term::ReadLine::Perl の何に依存してコードを作ったのだろう? そこを踏むにはどうすればいいのだろう??
これが判らないと、テストもデバッグも出来ない…。

Solaris10 telnetd 脆弱性を突いた worm 発生

「パターン青! 使徒です!!」

というわけでは無いだろうが、Vulnerability Note VU#881872(Sunの管理番号では #102802)を利用した worm が発生したらしい。
このwormの攻撃対象は x86 と Sparc の両方のプラットホームだそうだ。kshを使っているらしい。

うーむ。いまどきどうしてこんなバグが…という気もするが、やはり弱点が露呈すると worm を作る人が出て、しかもそれが実際に効果を上げる事が出来る、という事は、世の中の多くの人が、いかにセキュリティを甘く見ているか、いかにセキュリティ被害コストを甘く見積もっているか、の表れでは無いだろうか?

それとも侵入される程度であれば、予定通りで問題は無い、という事なのだろうか?
root権限ごと持っていかれているのに???その割には、「口うるさい」のも事実だよね?

頼むから口で言っている要求レベルと実際にお財布から出すコストで実装できるレベルが乖離しまくっている状態を認識できないような人・組織・会社・政府に IT インフラ実装のための予算を与えないで欲しいなぁ…。

2007年2月27日

ひとつ上のプレゼン

てっきり、技術者用の「発表」指南書みたいなものだと思って買った本。

実は「広告」の「プレゼン」のプロが自分達の方法をまとめた本でした。
(全然違うし… orz)

直接的な参考にはなりませんでしたが、ここに掲載されている広告はどれも心を打つ、良いコピーを使っており、とても判りやすかった、という点で共通しています。

ある種のメッセージ性を考えると、これと同じぐらい判り易くて初めて、技術者用の発表も良い発表になるのかな、とちょっと過去の発表内容を反省することにしました。

とりあえず
  • 言いたい事をシンプルに
  • 短時間で
発表できるようになろう。

2007年2月26日

吉徳って株式会社だよね???

Darth Vador 兜のせいで、株価が上がるか下がるか、どちらかするはずだと思って探しているのだが、見当たらない。

あれー???

2007年2月23日

梅も桜も咲き始めてるよ。まだ2月なのに。

家から一番近い…これは梅だったかしらん???
結構大きくなっています。

そして、その次…というか場合によってはその真下と言うか…にあるのが、近所の幼稚園にある桜の1本。三部咲き程度ですが、もう開花してます。
まだ2月なのにー。お前さん、結構な早起きさんだね。


というわけで。今年は桜の開花が早いそうですが、本当だなぁ、と言うわけでカメラをもって撮影してみました。
結構手ブレしてますが、気にしないでください。
ちなみに、電池がすぐ切れ掛かったため、10分程度しか撮影できませんでしたとさ。ちぇ。

2007年2月20日

健康診断2

昨日の続き。

バリウムを飲まされるのは書いたとおりだが、ちょっと怖かったのがそこのX線技師の方。

低レベルとはいえX線なので、普通は別室から声で指示を出すものなのだが、この人は撮影している間中、同室して姿勢を腕でぐりぐり動かしていたのだ。

いい具合に日焼けしているその焼けっぷりから見て、全ての患者さんにそうしているのではないかと…。だ、大丈夫でしょうか??

2007年2月19日

健康診断

今日は健康診断であった。

「朝8:00に南塩町へ来い」

先生っ! 朝8:00は普段「遅刻だー」と叫びながら家から飛び出している時間です。
そんな所に、そんな時間につくということは普段より1.5時間も早く起きなくてはいけません。

「前の日の 21:00 以降飯を食ってはいけません。
水も 0:00 以降飲んではいけません」

先生っ!! そんな状態で翌日の 6:45 の電車に間に合うべく起きている段階で、もう HP が0に限りなく近いです。健康不健康以前の問題が発生しています。

「なお、バリウムを飲むのは最後です」

鬼かあんたはーーーーー!!!!

と言うわけで、健康診断のせいで健康状態が破壊され、ぼろぼろです。寝不足と空腹と、水分不足と…
誰か、非破壊健康診断を開発してください。

2007年2月16日

RHEL5はいつ出るのか?


これは RHEL5が遅い理由なのか、RHEL5が遅い理由を隠すための別の何かなのか…???

熱対応とか、ロードバランスのための仮想化はいいんだけどさ。仮想化のために追加されたコードの信頼性が低いと、1台倒れただけで仮想的には何台も倒れるんだけど。その辺の「コード品質」を考慮しているとは到底思えないのだが大丈夫だろうか?!??