2005年09月19日

トラブル覚え書き

いやぁ、チャットに取り付けたAjaxもどきな参加者カウント機能、うっかりしてIEでのテストしてなかったよ(笑)

IEでやったら二回目以降が動いてないでやんの(笑)

詳しく調べなかったけど・・・なんだろ、キャッシュでも参照してるのか、リクエストの呼び出し自体は成功しててもサーバに呼び出しが来てなかった。

対応策も詳しく調べてないんだけど、メソッドをGETからPOSTにして、なおかつ今までnullを渡してたsendに対しててきとーに文字列投げたら無事に継続して動くようになった。

これ、人によってはハマっちゃいそうなトラブルだから、ここに書いておく意味はあるかもね。

ついでに、サーバへの呼び出し間隔を3分からさらに広げて10分にしときました。onunloadによる参加取り消しの通知に失敗すると、最大で10分間幽霊が残ることになりますが、そんなに沢山人が来るサイトじゃないから10分なんてどうでもいい数字です(笑)
posted by Jack at 02:52| Comment(0) | TrackBack(0) | Web系 | 更新情報をチェックする

2005年09月18日

でも、よく考えてみると・・・

さて、そういうわけで前の記事の後ろで心配していたCGIの呼び出し間隔をさらに広げて3分間隔にしてみました、まあ、大した差はないですがこのくらいなら参加人数の少ないうちのサイトではまったく問題ないレベルです。

でもさ、ちょっと考えてみたのですよ。

今回はAjaxと呼ぶにはあまりにも中途半端なプログラムなのでサーバー側へのリクエスト送信の回数がだいぶ少ないですが、普通にAjaxっていうと、もっと頻繁にサーバにリクエスト投げるほうが多いんじゃないかと思います。Google Mapsなんてレスポンスの容量も半端じゃないレベルだよね。

いや、もちろんそんなに頻繁に投げなくてももっとゆったりしたAjaxというのもありえるとは思いますけれど。

恐らくはサーバへの負荷を考えてのことですが、私の使っているレンタルサーバではウェブチャットの設置が禁止されています。

でも、Ajaxって使い方によってはウェブチャットをはるかに超える高負荷になるだろうことは想像に難くないですよね。

やがてはAjax禁止を明記したレンタルサーバってのも出てくるのかなぁ、とちょっと思った。
posted by Jack at 14:17| Comment(0) | TrackBack(0) | Web系 | 更新情報をチェックする

Ajaxの応用?

うちのサイトのチャットをちょこっと改造してみました。
とはいうものの、チャット自体はレンタルのJavaアプレットなので、あのプログラム自体は俺が直接手を入れることはできません。

そこで、あのチャットの置いてあるhtmlファイルの方に細工したわけです。
詳しくはソースを見てしまえばわかりますが、あのファイルを読み込むとonloadイベントでXMLHttpRequestを使用して、うちのサーバ上のCGIを呼び出します。
CGIは単純に、呼び出された時間とIPアドレスをファイルに記録します。そのときファイル中に記録されたレコードの中で、一定時間(今のところ130秒)を過ぎたレコードがあれば削除されます。
また、onloadイベントのイベントハンドラではsetTimeoutを使って一定時間(今のところこっちは120秒)ごとに同じCGIを呼び出します。

ウェブチャットなんかでよくある、入室者の管理ですね。
ただ、入退室を検出できるのはアプレットのみなので、入室していないROMのメンバーも同じようにカウントせざるを得ません。それでも、トップページを見ただけで、今チャットを見てる人がいるってことがわかれば、チャットに入ってみようかなって気にもなりやすいでしょ?

JavaScriptが動かない環境とかでは動作しないわけですが、元々この手のプログラムはそんなに精度が高い必要はないので気にする必要はありません。

そして、サイトのトップページではSSIを使って、ファイルに記録されたIPアドレスの中から一定時間(書き込みの時と同じ130秒)を経過していないものの数をカウントして、現在の参加人数としてトップページに表示します。

ついでにonunloadイベントも捕まえて、こっちでもやっぱりXMLHttpRequestを使用します。こっちでは自分のIPアドレスが記録されていれば即座に削除、ということをやって、退室者の処理とします。

まあ、unloadが取れるなら定期的にCGIを呼び出し続ける必要なんてないのでは?とも思うわけですが、手元のFirefoxでは他のページに遷移させる場合はonunloadが動いたものの、ブラウザを閉じる場合には動かないことがあるようでした。

onunloadが動作し損ねると、ずっと参加者がいるまんま、ということになってしまいます。

それではまずいので一定時間を経過した参加者を除外するわけですが、除外するのなら定期的に参加を確認しなければいけません、このあたりの考え方自体は昔からウェブチャットでやっている考え方と一緒ですね、必ず退室ボタンが押されるとは限らないので定期的に入室者を管理しなければならない、という。ウェブチャットの場合はログのリロードがあるのでそこに混ぜ込めば済んでしまいますが。うちのシステムではチャット本体は別のプログラムなので入室者管理専用にプログラムを呼び出さなければならないという。そういう話です。

というわけで、今回初めてXMLHttpReauestを使ってみました。

