雑記2004年01月分 - Poison des Yeux

2004年01月30日(金)

XHTML 1.1 簡易リファレンス作成中(かも)

ごきげんよう。最近サボりがちなもりばです。

サボりがちの原因はひとえにXHTML 1.1 DTD 中のパラメータ実体です。当初目的と大きくかけ離れた上に、100KB 近い巨大ファイルになってしまったので分割をもくろんでいるのですが、「ついでだから(←余計)簡易リファレンス風にしよう」と思いたったためにエライ事になっています。ちなみに完成後には文字参照と一緒に /xhtml11 に移動予定。や、まだディレクトリもありませんが。

しばらく前からぼちぼちと準備していたキャラパ札幌3 出展メーカー・ブランドも今日から公開。既に2週間前なのにほとんど情報がありませんが‥‥。

無料配布本とか体験版とか

そんな中、今日はメロンブックス札幌店に行ってまいりました。お目当ては Tarte が冬コミで配布した、新作「ひなたぼっこ」の紹介小冊子の無料配布。混乱とかも無く無事に入手できたのですが、店側の都合か、同じく無料配布されていた「愛cute!キミに恋してる」(ぱれっと)体験版、「ひ・み・つの放課後」(ビタミン)デモムービー&体験版 CD-ROM などもゲット。「ひ・み・つの放課後」は既に Web 配布中の体験版をプレイ済みなのですが、その感想は:

  1. かなりえろそう。
  2. 主人公の性格嫌い(笑)。
  3. 公表されてないけどどこかで聞いたようなお声。‥‥と思っていたらサイト内の別のところで CV 情報(一部)発見。そしてやっぱり聞いた事のあるお声でした。

となっております。というか今日が発売日ですな。

一方、「愛cute!キミに恋してる」の方は、ヒロインがカンザキカナリさんだったり DependSpace で特設やってたりでプチ注目状態だったので、折を見てプレイしてみたいと思います。

今日の買い物

正規表現デスクトップリファレンス」(Tony Stubblebine/歌代和正 監訳/三島純子 訳・オライリー・ジャパンオーム社)を購入。オライリーの本は相変わらず厚さと値段にびっくりです。まぁ有用なんですが。というわけでその名の通り机の上に置いて掲示板弄りの友にしたいと思います。ちなみに現在机の上にある本は、この他に:

と、相変わらずの節操の無さを示しております。

なぜか近所の本屋で売り切れていた(?)ため保留状態だった「気象精霊記7」も無事購入。

2004年01月29日(木)

二束のわらじ

2004年01月27日(火)

ウィルスメール二題

2004年01月26日(月)

続・「ハーレムDAYS」デモムービー

16日に話題にしたあと、いろいろあったりなかったりして書くのを忘れていましたが、デモムービーは19日(多分)に再び公開されました。しかし、

  1. ファイル名が違う(h_days_demo_l.mpg → hdays_demo.mpg)。
  2. ファイルサイズも少し違う。

ということで 70MB あまりを再びダウンロード。両方を見比べてみると、

‥‥製品用のデータをネット公開してしまったとかですかねぇ。最初のファイル名の末尾、_l は large を連想させますが。

ちなみに「ハーレムDAYS」、お気に入りキャラが、ビジュアル的には遥香、キャラクター的には委員長、ボイス的にはかなと、我ながらどうしたものかという状況に陥っております【謎】。

2004年01月25日(日)

今日の買い物

いつもの本屋で見かけたので思わず購入。なるちー絵はいいね。ここ数日の PC 不調やらなんやらで荒んだ俺の心を癒してくれます(笑)。

2004年01月24日(土)

p 要素と noscript 要素

現在「ぽあぞんでずゅー」トップページの下部、バナーやカウンタ周辺のマークアップは以下のようになっています。

<p class="icons">
<!-- 「ぽあぞんでずゅー」 バナー省略 -->
<script type="text/javascript">
// <![CDATA[
// スクリプト省略
// ]]>
</script>
<noscript>
<p>
<!-- 代替内容省略 -->
</p>
</noscript>
<!-- "Valid XHTML 1.1!", "Valid CSS!" バナー省略 -->
</p>

W3C MarkUp Validation Service でも Another HTML-lint でもエラーにならないのですが、このマークアップはなんとなく奇妙な感じがします。スクリプトが無効の環境下では p 要素の中に p 要素があることになってしまいます。というわけで、XHTML 1.1 における各要素の内容モデルを見直してみました。→引用部を飛ばす

<!ENTITY % p.content
     "( #PCDATA | %Inline.mix; )*" >

<!ENTITY % noscript.content
     "( %Block.mix; )+"
>



<!ENTITY % Inline.mix
     "%Inline.class;
      %Misc.class;"
>

<!ENTITY % Inline.class
     "%InlStruct.class;
      %InlPhras.class;
      %InlPres.class;
      %I18n.class;
      %Anchor.class;
      %InlSpecial.class;
      %InlForm.class;
      %Ruby.class;
      %Inline.extra;"
