だいたい読み終わった。「何かすばらしくスゴいテクニックが使われているのでは?」と淡い期待を持っていたが,ひたすら地味に処理をこなしておりました。 いやいや,それでもスレッド管理とかクラスローダの設定とか目を見張るところはある。ただ,やっぱりweb.xmlの解析やソケットの読み書きは地道にコリコリ書いてあったという話。下回りになればなるほど,愚直に記述するしかないんだなぁと,改めて感じた。 Servlet APIを除くWinstone本体部分は 13,500行くらいで,トリッキーな箇所もないので読み解くのは難しくなかった。だからと言って,自分で書けるかというとさにあらずだ。正直,こんだけのコードを面倒がらずに記述しきった作者の技量はスゴいと思う。 んで,コードを一通り読んだからこそ言えるんだけど,Winstoneだけでも十分ある程度の規模のシステムを捌けると思う。ちゃんとスレッドプールしてる
関連エントリ - vimのマウス機能が便利すぎる件 まちゅ氏が「screen経由ではvimのマウス機能が使えない」と言っていたので、色々方法を調べてみたところ、簡単な方法が見つかったので紹介する。単に~/.vimrcに次の1行を追加するだけ。これだけで、screenが立ち上がっている時でもvimのマウス機能がフルに使えるようになる(*)。 set ttymouse=xterm2 ただしscreenのバージョンが4.00.02(2003年の中〜後半ごろリリースしたようだ)未満だとうまく動かない。仮想端末ソフト自体がマウスイベントをハンドルしない場合も同様だ。 なお.screenrcやsetenvなどで環境変数TERMをいじっている場合は上記はうまく動かないかもしれない。要はttymouseをxterm2に設定しさえすればマウスが自由に使えるようになるので、このような場合はvimを立ち
HTML 4.0のDTDに定義されている各要素(ELEMENT)の関係を、木構造にしてみます。厳密な構造の再現はできませんが、それぞれの包含関係が概観できます。 なお、ここでの紹介は以前のバージョンとの互換性を考慮したゆるやかなDTD http://www.w3.org/TR/REC-html40/loose.dtd に基づいています。スタイルシートの使用を前提としたより厳しい(表現要素を取り除いた)DTDは http://www.w3.org/TR/REC-html40/strict.dtd で確認してください。 HTML |--HEAD | |--%head.content | | :..TITLE | | : |--(#PCDATA) -(%head.misc;) | | :..ISINDEX ? | | :..BASE ? | |--%head.misc | :..SCRIPT |
例えば、辞書型定義リストDLの場合は <!ELEMENT DL - - (DT|DD)+> となっていますが、これは開始タグ、終了タグとも必須で、内容としてはDTもしくはDDが1回以上出現しなければならないということを意味しています。 例外についての注意 +(E)という書き方は、要素(群)Eは内容モデルの「例外」として出現して良いことを示します。この例外は「その要素の実現値の中の全ての場所に適用する」とされ、その子孫にわたって内容モデルにかかわらず出現して良いという意味になります。これは結果的にDTDの読み方を少し難しくしているので注意が必要です。例えばBODY要素タイプの定義を見てみましょう。 <!ELEMENT BODY O O (%block;|SCRIPT)+ +(INS|DEL) > BODY要素の内容にはブロックレベル要素(%block;)もしくはSCRIPT要素が1回以上出現
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く