read.js 2006ーJavaScriptはCGIの夢を見るか -2-
■ このスレッドは過去ログ倉庫に格納されています
read.cgiをjavascriptで実現させるプロジェクトのスレッドです。
life7で試験運用中。。。 ○シンボリックリンク作成
read.so -> read.cgi ○Apache の設定追加
1) mod_charset_lite 有効化
# for charset conversion of read.html
# この mod_charset_lite.so は、SunOS さんがパッチしたスペシャルバージョン
LoadModule charset_lite_module libexec/apache2/mod_charset_lite.so 2) datx/ と dat-utf8/ で dat を参照できるようにする
・datx/ は、Cache-Control: ヘッダを追加するため用
・dat-utf8/ は Cache-Control: ヘッダを追加し、かつ UTF-8 で dat を参照するため用
# httpd.conf でないと設定不可
<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> 3) test/bbs-utf8.cgi で bbs.cgi を参照できるようにするための設定(その1)
・read.html からの投稿用
<Location /test/bbs-utf8.cgi>
SetInputFilter XLATEIN
CharsetSourceEnc CP932
CharsetDefault UTF-8
CharsetOptions NoImplicitAdd IgnoreIlSeq
</Location> 4) バーチャルホスト部分への追加項目(その1)
# vitrual host for life7.2ch.net
<VirtualHost 206.223.152.55:80>
〜
</VirtualHost>
のところに以下を追加。
これにより datx/ や dat-utf8/ で、dat が参照できるようになる。
# あらかじめ mod_rewrite を有効にしておく必要がある
RewriteEngine On
# ここは httpd.conf でないと設定不可
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 5) バーチャルホスト部分への追加項目(その2)
4) の下に続けて以下を追加。
# コメントの内容にいまいち自信がないので、適切な文章に修正お願いします。
# > SunOS さん
# ここからは .htaccess でも設定可能
# index.html / subback.html 中の JavaScript で URL 書き換えの代わりに
# Cookie の設定をして,(in bbs.cgi)
# 鯖側ではその Cookie があった場合に mod_rewrite で read.cgi という
# URL のまま read.html の内容を返す,(下2行)
RewriteCond %{HTTP_COOKIE} (?:^|;\s?)READJS="?on"?(?:$|;)
RewriteRule /?read\.cgi(/.*)?$ /test/read.html$1
# 検索エンジン等から来た場合や、 Cookie がなかった場合などに、
# read.html にとばすための設定
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 6) ディレクトリ部分への設定
<Directory "/home/ch2xxx/public_html">
〜
</Directory>
のところに以下を追加。
これにより「過去ログ倉庫に・・・」を表示するための dso(pastdat.so) が
動作するようになる。
# for read.html
# see http://qb5.2ch.net/test/read.cgi/operate/1153819270/793-794
# ここからは .htaccess でも設定できる
<Files *.dat>
ErrorDocument 404 /test/pastdat.so
</Files>
# Following 4 lines must be comment out for snowman backend
<Files pastdat.so>
AddDefaultCharset Shift_JIS
Header always append Cache-Control max-age=5
</Files> 以上、のはず。
抜けがあったり、説明が間違っていたりした場合、
補足・指摘をよろしくお願いいたしますです。> SunOS さん、他各位
これで 20 まで伸ばしたので、即死はないかなと。
本日はたぶんここまでで。 >>23ひろゆきが、出てくるまで待っているの。
>>24ずいぶん、あなたも、そんな事するくらいヒマな人なのね。
携帯で規制されると二度とその携帯で書き込めなくなるから止めたほうがいいですよ〜 >>25
> ひろゆきが、出てくるまで待っているの。
ここでも行ったほうがいいんじゃないかな。
ttp://hiro.asks.jp/ それでもあなたのやってることは荒らし行為と同等ですよ。
いい加減お止めになったらいかがですか。
こんなことはひろゆきさんも嫌なはずです。 >>30じゃあ、初めから私がひろゆき宛てに、ファンレター(メールだけど)なんて送ったのが悪い事だったのかしら??
>>31
別に悪いことじゃないとは思いますが
彼は多忙ですから返事がないのは致し方ないと思います >>31
ここは運用のための情報を話す場所だよ
関係ない話はよそでやってくれ
>>33ホームページとか、質問の回答コメントを見ると『プライベートは、のんびりして過ごしています。』みたいな事が、目に付く所に書いてあったからファンレター送ってみたのよ。
ファンレター送るのは、悪い事なの??
馬鹿にアンカー付けるから、レスの削除依頼が出来ない件について ひどい!ここは、女の子をイジメルような醜い男ばかりなの??
えーん!゚(ノд`゚)゚・。
ひろゆきも嫌だろこんな粘着荒らし腐女子
NGワードに追加
◆jh9.qqAS0E
構うなよおまえら調子にのるから >>8-20 乙です.>>18 の
-# Cookie の設定をして,(in bbs.cgi)
+# Cookie で JavaScript モードに設定して,(in bbs.cgi)
-# 検索エンジン等から来た場合や、 Cookie がなかった場合などに、
+# 検索エンジン等から来た場合でかつ Cookie で CGI (非 JavaScript) モードに設定されていない場合に、
以外はそれで Ok だと思います.あと,雪だるまでは pastdat.so 及び
それ用の設定はバック側,それ以外はフロント側ってことですね. さっきJavaScript版でlife7に書きこんだら、
行間を空けるための空行(スペース等一切なし。Enterのみ)が詰まっちゃったよ。
read.soでみても詰まってるから、書きこみ時の問題かな?
ページを戻ったり進んだりしたら、キャッシュされなくてJavaScriptが毎回動くのは仕方ない?@IE6
>>39
お前ネカマだろ >>43 直しますた.
# 空行があると /\s+$/gm ってのが \n まで食っちゃうわけね......
>>44 まぁ,ファイルはキャッシュしても描画結果まではキャッシュしないでしょうから...... >>41
了解です。
>>18 をこうしてみた。
# ここからは .htaccess でも設定可能
# index.html / subback.html 中の JavaScript で URL 書き換えの代わりに
# Cookie で JavaScript モードに設定して、(in bbs.cgi)
# サーバ側ではその Cookie があった場合に
# mod_rewrite で read.cgi という URL のまま read.html の内容を返す (下2行)
RewriteCond %{HTTP_COOKIE} (?:^|;\s?)READJS="?on"?(?:$|;)
RewriteRule /?read\.cgi(/.*)?$ /test/read.html$1
# 検索エンジン等から来た場合で
# かつ Cookie で CGI (非 JavaScript) モードに設定されていない場合に、
# read.html にとばす (下5行)
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 あと、read.js と be.js (>>11) は、これを敷衍する際には
各サーバの test/ の下に入れたほうがいいかもと思った。 >>46 乙です.
>>47 難しいところですね.www2 で一手に引き受ける方がいいのか,
それとも各鯖で分担した方がいいのか......
どちらでも,www2 の index.js と同様に mod_expires で
リロードアクセスをある程度抑制することはできるでしょうけど. そういえば......もし www2 が逼迫するなら,雪だるまフロントと
www2f[1-5] を分離して,stiger をそのために利用するという道もあるかも? とはいえ,JavaScript 切ってるユーザが多いためなのか,life7 での
read.html 導入前後で統計データはあまり大きく変化してないようなので,
index.js が www2 に与えてる負荷よりは read.js や be.js による負荷は
小さいのかなという気がしないでもないです...... >>52
昨日、誕生日だったの!?
取り敢えず、おめでとう。。 >>53私の誕生日は、27日だよ☆⌒(o^▽^o)ノ゜
もう、28才になるオバサンだけど・・。
お客受けバツグンの巨乳が自慢かな??(〃ω〃)
read.jsのほうに「不具合がおきた場合はこちら」とかで
運用情報のURLをつけたほうがいいやも、、
トラブルが発生してないのか、
発生してるけど、放置されてるのかよくわからず、、
誘導するときは
「スレッドの表示方法が変わりました。スレッドの表示で不具合が出た場合は運用情報板までご連絡ください。」
かね。 鯖の負荷が高いときはpastdat.soを止める事もあるの?
pastdat.soが止まってる時にdat落ちしたスレを見ようとすると
どーゆー挙動になるんだろう >>55 read.js っていうか read.html に入れてみますた.
>>58 pastdat.so は read.cgi と比べてもかなりコンパクトでかつ
やってる処理もかなり単純なので,静的ファイルのレスポンスに
毛が生えた程度のインパクトしかないんじゃないかと.
しかも,むむむさんもどっかで言ってたような気がしますが,
過去ログで“祭り”が起こるってことはまずないですしw
ということで,基本的には pastdat.so で人大杉ってのはないんじゃないかと.
ところで,read.html に対してどの程度アクセスがあるのか既存の統計データだと
いまいち不明なので,ちょっと簡便に調べてみますた.今は read.html も
read.cgi という URL で呼ばれてるので,read.cgi の数には read.html も含まれてます.
/dat-utf8/ や /datx/ は read.html から呼ばれますが,read.html の機能でリロードした場合
(「リロード」クリック,Ctrl+R や書き込み後のリロード)は read.html は再読込せず *.dat だけ
読み込むので,これらのアクセス数が単純に read.html へのアクセス数ってわけでもないですし......
% fgrep 'GET /test/read.cgi' /path/to/access/log/of/life7/*20061118* | wc -l
1301250
% egrep 'GET /[[:alnum:]]+/dat/' /path/to/access/log/of/life7/*20061118* | wc -l
3345637
% egrep 'GET /[[:alnum:]]+/dat-utf8/' /path/to/access/log/of/life7/*20061118* | wc -l
617539
% egrep 'GET /[[:alnum:]]+/datx/' /path/to/access/log/of/life7/*20061118* | wc -l
43829
% fgrep 'POST /test/bbs.cgi' /path/to/access/log/of/life7/*20061118* | wc -l
113168
% fgrep 'POST /test/bbs-utf8.cgi' /path/to/access/log/of/life7/*20061118* | wc -l
25712 あのー、どうでもいいことだったらすいませんが
このread.cgiが使われているスレで書き込みすると
「〜」(波型)が文字化けして????になってしまうことが
あるのですが…。 >>60-61 それはすでに認識されてる問題でして,>>10 の対応が完了すれば解決します. 彼方は、誰? わたしは、彼方が貼り付けた物が関係有るかどうか解かりませんが
書き込み。。。で止まったままなもので思案中です。
シルバーバーチとFと霊医殿の公開ストックで の1です。
気が向けば 霊耳相談でもカキコしなさいよ! 彼方でしょ 彼方はな?天才君。
まさかこんな処で遇うとはね! 単なる偶然なの?
>>55キャー!O(≧∇≦)Oひろゆきお兄さまぁ☆
。・゜゜(ノД`)
ノラネコは嬉しいですぅ☆(*´・ω・)(・ω・`*)
電車男みたいにイケメンですぅ☆
(*^▽^)/★*☆♪
スレが表示されるまで少し時間がかかります。
しかしAAモードは大いに気に入りました。 >>66 んと,使ってるブラウザの種類 (IE, Firefox 等) やそのバージョン,
そしてできれば発生しているエラーの内容(例えば IE なら左下の黄色い
"!" マークをダブルクリックすると表示されます)を教えてもらえると参考になります.
>>68 まぁ,いったん HTML ページを表示してから dat を読み込んで表示するので,
ちょっと時間がかかるのは仕様ってことで...... そういえば、CGI版のときとの使用リソースの比較ってやってなかったっすね。
>>70わーい!
(~▽~@)♪♪♪ひろゆきお兄さまぁ☆(〃ω〃)
やはりlife7はテスト運用か
相変わらずFirefox 1.5.0.8では書き込み拒否を食らうが 初めてread.jsで書き込んだ。これ面白いねえ。
エラーのリロードとか煩わしかったけど、ポップアップしてくれるのはいいわー >>74
ERROR!ERROR ブラウザを立ち上げなおしてみて下さい
ホスト ????.dion.ne.jp
表示もおかしいカーソルの位置がずれてる気がする >>77 そのエラーは...... PC の内蔵時計が実際の時刻よりかなり進んでいるためかと.
30分までなら Ok にしたんで,それよりさらに進んでるってことですね...... 時計合わせないと書き込みできないなんて不便っすね
this.postForm.time.value = 1; 人生相談掲示板から上がってるスレ眺めてたんですが、急にアウトルックの「無題のメッセージ」が開いて
宛先が「sage」になっていました!
これは何??????? メール欄てどこのですか?
ちなみにマウスで右端のマーク引っ張って読んでました
書き込みにはしていませんでした
アウトルックは最小化した状態でした 名前のリンクが張ってある部分をクリックしませんでしたか? >>81 まぁ今の bbs.cgi では time 値はあまり大きな意味はないようではありますが,
ある程度はユニークな値の方がいいような感じもするんで...... -86400 にしますた.
さすがに1日以上ずれてるのは普通におかしいんじゃないかってことで...... 表示が重くてイライラする。元に戻してくれ!
ずっと「読み込み中。。。」のままスレッドが永久に開けない場合もあり。
(ノД`)カンベンシテ >>93 板トップにある「read.cgi モード切替」のところで設定できますよ. 運営の皆様おつかれさまです。
技術については全くの初心者ですが、質問(報告?)させてください。
使用ブラウザ:IE6
ファ板トップからあるスレをJAVASCRIPTモードで開いてしまうと、
その後CGIモードでブックマークに入れている同板他スレも自動的に
JAVASCRIPTモードで開いてしまいます。
また、一旦JAVASCRIPTモードで開いたブックマークは、そこにカーソルを
合わせると、全て「読み込み中。。。」のポップアップが表示されます
(スレ名ではなく)。
これは試験運用中だからでしょうか?
初心者ながら質問(報告?)させていただきました。 >>90
判りました。初心者板行きます。お忙しいところ済みませんでした
>>96 モード切替をすると read.cgi で読み込む場合すべてに適用されるので,
切り替えたモードがブックマークにも影響するのは仕様ですね.
モードの設定にかかわらずどちらかのモードで強制的に表示させたい場合は,
ブックマークの URL を read.so (CGI モード) か read.html (JavaScript モード)
にするといいです.あと,JavaScript モードではブックマークのポップアップが
スレタイでなく「読み込み中。。。」になってしまうのは IE の仕様ってことですね. このread.jsはリロードの際は専ブラみたいに差分だけ取ってくるの? >>98
うまく避けられないのかしら。 < その仕様 >>98
ありがとうございます、把握しました。
JavaScriptモードの成功と発展を祈念しております。 >>99 前スレでも言われてたことですが,差分取得は直接 HDD にアクセスできない
JavaScript レベルでは困難かと(ブラウザが装備してるのとは異なる独自のキャッシュ機構が必要なため).
>>100 後者の仕様は IE の制作者に言ってもらわないと......
前者については,スレッドレベルでも Cookie を設定可能にするという
対策は考えられます.ただ,そうなると read.html だけじゃなく
read.cgi もいじって Cookie 設定機能を付ける必要がありますね. >>100
履歴からtitleを読み込んでいるようなのでread.HTMLを最初に読み込んだときに
スレタイをtitleで指定しちゃえば何とかなるんじゃないですかね。read.jsの仕様無理でしょうけど。 >>102
> >>100 後者の仕様は IE の制作者に言ってもらわないと......
むむむ、、、。
> ただ,そうなると read.html だけじゃなく
> read.cgi もいじって Cookie 設定機能を付ける必要がありますね.
なるほど、、、。
しかし、それは正直あまり気が進まない方向性ですね。
なんとなくですが。 >>102 つまりIEやfirefoxがwebの差分取得をサポートすれば多くのサーバーが幸せになる、という事。 運営の皆様いつもお疲れ様です^^
IEにとってはとても便利な機能ですね。なんとか不具合の調整ができて
全板仕様になれば嬉しいところです。まるでブラウザを利用しているようです。 ひろゆきお兄さま☆
ヾ(o゚ω゚o)ノ゛
どうか、ノラネコを嫌わないで!゚(ノд`゚)゚・。
今日も、お疲れ様でした☆m(_ _)m
どうせならCookieで#なパラメータを強制的に使用できるようにしておくれ
すでに書かれたURLは強制置き換えってことで 他人のレスとIDかぶって自演扱いされたのですが
これも新システムのせい? ■ このスレッドは過去ログ倉庫に格納されています