x.x.x.x

| HOME | FrontPage | 記事編集 | RSS |

新blogやることありすぎ   Perl

  1. 1. なるべく静的に
  2. 2. ログイン管理
  3. 3. vCard管理
  4. 4. path_info
  5. 5. 記法
  6. 6. カレンダー
  7. 7. タグクラウド
  8. 8. 登録ユーザのオンライン状態
  9. 9. 眠くなってきた

やることはたくさんあるのに、コードの美しさにこだわり始めたら全然進まなくなった。バッジョ状態。「状況に対して最も難しいプレーを選択する」バッジョは美しさの定義をよくわかってる。美しさに明確な基準は無い。基準は難しさにあって、美しさは難しさに付随する。

1. なるべく静的に

いま表示されてる向かって右側のリンクですが、これ今どうやってるかっつーと、新しいエントリを追加するたびに、当該年度分の全HTMLを更新しています。乱暴に思えるかもしれないけど、結局その方が速い。CGI、mod_perl、静的HTMLで、それぞれどのくらい差が出るか計った人が居ます。

CGI-Perl2req/sec    
mod_fastcgi21req/sec
mod_perl26req/sec
HTML196req/sec

req/secとは1秒で処理したリクエスト数です。CGIを基準として、概算でmod_perlとかは10倍速い。HTMLは100倍速い。

圧倒的じゃないか我が軍は。

でも右側のリンクをサーバに1枚置いておき、別途Ajaxで取れば、全HTMLを更新する必要は無いわけです。コメントやトラックバックも同様です。まず第一にこれをやりたかったんだけど、べつにこんな仕組みは一瞬で出来て、クロスブラウザの検証もとっくに終わってます。いくらなんでもたったこれだけのために1から作り直そうとは思わない。

2. ログイン管理

ユーザIDとパスワードの入力欄を持つログインフォームが表示され、ログインすると
「ようこそ○○さん」
と表示されるamazonみたいなやつです。巷のログイン管理は画面遷移します。遷移ナシでも作れます。問題は工数(所要時間)。全ページの右列にログインフォームを載せ、ログイン・ログアウトの状態に応じてログインの有無に関わる表示を全て書き換えるだけです。言葉にすると簡単です。簡単な筈なのに誰もやってない。ここをちょうどいま作ってるんだけど、誰もやらない理由が少しずつわかってきた。

3. vCard管理

登録ユーザの住所とか、趣味とか、好きなアイドルとかを管理するユーザ管理のことです。もちろんうちでやる時は空欄かウソ情報でお願いします。僕は漏洩の責任を一切負いません。あくまでも業務システムに搭載する雛形の実績作りです。これがまたmicroformatsにある項目を全部載せると項目が多すぎて、テーブルを基本と詳細に分けるとかしないと、一つのテーブルやレコードが巨大になり過ぎる。全部1個のテーブルにすると確実にヤバいのはわかるけど、具体的なしきい値が分からない。そういうのも含めて実績を取りたいんだけどね。見せ方をYahoo!プロフィール式にすれば単体でひとつのサービスになるすぐれもの。

4. path_info

これはもう出来た。UIの核になる部分です。
今はこんな感じ↓ですが
/bbbs/logs/20081030223011.html

次はこう↓なります。
/bbbs/2008/10/30/22/30/11

こう↓書くと上のエントリにコメントします。
/bbbs/2008/10/30/22/30/11/comment

こんな風に↓書くとperl::mod_perlカテゴリの一覧を表示します。
/bbbs/category/perl/mod_perl

ついでに検索もこんな感じ↓です。
/bbbs/search/i/ゲレンデ/まるなげ

まぁ大したこたあない。完動パーツを30分で書いた。素人さんはこういうURIに喜ぶらしい。でも僕が検証したいのは実行速度。この例ではbbbsが実行ファイルです。超巨大です。超巨大なのでCGIなら確実に全く使い物にならないけど、mod_perlならどうなんだと。mod_perlなら全リクエストがbbbsを経由するので、bbbsはほとんど常にメモリ上に存在しています。mod_perlでコンパイルから起動までの時間がゼロに近付くなら、超巨大だろうと超小型だろうと、そんなに変わらないんじゃないかと今のところは予想しています。実際やったらめちゃくちゃ遅いかもしれない。そこは実際やってみるしかない。巨大になった分の重さから、apacheが最初の探索で実行ファイルを見つける軽さを差し引いて、何がどうなるかを見てみたい。

5. 記法

Wiki記法とか、markdown記法とか、PODとかの文書整形フォーマットのことです。手当たり次第インスコして動的に表示します。表示は動的ですが、テーブルを未整形と整形済みの二つ作ります。表示の際には整形済みテーブルからデータを引っ張ってきてそのまま表示するだけ。現行はエントリ毎にHTMLを起こしています。静的HTMLに非同期Ajaxで色をつける仕組みがどう考えても最速だけど、ファイルが増えすぎるし、あまり業務サーバ向きのソリューションとは言えない。やはり動的なシステムでsquidなどたしなみながら試行錯誤しないとチャリンチャリンに結びつかない。

6. カレンダー

カレンダーから日付をクリックするとエントリの部分だけが選択した日付のエントリに差し替わります。
これは既に実績があるので心配していないけど、でも誰も使わないんじゃないかなぁ。。

7. タグクラウド

よくあるやつです。これが大変。管理方式がどうしても汚くなる。汚いので処理も重くなる。「5つまで」とか低い上限を決められれば別だけど、そんなタグクラウドは世の中に無いし、見た目も汚いし、「はてなキーワード」の次ぐらいに無意味な機能なのでテンションも上がらない。まぁ一応作るけど、いったい誰が考えたのこれ。全然面白くないよ。こういうくだらない機能を常識化するのはやめて欲しいなぁ。。

8. 登録ユーザのオンライン状態

何かのサーバから取って来られたよね。ICQだっけ?Yahooだっけ?IMのwebインタフェースがあれば携帯端末から相手の自宅へメッセージを投げられるので、年明けには絶対間に合わないけど、そのうち調べて実装したい。Perl用のインタフェースは既にある。インターネットで見た。

9. 眠くなってきた

あとスキンとか、テーマとか、プラグインとか、まだまだあるけどクスリが効いてきた。とにかくやりたいことを書き出したら、本当に年内に終わるのかどうか怪しい空気になってきた。まぁ作るけど。PS3なんて買うんじゃなかった。既に一杯一杯ですが、他に必要な機能や、または自社に導入したい(ので予算出すよ)といった御提案がございましたら制作者までお知らせ下さい。

BlogMode speed member / 2008.10.22 00:39

These pages are designed for NN7 & IE6.
BBSWiki ver.1.50 Final blogmode.
Copyleft (!C) 2005-2007 SUICIDE BLONDE JP.
All Lefts Reserved.

Valid XHTML 1.0 Strict Valid CSS!