2007年04月28日

ニコニコ動画の裏側

ニコニコ動画の勉強会とやらがひそかに開催されたらしく、そのレポートがいくつかあがっている。これは興味深い。
ニコニコ動画勉強会に行ってきました

ニコニコ動画の簡単な歴史やサーバ構成、各モジュールの概要などなど。
またしてもLAMP構成( Linux 2.6 / Apache 2 / MySQL 5 / PHP5 )なんだなぁ。
やっぱぱっと作ってぱっと動かすにはPerlやPHPが有利なのだろう。
特にニコニコ動画自体は複雑なアプリケーションじゃないし、開発自体は楽そうだな。
難しいのはやっぱり負荷分散かな。
あと動画投稿部分はどういう処理になってるのか想像できない。投稿されたビデオをデコードして、再エンコードしてるんだろうか。ビデオ再生のコーデックのライセンスがどうこう言ってた記憶があるのでその辺はライブラリを単に使用してるだけだろう。最近画質がよくなってエンコード職人が出てきてるのでその辺自由度が高くなったのかもしれない。一度ビデオを投稿すればどうなっているか大体わかるか。

興味深かったのは
> 複数テーブルにまたがるJOINは避ける 非正規化ロジックで対応
って所。Mixiの時もあったけどJOINはやっぱダメらしい。MixiもJOINせずに複数回問い合わせのほうがベンチマーク結果的によかったようだ。ふ~む、DBは正規化こそ正義!と考えていたが、どうやらその考え方は古くなってしまったようだ。もちろん通常の業務アプリを作るときは正規化必須で、こういうスループットが重要視されるようなシステムが特殊なのかもしれないが。
今趣味のプログラミングでスループットが重要なWebアプリを作ろうかとしてDB設計してるんだけど、情報を正規化せず冗長なデータ保持でひとつのテーブル見るだけで表示する情報がすべて得られるような設計にするべきだろうか。
いずれにしろWebアプリ作るときはDAOパターンを使おうと思っているので、その辺正規化するか冗長にさせるかはDAO層で吸収できるし気にせず作り出してもかまわないかもしれないな。

「非正規化ロジック」という言い回しが気になったけど、非正規化DB設計ではないんだろうか。
たとえば正規化されたテーブルをJOINするのではなく、2回SELECTするのか冗長なテーブルを1回SELECTするかの違い。
前者は正規化はするが、ロジックで行う。Mixiはこのタイプらしい。
後者は正規化自体をしない。ロジックは関係ないが・・・。
非正規化ロジックというのが何を指しているのかよくわからない。「非正規化ロジック」でググッても今回の記事関連しかヒットしないので、世間的に通用する単語ではなさそうだ。
一度DB設計がどんな感じになってるのか見てみたいな。


後コメントの保存がRDBを使わずCSVって言うのがすごい。
CSVにしたのは何でだろう。DBサーバの負荷を下げるぐらいしか理由が思いつかないが。
MySQLでよくある1台の書き込み専用DBに対してレプリケーションを行うって構成じゃコメントの書き込みが多すぎるということだろうか。
コメントのバックアップはしてないというコメントもあるし、割り切るところは割り切るって言うことなんだろう。


メッセージングサーバの通信方式の「a. 双方向 chunked content-transfer-encoding」は知識が無いのでなんともいえないけど「c. polling 」ってのはどうなんだろう。
ブラウザの挙動から推測すると新規メッセージの受信はpollingでは無く、cometで実装されてるような感じが。常に「XXXから読み込んでいます。」って言う表示があるってだけが根拠だけど。
再生人数はポーリングで一定時間ごとに変化しているようだ。そんなところまでリアルタイムにせんでも・・・と思うがこだわりがあるのだろう。


こういう動画投稿系サイトはスケーラビリティと負荷分散。それと通信費が問題なんだろうな。
ニコニコは回線代などで1年でサマージャンボ宝くじが当たったぐらいのお金が投資されてるということだけど、どこでそれらを回収するかが問題だ。
どうビジネスにしていくかはこれからと言う事で、末永くサービスしていってほしいのでがんばってほしいところ。会社側としたら著作権などでリスキーなビジネスのようだが・・・。


ということでニコニコ内部のシステム構成など興味深い内容だった。とても勉強になる。ありがたやありがたや。

2007年04月27日

RTX1100来たっ!!

YAMAHAのルータRTX1100が届いたのでいじってみた。
DSCF0314.jpg

