日記

2月 1日 (日)

1. SNロクロウ

久しぶりに VM JAPAN PUK をやってます。ロクロウの基本戦術は速攻秒殺なんですが、私がやると持久戦になってしまいます。術力系ばかり使っていたせいでしょうかね。

2. とーきーをー

角川の「時をかける少女」は表紙絵が怖い、というか不気味です。ブックカバー必須。

2月 2日 (月)

1. 漢数字

整数を漢数字表現(万進)に変換するPerlスクリプト。動作保証なし。動作速度は…微妙。

my @Base = qw(〇 一 二 三 四 五 六 七 八 九);
my @Dec = qw(0 十 百 千);
my @Large = qw(0 万 億 兆 京);

sub toKansuji($) {
  my ($a) = @_;
  my $rc = ($a) ? '' : $Base[0];
  my $cnt = 0;
  while ($a && $a =~ s/(\d?)(\d?)(\d?)(\d)$//) {
    my $r = '';
    if ($1) { $r .= ($1 > 1) ? "$Base[$1]$Dec[3]" : $Dec[3]; }
    if ($2) { $r .= ($2 > 1) ? "$Base[$2]$Dec[2]" : $Dec[2]; }
    if ($3) { $r .= ($3 > 1) ? "$Base[$3]$Dec[1]" : $Dec[1]; }
    if ($4) { $r .= $Base[$4];}
    $rc = $r . (($cnt && $r) ? "$Large[$cnt]$rc" : $rc);
    $cnt++;
  }
  return $rc;
}

合ってるんだろうか?

1.1. 参考

2. LittleBSD

もう、何が何やら。でも行ってみたい気はしないでもないことを否定することは出来ない(どっち)

店員はこんなコスプレ

2月 4日 (水)

1. タイーホ

この程度で「不正アクセス」にされちゃうんですか?顧客情報を公表してしまったことのほうが、法的にどうかはともかくとして、道義的にまずいんじゃないかと思います。

ACCSが欠陥を放置していたことも、office氏が顧客情報を公表したことも、法的にはセーフなんでしょうか。欠陥を突くと「不正アクセス」で、欠陥を指摘すると「威力業務妨害」になるのでしょうか。庶民感覚と法解釈の乖離なんて今に始まったことではないですが、腑に落ちない部分が多いです。

2月 5日 (木)

1. 個人情報

2. source

近頃、情報源がスラッシュドットジャパンとかーずSPに偏っててなんだかアレだなあ、と。

3. バットでペンギン

Linux信者はやらないとか。

2月 7日 (土)

1. メモ

2月 8日 (日)

1. 抗議文のやりとりとともに個人情報も掲載

住所・氏名を載せる必要はないでしょう。個人情報流出っていうか、意図的に流してますね、これは。

2. 個人情報流出

近頃、本当に多いですね。もう、開いた口が塞がらないっていうか、塞がって開かなくなっちゃったっていうか。

多いこともそうなんですが、それに対する当事者側の問題意識の無さといい、マスコミの偏向報道(今に始まったことではないですが)といい、見ていて乾いた笑いしかできません。

3. 豚

松屋の豚めしはおいしくないです。まあ、俺は豚生姜焼き定食でも食ってなさいってことですかそうですか。

だいたい、なんでうまトマハンバーグ定食がなくなったんですか。好きだったのに。

4. Cynthia

XML-DTD風の内容定義と、実際の要素出現順序・出現回数の比較検証をどうしようか迷っていたのですが、あるときキュピーンと閃きました。

実際の出現要素リストは、単に出現要素名の頭に!(じゃなくてもいいけど、何か必要)をつけて列挙します。$contents = '!title!author!email!email!section!section!section!yen-e'みたいに。#PCDATA は=記号にでもすれば良いでしょう。

要素の内容定義は、title,(editor|author|email)*,section+,yen-eというようなDTD風表現にして、これを文字列$re = '!title(!editor|!aithor|!email)*(!section)+!yen-e'と変換します。

後は、$contents =~ m/^${re}$/とPerlに食わせれば、比較検証が一発で終わりそうです。

…合ってるんだろうか?その、論理的に…

2月 10日 (火)

1. Cynthia

HTML tiny reference を作ったときに、DTDパーサも自前で作りました。こいつはAnoter HTML lintのDTDパーサ(parsedtd.pl)のように、ルールファイルを吐き出します。もちろん、文法は全然違いますけどね。

DTDパーサの吐いたルールファイルには、要素の内容定義や属性一覧等、DTDから読み取れる情報の殆どが記録されています。ということは、こいつから必要な部分だけを抜き出してちょっと加工するだけで、Cynthiaの要素定義モジュールを作れるわけです。

