雑な k|m の生態について

その 4 - 夜の生活ですよ

2002-05-28

background-image: url(罠);

日ハマったのは CSS,background-image です。まさかこんなところに落とし穴があったとは。

まずファイル構成はこんなの。

css/hoge.css
img/back.png
foo.html

何の変哲もありません。むしろウケを狙う方が難しいです。

back.pngfoo.html の中のテーブルに敷き詰めたい画像。hoge.css の中で background-image を指定しています。それぞれのテキストファイルはこう。

foo.html
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
  "http://www.w3.org/TR/html4/strict.dtd">

<html lang="ja">
<head>
	<title>foo</title>
	<link rel="stylesheet" type="text/css"
		href="./css/hoge.css" title="style hoge">
</head>

<body>
	<table><tr>
		<td>foo</td>
	</tr></table>
</body>
</html>

link rel〜 てのは文書関係を示す要素なんだけど,スタイルシートの読み込みにも使うですよね。そんなんでいいのかなあ? どうでもいいか。

テーブルの背景に back.png を敷き詰めたいのでスタイルシートで指定しようと思います。パスは ./img/back.png ですな。

hoge.css
table {
	background-image: url(./img/back.png);
}

ですか。

ネタバレは好きなタイプ?

もうネタが分かっちゃってる人もいるんだろうなー。そう,このままでは何度ブラウザをリロードさせても背景画像は表示されません。background-image に指定する URL は HTML ファイルからの相対パスではなく スタイルシートファイルからの相対パスでなくてはなりません。このスタイルシートファイルはディレクトリ css にあることに注意して,正解はこう。

table {
	background-image: url(./../img/back.png);
}

もう一気に眠くなりました。おやすみなさい。

2002-05-27

Mozilla のこだわり?

白いコトを発見しちゃいましたっていうか,世界の数百〜数千人くらいは知ってることであり,且つ,そのうちのほんの数人しか面白いとは思わないんだろうけど。

Mozilla でコンテキストメニューを出して,"Save Link Target As..." します。

moz_cx.png : Mozilla のコンテキストメニュー

Windows だったらここでファイルを保存するコモンダイアログが出るです。この時にどんなファイル形式で保存するかをどうやって決定するかが悩みどころというか,ブラウザ製作者さんのポリシーとか腕とかの見せ所。ヘンなモノは見たくないですけどね。笑い

そこで大発見。Mozilla の場合,なんとリソースに対して HEAD リクエストを投げていることに気づきました。

技術の上手な利用方法ってやしです。

HEAD リクエストに適切に応答するリソース ( 律儀な HTTP サーバに任せるだとか,.htaccess を使うだとか ) ならば,この方法できちんとした Content-type ヘッダが返ってくるはずです。Mozilla はそれを参考にして保存するファイルの形式を決めるわけですね。