定価12万のところ、ヤフオクで3万6000円でゲット。
中古と言う話だけど、開けてみたら中身は新品っぽい。
箱は凹んだりして痛んでいるんだけど、中の本体やコード類の袋は開けた形跡がない。もちろん使った形跡もない。マニュアルも袋から出した後が無く新品のようだ。
どっかの在庫としておいてあったけど箱が傷んでしまってB級品になったとかそんなんだろうか。
とりあえずイェイ!!って感じだ。

で、早速設定・・・と思ったけど、このルータデフォルトでIPアドレスは設定されない。
よってネットワーク経由でTelnetしようにもIPアドレスが無いので接続できない。
その場合RS-232Cでシリアル接続し、設定することになる。
えー!RS-232Cなんてレガシーなインターフェイス使ったこと無いよ!!
ネットワーク管理者にとってRS-232Cで接続して設定とかは当たり前だろうけど・・・。


ルータにはMACアドレスは設定されているので、MACアドレスからIPアドレスを割り振るRARPを使えばIPアドレスを設定できるとのこと。
RARPでやってみるかと言うことでRTX1100をrarpdで設定する@Debianなどを参考にrarpdを設定してみた。

が、なぜかうまくいかない。設定したがTelnetで接続できなかった。
そこでもう寝なきゃと作業を中断したので、連休中に続きをしよう。
とりあえずパケットキャプチャしてRARPパケットが正しく飛んでいるかチェックせねば。
それがダメならRS-232Cで直接設定かな。

むむむ。いろいろいじってやってみるか。


あと家のUbuntuマシンを6.10から7.04にアップグレードした。
アップグレードしたらXが起動しなくなってちょっと焦ったけど、Xorgのログを見たらXorgの設定ファイルのフォーマットが正しくないよ!って怒られてたので見なおしてみた。設定ファイルの一番最後の行でエラーになっていたがおかしいところは特にない。最後の行の終わりに改行が必要なのか?と思い、改行して保存し直して再起動したら普通に起動した。
何だったんだろう・・・。


家に会社のサーバを置くことになったので、我が家にもう一本光をひいた。ビジネス向けの高いヤツだ。
そしてサーバにはUbuntuのServer Editionを選択。6.06のLTS(Long Term Support)だ。TLSは安定版として特別にサポート期間の長いバージョンで、6.06のLTSは2011年までサポートされる予定。無料なのにありがたやありがたや。
サーバのマシン名はneutrino(ニュートリノ)に設定。我が家のマシンには基本的に素粒子やそれ関連の名前を付けるようにしてる。銘々規則的なモノを決めておくとマシン名付けるときに悩まなくて良いので楽だ。

会社のサーバを置いたら俺の部屋に現在6台のマシンが・・・。たこ足配線しまくってるのにもうコンセントの空きがない!
電力消費量的にも限界だな・・・。もし火事が起こるとしたら可能性が一番高いのは俺の部屋だ・・・。ぬぬぬ。ま、このサーバは爆音なのでマシンのセットアップが出来たらサーバルーム(ただの空き部屋)に移動することになるだろうけど。

電力消費量的に考えて、これから購入するマシンはあまり電気を食わない構成にしていかなくちゃ・・・。

2007年04月24日

我が家の糞ルータ

現在、家のルータにNTTのMN8300を使っている。
こいつが相当なダメっこっぷりでイライラしっぱなしだ。
とにかく落ちる落ちる!
最近も落ちまくりで、外部から家のネットワークが使えなくてダメダメ。

スイッチとしての機能は使えるが、外からや中から外への通信が遮断される。またルータの設定画面も反応がない。家には各種サーバがあり、特にメールサーバに外部からアクセスできないとメールが配送されず、送信元に返ってしまう。コレはめちゃ困る。

さらにルータが原因かはわからないが通信が切れることも最近多い。
rainbowdevil.jpドメインの情報は手動でいちいちIPを設定しているので、回線が切れるとIPが変わってしまい、再度設定し直すまでrainbowdevilドメインでの通信が出来ない。普通はめったに切れることがないから手動でも問題なかったのだけど・・・。


やっぱ家庭用ルータは不安定すぎる!また低負荷時に安定してても高負荷時には耐えられないルータが多い。
MN8300も、ブログをクロールするプログラム走らせたらすぐにハングアップしてたし。
と言うことで業務用のルータを導入してみる。
ネットでいろいろ調べてみるとヤマハのルータRTX1100が評判良かったのでこれをヤフオクで買ってみた。