とはいえ、CynthiaはXMLもどきにしか対応していないので、要素定義モジュールが出来たところで用途は限られますが。

2月 11日 (水)

1. 鼻が7メートル

流行ってるらしいので作ってみました。

SSPじゃないと盛大にずれます、多分。本家「伺か」では調整する気にもなれず…

関連リソース。

久しぶりに歌詞カードを作りました。自分で決めたの文法(Lyrica)忘れてました(ぉ

2. 最近のUser-Agent

  • GGqihrjru uvcvoGjhor
  • SSkwjpplkpmjlli2oraypsvspcwnu
  • cehnghkdyxgmisowr0ubuiaefatbLuf
  • cgBxjitvgcp ycjeihgcbBnisbuqleuvhfa
  • fJ exdlhiygjbaqtJftpkix
  • fevktjwxqtscb8yexqnbvco

ほか多数。ランダム生成かよ…

  • Family Basic ver1.03

キター!

2月 13日 (金)

1. 海外流出モノ

2. Cynthia

2.1. table

table要素はレイアウトのためにあると思っている人には存在すら知られていないであろうcol要素とcolgroup要素の話。

CynthiaにXHTML 1.x 簡易パース機能を搭載し、過去に自分で書いたXHTMLソースをパースさせてみたところ、table要素の解析時に文法違反だと怒られてしまいました。Another HTML lint では文句無しの100点を取れるのに、Cynthiaは文法チェックを通してくれません。文法チェックを正規表現一発で済まそうとしたのが悪かったのかなぁ。

別の検査ツールでも試してみようと思い、W3CのHTML Validatorにかけてみたところ、「Validじゃない」を怒られてしまいました。怒られた箇所とDTD、XHTMLソースをよーく見比べてみると、何やら怪しげな部分が…

caption?,(col*|colgroup*),((thead?,tfoot?,tbody+)|(tr+))
col,colgroup,thead,tbody

…そうでした。table直下においては、colとcolgroupは排他の関係にあるのに、私はこの2つを共存させていたのでした。どうやらAnother HTML lint (htmllint.pm 3.05)はこのエラーを検出できないようです。なるほど、それでCynthiaは文法違反を訴えていたんですねー。うむ、解決。

2.2. mismatch

いや、解決してない。

perlでは、正規表現にマッチした場合に、マッチした部分やその他を$` $& $' $1 $2 ... 等で参照することが出来ます。しかし、マッチしなかった場合、部分的にでもマッチした箇所や、マッチしなかった箇所を参照することが出来ません(少なくとも私はやり方を知らない)。

ということは、正規表現一発で文法合否判定を行っている今のやり方では、文法エラーがあったときにエラーの原因を知ることが出来ないということになります。そんなことは最初からわかってはいたのですが、前述のcolgroup/col要素エラーのときのように、エラーの原因がわからないというのは精神衛生上よろしくないことであります。

というわけで、ミスマッチ箇所を探すロジックを実装する羽目になってしまいました。楽はできないものですねー。

2月 14日 (土)

1. TNキリ

VM JAPAN PUK トーナメントモードをキリでクリア。キリはわりと使いやすいですね。蓮・鯛・船・灯を引き連れて、ひたすら瘴気、瘴気、瘴気、…

2月 15日 (日)

1. 正しい野菜炒め

近所の初めて行く中華料理屋で野菜炒めを注文したところ、出てきたのは本当に野菜炒めで、肉など一片も入っておりませんでした。間違っちゃあいないんだけどさ。

2. Cynthia

10000行オーバーのXHTMLファイル(680KB)を処理させ、解析した要素の階層構造をperlのハッシュ・配列を使ったデータ構造として保持し、それをperlソースコード(6.2MB; 170000行)にしてファイルに吐き出させたところ、所要時間15秒(Perl: JPerl 5.005 Win32; CPU: Athlon XP 1600+)、瞬間最大メモリ使用量38MBでした。要素の出現回数・出現順序チェックをしている部分が、惜しげも無くメモリを使っているようです。おそらく、再帰呼び出しをしているからでしょう。だからといってforループに展開する気など全くありませんが。

2月 16日 (月)

1. 新春凧揚げ大会で7人死亡、100人が怪我

壮絶な凧揚げ大会。命がけだなあ。

2. 神出

何かを受信した模様。地下一万ニ千キロメートルって、日本から見るとブエノスアイレス付近ですか。

2月 18日 (水)

1. アキバ

先月買ったマウス、大きくて私の手に合わないので、買い替えました。同型で、サイズと色が違うだけですけど。

2. perl5 RE : W3CDTF

^\d{4}(-((0[469]|11)(-(0[1-9]|[12]\d|30))?|02(-(0[1-9]|[12]\d))?|(0[13579]|1[02])(-(0[1-9]|[12]\d|3[01]))?)(T([01]\d|2[0-3]):[0-5]\d([0-5]\d(\.\d+)?)?(Z|[-+]([01]\d|2[0-3]):[0-5]\d))?)?$

W3CDTFを表すperl5正規表現です。閏年判定を行っていないので、1999-02-29が通ってしまいます。$leap_year = !($y % 4) && ($y % 100 || !($y % 400));をうまく埋め込めればいいのですが、どうしたものか。

ちなみに、CPANに登録されているDateTime::Format::W3CDTF(ver. 0.03) は、W3CDTFとして不完全です。

2月 19日 (木)

1. copy

申告やら届出があるため、今朝、区役所と税務署に行ってきました。税務署で届出をしたときに、届出の控えが欲しかったので、署内のコピー機を使おうとしたら、一枚20円の上に用紙がB4サイズのみというどうしようもない「仕様」でした。公式文書はA4サイズなのにねえ。もちろん、近くのコンビニでコピーしましたとも。B4じゃちょっと…ねぇ。

2月 21日 (土)

1. 富士通アクセシビリティ・アシスタンス

あなたのホームページ、誰でも読めますか。

私のホームページはブランクページ(about:blank)ですので誰にも読めませんが何か?

冗談はさておき、以前から(つっこ)見所満載の富士通ウェブ・アクセシビリティ指針を基準にした、アクセシビリティ診断ツールが公開されています。このツールで診断可能な20項目から、適当に拾って見てみました。

ところで、優先度が1から3まであるのですが、1と3ではどっちが優先度が高いんでしょう。素直に「高・中・低」と書けばいいと思うのですが。

1.1. 1. 全てのページに、ページの内容を的確に示し、…

WebInspectorのような、長すぎるタイトルはどうかと思いますよ。

1.2. 2. ページ内で記述する基本となる言語を、明示すること。

その場合、<meta>のcharset属性で指定した言語と同じ言語を指定する (日本語の場合はcharset属性をShift_JIS、iso-2022-jpなどに指定し、<html>のlang属性はjaを指定する。) 。

META要素にcharset属性なんてありません。言語を指定するのはcharsetじゃなくて、Content-Languageフィールドです。

charset属性をShift_JIS、iso-2022-jpなどに指定などと言っておきながら、良い例ではcharset属性とやらが指定されていないのはどういう了見ですか。

1.3. 5. 画面全体が明滅するような表現はおこなわない。また、…

  • 画面要素 (文字、画像など) に、明滅や自動スクロールなどを使用する場合は、なるべく遅くし、内容を把握しやすくするか、静止した状態での情報提供 (テキストによる解説など)も行う。
  • <blink>は使用しない。
  • <marquee>は使用しない。

明滅や自動スクロールを使用しても良い、と受け取れますが、blinkやmarquee要素を使用しない理由は何でしょう。W3CやISOの定めるHTMLの仕様に無いからでしょうか。このページのHTMLに記述されているBODY要素のleftmargin属性や、47. 特定の技術やプラグイン…で説明されているEMBED要素も、HTMLの仕様にはありませんよ。

1.4. 15. 画像には、画像の内容を的確に示すalt属性を付けること。

このページで説明されていることが、このページ自体では為されていません。

というか、alt属性は代替(等価)テキストを示すもので、画像の内容を記述するものではありません。

1.5. 16. リンクのある画像には、リンク先の内容を的確に示すalt属性を付けること。

リンクのある画像ではなくて、「画像を含むリンク」でしょう?

リンクに含まれるかどうかに関わらず、IMG要素のalt属性の役割は代替テキストを提供することです。

alt属性でリンク先を記述する。

IMG要素のalt属性には画像の代替テキストを記述します。

リンク先をalt属性として記述することで、画像の説明が不要となる場合は、画像の説明を省略してよい。

IMG要素のalt属性には画像の代替テキスト(略)

画像の内容を詳細に解説する必要がある場合は、alt属性にリンク先を記述し、HTML内にテキストで解説を記述する。

IMG要素のalt属性には(略)

画像の内容を詳細に解説する必要がある場合には、longdesc属性に当該画像の説明が記述されたリソースのURIを記述します。

1.6. 18. イメージマップはサーバーサイドではなく…

クライアントサイドイメージマップの場合も、ブラウザの「画像表示しない」設定では、リンクを選択できない。

なぜ選択できないのですか?それはブラウザ次第でしょう?

画像の表示如何に関わらず、要素はそこにあるのですよ。だいたい、何のためのalt属性ですか。

1.7. 35. 取消し線など意味が大きく変わる文字修飾タグは…

取り消し線のタグ (<strike>、<s>、<del>) は使用せず、「取り消し」であることをテキストで明示する。

論理要素であるDELと、物理要素であるS, STRIKEが同列に扱われています。

DEL要素は取り消し線ではなく、削除されたテキストを示す論理要素です。削除されたことを視覚的に表現する際に、打ち消し線が使用されるか否かは、ブラウザやスタイルシートに依存します。DEL要素としてマーク付けされた時点で、その内容は削除されたものとして扱われるべきで、視覚系・音声系を問わず、ブラウザは削除されたことがわかるように表現すべきです。

1.8. 36. 記号 (「○(まる)」「×(ばつ)」「△(さんかく)」など) を…

絵文字 (ASCIIアート) は意図どおり読み上げません。

絵文字なるものは、何かを読み上げることができる存在なのでせうか云々。

読み上げません。
読み上げられません。

機種依存文字は、文字化けの原因となりますので、使用しないでください。

機種依存って何の機種に依存してるんでしょうね。プリンタとか漢字ROM搭載機とか?まさかJIS外字のことじゃないですよね。丸付き数字、ローマ数字はUnicodeで定義されてます。UTF-8なり何なりで符号化すればよろし。

1.9. 40. 表の上部に、表題を記述すること。

何で上部に拘りますか。下部ではダメなんですか。

表の上部に表題がない場合、音声ブラウザの使用者は、読み上げ中のテキストが表であることがわかりません。

何でわからないのですか。

大体、音声ブラウザに上部も何も無いでしょう。

レイアウトのためのテーブルには表題は不要。

テーブルでレイアウトしておいて、アクセシビリティも何もあるものか。

1.10. 39. 表組は、行と列の関係や表示順序…

音声ブラウザでは、テーブルを、左上から、右下に読み上げます。そのために、行や列の関係がわかりにくくなります。読み上げ順序を考慮したテーブルを作成してください。

左上から、右下に読み上げるために行や列の関係がわかりにくくなるのはなぜですか。

また、各行、各列の、見出し項目を読み上げず、内容が把握できない場合があります。

なぜ読み上げないのですか。何を言いたいのでしょう。

というか、読み上げに右上も左下もないでしょう。

レイアウトに用いる場合

レイアウトに用いた時点で(略)

表として用いる場合

だーかーらー、テーブルはなんだってば。

1.11. まとめ

もう嫌。きりが無いので、やめ。

富士通は、アクセシビリティ云々以前に文法的に正しいHTMLを書いたらどうなんでしょう。それに、富士通のサイト自体、テーブルでレイアウトしている時点でアクセシビリティも何もないでしょうが。痛い部分が全然治ってない辺りが不治痛です。

WebInspectorというソフトウェアそのものは結構使いやすいし、よく出来ています。また、アクセシビリティ等の指針を設けて良いサイトを作ろうとする姿勢は評価できます。が、肝心の指針がアレでは、ね。

2月 22日 (日)

1. ご愁傷様

某氏と某氏が立て続けに膨大な量のデータ(合わせて600GB以上)を損失したらしく、その関係でアキバです。ってわけわからん。とりあえず、ご愁傷様です。

ある程度はこちらから補充できますが、100GBにも満たないうちのデータ量など、微々たる物です。

1.1. enqueue

  • 二十面相の娘 (2)

マリ見てが古本で手に入りませんねー。

2. 脳内電波

まあ。コテコテのテーブルレイアウトに、文法違反のHTMLで書かれたページでアクセシビリティ指針ですって。何かの冗談かしら。
朝○新聞も去年、面白いことをやってましたわ。
夏休みホームページ作りのこと?あれは酷かったですわ。
何をおっしゃるのです。あの天下の○日新聞が、恥を捨ててあんなに面白いネタを提供してくれたのですよ。感謝こそすれ、非難すべきではないでしょう。
あれはネタだったのですか。
あなた、今頃気付いたのですか。
言われてみれば、そうですね。大企業様が真面目にあんな記事を書くわけ、ありませんものね。
当然です。ネタに決まっています。
そのネタに、いちいちマジレスしてるこのサイトの管理人って、何でしょうね。
程度が知れますね。

くだらない文章を書いてるから寝るのが遅くなる。

2月 24日 (火)

1. アキバ

DVD-Rが足りなくてアキバです。最近アキバ率高いです。っていうか変な日本語。

DVD-Rを10枚ほど補充しました。これでしばらくは持つでしょう。あと、USB HUBなんかを買って、Plat'Homeで物色。OpenBlockS266もいいなぁと思いましたが、結局何も買いませんでした。

2. ヤフーBB、470万人分情報流出

さすが国内最大手とだけあって、流出量も国内最大級。スケールが違います。赤い袋だけでは飽き足らず、顧客情報まで配り始めたのかと思いました。

2月 26日 (木)

1. 風邪

風邪を引いてしまったようです。なあに、頭痛がして熱っぽくてふらふらするだけです。

…やばいかも。ク…クスリ…

2. 370

Apacheのログ解析、というか、User-Agentの統計と検索文字列解析に偏ったツールです。だいぶ前に作ったやつをちまちまと拡張し続けて、かなりのケースに対応できるようになりました。

2.1. ログフォーマットの解析

ApacheのCustomLogディレクティブを解析して、ログを解析するための正規表現を自動生成させています。CustomLogディレクティブの設定値を放り込んでやるだけで、そのまま解析できるようになっています。

2.2. キャッシュ

解析時には、一旦ログをArray of Hashに変換して、Perlソースコードとしてファイルに吐き出しています。2回目以降の解析は、ログを読まずにキャッシュをエバるだけでよいので、それなりに速いです。

2.3. 検索エンジン対応

検索サイトごとに別モジュールにしてあるので、検索サイトが増えたり、URIパラメータの書式が変わっても、対応するのは楽です。1サイトあたり1ファイルで、設定ファイルで読み込むモジュールを指定できるようにしています。

2.4. 統計解析

ここがいまいち弱いんですが、とりあえずUser Agentの統計だけ採っています。今後の課題としましょう。

今日はGoogle Image用とVivisimo用モジュールを追加しました。これで27の検索エンジンに対応できますが、風邪のせいで頭痛いんです。

3. 毒電波

Googleイメージ検索で「毒電波」で検索するとうちのサイトの某リソースがヒットする罠。

ていうか早く寝ろ>俺

2月 27日 (金)

1. 私にハッピーバースデイ

風邪薬を飲んで一晩寝たら一気に回復。今日一日中、脳内で万能文化猫娘のオープニングテーマが無限ループしていたのは、きっと薬の副作用のせいです。勘弁してください。

2月 28日 (土)

1. 麻原死刑判決

当然の判決が出るまでに7年以上。当判決後弁護団は控訴したそうですから、この後何年続くやら。

昔なら文句なしの「市中引き回しの上打ち首獄門!」なんだろうな。

2.

不在通知の届いていた郵便物を受け取りに、遠くの郵便局まで行ってきました。なんでも、本人限定受け取り郵便だそうで。近所の郵便局に届けてもらっても良かったのですが、日頃の運動不足解消のためにと思って、自転車で行きました。

地下鉄で3駅先にあるところなんですが、途中で曲がるところを間違えて、更に先の駅まで行ってしまいました(ォ

まあ、いい運動になったということで。

そういえば家を出た直後、たまたま私の隣りを走ってた、CMタレントよろしく爽やかな笑顔で自転車をこぐかっこいいお姉さんが、4駅先の弁当屋に並んでいるのを見かけたんですが、弁当を買いにわざわざ4駅先まで自転車で行ったのでしょうか。謎ですねー。あまり人のこと言えませんが。

2月 29日 (日)

1. アキバ

某氏にブツを渡しにアキバ。近頃アキバに行ってばかりです。

1.1. 買い物

「マリ見て」は古本で入手。読むのは大分先になりそうです。

1.2. ホイホイ

メッセサンオーで、ホイホイさんの同人ゲームが発売されていました。店頭でデモを見たかぎりでは、結構面白そうです。本家より出来が良かったりして。本家は「出来損ないのアーマードコア」なんて言われてたくらいですからね。

2. BeSilent M

まずは、メモリとハードディスクだけ取り付けました。筐体が小さいと、ケーブルの引き回しが大変です。

今日はこれくらいにしておこうかと思いましたが、一応動作確認ということで巫女ぐにょを起動して眼鏡ッ娘巫女を拝んでおきました。

せっかくだからということで、手元にあったFreeBSD 5.1をインストールしようと思い、CDからブートしようとしたところ、「ブートCDじゃねえよ」というメッセージ(やや意訳)が表示されて残念な思いをしました。私、何か悪いことしましたか?したかなあ。してるかなあ。

気を取り直して、手元にあったFreeBSD 4.7。こちらは普通にインストールできました。CURRENTブランチって、何か変なことやってるんでしょうか。

今日のは「捨てインストール」です。続きはまた明日。