差出人を詐称するウイルスメールだと、 宛先(To:)も差出人(From:)も、感染したパソコンの中にアドレス帳や Web ページのキャッシュとして残っているものが利用されます。 ということは、私の所に届いたメールのFrom:欄は、「 私のメールアドレスの載ったページを見るような人の見るページに載っているアドレス 」(ややこしい)であるはず。
というわけで、ウイルスメールの From: 欄の集計をとって多い順に並べれば、 このサイトの 関連ページ が浮かび上がってきそうな予感。 早速"ごみ箱"メールボックスで集計してみました。
順位 数 From: 01: 361通 ki@kmonos.net (自分) 02: 160通 BGA32/JACK32.DLL などの木村さん 03: 141通 ZIP32J/TAR32.DLL などの吉岡さん 04: 140通 mswsgulf@microsoft.com 05: 130通 UNBEL32/hikoboshi などの島田さん 06: 128通 mail@kinaba.cjb.net (自分) 07: 123通 InfoService@microsoft.at 08: 121通 mssupport@gbrands.com 09: 113通 mts@lebanon-online.com.lb 10: 110通 austria@msdirectservices.com 12: 102通 UNLHA32.DLL などのmiccoさん 13: 98通 miccoさんの別アドレス 18: 89通 7-ZIP32.DLL などのakkyさん 22: 73通 Limon Photo Album の作者さん 23: 72通 QuickZip などのLeungさん 28: 68通 Bareshare のサポート 37: 66通 PC-Doctor のサポート 43: 62通 WinZip のサポート 50: 61通 UNGCA32/uncaldix などの天野さん # 書くまでもないことですが、上の表に載せた方が # ウイルスに感染してるわけではないので誤解なさらぬよう。
11位から50位で上の表に載せなかった部分には、 microsoftを装ったものと、何故か lsu.edu の個人アドレスっぽいのが続々と。それっぽい結果にはなったかな。
みつからなかった。。。(T_T)
OO2003 にBertrand Meyer氏(「契約による設計」とか Eiffel とかの偉い人) が来てたということを今日知りました。あー、 もっと早く知ってれば生で顔を見るために行ったのに~。←ミーハー
友人に教えてもらった 筑波大の講義資料 を見て、やっと単体法の意味がわかってきたり。
線香花火を写真で撮ろうとして失敗したりしていました。
計算機から計算機へと渡り歩くプログラムと言えば、 有名なのはやっぱりコンピューターウイルス。 自分自身の実行ファイルを他へ送りつけて、 向こう側で実行させることで増殖していく迷惑な輩です。
しかし、実行ファイル.exe を他へ送信して移動する、 なんてのは方法が当たり前すぎて面白くない。 今まさに実行途中のプログラム自体が他のマシンへ飛んでいって、 行き先でその続きから実行再開しだしたりしたら。 これはいかにも「プログラムという生き物」が動いていったみたいで、 ちょっと楽しそうです。お暇な方は、 手元に RhinoWithContinuations のご用意を。
着地側で小さな受け入れマットが必要なので、 my.hogehogehoge.net というマシンのport1234に敷いておくことにします。 このマットは、どんなプログラムが飛んでくるかを知りません。 汎用の受付ルーチンです。コード全体は server.js にて。
user@my.hogehogehoge.net> rhino -opt -2 server.js waiting...
さていよいよ、ネットワークの宇宙を飛び回るプログラムの登場。
// コード全体は client.js にて。
function main()
{
for(var i=1; i<=20; ++i)
{
print( i + "回目..." );
// 10回目より先はmy.hogehogehoge.netで動こうっと。
if( i == 10 )
ColdSleep_and_WarpTo( "my.hogehogehoge.net", 1234 );
}
}
main();
ローカルで実行してみましょう。
local> rhino -opt -2 client.js 1回目... 2回目... 3回目... 4回目... 5回目... 6回目... 7回目... 8回目... 9回目... 10回目... local>
おっと。20回のループのはずが10回で終わってしまいました。
マシン my.hogehogehoge.net に目を向けると…
user@my.hogehogehoge.net> rhino -opt -2 server.js waiting... 11回目... 12回目... 13回目... 14回目... 15回目... 16回目... 17回目... 18回目... 19回目... 20回目... user@my.hogehogehoge.net>
…としっかり、続きはこっちで動いていました。めでたしめでたし。
と、JavaScriptで思いっきりお手軽に書いてみましたが、「モバイルエージェント」 などと呼ばれる移動するプログラムについての本格的な研究は、 JavaGo や Rubiret 、 DOCaml などなど様々な形でなされているようです。興味を持たれた方は是非。
「Re: That movie」や「Re: Wicked screensaver」という件名で 添付ファイルがついていてその拡張子がpifだったりする、 要するにどっからどう見てもワームなメールが続々と届いてます。 控えめに表現すると、オレ観測史上最高速度を軽く更新する勢い と言えましょう。 また新手が流行ってるんですかねぇ。
…とか書いてる自分が感染してたら格好悪いので今からチェック。
追記: 件名からして Sobigの亜種 らしい。
風景写真をよく壁紙にしてるのもので、 最近、壁紙@ふたば にハマり気味。
英文書くときってつい「こういう言い回しってあるよね?」と google でのヒット件数で確認してしまいます。で、時々、 やべぇ日本語のページしか引っかからない!、と慌てて考え直したり。 なので、ネット接続できない環境で書いてるとどうも不安。 いい加減この検索エンジン依存症を何とかしないといかんとは思うのですが。。。
ひとに MathPlayer というIEでMathMLを表示する用プラグインの存在を教えてもらった。 おーこれは便利…と書こうとしたところで気付いたけれど、 よく考えたら、まだ今までに MathML を使ったページって見たことないや。 今度自分で数式書く機会があったら使ってみよう。
「魔法陣グルグル」を読み返し始めたら止まらなくなってしまいました。 最初の方はどのコマでどんなセリフが出るかまで全部覚えてるにも関わらず、 今でも笑いがこらえきれない。ひー。
当時は途中つまらなくなってきて、単行本は 11 巻までで揃えるのやめてました。けど今読んでみると先が気になるので、 近所の本屋に走ってとりあえず二冊買い足し。12巻でまた笑。 13巻はコマの運びが上手いですね。このほんわか系の絵でドキッとさせられるとは。 2chスレ でもこの巻だけ評価高いみたい。
つーか、本棚を掘り返してたら 関 連 C D な ど が どっさり湧いてきてびっくりです。よくこんなに買う財力あったね、中学生の俺…。 "C" の5曲目の「夢の回転木馬~わかれのウィンク」 は私の生涯の中で三本の指に入る名曲なので誰かMIDIで演奏してないかなぁ、 と思ったけど無かったでした。
メソッドを prototype に登録する方式でプログラムを書こうとすると、 他の言語で言うプライベート変数をどうやって実現すればよいのか、 というのがかなりの難問となります。
function MyObject(xx, yy) // コンストラクタ
{
this.x = xx;
this.y = yy;
}
MyObject.prototype.getXplusY = function() // メソッド
{
return this.x + this.y;
}
var p = new MyObject(100, 200);
document.writeln( p.getXplusY() ); // OK. 300 と出力される
document.writeln( p.x + p.y ); // しかし外からもp.xとp.yが見えてしまうのが嫌...
今日はそもそもprototypeは使わない、という案は考慮に入れないことにします。 と、この問題の解決策は…「コンストラクタ関数を生成」& 「メソッドをそのprototypeへ登録」する関数を作って、 隠蔽したい部分はその関数内のローカル変数で保持する、というものだそうな。 「Internal Properties Emulation」 というページに完璧な美しい解があります。小さな欠点としては、 private部分がいつまでも配列に残ってしまい、GCが効くにくくなること。 あと、'protected' への拡張が難しいこと。
以下、例によって変なコードを面白がるだけのネタなのでよろしく。
もう一つ、'コンストラクタコンストラクタ' よりも後では private領域に触れるメソッドを新しく追加できない、という問題もあります。 これは普通に考えれば、長所です。こうなっていないと、 後で外部から勝手にメソッドを加えて内部にアクセスし放題になっちゃいますので。
しかし何と言いますか、一度メソッドを固定したら増やせないなんて、 それじゃただのクラスじゃん!…などと思わないでもないのでそこは大目に見て (いい加減)、やっぱり後付けでメソッドを増やせるように書けないかなぁ、 と。そうすれば、上にあげた書き方からの変更も最小限で済みますし。Let's go!
( ..全コードはこちら.. )
function MyObject(xx, yy) // コンストラクタ
{
this.private_var("x", xx);
this.private_var("y", yy);
}
MyObject.prototype.getXplusY = function() // メソッド
{
return this.x() + this.y(); // 中からはprivateなxやyへアクセス可能
}
var p = new MyObject(100, 200);
document.writeln( p.getXplusY() ); // OK.
document.writeln( p.x() + p.y() ); // エラー発生! 外からprivateには触れられない
選挙速報の”得票数”の欄に 小数点がある のは何でだろう?と思って調べたら、 こういうこと らしい。ほほう。 って、これってたぶん常識なんだろうなぁ。
プチD言語ブームみたいなので後押しするなら今だ! と、Dのリファレンスの日本語訳を始めていました。けどなんだか3日で飽きたので、途中だけど公開。 訳が全然こなれてないです。スミマセン。あとOverviewが半分くらい未訳。 あとでちゃんと整えます。
D≒Ada説。なるほど。この方のサイト、 他のコンテンツも私の興味の方向的にすごい親近感が。
ブックマークレット という技を初めて知って感心しているところ。 なるほど、これは思いつかなかった。私が今入れてる右クリックメニュー拡張、 全部ブックマークに移せそうなのでそのうちやってみようかと思います。 IEだと文字数制限があるらしく、6行プログラミング必須になるのも楽しげ。 楽しむところ違うような気もしますが。
大学の学生端末室に置いてあった なっとくする複素関数 を読んで、猛烈になっとく。 思わずこのシリーズを買い占めようかと考えてしまったり。
「JUNCTION」 / Hysteric Blue
ゲット。たぶんラストアルバムだろうなぁ。 その時々で一番いい曲をシングルとして出してくるグループ、 という印象なのでアルバムで初めて聴く曲って相対的にあんまり期待してないのだけど、 今度のは6曲目の "99%LATE" がかなり好きだ。
で、その帰り道で 記録的な大雨 に見舞われる。傘は持ってないし、 雨宿りしようにも周りは民家だらけ地帯だったので面倒くさくなって ザブザブと家への20分の道を歩み始めたK.INABA。 例えプールに飛び込んでもこんなに濡れまい、 といいたくなるくらい水も滴る(略)になって帰りついたのであった。 大粒の雨って直撃すると痛いのだな、と新発見をした気分。
Rhino with Continuations! (ネタ元)
Rhinoっていうのは mozilla.org で開発されてるたぶん現時点で最強のJavaScriptインタプリタなんですが、 それに更に"継続"と"末尾呼出除去の最適化"を載せたものだそうな。 継続とは何ぞや?については「なんでも継続」 というページの解説がわかりやすいです。 こんなナイスな処理系の存在を今まで知らなかったことを悔やみつつ、 早速自宅マシンのrhinoを置き換えているところ。さあ何を書いて遊ぼう。
cout << sizeof(f(0)) << endl; // 4
cout << sizeof(f(1)) << endl; // 1
引数として 定数0 を渡したときと 定数1 を渡したときで戻り値の型が違う、 そんな f を template も preprocessor も使わずに書いてみようの巻。 簡単です。正解はCMのあとで。
最近自分の中で乙一ブーム。半年前くらいに何かで見かけた「手を握る泥棒の物語」の宣伝文句に惹かれて手にとってみて以来、 ちょこちょこと読んでました。で、夏休みということで彼の著作を先日5冊ほど 買い込み。キーワード@はてなダイアリーを見ると自分だけでなく、 今まさに流行りなようですね。白乙一,黒乙一って表現が面白い。
// 正解例
struct dummy_int { dummy_int(int); };
int f(void*);
char f(dummy_int);
しばらく前に「Adobe Reader 6.0 を入れたら、IE の窓の中で直接 pdf を開こうとすると "Could not find Adobe Acrobat" なるエラーが出て開けなくなっちゃったようわーん」 という趣旨のことをここに書きましたが、解決法がわからなかったので放置してました。
しかしやはり不便この上ないので、何とかすべく再調査開始。
再調査っていうか、実際はgoogle様におすがりするだけなのが情けないところですが。
で、発見!
レジストリのHKEY_CLASSES_ROOT\Software\Adobe\Acrobat\Exe
というキー(なければ作る)の値として、Reader
の実行ファイルへのパス文字列を書き込んでおけばよいそうな。
私はこれでうまく行きましたのでメモ。
先日どこかで「この景色とよく似た場所を俺は知っている」という感じを 受けたことがあって、その時しばらく、どこだったっけなーと首をひねってました。 で、今日散歩しててその "よく似た場所" を通って、やっと「あーここだったここ、 ここ」と思い出せました。喉のつかえがとれそうです。バンザイ。
問題は、自分は先日どこにいるときに既視感を覚えたのか、が思い出せないことなのだ。
MATRIX RELOADED を見に柏へ…行ったら"柏まつり"が開かれてて大賑わい。しばし歩き回ってから、 映画館へ。アクションシーンはもっと短くてもいいんじゃないかなあ、と思いました。 グラフィック技術的にはどのシーンも確かに楽しいんだけど、 ひたすらスミスが飛んでくばかりだと微妙に飽きる。 新キャラのTWINSが格好良かった。シナリオは、どうけりを付けるんだろ?と次回作に期待。
最近注目しているC++ソースからのドキュメント生成ツールが、
Natural Docs というヤツ。
つい先日version 1.0が出ました(って、実は私も今気付いたのですが)。
目標として Comments should remain as readable and natural as possible.
を掲げているのが一番大きな特徴で、**とか@とか=とかのタグをできる限り排除して、
//
// Function: Hoge
//
// Do hogeish operation to string
//
// Parameters:
//
// s - operand string
//
void Hoge(const std::string& s);
naturaldoc を通さずともソース自体がかなり綺麗なドキュメント として読めるようになっています。あと、デフォルトの CSS デザインが他のドキュメント生成ツールのものと比べて格段にスタイリッシュなのも Good。 (例)
ただ問題は、生成されるhtmlを弄りたいとおもったら Perl のソースを頑張って書き換えないといけないことと、 C++のtemplateにさっぱり対応してないこと、 コメントの付いてないクラスや関数は単純にスキップされてしまうこと。 こちらも今後の発展に期待。