レスポンスの処理すらしていないので、これをAjaxと呼ぶのは無理があるでしょう。実際にはAjax(Asynchronous JavaScript and XML)といってもXMLを使用しないケースは多いようですが、レスポンスをまったく処理しないというのはさすがに違う気がします。

でも、とりあえずリクエストの送信自体は実に簡単に楽しく作れましたよ。

今回の機能、問題としてはウェブチャットと同じように定期的にリクエストを飛ばさなければいけないのでサーバの負荷が心配になりますが、ウェブチャットのようにログを取得したりしているわけではないので、転送量的には多少マシだと思います。さらには、参加者数を把握するだけなのでそんなに短時間に頻繁にリクエストを飛ばす必要もなく、現在設定した120秒ってのは標準的なウェブチャットのリロード(30秒くらい)の4分の1の頻度ですから、まあマシだとは思います。

とはいえ、ほとんどの場合onunloadで退室を検出できるならば、呼び出しの間隔はもっと長くてもいいかもしれないと、これを書きながら思いました(笑)

んー・・・あとでもうちょっと長くしときます(笑)
posted by Jack at 14:06| Comment(0) | TrackBack(0) | Web系 | 更新情報をチェックする

2005年09月01日

EdMax -> Thunderbird

さて、EdMaxからThuderbirdへのデータの移行についてちょっと調べてみました。

EdMaxって使ってる人はたまに見かけるけど、やはりメーラーとしてメジャーな方ではないので、正直ちゃんと移行できるかちょっと心配ではありました。

でも、簡単にできました。

こちらのブログで、移行方法があっさり載ってました。書いてある通りの方法ですんなり移行できちゃいました。

以下俺の備忘録のために、俺の一番知りたかったとこだけ引用させてもらっちゃいます。
ブログの記事ってそうは消えないもんだと思うけど、念のため。

#添付ファイルも一緒に移行したい場合は、EdMaxでエクスポートする時の形式を、「再構成して保存(添付ファイル付き)」にします。 但し、この場合、上記の方法でインポートすると文字化けするので、できたメールボックス(*.mbx)を、エクスプローラを使ってThunderbirdのアカウントフォルダに直接放り込んでやるとフォルダとして認識されます(^^) 詳しい人には、こっちの方がお手軽かも。

とりあえずここに書いてあることだけやればメールが添付ファイルごと引っ張ってこれます。

ちなみに今まで使ってたEdMaxのフリー版、なんか一部の添付ファイル(Yahooメールとかから来た奴とか)のファイル名がおかしくなったりしてた(実は移行の動機はこれ)んですが、こうやって移行してあげたら、ちゃんとしたファイル名が見えてました。ファイル名の情報そのものは失われてはいないのね。

まあ、調べるのも面倒だったし一度Thunderbirdを使ってみたかったのでとっとと移行しちゃいましたが、本当はなんかEdMaxにも対策方法があるのかもしれませんけど。

でも、動作的にはThunderbirdよりEdMaxの方が軽い感じでしたよ。Thunderbirdはデザインがかっこいいので使い始めの今のうちは使っててちょっと楽しいですが。非力なマシンの場合移行はちょっと考えた方がいいかもしれません。

Mozilla系といえば、Firefoxも、Phoenixの頃はとっても軽かった気がするんですが、最近のFirefoxはそうでもないような・・・バージョンアップしてるうちに重くなって来ちゃったのか、それとも単純に、慣れちゃったんですかね?
posted by Jack at 01:02| Comment(4) | TrackBack(0) | その他技術系 | 更新情報をチェックする

RSSでもっと遊べないか?

職場のメーラーをEdMaxからThunderbirdに変えてみた。データの移行方法とかまた後で記事まとめます。

で、Thunderbirdって、RSSリーダも兼ねてるんですね。

んでもって、友達のブログを試しに読み込んで眺めてみてたら、ちょっと思いついた。

Jack's Roomの作品のRSSとか作ったら面白いだろうか?

という話である。

Thunderbirdその他のRSSリーダで詩が読めるってのは別にそんなに必要なことではないかもしれないけど。例えばRSSを生成できる詩の投稿システムを作成して配布してみて、mixi用に使ったRNAを組み合わせてみると、複数サイトに投稿された詩をまとめて読むことができたりしそうだ。

もっとも、詩の一個一個を全部配信してるとかなりなサイズになりそうなのが問題ではある。

でも複数サイトによる連携って一度は挑戦してみたいんだよねぇ、最近すっかり止まってしまっている新システム開発計画「j2プロジェクト」ですが、再開の時にちょっと、RSSについてまじめに検討してみようと思いますです。
posted by Jack at 00:47| Comment(0) | TrackBack(0) | Web系 | 更新情報をチェックする

広告


この広告は60日以上更新がないブログに表示がされております。

以下のいずれかの方法で非表示にすることが可能です。

・記事の投稿、編集をおこなう
・マイブログの【設定】 > 【広告設定】 より、「60日間更新が無い場合」 の 「広告を表示しない」にチェックを入れて保存する。


×

この広告は180日以上新しい記事の投稿がないブログに表示されております。