Gauche > Archives > 2009/05/13

2009/05/13 00:16:21 UTCとおる。
#
あら、Safari はだめかな。document.forms とかは環境依存かも。
2009/05/13 01:39:06 UTCshiro
#
getElementByIdって標準? ならそっちの方が確実かも。
2009/05/13 02:13:38 UTCとおる。
#
getElementById はたしか DOM のメソッドだから標準のはず。
#
http://practical-scheme.net/gauche/man/?l=jp&p=d
#
javascript:(function(t){t.value=t.value.replace(/<<gaucheref:(.*)>>/,"http://practical-scheme.net/gauche/man/?l=jp&p=$1")})(document.getElementById("post-text"))
2009/05/13 02:22:12 UTCえんどう
#
<<gaucheref:iota>>
#
だめです。orz
2009/05/13 02:23:13 UTCとおる。
#
あれ、書き込み欄でエンターを押す前に、JavaScript を実行しています?
2009/05/13 02:23:21 UTCえんどう
#
<<gaucheref:iota>>
#
アドレスバーに入力して評価させるんですよね?
#
それともブックマークしなきゃだめなのかなあ
2009/05/13 02:24:08 UTCとおる。
#
はい。えっと、まず、Text: に <<gaucheref:hoge>> と書いて、そのまま送信しないでおいて、
2009/05/13 02:24:30 UTCえんどう
#
http://practical-scheme.net/gauche/man/?l=jp&p=iota
2009/05/13 02:24:34 UTCとおる。
#
それから、アドレスバーに javascript をいれて、ENTER。
2009/05/13 02:24:35 UTCえんどう
#
あ、変わった
2009/05/13 02:24:38 UTCとおる。
#
あ、できた。
2009/05/13 02:24:41 UTCえんどう
#
そういう手順なのか
2009/05/13 02:24:55 UTCとおる。
#
手でやるのはちょっとややこしい。
2009/05/13 02:25:10 UTCえんどう
#
一度評価させておくとtextareaを監視してくれるのかと妄想した
2009/05/13 02:25:31 UTCとおる。
#
あー、そこまで賢くないです。単に replace で置換しているだけ。
2009/05/13 02:25:45 UTCえんどう
#
りょうかいしました
2009/05/13 02:26:28 UTCとおる。
#
でも監視するようにもできるかな。onchange を監視するのも手かも。
2009/05/13 02:26:39 UTCえんどう
#
addEventListnerとかすればできるのかなあ
2009/05/13 02:27:16 UTCshiro
#
Chaton自身もkeypressかなんかを監視してるのでぶつかると厄介かも
2009/05/13 02:27:26 UTCとおる。
#
ですね。
2009/05/13 02:28:10 UTCshiro
#
Bookmarkに入れれば、[textboxに入力]->[Bookmarksから選択] の2ステップなのでそんなに面倒ではないですね
#
http://practical-scheme.net/chaton/doc?Tools こんなページ作って便利情報を集めて行くことにしました
#
おっと、全角空白がURLの区切りとして認識されないぜ
#
http://practical-scheme.net/chaton/doc?Tools
2009/05/13 02:29:38 UTCとおる。
#
おお。いちばんのり。
2009/05/13 02:36:25 UTC(び)
#
http://izismile.com/2009/05/12/loooooooongcat_40_pics.html
2009/05/13 02:36:35 UTCshiro
#
220.156.x.xさん、どうもやっぱりcidの引き回しがうまくいってないみたいです。
#
Chaton側の問題かも。何をやろうとしているか教えていただければこっちもいじれるかもしれません。
2009/05/13 02:37:29 UTC(び)
#
長い猫ネタ。えんどう家の猫なら対抗できる
2009/05/13 02:39:50 UTCshiro
#
今の状況だと、220.156.x.xからのアクセスの度に新しいユーザの入室とみなされて、ユーザ数変動のイベントがブロードキャストされるのです。
2009/05/13 02:48:26 UTCkazuya_a
#
私のことでしたか、ずっとROMっていたので気付きませんでした
2009/05/13 02:50:04 UTCshiro
#
いちおう、認識できないcidでリクエストが来た場合、新しいcidをこちらで割り当てて返すようにしているんですが、どうもそうやって割り当てたcidが次に来た場合にまた新しく割り当てちゃってるので、chaton-viewerのバグかも。
2009/05/13 02:50:05 UTCkazuya_a
#
Safari 3.2.1を使用してただ見ているだけなのですが、誰かが発言すると1つの発言が何度も表示される状態でした。
2009/05/13 02:50:35 UTCshiro
#
あれれ、ということはこっちのjavascriptがおかしいんですね。
2009/05/13 02:50:57 UTCkazuya_a
#
一応ページのリロードをしたら直ったみたいです。
2009/05/13 02:51:03 UTCshiro
#
Ajaxインスタンスがいくつも同時に走っちゃってるのかなあ。
#
確かに今はアクセスが正常になっています。
2009/05/13 02:51:49 UTCkazuya_a
#
はじめから何度も表示されることはなかったです。いつの間にか何度も表示される用になってました。
2009/05/13 02:52:07 UTCshiro
#
何かのタイミングでおかしくなるようですね。
#
むむ、Windows版は3.2.2からしかダウンロードできないみたいだなあ
#
watchdog timerが悪さをしているのかもしれない。
2009/05/13 02:54:58 UTCkazuya_a
#
あー、またなりました
2009/05/13 02:55:24 UTCshiro
#
確かに重複して接続しています。
2009/05/13 02:55:56 UTCkazuya_a
#
スクリーンショット送った方がいいですか?
#
さっき右下の表示が一度Connecting...になったのでそれが原因かもしれないですね
2009/05/13 02:57:07 UTCshiro
#
Ajax接続が重複していれば発言が重複して挿入されるので、スクリーンショットは無くても大丈夫です。
2009/05/13 02:57:29 UTCkazuya_a
#
とりあえず別のブラウザから見るようにします
2009/05/13 02:57:56 UTCshiro
#
すみません。
#
てっきり誰かがプログラムで発言をモニタしようとしてるのかなとか思ってました。
#
同一IPから複数接続に来てたので。
2009/05/13 03:02:39 UTCkazuya_a
#
とりあえずFirefoxから接続し直しました
2009/05/13 03:03:49 UTCshiro
#
待てよ、もしかして。モバイル環境とか、ネット接続が不安定ということはありますか?
2009/05/13 03:03:51 UTCとおる。
#
あ、HTTP ヘッダみれば一応ブラウザの種類がわかるから(偽装してなければ)、動作の傾向がつかめるかもしれませんね。
2009/05/13 03:04:16 UTCshiro
#
ですね。今ヘッダはログってないや。
2009/05/13 03:04:30 UTCkazuya_a
#
あーまたなった
#
多分ルーターが不安定になってるかもしれません。安物なので…
2009/05/13 03:05:46 UTCshiro
#
これは複数接続防止の何かをこっちのjavascriptに入れるべきですね。
2009/05/13 03:05:53 UTCkazuya_a
#
自動的に再接続されるとなるっぽいです。(またConnecting...)ってでたので
2009/05/13 03:06:35 UTCshiro
#
Firefoxでつなぎ直してから8分くらいでConnecting...が出ましたか?
2009/05/13 03:06:53 UTCkazuya_a
#
たぶん、それくらいだと思います
2009/05/13 03:06:56 UTCshiro
#
もしそうならwatchdog timerだ。
2009/05/13 03:07:19 UTCkazuya_a
#
あ、8分じゃないです。
#
kazuya_a
#
とりあえずFirefoxから接続し直しました
#
この発言から少したったくらいです
2009/05/13 03:08:03 UTCshiro
#
ああ、2分くらいですね。じゃあtimerじゃないな。
2009/05/13 03:09:41 UTCkazuya_a
#
ルーターが不安定なせいかもしれないのでルーター再起動して来てみます。
2009/05/13 03:10:09 UTCshiro
#
お手数かけてもうしわけないです。こっちでも対応を考慮中。
2009/05/13 03:17:52 UTCkazuya_a
#
再起動してきました。
2009/05/13 03:22:59 UTCshiro
#
むむ。今度は別のIPから4重に接続が…
2009/05/13 03:23:37 UTCkazuya_a
#
また、なってました
#
ページをリロードするとすぐつながるのに、「connection lost」->「Connecting..」だと再接続までかなり時間かかってます。
2009/05/13 03:25:41 UTCshiro
#
そこは5秒から15秒程度のディレイをわざと入れてあります。
2009/05/13 03:25:53 UTCkazuya_a
#
なるほど
2009/05/13 03:34:54 UTCshiro
#
原因は不明ですが、確かにそちらからのcomet接続を待たせている間に、新たなcomet接続要求が来ます。request uri中のキャッシュ避けタイムスタンプが違うので、
2009/05/13 03:35:34 UTCkazuya_a
#
今別マシンから接続しているのですが、また発生してしまいました。
2009/05/13 03:35:45 UTCshiro
#
javascriptレベルで再送がかかっている(fetchContentが重複して呼ばれている)のは確かなんですが、なぜそうなるのかはまだわかりません。
2009/05/13 03:43:20 UTCえんどう
#
http://growl.info/documentation/developer/
#
Apple Script,Java,Perl,Python,Tcl,Ruby
#
GaucheでGrawl binding書こうと思ったらCarbon使った方がいいのかな?
2009/05/13 03:55:28 UTC(び)
#
c-wrapperがObject-Cブリッジできるから、c-wrapperからCocoa呼んじゃえば?
#
Objective-C
#
Object-Cって何だ(笑)
2009/05/13 03:57:53 UTCshiro
#
ああわかったかも>多重接続。Firefoxでは、comet接続が切れた時になぜかonSuccessハンドラがまず起動され、それからonExceptionハンドラが起動される
#
Safari4は接続切れを検出できないのでわからないけど、Safari3がFirefoxと同じだとしたら説明がつく
2009/05/13 04:05:37 UTCshiro
#
「本当に」接続が切れた場合、onSuccessハンドラのjsonにはnullが渡ってるので、この処理は今までどこかで中断されていて気づかなかった。でも経路不安定による接続切れの場合、何らかのデータが入っていてonSuccessハンドラからのcomet再リクエストまでいっちゃうのかもしれない。そうなるとonExceptionハンドラからの再接続と、重複してcometリクエストが張られることになる。
2009/05/13 04:12:32 UTCshiro
#
しかしこの仮説が正しいとすると、どうやって切断を検出すればよいのだろう
2009/05/13 04:22:07 UTC(び)
#
Heart Beat?
2009/05/13 04:24:42 UTCえんどう
#
http://www.moongift.jp/2008/05/growl_for_windows/
#
Grawl for Windowsですと
2009/05/13 04:25:46 UTCshiro
#
今でも5分に一回はやりとりしてるんで、それが受け取られない=切断、とみなすのはwatchdog でサポートしている。
#
でもそれだと切断検出に数分待たないとならない。
#
切断検出を早めるためにheartbeatのペースを短くしたら、ほとんどpollingと同じになってcomet使ってる意味がなくなる。
2009/05/13 04:27:25 UTC(び)
#
確かに
#
難しいところですね
2009/05/13 04:28:43 UTCえんどう
#
Lingr mo
#
かなり時間が経ってから切断されたような気がする
2009/05/13 04:30:09 UTCshiro
#
firewallとかproxyのレベルでタイムアウトして切断されるケースもあるから、いずれにせよonSuccessハンドラでもって本当にサーバから返事があったのかどうかのチェックは必要だなあ。
2009/05/13 04:32:43 UTCえんどう
#
http://growl.info/documentation/developer/protocol.php
#
こっちのがよいかも
2009/05/13 05:05:41 UTCえんどう
#
http://growl.info/documentation/growlnotify.php
#
コマンドラインから使える
2009/05/13 07:28:39 UTCえんどう
#
nobsun来た?
2009/05/13 07:32:07 UTCshiro
#
ああわかった。Firefoxで切断時にonExceptionが上がっていたのはAjaxオブジェクトが上げていたんじゃなくて、onSuccessハンドラが空のjsonパケットを処理しようとして失敗して例外をあげてたんだ。なるほどそれなら説明がつく。
#
onSuccessの中でレスポンスを調べるのが正しい方法ということだな。
2009/05/13 07:52:53 UTCshiro
#
重複リクエスト対策を入れてみた。さてどうなるか。
2009/05/13 07:57:59 UTCkazuya_a
#
テスト
#
こんどは再接続されても大丈夫っぽいです
2009/05/13 07:59:09 UTCshiro
#
先ほど、(多分)kazuya_aさんの方から重複リクエストが来ていました。しばらく"Connecting..."のままだったんじゃないかと思います。
2009/05/13 07:59:38 UTCkazuya_a
#
はい、Connection Lost->Connecting...を数回繰り返していました。
2009/05/13 08:00:35 UTCshiro
#
実はその間、最初に張ったcometコネクションは生きているので、そっちのcometコネクションに正常なリプライが渡った時点で正常な状態に戻ると思います。
#
本来は重複検出した時点で正常状態に戻すサイクルに入るともっと良いのですが、とりあえずはこれで異常状態のままになることはないかなと。
2009/05/13 08:01:49 UTCkazuya_a
#
なるほど
#
私の方でConnection Lostが起きるのはpolipoというProxyサーバーソフトを経由させているかもしれません。
2009/05/13 08:03:50 UTCshiro
#
それはありえますね。cometで待っている間は通信が発生しないので、proxyにとってはサーバが死んでいるのと見分けがつかないですから。
2009/05/13 08:20:30 UTCkazuya_a
#
proxyサーバーの設定をいじったので今度は重複リクエストを送るようにならなくなったと思います。
2009/05/13 08:27:22 UTCshiro
#
Cometリクエスト受け取った後、ヘッダだけでも先に送り返した方がいいのかなぁ。
2009/05/13 08:38:23 UTC(び)
#
Content-Lengthの値が検討つかないんじゃないですか?
#
見当
2009/05/13 08:51:46 UTCnobsun@2F
#
到着
2009/05/13 08:52:18 UTC(び)
#
うぃ
2009/05/13 14:33:50 UTCえんどう
#
http://growl.matf.de/
#
これをダウンロードして読んでみる。
2009/05/13 20:02:13 UTCとおる。
#
ぼくも以前 polipo をつかっていました。Lingr の時はとくに問題なかった気がしますが、実は重複してつないでいたのかも。
#
ヘッダを先に返す場合、200 を返したあとで、処理の途中でサーバがこけると、おかしなことになりませんかね。
2009/05/13 20:06:10 UTCshiro
#
Lingrはそのへんしっかりやってたんじゃないでしょうか。
2009/05/13 20:06:23 UTCとおる。
#
いやでも、comet じゃなくても大きなファイルのダウンロードの途中で回線が切れたりすることは考えられるから、いいのかな。
2009/05/13 20:07:41 UTCshiro
#
サーバがこける問題は、エラーをどのレイヤで出すかってことになるので、httpのレベルでは200を返してアプリケーションレイヤでエラーにするってのもありでしょう。
2009/05/13 20:12:12 UTCshiro
#
proxyのタイムアウト問題は、クライアントごとに状況をモニタしてadaptiveにheartbeat rateを変えればいいんじゃないかと思う。ちゃんとしたサービスにするにはそういう細かいところの造り込みが大変だねえ。
#
まあ再現方法がわかったのはありがたい。
2009/05/13 22:42:25 UTCえんどう
#
$ growlnotify -t 'title' -m 'ほげ'
#
おお。とりあえず通知はこれでいいや。
2009/05/13 22:48:52 UTCえんどう
#
$ growlnotify --image ~/Downloads/chaton-room-gauche.gif -t 'Chaton Gauche' -m 'うぃっす'
#
アイコンもおけー
2009/05/13 23:02:52 UTCえんどう
#
クライアントはchaton.jsと同じ事をやれば良いのでしょうか
2009/05/13 23:04:02 UTCshiro
#
いまAPIつくってるからまってて
2009/05/13 23:07:38 UTCえんどう
#
了解っす
2009/05/13 23:53:04 UTC(び)
#
http://www.yakugo.com/WebHint/Quick.aspx
#
ローカルで使ってるMac OS XのDictionalアプリよりもレスポンスいいかも
2009/05/13 23:53:48 UTCshiro
#
軽いねぇ。
2009/05/13 23:54:12 UTC(び)
#
しかし、「健康」って入力した時、一覧に「健康上/けんこううえ」ってのが出ちゃうのはどうなの(笑)
2009/05/13 23:56:52 UTCとおる。
#
POP 辞書のところが作ってるんですね。
#
MONO でできてるのか。
2009/05/13 23:59:02 UTC(び)
#
ほー
#
MONOで作った実用サービスって初めて見た