家庭用ルータによくあるWeb設定画面はこのルータには無い。(あることはあるけど簡易的なモノなので、やっぱりCUIで設定する事になる)
設定はTelnetでルータに接続してコマンドでって言うのがプロっぽい。Webインターフェイスなんて軟弱者が使うモノさっ。
テクニカルエンジニアのネットワーク持ってるのに業務用ルータの設定ひとつもやったこと無いとか恥ずかしいもんな。

あと数日で届く予定なので、届くのが楽しみだ。
いじりがいのあるおもちゃだろうから、いろいろ悪戦苦闘しながら設定しよう。

2007年04月22日

Vistaインスコ

VistaだとTV見れないと思ってたけど、今日確認したらVistaのドライバ出てたのでVistaインスコしてみた。

Vistaの第一印象は「使いづらいなぁ」って感じ。
エクスプローラー愛用者なのでエクスプローラーがダメダメになったのがツライ。
拡張子の表示などいろいろ設定したいんだけどエクスプローラーのメニューが無いから設定画面に行けないのですが・・・。たぶん操作方法がわかってないだけで、設定すれば使いやすくなるとは思うけどまだまだ勝手がわからず困る。とりあえずファイラ良いヤツ探すか。

TV見ようと思ったらプログラム起動するたびに「認識されていないプログラムがこのコンピュータへアクセスを要求している」と警告画面が出るのが非常にうざい。いちいち警告画面が出まくって、もぐらたたきのように警告ボタンを閉じないといけないのだけどこの機能はオフにする必要があるな。オフにするやり方を探さないといけないのか・・・・。はぁ・・・・めんどっちぃ。

スタートメニューもすべてのプログラムが全部出ずにスクロールするタイプに変わったので、全部のプログラムが一度に表示されない・・・。これも不便だ。
まぁVistaに何も求めていないので、Vistaに変えてもデメリットしか目に入らないことはインスコする前からわかっていたが・・・。

結論:Vistaはいらない子。

唯一XPに勝ってるのは画面が綺麗な事ぐらいか。
まぁそれもLinuxだとBeryl使って無料でVista以上に綺麗な効果が得られる。YouTubeの動画じゃ機能説明のために過剰なエフェクトかかってますが。

DellがVistaのプリインストールをやめてXPをプリインストールするというオプションを始めたのが理解できるなコレは。
個人的には無料のプライベートファイアウォールのZoneAlarmが使えないのが非常に痛い。
Vista付属のファイアウォールはインバウンドの通信はブロックしてくれるが、アウトバウンドの通信は放置なので強烈に危険だ。そんな穴だらけのファイアウォールに何の意味があるのか。

と言う訳でVistaを入れてみたわけだけど、個人的にはAeroによる透明感のあるUIに1000円ぐらいの価値しかVistaには見出せないな。
XPにAero搭載してくれたらそれで良いや。

と言う訳でVista入れた記念のデスクトップ写真
screenshot20070422.png


Vistaボロかすに言ったけど、きっとXPの使い方ではなくVistaの使い方というのを理解できたら「XPよりいいじゃん!」って感じると思うのでおとなしく使ってみる。
が、間違いなく"Vista Home Premiumに3万も出してVistaを買うならLinuxで良い"って言う意見は変わらないだろう。Ubuntu、マジオススメ

ちなみにVistaによるPCのベンチのスコアは以下のとおり。快適だが起動直後はHDDがガリガリ言ってちょと重い。ビデオオーバーレイが効かないからか、動画再生中にちょっと重い処理をすると動画が止まりがちになる。設定しだいで改善するかもしれないけど結構イヤ。
vistaBench20070422.png

2007年04月21日

Vista来た

2月頃Vista無料アップグレード付きXPを15000円ほどで買って、ようやくVistaのHome premiumが届いた。
アップグレードには送料などの手数料を支払わないとダメで、その代金を指定の口座に振り込んだんだけどなかなか「振り込まれた」と認識してくれなくてかなり呆れた。
どうやら途中で振り込む口座が変更になったらしく、古い口座に振り込まれたのを確認しなかったらしい。
ちなみに途中で振り込む口座が変更になったという通知は無かった。
なぜ振り込む口座が変わったのに気がついたかというと以下のような謎なメールが送られてきたからだ。
vistaupgrade.PNG

