CSV とは "Comma Separated Value(s)" の略なのであって,こんなフォーマットはもはや CSV とか言っちゃいけません:
<<key1>>value 1<<key2>>value 2<<key3>>value 3<<eol>>\n
それぞれの値にキーを持たせており,かなり冗長なデータ構造。しかし私の掲示板ほど過疎ならばこんなのは全然気になりません。むしろ私はきまぐれなので,以前から記録するデータの追加等を簡単に行いたいと思っていたのです。
これ,分解してキーと値のペアをハッシュに入れるのは Perl コードわずか 1 行。
# 変数 $line に上の行が入っているとして
my %data = ($line =~ /<<(.*?)>>(.*?)(?:(?=<<))/g);
CSV の行を split /,/ するのと同程度に簡単なのです。・・と言っても正規表現はごちゃごちゃしてるけど。笑い
「圏外からのひとこと」by essa さん経由。私が「創発」という言葉に初めて出会ったのは「人工社会 ─ 複雑系とマルチ・エージェント・シミュレーション」という本にて。それからちょくちょく「複雑系」「創発」という事場に目を光らせたりしてたんだけど,複雑系科学を真面目に語っている文章はなんとなく「電波」だの「トンデモ」だのという評価を受けていた気がするんです。本当に "なんとなく" "そんな気がしただけ" だけど。
でもそろそろ,堂々と「社会ってのは単純な "個" が複雑に情熱的に絡み会って,不思議な秩序が出来るんだよなー」などと議論してもバチは当たりませんよね?
さてさて,件の pdf ではウェブログ上での交流による興味深い "何か" を期待しています。それはおそらく「創発民主制」とでも言うべき比較的スケールの大きな革新。非効率的な行政にウンザリした市民なら一度は憧れる「直接民主制」ですか。
私のこの雑記は・・そーゆーのには参加できなさげ。元々のコンセプトとして,リアルタイムで読んでもらい反応を期待するような文書じゃないしねー・・。
->カレンダー表示モジュール mycalendar.pm (charset=EUC-JP);
これは私の新しい掲示板で使われている,カレンダーを表示するモジュールです。こんなコードを書くと:
#!/usr/local/bin/perl
use mycalendar;
mycalendar::draw();
__END__
こんなのが出力されます ( 途中を略しています ):
<table class="Calendar"> <caption>2003-6<caption> <tr> <th class="CalSun">Sun<th> ... <th class="CalSat">Sat</th></tr> <tr> <td class="CalSun">1</td> ... <td class="CalSat">14</td> </tr> <tr> <td class="CalSun">15</td> ... <td class="CalSat">21</td> </tr> <tr> <td class="CalSun">22</td> ... <td class="CalSat">28</td> </tr> <tr> <td class="CalSun">29</td> ... <td class="CalSat"> </td> </tr> </table>
また今日の日付を出力する際には特に
<td class="CalFri"><span class="CalToday">20</span></td>
と出力されて大変便利。今なら use strict;,うるう年判定関数 is_leap(),年と月を与えるとその月の最大の日を返す maxdayof() 関数,日付を与えると曜日を返す weekof() 関数もついてきてお値段わずか 0 円。最大 60 回の分割払いもご利用になれます。お問い合わせは♫東京ぜろっきゅ〜に〜♫ろくろくろくの〜♫・・何の話だったっけ。
ええと,掲示板で使っている専用モジュールの一つの最終更新日が 1999年 3 月でした。実に 4 年間,基本的にあのスタイルで稼動していた事になります。しかしいい加減に use strict; でなく,html とも xhtml とも言えず,あちこちに於いて非理論性の目立つモノとはおさらばです。
今回それなりに苦労した点は,書き込みの改行のパターンにあわせて p 要素や blockquote 要素を挿入する部分。結局あまりスマートなアルゴリズムは思いつかず,ちょっとした "力技" になってしまったのは残念です。暇を見て少しずつ改良すべし。
それにしてもしばらく「掲示板」のスクリプトを書いていなかったため ── 以前はダーッと書いて達成感に満足して封印して・・を繰り返したものだけど ── どのようにデータを持ちまわればよいかのアイデアがさっぱり浮かびませんでした。編集,削除機能が実装できていないのはそのため。
診断:全治 1 ヶ月。充分なリハビリが必要です。
ここ 2 ヶ月ほど,いわゆる口内炎に悩まされ続けています。1 つ出来ると 1〜2 週間はそこにとどまり続け,治りかけたらまた別の所でチクチクと。
一度に大量発生しないのがせめてもの救いですが,なんとかならんものかね。
最近,web バグについて少し興味を持っています。そこで様々な web バグに対処すべく Opera や Moz 付属の MUA の設定を模索したわけですが。
FLASH を埋め込んだ MHTML を送られるとどうなるか,てのが今回の疑問。FLASH は UA に新たなウィンドウを開いて任意の URL にアクセスさせる機能を持っているんですよね。Moz メーラならばプラグイン自体を再生されないので何も問題はなさげだけど ( でも実際に確認するまでは安心できないけど ),Opera メーラはどうなんだろう? 気になります。
で実験してみたいんだけど,まず FLASH オブジェクトを作る事が出来るフリーのツールを探さねば。「仕様が公開されていて,フリーウェアもある」という噂を聞いたんだけど,あれれー?
ふと Google を覗き,どうやら今日は M.C.エッシャー の誕生日であるらしい事を知りました。あのシュールな不思議絵に魅了されたら最後,街中の構造物という構造物からトリックの要素を抽出して独りほくそえむ青年の一丁上がりです。やばすぎる。
エッシャーの作品の中で一番のお気に入りは,"Heaven and Hell"。
->Google イメージ検索;Escher Heaven Hell;
ってか,つまり宇宙の全体を描ききっています。最高。わけ分かんないって? ではこの絵を時計盤に見立て,12 時の部分を取り出して説明してみます。・・・そういえばエッシャーはまだ死亡して 21 年。氏の著作権は切れてはいませんが・・すいません,その手の話は勘弁してください。
この図の天使と悪魔の足元が揃う一点が,すなわち宇宙に居る私の現在位置。詳しくは私もよく知りませんが,ここはあなたの位置でもあるし,私の隣に住んでいるヘビースモーカーの兄ちゃんの位置でもあるし ── そう考えて,何一つ問題はないのだそうで。
この点から,宇宙の端を目指して一直線に進んでいきます。
まず悪魔の顔面に到達しました。とりあえず恐ろしいので先に進みます。
すぐに天使の顔面を発見。彼に尋ねたところ,宇宙の端はまだ遠いのだそうで。
またもや悪魔に出会いました。サクッとクリアして次に進みます。
また天使が出現。こうして,宇宙の端に到達するまでに無限の悪魔と天使に出会う事になります。さて,私は一体いくつの悪魔と天使に出会う事になるのかなあ? そして宇宙を飛び出した時,私が最後に出会ったのは悪魔? それとも天使?
ゼノンのパラドクス「アキレスと亀」の結論は「アキレスが亀に追いつくまでには,,確かにアキレスは亀に追いついていない事を説明しただけ」。一般には「1/2 + 1/4 + 1/8 + ... は 1 を超えないし」と説明できるとか。
エッシャーが描いた宇宙の端には,何があるんでしょね?
REDLOF.A ウィルス,ブラクラチェッカーで対応を始めた時から一向に被害が減りません。と言っても増加してるわけでもなく,丁度均衡を保っています。なんだかなあ。
二大ワクチンメーカ,シマンテックとトレンドマイクロの REDLOF.A の解説を覗いて見たところ,それぞれの評価が若干異なるというか,なんかこう,微妙な関係になっています。
- 被害状況:中
- ダメージ:低
- 感染力:低
- 危険度:低
- 感染報告:低
- ダメージ度:高
- 感染力:中
少なくとも「ダメージ(度)」は完全に相反する意見になっています。REDLOF.A は kernel32.dll を書き換えるようですが,トレンドマイクロによればその不正な書き換えにより Windows が起動できなくなる事があると主張。しかしシマンテックは kernel32.dll への感染には触れているものの,Windows が起動できなくなるとは解説していません。おそらくこの認識の違いが評価に表れたものと考えられますが,果たして真実はどちら?
それから最近気付いた事:ブラクラチェッカーにひっかかる URL の 1/3 は REDLOF.A の報告です。サイトの掲示板を覗くと,管理人さんがその対応に困っている事例が多く見られます。感染を指摘されて HTML を修正しても web にアップロードするとなぜか感染しているという状況を繰り返してしまい,原因を認識し辛く途方に暮れてしまうようで。
もうちょっとばかり,REDLOF.A は静かに騒がれそうです。
自作の DOM インスペクタ ( ビューア機能のみ。わらぃ ) で最近の雑記ファイルを眺めて見ると,やはり大量に記述ミスが<見つかったりします。ザクッと修正しちゃいました。
って話は関係ないんだけど,こんなサイトを見つけてみました。
主に PHP アプリケーションのフレームワークを紹介したりしていますか? しかし残念ながら私は PHP にはちょっと疎くて,そちらの価値は今は解りません。私が注目したのは JavaScript のページ。div 要素や input 要素と JavaScript を効果的に組み合わせ,高等な GUI の機能をエミュレートしています。Tree のエミュレートにはビビりましたマジで。IE のみならず,Mozilla や Opera でも大体動きます。ここまでやるか。
そう言えば Safari や他のブラウザの JavaScript 事情を耳にしないんだけど,搭載されていないのかな。「つーか時間帯で挨拶を変えるだけの JavaScript なんて普通要らないだろう」って? もちろんです。<- あ
いつものように「誰に対してマジなレスを返しているんだ」というツッコミは禁止の方向で。WNDCLASSEX::lpfnWndProc に渡すプロシージャのエントリとして,こんな関数を書いてしまいました。
LRESULT CALLBACK wndproc( HWND this_, UINT msg, WPARAM wp, LPARAM lp ) {
if ( msg =- WM_CLOSE ) { // oops!!!!!!11123
::DestroyWindow( this_ );
return 0;
}
if ( msg == WM_DESTROY ) {
::PostQuitMessage( this_ );
return 0;
}
return DefWindowProc( this_, msg, wp, lp );
}
WM_CREATE が送られようが何が送られようが,msg =- WM_CLOSE は "真" と評価されます。よって即座に ::DestroyWindow() が呼ばれ,WM_DESTROY が送られ,さらに ::DestroyWindow() が呼ばれ,また WM_DESTROY が送られるのかなあ?(自信ないけど) だとするとさらに ::DestroyWindow() が呼ばれ,WM_DESTROYが送られ・・・
これ,Windows2000 で実行してもなぜか ::CreateWindowEx() は素通りしてしまい,::GetMessage() が処理を返さないことを見つけてはじめて「何かヘンだな」と気付きます。WNDCLASSEX にセットした値がいけなかったのか,::CreateWindowEx() にセットした値がいけなかったのか,そもそもシステムがぶっ壊れているのか,原因の究明が非常に困難です。
ところが WindowsMe でこのコードを実行すると,::CreateWindowEx() に突入した瞬間に "Stack over flow" という例外を起こしてくれます。そこでようやくプロシージャのタイポに気付く事が出来ました。
今回の件は,Windows2000 では ::DestrowWindow()〜WM_DESTROY 無限地獄の最中にレジスタかスタックのヘンなところをたまたまいじってしまい,偶然にも ::CreateWindowEx() を抜けてしまっただけなのかも知れません。真相は謎のままです。
しかしここで一般性を考えてみると,ゴージャスな環境では,小さなミスはリソースの潤沢さに隠されてしまう事も往々にして起こり得るかと。
こうして私の WindowsMe に対する評価はますます上昇してゆくのです。素人にも玄人にもおすすめできませんが。
関東地方が梅雨入りしたのは昨日? 一昨日? それなのに今日は午後から晴れ間が広がって,夜 10 時現在でも室内気温は 31 度。四畳半の部屋で冷蔵庫とパソコンが同時に稼動しているからですね。湿度も高めなので不快指数抜群。
昨日は Mozilla および Opera 付属 MUA での Web バグを検証しました。Opera 付属 MUA では完璧に Web バグをシャットアウトできるが Mozilla 付属 MUA ではどうしても外部スタイルシートと iframe を自動で読み込んでしまう,という結論でしたが,たった今 Mozilla 付属 MUA でも Web バグを完全に排除できる設定を見つけました。やたー。
というわけで,以下が Mozilla で完全に Web バグを排除する設定方法のまとめです。
設定 ( preference ) の "Privacy & Security" - "Images" にて,"Do not load remote images in Mail &Newsgroup messages" にチェックをつける
設定 ( preference ) の "Advanced" - "Scripts & Plugins" - "Enable Javascript for" - "Mail & Newsgrops" のチェックと "Enable Plugins for" - "Mail & Newsgroups" のチェックを外す
MUA の画面を出し,"View" - "Message Body As" - "Simple HTML" か "Plain Text" を選択する
これで完璧。Moz でも Opera でも,どちらでも好きな方を選ぶことができます。
え? Outlook ではどうするんだって? だから私にギャg ( 以下略 )。
「Web バグ」の「バグ」はプログラムが予期せぬ挙動を取る「バグ」ではなく,「盗聴機」の意味だそうで。メールアドレス別にユニークな識別子を割り振って,<img> タグの src 属性を使って CGI にアクセスさせるような URL を仕込んだ HTML メールを送れば,そのメールアドレスを持つ人間が何時そのメールを読んだかが分かります。これが Web バグ。
これが普通の Web サイト閲覧と違って忌み嫌われているのは,だって普通に Web 閲覧して回っただけじゃ,IP はバレてもメールアドレスまではバレないじゃん。キリ番踏んでシカトして,そのサイトの管理人から「どーしてキリ番報告してくれないんですか」とかメールで絡まれたら泣くっしょ。だから普通の Web サイト閲覧じゃメールアドレスとかバレない。話の分かるヤツだ。でも Web バグは違う。本当に簡単な CGI をちょっと書くだけで,あっと言う間にメールアドレスの有効/無効,その人がメールチェックする時間帯などがバレます。超ヤバい。
しかし Mozilla と Opera 付属の MUA は一味違っていて,HTML を一応理解しながらも img 要素を無視する事が可能です。しかししかし外部からリソースを読み込む要素は img だけではないわけで,それぞれの MUA はどうなっているのかな?
| HTML タグ | Mozilla | Opera |
|---|---|---|
<link rel="stylesheet" href="..." |
× ( 読み込まない設定が見つからない... ) | ○ ( 設定次第で読み込まない ) |
<iframe src="..." |
× | ○ |
<script src="..." |
○ | ○ |
<meta http-equiv="refresh" content="0;url=..." |
○ | ○ |
<frame src="..." |
○ | ○ |
<* style="background-image: url(...)" |
○ | ○ |
<table background="..." |
○ | ○ |
<embed src="..." |
○ | ○ |
Mozilla 付属の MUA では,外部スタイルシートと iframe はどうしても読み込んでしまいます。このあたりが厄介なところ。対して Opera 付属の MUA では,全ての外部リソース読み込みをシャットアウトしています ( 寧ろ,敢えて読み込ませるような設定が見つからなかったり・・ )。
というわけで,Opera 付属 MUA の方がよりセキュアかなという結論。
は? OutlookExpress はどうなのかって? 私にギャグを求めちゃダメだよ hahaha...
・・・と言い放ったのは Linux という壮大なネタを振った張本人 Linus 氏。ここには何の政治的ナントカや戦略的ウンタラ,経済的カンタラ等の面倒くさい思想は一切存在しません。シンプル最高。
で,これを私が言い放つと「・・・なんだそりゃ。ダメじゃん」という反応が返ってくるので鬱です。Linux のような立派なモノを作り上げたならともかく,本当に小さなゲーム,それも著作権法的あるいは特許法的にかなりアレな作品を作っただけで「ただ楽しいから」などとクールな発言を行うのは,どうやらご法度な模様で。
だから私はもっと頑張りたくなるわけで。
->DrawFrameControl() カタログのソースコードとスクリーンショット;
で,今日は DrawFrameControl() で遊んでみました。このあたりの API をワシワシ使っていけば,Windows 標準の見栄えのコントロールを作る事ができるわけですな。
ちなみにスクリーンショットは
::DrawFrameControl( dc, &rect, DFC_CAPTION, DFCS_CAPTIONCLOSE | DFCS_MONO );
と同等。ぬぬぬん,API フックを使えば何か面白そうな事が出来る予感が・・・したんだけど,ちょっと思いつかなかったです。
もう今日は最高の一日です。ついにあの流行の「最終通告」メールが私の元に舞い込んで来ました。今までいろんなサイトにて「来たよ」「うちも」「朕も朕も」という報告を眺めながら「はあ,自分は何ですか,ネット上でも流行に取り残されますか」などと妙な疎外感を抱いていたわけですが,今日からは違います。私も一人前のアレです。
というワケで全文紹介。
X-UIDL: **********.*****.apple.coara.or.jp X-Mozilla-Status: 0001 X-Mozilla-Status2: 00000000 Return-Path: <saikenkaishu@sscnet.com> Delivered-To: tkuri@fat.coara.or.jp Received: (qmail 16249 invoked from network); 10 Jun 2003 14:17:24 +0900 Received: from *****-***********.*******.***.ne.jp (HELO BAGGIO) (***.***.**.***) by fat.coara.or.jp with SMTP; 10 Jun 2003 14:17:24 +0900 From: saikenkaishu@sscnet.com Subject: =?ISO-2022-JP?B?GyRCIWMhYyEhOkchIT0qISFETCEhOXAhISFkIWQbKEI=?= To: tkuri@fat.coara.or.jp Disposition-Notification-To: saikenkaishu@sscnet.com Date: Tue, 10 Jun 2003 14:17:27 +0900 X-Priority: 3 X-Library: Indy 8.0.22 平成15年06月10日 通知人:(株)S.S.C 顧客管理課 料金徴収係 担当 山中 顧客番号***** << 最 終 通 告 >> 前略、先日発送させて頂きました債権譲渡に関しての通知書はすでにご覧頂けたものと存じます。 同通知書の書面でもお知らせしました通り、弊社は各サイトのインターネットコンテンツ事業者様 より利用料金等の回収を委託されているものです。 弊社が回収受任しました今回の貴殿の債務についてこれまで何度かのご連絡をさせて頂きましたが 未だ貴殿からのご入金が確認出来ておりません(06/09現在)。 この度、弊社顧問法律事務所との協議の結果、以下の通りの事案を決定とし本メールを 最後の通知とさせて頂きます。 【入金期限】平成15年06月13日(金)午後3時 【振込先】(代表口座) ****** **支店 普通口座 ******* ヨコタ マサミ (S.S.C代表) 【入金額】34,050円(以下内訳) アダルトコンテンツ利用料 22,000円 延滞金 7,050円 督促費用 5,000円 合計 34,050円 ※顧客番号で全ての管理を行っております。 お振込みの際は氏名ではなく顧客番号でのご入力をお願い致します。 これまで貴殿の利用料につきましてはコンテンツ事業者様及び弊社共々、再三のご連絡を試みて 来ましたが未だご入金がなくまた誠意ある回答も頂いておりません。 今回の通告にも関わらず万が一にもご入金のほうの確認が取れない場合は弊社関連調査会社のほうで 貴殿のご自宅、勤務先等をメールアドレス、アクセスログ、電話番号等から調査、解析し回収員が 貴殿のご自宅、勤務先等へ直接、回収に伺う事となりますのでご了承下さい。 またその際に掛かります費用、調査費用、交通費等の雑費、別途回収手数料も合わせてご請求させて頂きます。 また場合によっては裁判所を通じた法的手段にて対応させて頂く事となります。 尚、もし本状と行き違いにお支払いの場合はご容赦願います。 以上、何卒宜しくお願い申し上げます。 (株)S.S.C ※ 本メールは送信専用アドレスより配信されています。このメールに返信されてもお返事は届きません。 弊社は債権回収業者であり本件に関してのお問い合わせ等は直接コンテンツ事業者様へお問い合わせ下さい。
一般に出回っているものに比べて若干文面が丸い感じがしますね。脅迫に当たるような `強い' 部分が見当たらず,当り障りのない文章になっています。なんとか「場合によっては裁判所を通じて法的手段に〜」のくだりで脅迫っぽい雰囲気ではありますが,しかし微妙。彼|彼女らも日々勉強を重ねているのでしょうか。んなワケないか。笑い
さて彼|彼女のメールアドレスは @sscnet.com。ご丁寧に Disposition-Notification-To ヘッダが付けられていますがアドレスは同じ。しかしこのドメイン,売りに出されています ( 2003-06-10 現在 )。仕方がないので IP アドレスを見てみると・・むー・・多分これ,ネットカフェっすかね。
残念ながら彼|彼女にコンタクトを取るには,実際にお金を振り込んでみる以外になさそうです。
ジャンクフォルダにポイしました。あーつまんない。。。