>
<!ENTITY % InlStruct.class "%br.qname; | %span.qname;" >
<!ENTITY % InlPhras.class
     "| %em.qname; | %strong.qname; | %dfn.qname; | %code.qname;
      | %samp.qname; | %kbd.qname; | %var.qname; | %cite.qname;
      | %abbr.qname; | %acronym.qname; | %q.qname;" >
<!ENTITY % InlPres.class
     "| %tt.qname; | %i.qname; | %b.qname; | %big.qname;
      | %small.qname; | %sub.qname; | %sup.qname;" >
<!ENTITY % I18n.class "| %bdo.qname;" >
<!ENTITY % Anchor.class "| %a.qname;" >
<!ENTITY % InlSpecial.class
     "| %img.qname; | %map.qname;
      | %object.qname;" >
<!ENTITY % InlForm.class
     "| %input.qname; | %select.qname; | %textarea.qname;
      | %label.qname; | %button.qname;" >
<!ENTITY % Ruby.class "| %ruby.qname;" >
<!ENTITY % Inline.extra "" >


<!ENTITY % Block.mix
     "%Heading.class;
      | %List.class;
      | %Block.class;
      %Misc.class;"
>

<!ENTITY % Heading.class
     "%h1.qname; | %h2.qname; | %h3.qname;
      | %h4.qname; | %h5.qname; | %h6.qname;" >

<!ENTITY % List.class "%ul.qname; | %ol.qname; | %dl.qname;" >

<!ENTITY % Block.class
     "%BlkStruct.class;
      %BlkPhras.class;
      %BlkPres.class;
      %BlkSpecial.class;
      %Block.extra;"
>

<!ENTITY % BlkStruct.class "%p.qname; | %div.qname;" >

<!ENTITY % BlkPhras.class
     "| %pre.qname; | %blockquote.qname; | %address.qname;" >

<!ENTITY % BlkPres.class "| %hr.qname;" >

<!ENTITY % BlkSpecial.class
     "%Table.class;
      %Form.class;
      %Fieldset.class;"
>
<!ENTITY % Table.class "| %table.qname;" >
<!ENTITY % Form.class  "| %form.qname;" >
<!ENTITY % Fieldset.class  "| %fieldset.qname;" >

<!ENTITY % Block.extra "" >


<!ENTITY % Misc.class
     "%Edit.class;
      %Script.class;
      %Misc.extra;"
>
<!ENTITY % Edit.class "| %ins.qname; | %del.qname;" >
<!ENTITY % Script.class "| %script.qname; | %noscript.qname;" >
<!ENTITY % Misc.extra "" >

p 要素の内容モデルは #PCDATA か %Inline.mix; とされています。%Inline.mix; はいわゆるインライン要素‥‥だけではなくて、%Inline.class; と %Misc.class; となっています。%Inline.class; がいわゆるインライン要素ですが、%Misc.class; は文脈によってインライン要素としてもブロックレベル要素としても使用できる要素です(DTD 的には、%Misc.class; は %Inline.mix; の内容であると同時に %Block.mix; の内容でもあります)。noscript 要素はこの %Misc.class; に含まれるので、p 要素の内容となることができます。

一方、noscript 要素の内容モデルは %Block.mix; が1つ以上です。p 要素は %Block.mix; に含まれるので、

<p>
  <script>スクリプト...</script>
  <noscript>
    <p>スクリプト代替のテキスト...</p>
  </noscript>
</p>

というマークアップは XHTML 1.1 として valid です。逆に、noscript 要素はインライン要素を直接内容とすることはできないので、

<p>
  <script>スクリプト...</script>
  <noscript>
    スクリプト代替のテキスト...
  </noscript>
</p>

とする事はできません。

というわけで問題ないという結論になったわけですが、やっぱりなんとなく奇妙な感じがします。というわけで HTML 4.01 Strict における各要素の内容モデルも見直してみました。→引用部を飛ばす

<!ELEMENT P - O (%inline;)*            -- paragraph -->
<!ELEMENT NOSCRIPT - - (%block;)+
  -- alternate content container for non script-based rendering -->


<!ENTITY % inline "#PCDATA | %fontstyle; | %phrase; | %special; | %formctrl;">
<!ENTITY % fontstyle
 "TT | I | B | BIG | SMALL">
<!ENTITY % phrase "EM | STRONG | DFN | CODE |
                   SAMP | KBD | VAR | CITE | ABBR | ACRONYM" >
<!ENTITY % special
   "A | IMG | OBJECT | BR | SCRIPT | MAP | Q | SUB | SUP | SPAN | BDO">
<!ENTITY % formctrl "INPUT | SELECT | TEXTAREA | LABEL | BUTTON">

<!ENTITY % block
     "P | %heading; | %list; | %preformatted; | DL | DIV | NOSCRIPT |
      BLOCKQUOTE | FORM | HR | TABLE | FIELDSET | ADDRESS">