どうやらOutlookには編集履歴をメール本文に保持できるような機能があるようで、削除された文章や、追加された文章が見える状態になっている。
これを見ると口座番号が変更された様子がわかる。
ちなみにこのメールが送られてきた二日後に「メール誤送信に関するお詫び」と言うメールが来て編集履歴が残ったメールは至急削除しろと通知が来た。

そして「よくわからないが最初のメールで送られてきたXXXXの口座に振り込んであるから確認してください」とメールを書くと、ようやく「確認できた」とメールが送られてきた。ちなみに確認まで1ヶ月ぐらい放置プレイを食らったがお詫びの言葉は一切無かった。

MSアップグレードはどっかの会社に委託しているようで、その会社はモーダスリンクと言う会社らしい。ダメすぎモーダスリンク。使えなさすぎモーダスリンク。

で、Vista来たけどVista入れるとTVのキャプチャカードが動かなくなってTVがみれないんだよなぁ。
Vista来たけどVista導入はまだ先になりそうだ。


そして話は変わって、最近ニコニコ動画で銀魂見てる。
25話がおもしろいと聞いてちょっと見てみたんだけどはまってしまった。このカオスっぷりはすごいな。
最初2分近く静止画で、ドラマCD状態かと思えば神作画があったり。
話は「みんなでスキヤキ肉争奪戦」と言う壮絶にどーでもいい話なんだけど、先の読めない展開が最高だ。
登場人物一切知らない状態で見てもおもしろかったし、その辺はテンポが良いと引きつける力があるんだろうなぁ。アホな話を全力で描ききるスタッフに拍手だ。


まぁカオスっぷりはジャングルはいつもハレのちグゥに勝るもの無し。
ハレグゥDXがお気に入りだなぁ。
酒好きなハレのお母さんが妊娠したので、ハレがお酒を捨てようとしたけどグゥに騙されてお酒を飲んで暴れてしまう話。結構前のアニメだけど当時は死ぬほど笑ったw

またもやニコニコで、見れる人は限られてしまうけどハレグゥDX 第06話 好き好きおじいさんバーサーカーも壮絶に強力だ。このカオスっぷりは伝説級だな。

ハレグゥFINALは見てないけど、そこそこおもしろいという話も聞くからDVD借りてみようかな。

2007年04月18日

アメリカの銃乱射事件を受けて韓国の掲示板の反応

アメリカでの韓国人留学生による32人射殺事件を受けて韓国の掲示板の反応。
機械翻訳なので日本語が変なのは仕様です。

犯人は韓国係ではなく中国係です!!! 必読!!
まずは犯人が同胞ではなくて中国人だ、と幻を信じようとしている模様。

[ 速報 !!! ] [ 速報 !!! ] アメリカ聡気難事事件犯人は日本人Ishiiです ‾ !!!
謎の人物、石井登場。

ヤンキーは数千だけのインディアンを殺した. 韓国人はアジアを代表して 33人を殺した何が問題だ!
犯人を含め33人は少ないので問題ないと主張。

罪のない中国人を 100万名以上虐殺した戦犯国家がなんの話をしてもだめ.
いつの間にか100万人に増えていました。100万人と32人じゃ殺してないのと同じだね!問題ない!


もしゾスングフィが日本で虐殺をしたらゾスングフィはアジア最高の英雄になったはずだ!
チョッパリ をうって射殺したら英雄になったのに
日本人を殺せば満足する様子。チョッパリとは朝鮮語における日本人の蔑称。

日本人たちは弱虫でアメリカ人たち殺すことができないでしょう?????
むしろ誇らしいことのようだ。

日本人ガールフレンドが原因ですね
バージニア大学銃撃事件は日本人ガールフレンドのため
普段日本ゲームを楽しんで行ったことで明かされる.
韓国では悪いことは全て日本人のせい、と言うのは常識です。
ガールフレンドが日本人というのもどこから出てきた情報なのかは不明。おおかたいつもの妄想だろう。


以上、韓国人の典型ともいえる記事を抽出してみました。
韓国人もひどいがVIPPERな日本人も負けてない。
「V I P で や れ」とは誰も言わないのだろうかw


学校を舞台とした虐殺事件が多発しても銃規制には反対の全米ライフル協会。
さすがに32人殺害を受けて考えを変えるだろうか。
銃によって守られる安全より、銃により脅かされる安全の方があきらかに多いと思うんですが・・・。

今日は日本でも銃を用いた犯罪が多かった様子。
それでも銃が身近な存在ではないと言う日本は、まだまだ平和だと思う今日このごろ。

2007年04月17日

