read.cgi 2006―JavaScriptはCGIの夢を見るか
レス数が1000を超えています。これ以上書き込みはできません。
セキュリティー上、ファイル書き込み不可な仕様だから無理
phpで殺れ ルトガー・ハウアーは出てきませんね、おじゃましましたー datファイルを取得というと勘違いされがちなんだけど、決してこれは2chブラウザの代替ではない。
read.cgiの代替(改良)である。 今までの dat と互換性を残すとすると、デフォルトが
javascript版になった場合、
http://qb5.2ch.net/test/read.cgi/operate/1153819270/
で表示されるのがjavascript版になると。
そして、今使われている read.cgi も残すとすると、それは
別のURLになるのかな。
もし、javascript版を別のURLにして、それをデフォルトにすると
専ブラの仕様変更が必要になる場合があるのかな。 javascript版もdat読み行ってるだけだからなんも問題ないんじゃないの? >>15
JavaScriptが使えれば何の問題もない。
・・・DSブラウザからだとちゃんと動くんだろうか? このプロジェクトのきっかけ
http://qb5.2ch.net/test/read.cgi/operate/1153615149/775,827,843
775 名前:ひろゆき@どうやら管理人 ★[] 投稿日:2006/07/25(火) 04:34:06 ID:???0 ?BRZ
おいらはブラウザ派なのですな。
javascriptだけで、read.cgiが実現できるんじゃないかと、
前から思ってるんですが、誰か試してみないすかね。
827 名前: ◆MUMUMUhnYI [sage] 投稿日:2006/07/25(火) 13:42:07 ID:q+wYsp2i0 ?BRZ
(略)
>>775
まったく同じことを考えているです。
2ちゃんねるからは、dat と subject.txt を転送するだけにしたいと。
こう言っておくと、あの某 saita.ma 方面の超人的な人が、
何か考えてくれるかもしれないかもしれないなぁ、とか。
というか、>>811 おー。すばらしいです。
ぜひ、ぜひ。
read.cgi の負荷がきれいさっぱりなくなるかもしれないって考えただけで、
胸のときめきを感じます。
843 名前: 株価【950】 ▲ ◆cZfSunOs.U [sage] 投稿日:2006/07/25(火) 15:16:52 ID:MjMtyIbZ0
まぁ http://sunos.saita.ma/leaflet.html なんかは,>>775 みたいなことを考えてた時に作ったわけですがw
んで,http://sunos.saita.ma/read-js/test/read.html ってのをこしらえてみますた.
http://sunos.saita.ma/read-js/operate/dat/ のように dat がある時,例えば
http://sunos.saita.ma/read-js/test/read.html/operate/1153615149/ のように使う,と...... 今のところの問題点
・文字化けや表示できないブラウザ等がある
表示できないブラウザは従来方式に切り替えれば対応可能
・表示速度がマシンによって遅くなる
重い部分をクライアントではなく鯖側に持って行けば解決可能?
こんなところかな? >>19
「重い部分」というのは主に整形処理であって、それはread.cgiが行う処理の
大半でもあるという罠 >>19
究極的にはAASみたいに画像表示にすればフォントの問題も解決しそうだけど
無理か AASって素人目には負荷すごそうなんだけど
どうにかならんのか? さて、.htaccess 的にはどうすればいいのかしら。 < dso に入れる場合 <Files read.cgi>
AcceptPathInfo On
ForceType text/html
SetHandler default-handler
</Files>
<Files *.dat>
Header append Cache-Control max-age=5
AddDefaultCharset Shift_JIS
ForceType text/plain ←2chの今の設定によっては不要
</Files>
どうあがいてもIE6だと文字化けする、が俺の見解。 今の状態でdatファイルは text/plain になってるから
ForceType text/plain
は要らないですかね
text/○○ じゃないと AddDefaultCharset Shift_JIS が反映されないんで まぁ,JavaScript の文字列処理は Unicode 前提ってことなんでしょうねぇ...... >>27
こんなのも試してみたんですが
http://nurucom-archives.hp.infoseek.co.jp/digital/escape-codec-library.html
どうしても、Shift_JISのdatファイルを無理やりまずUTF-8として読み込まなきゃいけないんですが
そのときにUFT-8的におかしなデータを?に変換してしまうみたいで。 >>28
ですね。
なので、>>27 しかないのかなと。 304 Not Modified が返ってきた時点で文字化けするんで、
これをやれば文字化けしないんでしょうけど(試してません)。
http://qb5.2ch.net/test/read.cgi/operate/1153615149/904
904 動け動けウゴウゴ2ちゃんねる [sage] 2006/07/25(火) 17:30:30 ID:5p+KTVNq0
dat適当に取得するスクリプト書いて、IEで軽く試してみた。
xmlhttp.setRequestHeader("If-Modified-Since", "Thu, 01 Jun 1970 00:00:00 GMT")
を、追加したらいつでも最新を読み直すようになったよ。
アレだけどw >>29
うーむ。
センス悪い方法としては mod_filter + mod_proxy あたりを使うんですかね。
/板名/dat/*.dat は生だが、
/板名/dat_uta8/*.dat を読むと、上記を mod_filter が UTF-8 にコンバートしてから、
クライアントに渡すとか。 センス悪いというか、そんなに悪くないのかな。
ちょっとコスト上がりますが、少なくとも read.cgi で表示するための
整形処理するよりは、負荷低いはずだし。
で、mod_cache とかが*うまく*動けば、一個コード変換したものは
キャッシュされるようにできるかもしれないし。 で、JavaScript 化で得られるメリットを考えたら、
コード変換のコストは、reasonable だと思ですね。
結局、単なる決められた数値演算に過ぎないし。 >>16
Opera8で動くから、
Opera8ベースを使ってるDSブラウザなら余裕だと思う >>37
まだ、スタート地点に立ったばかりです。
ほんとの苦労は、これから、これから。
で、これ、どう思いますか?
【にがうり】 雪だるま作戦のスレを待ち続けるスレ Part17
http://aa5.2ch.net/test/read.cgi/nanmin/1153671484/289- responseTextじゃなくて、responseBodyなら、
クライアント側で変換できるけど。遅いよ 実用的ではない
まず重い、ありえない
そもそもJavaなんか切ってる人が大半
───終了─── >>38
1年間に飛行機に乗る人のうち、マイレージプログラムに執着するのは
何割なんでしょう。
少数の高額利用者の食い合いをしてる業界であればわかるのですが、
無料で利用できる掲示板にそのまま適用できるとは思えなかったりします。
>>41
> 1年間に飛行機に乗る人のうち、マイレージプログラムに執着するのは
> 何割なんでしょう。
AMC (ANAマイレージクラブ)の会員は、およそ1000万人と言われています。
乱暴に言えばまぁ大体、飛行機に乗る日本人の数と、当たらずとも遠からずかと。
で、PLT 以上なのは、つまりマイレージプログラムに執着しているとみなせる人は、
そのうちのおよそ 1% 程度といわれています。
つまり、だいたい私と同じか、あるいはそれ以上のレベルの廃人は、
全国に10万人ぐらいは、いることになるです。
これを多いと考えるか少ないと考えるかで、
このようにエンブレムを載せる意味が、
あるのかないのかにつながっていくんではないかと。
で、私は「これは無料だからこそより適用できるのだ、掲示板には愛が大事なのだ」
と、全く根拠なく思っていたりします。 >>42
> つまり、だいたい私と同じか、あるいはそれ以上のレベルの廃人は、
> 全国に10万人ぐらいは、いることになるです。
で、これは自分で飛行機を利用した時の、PLT 以上の数の感覚、
例えばラウンジの込みようとか、ビジネスクラスに乗ったときの配膳メニューに
マルP と書いてあるか(見えないようにしているけどたまに見える)とかとも、
だいたい一致している気がするです。
個人的には「廃人は思ったより多いなぁ」という感覚ですね。
というかマイレージプログラムがあるから、廃人が増えるのかもしれないです。 それやるならついでにプロフィールの背景色連動させて変えようぜ。紺色にしたい
あとそろそろ ? を消して BRZ とかにリンクはらね。
そろそろスレ違いな雰囲気だが >>45
> あとそろそろ ? を消して BRZ とかにリンクはらね。
> そろそろスレ違いな雰囲気だが
これは、スレ違いじゃないかもですね。
新しい read.cgi では、? をはずしてみるとか。 それはいいが、まずdatの形式を#形式にしてもらえないだろうか。
スレ違い御免。 あとポイント自分に送れるままにしとくなら
ポイントに必要なch森稼ぐ手段としての証券取引所も活性化が見込める で、明日あたりに質雑を読み返して、
出てきた issue を、こっちにまとめておきますか。
このへんから。
今日(もう昨日だけど)は歴史が動いた日で。
質問・雑談スレ231@運用情報板
http://qb5.2ch.net/test/read.cgi/operate/1153615149/775-
すべては、一言の神の啓示から始まったと。
そんなわけで。 AjaxでdatをDLするんでそ?
最新のN件とかはどうするの?毎回DAT丸ごとDL? 京ぽんOperaの場合、オフラインでなら動くのあるんだけどね〜。
★h" style/2ch DAT ビューア
ttp://www13.plala.or.jp/airh/filearea/tool/2chdat/index.html
京2だと保存したdatの拡張子が.htmになっちゃうんで、PC使って拡張子.datに直さないとダメ。 XMLHttpRequest だといろいろ苦しみそうな気がするので,
方針転換して隠しフレームに読み込む形にしてみますた.
たぶん,これで文字化け問題も解決するかと......
それから,先日作った be.js も取り込んで,dat への記録は従来形式
(# の数でランクを示す)のままでも表示段階でマイレージランクに
変換するようにしますた.頭の ? も消えます(ただ,直接 dat に
マイレージランクを記録してる分には対応してません).
で,be.js は index.js と同様に www2 あたりに置いて頂ければ,と...... あ、opera8.54でも見られるようになった。
だけど、ここ壊れていますが最後に出るよ。 IEはダイレクトXにfirefoxはextentionからdll呼び出し
とかはダメ?operaは知らないけど・・・ 全てに対応しようとしないで、対応していないブラウザはいままで通りread.cgiに飛ばすってのがいいんじゃいかと。
半分のアクセスをこれで対応するだけで、負荷的にはかなり下がるんだし。 Windows 2000 Service Pack 4
IE Version: 6.0.2800.1106
IEからみたら読み込み中のまま。フリーズはしなかった。
セキュリティ設定は中。キャッシュを消して見たけどだめ。
http://sunos.saita.ma/read-js/test/read.cgi/operate/1153615149/ IE以外のブラウザは無視して可ではないのですか。
どういうユーザ層がどのブラウザを使ってるか考えれば。 read.cgi動かすのとiconvとかnkfとかを動かすコストってどのくらい違うのかな。
ほら、XMLHttpRequestってリクエストヘッダも自由自在に送れたりするじゃん? 隠しフレーム方式の場合,今度は文字コードではなく MIME type がバタつくようで...<IE
text/plain として扱ってくれるといいんですが,text/html と勝手に解釈してくれると
dat 中に含まれるタグのところでテキストがバラされたり \n もすっ飛んだり,
ってのが >>57 のようで......あちら立てればこちら立たず...... というか、Ajax使うならまず最初にブラウザ判定をきちんとやって、
非対応ブラウザなら別の処理に回すってのが常道かと思うが >>62 まぁ現状では,JavaScript 版と CGI 版をそれぞれどんな URL で提供するかとか
そのあたりも決まってないし,そもそも IE での奇妙な挙動の問題を解決しないことには
実際に日の目を見ることもないでしょうから,その解決がまず先決でしょうし......
で,文字コード変換フィルタモジュールってことではこんなのがあったりします......
http://httpd.apache.org/docs/2.2/mod/mod_charset_lite.html IEだと「別の処理」すらできないのにブラウザ判定も何もないよ Javascript用のdatディレクトリを用意してmod_charset_liteの設定をする.htaccessを用意して
datは専用ブラウザ用の方へのsymlinkにすると? やりたいことと、とりうる手段の整理からしようかと。 とりあえず、最優先の問題点は現方式だとIEでは表示できない事ですか
(炎狐では問題なし) よく見てないので何ですが
datをtext/plainで表示するように.htaccessで設定したものを
アップした後
スクリプト内で
datファイルを読み込んだ直後(70行目あたり?)に
下記のようなタグ書き換えを行う正規表現を置いてみてはどうでしょうか。
var loadDat = loadDat.replace(/</g,"<");
var loadDat = loadDat.replace(/>/g,">");
var loadDat = loadDat.replace(/<pre>/gi,"");
var loadDat = loadDat.replace(/<\/pre>/gi,"");
var loadDat = loadDat.replace(/&/gi,"&");
var loadDat = loadDat.replace(/<xml>/gi,"");
var loadDat = loadDat.replace(/<\/xml>/gi,"");
変化が無ければごめんなさいという事で。
失礼しました
タグが書き換えられている・・
こちらです↓
var loadDat = loadDat.replace(/&lt;/g,"<");
var loadDat = loadDat.replace(/&gt;/g,">");
var loadDat = loadDat.replace(/<pre>/gi,"");
var loadDat = loadDat.replace(/<\/pre>/gi,"");
var loadDat = loadDat.replace(/&amp;/gi,"&");
var loadDat = loadDat.replace(/<xml>/gi,"");
var loadDat = loadDat.replace(/<\/xml>/gi,"");
「&」を半角にして頂ければ。 >>67
まだ、個別の項目にいく時期ではないと思うです。
JavaScript でやるのかどうかも、まだ決まっていないと思っています。
というわけで、整理を。
○今回やりたいこと
2ちゃんねるのサーバの負荷を軽くしたい。
○今回の目標
今回は具体的な事項として、
・掲示板サーバで read.cgi を動かすのをできるだけ少なくする
ことを目標にする。
最終的には全廃をめざすが、read.cgi の起動数を少なくできるなら、それでもよい。 >>70
やりたいこと&目標は
http://qb5.2ch.net/test/read.cgi/operate/1153615149/775
>おいらはブラウザ派なのですな。
>
>javascriptだけで、read.cgiが実現できるんじゃないかと、
>前から思ってるんですが、誰か試してみないすかね。
じゃなかったっけ? >>70がrootくんが独自に掲げたお題だっていうなら納得
>>70がひろゆきくんからの指令だって言うなら否定 >>70 は、私の位置づけです。
で、それがたまたま、管理人の興味と一致したので、
私もやる気になった。
ということだと思います。 なので、私は >>70 の目的が実現できるのであれば、
別にその手段が JavaScript である必要はかならずしもなくて、
別のものでもいいと思っているです。
JavaScript 以外の候補としては、
・flash
・Java
なども、あると思っています。
で、私としては管理人が「JavaScript 以外のものは使うな。これは私の命令です」
と言わない限り、可能性はより多いほうがいいなと考えています。
つまり、上記に JavaScript も含めたそれぞれの
・メリット
・デメリット
・実現可能性
などなどの要素を総合的に評価したうえで、
目標実現のためにどんな道具を使うのがいいか、決めたいかなと。 だったらActiveXでWebブラウザ上に2chブラウザ再現しちゃえば良いじゃん。IE限定だけど >>78
それも、手段としてはありえますね。
今 >>78 さんは「IE限定」と書かれていたわけですが、
目的の実装に使う手段を選ぶときには、そういったファクター(汎用性とか)も、
当然考慮するべきものの一つなのかなと。 IETabみたいに、レンダリングエンジンをうまく
ごにょごにょすればfirebirdでも大丈夫だぜ >>78>>80
うーん、read.cgiの代わりだからなあ。2ch独自のものを導入させるってのは違うと思う。
JavaScriptにしてもFlashにしてもJavaアプレットにしても、2ch独自じゃないし。 2001年の閉鎖危機の時にもread.cgiをjavascriptで代用するという案があったけど、
当時は互換性うんたらかんたらで却下されました。 んで、mod_charset_lightでUTF-8に変換してみたけど、うまくいきますね。
ただ、Shift_JIS的におかしなデータがdatファイルに存在すると500 Internalサーバーエラーになるっぽいですね。 >>83
なるほど。
ただこの場合、コード変換の分だけ、サーバは仕事をすることになりますね。
read.cgi 動かすのとどっちが負荷がトータルで低くなるか、が、
重要なポイントの一つなのかな。
あとは、ユーザに影響が出ないように実装できるのか、とか。
いずれにせよ、
> ただ、Shift_JIS的におかしなデータがdatファイルに存在すると
> 500 Internalサーバーエラーになるっぽいですね。
は、ちょっといまいちなのかなと。 >>84
それは詳しい人のフォロー待ちです
マニュアルちょっと読んで試しただけなんで Java アプレットは重い(特に VM 起動時)ですからね......
Flash は Java よりは軽いでしょうけど,(文字列の扱いにもよるのかも
知れませんが)文字化けすることもあって......まぁこちらの環境は少数派でしょうけど.
http://sunos.saita.ma/read-js/test/flash.png
JavaScript はブラウザによって挙動不審になったりとかする部分もあったりするのが
苦労するところですが,それを乗り越えれば一番お手軽ではあるんですよね.
あと,フィルタモジュールの負荷ってことなら,文字コード変換より圧縮,
つまり mod_deflate の方がよほど重いかと. JSPって↓のようなやつだっけ?
<%
for(int i = 0; i < bbs.getLastNum(); i++){
%>
メッセージ:<%= bbs.getMessage() %><br>
<%
}
%> Web製作板でJavaScript版
プログラム板でJava Applet版
Flash板でFlash版
を作ればいいんでね?盛り上がりそうw SunがMicrosoftのVM潰さなければねぇ。
独自拡張もあったにしろMicrosoftの方が早かったのに。 JSPはサーバサイドだからあんま意味なくね?
それとも実はものごっつ軽いとか? いや、別にJSPがものごっつ軽いとかは無い。
普通にサーバサイドだし。 不正なバイトシーケンスを無視して 500 エラーにしないようにするパッチ.
--- httpd-2.2.2/modules/filters/mod_charset_lite.c Sat Apr 22 10:53:06 2006
+++ httpd-2.2.2/modules/filters/mod_charset_lite.c Sat Apr 22 10:53:06 2006
@@ -188,6 +188,31 @@
return NULL;
}
+static apr_status_t _xlate_conv_buffer_no_eilseq(apr_xlate_t *convset,
+ const char *inbuf,
+ apr_size_t *inbytes_left,
+ char *outbuf,
+ apr_size_t *outbytes_left)
+{
+ apr_status_t rv;
+
+ while (inbytes_left && outbytes_left) {
+ apr_size_t inbytes = *inbytes_left, outbytes = *outbytes_left;
+
+ if ((rv = apr_xlate_conv_buffer(convset, inbuf, inbytes_left,
+ outbuf, outbytes_left)) != APR_EINVAL) /* EILSEQ */
+ break;
+ if (*inbytes_left)
+ inbuf += inbytes - --(*inbytes_left);
+ if (*outbytes_left)
+ (outbuf += outbytes - --(*outbytes_left))[-1] = '?';
+ }
+
+ return rv != APR_EINVAL ? rv : APR_SUCCESS;
+}
+
+#define apr_xlate_conv_buffer _xlate_conv_buffer_no_eilseq
+
/* find_code_page() is a fixup hook that decides if translation should be
* enabled; if so, it sets up request data for use by the filter registration
* hook so that it knows what to do 文字コード変換でサーバーにかかる負担はどれくらいなんだ? >>90
それぞれの住民が、競い合って作るというのはどうか。
>>94
おぉ。
これでいけるなら、文字コード変換のコストは
それほどでもないと。
あとは、/板名/dat だと今までの dat を生読みして、
/板名/datutf8 だと mod_filter かました結果で出る、
というふうにできると、いいのかな。
mod_proxy 使えばできそうな気がするんですが、どうやるのがいいんだろうか。 jspは意味無いでしょ・・・
折角、サーバ側で読み出しの負荷を下げようというのに・・・ >>97
板のディレクトリのところに dat-utf8 とかでdatディレクトリに対しシンボリックリンク作って
そこへのアクセスはmod_charset_liteを使うようにするとか
これだと各サーバーの各板でシンボリックリンクを張る作業しなきゃいけないから大変? rangeで**バイト以降のデータをリクエストしたら、変換後のバイト数で来るんだよね。 ブラウザによって違う動作といえば、Gecko系のXMLHttpRequestは
同一ホストか同一ドメインに限られていたような。
これは各サーバに入れておけば済む問題だが。 JavaScript は、結構方言が多いんですかね。
大きく分けると、
・IE 系
・Gecko 系
・Opera 系
・Safari 系
ぐらい? >104
分類すると
・IE−Sun系 MS系
・Gecko−1.5系 2.0系 3.0系
OperaとSufariは使ったことがないので補足ヨロ >106
Gecko間違えて炎狐でやっちゃった
・Gecko−1.8.0系(炎狐1.0.x) 1.8.1系(炎狐2.0) 1.9系(炎狐3.0) SafariはKHTML系の一部だろ。
他にKonquerorとかある。 Operaって
ttp://www.opera.com/docs/specs/js/
こんなでいいの? >>102 そうなります......と言いたいところですが,基本的に chunked 転送となって
Range は効かないかと.もっとも,Range を効かせた場合は mod_deflate で
圧縮するわけにはいかない(Range 指定しても圧縮後の内容に対して
Range が効いてしまうため)とか,キャッシュと Range の相性もよろしくない
ってことで,果たしていいのか悪いのか......
なお,前のパッチ以外にも修正した方がいい点があったので,パッチ更新版を.
http://sunos.saita.ma/read-js/test/mod_charset_lite.patch
ちなみに,httpd.conf の設定はこんな感じかな.
AliasMatch ^/(\w+)/dat-utf8/(\d+\.dat)$ /home/ch2xxx/public_html/$1/dat/$2
<Location /*/dat-utf8/*.dat>
SetOutputFilter XLATEOUT
CharsetSourceEnc CP932
CharsetDefault UTF-8
</Location>
Alias /test/bbs-utf8.cgi /home/ch2xxx/public_html/test/bbs.cgi
<Location /test/bbs-utf8.cgi>
SetInputFilter XLATEIN
CharsetSourceEnc CP932
CharsetDefault UTF-8
</Location> >>111
おぉ、、、。
これは、dso.2ch.net に入れると、
テストが可能になると言っていますか? >>111 かもですね.ただ...... sunos.saita.ma で見ている限りでは,
mod_charset_lite で必要な APR-Util 中の apr_xlate_*() の関数群が
FreeBSD だと普通にビルドすると APR_NOTIMPL になっちゃうかも知れない
っぽいんで,ビルド時に細工してやらないとならないのかも......? >>113 s/>>111/>>112/
....../include/apu.h 中の
#define APU_HAVE_APR_ICONV 0
#define APU_HAVE_ICONV 1
#define APR_HAS_XLATE (APU_HAVE_APR_ICONV || APU_HAVE_ICONV)
のところで APR_HAS_XLATE (== APU_HAVE_APR_ICONV || APU_HAVE_ICONV) が 0 に
なってるようだと,そのままでは使えないので細工の上 APR-Util のビルドし直しが必要かと. この「CGIの夢を見るか 」スレから ここ↓「Ajaxでも語りませんか3」スレへ来られた方が
http://pc8.2ch.net/test/read.cgi/php/1147750917/
こんな質問↓をされているのですが、
http://pc8.2ch.net/test/read.cgi/php/1147750917/334
>IE6だと、最初のリクエストだとOK・・・・・・304 Not Modified が返ってくると・・・・・UTF-8と解釈して文字化け
この現象を確認できるページはどこかにあるでしょうか?
普通に考えると、304で表示されるのはキャッシュのはずですから、それが最初OKだったsjisではなく、UTF-8に解釈されてしまうとしたら、
個々のブラウザのローカルなエンコード設定の問題なような気もするのですが、何はともあれ、その現象がどこでも再現するのかを確かめたいと思いまして、、、。 とりあえず,UTF-8 の dat を取得する形で XMLHttpRequest 利用に戻しておいた.
ただ,sunos.saita.ma は共用サーバにつき自分で mod_charset_lite を組み込んだり
できないんで,UTF-8 に変換済みの dat を置いて代用......
http://sunos.saita.ma/read-js/operate/dat-utf8/ キャッシュの再読み込み時に文字コード判定をUTF-8にしているようですね。
もし、キャッシュを無視する下記のような方法だとどうなるでしょうか?キャッシュは使えなくなりますが。。。
httpReq.open("GET", urlPrefix + "../" + paths[1] + "/dat/" + paths[2] + ".dat?"+(new Data()).getTime(),false);
#ところで、asyncがfalseのわけは? あ...... sunos.saita.ma には mod_headers が入ってなかったんだ...... http://pc8.2ch.net/test/read.cgi/php/1147750917/337の案って
<?xml version="1.0" encoding="Shift_JIS"?><response><![CDATA[
動け動けウゴウゴ2ちゃんねる<><>03/08/31 03:53 ID:xo367wqv<> 踏むとスレ立てしたり投稿したりするスクリプトにつて <br> 情報を集めたり対策したりするスレです。 <>■ スレ立て・投稿スクリプト対策
動け動けウゴウゴ2ちゃんねる<>sage<>03/08/31 03:53 ID:Xj/IL/tw<> ( ゚д゚)ポカーン <>
動け動けウゴウゴ2ちゃんねる<>sage<>03/08/31 03:59 ID:xo367wqv<> http://okazu.bbspink.com/test/read.cgi/ascii/1062203672/13- <>
(略)
]]></response>
っていうはったりXMLをサーバーが用意。
※CDATAは、 ]]> だけが使えない。セクションの終りになっちゃうから。
文字コードの変換は行わないで、
><?xml version="1.0" encoding="Shift_JIS"?><response><![CDATA[
と、
>]]></response>
で、はさむだけだから負荷はそんなにない感じ?
JavaScript側は
httpReq.responseText
を
httpReq.responseXML.documentElement.text
に変更するだけ。
って感じかな。誰かできる人試してくれ。
上手く行ったらBeをふりこんで置くように 今のread.cgiの出力を単純にこうするだけでもけっこう軽くなるでしょうか?
<form name="datForm">
<textarea style="display:none;" name="namaDat">
(ここにdatをそのまま出力)
</textarea>
</form>
<script src="lib.js"></script>
<script>
showThread(document.datForm.namaDat.value,1,1000);
</script> 今日、別のマシンのIE6で見たらリロードしても文字化けしていませんでした。もしかしてサーバー側で何か変りましたか?
ところで、
httpReq.open("GET", urlPrefix + "../" + paths[1] + "/dat/" + paths[2] + ".dat", false);
httpReq.send(null);
texts = httpReq.status == 200 ? httpReq.responseText.split("\n") : ["[エラー]<><>[エラー]<>[" + httpReq.statusText + "]<>[エラー]", null];
この部分ですが、このままですと着信待たずにresponseText要求して失敗する可能性が高いので、たとえば、
httpReq.onreadystatechange =function () {
texts = httpReq.status == 200 ? httpReq.responseText.split("\n") : ["[エラー]<><>[エラー]<>[" + httpReq.statusText + "]<>[エラー]", null];
}
httpReq.open("GET", urlPrefix + "../" + paths[1] + "/dat/" + paths[2] + ".dat", false);
httpReq.send(null);
オーソドックスにこんな方が良いのではないかと思います。 >>125 は、たぶん良い方法だと思います。が、
httpReq.responseXML.documentElement.text がおそらくOperaやFirefoxで動作しない気もしますので
普通に、
var xmlDoc = oj.responseXML
var nodes = xmlDoc.getElementsByTagName("response")[0].firstChild.nodeValue
などで取り出すのが良いかも。 >>125 それって,SSI 使えば結構簡単にできそう......と思ったけど,
SSI は普通にやると Last-Mod を吐かない,XBitHack 使って吐くようにしても
それはインクルードした dat の mtime ではなく外側の xml の mtime になってしまう,
ってことで,やるとしたら read.cgi のように DSO で dat を取り込んでそんな感じに
出力するってことになるかな.
てか,そもそも負荷軽減が目的でそういうことやるなら,現行の read.cgi にムダがないか
見直すのが先決という気も.read.cgi を介さず dat を直接返せば軽くなると言われてるけど,
mod_deflate 使わずに sendfile() で一気に送出するならともかく,実際は gzip 圧縮かけてますよね.
圧縮処理自体,文字コード変換や HTML 整形処理などと比べても結構重いはずです.
それにもまして read.cgi が重いとすれば,現状の read.cgi にムダがあることの現れではないかと.
現状では Last-Mod 吐いてないからキャッシュが効かないとか,(サブリクエストを使わなければならない
雪だるま鯖では仕方ないとして)mmap() 使わずにバッファに dat を読み込んでるとか,
その他 HTML 整形処理などももっと軽量化する余地がないかとか,そういうあたりのことを......
あと,read.cgi 出力に mod_cache かましたらどうか,ってのもあるか.
そうしたことを考えれば,JavaScript 版を作るのは負荷対策というより
「こういうこともできるのか」という技術的好奇心の側面の方が強いという気がします. >>127 >>118 のは最初に作った旧版で synchronous にデータを取得するため
onreadystatechange() を使ってませんでしたが,今の
http://sunos.saita.ma/read-js/test/read.html は
asynchrous にデータを取得するので使ってます. >>118のページに、「文字化けデモです」と注意書きを入れました。 >>129
> そうしたことを考えれば,JavaScript 版を作るのは負荷対策というより
> 「こういうこともできるのか」という技術的好奇心の側面の方が強いという気がします.
どこまでカリカリにチューニングしたって JavaScript を利用すれば結局
サーバ側の整形処理そのものを省略できるんだから負荷対策にはなるんじゃない。 >>130 了解しました。
>>131 ちなみに、今日使っているマシンは(IE6.0.2900.2180.xpsp sp2 gdr.050301-1519)はリロードしても文字化けしていません。キャッシュの設定はいろいろ試しましたが文字化けしません。
http://sunos.saita.ma/read-js/test/read.html
はEUCなんですね。
あと、サーバー自身がtext/plain;charset=xxxを吐き出していないような気がするのですがどうなのでしょう? >>132 その主張は一面では正しいと思います.ただ,PATH_INFO であれ QUERY_STRING であれ
URL で板・スレを指定する限りにおいてはムダなリクエストが増えるという側面もあります.
ページをロードするたびに read.html と *.dat をそれぞれロードするというのはもちろんですが,
別の板やスレを表示する場合 read.html そのものは変化しないにもかかわらず
ブラウザから見ると別のドキュメントとして新たに取得し直してしまいます.
例えば
/test/read.html/operate/1000000000/ と /test/read.html/operate/1000000001/
/test/read.html?bbs=operate&key=1000000000 と /test/read.html?bbs=operate&key=1000000001
どの場合でも read.html 自体は変化しないのですが,ブラウザから見ると
すべて別個のドキュメントとしてそれぞれに read.html をロードし直してしまうのです.
もちろん,それぞれのページ内でさらに *.dat を取得します.
そうした余分なリクエスト増加も勘案すれば,read.cgi をリファインした場合と比較して
果たしてどうなのか,というのも要考慮かと......
>>133 現状のはとりあえず UTF-8 前提になってるので charset 指定を外してます. 今日使っている文字化けしないマシンを調べたら、どこの設定をいじっているのかは不明ですが、キャッシュが残らないようになっています。
つまり、毎回読みにいっているわけですけれど、少なくとも、このShift_JISの文字化けは、
キャッシュさえ読まなければ解決する可能性が高い気がします。
キャッシュのせいで、文字化けしたり、キャッシュが効きすぎて書き換わらないなどのトラブルが起きるよりも、毎回読みに行くとしても
no-cacheなどのほうが良いかも?という意味では、
<meta http-equiv="Expires" content="Sun, 10 Jan 1990 01:01:01 GMT" />
<meta http-equiv="Cache-Control" content="no-cache" />
<meta http-equiv="Pragma" content="no-cache" />
を書いたり、url+"?"+(new Date()).getTime()でキャッシュを無視したりする方がよいかもしれません。 >>134
全部同じ HTML でいいんだから1画面フレームで表示、てのもできるけど、そうでなくても
<script type="text/javascript" src="****.js"></script>
と指定すればこのファイルはキャッシュされるよ。
> それぞれのページ内でさらに *.dat を取得します.
これは多分、read.cgi も同じでしょう。
Ajax スレの方に書いたけど、plain.cgi とか使えば最新 50 もできるよね。 >>136 いや,だから JavaScript 部分を分離しようがフレームを使おうが何だろうが,
外側の read.html 自体は板・スレが変われば別ドキュメントとして扱われる,
だからそのたびに新たにロードされる(余計な HTTP リクエストが発生する)
ということを言いたいわけですが......
>> それぞれのページ内でさらに *.dat を取得します.
>これは多分、read.cgi も同じでしょう。
少なくとも,read.cgi 自体が *.dat を HTML 整形する限りに置いては
HTTP リクエスト・レスポンスは1回だけで済むわけですが......
それとも,read.cgi がサーバ内で *.dat を読み込むって意味で言ってますか?
ネットワーク越しに HTTP リクエストを受け付けてクライアントに *.dat の内容を
返すのに比べれば,ローカルファイルを open(), mmap() して読み込むだけの
方が遙かに軽いわけですが...... あーもっと簡単な方法に気づいた。
/test/read.html#/operate/1000000000/
location.hash で指定。ダメかな? >>138 余計なリクエストを発生させないという点では有効でしょうけど,
その形式が普及するまでの間,既存の板・スレ指定を行った URL が残る限りは
効果を発揮しきれないかと.まぁ過去にも一度 QUERY_STRING から PATH_INFOへの
転換を行ってるので,そうした新形式への変換は必ずしも不可能ではないかも知れませんが...... >>139
> 既存の板・スレ指定を行った URL が残る限りは効果を発揮しきれないかと.
あーそっか。そうだね。
>>137
> ローカルファイルを open(), mmap() して読み込むだけの
> 方が遙かに軽いわけですが......
でも、read.cgi はそれを更に整形してからネットワーク越しに送ってるんだよね?
送られるデータの量よりは、リクエストの数の方が問題なのかな。 >>140
read.cgiはさらに負荷もあるですよ 考えられるShft_JIS用文字化け対策リストはこんな感じ?
>>111 utf-8専用のディレクトリ/dat-utf8/を作る
>>125 respnseTextではなくrespnseXMLでcharsetを明示処理 -->Safari1.2でも動作可
>>135 キャッシュ無効no-cache -->ユーザーの設定が優先されるので駄目かも&負荷?
>>135 キャッシュ無視url+"?"+(new Date()).getTime() -->read.htmlを何度でも呼ぶ負荷が気になる?
utf-8にしてもresponseTextではBOMを付けるなどの弊害もある細工が必要なので、
私はXMLを使う>>125がお勧めですが、.datの構造を変えるのは手間?
だめなら、キャッシュを無視。 静的ファイルへのリクエストと.cgiの負荷を比べると、普通は.cgiの負荷の方が高いと思いますが、
なにしろ、リクエスト数の多い2chなので、その判断は現場の人でないとわからないかも? >>140-141 read.cgi の処理による負荷があるのはわかります.しかし,
静的コンテンツであっても HTTP リクエストを処理することによる負荷もあります.
HTTP リクエストが増えればそれによる負荷増もあるってことで,
そのあたりを read.cgi をリファインした場合と比較すればどうなのか,と. どんなにリファインしても.cgiの負荷が静的コンテンツの負荷より下がるとは思えないけどなぁ 一応補足しておくと、read.cgiはCGIと表記はなっていますが、実際はApacheモジュールに近いものです。
mod_cgidso http://sunos.saita.ma/mod_cgidso.html
read.htmlはJavaScriptを使う関係で、2chの背景画像みたいに
別サーバーにおくというわけにも行かないですしねえ
read.htmlを使うとして
(1)UTF-8に変換(responseText) >>111
(2)datファイルを単純なXMLに変換(responseXML) >>125
(3)キャッシュ無効は、If-Modified-Since: 昔の時刻 を設定するのが一番どのブラウザでも安全かと ああ、そうだ。
>>136 の方が書いていますが、
たとえば、read.htmlのソースを
<script type="text/javascript" src="read.html.js" charset="xxx"></script>
などにして、全部JavaScriptで出力してしまえば、
read.html.js自体はキャッシュされますから、
/test/read.html/operate/1000000000/ と /test/read.html/operate/1000000001/
/test/read.html?bbs=operate&key=1000000000 と /test/read.html?bbs=operate&key=1000000001
こんなふうに何度呼ばれても、再読込は1行だけかも。
HTTP リクエスト回数そのものの負荷は減らなくてもかなり軽くはなります。
あ、read.cgiから
<script type="text/javascript" src="read.html.js" charset="xxx"></script>
を出力するとリクエスト回数は減って、datのロードをクライアント側のAjaxにも任せられる?ハイブリッドみたいな? >>145 HTTP リクエスト数がほぼ同一という前提ならそれは当然です.
さすがに,単一のリクエストにおいて動的コンテンツ処理の負荷が
静的コンテンツ処理の負荷より軽いなんてことを言うつもりはないです.
ただ,JavaScript 版(に限らず Java や Flash などでもそうでしょうが)で
ページをロードした場合,外側の html と内側の dat 双方の HTTP リクエストが発生します.
つまり(静的コンテンツではあるものの)HTTP リクエストが増加することは必至です.
しかも,その静的コンテンツも sendfile() で一気に送るのではなく,
gzip 圧縮という結構重い処理を介してます.そうしたことも考慮すれば,
HTTP リクエスト増加による負荷増も無視できない水準になるだろう,
それを read.cgi をリファインした場合と比べればどうなのだろうか,と......
要は,個人的には JavaScript 版 read.cgi を作ること関しては,
負荷対策を第一義的目標として掲げて行うことには懐疑的,
(負荷も考慮しつつも)技術的好奇心を主眼として行うのなら好意的,ってことです. iframe 使った読み込みした場合のデータのキャッシュって普通のコンテンツと同じかな?
使えるとしたら、Expires で超未来指定することで HTTP リクエストを軽減できるかも。 それにしても、metaでもブラウザ側でもShift_JISを指定した上で、
IE6で通常のShift_JISファイルをXHRで読み込んで、文字化けするということは無いと思うので
gzip 圧縮か、Content-Type設定に原因があるかも。でも、仮にこれが解決してもXML処理の方がお勧めではあります。 いや iframe じゃなくてもいいか。考えたから暇な人は読んでみて。
<script type="text/javascript">
var data = new Array; // まずスレッド用の配列を作る
var pos = -1;
</script>
<script type="text/javascript" src="/test/read.js/operate/1000000000/1-"></script>
<script type="text/javascript" src="/test/draw.js"></script>
サーバ側は js ファイルを CGI で吐かせるようにする。
data[++pos] = "*********"; // " はエスケープ(書き込み時に " になってればそのままで)
data[++pos] = "*********";
data[++pos] = "*********";
で、吐くデータが n 個(1 個以上; 適当に)を超えたらデータ部の後ろに
次のセクションを読み込むスクリプトを書いた上で、
$js .= qq{data[++pos] = "$_";\n} for map { s/"/"/g; $_ } @data; "
$js .= q{document.write('<script type="text/javascript" src="/test/read.js/operate/1000000000/$next-">');}
if scalar @data >= $n;
このリクエストの Expires を超未来にする、て感じ。
難点はあぼーんが反映されないってことだけど。 × q{document...
◯ qq{document... >>151-152 そもそも,ブラウザでページ自体をリロードしたらどうなるか......
「そういう使い方はしないで内容更新時にはページ内の更新ボタンをクリックして下さい」
とか呼びかけようとしても,read.cgi 利用者層の多くを占めるライトユーザには
なかなか普及しなさそうな気も...... read.html に対して
ExpiresActive On
ExpiresDefault "access 1 week"
とか指定しても,ページ自体をリロードすれば HTTP リクエストは
発生するようです.いったん取り込んだ URL なら 304 にはなりますが.
で,今の DSO 版ではない昔の read.cgi には,HTML 整形せず dat の形式のままで
行単位の内容を返す raw mode ってのがありました(今は廃止).でも,HTML 整形するよりは
raw 形式の方が軽いとはいえ,結局サーバ側プログラム走らせることには変わらないんですよね.
そこに HTTP リクエスト増も加わるってことも考えれば...... >>153
ttp://labs.cybozu.co.jp/blog/kazuho/archives/2006/02/utilizing_cache.php
このページに書いてあることを信用すると、 Expires ヘッダは
Last-Modified ヘッダと併用することでリクエストそのものが無くなるみたいだよ。 WindowsのIE6では、更新ボタンを押した場合は再読み込みされるよ >>156
そうなのか……それじゃぁ >>151-152 は使えないや。 >>155 内側で読み込むデータってことね.それなら,今も実際に index.js で利用してて
効果は出てるようです.でも,外側の read.html のリロードまでは抑制できないかと.
で,>>151 は内部で読む方のリロードを抑制ってことか.でもそれだと今度は
dat が更新されてもなかなか反映されないってことになりそうな......
あと,そういう形で行単位の内容を返すなら
・ \n を探すためファイル内容をスキャン.
・ JavaScript 文字列にするなら,さらに " や \ をエスケープするためにスキャン.
こういうことやるぐらいなら,タグ付け加えて HTML 化ってのがそういう処理に比べて
べらぼうに重いとは思えません.もしべらぼうに重いとすれば,それはムダな処理をしてるからかと.
ある程度は重くなるでしょうけど,少なくとも HTTP リクエスト増加による負荷増より
ずっと重いなんてことはあり得ないような. 有効期限も長くし過ぎると、テストが十分でなくて不具合を混入させてしまったまま
リリースした時に困りますよ。失礼な言い方になるけど、ユーザーの大半は基本的に
馬○ですからね。不具合がある事を訴えることは出来ても、何が原因で
どうすればいいか思いつくことまでは出来ないのが多い。
まぁここに来て騒いでCtrl+F5を押せって言われる流れになるんでしょうけど。 >>158
キモは、ブラウザのキャッシュに入ってるデータはリクエストしないってとこだったりするのだけれど。
行単位がダメなら、やっぱり iframe なのかな?でもキャッシュが効くかどうかもわからない。
新着を探すためには、最後の位置を覚えとかないといけないし。これは、read.js の他に read.txt も必要かも。
そしてやっぱり、更新ボタンを押したらリロードしちゃうんでは、ちょっと微妙かな。
read.cgi のキャッシュの仕組みがよくわからないけど、多分、
最新 50 の後に全表示とか、キャッシュにデータが重複してても構わず処理するんでしょう。
サーバ側は知る術が無いしそれは普通なんだけど、そうならやっぱり。 jsはwww.2chとか静的コンテンツ用のサーバにおいて、
datはqb5.2chの既存のサーバとかコネクションを切り分けるとかって
出来るんでしょうか?
んー、Gecko(Firefox)はできない可能性が高いけど、2ch.net同士だからなぁ。 js が別のサーバに置いてあったとしても、
js を読み込む(実行する) html が読みたい dat と同じドメインにあれば、dat は読み込めるよ。 >>162 JavaScript 部分を HTML から分離して別のところに置く,ってのは
今の read.cgi や index.html でもやってます(www2.2ch.net/snow/index.js).
ただ,URL で鯖・板・スレを指定している限り,外側の read.html が
各所に散らばる状態はいかんともしがたいかと. http://www.2ch.net/read.html&u=http://qb5.2ch.net/operate/dat/1153819270.dat
とかじゃまずいんでしょうか? # >>171 ちょん切れたので......
>>170
>http://www.2ch.net/read.html&u=http://qb5.2ch.net/operate/dat/1153819270.dat
& だとダメですが,? か / か # にすれば一応動きますね.
とはいえ,ブラウザによっては同一ホストという制限はあるかも.
まぁ,既存の URL との互換性を捨ててもいいならいろいろやりようはあります.
キャッシュを有効活用ということなら # を用いるのがベストです.
ただ,たとえそうしたとしても,それが普及するまでの間は従来式の URL が
当面そのまま残りますから...... js を実行する html と違うドメインの dat は、js からは セキュリティの関係で読み込めないよ。
他ドメインの js ファイルを実行することはできるから、>>151-152 なら大丈夫だけどね。 従来のアドレスにアクセスしたらそのアドレスに飛ばすっつーことか。
というかスキーム名要らなくない?
もっと言うとPATH_INFOでいいような。 セキュリティがドメイン単位なら問題ないような。
鯖単位だと別鯖にだせないけど。 >>173
ドメイン単位?サーバ単位?
同一ホストの制限のあるブラウザって大手ではどんなんがあるんでしょう?
どうせ.cgiでなくなるので、URLの互換性はあんまり気にしなくていいとおもいます。
まぁ要は,? (QUERY_STRING) や / (PATH_INFO) を使うと,同一の read.html というファイルであっても
板・スレの指定が異なるとブラウザ側はそれぞれ別々のコンテンツとして扱ってしまうってことで.
# を用いて例えば
http://qb5.2ch.net/test/read.html#operate/1153819270/
のようにすれば,板・スレの指定が異なってもブラウザは同一コンテンツとして扱ってくれると. >>176
サブドメインを変えて試したことが無いから説得力が無いけど…
多分完全に一致するかどうかでチェックするんじゃないかな。2ch で言うサーバ単位になると思う。
ドメインを超えてアクセスできるとセキュリティホールみたいに見られるから、
大抵のブラウザ(IE、FF、Opera)ではクロスドメインのアクセスはできないよ。 確かFQDN単位、だった気がする。あくまで気がする。 オフトピ
IE7β3では異なるドメイン間のサブフレーム移動はデフォルトで禁止
されてます。
(前までこの質問で賑わってました。) http://qb5.2ch.net/ を表示させた状態で
javascript:var h $3D window.XMLHttpRequest
? new XMLHttpRequest() : new ActiveXObject("Msxml2.XMLHTTP");
h.open("GET", "http://info.2ch.net/", false);
h.send("");
alert(h.responseText);
を全部一行につなげてロケーションバーから入力すると,
IE も Firefox もダメっぽいですね.
h.open("GET", "http://qb5.2ch.net/", false);
に変えれば Ok ってことで,どちらも「同一ホスト」という制限かと. Mozilla 1.7.x (Gecko) もopenの段階でエラーが出るね。 >>182
×javascript:var h $3D window.XMLHttpRequest
○javascript:var h = window.XMLHttpRequest Internet Explorer 6.0 SP1 もopenの段階でえらー。 外側のread.htmlと
その内側からAjaxでリクエストする.datは同じドメインでなければなりませんが
でも、同じ内側から呼び出す相手でも、Ajaxを実行する.jsファイル自体は、クロスドメインにおいてあっても大丈夫です。
ちなみに、もしdataスタイルをjsのJSONなどの書式にしてもよければ、Ajax以前の時代のクロスドメインなダイナミックロードというのもありますけれど。
http://game.gr.jp/mag2p/2/loadjs/loadjs.htm
read.js 全ての処理をさせる どこに置いてもおk
read.html read.jsを読ませるだけ datと同じドメインじゃなきゃ駄目。
read.htmlとdatが同じドメインなら、read.jsがdatと通信しても大丈夫
っていう感じ。 パラメータを#で渡すと、リンクが全部紫色にならないかな? 2chの仕組みがまだ良くわからずに書いていますが、、、
ふと、思ったのですけれど、もしレガシーな仕組みを引きずらなくても良いなら、
.datファイルをとりにいくのではなくDB使うというのは無しなのですか?
1) hoge1.2ch.net/read.html#hogehoge (hoge1.2ch.net/read.htmlはキャッシュ)
2) static1.2ch.net/ajax.js (ajax.jsはキャッシュ)
3) hoge1.2ch.net/db (差分のみ)
1)から2)をロードして#hogehogeに対応するデータを3)から受けとり
ユーザーへはAjaxなレスポンスを返すとかの方がシンプルでいろいろできるかも。
>>191 #なら、カレントページが訪問済みになりますが、#hogeとかですよね? >>196 まぁ,ime.st (ime.nu) で
onload = function(e) {
if (location.hash) {
document.links[0].href += location.hash;
document.links[0].firstChild.data += location.hash;
}
};
のような JavaScript 入れてもらえれば解決するかと.
もっとも,JavaScript 切ってあるとどうしようもないけど...... >>86がちょっと面白そうなので適当に動かしてみました。
http://www.janis.or.jp/users/segabito/sample/bind.html
sjisを変換せずに読めるのはいいのですが、ちょっといじると表示が止まったり、
リロードするたびに動いたり動かなかったりして、どうも安定しませんでした。 ブラウザ派急先鋒のまろゆきさん>>197これ入れてください >>197
その要望はime.nu登場時から言われていたけれど、
ひろゆ子さんという人がよくわからない理由で却下していました。
388 名前: 心得をよく読みましょう 02/02/22 13:20 ID:zXPGfNV8
>>377
↓こういうのを<body onload>かhtmlの最後に入れてください。
document.links[0].href+=location.hash
JavaScript使えるブラウザならIEだけじゃなくてたいてい通用します。
392 名前: ひろゆ子 ◆HRUNYAXA 02/02/22 13:30 ID:yVzdMBp6
javascriptをいれてしまうと、
googleにおこられそうで、、
801板のことをおいらにいわれてもわからんです。。 Konquerorでも文字バケバケっぽいですね。
にわかユーザだからよくわからんけど。 read.cgiの負荷を大幅に減らすことが目的なら、
WinIEだけを専用のスクリプトに飛ばせば目標達成かもしれないですね。 (それじゃあ面白くないって?) ふと思った。2chユーザーのUA割合ってどうなってるんだろうな。と さてと。
>>193 を、dso あたりに仮に入れてみるとしたら、
.htaccess 的には、どうすればいいのかしら。 >>203
携帯とIEで八割は占めるんじゃないかな? 実用性を考えると100レスずつ表示ぐらいなら、ブラクラまでは行かないレベルになりそうかな? Opera8.54から>>193を見てみたら初回取得時は正常に表示されるけど、
再読み込みもしくは再度開きなおすと読み込み中のまま先に進まなくなった。 >>204 どっちにしろ httpd.conf に入れなければならない設定もあるんで,
全部まとめて httpd.conf でもいいかも......
----------------------------------------------------------------------
LoadModule charset_lite_module libexec/mod_charset_lite.so
AliasMatch ^/(\w+)/dat-utf8/(\d+\.dat)$ /home/ch2xxx/public_html/$1/dat/$2
<Location /*/dat-utf8/*.dat>
SetOutputFilter XLATEOUT
CharsetSourceEnc CP932
CharsetDefault UTF-8
AddDefaultCharset UTF-8
Header append Cache-Control max-age=5
</Location>
Alias /test/bbs-utf8.cgi /home/ch2xxx/public_html/test/bbs.cgi
<Location /test/bbs-utf8.cgi>
SetInputFilter XLATEIN
CharsetSourceEnc CP932
CharsetDefault UTF-8
</Location>
<Files read.html>
AcceptPathInfo On
</Files>
<Files read.cgi>
AcceptPathInfo On
ForceType text/html
SetHandler default-handler
</Files>
----------------------------------------------------------------------
mod_charset_lite には >>111 のパッチが必要.ビルド時には >>114 をチェック.
# 今は read.html 中に JavaScript を直接記述してますが,実運用段階では分離する方向で.
>>207 Opera では JavaScript のエラーダイアログか何か出ますかね?
何かエラーが発生してるとすれば,どんなエラーなのかがわかれば対処しやすいですが.
# というか,sunos.saita.ma には mod_headers が入ってないので
# Cache-Control ヘッダを出力してませんが,そのせいかな......? >>208
javascriptコンソールのエラーは
読み込み中。。。
http://sunos.saita.ma/read-js/test/read.cgi/operate/1153615149/l50
Event thread: mouseover
Error:
name: TypeError
message: Statement on line 254: Could not convert undefined or null to object
Backtrace:
Line 254 of User JS script
dt.innerHTML.match(/^(<[^>]*>)?(\d+)/);
Line 217 of User JS script
setResNumber(t.previousSibling);
At unknown location
[statement source code not available]
このような感じです。 >>209 どもども.しかし......
>Line 254 of User JS script
>dt.innerHTML.match(/^(<[^>]*>)?(\d+)/);
>Line 217 of User JS script
>setResNumber(t.previousSibling);
少なくとも,こちらが作った JavaScript には上記のようなステートメントは
含まれてないんですが(mouseover イベントも使ってないし),
どこで入り込んだんだろう......?
もしかして,壺か何かのスクリプトと衝突してる......? >>208
mod_charset_lite って、
Apache 2.2 以降じゃないとだめなんでしたっけ。 あー、すいません。
テストするときにはUSER.JSを切っていたんですが、
切ってなかったときのエラーログのようです。
それ以外ではどんなエラーも出ていないようですが、再読み込みをすると>>57のIEの時のようになってしまいます。 >>212 2.0 と 2.2 のモジュールは基本的にソースレベルでは互換性があるので平気かと.
(ただしバイナリレベルの互換性はない)
>>213 なるほど......キャッシュの問題なんですかねぇ.
(sunos.saita.ma では設定不能ですが)Cache-Control 等のヘッダで改善するかどうか...... >>214
> 2.0 と 2.2 のモジュールは基本的にソースレベルでは互換性があるので平気かと.
> (ただしバイナリレベルの互換性はない)
なるほど、それならいけそうですね。
dso を 2.2 系にするといろいろめんどいので(read.cgi バイナリとか)。
今日はもうちょっとしたらお出かけなので、
早くても今夜ぐらいあたりからかなと。 >>111 のパッチを 2.2.3 向けに更新しますた. >>199
どういうふうに使うのか全然わかってなかったり。。。
>>217 ime.nu(って今落ちてますか?)の <head>〜</head> 中に
<script type="text/javascript" defer><!--
onload = function(e) {
if (location.hash) {
document.links[0].href += location.hash;
document.links[0].firstChild.data += location.hash;
}
};
//--></script>
って入れてもらえばいいかと. すれ違いだけども、ime.(nu|st)、落ちまくりなのをなんとかしてほしかったり。
2ちゃんでリダイレクトを用意したりはしないのかしら。 >>218
>>200
当時の管理人のひろゆ子さんはjavascriptに否定的だったけど、
今の管理人のひろゆきさんはOKしてくれそうですね。 これは良いエセAjaxブラウザですね。なかなかいいですね。
でも若干読み込みが遅い気がする・・・ このスレ見てテキストのDATはXMLで保存するに限ると学習した 難しい話は良く判らないけど、このプロジェクトは
普通のブラウザを2ch専ブラ化するっていう認識で
OKなのかな?
そうすると、広告を見る人が居なくなる予感……
ひろゆきはそれでいいの?
これが軌道に乗った暁にはJs周りの脆弱性が見つかるたびに祭りになる
その中で名をあげるんだ http://www.ime.nu/efefe#fefefefe
http://efefe/#fefefefe#fefefefe
別のサイトにジャンプしようとしています。宜しければ上記のリンクをクリックしてください
#以降が2回でちゃうのはどうしてなんすかね。
おお、IEだと2回でるね。
Sylera(Gecko系)だと普通に1回だわ。 いやぁ、javascriptはとんとわからんですよ。
ヒント:JavaScriptの返すUA vs HTTPヘッダのUA こうこくgaippaiあるからー
onloadのたいむんぐがむちゃくちゃなよかんです♪ >>238-240
とりあえずUAで処理分ければいいんじゃないかね
偽装するような奴が普通のブラウザで見るとは考えにくいから >>243の書き込み失礼しました・・・
んで、IE6だと document.links[0].firstChild.data += location.hash; をコメントアウトしても
IE6だと表示もきちんと?#fefefefeが表示されますね
不思議です。 IEのバグの予感・・・
とりあえずブラウザ判別なんて難しいことやんらなくても、
<script type="text/javascript" defer><!--
onload = function(e) {
if (location.hash) {
document.links[0].href += location.hash;
document.links[0].firstChild.data += location.hash;
}
};
//--></script>
を
<script type="text/javascript" defer><!--
onload = function(e) {
if (location.hash) {
document.links[0].firstChild.data += location.hash;
document.links[0].href += location.hash;
}
};
//--></script>
にすればOKなはず。 おぉー、、解決しましたー。
何がどういう仕組みなのか皆目わからないまま。。。
http://www.ime.nu/tetete#fefefe href書き換えると中身まで書き換えるっていったい何してくれてるんだろIE わーい酔っ払ってるけどひろゆきの役に立ったと♪
>>247
IEのばぐなんできにしないでねー
>>249
中身と属性が一致するちょきのみ勝手に両方書き換える予感
IE6はセキュリティといい市場2番目に最悪なブラウザな気がしなくもない IEとFirefoxで正常動作を確認したけど他のブラウザではどうなの? Netscape Communicator4.8も愛用のFuuunも死亡するやもしれないと居う危機感を抱いています。
実際>>193のURLを読み込もうとしたら
読み込み中。。。
1 :[読み込み中。。。]:[読み込み中。。。]
[読み込み中。。。]
0 kB [ 2ちゃんねる 3億PV/日をささえる レンタルサーバー \877/2TB/100Mbps]
この状態から進みませんでした。
◆◇パンサー導入してもNetscape 4.x ◇◆ 第5章
http://pc7.2ch.net/test/read.cgi/mac/1068312522/l50
でも危機感が募っています。 ネスケ4じゃさすがにAjax関係は対応してないんじゃないかな イメヌもread-jsも重いなぁ
スペック低いとキツイ。専ブラだからいいけど 追加です。
Internet Explorer5.1.7
iCab2.9.9a
iCab30Beta382
マカエレ1.0x23
全滅
wamcom-131-macos9-20030723
かろうじて対応 最悪、XMLHttpRequestが使えればどうにかなる。
使えないなら従来のread.cgiって感じじゃね。 お......いない間に ime.nu の方は事が進んでたのね.各位乙ですた.
で,dso でやる時はフィルタ通した dat を mod_cache でキャッシュってのもやって,
さらに黒山羊対策の実験もしてうまくいくなら雪だるまにフィードバック,ってのはどうでしょう
......と思ったけど,mod_cache 使うなら 2.0 系より 2.2 系の方がいいんですよね.う〜む...... >>257
ぶっちゃけ、どうしようもない時だけread.cgiに飛ばすだけてもcgi稼働率は下がりそうだからなぁ。 先生!久しぶりに運用情報に来てみたら面白そうなスレッドを見つけました。
試せるレベルくらいまで進んでますか? ヽ=熊=/…なんかとまっちゃったから
(・(エ)・) ひろゆきに10ポインツあげておこう。
<| |つI
. | | 関連キーワードは
----------------------------------------------------------------------
var keywords = ["キーワード1", "キーワード2", "キーワード3"];
----------------------------------------------------------------------
のような形式で返してくれる I/F があると read.html にはふさわしいのかも.
もっとも,これはそのうちどうのこうのって話があったっけ...... どうのこうの、ぼちぼちってかんじですかね。
しかし8月は私の本業が黒焦げ状態だという噂も、、、。
ちなみに8月の夏期休暇はありません(とれません)。むぎゅー。 ネスケは見捨てられたと
◆◇パンサー導入してもNetscape 4.x ◇◆ 第5章
http://pc7.2ch.net/test/read.cgi/mac/1068312522/l50
伝えてこよう。 たぶん UA とかで調べて、NN 4.x だったらレガシーな read.cgi にフォールバックするとか、
そういう動作になるんでしょうね。
つまり、JavaScript が動かないクライアントと同じ動作になると。 2chもajax化するのかあ
将来的に専用ブラウザみたいなこともできるのかな
IDポップアップとか画像プレビューとか >>275 うほ。インラインサムネイル! 感動しますた
>>270
Winなら8以降かSeaMonkeyかFirefox、MacならSeaMonkeyか
Firefox使えと伝えて置いて下さい。 画像は面白いけど、実際入れるとなると微妙ですねえ(2chがプロキシ建ててくれるならともかく。) しばらくしたら外しとこう<画像インライン化
それまでは一時的なデモンストレーションってことでw [エラー]
1 :[エラー]:[エラー]
Not Found [ここ壊れてます]
1 :[ここ壊れてます]:[ここ壊れてます]
[ここ壊れてます] >>277
>MacならSeaMonkeyかFirefox使えと伝えて置いて下さい。
これはMacOSXの場合の話ですね。
>>270ですが、270のスレはMacOS9の人の為の物です。
しかし、>>256で示したようにMacOS9でも動作するwamcom-131-macos9-20030723
が動作しますし、>>271でrootさんが示されたようにNetscape Communicatorでも
大丈夫なようにしてくれそうですので取りあえず心配しなくて良いかも知れません。
Mac専用の専ブラのマカー用もまだしばらくはOS9に対応していてくれそうですし。 >>283 あぁ,dat は sunos.saita.ma に手動で突っ込んでるのだけしかないですw
http://sunos.saita.ma/read-js/operate/dat/
mod_charset_lite もない(共用鯖で入れられない)ので UTF-8 への変換も手動で.
http://sunos.saita.ma/read-js/operate/dat-utf8/
まぁ,今このスレの dat も入れますた. >>283
つまり、実際にdatが取得できないとテストとしての意味がないということですかな? まぁ,そのうちむむむさんが dso 鯖に入れてくれるんじゃないかと...... Personalizedがあったらいいよなあ、と夢見 >>290
Classic環境のNetscape 7.02でも文字化けしてダメですた。
一応参考までに。 画像インライン化機能は外しますた......
で,>>298 のような文字化けなんかもヘッダの設定で何とかなるかどうかですね.
そのあたりも mod_headers の使えない sunos.saita.ma だとアレなんで,
dso に入れてもらったら確認ってことで...... >>295
例えば、SunOS さんが dso サーバに入ってみるとか。
# 今日は「体を休める日」につき、作業は基本的にここまでで。 >>301 えーと,1U の鯖に入れるようになるには相当ダイエットしないと(ry
ってのはともかく,入れるようになるなら確かにそれも一つの方策かも...... ええーっと、こうですかね
ttp://s00516.pussycat.jp/neko/hairuneko52.jpg PC たたむ前に見たら、早くもご本人からのレスが、、、。
>>302
> ってのはともかく,入れるようになるなら確かにそれも一つの方策かも......
方策ですね、えぇえぇ、方策ですとも。
というか、入れないなら、どうすれば入れるようになるかの方策を考えるのが(りゃ。
いかがでしょうか。> 管理人
これってつまり、>>267 ということでいいのかしら。
…今日はここまで。おやすみなさい。 >>303 かわいいですね.でも 1U だとまだまだ......
>>304 ともあれ,乙です&お休みなさい.
# てか,何が起こるのかな......ドラえもんが登場して鯖に入れるように
# スモールライト渡されるとか...... >>304
いいんでないすかね。
( ̄ー ̄)ニヤリッ >>307
どうか眠らせてあげてくださいです。。。
「 ̄ `ヽ、 ______
L -‐ '´  ̄ `ヽ- 、 〉
/ ヽ\ /
// / / ヽヽ ヽ〈
ヽ、レ! { ム-t ハ li 、 i i }ト、
ハN | lヽ八l ヽjハVヽ、i j/ l !
/ハ. l ヽk== , r= 、ノルl lL」
ヽN、ハ l ┌‐┐ ゙l ノl l
ヽトjヽ、 ヽ_ノ ノ//レ′
r777777777tノ` ー r ´フ/′
j´ニゝ l|ヽ _/`\
〈 ‐ _,,..,,,,_ lト、 / 〃ゝ、
〈、ネ./ ;' 3 `ヽーっ.lF V=="/ イl.
ト |l ⊃ ⌒_つ とニヽ二/ l
ヽ.|`'ー---‐'''''" 〈ー- ! `ヽ. l
|l夜は眠い lトニ、_ノ ヾ、!
|l__________l| \ ソ >>271
それは考え方が逆だべ。
> たぶん UA とかで調べて、NN 4.x だったらレガシーな read.cgi にフォールバックする
UA とかで調べて、動作に問題ないとわかってるものなら read.html(?) に行く
にしないと。
と、以前の root 氏なら考えたと思うんだが。 むにゃむにゃ。
>>307
了解です。niyr
>>311
オプトアウトではなく、オプトインですか。
つまり、そのぐらいのものであると。< JavaScript う、レスアンカーの番号が。
ま、いっか。
今は二度寝するです。ぐーぐー。 >>310
負荷対策も兼ねてるのだから、マイノリティの方がコスト高くなるのが当然では CGI叩かないなら人多杉っていう概念そのものがなくなるんじゃね? まぁ,メジャーなブラウザを一通りカバーすればシェア的には9割以上は逝くでしょうし.
特に JavaScript のようなものは,作る立場からしても,挙動のよくわからない
マイナーなものまで対処するより,メジャーなところを押さえておけばいいという方が
遙かに楽ではあります......ってことで,動作確認ができたブラウザを
JavaScript 版に回すホワイトリストに入れるって形にすればいいかと. セガBBSはサターンモデムでもチェックしていたんだろうな。 紅玉タンが動作確認してくれたけど、os9.1のicab3.0で文字化けなく表示されてまつ
スレ内の外部リンクはundefinedになってまつが。
ただ、iCabは激遅なので、
http://sunos.saita.ma/read-js/test/read.cgi/operate/1153615149/l50
で試しますた。
os9.1のmozillaではスレタイの下に出る入力ボックスが出ないでつ >>319
私が試しましたのはベータ版では無い2.9.9です。
“iCab3.0Beta382”では激遅ながら表示するのは確認しましたが未だ開発途上版ですので
この先どう変わるかもわからないので報告いたしませんでした。
また、“wamcom-131-macos9-20030723”はMozilla 1.3.1 をベースに安定性と、
セキュリティーを向上させるために数百のパッチ を当てた安定志向独自ビルドですので一概に
Mozillaと一緒くたにしてはいけないと考え、別にしています。
ちなみに“iCab3.0Beta382”と“wamcom-131-macos9-20030723”では
“wamcom-131-macos9-20030723”の方が早いです。 >>310
それじゃread.cgiをすべてのクライアントで一度は叩いちゃうじゃない。
負荷対策にならない。
つーかここまで誰も話を持ち出してないのが不思議だがレス番号指定はどうする
つもりなの
現状ではCPUが貴重で転送料をじゃぶじゃぶ使った方が引き合うのかな いや、Webサーバーの機能使ってread.htmlかread.cgiかを選べるのよ。 >>320
いや、>>256で全滅リストにicab3.0が入っていたんで。。。
ここでmozillaというのは1.3.1とwamcomで同じ結果だったからでつ。
もちろん、icabよりmozillaの方が快適でつ。
単なる動作報告のつもりだったんだけど。。。 >>319-320 >>324 報告どもです.自分では Mac に関して直接確認できないので助かります.
>>321 振り分けるとすればたぶん mod_rewrite とか使うのではないかと.
あと,↓ということで現状では転送量はあまり問題ではないようです.
http://qb5.2ch.net/test/read.cgi/operate/1149664022/81-82n
# なんか,むしろ「トラフィックを増やしてピアリングを有利に(ry」
# とかいう話も出てくるぐらいのようなんでw .cgiにこだわらなければmod_negotiationも使えそうに思えるが、使えないや。 スレ違いですまんけど、
>>325
GZIPをなしにする方が、ありよりも負荷が減るんじゃないの? >>327 確かにそうかも,ってか圧縮なしなら sendfile() 一発だから
遙かに効率的ではあります. ちょうど8月だし、毎年恒例の「2ちゃんねる閉鎖危機」を演出しながら
JavaScript版を導入していくのはどうだろう。
・サーバーの負荷で2ちゃんねる閉鎖の危機!
・次々と閉鎖していく掲示板
・そこでJavaScript導入、一気に負荷が16分の一に!
・感動のFLASH作成
・BGM:蛍の光 何気に運営来て見たら面白いことになってるし
サンプルすげー
管理人の気まぐれをここまで形にするなんて
あんた達すごいよ感動した ここにいる人たちのスキルってすごいって感じた
自分は最近触れたばっかだからわかんないけど うーむ、スクリプトが何らかの理由によりエラーになるとスレも読めなくなるのか・・・
例外処理である程度は回避可能なのかな レス番表示のあと全部を押すとフリーズしたみたいになるなあ
しかも戻るでレス番表示に戻れない >>324
> いや、>>256で全滅リストにicab3.0が入っていたんで。。。
すんません。たぶん激重だったか何かでダメだと判断したんです。 >>333-335
>アドレスバーで移動ができんな
例えば
http://sunos.saita.ma/read-js/test/read.html#operate/1153615149/l50
を表示してる時に
http://sunos.saita.ma/read-js/test/read.html#operate/1153830220/l50
をロケーションバーから入力して意図した通りに表示されない,という意味なら
それはブラウザの仕様ってことですね.「"read.html" というページ中の
"operate/1153830220/l50" という場所に移動」と解釈することになり,
"read.html" というページ自体はそのままということになってしまうので.
この問題に対処するため,例えば上部の「全部 1- 101- 201- 301- ...」や
下部の「全部 前100 次100 最新50」というリンクでは JavaScript で
細工してるわけですが...... まぁロケーションバーから直接入力した場合は
その後にリロードすれば正常に表示されるかと.
>レス番表示のあと全部を押すとフリーズしたみたいになるなあ
たぶん,長いスレで全部表示する場合は重くて時間がかかるのかと......
>しかも戻るでレス番表示に戻れない
これは,上記のような細工による影響ですね. location.hashの変更ってブラウザで検出できないの?
そんなことないと思うんだが >>338-339 read.html までが同じで # 以降だけを変更した場合,
ページを再ロードせず # 以降で指定された id (またはアンカー)を探し
その場所に移動する,という挙動になるようです.
つまり現在表示中のページ内での移動だけが行われるということで,
load イベントは発生しないようです.そこで,「全部 1- 101- 201- 301- ...」
等のリンクについては onclick イベントハンドラを使って細工してるんですが,
ロケーションバーから直接入力された場合はしょうがないような......
setInterval() とか使ってロケーションバーの変更をポーリングするってのは
あまりに効率が悪すぎるし(どれだけのユーザがそういう使い方するかわからないのに
無駄に CPU パワーを消費するだけのような気がするし).
「そういう使い方する場合はロケーションバーに入力後リロードして下さい」
ってことにした方がずっと単純明快という気がします. >>340
>setInterval() とか使ってロケーションバーの変更をポーリングする
方法のもう一つの問題点はページ内リンクですね.>>nnn で指定したレスが
現在表示中のページ内にある場合は,再レンダリングせずその場所に
移動するようになってますが,前述のようなポーリングをすると,
そのレスだけを表示するような再レンダリングが発生してしまいます...... むむむさんは8月休み取れないとか言ってたような気がするけど,
短いとはいえ休みが取れたようで,めでたしめでたし.
で,read.html はとりあえず dso に突っ込んだら,動作確認とか
ブラウザ振り分けの RewriteRule 考えるとか,そんな感じかな. どうせdatファイル全部取得しちゃうんだから、無理して全部表示しなくても、
少しずつ表示すれば、ブラウザが重いってのは解消されるのでは? >>345 ネックというより,実際 dso でテストできる状態になる(read.html を
入れられる状態になる)のを待ってるところかな,と.
大きな問題として,Shift JIS のままの dat だと IE で 304 Not Modified が
返ってきた場合文字化けするって問題はあったんですが,mod_charset_lite で
on the fly に UTF-8 に変換することでそれは解決できるかな,と.
あと,Opera とか Mac とか,その辺の自分では直接動作確認できないブラウザで
いくつか不具合報告はあったようですが,そのあたりは Cache-Control 等の
ヘッダ設定で回避できるかどうか,ってのを確認したいところですが,
それも dso 待ちってところで...... 偉大な管理人からのありがたい指令に基づき、
今日はPCを開かずに休もうと思うのです。はい。 1GB 超達成w 立ち上げ直すか......
PID USERNAME SIZE RSS STATE PRI NICE TIME CPU PROCESS/NLWP
20637 nanashi 1001M 395M sleep 49 0 4:03:15 20% firefox-bin/5 dso でテストできる状態って具体的には、
何が必要なんでしょう?
>>356
そんな事より、今のじっぷらを何とかしてくれ >>356
1. むむむさんかひ(ryさんが read.html(やそれに付随する *.js)を
dso に入れる.さらに,httpd に mod_charset_lite を組み込む(要パッチ).
2. >>301-307 を進めて頂ければ私が(ry 本名:tiger506.maido3.com
芸名:dso.2ch.net
IP アドレス:206.223.152.30 ∧_∧ +
(0゜・∀・) ワクワクテカテカ
(0゜∪ ∪ +
と__)__) + おれのミャンマー、ヤンゴンがひろあきに蹂躙されるうううう >>369 受け取りました.ではぼちぼちと...... http://dso.2ch.net/test/read.html
を置きますたが,一般ユーザ権限で不能なことがあるので,現状ではまだ使えません......
>>114 の点については APU_HAVE_ICONV が 1 なので Ok.
で,mod_charset_lite.so はあるものの httpd.conf で組み込まれてない
(さらに,どちらにしろ >>111 のパッチが当たってないと思うのでこのままでは使えない),
さらに >>208 のような設定も httpd.conf に必要,ってことで......
# ただ,直接 read.cgi に read.html を割り当てるのでなく,
# User-Agent を見て振り分けるなら >>208 も修正が必要ですね. まずは、
( ̄ー ̄)ニヤリッ
で、いいのかな。よくわかりません><.
そんなわけで、権限が必要な作業は、
本日以降たんたんと、ということで。 >>111 のパッチを改めて更新しますた.で,httpd.conf に入れる設定はこんな感じか.
----------------------------------------------------------------------
LoadModule charset_lite_module libexec/apache2/mod_charset_lite.so
<Location /*/dat-utf8/*.dat>
SetOutputFilter XLATEOUT
CharsetSourceEnc CP932
CharsetDefault UTF-8
CharsetOptions NoImplicitAdd IgnoreIlSeq
AddDefaultCharset UTF-8
Header append Cache-Control max-age=5
</Location>
<Location /test/bbs-utf8.cgi>
SetInputFilter XLATEIN
CharsetSourceEnc CP932
CharsetDefault UTF-8
CharsetOptions NoImplicitAdd IgnoreIlSeq
</Location>
<VirtualHost ...>
# ServerName dso.2ch.net のところ
AliasMatch ^/(\w+)/dat-utf8/(\d+\.dat)$ /home/ch2dso/public_html/$1/dat/$2
Alias /test/bbs-utf8.cgi /home/ch2dso/public_html/test/bbs.cgi
</VirtualHost>
----------------------------------------------------------------------
ブラウザ振り分けの RewriteCond / RewriteRule なんかは .htaccess でもよさそうということで. >>374
どもです。
時間とれ次第、やるです、やるです。 んで、入れようと思うのですが、、、。
dso は諸事情により、Apache 2.0 系を使いたいのです。
ということで >>111 のパッチを、Apache 2.0.59 用も出してもらえるとうれしいです。
あと、dso サーバでは、read.html を read.cgi として動かそうと思っているので、
その設定についても、>>374 に入れておいてもらえるとうれしいかなと。 …って、mod_charset_lite って、Apache 2.0 系にはないのかしら。
うーむ。だとすると、ex11 あたりのほうがいい? < テスト環境 >>378
>ということで >>111 のパッチを、Apache 2.0.59 用も出してもらえるとうれしいです。
というか,基本的に 2.0 系と 2.2 系ではモジュールのソースは互換性があるんで,
単に 2.2.3 の mod_charset_lite.c を持ってくればいいのかと.
http://svn.apache.org/repos/asf/httpd/httpd/tags/2.2.3/modules/filters/mod_charset_lite.c
これにパッチ当てて,単純に apxs でビルドすれば Ok と思いますんで.
>dso サーバでは、read.html を read.cgi として動かそうと思っているので、
まぁ RewriteRule は httpd.conf でも .htaccess でもどっちでもいいかとは思うんですが
RewriteRule /?read\.cgi(?:/(.*))?$ /test/read.html#$1 [R,NE]
read.html は PATH_INFO 形式でも受け付けますが(さらにいうと QUERY_STRING 形式も可)
location.hash 形式推奨ってことで上記のルールでは external redirect にしてます.
もし,external redirect にせず PATH_INFO のままで扱うってことなら
RewriteRule /?read\.cgi(/?.*)$ /test/read.html$1 >>380
> というか,基本的に 2.0 系と 2.2 系ではモジュールのソースは互換性があるんで,
> 単に 2.2.3 の mod_charset_lite.c を持ってくればいいのかと.
> http://svn.apache.org/repos/asf/httpd/httpd/tags/2.2.3/modules/filters/mod_charset_lite.c
> これにパッチ当てて,単純に apxs でビルドすれば Ok と思いますんで.
なるほどです。
> まぁ RewriteRule は httpd.conf でも .htaccess でもどっちでもいいかとは思うんですが
> (りゃ。
ふむふむ。
これでいけそうですね。
今日はこれから事情があるので、その後にでもじっくりと。 質問・雑談スレッドに書いたんですが運営の人が降臨しなさそうなのでこちらに書かせて頂きます
運営の人に教えて答えてもらいたいんですけど
2ちゃんねるのTOP→掲示板から入ると2ペインで片方が板一覧のまま残り
何回かスレを開いたり書き込むと消えるけど、プログラム的にはどのような仕組みになってるんですか? 色々なところで同じことを聞く行為は
マルチポストと呼ばれ忌み嫌われております
質雑に帰れ >>383
聞くべきスレッドが見当たらなかったので
>>384
質雑に運営の人は来んだろ、ただ聞き流されるだけ 正直JavaScriptで動かそうとしてる馬鹿は死ねばいいと思う
ってレスをどっかでしたんだがな…
誰か拾ってきてくれ >クライアントサイドスクリプトに処理を集約しようとしてる馬鹿は正直死ねばいいと思う。
>
>宣撫らのこととか考えてんのか?Safari、Opera、FireFoxのこと考えてるのか?
>
>自分でろくにJavaScriptの許可不許可を設定できない奴のこと考えてるのか?
>
>壷やらモリタポやらで膨大な、幅広いユーザーから金とっといて、考えてないってことはないよな?
>
>ん?
この前誰かOperaでろくに表示されないようにBe板作り変えたときのレスだ
互換性ぐらい考えろよな 管理人の言葉は、
「長いものには巻かれましょう」
だったはず。
ソースは、どこだったかな。
いつだったかの、2ちゃんねる公式ガイドだったと思うです。 まぁ,実用段階では User-Agent による振り分けで,read.html に対応できないブラウザは
従来版の read.cgi に振るようになるかと.
あと,自分自身が Firefox ユーザなんで Firefox には対応するように作ってます.
Opera とかその辺は自分では直接動作確認できないものの,可能なら対応できるように
したいと思いますが,対応不能なら上記のような振り分けで従来版の read.cgi に振ることになるかと. さて、お待たせしましたが、いよいよ設定するです。
寝るまでに、dso で read.cgi という名前で dso で動かすことができて、
SunOS さんが開発をすすめられるようにしようかと。 + +
∧_∧ +
(0゚・∀・) ワクワクテカテカ
(0゚∪ ∪ +
と__)__) + あ、しまた。
運営の人じゃないんだった。ごめんなさい。 >>389
そうか。
俺は宣撫らだから別に困らないけど…開発するのならOpera落としてテストするべきだよと一言。
その辺がめんどくさいのなら最初から携わるなともう一言
不許可の場合も<noscriptで飛ばすとか何とかしてちゃんと対応汁
とりあえず頑張ってください 文句が出てから対応するという2chメソッドでしょう >>391
ぐぐれかす
>>396
もともと整った組織じゃないから仕方なす mod_charset_lite + patch の組み込みはできた模様。
これから、httpd の設定へと。 >>398
2ch仕様なんてググっても分かるはずがないだろ
運営じゃなくて誰でも良いから答えてくだしい >>400
プログラム関係ない
)、._人_人__,.イ.、._人_人_人
<´ 天狗じゃ、天狗の仕業じゃ! >
⌒ v'⌒ヽr -、_ ,r v'⌒ヽr ' ⌒
// // ///:: < _,ノ`' 、ヽ、_ ノ ;;;ヽ //
///// /:::: (y○')`ヽ) ( ´(y○') ;;| /
// //,|::: ( ( / ヽ) )+ ;| /
/ // |::: + ) )|~ ̄ ̄~.|( ( ;;;|// ////
/// :|:: ( (||||! i: |||! !| |) ) ;;;|// ///
////|:::: + U | |||| !! !!||| :U ;;; ;;;| ///
////|::::: | |!!||l ll|| !! !!| | ;;;;;;| ////
// / ヽ::::: | ! || | ||!!| ;;;;;;/// //
// // ゝ:::::::: : | `ー----−' |__//// まずは、dso サーバだけ、
従来のは read-dso.cgi という名前で動くようにした。 >>404
動いたようですね。
しかし、これはすごいです。
今日は記念日かな。 dso の bbs.cgi は古くてランクとポイントの対応も他の鯖と同一ではないかも? すげえ
どうやってるのか分からないけど部分取得にも対応してるのか
で、バグ報告
クッキー確認のダイアログに同意してもその後書き込まれないで止まってしまいます >>410
なるほど。
とりあえず、最新の bbs.cgi に入れ替えてきます。
今のやつは、リネームして保存しておくです。 >>411
bbs.cgi を更新したんで、
もう1回試していただけると。 >>412のおかげか、ちゃんと書き込めるようになりました。 すごいっすね。クッキーというか前の結果もちゃんと残る?
でも、本文欄のは、いろんな意味で残さないほうがいいですね。 >>416
>でも、本文欄のは、いろんな意味で残さないほうがいいですね。
投稿成功時に本文欄をクリアするようにしてみますた. >>418
おつです。早いすね。
あとは、さくさく進めていけそうな感じ? 乙ですお
★☆スレッドストッパー試験所inみゃんまー6☆★
1 :高瀬川@師匠闇神様 ◆uEP6Z9AQTI :2006/07/01(土) 22:52:00 ID:???
・
・
・
●age!!こそが真の勇者
●ちゃんと寝ましょう。
前スレ ★☆スレッドストッパー試験所inみゃんまー6☆★
undefined
~~~~~~~~~~
↑
ミスかな… http://dso.2ch.net/test/read-dso.cgi/myanmar/1151761920/
にて末尾に
Hello 2ch !!
ERROR NO=0
maxLA=16.000000
LA=0.571777
2006/08/13 03:59:02 日本時間が取れるようになりました。
/myanmar/1151761920/ PATH_INFO
(null) QUERY_STRING
/home/ch2dso/public_html/test/ cwd
/home/ch2dso home
dso.2ch.net server name
ita[myanmar]
key[1151761920]
res[]
dat[/home/ch2dso/public_html/myanmar/dat/1151761920.dat]
where[1]
size[66260]
time[2066833856] LastModifyed 今回は無しの方向で、
lineN[535]
subject[★☆スレッドストッパー試験所inみゃんまー6☆★]
st[1]
to[534]
ls[0]
nf[0]
xxx[] >>419 ですかね.あとは不具合報告に対処しつつ,対応可能なブラウザとそうでないものの
振り分けを考えていくってかんじですかね.
>>420 ん〜と,ちなみにブラウザは何でしょうか......? 自分の Firefox では
>前スレ ★☆スレッドストッパー試験所inみゃんまー6☆★
>http://dso.2ch.net/test/read.cgi/myanmar/1149217221/
になってますが...... >>422
これは、そういうもんですね。
デバッグ用出力ということで。 でもって
<noscript></noscript>をヘッダにぶちこんで
metaでread-dso.cgiに飛ばす。metaで飛べない人のためにもちアンカー設置 >>425
そのへんは、これからぼちぼちかな。
今日はそろそろ、新しい ThinkPad が呼んでいるみたい。 >>423
おっとすまん!!Operaだった
>>424
把握 read-dso.cgi というのはちとださいかな。
read.so にしておこう。 >>428
done.
これで、JavaScript がだめぽな場合、read.so にフォールバックするかんじで。 readso.cgi
の方が見慣れてるような気がしなくもないww
寝る
おっ おっ おっ カッチン
カッチン
. (^ω^ ≡^ω^)彡 ミ
. ( ∪ ∪ \†/
と_)_) .△ >>427 なるほど...... Opera の String.replace() の挙動がどうなってるか,ってあたりかな......
>>425 いいアイデアかも知れませんが,静的な HTML ファイルでは
指定された板・スレッドキーは取得不能なので,直接 read.so に
ジャンプ可能にするのは困難かも...... 説明ページなどを別途作って
そちらにリンクするとか,そんな感じになるかも...... >>431
> 説明ページなどを別途作って
> そちらにリンクするとか,そんな感じになるかも......
今は、それでいいんじゃないですかね。
JavaScript がない人は、1クリック増えちゃうけど。 試したけどやっぱりhashはいまいちだなあ。
戻るがきかない。
あと、IEだとスレの保存ができない
Firefoxだとスレの保存はできるが
保存したスレを開くと
_onload(e);
でエラー(too much recursion)になる
(IEで開くとStack overflawとでる)
で、OKなブラウザでも普通のread.cgiへのリンクはあったほうがいいな
(scriptで生成する) で、>>77 あたりは、どうなんですかね。
JavaScript が、やはりいいんだろうか。
# そろそろ眠気来たかな。 試してみたけどAjaxの書き込みは凄い快適だな
専ブラ使ってるみたい。 >>433
>試したけどやっぱりhashはいまいちだなあ。
>戻るがきかない。
まぁ,上の方でも話してましたが,(JavaScript に限らず Java や Flash などでも)
このようにクライアント側で HTML 整形することになると,外側の html と
中身の dat の双方の HTTP リクエストが発生し鯖へのアクセス数は増加することになって
負荷軽減という面で見れば微妙になってしまうと.ここで,PATH_INFO 形式などでは
板・スレなどの指定が変わった際に外側の html のキャッシュが効かない,
それに対し location.hash ならキャッシュを有効活用できる,ってことなんで......
あと,これでスレの保存をした場合はどちらにしろ外側の html しか保存されず
中身の dat は保存されないので,保存に不向きなのは確かですね.read.so への
リンクを入れるとして,どのあたりに入れるのがいいですかね...... >>438
|あと,これでスレの保存をした場合はどちらにしろ外側の html しか保存されず
|中身の dat は保存されないので,,保存に不向きなのは確かですね.
Firefoxだと書いた状態で保存されたので一応表示はできた
(だからスレの保存はできると書いた)んだけど、自分で確認してみた? チェックのため Opera もダウソしてみた.このプラットフォームにも対応してるのは偉い.
http://jp.opera.com/download/index.dml?opsys=Solaris%20Intel&lng=en&ver=9.01&platform=Solaris%20Intel&local=y
>>439 あぁ,「完全」の形で保存するとそうなるのね.しかし,そうなるとなおさら
保存に不向きですね.JavaScript 側で想定してない HTML の構造になっちゃうんで.
強いて言えば,「完全」の形で保存したのなら JavaScript オフにしてから表示すればいいのかも. 保存っていうリンクを右クリッコ→対象をファイルに保存
じゃないけど、そういう案も考えてみた方がいいかも。 >>442 従来のサーバ側で HTML 化する read.cgi と同じものですね. >>438
> ここで,PATH_INFO 形式などでは
> 板・スレなどの指定が変わった際に外側の html のキャッシュが効かない,
> それに対し location.hash ならキャッシュを有効活用できる,ってことなんで......
>>380 にあるやつを、
RewriteRule /?read\.cgi(?:/(.*))?$ /test/read.html#$1 [R,NE]
(上のやつ)
にしてみた。 で、やっぱり画面上で read.html になるのも、微妙にあれですね。
画面上は read.cgi で表示してほしい(ファイルは read.cgi という名前で置く)
とすると、どうすればいいのかしら。
確か、前にもこの質問したと思うけど、改めて。 鯖サイドとクライアントに上手に処理を分散させることはできないの?
そうすると何かとあとあと便利かなと思ってるんだけど…めんどくさい? なんとなく紛らわしい
パンツもふんどしも同じ股間を隠すものだけどふんどしをパンツとは呼ばない >>451
read.cgiでみんな慣れてる→ログとかも参照しやすい?分かりやすい?
↓
↓
JavaScript使用不可<使用可能
なのかな? ようするに今まで慣れてるものにより一般的なものを対応させておいた方が何かと不具合起きにくいってことを言いたかった。
分かりにくくてすまn >>http://dso.2ch.net/test/read.cgi/myanmar/1155409133/37
Opera 完璧です。
Firefox beフィルタ(画面右上)が表示されず
IE ランタイムエラー 120行目 文字の繰り返しを表す正規表現演算子が不正です。 >>447
<Files read.cgi>
AcceptPathInfo On
ForceType text/html
SetHandler default-handler
</Files>
>>449 read.cgi という同じ名前でアクセスしても,対応ブラウザなら read.html,
非対応ブラウザなら read.so,にそれぞれ振り分けるって形になると思います.
ただ,User-Agent の判定はできても JavaScript の on / off の判定は
サーバ側ではできないので,対応ブラウザでも JavaScript off の場合の
“逃げ道”として read.so という名前で参照できるようにする意味はあるかと.
>>454 Firefox, IE のバージョンはいくつでしょうか?
Firefox 1.5.0.x, IE 6 なら動くんですが...... >>457 あ〜,何かこれは FreeBSD で使ってる GNU iconv のバグっぽいのかな?
% perl -e'print "\x81\x60";' | iconv -f sjis -t utf-8 | iconv -f utf-8 -t ucs-2be | od -txC
0000000 30 1c
0000002
% perl -e'print "\x81\x60";' | iconv -f cp932 -t utf-8 | iconv -f utf-8 -t ucs-2be | od -txC
0000000 30 1c
0000002
% iconv --version
iconv (GNU libiconv 1.9)
Copyright (C) 2000-2002 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Written by Bruno Haible.
Solaris の iconv だと正常のようですが.
% perl -e'print "\x81\x60";' | iconv -fsjis -tutf-8 | iconv -futf-8 -tucs-2be | od -txC
0000000 30 1c
0000002
% perl -e'print "\x81\x60";' | iconv -fcp932 -tutf-8 | iconv -futf-8 -tucs-2be | od -txC
0000000 ff 5e
0000002 >>455
>バージョンはいくつでしょうか?
Firefoxは、 Mozilla/5.0 (Windows; U; Windows NT 5.1; ja-JP; rv:1.7.5) Gecko/20041108 Firefox/1.0
IEは、5.0
Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0) >>459 どもです.Firefox は 1.0 ですか...... ひょっとすると
script エレメントを動的に作成しても実行してくれなかったりするのかな......?
タイミング的には read.html 中の JavaScript でスレ内容を書き出してからでないと
be.js の onload() を実行しても意味ないんで静的に読み込ませるってのもアレですし
(さらに,be.js は read.html だけでなく従来型の read.cgi や index.html にも
適用可能に作ってあるので,それとの兼ね合いもありますし)......
まぁ,be.js が担ってるのは主に旧 BE 板にあった機能なんで,それがなくても
致命的でないということなら,そのままでご了承頂くというのも一つの道かも......
あと,IE は 5 ですか...... IE 5 で対応してない正規表現はどれなんだろう...... >IE 5 で対応してない正規表現はどれなんだろう......
ひょっとして (?: ) かなぁ......? ロケーションバーから
javascript:try { alert(/(\w)(?:\w)(\w)/.exec("abc")); } catch(e) { alert(e.message); }
と入力するとどんな具合でしょうか?<IE 5 携帯のフルブラウザから書くとどうなるんだろと思ったがPCSV焼かれてるんだっけ >>461
結果の画面をキャプチャーしますた。
http://up.80.kg/test/read.cgi/banana100m/1153303306/43
Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0) 今の段階でIE5やfirefox1.0に対応する意味は皆無じゃないんでしょうか
という素朴な感想 5.5が配布されていないからねぇ
98の人は5のままって人も多いかもね
5ならOfficeに入っていたりするし 古いブラウザの方はc-otherでも使っていて下さい。 >>461
\wが駄目みたい。。。[0-9A-Za-z_]に置き換えするべし >>463-464 ありがとうございます......ただ,こちらが期待していたのは
>>461 の JavaScript を実行した際に出てくるダイアログの表示を知りたかった,
ということなんですが......やはり「正規表現演算子が不正です」だったのかな?
あと,そのサイトにある「正規表現の構文」
http://msdn.microsoft.com/library/ja/script56/html/js56jsgrpregexpsyntax.asp
では \w も (?: ) も使えることになってるはずですが......やはりバージョンの問題かな.
>>465-468 まぁ,\w も (?: ) も ECMA-262
http://www.ecma-international.org/publications/standards/Ecma-262.htm
に規定されてるものなんで,これに対応してないブラウザは read.html 非対応扱いで
read.so に振り分けってことにしてもいいかな,という気もしてます.
sunos.saita.ma へのアクセスで IE のバージョンの内訳を見ると↓な感じですし,
特に強い異論がなければ......
7.0 1.4%
6.0 95.6%
5.5 1.2%
5.01 0.4%
5.0 0.6% 5.5から書いてます。
ダメならダメで振り分けてくれればいいかなという感じで。 >>470-471 なるほど,ありがとうございます.
>>421 のスレでは IE 5.5 SP2 でダメという報告もあるようですが......
対応はエラーの内容次第かな...... >>449
なるほど、
read.cgi はそのままに、subback.html とかそのへんで read.html を出すとか、
そういうのはどうか、ってことですか。
このへんは、考え方次第ですかね。 >>458
およよ、iconv のバージョンアップが必要とか。 >>474 GNU iconv は常用してないので詳しくないですが,BE の dat を
iconv にかけてた時にどこかのスレでどなたかがパッチを提示してませんでしたっけ?
バージョンアップだけで済むのか,それともさらにパッチが必要なのか,詳しくないので...... >>472
もちろん、まゃんまーではIE5.5はダメで、>461を>468へ置き換えると、「abc,a,c」のダイアログが表示されるということです。
Monazilla/1.00 (JaneStyle/2.41) ってことは、
・bbs.cgi では、read.html#なんちゃら を生成する
・read.cgi は従来どおり動かす
あたりが、いい感じなのかな。
ぼちぼち、やってみますかね。 GNU iconv の最新版が 1.9.2 で,
http://www.gnu.org/software/libiconv/
http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.9.2.tar.gz
それに対する CP932 パッチがあるようですね.
http://www2d.biglobe.ne.jp/~msyk/software/libiconv-1.9.2-cp932-patch.html
>>476 なるほど......となると,5.5 も read.so に振り分けの方向かな...... WITH_EXTRA_PATCHES=yes で ports から libiconv を作ると、
>>478 のは、入るみたい。 てなわけで >>478 ありの iconv に入れ替えるのは、今日寝るまでにやるです。
bbs.cgi は、気が向いたら取り組むぐらいで。 >>481
テクニカルには可能です。
あとは「どうするか」ですね。
個人的には、ブラウザに表示されるアドレスは、
変わってもいいかもとか思っていたり。
だって昔は、PATH_INFO 形式じゃなかったわけで。
従来のものとの互換性がとれるなら、いいんじゃないのかなと。 >>481 あえて / ではなく # を使うということには相応の理由があるんで (>>438)......
まぁ,もし仮にサーバ負荷のことなどを考慮しなくてもいいという前提なら / のままでもいいんですが.
あと,JavaScript 版については /test/read.html#...... という URL がデフォルトに
なる方向なのかも知れませんが,従来通りの /test/read.cgi/...... という URL でも
アクセス可能な状態は保たれるようにするということで. ただ,subback.html に埋め込む URL を /test/read.html#...... にした場合の問題点は,
非対応ブラウザからのアクセスをリダイレクトで read.cgi に飛ばすのに困る,ってことですね.
サーバには URL の # 以降の部分は渡されないので,PATH_INFO 形式の read.cgi 用 URL を
生成できないってことになるんで...... 逆に,PATH_INFO 形式でアクセスしてきたのを
location.hash 形式の URL にリダイレクトさせるのは可能ですが.
あるいは,subback.html を JavaScript 対応版と非対応版の二種類作って
subback.html の段階で振り分けるとか......とはいえ,これも大変か...... WITH_EXTRA_PATCHES=yes で libiconv を作り直し、
libiconv に依存している ports を作り直しました。
mod_charset_lite のパッチ版も、作り直しました。 で、bbs.cgi ごにょごにょして、
read.cgi を従来バージョンにするのは、
ちと、明日以降にじっくりとというかんじで。 >>485 乙です.iconv は正常になったようですね.
% perl -e'print "\x81\x60";' | iconv -f sjis -t utf-8 | iconv -f utf-8 -t ucs-2be | od -txC
0000000 30 1c
0000002
% perl -e'print "\x81\x60";' | iconv -f cp932 -t utf-8 | iconv -f utf-8 -t ucs-2be | od -txC
0000000 ff 5e
0000002
% iconv --version
iconv (GNU libiconv 1.9)
Copyright (C) 2000-2002 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Written by Bruno Haible.
>>486
>なおた
ようです. #でリンクする場合、IEでは未読リンクと既読リンクの区別がつかなくなるような 文字コード変換のライブラリってjsではないんですかねぇ。。 文字コード問題なら>>125の方法もあるよ。javascript側でも出来るけど
実用に耐えられないんじゃ >>490
文字コードもクライアントで変換させたいと。 JavaScriptには生のバイト列をサーバーから受信する方法はなさそうですから、変換も何もないかと思われる。 少なくとも、文字化けしないと分かってるブラウザは /dat-utf8 じゃなくて /dat を
使うようにできませんか。 確か /dat を直接使えば変換の必要はないけどそれだとキャッシュから読み取ったとき
IE6 が文字化けするんだっけ? で>>499と。 文字コードの変換コストが高い気がするのです。
>>503に同意なのですが、IE6以外は大丈夫なんですか? >>505
文字コードの変換コストは、圧縮処理(mod_deflate)よりも断然低いですね。
文字コードの変換にこだわるなら、
圧縮を段階的にやめることを検討したほうがよさげかもです。
昔とは事情が違うわけですし。 で、圧縮は、ようは CPU 負荷というコストを使って、
転送量をセーブすることにより、何か得られるものがあるから
(例えばお金の節約とか)、やっていると思うわけです。
で、もし仮にですが、圧縮で得られるものが圧縮で使うコストよりも少ないのであれば、
それは「労多くして益少なし」ということなんではないのかなと。
PIE に移ってからは、定価のタリフのうえでは「帯域については完全保証(料金は変わらない)」と
言っているので、そのあたりのコスト感覚というか計算についても、いろいろと検討してみる必要が
あるのかもしれないのかなと。
# ただ、今の standard banana でいきなり圧縮やめると、
# 10Mbps を超えてしまうやつが、ぼろぼろ出てくるかもしれないですが。 >>505
>>116のhttp://pc8.2ch.net/test/read.cgi/php/1147750917/334
によると、Firefoxでは問題ないようです。
実験したいのですが、>>118がつながりません。
どこかに文字化けするサンプルは残っていますか? >>489
Firefoxだと別管理だったけど
IEだと確かに全部既読になった IE(6 には文字化け問題があるとして,7 はどうなんでしょ?)だけ dat-utf8 使って
それ以外 dat ってのをやるならそれでもいいんですが,その場合
----------------------------------------------------------------------
<Location /*/dat/*.dat>
AddDefaultCharset Shift_JIS
Header append Cache-Control max-age=5
</Location>
----------------------------------------------------------------------
ってのを httpd.conf に入れてもらうということで.ただ,これを入れた場合
黒山羊の Squid などに影響が出ないかどうかってのは要観察かも知れません.あるいは,
----------------------------------------------------------------------
<Location /*/datx/*.dat>
AddDefaultCharset Shift_JIS
Header append Cache-Control max-age=5
</Location>
<VirtualHost ...>
# ServerName dso.2ch.net のところ
AliasMatch ^/(\w+)/datx/(\d+\.dat)$ /home/ch2dso/public_html/$1/dat/$2
</VirtualHost>
----------------------------------------------------------------------
のようにして datx を使うことにすれば,黒山羊等の心配は無用ですが. IEでも全datを取得するような場合は生SJISを読むことはできる。 >>86
ただし差分の取得などには使えなさそう。 圧縮ははずす方向だった予感。
>>511
差分読み込みをするために文字コード変換して一部を渡すのと、
文字コード変換せずに全部のdatを渡しちゃうのは
どっちが重いんでしょう?
文字コード変換しても差分読み込みはできません。
現状では(Not Modifiedが返らない限り)無条件にdatは全部読んでます。
そうしないと部分表示に対応できないから。 >>512
> 圧縮ははずす方向だった予感。
おぉ。そうすか。
vip とかの単体系サーバにとっては、かなり朗報かも。
>>512 第二段落
全部の方が、特にでっかい dat の時はコスト高そうな気がしますね。
でもたぶん、測ってみる必要がありそう。
>>514
そうでしたっけか。< 差分ができない
そのこころって、なんでしたっけ。 >>515
あ、書き込みの後とかリロードボタンを押した場合には
差分取得してるかも。 なんか勘違いしてる見たいですけど、差分転送なんて有り得ないですよ。IE6が文字化けするのは、If-Modified-SinceとかIf-None-Matchを使った「条件付きGET」の結果、304が帰ってきた場合です。 >差分転送なんて有り得ないですよ
つまり差分転送はjsだと出来ないってことですか?
>「条件付きGET」の結果、304
ってのは、具体的に何をしたときに発生するどういうエラーなんでしょう?
条件付きGETの結果、304 が返ってくる = dat が更新されていなかった
かな。
つまり、書き込みも削除もされていなかったと。 差分転送は、2chブラウザと同じ方法で出来るでしょ。
現状の仕様が差分転送してないだけで、 >>519
そういえば304の応答に「Content-Type: text/plain; charset=Shift_JIS」を含めても
文字化けするの?
>>522
ただしログはとっておけないからその場で(ページを移動せずに)リロードした場合に
限る。だから>>516と。
もっとも現状では差分取得は一切やってないみたいだけど >>523
うんうん
xmlhttpのresponseBodyで、バイナリデータ貰えるし、
Rangeヘッダ追加してやりゃ差分取得もできる。
responseBodyがIE限定だし
ブラウザから更新されたら意味ないから無駄に近いけど つまり差分取得は可能だけど、今のバージョンは未対応。。と
差分転送で更新されてないと304が返るけど、
jsだとハンドリングできないってことですか?
>>520
JavaScriptじゃできないですね。差分取得使うなら通常ブラウザのキャッシュではなく独自のキャッシュ機構が必要ですから、パソコンのディスクなどにアクセスできる方法じゃないと。
>>522
JavaScriptでもRangeヘッダをつければ差分取得自体はできるけど、そのRangeに設定する数値はどうやって決めるのか。
仮に決められても、そもそもブラウザを終了したり他のページに移ったら(=JavaScriptが終了したら)キャッシュに残ってるデータのうしろに差分取得したデータをくっつける手段はないから、プログラムを複雑にしてまでやるメリットは薄いと思う。
何が方法があるならコード例を示して欲しい。responseBodyはすでに過去のもののはず。 >>525
jsのHTTPクライアントのXMLHTTPさんが過保護で
普通に取得しても、キャッシュに残ってる+更新されてないと
そのキャッシュを読み込んで返す。
ヘタしたら304さえ返さない。てか304返すなら拾えるし。
キャッシュ読み込むときに文字コードの判定にしくって
文字化けが起きてるらしい。 >>527
そすっと、差分取得はないものとして作れば、
304エラーの問題もなくなると。
dat丸ごとの転送で作ってみて、
既存のread.cgiでの処理との比較をしてみるとか。
>>528
キャッシュを読むときに文字コード指定したりして、
回避することは出来ないんすかね。
>>527
リーロードボタンみたいなのを別に設置したらできそうだね >>523
そもそも304の応答にはボディはないからContent-Typeはつけちゃいけないし、mod_header使ってもつけられない。
>>528
>過保護
いやそれごく普通の動作だし、いやならIf-Modified-Sinceに昔の時刻を設定するのが筋でしょ。 >>532
> そもそも304の応答にはボディはないからContent-Typeはつけちゃいけないし、
> mod_header使ってもつけられない。
おぉ、なるほど。
で、IE6 だとその場合、UTF-8 だと思い込んじゃう、ってことなのかしら。 >>527
>プログラムを複雑にしてまでやるメリットは薄い
いやまんまこのとおりだからほぼ無意味。
>>530
XMLHTTPの文字コード判定は
サーバーからの指定と
XML文章だったばあいencodingの部分。
あとHTMLの指定ぐらいかな。
それ以外は、自力解釈。わかんない場合UTF-8で読む。
他に設定できない気がした。 >>529
まあ、SunOsさんはそれよりも文字コード変換してしまったほうがすっきりするということで実装を進めたようですが 差分取得は>>527ということでやってません.で,304 エラー(というか,別に
Not Modified はエラーではないんですが)は差分取得とは無関係の問題で,
dat が前回取得時から更新されていない場合に起こるということです.
普通のスタティックな html ページなどと同じで,更新されていれば
新たなページ内容が返ってくる,更新されてなければ 304 が返ってきて
ブラウザはキャッシュを利用すると.
ただ,文字コード変換は IE のためだけにわざわざやっているんで,
>>510 のようにすることはできます. おぉ?IEは以外は文字コード変換しなくても
大丈夫なんですか? >>532
> そもそも304の応答にはボディはないからContent-Typeはつけちゃいけないし、
なるほど確かに。
> If the conditional GET used a strong cache validator (see section
> 13.3.3), the response SHOULD NOT include other entity-headers.
> Otherwise (i.e., the conditional GET used a weak validator), the
> response MUST NOT include other entity-headers; this prevents
> inconsistencies between cached entity-bodies and updated headers.
> entity-header = Allow ; Section 14.7
(中略)
> | Content-Type ; Section 14.17 (1)datの先頭に<!--あ-->等の文字を入れておく
(2)まずはsjis版のdatを取得に行く
先頭の<!--あ-->が化けていない場合は新規取得っぽいのでそのまま表示
<!--あ-->が化けている場合はキャッシュっぽいのでutf-8版を取り直す
こんな感じで文字コード変換の回数を減らせるかな。 >>538 少なくとも Firefox では問題ないようでした. >>540
「美乳の手法」ってやつでしたっけ。
ただし「美乳」は、euc-jp の時みたいですけど。 IEのバージョンによってOKだったりするんですかね?
>>544
IE7だと大丈夫という説があるけど未確認です >>540 それだと,IE の場合キャッシュを使わず毎回サーバから取ってくるのと
変わらない,っていうか dat の仕様変更になるんで各方面に与える影響が......
# dat の仕様変更するなら,上の方で出てた XML の CDATA セクションに突っ込む形の方が...... dat に「美乳」みたいなの入れる方向は、全く考えてないです。>>547
特定の実装の虫にそういう方向で対応するのは、
管理人が「やれ」といわない限り、ない方向で。 文字化けの問題がIE7で解決されるのであれば、
いずれ解決されるって前提で進めたほうがいいとおもうです。
初回 sjis取得
リロード1回目(更新あり)
sjis取得
リロード1回目(更新なし 304)
sjisキャッシュ破棄 → utf-8取得
リロード2回目以降(更新あり)
sjis取得
リロード2回目以降(更新なし 304)
sjisキャッシュ破棄 → utf-8キャッシュを表示
・・・混乱してきた。
どうせIE7で直るなら、変な小細工を考えないほうがいいですね。 >>118(って今はないのかな?)を IE 7 で見てもらって問題ないなら
文字コード変換かけるのは IE 6 限定ってことでもいいかもですね. >>549
オートアップデートである日突然元の仕様に戻って2ちゃん化け化けとか if (window.XMLHttpRequest) { //Mozilla, Firefox, Safari, IE7
sjisのdatでok
}else if(window.ActiveXObject) { //IE5,IE6
urf-8のdatで
}else{ //そもそも無理な人たち
read.cgiへ
}
これで、safari以外たぶん大丈夫になる。 まずはSJISのdatを取得して、化けてる(304でキャッシュを開いてる)時だけUTF8版を取りに行く。
更新がずっと無ければUTF8版のキャッシュが表示される。
2回のリロードごとに更新があると効率が悪い。
>>552
>>508で書きましたけど>>118はもうつながらないです。
read-sjis.jsとかdso上に置けませんか? Shift JIS のままの dat を取ってくるなら,>>510 の設定を dso に入れてほしいと......
まぁどっちにしろ,少なくとも IE 以外は Shift JIS の dat を取ってくる形にすれば
ムダにはならないんで. >>559-560 乙です.
とりあえず,しばらくの間 IE 6 も含めすべて Shift JIS の dat を取ってくる形にします.
IE 6 の問題体験ツアーってことでw >>561
だめ出ししようってことすね。了解です。 なるほど。リロードするとおもくそ化けますた@IE6
Firefox 1.5.0.6では問題なし
ではリブートしてIE7で試してみますノシ >>563
read.html更新されてます?
キャッシュの設定は?
とりあえずIE7だと化けませんですた リンク先間違えたorz
×>>563
○>>564 Opera/9.01 (X11; SunOS i86pc; U; en) でも問題ない模様.
>>564 上の方にも IE 6 で文字化けしないって人がいたけど,それはブラウザの設定で
キャッシュが残らないようになっていたためだったということなんで (>>135),そのあたり確認を......
>>565 どもです.IE 7 なら大丈夫そうとなると,dat-utf8 は IE 6 限定でもよさそうかな. >>568
開発元(MS)って、IE 5.x をまだサポートしていましたっけ。 IE5とIE6は、ちょうど限定して使える、
responseBodyで、クライアント側で文字コード変換しようか。 >>568 まぁ read.html の対象外となっても決して利用不能になるわけではなく,
単に従来式の read.cgi に振り分けることになるだけなんで......
>>570 それって,かなり重いって話もあるようですが...... >>569
IE 5.5はかなり昔にサポートが切れますた
Windows 2000でのみ、IE 5.01がまだサポートされてます
(OSに付属のバージョンなのでOS自体と同じサポート期間)
でもどのみち5.0はダメっぽいので(>>471)
0.4%程度なら(>>469)read.cgiに振っても負荷にはほとんど影響しないでしょう。
>>570
もしかして /dat-utf8 を全廃できる? マカーos9組は、IE5.1.7でサポート終了してます。(涙 http://winofsql.jp/VA003334/asp051115161559.htm#ttl3
vbsのはあった。
' バイナリ -> 内部コード
For i = 1 To LenB( strBin )
c1 = AscB(MidB(strBin, i, 1))
if &H81 <= c1 and c1 <= &H9f or &He0 <= c1 and c1 <= &Hfc then
i = i + 1
c2 = AscB(MidB(strBin, i, 1))
c1 = c1 * 16 * 16 + c2
end if
strVbs = strVbs & Chr(c1)
Next
処理自体はこのぐらい。 >>574
VBならStrConv一発
http://www.f3.dion.ne.jp/~element/msaccess/AcTipsVbaXMLHTTP.html
IEだとADODB.Streamというのが使えたらしいが今はだめぽ
http://ponpon-village.net/ajax/xmlhttp.htm 理由はわからないけど何故か文字化けしないっす
キャッシュも残ってるし、、、 >>577
read.htmlのソースには datx って入ってる?
dat-utf8 が入ってたらソースが古いのでスーパーリロードとかしてみて キャッシュクリアしてみたりスーパーリロードしてからでも化けないっす、、、謎 >>574
あ、VBじゃなくてVBSか。VBSにはStrConvはないのね。
どうせIE専用なんだからVBScriptで関数作ってJavaScriptから呼べばいいと思われ >>579
まあ化けない環境が存在するからって化ける環境の対策が不要ってことには
ならないので。 でもまぁ,IE 7 で問題が解消するとなると,いずれ IE 7 の割合が増えて
IE 6 の割合が減るなら,mod_charset_lite 利用による負荷は時間が解決してくれる
はずってことで,あえて複雑なことをするまでもないかな,って気もします.
フィルタ通すことによる負荷なら,上の方でも言ってますが mod_deflate による
gzip 圧縮の方がよほど重いんで. >>582 に同意ですね。
IE6 は「長いもの」なので、特別扱いでもまぁしょうがないのかなと。 長いものに巻かれるというか、長いものに振り回されてる感じ んでは、IE6のをdat-utf8にしてみるってことで、
あと解決しなきゃいけない問題ってどんなのでしょう?
「書き込みました」の画面に書き込んだ投稿の内容を埋めておけば、
書き込み後にdatを再取得する手間が省けるかなあ。
でも、同時に複数書き込みがあったとき(1000ゲットなど)にレス番号表示がおかしくなるかも。 結局datから必要な部分を切り出してUTF-8に変換するCGIを用意するだけに
落ち着きそうな気もしてきた。 巨大AA貼りつけスレを見ると30秒くらいCPUフル稼働する…
Opera9(Win) さて、ぼちぼち dso サーバの bbs.cgi が吐くリンクを
read.html にしてみようかなと思うわけですが、
単に、
read.cgi/板名/キー/引数
を、
read.html#板名/キー/引数
に変換すればいいのかしら。 >>585 あとは,細かい改良の積み重ねって感じでしょうか......
>>589 subback.html の URL の変更はちょっと大変かも......現状では
<base href="http://dso.2ch.net/test/read.cgi/myanmar/">
<a href="1111111111/l50">...</a>
のようになってますが,これを
<base href="http://dso.2ch.net/test/read.html#myanmar/">
<a href="1111111111/l50">...</a>
にしてもダメで(base に # を含む URL を指定してもナンセンスで,
この場合 "http://dso.2ch.net/test/" として扱われてしまう),
<base href="http://dso.2ch.net/test/">
<a href="read.html#myanmar/1111111111/l50">...</a>
のようにしなければなりませんが,こうなると subback.html がデカくなりそうです......
さらに,上の方でも言いましたが,subback.html 中のリンク自体を location.hash 形式にすると
read.html 非対応ブラウザを従来版 read.cgi に直接リダイレクトさせるのも不可能になってしまいます.
逆に read.cgi/...... から read.html#...... へリダイレクトさせるのは可能ですが,
リダイレクトによる HTTP リクエストを削減させるとすれば,302 Found の代わりに
301 Moved Permanently を返せばいいのかな(ただ,301 を返すようにするのは
URL の仕様がちゃんと固まってからの方がいいでしょうけど). IEで未読と既読の区別がつかなくなるという問題も。 >>590
ふむふむ。
subback.html が大きくなるのは、ある程度は仕方がないと割り切れるのかな。
何といっても、read.cgi の起動回数が大幅に減るわけで。
> 逆に read.cgi/...... から read.html#...... へリダイレクトさせるのは可能ですが,
これは、read.cgi が一度は起動してしまうのかしら。
dso だから、それでもかなりいいかんじですけど。
>>591
それはあるですね。 subbackのリンクは標準では従来通りにして、JavaScriptで
(onclickとかonloadを見張って)差し替えたらどうですか?
どうせJavaScriptが有効でないとread.htmlは使えないんだし
>>591の問題も解決する。 具体的にはこんな感じのをsubback.htmlのヘッダに突っ込むだけ
<script type="text/javascript"><!--
document.onclick = function(e) {
var t = window.event ? event.srcElement : e.target;
if (t && t.href) {
window.open(t.href.replace(/read.cgi\//, 'read.html#'), t.href.target);
return false;
}
}
--></script> >>593
面白いかも。
…でも、具体的にはどんな subback を生成すればいいのかしら。 >>594
おー、かぶりました。
subback の頭に入れればいいのかしら。 >>596
yes. <head>〜</head>の間のどこかです。
手元ではとりあえずIEとFirefoxで動いてるみたいです。 subback.html はこれでやってみるとして、
index.html は、どんなかんじになるのかしら。同じでいいのかな。 >>598
試してみましたけどindex.htmlの場合は
<a href="#1">
のリンクを踏んだときの動作が微妙ですね。ちょっと改良が必要かも。 ってことで改良版。
<script type="text/javascript"><!--
document.onclick = function(e) {
var t = window.event ? event.srcElement : e.target;
if (t && t.href) {
t.href = t.href.replace(/read.cgi\//, 'read.html#');
}
}
--></script> subback.htmlも>>600のほうがいいです。 あ、すみません。最後の行は
//--></script>
にしてください(先頭に // を入れる)。 どもです。
同じものを両方に入れればいい(サブルーチン一つ書けばいい)のかしら。 dso に入れてみた。< bbs.cgi
で、
#RewriteRule /?read\.cgi(?:/(.*))?$ /test/read.html#$1 [R,NE]
を、コメントアウトした。 >>605
/read.cgi\//
の \ が抜けて
/read.cgi//
になってるので、正常に動いていないようです。 ここかな。
t.href.replace(/read.cgi//, 'read.html#'); >>607
\\ にしてみた。< bbs.cgi
どうかな。 いい感じみたいですね。
リンク押しても紫にならないけど(それはしょうがないか)。 Sleipnir (IE6 エンジン)では、うまくいっているみたいです。
これ、いいすね。
で、JavaScript なしバージョンだと、普通に read.cgi ですか。
read.cgi を read.cgi という名前で*も*、有効にしてきます。
SunOS さんが read.so のところを read.cgi にしたら、
read.so はなしにします。 >>613
これで、普通に read.cgi は read.cgi として起動するようになった。 未読既読はスレにはられるやつにも影響あるなあ...
IEが落ちる
フリーズしたようになる(>>576)
戻るがおかしい
は直して欲しいな。 read.htmlでも>>600いれればいいのかな read.htmlに組み込むのはSunOSさんにお任せってことで。 いやあ、近未来的だなぁ とか言ってみる
Ajax版P2 みたいなものを期待 >>600だと既読になるのは#のほうだから未読既読は解決しないのか。
あとIEだとコンテキストメニューから開くとonclickが呼ばれない。 あとimu.nuとかでもあったけど、
条件を厳しくしないと誤爆するね。 ime.nuみたいなリダイレクト専用サーバーを立ててそこにリンクを張るとか。
(クリックさせないで一瞬で飛ばす)
で、そのサーバーがこけるたびに大混乱 IEの右クリックと誤爆対策。
<script type="text/javascript"><!--
document.onmousedown = function(e) {
var t = window.event ? event.srcElement : e.target;
if (t && t.href) {
var h = t.hostname;
if (h && h.length > 8 && h.substring(h.length - 8) == '.2ch.net') {
t.href = t.href.replace(/read.cgi\//, 'read.html#');
}
}
}
//--></script>
bbspinkへの対応は、15日になったしいらないよね? とか言ってみる。 ずーっと気になってし、言いだしっぺも自覚してると思うんだけど
read.html見たいな動的ページって検索エンジンに拾って貰えない気がするんだ。
そのへんはおkなの?
read.cgiが生きてる限り大丈夫だけど、ページランクは下がるだろうし。 ネイバーに限らず、クローリング自体での負荷の上昇も嫌ってるのでそこは問題ないはず。 >>623
read.cgi を殺す気は(私は今のところ)ないですね。
>>622
bbspink.com も対応できるようにしておいていただけると、
とてもよいかなと。
というか >>622 により、どうなるんでしたっけ。
素人質問でごめんなさい。 IE 6 だけ dat-utf8,それ以外 datx にしますた.
プログレッシブな表示ってのも入れたつもり.
戻るについては,>>337-341 あたりと同じような問題があって......
read.cgi/... のリンクを read.html#... に変換するのも入れますた.
>>600 のはおもしろそうだけど,>>619 のコンテキストメニュー問題と
あとステータスバーに出るURL がクリックするまで変わらないっていう問題も
対応するとこんな感じかな.
for (var i = 0; i < document.links.length; i++)
if (/^http:\/\/(?:\w+\.)?(?:2ch\.net|bbspink\.com)\/test\/read\.cgi\/?/.test(document.links[i].href)) {
var isEqual = document.links[i].href == document.links[i].firstChild.data;
document.links[i].href = document.links[i].href.replace(/read\.cgi(\/)?/, function(s, slash) { return "read.html" + (slash ? "#" : ""); });
if (isEqual)
document.links[i].firstChild.data = document.links[i].href;
}
あと,subback.html や index.html のは,実用化段階では JavaScript 有効でも
read.html 対象外のブラウザは従来通りの URL ってことにしなきゃですね. DOMでぴゃーっと書き換えちゃうコード入れときゃおkじゃね? >>626
おつです。
index.html や subback.html に仕込むのも、それにしたほうがいいのかしら。
で、>>626 の最後の2行をうまく実装する必要があると。 いくつかの問題を解決するのが難しいなら
普通のread.cgiを使うかどうかをCookieに保存できればいいなあ >>623
JavaScriptで置き換える方法だと検索エンジンから見たソースは今まで通り
なので問題なし >>628
> index.html や subback.html に仕込むのも、それにしたほうがいいのかしら。
SunOSさんの書いたものの方がおすすめ あぁ,>>626 のは subback.html では
onload = function(e) {
:
};
で挟む形で.ただ,index.html の方はそのままだと index.js と衝突するのと,
さらに <font> タグをやめた S★ の装飾とかを JavaScript でやるなら
be.js もインクルードするってことで,そのあたりとの兼ね合いもあるかな......
>>629 単純に JavaScript を切れば従来版 read.cgi にジャンプするのでは?
名前欄とかはブラウザのフォームコンプリート機能を使うとかで...... >>632
なるほど、index.html でうまく動かないのは、そういうことですか。
とりあえず、ちと食事。 過去ログ鯖とかは変換しないほうがいいような
>>632
JavaScript有効時の話 >>634 >>626 の逆をやる bookmarklet を登録しておくとか. とりあえず、index.html はさっきまでのものに戻しておきます。 >>635
index.htmlとかsubback.htmlでだけど、
「問題を解決するのが難しいなら」書き換えるかどうかの選択肢がほしい で、外から飛んできたときはどうするのがいいんだろう? >>637 バックボタンとかその辺ですか? これはブラウザの仕様とかの
兼ね合いもあるんですが...... いっそ別窓で開かせればすっきりするのかなぁ......
あるいは,外側の html のキャッシュ問題(ひいては鯖の負荷問題)を無視して
PATH_INFO 形式をデフォルトにするか......
>>638
RewriteCond %{HTTP_USER_AGENT} ほげほげ
RewriteRule /?read\.cgi(?:/(.*))?$ /test/read.html#$1 [R=permanent,NE]
でもこれなら,subback.html とかの JavaScript もいらないことになるのか......
# 実際 permanent にしちゃうのは >>590 ってことで. >>639
そもそも>>590とか>>623の問題を解決するためのJavaScript案なんだから
両取りは無理では >>640 ん? RewriteCond / RewriteRule 使えば,subback.html 中の URL は
read.cgi/... のまま(従来通り)で read.html#/... に飛ばせる,
で read.html 対応ブラウザだけ RewriteCond で判定して飛ばせば
検索ロボットはそのまま read.cgi に逝くかと. > ただ,User-Agent の判定はできても JavaScript の on / off の判定は
> サーバ側ではできないので,対応ブラウザでも JavaScript off の場合の
は? >>642 あぁ,そうか...... となると,subback.html とかには JavaScript 入れて,
Referer が subback.html とか以外の場合に RewriteRule が有効になるようにすればいいのかな...... ちょいとこちらで dso の bbs.cgi いじってみますた.
・ >>626 を index.js 等と衝突しない形で index.html に入れた.
・ be.js を index.html にも入れてみた.
んで,read.html のキャッシュを生かして鯖へのアクセスを抑制するには
location.hash 形式がいいんですが,ブラウザの仕様上
・ ロケーションバーから直接 URL 入力した場合や「戻る」ボタンの問題
・ 履歴(未読・既読)の問題
ってあたりで利便性は低下するんですよね......もしこのあたりの問題で
利用者の不満が強いようなら,涙を飲んで PATH_INFO 形式をデフォルトに
した方がいいのかなぁ...... >>644
> ちょいとこちらで dso の bbs.cgi いじってみますた.
うひょひょ。見てみるです、見てみるです。
# 意外に早かったかも。
# でも、管理人からのメールの返事にあった「くれぐれも」で始まるひとことも、
# たまには思い出すといいかもかも。
#
# …などとえらそうに、言っておこう、言っておこう。
> もしこのあたりの問題で
> 利用者の不満が強いようなら,涙を飲んで PATH_INFO 形式をデフォルトに
> した方がいいのかなぁ......
現状の「サーバ資源の逼迫度合い」を考えたら、
PATH_INFO 形式でもいいのかもしれないですね。 bbs.cgi みました。
とてもいい感じなので、そのまま本体に反映するです。
で、be.js は、http://www2.2ch.net/snow/index.js と同じところに置こうかと。 >>645-647 手を付けていいものか迷いもあったんですが,
手っ取り早く結果を見たかったんでいじっちゃいました.
諸々のことについては気を付けますです,はい......
で,be.js は www2 の方に置いて頂けたようなので,
read.html から参照するのもそちらに変更します. >>648
どもです。「気をつける」というマインドが重要ですね。
あとはここでいろいろ言わなくても、実例(私とか)がここにはいっぱいいるし。 http://dso.2ch.net/test/read.html#myanmar/1155416372/l50
のスレとか IE でも落ちなくなったようだけど,どうかな......?
あとは,PATH_INFO 形式をデフォルトにすれば >>615 とかで言われてたような
問題は一応片付くことになるかな...... >>650
落ちた上に文字化けしてる
6.0.2800.1106.xpsp2.050301-1526 >>651 あら......てか文字化けですか......なぜだろう...... 外側のHTMLが文字化けしてる・・・。中のdatは無事、落ちることもないです。
IE 7.0.5450.4 (Beta 3)
(てかXML宣言のencodingを読んでないのか?) >>653 IE 7 でもまだ不完全な部分があるのか......
とりあえず <meta> で指定しますた. >>655 どもども......じゃあ落ち問題は解決かな......?
Opera/8.54 (Windows NT 5.1; U; ja) 途中送信してしまったorz
上の環境で>>658を開くとCPUが90〜100%になり、スクロールがぎこちないです
Pen4 1.7GHz javascript:void%200;
(´・ω・`)ショボーン
Safari
バージョン 2.0.4(419.3) >>660 まぁデカいスレの表示で重くなるのはある程度仕方ないかな,と......
>>661 Firefox は,JavaScript 処理に時間がかかるとそのダイアログが出ますね. >>662 う〜む......そのあたりは難しいのかなぁ...... >>658
IE6+Sleipnir
変換中は、スクロール重くなるけど
表示しきるとスクロールも大丈夫な感じ IE6 WinXP SP2 Pentium4 2.4G
658を開くとCPUが100%になって固まるorz
Operaも固まりはしないけど、スクロールしなくても常に80%以上orz
困った…
DSBLに引っ掛かったので携帯からカキコ >>658見ても特に大丈夫でした。
スペックはセレロン2.0GHzメモリ512MB
Monazilla/1.00 (JaneStyle/2.41) やべ、専ブラからだったorz
Opera/9.01 (Windows NT 5.0; U; ja) javaScript 確実にonにしてることがわかると、なんか仕込まれたりしない?>リンク先とか そんな事を画策するまでもなく、多くの人はIEの初期設定のままで、
あんなことやこんなことができてしまうのです。
と、2chの穴を突いた経験談から。 自動更新のあった次の日に「勝手に再起動すんなボケ!」ってスレが立つくらいだしね。 >>673
>>650 >>663 あたりかしら。
着実に、という印象を、私は持っているです。
あと、BE 表示部分を SunOS さんが JavaScript でかっこよくしたです。
http://dso.2ch.net/test/read.html#myanmar/1155409133/
で、これをニュー速というか標準 read.cgi あたりでもやるとかそのへんも、
テクニカルには可能になりつつあったり。 先生、催促しているようにも見えます(,,゚Д゚)∩ Be表示部分に車体を使うの、個人的にやめて貰いたいんだけど、らめ?
俺は大丈夫だけど、環境によっては読みにくかったりするんだ。 斜体はたしかに読みづらいすね。
l50をつけなくても動くようにしたほうがいい予感です。
まぁ,実用化するならブラウザの振り分けも決めなきゃならないってことで,
dso も tasukeruyo を有効にしてもらった方がいいのかな. SunOsさんの超技術でアンカーポップアップ導入もお願いします>< >>681
そっか。
非 JavaScript 版は URL 中の read.html を read.cgi に
↑
の動作がJavaScriptで動いてるみたいなんだけど、これは未対応ブラウザのためのものであって、
JavaScript自体が使えない人のためのものではないの?
で、その辺がめんどくさかったりするから全部クライアントにやらせず鯖にも働いてもらいましょみたいなことを
この前言ったんだけど、それは無理なの? >>677 直接 URL 入力すると云々っていう location.hash 形式の問題とかではなくて?
>>680 BE がイタリックになるのは BE チェックでレス非表示にした場合で,
デフォルトではイタリックにしてるつもりはないんですが,デフォルトでも
イタリックになっちゃうんですか? >>686 それは,ローカルファイルに保存するのに非 JavaScript 版への
リンクもあった方がいいっていう意見もあったために入れますた.
未対応ブラウザについては,subback.html / index.html のリンク自体が従来版向けになります. >>687
どっちにしろ使う人が居ることは事実だから斜体はやめた方がいいかなと…
まぁ俺の環境では動いた感があって良いんだけどwww
どうしても動かしたいのなら
cssで囲い(上下左右全部とは言わず)を付けたり、レス番を光らせたり、下線を付けたりしてみるといいかも
>>688
おk把握 >>683
done.
>>687
> >>677 直接 URL 入力すると云々っていう location.hash 形式の問題とかではなくて?
IE6 ではうまくないみたい。
他の人はどうなのかな。 >>690 なんかわかったような......パフォーマンスも多少は上げられないかと
試行錯誤してた時にエンバグしたようで......直します......
>>689 つまり,BE チェックで非表示にしたレスでもイタリックにしない,
って意味ですか? DOMソースでみるとitalic付いてますね。
>>691
グレーにするとかどうですか? >>693 それがエンバグしてた部分で......直しますた.
下一行は了解です.これは be.js 側ですね. で、be.js を更新してくるです。
dso にあるやつを入れればいいのかしら。 >>694
お疲れさん。寝るお
規制いつ解けるのかな…
★餅って規制関係ないんだよね?快適だね。 ソリティアの色がウ○コ色といわれたですのでもうちょっと違う色ないですかね? >>697
いや、モバイル系は prin と IIJmio 使っているので、
もろに該当です(困っているです)。 >>696 >>701 乙です.ただ,イタリックを変えるとか色を変えるとかで
再びお手数をおかけするかもですが......
>>698-699 カラーコードか
http://www.w3.org/TR/SVG/types.html#ColorKeywords
の色名あたりで指定してもらえれば,と...... >>702
> ただ,イタリックを変えるとか色を変えるとかで
> 再びお手数をおかけするかもですが......
それは承知しているですよ。
色については、その道のかたがやってくれるかなと。
ということで、今日の私はそろそろおひらき。 非表示レスはイタリックの代わりに背景をグレーにしますた.
色は http://mumumu.mu/img/2bp/ を一応真似たつもり.
ただ,www2 のは自分では入れ替えられないのでとりあえず
一時的に dso のを読み込むようにしますた. >>704
www2 に入れました。 < be.js >>705 乙です.www2 のを読み込むように戻しますた. ttp://sunos.saita.ma/inspired/ http://dso.2ch.net/myanmar/subback.html
IE 6 で見ると,スレタイが URL に化けちゃってる箇所があるような......
上の方でやってた ime.nu の時と同じバグ(a.href を書き換えると
中身のテキストも書き換わっちゃう)が顕在化してるのかな? for (var i = 0; i < document.links.length; i++)
if (/^http:\/\/(?:\w+\.)?(?:2ch\.net|bbspink\.com)\/test\/read\.cgi\/?/.test(document.links[i].href)) {
document.links[i].normalize();
var data = document.links[i].firstChild.data, isEqual = document.links[i].href == data;
document.links[i].href = document.links[i].href.replace(/read\.cgi(\/)?/, function(s, slash) { return "read.html" + (slash ? "#" : ""); });
document.links[i].firstChild.data = isEqual ? document.links[i].href : data;
}
対処するとすれば↑,ついでに PATH_INFO 形式をデフォルトにするなら↓かな......
document.links[i].href = document.links[i].href.replace(/read\.cgi(\/)?/, function(s, slash) { return "read.html" + (slash ? "/" : ""); }); そういや operate2 は read.cgi が動いてないんですね.
http://qb6.2ch.net/test/read.cgi/operate2/1097914397/
そういうところに置いてみるのも面白いかも? operate2 はアレがあるから切ったような・・・ >>713
PATH_INFO がデフォルトになったということは、
www2 に置いてある js も、更新が必要なのかしら。 >>714 be.js には影響なしです.subback.html / index.html の方を揃えてもらえば
PATH_INFO 形式デフォルト化は完了ってことで. subback.html と index.html ってことは、bbs.cgi ですか。
お手数ですが、dso サーバの bbs.cgi の
UpdateSubback と MakeIndex4PC にある、
if(&IsReadHtml($GB)) なところの JavaScript 部分を、
SunOS さんのほうで、ごにょごにょしていただけると助かります。
問題がなければ、オリジナルに反映しておくです。 >>717
どもです。オリジナルに反映し、dso にも入れなおしました。 そんなわけで「2ちゃんねる」リンクがついたので、
read.html でも対応すると、よいと思うのです。 read.cgiどころかsubback.htmlやindex.htmlまでJavascriptで生成とは
夢が広がりんぐだな。 レス数によっては、[全部読む]がやっぱり重いね。
[全部読む]でも、一気に表示しないで、だんだんとレス追加みたいな感じのが良いのかな。
続きを読むをクリックすると、レスが追加されてく感じ。
そっちの方がAjaxっぽいし。 >>723
>一気に表示しないで、だんだんとレス追加みたいな感じのが良いのかな。
>続きを読むをクリックすると、レスが追加されてく感じ。
そういう方がいいという人は,上の方の「1- 101- 201-」とか
下の方の「前100 次100」を利用してもらうということで.
「全部」で全部表示されないというのも,看板に偽りありという
気がしないでもないんで......
「大きなスレで『全部』は重いですよ」というのは JavaScript 版での
注意事項として周知する方向で. 「全部」をクリックしたら警告が出るようにしてみますた.
(read.js を分離したのでキャッシュクリアとかしないと反映されないかも) >>725
乙です
「それでもいいですか」ってのがなんか脅しっぽいwww >>727
毎回「全部」をクリックする人って少ないんじゃないかな 警告出すのは,レス数が 400 以上またはサイズが 250 kB 以上の場合だけにしますた. 何か......IE 6 だと a.href を書き換えた場合,新しい href の既読・未読が
リンク色に反映されない模様(書き換える前のリンク色のままになる).
となると,subback.html / index.html でわざわざ↓みたいにしなきゃならんのか......
# IE 7 はどうなんだろう......?
var isIE6 = navigator.userAgent.indexOf("MSIE 6.0") > 0;
for (var i = 0; i < document.links.length; i++)
if (/^http:\/\/(?:\w+\.)?(?:2ch\.net|bbspink\.com)\/test\/read\.cgi\/?/.test(document.links[i].href)) {
document.links[i].normalize();
var data = document.links[i].firstChild.data, isEqual = document.links[i].href == data;
document.links[i].href = document.links[i].href.replace(/read\.cgi(\/)?/, function(s, slash) { return "read.html" + (slash ? "/" : ""); });
if (isIE6) {
document.links[i].firstChild.data = isEqual ? document.links[i].href : data;
document.links[i].parentNode.replaceChild(document.links[i].cloneNode(true), document.links[i]);
}
else if (isEqual)
document.links[i].firstChild.data = document.links[i].href;
} read.js でも >>731 と同じ問題への対処 done. まぁ,月が変わる頃にはいろんな意味でいろいろ動き出すでしょう...... 読み込み完了するまでスレの正体がわからないのはどうなんだろう
http://dso.2ch.net/test/read.html/myanmar/1155416372/
あとさ、たまにスレにたくさんレスがついてて流し読みしながらレス書くときに
書き込み欄が一番下にあると参照しながら書けないから
今まではスレをもういっこ別窓で開いてレス書いたりしてたけど
これ導入するんだったら書き込み欄とメッセージは別フレームみたいに出来ないかね >>736
>読み込み完了するまでスレの正体がわからないのはどうなんだろう
読み込まなきゃわからないのはどうしようもないのでは......と思ったけど
>http://dso.2ch.net/test/read.html/myanmar/1155416372/
これは,ライブな dat が存在しない場合の扱いがいかがなものか,って意味なのかな?
鯖側で動く read.cgi と違って過去ログをあさることはできないので,別途鯖側で
何らかの I/F を用意しない限り,過去ログの存在の有無を知らせることは不可能ですね.
ただ,エラーメッセージをもっと親切な内容にしたらどうか
ってことであれば,いい提案があれば採用する方向で.
しかし......現状ではファイルが存在しない場合一律に
http://www2.2ch.net/live.html に飛ばしてくれるんですが,
XMLHttpRequest の仕様上別鯖には逝けないんでちょっと困った状態に......
IE -> "Unknown" というわけわからんステータス
Firefox -> "302 Found"
Opera -> 一回目は "302 Found" だが,二回目以降 send() の時点で Security violation の例外発生
元々 live.html に飛ばすのは read.cgi を止めた場合の人大杉の
ためのもののはずだと思うんで......せめて dat の場合だけでも普通に
"404 Not Found" を返してくれればもうちょっと扱いやすくなるような......
ErrorDocument 404 http://www2.2ch.net/live.html
<Files *.dat>
ErrorDocument 404 default
</Files>
>書き込み欄とメッセージは別フレームみたいに出来ないかね
フレームだと,かえって今までと使用感が異なることに違和感を持つ人が
結構出てきそうな気も......ただ,フレームでなく position: fixed;
を用いることにすれば,従来と同じ形態との切り替えも容易なので
採用できそうな気もします.ただ問題は,IE 6 だと position: fixed;
が効かないという(IE 7 はどうなんでしょ?)...... かと言って
onscroll で追いかけて動かすのは船酔いしそうな気持ち悪い動きになるし.
「その機能を使いたい人は IE 6 以外を使って下さい」って形でもいいなら
単純明快にできそうですが. ライブなdatが存在しない場合は、read.cgiにリダイレクトしちゃうとか。。
>>738 そういうのも一案ですが......
・ *.dat の ErrorDocument 404 を DSO プログラムに振る.
・ その DSO プログラムが過去ログを調べ,存在すれば今の read.cgi のように
最初と最後のレスだけ抜き出して返すなどする.
のようなことをすれば,read.html のみならず雪だるまの read.cgi で
過去ログの存在を認識できない問題もついでに解決できるかも知れない予感...... それをやっちゃうと、結局処理が挟まっちゃうので、
.htmlにしてるメリットが薄れませんか?
スレッドが無かった時だけでしょ。
read.cgiに飛ばすのも、処理挟むので同じじゃん。 >>741 >>742 の通りで,dat が存在しない場合(普通なら "404 Not Found"
が返る場合)のみ DSO プログラムに振られるってことで. おぉ、、DSOすげー。
んでは、それでいいと思いますー。
(´-`).。oO(「Apacheすげー」だとおも♪) >>749
/var/tmp の下は激しくいまいちなので、
home directory 配下のある場所に mv しました。
ありかは、ちとお取り込み中が終わってから。
(見ればわかるといううわさも) >>750 場所確認しますた.
# 実は,個人環境では /var/tmp が全然 temporary じゃない状態になってたりします......w 専ブラの話だけど、スレが無い時のステータスコードを302で決めちゃってるのが
多いのかしらね。
以前も、新仕様鯖だったかで、404になるのに対応できないブラが右往左往
していたっけね。
(ルート付きを始めた時だっけ?) >>752-753 悪影響が出る専ブラには,User-Agent で判定して 302 返すようにしますかね......
XMLHttpRequest は外部鯖向け 302 との相性が悪いってのもあるし,
仮にそれに対応させたとしても,過去ログの存在を確認するために別 URL で
改めてアクセスするとなると HTTP リクエスト数が増加する方向に働くことになるんで,
JavaScript 版やる上では ErrorDocument で pastdat.so に振り向けるやり方の方が
スマートかなって気もしないではないんで......
ついでに●ログインとかもやってみようかと思ったけど,それやるには
mod_ssl と mod_proxy が使える 2ch.net ドメインの鯖もないとダメポな予感...... 302はgetResponseHeader('Location')した後location.hrefなりwindow.openなりすればいいんじゃね? >>755 というか,302 のジャンプ先にある live.html を表示しても仕方ないんで......
要は read.cgi と同様に,ライブな dat が存在しない場合に過去ログの有無を調べ,
過去ログがある場合に最初と最後のレスだけ抜き出して表示する,ってのが目的なんで.
とりあえず ^(Mozilla|Opera|Lynx|Wget)/ のような感じの,専ブラと関係なさそうな
User-Agent の場合だけ 404 等のを返し,それ以外は 302 を返す形にしてみますた. live.html自体は人大杉だけど302は前からそうなっているからなあ
今もバナーでてるけど広告的な意味もあるのかな?
>●ログイン
2chの鯖を介さずにブラウザ側で直接ログインできるならいいけど
そうじゃないならちょっと・・・ pastdat.soみたいな、専用モジュールの追加もアリという前提ならば
将来的には.datの必要部分のみ取得というモジュールというのも視野に入れても良さそうな感じ。
昔のread.cgiのrawmodeみたいに、レス番やlxxで。
といっても、'\n'の検出を毎回鯖がやらなきゃいかんので
ある程度の数の.datの行頭探索結果はメモリ上に保持しておいて、とか
それ以前に、行頭はbbsdで完璧に把握できるのだから、bbsdと連携して、とか
read.cgiもbbsdと交信して行頭情報を取得したり、とか
などの話にも発展させられそうな。
TCPでモジュールとbbsdが交信するようにすれば
大きいデータ(.dat本体とか)も扱えるだろうし
接続しっぱなし(SO_KEEPALIVEであぼん検出)みたいにすれば
JumboFrameも使えるし、負荷的にはUDPと大差ないと思うんですがどうでしょうね。
(多数のコネクションを効率的に扱うサーバーの造りは、UDPよりずっと大変でしょうが) >>757 html ならともかく dat を直接ブラウザで表示する人はあまりいないだろうと
いうことと,専ブラや read.html のようなものが dat を取得するのは
直接表示するためではないので,dat へのアクセスを別の場所に飛ばすのは
広告としてもあまり意味がないような気がします.ともあれ,>>744 で
Go サインは頂いたと思いますので,とりあえずこの路線で.
●ログインは,pastdat.so の機能を拡張すればシームレスな過去ログ表示も
可能になりそうとちょっと考えたんですが,認証サーバは 2ch.net とは
別ドメインにあるので,>>754 でも述べたように認証サーバへの橋渡しをする
プロクシ鯖を別途用意しなきゃダメポなようですね.
>>758 pastdat.so は,ErrorDocument 404 で振られた場合だけ呼ばれるので......
あと上の方でも話がありましたが,部分取得しつつキャッシュを有効活用するなら
ブラウザが備えてるのとは異なるキャッシュ機構がないとうまく機能しないので,
ローカルストレージに直接アクセスできない限り困難,つまり
JavaScript でやってる限りは困難じゃないかと.
ちなみに,bbsd は subject.txt のデータはオンメモリで管理してますが,
dat は単純に O_APPEND モードで追記してるだけなのでオンメモリでは管理してません. 「差分取得」ではなく「部分取得」のつもりだったのですが。
、、と、もしかして、
既に現状のread.htmlが、リクエストのURIを解析して
.dat全体の中から必要な部分だけを転送するようになっているのですかね。
bbsdに関しては、現在は管理していないのはわかりますが
「何バイト書き込むか」を確実に把握出来るので
初回はともかく(再起動に備えて別ファイル等も必要でしょうが)
行頭情報を常時保持しても大きな負担にはならないとの考えからです。 あ、ごめんなさい、補足。
つまり、「必要個所だけを転送する」ためには、行頭情報が必要で
可能であればそれをキャッシュしておきたい、という考えがあるのですが、
そのキャッシュをbbsdと別に持つとすると、毎回stat()をかけなければいけない
というのがあります。
fstat()ならまだしも、stat()はアクセス権チェック等もあることから
「可能ならば省略したい処理」になるのではないかと。
で、bbsdならば、更新確認のstat()が不要なままで、
確実な行頭情報を得られるということですね。 >>760-761 いや,現状では dat は単純に全体を取得してます.
差分取得にしろ部分取得にしろ,キャッシュの有効活用との
両立は困難だと思うんで.例えば細切れな dat の断片を
いくつも管理するとか複雑な処理をして両立しようとしても,
その断片ごとに(If-Modified-Since 付きではあっても)
HTTP リクエストが多数発生するとかになって,
果たして苦労する割に得るものがあるだろうか,と......
それから,書き込みとの関連の薄い処理まで bbsd にやらせることを
考えるぐらいなら,フロント側で mod_cache を有効化するなどを
やる方が先決じゃないかと.bbsd の仕事を増やすというのは
すなわちバックエンド側の仕事を増やすということにもなりますし. >756
逆に、Monazilla/1.00 だけ302の方がすっきりしません? >>752-754
そんなのは専用ブラウザが是正されるべきだと思います。 >>763 専ブラは全部 Monazilla/* っていう User-Agent なんでしょうか?
それなら確かにその方がすっきりしますが......
>>764 個人的には,dat が存在しないのは 302 の場合だけという決めうちは
手抜きだなぁ,そういう決めうちプログラムの側が是正されるべきだよなぁ,
と確かに思うんですが,かといって経過措置も何も考えずにやると
いろいろ混乱を来しそうで...... てか、1.00とか適当なことを言ってないで有効活用すればいいじゃん。
1.1とか2.0とか。 > User-Agent
通常のdat読みでは義務ではありませんが、以前にはMonazilla/1.00だけが
dat読みを許されていたこともあり、現在でも非常に強く推奨されており、
実際、ほとんど(おそらく全て)がそうなっています。
ちなみに、●使用ではUAが厳しく指定されています。 >>768
L〜もG〜もW〜もMonazillaじゃないぞ >>767 多くのケースでそうかも知れませんが,スレ移動で今までなかった dat が出現するとか,
dat 落ちしたのが復活するとか,ということもまれにない訳でもないかと......
>>768 なるほど......ってことで,Monazilla/ の場合だけ 302 にしますた. >>769 ありゃ,すれ違っちゃった......となると,その L?, G?, W?
ってブラウザがどういう挙動を示すかが問題か...... dat落ちについてはLocationがおかしいだけで302は妥当なのかも
LocationはMUSTじゃないからあえて含めないで
本文にdat落ちのメッセージ入れてみるとか
(どういう動作になるかわからんけど) Live2chもギコナビもぎこはにゃんもMonazillaだし、W?シラネ、Mac?モットシラネ。
既に言われているように、本来は専ブラ側が対応するものなので、
細かい所まで気にしなくても良いんじゃないですかね。
302決め撃ちばかりとも限らないし。 レスポンスを細分化することは可能であっても(3**返すとか4**返すとか)それに見合った負荷対策は?
と考えるとでんでんメリットが少ない気もするですね(苦笑)
*.datの取得に関しては「UAでMonazillaを返してこないのは、専用ブラジャー以外」と決め込んでしまって良いんじゃないかな。
・・・を前提にしつつHTTP仕様にも沿って欲しいよなぁとかとか(どっちやねん) ああそうか、Monazillaは302にするということは、pastdat.soを使わないということであり、
サーバ側の処理を省くことになる、という2ch側の理由もありえるのか。 よく考えたらread.htmlでアクセスするのはdat-utf8とdatxだから
そっちだけ変えればいいんでは? >>772
>dat落ちについてはLocationがおかしいだけで302は妥当なのかも
これは一理あるかも.ただ,元々 dat がないケースだと 302 では
本来おかしいですし,404 等の方がふさわしいし扱いやすいと
いうところで,今回やってる方針のメリットはあるかなぁと......
>>773-774 とりあえず,Monazilla だけ 302 にする,ということで様子見の方向で.
>>775 というか,Monazilla の判定は pastdat.so 内でやってます.
ErrorDocument ディレクティブでは User-Agent での条件分岐とかできませんし,
仮にできても .htaccess のディレクティブを毎リクエストごとにパースして
条件分岐するよりは pastdat.so 内で分岐する方が軽そうな気がしますし
(*.so は Apache モジュールでの処理とほぼ同等ですし).
>>776 この件だけ考えればそうかも知れませんが,現状雪だるま鯖の
read.cgi が過去ログの存在を認識できない問題への対処というのも
視野に入れてるんで...... > Monazilla の判定は pastdat.so 内でやってます.
そなんすかー。
2ch側が積極対応する口実を見っけたと思ったのにー。
ああでも、過去ログの情報でdat開くよりは、単に302だけの方が軽いかな、
とかなんとかまだこだわってみる。 >>778 まぁ,Monazilla 以外の User-Agent の専ブラで悪影響が出るのがあったら
その時にまた対処するってことで...... >>731 に対応ブラウザの判定を入れる(ただし dso では判定にかかわらず
全部 read.html に振る)とこうなるかな.IE 4 やネスケ 4 では
try / catch でエラーになるだろうけど,エラーでスクリプトが止まって
URL 書き換えも実行されないなら,それはそれでよしってことでw
----------------------------------------------------------------------
try {
if (/MSIE (?:[6-9]|\d{2,})\D|rv:(?:1\.(?:[89]|\d{2,})|[2-9]|\d{2,})\D.*Gecko\/|Opera\/(?:[89]|\d{2,})\D/.test(navigator.userAgent)
|| location.hostname == "dso.2ch.net") {
var isIE6 = navigator.userAgent.indexOf("MSIE 6.0") > 0;
for (var i = 0; i < document.links.length; i++)
if (/^http:\/\/(?:\w+\.)?(?:2ch\.net|bbspink\.com)\/test\/read\.cgi\/?/.test(document.links[i].href)) {
document.links[i].normalize();
var data = document.links[i].firstChild.data, isEqual = document.links[i].href == data;
document.links[i].href = document.links[i].href.replace(/read\.cgi(\/)?/, function(s, slash) { return "read.html" + (slash ? "/" : ""); });
if (isIE6) {
document.links[i].firstChild.data = isEqual ? document.links[i].href : data;
document.links[i].parentNode.replaceChild(document.links[i].cloneNode(true), document.links[i]);
}
else if (isEqual)
document.links[i].firstChild.data = document.links[i].href;
}
}
} catch(e) {}
----------------------------------------------------------------------
さらに,検索エンジン等外部リンクから飛んできた場合に対応ブラウザなら
read.html に振るとするとこうかな.dso では %{HTTP_USER_AGENT} の行は
コメントアウトで.
----------------------------------------------------------------------
RewriteCond %{HTTP_USER_AGENT} MSIE\s(?:[6-9]|\d{2,})\D|rv:(?:1\.(?:[89]|\d{2,})|[2-9]|\d{2,})\D.*Gecko/|Opera/(?:[89]|\d{2,})\D
RewriteCond %{HTTP_REFERER} ^http://
RewriteCond %{HTTP_REFERER} !^http://(?:\w+\.)?(?:2ch\.net|bbspink\.com)/(?:\w+/(?:|(?:subback|index)\.html)$|test/read\.(?:html|cgi)[#/]?)
RewriteRule /?read\.cgi(/.*)?$ /test/read.html$1 [R]
---------------------------------------------------------------------- >>781 クラスタファイルシステムですか.雪だるまあたりで有用かも知れませんね.
# とはいえ Linux 用のようですが......
http://aa5.2ch.net/test/read.cgi/nanmin/1156950721/576-625n
もし read.html でも●ログインを実装するなら似たような感じで.もっとも,
認証サーバへの橋渡しだけしてやればあとはクライアント側で処理できるでしょうけど.
あと,今更感はありますが...... myanmar, yangon の head.txt で
「JavaScript 版 read.html 実験中」とか入れといてもいいのかも. blackgoatとか、read.htmlとかで共有datスペースを作ったほうが
効率いいのかなぁ、、とか思ったです。
>>783 そういうことですか.アイデア的には面白そうですが,
現在独立してる各サーバを dat スペースを共有する形に再編するのは
結構大がかりな作業になりそうなのと,以前雪だるまで NFS 使ってた
時のように虫踏んで苦しむことにならないか,ってあたりが課題かもですね.
FreeBSD だと GEOM gate とか使うことになるのかな......? >>781-783
いろいろ、おもしろそうすね。
速攻でできるわけではないですが、そのへんの続きはこっち↓あたりで。
2ch特化型サーバ・ロケーション構築作戦 Part23
http://qb5.2ch.net/test/read.cgi/operate/1153650861/ >>784
そのへんは、、、。send-pr しまくりかしら。
とりあえず hrs さんにしかられない方向で。 時代の先を目指しているようで
実は時代と逆行しているような気がするのは気のせいだろうか。
でも出来上がりは楽しみだな。 まぁ,一応動く形になってるという意味ではできてないというわけでもないとは思いますが,
何かきっかけがあれば動き出すかも,今はそのきっかけ待ちという状態かな...... まぁ,dso 以外の鯖でも動かすには他の鯖にこれを入れられる人が動いてくれることも前提なんで...... 一応,必要な手順をまとめておこう......
・ read.js は www2 に入れる.ついでに,be.js も若干変更してるので,それも更新.
・ read.html は各鯖に入れる(雪だるまではフロント側).
・ subback.html, index.html の JavaScript 部分を >>780 前半のように変更 (bbs.cgi).
・ httpd.conf か .htaccess に >>780 後半の設定を入れる.
・ pastdat.so も各鯖に入れる(雪だるまではバック側).
・ pastdat.so 用設定として以下のを httpd.conf か .htaccess に入れる.
<Files *.dat>
ErrorDocument 404 /test/pastdat.so
</Files>
# <Files pastdat.so>...</Files>: スタンドアローンサーバのみの設定.
# リバースプロクシバックエンド(雪だるま)では入れない.
<Files pastdat.so>
AddDefaultCharset Shift_JIS
Header always append Cache-Control max-age=5
</Files> # httpd 用設定まとめ
LoadModule charset_lite_module libexec/apache2/mod_charset_lite.so
<Location /*/datx/*.dat>
AddDefaultCharset Shift_JIS
Header always append Cache-Control max-age=5
</Location>
<Location /*/dat-utf8/*.dat>
SetOutputFilter XLATEOUT
CharsetSourceEnc CP932
CharsetDefault UTF-8
CharsetOptions NoImplicitAdd IgnoreIlSeq
AddDefaultCharset UTF-8
Header always append Cache-Control max-age=5
</Location>
<Location /test/bbs-utf8.cgi>
SetInputFilter XLATEIN
CharsetSourceEnc CP932
CharsetDefault UTF-8
CharsetOptions NoImplicitAdd IgnoreIlSeq
</Location>
<VirtualHost ...>
# ServerName xxx.2ch.net のところ
AliasMatch ^/(\w+)/dat(?:x|-utf8)/(\d+\.dat)$ /home/ch2xxx/public_html/$1/dat/$2
# 雪だるまでは上記 AliasMatch の代わりに RewriteRule で.
# RewriteRule ^/(\w+)/dat(?:x|-utf8)/(\d+\.dat)$ http://xxxb.2ch.net/$1/dat/$2 [P]
Alias /test/bbs-utf8.cgi /home/ch2xxx/public_html/test/bbs.cgi
</VirtualHost>
# ↑までは httpd.conf で設定.
# ↓以降は httpd.conf / .htaccess どちらでも可.
RewriteCond %{HTTP_USER_AGENT} MSIE\s(?:[6-9]|\d{2,})\D|rv:(?:1\.(?:[89]|\d{2,})|[2-9]|\d{2,})\D.*Gecko/|Opera/(?:[89]|\d{2,})\D
RewriteCond %{HTTP_REFERER} ^http://
RewriteCond %{HTTP_REFERER} !^http://(?:\w+\.)?(?:2ch\.net|bbspink\.com)/(?:\w+/(?:|(?:subback|index)\.html)$|test/read\.(?:html|cgi)[#/]?)
RewriteRule /?read\.cgi(/.*)?$ /test/read.html$1 [R]
# ↑までは,雪だるまではフロント側で設定.
# ↓以降は,雪だるまではバック側で設定.
<Files *.dat>
ErrorDocument 404 /test/pastdat.so
</Files>
# <Files pastdat.so>...</Files>: スタンドアロンサーバのみの設定.
# リバースプロクシバックエンド(雪だるま)では入れない.
<Files pastdat.so>
AddDefaultCharset Shift_JIS
Header always append Cache-Control max-age=5
</Files> 本命 ex16
対抗 ex11,tmp5
大穴 qb6
? ex 系もいいですが,さらにそれ以外も付け加えるとすれば,read.cgi が
止められてる鯖とか LA が上昇して人大杉になりやすい鯖とかもですかね.
そのあたりは,鯖の状況も見ながらってことになるでしょうけど.
あと,BE 板がある etc4 とかも...... be.js には旧 BE 板の機能継承という
側面もありますし,さらに dso と同一鯖なので面倒見やすいということも.
それと,今すぐじゃなくてもいいのかも知れませんが,今後の検討課題としては
・ [PR]〜[PR]
・ 関連キーワード
ってのもありますが,これは >>266 のように JavaScript 変数として
渡してもらう形にすればいいかと.いわゆる JSON ってやつかな. >>808
>read.cgi が止められてる鯖
2chplusとかは如何 そういえば、過去ログのようなhtmlファイルを最初から作っていく事で
read.cgiを使わなくする計画とかもあったよね。大分前に。 asda dawefhawliufh lawg agr awg a ところで、cgiをphp化するとかは考えてないとか? 既にPHPに変えたところでパフォーマンスダウンにしかならないところまで登りつめてるんだよな。
read.cgiってすげーよな。UNIX板ありがとうなんて言ってた頃のあれの面影も残ってねぇw cgiだった頃のソース放出したりすると差し障りあるのかな?
それがC言語版なんかだったりすると互換板的にスゲェ需要あるんじゃ。 Common Gateway Interface
言語に依らないのですー♪ >>819
いやあのだから、、、(照)
ttp://ja.wikipedia.org/wiki/Common_Gateway_Interface
この辺とか熟読♪ 「DSOが」
ウェブサーバの一部なのか、ウェブサーバの外部のプログラムなのか、と。 >>821
でしたらこちらをどぞー♪
ttp://httpd.apache.org/docs/2.2/ja/dso.html
CGIとは違う方向に持って行くんだもん(照) このスレは静的なHTMLでread.cgiを置き換えるスレですから いっそレスの数だけサーバ立てようぜ
超分散処理最強 サーバサイドで動かす read.cgi の話題は↓で.
http://qb5.2ch.net/test/read.cgi/operate/1105909861/l50
ともあれ,IE 7 リリースにより >>582-585 が徐々に進むと.
んでもって,dso 以外に入れるってところで足踏みしてるわけですが,
VIP の移転先新鯖でこの機会に入れるかどうか,ってとこですかね. そういやFlashで2chブラウザってありそうでないような IEでスレッドの内容を保存できないという問題は、
saveSnapshotビヘイビアを使って、取得したdatの内容を
退避しておけば解決できるかもしれません。
<textarea id="hiddencache" style="behavior:url(#default#saveSnapshot);display:none;">
(IEでページを保存する時に、ここの内容はそのまま保持される)
</textarea>
テキスト欄にステージデータをコピペして保存してから開くと
プレイ可能なファイルができてる、不思議なサンプル。(テキスト欄がSaveSnapshotになってる)
http://makimo.to:81/ldm/lrc.html >>834 そういうのがあるんですか.ただ,ローカルファイルへの保存に関しては
例えば Firefox の完全モードでの保存だと HTML の構造自体を変えてしまうだとか,
オンラインでの表示よりもいろいろ考慮しなければならないことも増えてくるので,
とりあえずは従来版 read.cgi の方でやってもらうということで...... これの導入をひろゆきさんへの誕生日プレゼントということで...... - read.js / be.js の確認・同期 (www2b => www2f[1-5](= www)) … done? by 管理人
- SunOS さんパッチバージョンの mod_charset_lite を有効にする @ life7 … やりました
- test/pastdat.so を入れる @ life7 … done by SunOS さん
- httpd.conf を上記のとおり更新して、更新内容を有効にする @ life7 … やりました
- bbs.cgi の該当箇所をコメントじゃなくす … まだ あと、>>839 に加えて、
- test/read.html を入れる @ life7 … done by SunOS さん
かな。 うまく動いているのかな。
うまく動いているなら、
明日早いので、今日はそろそろ寝る時間かも。 >>839 乙です.www2 は手動での同期が必要な模様.
http://www2.2ch.net/snow/read.js
Last-Modified: Tue, 14 Nov 2006 07:13:22 GMT
Content-Length: 45047
http://www2b.2ch.net/snow/read.js
Last-Modified: Tue, 14 Nov 2006 20:21:13 GMT
Content-Length: 45101 >>842
できたはず。
あとは bbs.cgi の有効化だけですか。
これは、様子を見ながらでも OK かなと。
ちと、今日はこのへんで。 あ、あと read.html の動作確認がありますね。
有効化はそのあとかなと。
すみませんが、動作確認は各位におまかせいたしますです。
read.html を直接使えば、今現在使えているはず。 www2 の同期をしたら、
read.html がうまく動かなくなった予感。 ううむ、ちと私ではわからないですね。
今日は私が、時間切れの予感。すみませんがこのへんで。 む、ブラウザを再起動したりいろいろやっていたら見えるようになった。なんでだろう。
いずれにせよ、今日の私の作業はここまでで。 >>843-847 乙です.お休みなさい.
read.js はこちらのミスですた.すみません......
なんか www2 の入れ方や同期のさせ方わかったっぽいので,こちらで修正版入れますた.
キャッシュクリアとかして表示させればうまくいくかと......
http://life7.2ch.net/test/read.html/lifesaloon/1162569075/l50 全部や50をクリックしたときにはdatを取得しなおしてるんだっけ? >>850 PATH_INFO 形式では別ページに遷移する形になるので
HTTP リクエストが発生しますね(更新されてなければ 304 が返ります).
location.hash 形式では既存のデータをそのまま利用しますが,
現状ではユーザの利便性を優先して PATH_INFO 形式がデフォルトです. さて,bbs.cgi 更新してみますかね @life7 qb5 と life7 の bbs.cgi 更新 done
さてさて...... 壷は知らんけど、専ブラ知らないでIE使ってる人はそんなこと気にしないような気がする
read.htmlは>>854 だとどこに集計されるのかしら? >>835
例えば、hiddencacheが空白だった場合は通常の動作をし、
hiddencacheにデータがあれば保存済みファイルと判断して
そちらから読むという感じです。
IEで保存した後は他のブラウザで開いても読める(はず)という利点もあります。
ただ、IEの仕様変更でいきなり使えなくなったりする怖さもあるので、
やっぱりread.cgiを使ってもらうのが確実ですね。 通常がJAVA表示で表示されない場合はcgiに誘導は? 特に苦情等が押し寄せてないことからすると,特段トラブル等はないということでいいのかな.
ただ,統計見ても read.cgi 呼び出し数にもあまり大きな変化がないような......
JavaScript 切ってたりブックマークから直接 read.cgi 呼び出したりしてるユーザが多いってことかな......
あと,デフォルトでは RewriteEngine on は入ってないんですね.
RewriteCond / RewriteRule の部分が効いてない悪寒(その部分はぐぐる等
外部リンクから read.cgi が呼ばれた場合 read.html に飛ばす設定). トラブルが無くて期待はずれとか書くと怒られるかな。 >>860
RewriteEngine On にしてみた。@ life7 全板にやる前に、すぐ苦情を言って来る板にいれた方が。 read.cgi 微減
html dat 微増
その他 激増
Total 2割くらい増
その他ってなんじゃらほい >>861 まぁ,良くも悪くも静かで拍子抜けって感じかもw
>>862 乙です
>>863 まぁ,大きな問題はなさそうですね.
ただ,右上の [PR]?[PR] は要対応かも(後述).
>>864 元気の良さそうな板のあるところとかですかね.
>>865 とりあえず,そうですね.
>>866 今まで存在しなかった URL (datx, dat-utf8, bbs-utf8.cgi) なのかも......
pv.40.kg がどういう形で集計してるのかよくわかりませんが......
>>867 それがあるのは www2 です.
>>868-869 乙です.dat のは /datx/ もありますね.
で [PR]?[PR] のところですが,例えば www2 あたりに
----------------------------------------------------------------------
var PR = {href:"http://hogehoge.example.com/", text:"ほげほげショップ"};
----------------------------------------------------------------------
のような内容の .js ファイルを置いてもらって,
それを読み込んで表示する形にするといいのかも. >>870
datx/ もカウントするようにしました。
PR のところは、管理人も交えてというかんじですか。
# ちと、たぶん夜までオフライン。 >>871 乙です.[PR] のはそうですね.
そういえば >>457-458 の問題があったのも思い出しますた......
life7% perl -e'print "\x81\x60";' | iconv -f cp932 -t utf-8 | iconv -f utf-8 -t ucs-2be | od -txC
0000000 30 1c
0000002
ってことで,libiconv をパッチ込みで作り直し (>>478-479)
ってのもお手数ですがおながいします>むむむさん
# 致命的な問題ではないので,ゆっくりでいいです. いったん life7 の bbs.cgi の該当箇所を戻しておきます。
read.html の機能は殺さないけど、
デフォルト(index.html subback.html 等)は元に戻るはず。 >>877
done.
ちと、しばらくオフライン。 sakuのbbs.cgiでread.htmlだとread.cgiに変換するようにするとか。
削除依頼がread.htmlでも別にかまわないんでわ 削除ツールのほうで対応してないとかの問題だったりするんすかね?
ん?と,削除依頼で提示される URL が read.html になるのが問題なのであれば,
saku / saku2ch の書き込みでは本文中に /test/read.html/... が出てきたら
/test/read.cgi/... に変換するとかすればいいとかいうことではなくて? こんな形で依頼が注目されてしまって、ちょっとお気の毒かも。 あるいは,read.cgi という URL のままで read.html の機能を提供できればいいのかも.
例えば,index.html / subback.html 中の JavaScript で URL 書き換えの代わりに Cookie の設定をして,
鯖側ではその Cookie があった場合に mod_rewrite で read.cgi という URL のまま read.html の内容を返す,と. >>888 の形で bbs.cgi 更新しますた @qb5, life7
んで,mod_rewrite の設定をこうしてもらえばいいかと.
RewriteCond %{HTTP_COOKIE} (?:^|;\s?)READJS="?on"?(?:$|;)
RewriteRule /?read\.cgi(/.*)?$ /test/read.html$1
RewriteCond %{HTTP_USER_AGENT} MSIE\s(?:[6-9]|\d{2,})\D|rv:(?:1\.(?:[89]|\d{2,})|[2-9]|\d{2,})\D.*Gecko/|Opera/(?:[89]|\d{2,})\D
RewriteCond %{HTTP_REFERER} ^http://
RewriteCond %{HTTP_REFERER} !^http://(?:\w+\.)?(?:2ch\.net|bbspink\.com)/(?:\w+/(?:|(?:subback|index)\.html)$|test/read\.(?:html|cgi)[#/]?)
RewriteRule /?read\.cgi(/.*)?$ /test/read.html$1 今の rewrite の設定は、
RewriteCond %{HTTP_USER_AGENT} MSIE\s(?:[6-9]|\d{2,})\D|rv:(?:1\.(?:[89]|\d{2,})|[2-9]|\d{2,})\D.*Gecko/|Opera/(?:[89]|\d{2,})\D
RewriteCond %{HTTP_REFERER} ^http://
RewriteCond %{HTTP_REFERER} !^http://(?:\w+\.)?(?:2ch\.net|bbspink\.com)/(?:\w+/(?:|(?:subback|index)\.html)$|test/read\.(?:html|cgi)[#/]?)
RewriteRule /?read\.cgi(/.*)?$ /test/read.html$1 [R]
ですが、その下に >>889 を追加すればいい、ということなのかしら。 いや、自分なりに読んでみると、
>>890 の4行のところを、
>>889 の6行と入れ替える、ということかしら。 >>891 そうです.今まで external redirect してたのを internal redirect にするってことで.
これで,外面的には read.html という URL を使わずに済むようになるってことで. >>892 乙です.
とりあえず,今は臨時に test/.htaccess 置いて
RewriteEngine on
RewriteCond %{HTTP_COOKIE} (?:^|;\s?)READJS="?on"?(?:$|;)
RewriteRule /?read\.cgi(/.*)?$ /test/read.html$1
のようにしてます(httpd.conf 側の設定が完了したらこれは消します).
で,これに伴い従来版 read.cgi にアクセスしたい場合用に
read.so を read.cgi に対する symlink として置きますた. internal redirectっていう手があるんすねぇ。
面白そうだし、やるだけやってみますか。
ずっと専ブラなんで何が起こってるのか判らんが・・・軽くなるならいいぞ
>>897
一日過ぎたが誕生日おめ 某スレを見ようとブクマをクリックしたら
いきなりスレイプニル1.66が不正終了(でも何故かアプリ自体は落ちない)して
「読み込み中」の表示が出たまま固まったから何事かと思ったよ。
アプリ再起動したら普通に読み込めるようになったけど。 うちのjavaコンソールで見れないんですが。
専ブラのギコナビ、マカフィ導入したらスレが見れなくなって
使えなくなったから、IEで見てるんだけど。 >>900 ん〜たまたま落ちたのか,それとも特定の条件で再現するのかが問題ですが,
また落ちるようなら知らせて下さい.
>>901 Java コンソールは Java アプレット(JavaScript とは別物)で発生するエラーメッセージ等を
表示するものじゃないかと...... それとも,IE でスレ表示自体ができないんですか? オペラと火狐は問題なかったけど読み込む時にもっさりしてる >>902
901だけど、板一覧からクリックすると
読み込み中。。。の表示だけになる。
javaの設定がおかしいのかな? アプレットにjava2v1.4.2_03を使用してるんだけどな…。 >>903 まぁ,いったん HTML ページ読み込んだ後に dat 読み込みますからね......
>>904-905 これで使用してるのは Java ではなく JavaScript です.
んで,↓を参考に設定を見直してみて下さい.
http://help.yahoo.co.jp/help/jp/common/sys/sys-07.html 2ch内のリンクから飛んだり、アドレスバー直打ちだとURLがread.cgiのままなのに
googleやスレタイ検索など外部からのリンクから飛ぶとURLがread.htmlになってしまうのは仕様ですか? あるいは,ウィルス対策ソフト導入してる場合に JavaScript 有効にしてても
read.js がブロックされて動かなくなっちゃう,って可能性はあるのかな......?
>>907 まだ httpd.conf の設定変更が完了してないためではあるんですが,
臨時の test/.htaccess の方で対策してみますた.今はどうですか? ん?同じ URL に対する RewriteRule が .htaccess と httpd.conf 両方にあると
httpd.conf の方が勝っちゃうのか......ってことで,httpd.conf の設定変更まで
お待ち下さいってことで...... >>907 ウイルス対策ソフト「うはwwwwwwwwajaxktkrwwwwwwwwwwwww遮断wwwwwwwwwwwwwwっうぇwwwっうぇ」 ここは技術的な話の場かな?
取り敢えず書いておこう。
life7でJavaScript版になったらIEから書き込みできなくなった。
ERROR! ERRORブラウザをリロードしてみてください
ホスト xxxxx
ってでる。
read.cgiをread.soに直したら書き込めるけど。
IEで書いてみたら書き込みの確認タブが出てくるまで5秒ぐらいかかった >>911 「ERROR:ブラウザを立ち上げなおしてみてください。」というエラーであれば,
PC 側の内蔵時計が実際の時刻よりかなり進んでる場合に発生する可能性があります.
時計を合わせてから再度やってみて下さい. http://www2.nict.go.jp/cgi-bin/JST.pl おいらはIE6だけど、何度やってもダメ。
ブラウザ閉じてやってもみたけど、どうしても書き込めない。 >>916は>>914までしか見てなかった。
>>915
書きこめた。ありがとう。
それにしても、たった6分程度でダメなのね。
お疲れ様です。
>>907が直ったのを確認しました。 901ですが、株価さん、スプリクトはみんな有効になってました。
今のところread.cgiをread.soにすれば見れたので手動で見ます。
ウィルスソフトをノーdからマカフィにしたのが悪かったのかな? >>まろゆき
有効になってるスクリプトのせいなのかよorz スプリクトでどうも変換できないと思ったけど、まろゆきに
突っ込まれて、924で比べてやっとこ間違いに気づいたw
連投スマソ、逝ってくるorz アンチウィルスソフトが原因かどうかは、自分で切って試せばわかるでそ トラブルをサポートしてもらえたので気を良くしてもう一つおかしなところ。
書き込む時に「〜」を使うと表示が「???」ってなる。
専用ブラウザでどう見えるのかは分からないが、私のIE6ではそう。 >>927
IE7で書いても同じです。
JaneDoe Viewで見ても???になってます。 >>926
アンチウィルスのウィルス対策設定やスクリプトスキャン設定を
オフにしても同じだった。
ソフトのせいじゃないみたい。
read.soにすれば見れるし書き込めるので、当分そっちでやってみる。 外野には聞いてない
ま、運営のスタンスはいつも同じでしょうけど
いつかやってた、書き込み時の広告をやめたのは苦情がきたからなのでしょうか?
運営は快適かもしれませんが、利用側にとっては反応性が悪くなって
快適性が損なわれてます。
やめてほしいし、少なくとも板の適用範囲の拡大はしてはほしくない。 ただなんだし、誰かに強制されてるわけでもないし。
無理に使うことはないよ。
少なくとも、俺は今までよりいろいろな機能がついて便利だと思ってる。
be.js以外は。 >>927-928
文字コード変換ライブラリがらみかな。
>>872 の作業が終われば直るかも。
>>933
1回書くだけ書いて、もうレスはしないつもりでしたけど
デフォルトで使用状態になってるのに言ってる意味がわかりません。
スレを開けばオフにできますけど
別のスレを開くたびまた同じことです、使わないことにするだけでわずらわしいです。
板のトップでオフにできるなら、それにこしたことはありませんけれど
勘違いでしたらごめんなさい。 >>937
そういう極端論をいうひとはどうでもいいです。 そういう決め付けをする人はどうでも良いです。
専用ブラウザを使う等、いくらでも回避策はあるのに自分が努力せずに
相手に自分の思い通りになるようにしろと文句ばかり言う人はいなくなれば良いと思います。 >>939
え〜と、運営側でもないひとの個人的意見はどうでもいいですよ
専ブラ使えば関係ないのは、導入する以前から同じことですから
全てわかってる上でIE上の利便性についての、苦情をさせてもらってますので
運営が正義だ〜!って、いうひとの御託はどうでもいいです。 >>920 乙です.
>>927-928 >>935 ってことです.
>>931 不思議ですねぇ......まぁ,mod_rewrite での振り分けに
Cookie 使うようになったので,index.html / subback.html に
手動で Cookie 設定できる機能を付けてみようかと思います.
>>932 のような意見もありますし. >>940
だから決め付けるなっての。運営が正義だ〜!なんて誰が書いたんだ。 >>941
面倒かけますね。
一応、read.soは使えたのでどうにかなると思う。
もしかしたら別の原因があるかも知れないし。 this.postForm.time.value = Math.floor(new Date().getTime() / 1000);
は
this.postForm.time.value = Math.floor(new Date().getTime() / 1000) - 1000;
ぐらいにすればPCの時計に依存しなくてすむんで変えて欲しいなあ。
あるいはいっそのこと
this.postForm.time.value = 1;
にしちゃえばいいんですけど。
2chの時計がずれたときとか、スレ読み込んですぐ書き込むときとかも問題出るかもしれないし。
(昔Janeとかtwintailで苦労しました) >>941
素直にお礼を言わせて貰います
ありがとうございます
門外漢ですので、まだどういうことになるかは、わかりませんが
それと、もうひとつ思った可能性ですが
わたしの使ってる回線はADSLですが低速です、それによってひじょうにひっかかりを
感じてるのかもしれません、いろんな環境のひとがいると思いますのでご一報まで。 >>945
その人も半分外野だけど(笑
名無しは黙ってろって素直に書けばいいのに datサイズ22.1 KBのとき
read.cgiの吐いたHTML 30.1 KB
read.html使用時( read.html 4KB + read.js 44.0 KB + dat ) 69.2 KB
139 KBのとき
read.cgi 178 KB
read.html 186 KB
307 KBのとき
read.cgi 348 KB
read.html 354 KB
試してみたけど通信量は低容量になればなるほど差が大きくなる。
二倍程度に開くことも。
datサイズが増えると差は小さくなる傾向。
最初のread.htmlはread.cgiの吐くhtmlより小サイズなので、
read.cgiの吐くhtmlよりも速く読み込まれ描画される。
その後、javascriptでdatが変換され、描画されるため、
高速なPCよりも低速なPCは引っ掛かりを感じるかもしれない。
また、read.html自体は上記のread.cgiの吐くhtmlよりも速く読み込まれ描画されるため、
実際の全体の処理時間自体はそんなに変わらなくても(javascriptでの変換が入るので、少々遅くなるのは確実だが)
「読み込み中。。。」の画面で待たされるため、これを遅く感じるということもあるかもしれない。
>>946
そういやよほどこの人のほうが自分の言ってることに当てはまってるな。 >>945
自分も超低速だ。
しかもISDNだしw index.html / subback.html にモード切替機能を付けてみますた.
>>944 の件は -1800 にしてみますた. >>947
なるほど。read.jsはキャッシュされるから最初に1回読み込めば
次のスレッドからは転送量の低減が見込めそうですね。
低速回線の人には福音かも。
CPUが遅いマシンを使っている人はJavaScriptでの変換時間が気に
なりそうですなあ。「全部読む」を使わないのが逃げ道かな。
>>949
お疲れさまです。Firefox 2.0(WinXP)で切り替えできました。 運用の却下屋はただ却下してる訳じゃない。
ボランティアさん(主に作成者)が繰り返し説明した事を
復唱してるのだよ。
一人の人が百回説明するより、
百人の人が一回説明する方が効率が良いだろう?
名無しもボランティアなのだよ。
話の歪みは各自で判断してくれ。 >>949
ありがとうございます。
大げさですが、素早い対応に涙が出ました
これで使い分けできますし諸所問題がなければ、なにとぞこれで
いってほしいかなとネットの一庶民的には思います。
>>947
レスを汲み取っていただきありがとうございます。
「読み込み中。。。」画面での度々の待ちが主にひっかかりですね
体感上も実測でも
特に>>950全部読むは使うと思いますよ
(全体的に、失礼な文章に、もしなっていたらごめんなさい)
試験的にread.htmlのdat読み込み変換表示速度を計測できるようにしてみるのも面白いかも。
リソースの無駄遣いと言う気がせんでもないが。 >>953-954 本文欄に入れるようにしてみますた. 早!
早速このスレを読み込んでみました。
http://life7.2ch.net/test/read.html/lifesaloon/1162569075/l50
elapsed time: 1.375 sec.
CPU:p4 3.0GHz Mem DDR400 CL3 dualch. 2GB >>956のスレッド
l50
elapsed time: 1.001 sec.
all
elapsed time: 2.203 sec.
CPU:PenM 1.7GHz
これ、本文欄に表示だと普通の利用者には邪魔じゃないのかな
read.cgiのバージョン付近に表示してほしい >>956のスレッドに同じ
l50
elapsed time: 1.125 sec.〜 1.485 sec.
all
elapsed time: 5.563 sec.〜 6.156 sec.
Ceieron(R)CPU2.60GHz
※測定値は都度若干の幅あり
行きがかり上、わたしも計測させていただきました
お前のパソコンが遅いんだよプギャーってのはなしでお願いします
容量が多いところですと全表示で15秒などと、測定してます ブラウザ書き忘れた。
http://life7.2ch.net/test/read.html/lifesaloon/1162569075/
CPU:p4 3.0GHz Mem DDR400 CL3 dualch. 2GB
IE 6.0.2800.1106
一回目 elapsed time: 2.109 sec.
二回目 elapsed time: 1.766 sec.
三回目 elapsed time: 1.937 sec.
firefox 2.0
elapsed time: 2.187 sec
elapsed time: 1.907 sec.
elapsed time: 1.797 sec.
opera 9.02
elapsed time: 1.375 sec.
elapsed time: 1.469 sec.
elapsed time: 1.562 sec. ATHLON XP2200+ 256M
炎狐2
ALL elapsed time: 0.672 sec.
50 elapsed time: 0.703 sec.
IE7
ALL elapsed time: 0.625 sec.
50 elapsed time: 0.546 sec.
おまけ
炎狐3 Reflow Refactoring
ALL elapsed time: 2.766 sec.
50 elapsed time: 0.657 sec. 表示位置変わりましたね。(某雑談スレではうぜえええええと評判でしたよw)
以下は>>956のスレッドです。
表示位置が変わる前の測定値です。
Celeron1066MHz 256MB
IE6.0.2800.1106
all
elapsed time: 3.945 sec.
elapsed time: 3.655 sec.
elapsed time: 3.715 sec.
elapsed time: 3.796 sec.
elapsed time: 3.785 sec.
firefox2.0
all
elapsed time: 4.025 sec.
elapsed time: 3.545 sec.
elapsed time: 3.405 sec.
elapsed time: 3.555 sec.
elapsed time: 3.425 sec.
単純な計測スクリプトを書いてページを取得して描画するだけの速度計ってみた。
>>959の全部をIE6エンジンのHTAで読み込んだ場合500ミリ秒程度だった。
UTF8じゃないから文字化けしたけどね。
このスレッドで、お願いして宜しいのでしょうか?
昨日深夜から、『夢・独り言@2ch掲示板』のスレッドの設定が変わったらしく、
スレッドの上部近くに『beチェック2BP BRZ PLT DIA S★』の
表記も出るようになってから、マイクロソフトのWindowsXPのインター
ネットエキスプローラーで、『ブラウザ→ファイル→名前を付けて保存』をやっても、
スレッドの保存ができなくなってしまいました。昨日の夕刻までは、その操作で
スレッドを保存することができたのですが。
>>966
面倒かとは思いますが、アドレス中のread.htmlをread.cgiまたはread.soに
変更して対処してくださいませ。 >>966
スレッド画面の下にある「非 JavaScript 版は URL 中の read.cgi を read.so に」
というリンクをクリックすると以前と同じモードになります。こちらなら保存できる
でしょう。
毎回古いモードで表示したいなら、板のトップにあり「read.cgi モード切替」の
リンクをクリックすれば表示モードを変更できます。
なお、スレッドを保存するなら2ちゃんねる専用ブラウザの利用をオススメします。
>>968様、>>969様
お教え下さりまして、どうもありがとうございました!
CGIモードにしていても外部リンクから飛ぶとread.jsが動いちゃいますね Javascript有効の人は、人大杉がなくなるのかな? >>971 あぁ,そうか......
RewriteCond %{HTTP_USER_AGENT} MSIE\s(?:[6-9]|\d{2,})\D|rv:(?:1\.(?:[89]|\d{2,})|[2-9]|\d{2,})\D.*Gecko/|Opera/(?:[89]|\d{2,})\D
RewriteCond %{HTTP_REFERER} ^http://
RewriteCond %{HTTP_REFERER} !^http://(?:\w+\.)?(?:2ch\.net|bbspink\.com)/(?:\w+/(?:|(?:subback|index)\.html)$|test/read\.(?:html|cgi)[#/]?)
RewriteRule /?read\.cgi(/.*)?$ /test/read.html$1
の部分の条件に
RewriteCond %{HTTP_COOKIE} !(?:^|;\s?)READJS="?off"?(?:$|;)
を付加すれば Ok のはず. >>966 保存だけが目的なら,モードを変えなくても
「非 JavaScript 版は URL 中の read.cgi を read.so に」
のリンクを右クリックして保存でもいいですね. 表現が分かりにくいかも
見られない人は以下のリンクへって書いてその下にリンクを貼るとか。 報告
板のトップでCGIモードにしていても、なにかのはずみでJavaScriptモードで
読みに行ってしまう場合があるようです。
一度は書き込みのあとで、その他はタイミング不明。
たまにしか起こらないので使用上では問題はありませんが。 Googlebotからのアクセスはread.cgiに行くようにすればいいんじゃね? 901ですが、解決しました。
スレをクリックすると、読み込み中。。。という表示が
ページを表示しましたになっても変わらないのですが、
上の「全部」とか「最新50」とかクリックすることで
見れるようになりました。
でも読み込んでる途中でクリックすると、javascript:void;0
となり見れないままです。 あれ?ページを表示しましたになっても、
javascript:void;0になって見れなくなった…orz
読めたのはわずかの間だった…orz
IEとOSのバージョン、サービスパックレベルを書いておくとよいかもしれませんよ >>986
901です。
OSはwindowsXP SP2
IEのバージョンは6
ただし、回線速度はかなり遅く、115.2kbps >>990えーん!いじめる〜!゚(ノд`゚)゚・。
えーん!(つд;*)
∠__::::::::::::::.... ::::::' ノノ.:::/ \
 ̄7ー-、::::::: ´.:::/ .:::::.. \
l::..ラ´.::. .:: .:::::::``ヽ:.::::.::::..:. :. :. :. ::.. :. \
l/::::/:: .::: .:::::/-!:: :::. :: ::.::.:::::.:::.::. ::::.::.:. ト-ヽ、
. /.::,.イ::: :: ::.:::‐ナ‐-、|:.::::. ..:. ::!::ハ::::::!:::::::::l::::::!
//!::i:.:.:./::::// ,r==、ヽト、:::.:::|:,r=、:::|:::!:::::!::::/
´ l::!:::::l::::/l::::!/ ,r=、` ヽ:::|,=、 }イ:/:::/|:/
l|:::::ハ/::!l:::l 、 {{ o}}.:.:::::::::ソ{o}}, '/イl::/。´
。 ヽ|::::::::l:ヽヽ` ̄ _ 、  ̄ j:::メ'、 o _,. -‐
○ ゚ lハ:::::ヽ::`ド‐ /‐`=ァ _, ィ´::ノ二 -‐_二 -‐:::
,. '´ ̄``丶ヽ!``゙'==彳_:⊥'-‐´_, ィ´::::::::::::::: .::
/ ヽ、ー_.. -‐'´ _..-‐'´-_'´-― 、 .:
. /、 ..:::_,. -‐'´.::::: _,. '´ ̄ ̄`ヽ:::::::::::.. j .::: /
´ ヽ:....:::,. -‐'´..::::....::,. < ` ー 、:/..::/
}/!`ヽニー-,. '´ \ ⌒ ヽ、-、
/ / ,.イこラ`ヽ ヽ ::::::::::::::::ヽ:ノ
/ / i::::`ー'::::::::ヾ ', :::::::::::::::::::::!
'´ ! !:::::::::::::::::::,.' ! ::::;:::::::::/
! ` ' ! ''''´イ
ヽ / }\ /
\ / \ /
` 、 _,.イ ヽr―‐ '
 ̄} ̄ ハ
/ {! ト、
/ / ヽ
/ ` ー -- ... ___ /_ ..- }
/  ̄ ̄ |
>>978
> 株価【1050】 ▲▲ ◆cZfSunOs.U 様
>>>966 保存だけが目的なら,モードを変えなくても
>「非 JavaScript 版は URL 中の read.cgi を read.so に」
>のリンクを右クリックして保存でもいいですね.
お教え下さり、どうもありがとうございました。これからも宜しくお願い致します!(^^ゞ
>>979 表現をちょっと変えてみますた.
>>980 IE ってたまに Referer がおかしくなるバグがあったんでしたっけ?
とすると,おそらく >>971 と同じ原因ですね(対策は >>977).
>>981-983 検索ロボットは mod_rewrite で read.html に振る条件に
合致しないでしょうから,従来版 read.cgi に振られるはずです.
>>984-985 不思議ですねぇ...... スレッドを読む機能って大事なことだから、その辺の実験をex系以外で最初に始めるのはおかしい 2chは全体が巨大な実験場なのでは?
exはいきなりサーバーが落ちたりする危険な実験がよく行われますが・・・。
まあ、exでやるほうがいいのでしょうが、いつも実験場になるVipが
別の実験中ですし、root権限がないみたいですし・・・。
しょうがないのでは?
>>995 実験って意味では,life7 での導入前に dso でやってました.
今やってるのは,実験と言えないこともないかも知れませんが,
本格導入に向けた前段階って感じかと思います.ちなみに life7 が
選ばれた理由は,read.cgi 呼び出し数が多いためその代替となる
read.html の効果を確認するには適しているということです
(専ブラユーザの多いところでやってもあまり意味がない).
# そろそろ次スレですね...... >>997
901です。
また時間を置いたらまた読み込めたので、様子見します。
株価さん、ご迷惑おかけしました。 >>977
RewriteCond %{HTTP_USER_AGENT} MSIE\s(?:[6-9]|\d{2,})\D|rv:(?:1\.(?:[89]|\d{2,})|[2-9]|\d{2,})\D.*Gecko/|Opera/(?:[89]|\d{2,})\D
RewriteCond %{HTTP_REFERER} ^http://
RewriteCond %{HTTP_REFERER} !^http://(?:\w+\.)?(?:2ch\.net|bbspink\.com)/(?:\w+/(?:|(?:subback|index)\.html)$|test/read\.(?:html|cgi)[#/]?)
RewriteCond %{HTTP_COOKIE} !(?:^|;\s?)READJS="?off"?(?:$|;)
RewriteRule /?read\.cgi(/.*)?$ /test/read.html$1
にした。@ life7 このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。 レス数が1000を超えています。これ以上書き込みはできません。