<!ENTITY % heading "H1|H2|H3|H4|H5|H6">
<!ENTITY % list "UL | OL">
<!ENTITY % preformatted "PRE">

p 要素の内容モデルは %inline; となっています。一方、noscript 要素は %block; に含まれ %inline; には含まれていないので、p 要素は noscript 要素を内容に持つことはできません。noscript 要素が p 要素を内容に持つことはできますが。というわけで先の例は、HTML 4.01 Strict では例えば次のように書かなければなりません。

<p>
  <script>スクリプト...</script>
</p>
<noscript>
  <p>スクリプト代替のテキスト...</p>
</noscript>

p 要素と noscript 要素・その2

書いているうちにだんだん思い出してきましたが、そもそもなんであんなマークアップになったかと言えば、「HTML 4.01 Strict や XHTML 1.0 Strict では、body 要素直下にはインライン要素である script 要素を置くことはできないと勘違いしていた」からでした。→引用部を飛ばす

<!ELEMENT BODY O O (%block;|SCRIPT)+ +(INS|DEL) -- document body -->
<!ELEMENT body %Block;>

<!ENTITY % Block "(%block; | form | %misc;)*">

<!ENTITY % block
     "p | %heading; | div | %lists; | %blocktext; | fieldset | table">
<!ENTITY % heading "h1|h2|h3|h4|h5|h6">
<!ENTITY % lists "ul | ol | dl">
<!ENTITY % blocktext "pre | hr | blockquote | address">

<!ENTITY % misc "noscript | %misc.inline;">
<!ENTITY % misc.inline "ins | del | script">

script 要素は確かにインライン要素なのですが、body 要素の子要素として出現可能です。ブロックレベル要素(例えば p 要素)の内容でなければならないという思い込みから先の例のようなマークアップになっていたわけですが、

<body>
  <script>スクリプト...</script>
  <noscript>
    <p>スクリプト代替のテキスト...</p>
  </noscript>
</body>

これは HTML 4.01 Strict でも XHTML 1.0 Strict でも XHTML 1.1 でも valid となります。‥‥ script 要素には type 属性が必要だとか言われるけどそれはともかく。

2004年01月23日(金)

「とうや」にメモリを追加(してない)

当初(「メモリ買いました」を書いた時)は、火曜日のミルモを見てから作業に取り掛かろうと思っていたんですが、火曜深夜に「北へ。DDD」があることをすっかり忘れていました。で、水曜の夜から作業を開始。せっかくケースを開けるのでついでに掃除やらヒートシンクの取り付けなおしやらして、ついでに電源の都合から「そらち/ちとせ」とケースを交換。組み上げて電源を入れると、Windows 起動途中で青画面が。

STOP: 0x000000A5
てめぇのBIOSはACPIに対応してねぇんだよ使えねぇんだよ
わかったらさっさとBIOSをアップデートしやがれこのヴォケッ(意訳)

‥‥なんでやねん。ひとまず BIOS で ACPI を無効にしてみると、今度は青画面が出ていたのと同じタイミングでリセットがかかってしまい、延々と再起動を繰り返すように。Safe Mode で起動しようとしたんですが結果は上に同じ、起動できず。

仕方がないので Windows2000 のインストールディスク(SP4 適用済)から修復インストールを試みると、再び青画面。

STOP: 0x00000050
PAGE_FAULT_IN_NONPAGED_AREA
てめぇ最近追加したハードウェアがあんだろ
それをはずせってんだよこのヴォケッ(意訳)

追加したメモリを外すとあっさりと回復。Memtest86+ でチェックするとエラーがわんさかと。‥‥しかし、1枚だけでチェックすると(メモリの設定を緩くすれば)エラーがでなくなるから、ごるぁとメールするのは、ためらわれるなぁ。

2004年01月20日(火)

Mozilla 1.6

Mozilla はメディアタイプ "application/xhtml+xml" を持つ XHTML 文書を(HTML 互換の文書ではなく)XML として解析します。したがって、その文書が XML の整形式 (well-formed) でなかったりすると解析エラーを報告します(これは Opera でも同じですが、Opera が解析できた部分までは表示するのに対して Mozilla はエラー報告だけです)。
'XML Parsing Error' を表示する Mozilla 1.6

これは空要素タグの閉じ忘れ防止になったりするので意外と便利です(XHTML として妥当 (valid) かまでは調べてくれませんが)。というわけでよろづ書込処v4では ver.1.24 から、ブラウザが受け入れ可能な場合は "application/xhtml+xml" をつけて出力しています。

先週末 Mozilla 1.6 がリリースされました。で、使ってみたんですが、どうやら HTML とみなすか XML とみなすかで表示が違うらしいところを発見。

XHTML 文書を HTML として表示する Mozilla 1.6 XHTML 文書を XML として表示する Mozilla 1.6