仮面Lisp

JavaScriptの代わりにCommon Lispを使ってWebページをあれこれするFirefoxの拡張Kamen Lisp

このページに仮面ライダーらしき人物がλポーズを取っている絵がある。
この人どこの人か知らないけど海外でも仮面ライダーは有名なんだろうか。絵を見ると最初の頃の仮面ライダーぽい?

確かにHENSIN!!と言うかけ声と変身時の独特なポーズは海外の(一部の)人々に人気のようで、YouTubeにアップされた日本の特撮物に外人がHENSIN!HENSIN!!ってコメントしてた。日本のアニメほどではないけどそれなりにファンはいるようだ。

2007年04月12日

肌荒れにチョコラBB

最近仕事が遅かったのと、不規則な食生活で肌荒れが酷かった。
にきび(ふきでもの、と言うべきか?w)がいくつも顔にできて痛い。
それと原因の一つに毎日飲んでいたチョコラBBが無くなったので、それを飲まなくなったのも大きな原因かもしれない。
飲まなくなって1週間ぐらいで肌荒れが酷くなった気がする。

と言うことで新しいチョコラBBを補充してきた。
チョコラBBピュア210錠ピュアだと何がどう違うのかはわからなかったけど、とりあえずピュアにしてみた。3000円以上する。高い。

で、飲んで1日たったらふきでものが明らかにマシになり治りかけているようだ。
チョコラBBすげーー!!!
やるなビタミン剤。あなどっちゃいけないビタミン剤。


話題は変わってソニー、32GBフラッシュ搭載/約859gの「VAIO type G」
おーー!ついにゼロスピンドルの普通のノートが出てきたな。でもすごい高い。32Gで+6万以上はまだまだプレミア価格か。

今仕事でVAIO-Uのゼロスピンドルを使わせて貰ってて、使ってるとHDDの無いありがたみが身にしみてわかる。HDDが無いと衝撃を与えても大丈夫だし安心度はかなり違う。動作も軽い。

今ノートPCはVAIO-TR2を使ってて、買ってそろそろ3年半たつんだけど、まだまだ現役だ。
PentiumM 1G、メモリ1Gだしまだ「重いなー」と感じることは無い。
だからまだ買い換える気持ちは無いけど、来年ぐらいSSDが安くなってきたら買うだろうなぁ。
今のTR2が1.4kgもあるから859gのノートは壮絶に魅力的だ。

これからノートPCはHDDからSSDにどんどん変わっていくだろうな。
これからのノートPCが楽しみだ。

2007年04月08日

LWJGLで日本語表示

テクニカルエンジニアの試験まであと1週間ですが、テストが近くなると部屋を片付けたくなる法則と同じように別のことをついつい考えてしまう。と言うことでJavaでのゲーム作成についていろいろ・・・・。

Javaで2Dゲームを作ろうとすると、Java2Dを使うかLWJGLのようなOpenGLを使うようなライブラリを使うことになる。LWJGLはゲーム用にジョイスティック使えたり音楽再生も楽そうなので良い感じなんだけど、英語環境で使うことしか想定していないので不便なこともある。他の人にとっては些細な問題かもしれないけど俺にとっては結構大きな問題だ。

それは何かというと日本語入力と日本語表示。のちのちチャットゲーやMMORPGを作りたいなぁと思って自分にとってはこれらは特に重要な要素になる。SwingでJava2D使ってゲームを作るのであればIMF(Input Method Framework)が使えるので、ゲームの画面内にチャットの入力部分を作成することができる。日本語表示にしても特に問題は無い。2Dをただ表示するだけなら、Java2Dでもかなり高速に描画できる。でも拡大縮小回転や透過を使うとなるとJava2Dではキビシイ。

Java2DはダメとなるとLWJGLになるわけだけど、こっちはこっちでいろいろ問題が・・・。
日本語表示に関しては、LWJGLはOpenGLなので描画するのは全部テクスチャになる。なので文字を出力するだけでもいちいちテクスチャ作成して・・となってややこしくなる。
と言うことで誰かが作ったLWJGL用文字列描画ライブラリ
Yet another glFont
このライブラリはフォントをビットマップに出力したものを用いて出力するタイプのもの。なので事前にフォントの全文字をビットマップファイルに出力する必要がある。その辺の出力は自動でやってくれるツールがある。記事に書いてあるけど日本語の場合はBitmap Font Generatorを使うとできる。