こうなると今度はなんだか CGI でも HEAD リクエストに対応させてやりたくなります。Perl ならば $ENV{'REQUEST_METHOD'} を参照して,`HEAD' という文字列が入っていればヘッダのみを出力,てな具合の処理を付け足すのです。簡単。

私たちは GET や POST メソッドには敏感なくせに,なぜか HEAD などのメソッドには鈍感になっています。その理由はきっと,今までこのようなメソッドを本当に使うソフトが少なかったからかと。ソフトが使わない -> コンテンツ製作側が対応しない -> コンテンツが対応していないから,ソフトもやっぱり対応しない -> コンテンツも対応しない -> 以下略,てな感じですか。

せっかく RFC てな技術文書が公開されているんだから,そのアイデアを有効利用しない手はないと思いました。Mozilla はそのような試みをいろんな部分で見せてくれるので,私を一層萌えさせてくれるのです。萌え。

萌え度:256

2002-05-26

事件っすよ! @ 2ch

日の夜から今日にかけて,なんだかすごく香ばしい事件を 2 件も見つけました。これだからネットってやめられんのよ。

宗教団体が 4700 万円の損害賠償訴訟

【2ch】宗教団体「ワールドメイト」を批判した男に4700万円の損害賠償訴訟(2ch.net)

宗教団体(と思われる)「ワールドメイト」が,2ch 上で当団体を批判していた根元栄氏に対して 4700万円の賠償訴訟を起こしたそうです。すらっと読んだ限りでは,どうも根元氏も多少汚い言葉で罵ってたりしてた模様。「バカ」「ノータリン」とか「超無能力者」とかね。

ただし根元氏はそのような幼稚な雑言罵倒だけではなく,ワールドメイトの主義主張などにも触れて批判をしていたんですよね。なのに面白いことに,ワールドメイト側はほとんど「バカ」「ノータリン」などの罵倒文句について訴訟を起こしており,根元氏が提起してきた問題については一切触れていないとのこと。ガキんちょのケンカですか。

それにしても額がハンパじゃないです。天変地異でも起こらんばかりの確率で根元氏が訴訟に負けたとしても,100〜200 万円は越えないだろう,ワールドメイトが弁護士費用を損するだけで終わるのでは,などと議論されています。

もしも私が 4000 万円もの賠償訴訟を起こされても,堂々たる「無資力」なので最強。ってのはどうでもいいですか。

[ 2ch.net ]
2ch スレッドへのリンクは,dat 落ちに応じて変わるかも知れません。( 2003-01-12 リンク整理しました )

究極のオープン企業,TBC

誰だーこれ作った奴は!!(2ch.net)

どういう思考ルーチンから導出された判断なのかは分かりませんが,あのエステ会社 TBC が 25 日夜〜 26 日昼ごろまで顧客データや就職希望者データを公開してしまいました。

TBC の顧客データならば確実に統計学的に興味深いある種の偏りが認められるはずで,そのような情報はアデランスのハゲオヤジ情報と同じくらいの価値を持つでしょう。イトーヨーカ堂の顧客データとは格が違います。まさしく金のたまご。略して(以下略。

そんな情報を惜しげもなく public_html 下に置いておっぴろげてしまうとは,むーん,正直言って困ってしまいます。私たちに何を期待してるんだろう? TBC 顧客情報活用プログラミングコンテスト?

何はともあれ,k|m はこれから TBC を応援しようと思います。でも他の常識ある企業にはオススメできません。

注意:皮肉ですので

[ ハゲオヤジ ]
私も通る道(ρ_;)
[ プログラミングコンテスト ]
そういえば,Google のアレはどうなったのかな・・・

2002-05-25

ビハール語

日 google 使ってて驚いたですよ。

「このビハール語のページの解説文には,ご使用の言語設定からは正しく表示できない文字が含まれています。」」

ていうか「ビハール語」の存在自体知らかったんですけど。

案の定,そのページはビハール文字では表示してくれませんでした。とりあえず google で「ビハール語」を検索。うん,やっぱりアジア圏の言語。ISO639 では bh と定義されています。Unicode では,・・・えーっと「将来拡張」? WorldLanguage.com の「ビハール語」で紹介されている文字「世界の文字」で紹介されているカイチィ文字ではどうも微妙に違いがある模様。なんか興味が湧いてきたんだけど,他にやりたいこともいっぱいあるので調査はこのあたりで打ち切ろうと思いました。

む,つまりビハール文字が表示できるコンピュータがあったりするわけで,ビハール語で hehehe と笑うハカーもいるのかな。ぜひお友達になりたいです。ちなみに google@ビハールもちゃんと存在してて,URL は http://www.google.com/intl/bh/。気合入ってますなー。。。

ちなみにちなみに,こんなものも見つけました。

「この英語のページの解説文には,ご使用の言語設定からは正しく表示できない文字が含まれています。」

まじっすか!? 英語が表示できないですか!? などと思いつつリンクをクリック。出てきた画面はアラビア文字の羅列に C++ のソースコード。アラビア文字よりもコードの量の方が多かったため,google はこのページが英語のページだと思ったわけですな。

いやー,知らないことってイッパイあるんですねー。さて,お風呂に入ろうっと。

えーっと,もともとは何を検索してたんだっけ? WM_PAINT

脱線度:100

2002-05-24

Me iz da hakka-! (warai

管理職のためのハッカー FAQ

これ,どう考えても私の習性なんですけど。/.J 見てたらリンク見つけたんで,「そうそう,そうなんだよー」などと思いながらすっかり読みふけってしまいました。仕事中に。

つまり「好きこそものの上手なり」を地で行く職業,それがまさにプログラマであり,ハカーなわけですね。どんな案件でも常に最高の作品を生み出すスタイルを,ハカーたちはよく知っています。歴史上の重要なソフトウェアのほとんどは,穴の空いた T シャツとケミカルウォッシュのジーンズでキめたハイテクヒッピーたちが作ったという事実は,社会の常識をスカッと「かすめ斬って」しまうのです。

ちなみに少し前の Fortran ハカーは,やはり数を 1 から数えてしまうらしいですね。むはは。

[ ハイテクヒッピー ]
いってぃ,びってぃ,ひっぴぃ,てっく!
[ かすめ斬って ]
また無茶な表現を思いついたですよ。hehehe

2002-05-23

堂々たるハイテク愚行?

パールドメイン ".NP" のうち 651 個の SLD を取得して日本のユーザーに提供するサービス TION発生しました。あと,./J のストーリーも。

やっぱしこの手の話は賛否両論っていうか,「否」の意見の方が多いです。無論,冷めた技術者のなせるワザ。技術者は .NP ドメインについて「やっぱし NIPPON って感じがするよねー」なんてナメた感情は抱けないのです。NP は「ネパール」。 ISO3166 でもちゃんと定義されています。どうしてネパールを示す国コードについて,よりにもよって他国を連想しなきゃならんのですかっ。愚行にもほどがあるわっ。

って,熱くなるのもなんかヘンな気がするなー。とりあえず k|m は DynDNS.org ドメイン群を応援しています。私の友人も homeunix.net 使い。

熱血度:89

[ 発生 ]
登場ではなく,発生。

2002-05-22

タネが分かればなんてことは・・・

日もバグと戦う k|m の生態です。気づけば 1 ヶ月ずっと更新しっぱなし。

本日のバグは「謎の 2 連アクセス」。例えば HTML のフォームの中で type="submit" なボタンがあって,それをクリックすると formaction プロパティに関連付けられた CGI が起動します。そこで問題発生。なぜかブラウザが 2 回連続してリクエストを投げてしまい,CGI 内で行っている排他制御に引っかかってしまうのです。

スクリプトにバグがあるのは当然分かってはいるのですが,そんなことよりも私の興味はなぜか 2 度行われてしまうリクエストに集中しました。試しにあちこちでいつもの文字列 "hoge" を出力させてみたりして,どこまでプロセスが通ってどこで例外が発生しているのかを調べたり,一生懸命遊んでたですよ。

とりあえずバグを潰してもう一度トライ。・・あっ,リクエストが 1 回だけになってくれたっ。なるほど,途中のエラーでスクリプトが中断してしまうと,何回か同じリクエストが投げられるんですね。タネが分かればなんてことはありませんでした。

って,なーんにも分かってないしっ!

そんな仕様は聞いたことがない気が。これ,なんか InternetExplorer でも Mozilla でも同じみたいなんだけど,ブラウザの仕業? それともサーバーが? 仕事がせっぱ詰まってるので,そこまでは確認する暇がないのです。。。

疲労度:60

2002-05-21

[C++]クロージャみたいなの

んとなくクロージャみたいなのが出来た気がします。まず Delphi ならばほぼ何も考えることなくデフォルトで可能ですね。

type
  TEvent = procedure of class;

  TSomeClassA = class
  public
    constructor Create;
    CallFunc: TEvent;
  end;

  TSomeClassB = class
  public
    constructor Create;
    procedure Func;
  end;

var
  SomeA: TSomeClassA;
  SomeB: TSomeClassB;

implementation

constructor TSomeClassA.Create;
begin
  CallFunc := SomeB.Func;
end;

だいたいこんな感じ? あとは SomeA.CallFunc; を実行することで SomeB オブジェクトの Func が起動されます。・・・すいません。多分,コードは文法的に不正確です。しばらく扱ってないし。

他にも Borland の C++ はクロージャ型をサポートしています。それが VCL の要ですもんね。あとは Lisp とか?

でも C++ では通常はクロージャをサポートしていないわけで,今日はこれをなんとか無理して実装してみました。

ヘッダファイル
class Object {};
typedef void (Object::*Event)();

class ClassA: public Object {
public:
	Object *owner;
	Event funcPtr;
	ClassA();
	void callFunc();
} *ObjA;

class ClassB: public Object {
public:
	ClassB();
	void func();
} *ObjB;
cpp ファイル
ClassA::ClassA(){
	owner = ObjB;
	funcPtr = (Event)&ClassB::func;
}

void ClassA::callFunc() {
	(owner->*funcPtr)();
}

なかなか気の利いたコードではありませんが,ClassA::callFunc を実行することで ObjB->func() と大体同じ意味になるんじゃないかなーと思います。

思ってるだけです。

とりあえず VC++5.0 でも gcc でもコンパイルは通るし,使ってる限りでは期待通りに動作してくれています。でもこれはもしかしたら「偶然動いてるだけ」? だって,誰もこんなコード書かないんですよね。少なくとも私は見たことありません。

ソシュール的に言えば,誰も使わない文法には使われない理由があるんだけど,・・・まぁいっかー。

2002-05-20

サーバのログにステータスを残すには

まり需要はないんだけど,CGI を使ったアプリケーションではまれに「ある条件でサーバのログにステータスコード 403 Forbidden を残したい」と注文が来る場合があります。

すぐに思いつくのは nph。普通の CGI ではサーバがコード 200 を返してくれてしまいますが,nph ならば自由にコントロールすることができます。しかし,nph でもやはりログには 200 しか残らないんですよね。。。

そこで登場するのが Status レスポンスヘッダ(?)。nph は不要です。例えば次のように出力してやれば

Status: 403
Content-type: text/html

<html>
<head>
	<title>403 Forbidden</title>
</head>
<body>
	<h1>403 Forbidden</h1>
	<p>hehehe...</p>
</body></html>

サーバのログにもちゃんと 403 が残ってくれます。不思議やねー。

内容物(エンティティ)の方は何を出力しても構いませんが,InternetExplorer は 512 バイト以上の内容がない場合には独自の画面を出力するとのことです。あー,そのソースはどこにいったっけ・・・。

これは apache はもちろん,AN HTTPD でも同じ挙動なんですが,どこかで仕様が定義されてたっけ? RFC2616 でも RFC2817 でもログ記入に関する規定はもちろん,"Status" てなレスポンスヘッダさえ記述されてないんスけど。うーん???

[ サーバ ]
む,この文書を検索エンジンなどで的確に検索してもらうためには「サーバー」とも書いておかないといけないっすね。サーバー,サーバー,サーサーバーバー。あ,もういっちょサーバーっとくらぁ。

2002-05-19

私,タイホ!?

っけから物騒な出だしですが,気にすんな。「ウィルスを所持するだけでタイホってのはどうよ?ってな法案はどうよ?」ってな速報スレッドが 2ch に立ったのは 1 ヶ月前。みんなの興味は「感染 イコール 所持になるの?」&「ワクチンソフトのメーカーはどうなるの?」の 2 点に集中しました。

(どの法案でもそうだけど)特にこの法案については専門的な知識が必要なあたり,慎重に話を進めてもらわなければ。数年後の新聞の一面に「ワクチンソフトのメーカー,日本から撤退」なんて記事が大きく載ろうものなら,私も日本から撤退したくなります。

そこでふと思い出したのが拙作ブラクラチェッカー。ささやかながらワームの検出も可能になっています。だって VBScript のワームがいっぱいあるんだもん。

当然,研究のためにワームやウィルスを多数所持しておりますとも。いろいろ研究した上で,常識的な VBScript では記述しないようなワーム独特の記述を抜き出してブラクラチェッカーに組み込むのです。これが誤診を防ぐ工夫っていうか努力の一つ。わりとタイヘンなんスよ。

もしこの法案が何のヒネりもなくそのまま参院本会議を通ってしまったら,もしかしたら私は速攻でタイホですか? それともブラクラチェッカーはブラクラだけを検出してろと?

ワームを検出できないブラクラチェッカーに意味はあるのですか?(アレ風)

[ 速攻で ]
無論,分かっててこの言葉を使ってますんで。。。
[ 意味はあるのですか? ]
何か間違ってる気がするのは,しつこいけども,気のせいです。
[ (アレ風) ]
かお,とか,ニハハ,とか。

2002-05-18

ひさびさの落とし穴

マってしまいました。ドツボに。

事の起こりは今回の仕事の table 要素に background-image を使った事。テーブルに背景画像を張って,さらにその上に <img> タグでバーを表示させたりするのです。グラフみたいにね。

使用ブラウザは InternetExplorer。一つのメインフレームのようなページに iframe を配置し,その中で 6 つの CGI アプリケーションを切り替えます。さすがにデカい企業が作るブラウザだけあって,HTML だけで似非アプリケーションのレイアウトを(中途半端に)構成できてしまいます。ナメてんのか。

そして相手先からメール。

印刷すると,背景の画像が印刷されないようです。

むむ,謎です。上に <img> タグで表示させたバーはちゃんと印刷されているのに。・・・すでにネタがお分かりの方は,別のサイトに移って結構です・・・。

まず疑ったのはページ構成。IE にはもしかしたら「iframe の中のページの背景は印刷されない」というバグがあるのかな? 仮にそうならば,それは私の責任ではありません。しかし回避手段を見つけるのも私の仕事。その回避手段が存在しなければ,そこではじめて「仕様だ」と主張できることになります。

試しに CGI を独立させて表示,印刷プレビュー。・・・ダメです。印刷されない模様。

CSS の background-image 周りが原因? @media に print を追加して印刷プレビュー,・・・むーん・・・。

そもそも CSS だからダメだとか? (仮にそうだったならばやっぱり IE のバグになるんだけど) table 要素の background 属性を指定してみます。可能な限り strict な HTML を書きたかったのですが,そもそもどうせ似非アプリケーションです。こんな傷,今更痛くも痒くもありません。

身を斬る思いで background を指定,プレビュー。そして苦労虚しく徒労となりけり。

そこでようやく Google を思いついたですよ。きっと同じ悩みを抱えている人がいるに違いないのです。当然,解決。なんでも IE の設定がデフォルトで table の背景を印刷しないようになっていたのです。とほほ。

模索度:68931

2002-05-17

超圧縮術!

究極の圧縮プログラムTHcomp

ネットワークを日常的に使うようになってから,「情報の圧縮」はその重要度をワッシワッシ増してきました。今のように(まあまあ)快適にファイルの送受信が行えているのは,ひとえに圧縮技術を編み出した先人達のおかげ。彼/彼女らの働きなしでは,かわいいあなたのペットの画像を 1 枚ネット上にアップロードするのにも,平〜気で十数分かかったりするのですよ。

10 年以上前,まだ日本人の殆どが「インターネット」を知らなかった頃のお話。その魅惑のプログラム「THcomp」は,とある BBS で何気なくひっそりと,しかし確かな存在感をもって語られ始めたのです。

任意のファイルがたった 1 バイトに? 魔法のようなプログラム「THcomp」騒動とその顛末を,注意深くお楽しみください。

そういえば ZeroSync とかいう会社が「1/100 ロスレス圧縮ができたぜ!」とか言ってましたが,結局どうなったんだろう? 信頼できるデモも何もないまま自然消滅ですかコラ。

圧縮率:90%

[ 1/100 ]
なんだかアーテックコミュニケーションさんはそれなりの圧縮技術をお持ちの模様。でも Visually lossless って結局は不可逆の方に分類されるんですよね。。。

2002-05-16

恋愛保険

頃,仕事がそこそこ忙しくなりました。帰宅時間は夜 11 時半。それから夕食,シャワーなどでまったり。寝るのが 2 時ですか。極限の世界へ少しずつ近づいています。

そんな時,ちょっと間違えて TV アプリケーションを起動してしまいました。画面に映っているのは TBS テレビ「恋愛保険」。毎週水曜日っていうか,日付が替わって木曜日の深夜 1 時 20 分からの放送です。

この番組は,淡い恋心を持った女性が勇気を出して番組と「恋愛保険契約」を結ぶことでスタートします。まず彼女の胸中を,甘い甘い言葉をもって恋文にしたため・・・

あー,やっぱりだめだ。この番組を紹介するには私はキャラが違いすぎるのです。恋愛なんかしたことないくせに無理にも程があるわっ。悪い冗談はアレだけにせいっ。

ただのお涙頂戴だーってな批判もありそうだけど,とりあえず基本的に良い番組なんで,一度はご覧下さい。終わりっ。

[ 極限の世界 ]
私が尊敬する(しかし,まだ見ぬ)諸先輩プログラマ方は 3 〜 4 徹なぞあたりまえ? まじっすか?
[ TV アプリケーション ]
私が使ってるのは WinTV PVR。ナイスなんだけど,mpeg 録画回りがちょっと・・不安定?

追記 〜 毎週放送じゃなくて?

毎週放送じゃなくて,なんか季節ごとに 1 回らしいっすね。何と勘違いしたのかな? わかチュキ? なんとなく雰囲気が似てるし。。。

Written by kuri|minima(tkuri {at} fat.coara.or.jp) - all rights reserved.(warai
このリソースの位置情報は http://www.coara.or.jp/%7etkuri/D/004.htm で安定しています。coara さん,がんばれー。