左が "text/html" をつけて出力したもの、右は "application/xhtml+xml" をつけて出力したものです。CSS による、body 要素の背景色の指定が、HTML として処理された場合はウィンドウ全体に適用されてますが、XML として処理された場合は文字通り、body 要素の内容とパディングの背景にだけ適用されています。body 要素に境界線を指定するとそれがはっきりします。

XHTML 文書を HTML として表示する Mozilla 1.6 (境界線つき) XHTML 文書を XML として表示する Mozilla 1.6 (境界線つき)

(CSS の)仕様として正しいのは右側ですが(おそらく)、ほとんどの制作者は左側の表示を期待するでしょう。body 要素ではなく、その親要素である html 要素に背景色を指定すればウィンドウ全体に背景色を指定できるようですが、それはそれで如何なものかと思わなくもないです。

ま、世の中ではこんな過去互換モードを持つブラウザがほとんどですから、私としては放置の方向で。
標準準拠モード無効状態での MSIE 6 SP1 による表示

2004年01月19日(月)

掲示板 ver.1.25.1

あまりにも間抜けすぎるバグが発覚して憤死しますた。

まぁそんな過ぎ去った過ちはさっくりと忘れることにして(ぉ、昨日のアンパサンド関係の解説に追記など。

http://example.com/foo?bar&baz

「URLをリンクにする」をチェックして(その前に「タグ無効」をチェックして)上記文字列を投稿すると次のように変換されます。

<a href="http://example.com/foo?bar&amp;baz">http://example.com/foo?bar&amp;baz</a>

HTML (や XHTML)中では文字 "&" は "&amp;" と書かなければなりません。これは属性値でも同じなので、上の例は http://example.com/foo?bar&baz へのリンクとしての正しい表現です。もっとも、この変換はスクリプトが行なうので投稿者が気にする必要はありません。というか、http://example.com/foo?bar&amp;baz と書いて投稿すると(おそらくは)期待した結果は得られないでしょう。

一方、「タグ有効」で手動でリンクにする場合ですが。

<a href="http://example.com/foo?bar&baz1">例1</a>
<a href="http://example.com/foo?bar&amp;baz2">例2</a>

正しい表現は「例2」の URL です。しかし、上記文字列を投稿すると

<a href="http://example.com/foo?bar&amp;baz1">例1</a>
<a href="http://example.com/foo?bar&amp;baz2">例2</a>

といった具合に、「適当に」補完します(まぁ処理的には「補完」じゃないけど)。

今日の買い物

久し振りに街まで買い物に出かけたので色々と。久し振りにエロゲ購入検討リストから買ったり(半年ぶりだな)、「CROSS†CHANNEL」を追加したり、買いそうもない2つを削除したり。そして「夏日」が2回年越していることにも気づいたり。

がちゅみりもいつの間にか(その手の)店に卸してたんですな。思い起こせば the BEST1 は通販で、夏がっちゅはイベントで(去年11月のキャラパ札幌2)買ったものでした。来月のキャラパ札幌3にラッセルが出展するならその時にでも買おうかと思っていたんですが。‥‥そういえば既に一ヶ月前ですが、まだ具体的な動きはほとんど見られませんな、キャラパ札幌3。

メモリ買いました

今回も Crucial の通販で 512MB DDR PC3200 (CT6464Z40B) を買いました。日本時間の土曜未明(現地時間で金曜午前)に注文して、今日の昼に到着。ヘタな国内の通販より早いですな。

取り付けるのは多分明日ですが(再インストールの時に)、とりあえず袋から出してみると、前回は両面に16個のチップが載ったモジュールだったんですが、今回のは片面に8個チップが載ったモジュールでした。型番変えずに仕様変えるなよ、と。というかモジュールのシールをよく見ると、前回のは CT6464Z40B.16T で、今回のは CT6464Z40B.8T と、明らかなんですが。まぁ前回より $5 安くなってたし、円高もかなり進んでるので 10k ちょっとなのはいいんですが。

2004年01月18日(日)

掲示板 ver.1.25

今回の更新でしばらく前から ToDo に挙げっぱなしになっていたネタのひとつ、「自動 URL 判定の改善」がぼちぼち終了。普通に URL を書けばおおむね問題ないのですが、一部、誤爆防止のための「仕様」が存在します。

  1. URL の末尾に閉じ括弧 ")" は出現できない。

    http://example.com/(foo)

    "(" ")" は URL に出現できる文字なので上の例は正しいのですが、単純に URL を括弧で囲った場合

    (http://example.com/foo)

    との区別が面倒なので、末尾の閉じ括弧 ")" はリンクに含めません。

    より正確には末尾でなくてもリンクにならない場合があるんだけど(興味のある方はソースの2330行目付近をどうぞ)、そういう URL にお目にかかることはないかと‥‥というか、"(" ")" を URL に使っているところも見た事ないですが。

    なお、"<" ">" "[" "]" "{" "}" といった括弧類は URL に使えない文字なので問題ありません。

  2. アンパサンド "&" はクエリ文字列中でのみ有効。

    http://example.com/foo&bar/

    "&" も(基本的に) URL に出現できる文字なので上の例は正しいのですが、諸々の都合(=手抜き実装)からパス文字列中でリンクになりません。上の例では、http://example.com/foo がリンクになります。次の例のようなクエリ文字列中では、問題なくリンクになります。

    http://example.com/foo?bar&baz
  3. フラグメント文字列での文字種制限。

    フラグメント文字列では、微妙な文字種制限があります。先頭は英字かアンダースコア "_" (すなわち [A-Za-z_])でなければなりません。その他の文字も英数字かハイフン "-"、ピリオド "."、アンダースコア "_" (すなわち [A-Za-z0-9\-._])でなければなりません。これは HTML 4.01 や XHTML 1.0, HXTML 1.1 の id 属性の値とはいずれも異なっています。

    http://example.com/foo#もえもえ

    XHTML では(というか XML 1.0 では) id 属性の値としてほとんどの文字が使えるので上のような URL が出現する可能性もあるのですが、これは http://example.com/foo までしかリンクになりません。

その他に「ftp スキームでユーザ名とパスワードを入れる(ftp://user:passwd@example.com/foo)ことはできない」とか「ポート番号は5桁まで」とかもありますが、これを含めて基本的には気にする必要はないかと(ぉ。

今日の「とうや」

重症。今日だけで4回ほど青画面の刑。その他にプロセスが応答しなくなって再起動の刑が数度。やはり断固たる再インストールをしなければならないか‥‥。

2004年01月17日(土)

最近の「とうや」

どうにも不安定です。しばらく前からシビアな環境下(キャプ中とか)においてエラーがでる事が多いような気がしてはいたんですが、最近はちょっと席を外した隙に青画面になっています。近いうちに断固たる再インストールが必要になるかもしれません。

‥‥といいますか、本当はかなり前から再インストールしようとは思っていたのです。VideoStudio で「ムービーを作成」しようとした瞬間にエラーメッセージも出さずに終了してしまうという現象が発生した時から。おかげさまで約3か月分のキャプデータが未編集のまま放置されていてハードディスクを圧迫していたりします。

なお、いつも「不安定です」と言っているように思うかもしれませんが、安定している間はネタにならないので話題にしていないだけです。とはいえ不安定な時が多いような気もしますが(ぉ。

今日の買い物

2004年01月16日(金)

雑記索引をまとめてみて

読書感想文みたいな見出しだなぁ。しかし見出しは大事だと思いました。例えば買い物の話題、「~の買い物」が並んでてさっぱり分かりません。こういう場合は買ったものを見出しに出すべきなのかなーと思いました。‥‥「今日の買い物」にも、これはこれで意味はあるんですけどね、個人的には。ディレクトリを "今日の買い物" で grep かければ全部引っかかるんで(「メモ」にも同じ意味が)。でも索引の見出しとするには不向きでした。

その2。1行だけのコメントはやめようと思いました。もっとちゃんと書け>自分、と。書けないのなら無理にネタにするな>自分、と。特に「今日の買い物」(またかい)で買ったものの名前しか書いてないという状況は如何なものかと。まぁこれは今後の課題ということでごにょごにょ。

その3。1つの見出しの中に全く関連のない複数の事柄を入れるのはやめようと思いました。「小ネタ集」とか。はっきり行って無駄。事柄そのものに関連性があって複数の話題に入っているのは構わないのですが(例えば「家庭用ゲーム・一般向けPCゲームの話題」と「G's やシスプリの話題」とか)、まぁ具体的に言えば2003年05月24日(土)の「今週の色々」のようなのは、それぞれ分けれ>自分、と。‥‥でもそのままなんですけど(ぉ。

で、とりあえず2003年分は索引化が終わったので一息入れたいと思います。古くなればなるほど情報的価値が下がるのでモチベーションも下がるのですが‥‥まぁ適当に。

昨日の買い物

今号は特別付録がついて、若干ページが増えて厚くなって、定価も2割増でした。我らがピョコラ様のご活躍がいつの間にか増えているように思えます。

「ハーレムDAYS」デモムービー

「ハーレムDAYS」(BLACK PACKAGE)の体験版とデモムービーが昨日公開されたのでさっそくダウンロードしました。といいますか、体験版は無事にダウンロードできたのですが、デモムービーは 97% をダウンロードした時点でファイルが 404 になってしまい、ムービーのラスト数秒が切れてます(笑)。

ムービーの公開を一旦停止した理由が分からないのがちょっとアレなんですが、まぁ一般的に公開停止の理由として考えられるのは:

  1. サーバの都合(アクセス過多で危険だとか)。
  2. 内容に問題があった(ムービーだとクレジット間違ってたとか消し忘れてた【謎】とか、プログラムだとバグってたとか、あるいは公開用の素材じゃなかったとか)。
  3. まだ公開する時期じゃなかった(フライングというか先走りというか)。

といったところ? 個人的には3番と見た。

2004年01月14日(水)

雑記索引

いきなりファイル名が変わりました。

当たり前といえば当たり前ですが、さっぱり進みません(ぉ。1日に3か月分処理というペースでは終了までに半月かかってしまうのでそれよりは早く終わらせたいのココロ。

で、その雑記索引ですが。同じ項目が複数の話題に入っていることもあります。話題分類はまだ増える予定です。それでも分類しようのない話題があるのですが‥‥。「コンピュータ・ネットワーク関連の話題」は巨大すぎる事が明らかになったので分割します。「自作PCの話題」とかかなぁ。「えろげの話題」も巨大すぎるので、「えろげぷれいの話題」を分割。また、noteidx.html そのものも分割を余儀なくされるサイズになるでしょうが、各ファイルの命名則を決めていないのでまだ分割できません。とりあえずこれからトクトクはメンテに入るので、その間に何とかしたいところです。

今日の北へ。DDD

さっそく始まったわけですが。一言で言うなら「ラブストーリー」ですな。夜9時あたりの。「らんららん」や「なんとなく」の雰囲気ではないです。

で、頭の中で某全国の12人のアレが渦巻いて離れないのは、「1人1エピソード(2話?)」というスタイルだからだ‥‥という事にしていいでしょうか。まぁヒロイン同士に(無理矢理)関連性を持たせても如何なものかと思わないでもないですが。

現在のステータスは「期待とは違うけどこれはこれで」。

2004年01月13日(火)

つくばエクスプレス

最初、聞いた事ない列車と路線だなーと思ったんですが、確か計画段階で「常磐新線」とか呼ばれてた路線でしょうか。‥‥実際に作ってたんだな‥‥。

@import

CSS では、スタイルシート中に別のスタイルシートを移入するために @import 規則を使います。CSS1 では移入される CSS ファイルの URL を(文字列として、あるいは url() 関数を用いて)示すことしかできませんでしたが、CSS2 ではメディアタイプを指定することもできます。

@import "hoge.css";              /* URLを文字列として指定 */
@import url(foo.css);            /* url()関数を用いて指定 */
@import "foobar.css" screen;     /* CSS2ではメディアタイプを指定可能 */
@import url(bar.css) screen, tv; /* メディアタイプは , 区切りで複数指定可能 */

CSS1 対応(という事になっている)の IE6 ではメディアタイプが指定されている @import 規則は無視されます‥‥と思っていたのですが、どうやら実際にはそうではなかったようで。IE6 の HTTP 要求ヘッダを見てみるとこんな要求が。

GET /"foobar.css"%20screen HTTP/1.0

メディアタイプを指定した @import 規則は CSS1 の文法では不正な記述です。CSS1 に対応した(そして、CSS2 を知らない)ユーザーエージェントはこれを無視しなければなりません。しかし IE6 は、@import 規則に解釈不能な文字列が存在するとそれを URL として処理しているようです。という事は、CSS1 的に不正な(CSS2 でも不正ですが)

@import boo.css;   /* 文字列は ' か " で囲われなければならない */

でもスタイルが適用されるということですが、試してみると本当に適用されました。いやーさすがは互換性を大変重要視するブラウザ、素晴らしすぎて泣けてきます。

そういえば @i で移入できるという凄まじい事実もありました。

縁側で梅昆布茶とか

好き★嫌い食べ物占いというのをやってみたですよ。で、その結果:

お子ちゃま度は3%、精神年齢は85才です!
どんなものでも、ありがたくいただく世代。

Σ ̄□ ̄;;

いや、高めに出るだろーなーとは思っていたんだけどさ‥‥。

2004年01月12日(月)

掲示板 ver.1.24

更新内容についてここで解説を。

まずAccept 要求ヘッダを見て出力メディアを変える(手抜き実装)。について。具体的には、Accept 要求ヘッダを見て、"application/xhtml+xml" という文字列があれば "Content-type: application/xhtml+xml; charset=UTF-8" を、なければ "Content-type: text/html; charset=UTF-8" を付けて出力します。Mozilla (Gecko) や Opera では "application/xhtml+xml" な出力を受け取る事になるでしょう。で、どのあたりが手抜きかというと、q 値を全く見ていません。本当は、ユーザー(ユーザーエージェント)が "text/html" よりも "application/xhtml+xml" を欲しがっている時だけ "application/xhtml+xml" を渡さなければならないのですが、"application/xhtml+xml" という文字列があれば問答無用で "application/xhtml+xml" を送りつけます。‥‥たとえ、"application/xhtml+xml;q=0" であっても(滅)。

続いてメディアが application/xhtml+xml の時は XHTML 1.1 でマークアップ(head 要素付近しか違わないが)について。以前(「返信」とか「削除」がフォームだった頃)のマークアップは XHTML 1.0 Transitional としては valid でしたが Strict としては不正でした。その後の色々な修正によって、現在は DOCTYPE 宣言さえ変えれば XHTML 1.1 として valid なものになったので、せっかくの "application/xhtml+xml" を生かすためにも(意味不明) XHTML 1.1 としてマークアップ。head 要素付近しか変わってないですが、その内容はこんな感じ:

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="../default.css" type="text/css" media="all" charset="UTF-8" title="Poison des Yeux Style"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja">
<head>
<link rel="Start" href="../" />
<link rel="Help" href="./yybbs.cgi?howto" />
<link rel="Search" href="./yybbs.cgi?find" />
<link rel="Contents" href="./yybbs.cgi?list" />
<link rev="Made" href="mailto:rinrin&#64;funifuni.net" />
<title>よろづ書込処v4 - 最近のスレッド 3 件</title>
</head>

http-equiv 属性を持つ meta 要素の内容はちゃんと HTTP 応答ヘッダとして出力。スタイルシートは Associating Style Sheets with XML documents に基づき xml-stylesheet 処理命令で文書に移入。より XML 文書っぽくなって自己満足(ぉ。

最後にタグ有効時は「ハンドル」と「タイトル」で文字実体参照を展開する(数値文字参照は展開しない)。について。まぁそのままなんですが。数値参照を展開しないことにそれほど意味があるわけではないのですが、あえて言うなら NULL (U+0000) を書けないように、というところでしょうか。じゃあ「コメント」には書けていいのかという事になるのですが、どこにも書いてませんが、このバージョンからは「数値の先頭が 0 の場合は展開しない」ようにしました。例えば &#064; と書いても &#64; と同じものとは解釈されません(前者はそのまま表示され、後者は @ となります)。数値の先頭に 0 があっても仕様的に正しい数値参照なのかは確かめてません。ちなみにもう1つ、どこにも書いてない制限があって、それは「数値が十進では2桁~5桁、十六進では2桁~4桁の範囲内にない場合は展開しない」というもの。というわけで U+0000..U+0009 はどうやっても書けません。‥‥普通は使うことないでしょうけど。ちなみにこのあたりの Undocumented な仕様はいずれ変更されるかもしれません。

2004年01月11日(日)

スタイルシートを再構成しているらしい。

印刷用スタイル

infoseek iswebには魅せるホームページ作成講座というのがありまして、毎週(多分)新ネタが公開されていたりします。まぁバックナンバーをざっと眺めているだけで頭痛がしたりしなかったりしますが。

第80回のお題は印刷に対応するホームページ (1)でした。まず、先頭に次のようにかかれています。

ホームページは、プリンタを使って紙に印刷される場合もあります。しかし、ページによっては文字や画像が用紙からはみ出してしまい、うまく印刷されないケースもあります。今週は、印刷にも対応するホームページの作り方を紹介しましょう。

ここまで読んで私が想像したのは、CSS2ページメディア向けプロパティを使うことでした。が。

基本的な考え方
ホームページがうまく印刷できない原因に、ページの横幅が大きすぎて用紙からはみ出してしまうケースがあります。そもそもホームページでは、ページの横幅という概念がありません。印刷の際は、ブラウザがページの横幅を適当に調整してくれますが、それでも(レイアウトによっては)正しく印刷されないことがあります。このような事態に備えるには、TABLEタグを使ってページ全体の横幅を指定するのが有効です。なお、このTABLEタグを使ったテクニックは、ページのレイアウトを一定に保つ場合にも活用できます。ぜひ、覚えてください。

‥‥。印刷向けに横幅を指定したいのなら size プロパティを使えばいいのですが。ていうか、印刷時に横にはみ出すことを防ごうというのに横幅を px で指定してどうしようというのでしょうか。

これだけなら「CSS を知らない人が書いているんだろうな」で終了ですが、第81回 印刷に対応するホームページ (2)では「改ページを指定する方法」として CSS2 の page-break-before プロパティなどを登場させていたりします。もはやわけがわかりません。

とどめに末尾にこんな注意書きがあります。

※このスタールシートは、Internet Explorer 4以降に対してのみ有効です。Netscape Navigatorには対応していません。

世のブラウザは「Internet Explorer 4以降」と「Netscape Navigator」しかないようです(「スタールシート」については気にしないでおきましょう)。もちろん、Opera でも Netscape でも Mozilla (Gecko) でも有効です。

ちなみに、ブラウザウィンドウ上で横幅を固定するには body に width プロパティを指定する事で実現できます。

body { width: 500px; }

互換性を大変重要視するブラウザは body に設定された width プロパティを理解してくれないのでアレですが、body 要素の内容を丸ごと div 要素の内容として、その div に width プロパティを指定すれば同じことができます。

div#body { width: 500px; }

<body>
<div id="body">
<h1>さんぷるー</h1>
<p>ほげーほげーほげーほげーほげー
ほげーほげーほげーほげーほげー
ほげーほげーほげーほげーほげー
ほげーほげーほげーほげーほげー</p>
</div>
</body>

まぁ table よりはマシでしょう。

2004年01月09日(金)

右手にナイフを持ったままにこやかに左手で握手を求められても、応じられません。

宇宙麻雀

久し振りに「いただきじゃんがりあん」(すたじおみりす)をプレイしてみる。CD 入れてると読み込みにやたらと時間がかかる(CD ドライブ周りはしばらく前から読み書きとも不安定です)ので CD 無しで。CD 無くても(音楽が鳴らないだけで)普通にプレイできるのはまぁ偉いような気もします。ゲーム内容はアレですが。

暇潰しにはなりますが、お互いにあがれずに 10本場とかに突入する事もよくあるので、時間を使いすぎてしまうことも。本末転倒。

ついでに「いたちょこ2001年05月25日とか27日の日記参照)」もやったのですが、相変わらず川口さんをクリアできず残念な思いをしました。ていうかなぁ、「2分間に 256 文字」だからなぁ‥‥単純計算で毎秒 2.2 文字、文字にもよるけど、大体1秒間に5回キーを叩かなければクリアできない(しかも2分間ノーミスで)というのは、並みの人間には無理だと思います。

2004年01月08日(木)

白い巨塔

新年早々激しい展開でした。

掲示板スクリプト

ほったらかしのタグ処理と文字参照関係をいじろうと思ったのですが、具体的なうまい実装法が思い浮かばず。許可する要素や属性、実体はリストで持つとして、コメント本文をどうやって検索、置換するか。‥‥なんとなく思いついた方法は、リソースを大量消費しそうな予感だしなぁ(それ以前に巨大なリスト自体がリソース大量消費の予感だが)。

まぁしばらく考えよう‥‥。

2004年01月07日(水)

そういえば今日は七草でした。

iPod mini

とりあえず、また五色かよ、と。しかしこれもかなりヒットしそうな予感? というか個人的には気に入った。$249 だから 27k円くらいか。‥‥容量(収録可能曲数)的には iPod 15GB に行きたくもなりますが。

引用文字列判定・第3弾

初回の方向性を維持して Perl5 のマニュアルを睨んでいたらこんなのが浮かんだ。

s/(^|<br>)(>\s.*?)(<br>(?!>\s)|$)/$1<font color="green">$2<\/font>$3/gx;

3番目のグループは「『後ろに "> " が続かない "<br>"』か『文字列の最後』にマッチ」となります。拡張正規表現を使うので Perl4 では使えませんが、これまでの中では最も安全確実高利回り。

ちなみに /x 修飾子によって空白が基本的に無視されるので \s を使っています("\ " でもいいんだけど、見やすくないし)。

2004年01月06日(火)

Athlon 64 3400+

Athlon 64 3400+ が 45,870円ですか、いきなり安。ていうか 3200+ が一気に 3万円前半に。

今日のミルモ

ヤシチの出番が冒頭の後姿だけかと心配になりましたが、ちゃんと最後にも出番があってよかったよかった。日高様はいい調子で飛ばしてましたね、前半は。後半はちょっとパワー不足。まぁ日高様が前面に出てしまってどうすると思わなくもないですが。

やっぱりふたりで一人前なサスケとハンゾーもほほえましいところです。

引用文字列判定・第2弾

前回とは方向性を変えてみる。というか単純化。

s/<br>/\n/g;
s/^> .*$/<font color="green">$&<\/font>/mg;
s/\n/<br>/g;

連続した引用部の場合でも一行ごとに <font color="green">~</font> が入るのがアレですが、確実に引用行を取り出し可能。ポイントは /m 修飾子と、改行文字を \n にしたこと。

2004年01月05日(月)

でもやる気はない。

カウンタログ整理

大して意味もなく高機能化してみたり。

2004年01月04日(日)

さて、そろそろ始めましょうか。

新年挨拶

明けましておめでとうございます。2004年も「ぽあぞんでずゅー」をよろしくお願いいたします。

えーと、簡単に風邪の推移など説明いたしますと。ひき始めは28日の朝でした。同日夜には熱が出始め、翌29日朝には 38.5℃ を記録したため昼から病院へ。点滴されて解熱剤と抗生物質をもらってきました。薬の影響で30日にはかなり楽になったので夕方から某 toshi、某メビ両氏と飲みに行き‥‥自爆しました。

31日から元旦はほとんど寝て過ごし(曙も紅白も全く見てないよ‥‥)、2日頃からどうにか起きられるようになりましたが、この間に体力と体重とやる気がごっそりと落ちてしまいました。少しずつリハビリしていきたいと思います。

今年の「ぽあぞんでずゅー」の予定など。今年は引っ越します。例の場所に。ついでにちょっと仕様を変えるので(というかトクトクでは出来ないので引っ越す方向)かなり時間かかりそうです。まぁ少しずつやっていきますが。その他はまぁ、のんびりと。まったりと。てきとーに。やっていきたいと思います。‥‥今年で5年目かぁ。

03年12月雑記目次雑記索引04年02月先頭最後


もりば <rinrin@funifuni.net>

Valid XHTML 1.1! Valid CSS!