確かにこの方法だと綺麗に高速で文字が描画できて良いんだけど、日本語の場合は全文字のビットマップを作っていたらサイズがめちゃ大きくなる。さらに文字をビットマップに変換してそのファイルを再配布することになるのでフォントのライセンスも心配だ。

後は上の記事にも出てくるけど、Graphics2D使ってメモリに文字を描いて、そのデータからテクスチャを作成して画面に描画って感じか・・・。これも描画するたびに生成すると重すぎるので、文字ごとにキャッシュするようにしないとダメなんだよな。


日本語出力も問題多いけど、LWJGLでの日本語入力も大変だ。LWJGLはウインドウ自体がJavaのウインドウではないので、IMFを使うと言うことができない。一応AWT上でLWJGLを使うことができるので、IMFも使えそうだけど実際にやってみてないのでホントにできるかどうかは不明。さらにこの場合当然ウインドウのみでフルスクリーンにはできないだろう。(AWT使ってもフルスクリーンモードにはできるようだけど、その場合IMFが使えない予感)

ふーむ、LWJGLのおかげでJavaでゲーム作成はだいぶ楽になっただろうけど、海外製ライブラリと言うことで日本語入出力をしたいときはまだまだキビシイ。


C++&DirectXでやるとその辺一気に解決するんだけど、コードを書くのが壮絶にめんどい、特にサーバ。さらにオンラインゲーム用サーバがWindows用のみになってしまう。
クライアントはC++で、ゲームサーバはJavaでと言うのもありかなぁ・・・でもあまりやりたくない。

C++でちょこっとゲームは作ろうとしてみたけど、やっぱC++はめんどくさいのでモチベーションの低下が激しいw
↓テスト的に作ってみたオンラインRPGになる予定だったプログラム(C++とDXライブラリを使用) サーバはC++でSocket使用(DirectPlayはいろいろダメっ子らしいので)
testgame1.PNG
やっぱJavaで作りてぇぇぇ!!

派手な画面効果と透過処理は捨ててJava2Dでゲーム作るか・・・。まずは画面内での日本語入力だな・・・。と言いつつ他に優先度の高い"やりたいこと"があるのでいつできるかは不明だけど。

2007年04月04日

Tomcat6でCometサポート

最近Tomcatの最新版が出た。
そして新機能としてCometのサポートがある。
記事は以下。
Tomcat 6の実力を早速試す - 移行するべき? その時期は?

CometはAjaxみたいに概念に名前を付けた感じの物で、簡単に言うと「HTTPを使用してプッシュ型のデータ配信を行う仕組み」の事。
今まではWebチャットのようなリアルタイム性が求められるアプリケーションでも、Ajaxを用いて10秒ごとなどにポーリングを行っていた。つまりこの場合平均5秒のタイムラグが出る仕様だったわけだ。ところがCometを使うと、サーバ側からのイベントとしてクライアントに通信できる。そのためプッシュ型のデータ配信が出来、チャットなどもリアルタイムに発言できるようになる。(Comet実装として有名なのはLingr、Googleチャットもそうなのかな?)

そんな今までの常識を覆すようなCometはどのように実装されているのかというと、かなり強引な手段を使っている。
1、ブラウザはとりあえず何もなくてもAjaxなどを用いてWebアプリケーションサーバにリクエストしに行く。
2、WebサーバはHTTPリクエストに応答せず、そのまま放置する!
3、Webサーバがデータをクライアントに送信したいタイミングで、放置していたHTTPリクエストにデータを含めて応答する。
4、ブラウザはイベントを受け取ったので、すぐさま1に戻り再びリクエストを投げる。
という感じ。今まではHTTPのリクエストがあれば、すぐに応答するという常識があったわけだけど、それを放置し任意のタイミングで応答するって言うのでプッシュ型を実現してる。う~ん、発想の転換。

しかし従来のサーバは、1コネクションに対し1スレッドを割り当てるため、コネクションが多くなると負荷が大きくなる問題があった。そんなにスレッドが多くなるのは想定してないのか、Linuxでも数千スレッドになるともういっぱいいっぱいとかどっかには書いてあったな。そのため1スレッドで複数のコネクションの面倒を見るようなサーバではないと対応できないらしい。

Tomcatは5までは対応できなかったけど、6から対応と言うことでCometを使いやすくなるのは良いことだ。一部のAjaxフレームワークでもComet対応されつつある。
そのうち時間が空いたら俺もCometつかって簡単なチャットでも作ってみようかな。

2007年04月その他のエントリー