read.cgiをjavascriptで実現させるプロジェクトのスレッドです。
テスト版
http://sunos.saita.ma/read-js/test/read.cgi
http://sunos.saita.ma/read-js/test/read.cgi/operate/1153615149/
read.cgi 2006―JavaScriptはCGIの夢を見るか
■ このスレッドは過去ログ倉庫に格納されています
NGNG
736動け動けウゴウゴ2ちゃんねる
2006/08/28(月) 13:30:57ID:VbslbRUI0 読み込み完了するまでスレの正体がわからないのはどうなんだろう
http://dso.2ch.net/test/read.html/myanmar/1155416372/
あとさ、たまにスレにたくさんレスがついてて流し読みしながらレス書くときに
書き込み欄が一番下にあると参照しながら書けないから
今まではスレをもういっこ別窓で開いてレス書いたりしてたけど
これ導入するんだったら書き込み欄とメッセージは別フレームみたいに出来ないかね
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 以外を使って下さい」って形でもいいなら
単純明快にできそうですが.
>読み込み完了するまでスレの正体がわからないのはどうなんだろう
読み込まなきゃわからないのはどうしようもないのでは......と思ったけど
>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にリダイレクトしちゃうとか。。
2006/08/28(月) 19:10:40ID:iqkqPW7u0
ひろゆきがまともなことを言ったので明日は雨
>>738 そういうのも一案ですが......
・ *.dat の ErrorDocument 404 を DSO プログラムに振る.
・ その DSO プログラムが過去ログを調べ,存在すれば今の read.cgi のように
最初と最後のレスだけ抜き出して返すなどする.
のようなことをすれば,read.html のみならず雪だるまの read.cgi で
過去ログの存在を認識できない問題もついでに解決できるかも知れない予感......
・ *.dat の ErrorDocument 404 を DSO プログラムに振る.
・ その DSO プログラムが過去ログを調べ,存在すれば今の read.cgi のように
最初と最後のレスだけ抜き出して返すなどする.
のようなことをすれば,read.html のみならず雪だるまの read.cgi で
過去ログの存在を認識できない問題もついでに解決できるかも知れない予感......
それをやっちゃうと、結局処理が挟まっちゃうので、
.htmlにしてるメリットが薄れませんか?
.htmlにしてるメリットが薄れませんか?
2006/08/28(月) 19:50:12ID:4SktNoiI0
スレッドが無かった時だけでしょ。
read.cgiに飛ばすのも、処理挟むので同じじゃん。
read.cgiに飛ばすのも、処理挟むので同じじゃん。
おぉ、、DSOすげー。
んでは、それでいいと思いますー。
んでは、それでいいと思いますー。
(´-`).。oO(「Apacheすげー」だとおも♪)
2006/08/28(月) 22:57:28ID:4I6xnJUY0
IISとかでも不可能ではない
747stream ◆PNstream2s
2006/08/28(月) 23:21:08ID:ps3XaamL0 コンピューターすげー
2006/08/29(火) 06:02:45ID:xqoF9LwE0
宇宙すげー
pastdat.so ってのを作って,.htaccess に
<Files *.dat>
ErrorDocument 404 /test/pastdat.so
</Files>
って入れますた.こんな感じで......
http://dso.2ch.net/myanmar/dat/1155416372.dat
http://dso.2ch.net/myanmar/dat/1000000000.dat
http://dso.2ch.net/test/read.html/myanmar/1155416372/
http://dso.2ch.net/test/read.html/myanmar/1000000000/
過去ログの場所は非公開っぽいので,pastdat.c も非公開ってことで.
# とりあえず /var/tmp に突っ込んであります.
<Files *.dat>
ErrorDocument 404 /test/pastdat.so
</Files>
って入れますた.こんな感じで......
http://dso.2ch.net/myanmar/dat/1155416372.dat
http://dso.2ch.net/myanmar/dat/1000000000.dat
http://dso.2ch.net/test/read.html/myanmar/1155416372/
http://dso.2ch.net/test/read.html/myanmar/1000000000/
過去ログの場所は非公開っぽいので,pastdat.c も非公開ってことで.
# とりあえず /var/tmp に突っ込んであります.
>>749
/var/tmp の下は激しくいまいちなので、
home directory 配下のある場所に mv しました。
ありかは、ちとお取り込み中が終わってから。
(見ればわかるといううわさも)
/var/tmp の下は激しくいまいちなので、
home directory 配下のある場所に mv しました。
ありかは、ちとお取り込み中が終わってから。
(見ればわかるといううわさも)
2006/08/30(水) 01:28:42ID:WivvJ1bL0
専ブラの話だけど、スレが無い時のステータスコードを302で決めちゃってるのが
多いのかしらね。
以前も、新仕様鯖だったかで、404になるのに対応できないブラが右往左往
していたっけね。
(ルート付きを始めた時だっけ?)
多いのかしらね。
以前も、新仕様鯖だったかで、404になるのに対応できないブラが右往左往
していたっけね。
(ルート付きを始めた時だっけ?)
2006/08/30(水) 05:33:49ID:sPlw/x6z0
302は変えないほうがいいと思う
>>752-753 悪影響が出る専ブラには,User-Agent で判定して 302 返すようにしますかね......
XMLHttpRequest は外部鯖向け 302 との相性が悪いってのもあるし,
仮にそれに対応させたとしても,過去ログの存在を確認するために別 URL で
改めてアクセスするとなると HTTP リクエスト数が増加する方向に働くことになるんで,
JavaScript 版やる上では ErrorDocument で pastdat.so に振り向けるやり方の方が
スマートかなって気もしないではないんで......
ついでに●ログインとかもやってみようかと思ったけど,それやるには
mod_ssl と mod_proxy が使える 2ch.net ドメインの鯖もないとダメポな予感......
XMLHttpRequest は外部鯖向け 302 との相性が悪いってのもあるし,
仮にそれに対応させたとしても,過去ログの存在を確認するために別 URL で
改めてアクセスするとなると HTTP リクエスト数が増加する方向に働くことになるんで,
JavaScript 版やる上では ErrorDocument で pastdat.so に振り向けるやり方の方が
スマートかなって気もしないではないんで......
ついでに●ログインとかもやってみようかと思ったけど,それやるには
mod_ssl と mod_proxy が使える 2ch.net ドメインの鯖もないとダメポな予感......
2006/08/30(水) 14:08:23ID:CB3QYUMV0
302はgetResponseHeader('Location')した後location.hrefなりwindow.openなりすればいいんじゃね?
>>755 というか,302 のジャンプ先にある live.html を表示しても仕方ないんで......
要は read.cgi と同様に,ライブな dat が存在しない場合に過去ログの有無を調べ,
過去ログがある場合に最初と最後のレスだけ抜き出して表示する,ってのが目的なんで.
とりあえず ^(Mozilla|Opera|Lynx|Wget)/ のような感じの,専ブラと関係なさそうな
User-Agent の場合だけ 404 等のを返し,それ以外は 302 を返す形にしてみますた.
要は read.cgi と同様に,ライブな dat が存在しない場合に過去ログの有無を調べ,
過去ログがある場合に最初と最後のレスだけ抜き出して表示する,ってのが目的なんで.
とりあえず ^(Mozilla|Opera|Lynx|Wget)/ のような感じの,専ブラと関係なさそうな
User-Agent の場合だけ 404 等のを返し,それ以外は 302 を返す形にしてみますた.
2006/08/30(水) 18:09:14ID:sPlw/x6z0
live.html自体は人大杉だけど302は前からそうなっているからなあ
今もバナーでてるけど広告的な意味もあるのかな?
>●ログイン
2chの鯖を介さずにブラウザ側で直接ログインできるならいいけど
そうじゃないならちょっと・・・
今もバナーでてるけど広告的な意味もあるのかな?
>●ログイン
2chの鯖を介さずにブラウザ側で直接ログインできるならいいけど
そうじゃないならちょっと・・・
2006/08/30(水) 18:22:01ID:+7rDruHP0
pastdat.soみたいな、専用モジュールの追加もアリという前提ならば
将来的には.datの必要部分のみ取得というモジュールというのも視野に入れても良さそうな感じ。
昔のread.cgiのrawmodeみたいに、レス番やlxxで。
といっても、'\n'の検出を毎回鯖がやらなきゃいかんので
ある程度の数の.datの行頭探索結果はメモリ上に保持しておいて、とか
それ以前に、行頭はbbsdで完璧に把握できるのだから、bbsdと連携して、とか
read.cgiもbbsdと交信して行頭情報を取得したり、とか
などの話にも発展させられそうな。
TCPでモジュールとbbsdが交信するようにすれば
大きいデータ(.dat本体とか)も扱えるだろうし
接続しっぱなし(SO_KEEPALIVEであぼん検出)みたいにすれば
JumboFrameも使えるし、負荷的にはUDPと大差ないと思うんですがどうでしょうね。
(多数のコネクションを効率的に扱うサーバーの造りは、UDPよりずっと大変でしょうが)
将来的には.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 のようなものが dat を取得するのは
直接表示するためではないので,dat へのアクセスを別の場所に飛ばすのは
広告としてもあまり意味がないような気がします.ともあれ,>>744 で
Go サインは頂いたと思いますので,とりあえずこの路線で.
●ログインは,pastdat.so の機能を拡張すればシームレスな過去ログ表示も
可能になりそうとちょっと考えたんですが,認証サーバは 2ch.net とは
別ドメインにあるので,>>754 でも述べたように認証サーバへの橋渡しをする
プロクシ鯖を別途用意しなきゃダメポなようですね.
>>758 pastdat.so は,ErrorDocument 404 で振られた場合だけ呼ばれるので......
あと上の方でも話がありましたが,部分取得しつつキャッシュを有効活用するなら
ブラウザが備えてるのとは異なるキャッシュ機構がないとうまく機能しないので,
ローカルストレージに直接アクセスできない限り困難,つまり
JavaScript でやってる限りは困難じゃないかと.
ちなみに,bbsd は subject.txt のデータはオンメモリで管理してますが,
dat は単純に O_APPEND モードで追記してるだけなのでオンメモリでは管理してません.
2006/08/30(水) 20:04:44ID:+7rDruHP0
「差分取得」ではなく「部分取得」のつもりだったのですが。
、、と、もしかして、
既に現状のread.htmlが、リクエストのURIを解析して
.dat全体の中から必要な部分だけを転送するようになっているのですかね。
bbsdに関しては、現在は管理していないのはわかりますが
「何バイト書き込むか」を確実に把握出来るので
初回はともかく(再起動に備えて別ファイル等も必要でしょうが)
行頭情報を常時保持しても大きな負担にはならないとの考えからです。
、、と、もしかして、
既に現状のread.htmlが、リクエストのURIを解析して
.dat全体の中から必要な部分だけを転送するようになっているのですかね。
bbsdに関しては、現在は管理していないのはわかりますが
「何バイト書き込むか」を確実に把握出来るので
初回はともかく(再起動に備えて別ファイル等も必要でしょうが)
行頭情報を常時保持しても大きな負担にはならないとの考えからです。
2006/08/30(水) 20:14:48ID:+7rDruHP0
あ、ごめんなさい、補足。
つまり、「必要個所だけを転送する」ためには、行頭情報が必要で
可能であればそれをキャッシュしておきたい、という考えがあるのですが、
そのキャッシュをbbsdと別に持つとすると、毎回stat()をかけなければいけない
というのがあります。
fstat()ならまだしも、stat()はアクセス権チェック等もあることから
「可能ならば省略したい処理」になるのではないかと。
で、bbsdならば、更新確認のstat()が不要なままで、
確実な行頭情報を得られるということですね。
つまり、「必要個所だけを転送する」ためには、行頭情報が必要で
可能であればそれをキャッシュしておきたい、という考えがあるのですが、
そのキャッシュをbbsdと別に持つとすると、毎回stat()をかけなければいけない
というのがあります。
fstat()ならまだしも、stat()はアクセス権チェック等もあることから
「可能ならば省略したい処理」になるのではないかと。
で、bbsdならば、更新確認のstat()が不要なままで、
確実な行頭情報を得られるということですね。
>>760-761 いや,現状では dat は単純に全体を取得してます.
差分取得にしろ部分取得にしろ,キャッシュの有効活用との
両立は困難だと思うんで.例えば細切れな dat の断片を
いくつも管理するとか複雑な処理をして両立しようとしても,
その断片ごとに(If-Modified-Since 付きではあっても)
HTTP リクエストが多数発生するとかになって,
果たして苦労する割に得るものがあるだろうか,と......
それから,書き込みとの関連の薄い処理まで bbsd にやらせることを
考えるぐらいなら,フロント側で mod_cache を有効化するなどを
やる方が先決じゃないかと.bbsd の仕事を増やすというのは
すなわちバックエンド側の仕事を増やすということにもなりますし.
差分取得にしろ部分取得にしろ,キャッシュの有効活用との
両立は困難だと思うんで.例えば細切れな dat の断片を
いくつも管理するとか複雑な処理をして両立しようとしても,
その断片ごとに(If-Modified-Since 付きではあっても)
HTTP リクエストが多数発生するとかになって,
果たして苦労する割に得るものがあるだろうか,と......
それから,書き込みとの関連の薄い処理まで bbsd にやらせることを
考えるぐらいなら,フロント側で mod_cache を有効化するなどを
やる方が先決じゃないかと.bbsd の仕事を増やすというのは
すなわちバックエンド側の仕事を増やすということにもなりますし.
2006/08/30(水) 20:37:46ID:WivvJ1bL0
>756
逆に、Monazilla/1.00 だけ302の方がすっきりしません?
逆に、Monazilla/1.00 だけ302の方がすっきりしません?
2006/08/30(水) 21:30:53ID:yYrD6tu00
てか、1.00とか適当なことを言ってないで有効活用すればいいじゃん。
1.1とか2.0とか。
1.1とか2.0とか。
404より410の方が妥当な悪寒。。。
2006/08/30(水) 21:32:06ID:WivvJ1bL0
> User-Agent
通常のdat読みでは義務ではありませんが、以前にはMonazilla/1.00だけが
dat読みを許されていたこともあり、現在でも非常に強く推奨されており、
実際、ほとんど(おそらく全て)がそうなっています。
ちなみに、●使用ではUAが厳しく指定されています。
通常のdat読みでは義務ではありませんが、以前にはMonazilla/1.00だけが
dat読みを許されていたこともあり、現在でも非常に強く推奨されており、
実際、ほとんど(おそらく全て)がそうなっています。
ちなみに、●使用ではUAが厳しく指定されています。
2006/08/30(水) 22:07:02ID:ZcVDdovvP
>>768
L〜もG〜もW〜もMonazillaじゃないぞ
L〜もG〜もW〜もMonazillaじゃないぞ
>>769 ありゃ,すれ違っちゃった......となると,その L?, G?, W?
ってブラウザがどういう挙動を示すかが問題か......
ってブラウザがどういう挙動を示すかが問題か......
2006/08/30(水) 22:18:45ID:sPlw/x6z0
dat落ちについてはLocationがおかしいだけで302は妥当なのかも
LocationはMUSTじゃないからあえて含めないで
本文にdat落ちのメッセージ入れてみるとか
(どういう動作になるかわからんけど)
LocationはMUSTじゃないからあえて含めないで
本文にdat落ちのメッセージ入れてみるとか
(どういう動作になるかわからんけど)
2006/08/30(水) 22:56:08ID:WivvJ1bL0
Live2chもギコナビもぎこはにゃんもMonazillaだし、W?シラネ、Mac?モットシラネ。
既に言われているように、本来は専ブラ側が対応するものなので、
細かい所まで気にしなくても良いんじゃないですかね。
302決め撃ちばかりとも限らないし。
既に言われているように、本来は専ブラ側が対応するものなので、
細かい所まで気にしなくても良いんじゃないですかね。
302決め撃ちばかりとも限らないし。
レスポンスを細分化することは可能であっても(3**返すとか4**返すとか)それに見合った負荷対策は?
と考えるとでんでんメリットが少ない気もするですね(苦笑)
*.datの取得に関しては「UAでMonazillaを返してこないのは、専用ブラジャー以外」と決め込んでしまって良いんじゃないかな。
・・・を前提にしつつHTTP仕様にも沿って欲しいよなぁとかとか(どっちやねん)
と考えるとでんでんメリットが少ない気もするですね(苦笑)
*.datの取得に関しては「UAでMonazillaを返してこないのは、専用ブラジャー以外」と決め込んでしまって良いんじゃないかな。
・・・を前提にしつつHTTP仕様にも沿って欲しいよなぁとかとか(どっちやねん)
2006/08/30(水) 23:49:20ID:WivvJ1bL0
ああそうか、Monazillaは302にするということは、pastdat.soを使わないということであり、
サーバ側の処理を省くことになる、という2ch側の理由もありえるのか。
サーバ側の処理を省くことになる、という2ch側の理由もありえるのか。
2006/08/31(木) 00:42:59ID:Eb5pnMwG0
よく考えたら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 が過去ログの存在を認識できない問題への対処というのも
視野に入れてるんで......
>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 が過去ログの存在を認識できない問題への対処というのも
視野に入れてるんで......
2006/08/31(木) 01:51:06ID:kQJMQQfh0
> Monazilla の判定は pastdat.so 内でやってます.
そなんすかー。
2ch側が積極対応する口実を見っけたと思ったのにー。
ああでも、過去ログの情報でdat開くよりは、単に302だけの方が軽いかな、
とかなんとかまだこだわってみる。
そなんすかー。
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]
----------------------------------------------------------------------
全部 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 実験中」とか入れといてもいいのかも.
# とはいえ 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 とか使うことになるのかな......?
現在独立してる各サーバを dat スペースを共有する形に再編するのは
結構大がかりな作業になりそうなのと,以前雪だるまで NFS 使ってた
時のように虫踏んで苦しむことにならないか,ってあたりが課題かもですね.
FreeBSD だと GEOM gate とか使うことになるのかな......?
>>781-783
いろいろ、おもしろそうすね。
速攻でできるわけではないですが、そのへんの続きはこっち↓あたりで。
2ch特化型サーバ・ロケーション構築作戦 Part23
http://qb5.2ch.net/test/read.cgi/operate/1153650861/
いろいろ、おもしろそうすね。
速攻でできるわけではないですが、そのへんの続きはこっち↓あたりで。
2ch特化型サーバ・ロケーション構築作戦 Part23
http://qb5.2ch.net/test/read.cgi/operate/1153650861/
787動け動けウゴウゴ2ちゃんねる
2006/09/14(木) 19:30:15ID:6gFSb2eF0 早くVIPにこれ導入してくれよ
2006/09/14(木) 20:10:45ID:EjiEFSF40
まだ出来てないよ
2006/09/14(木) 23:20:04ID:zBxU9b520
時代の先を目指しているようで
実は時代と逆行しているような気がするのは気のせいだろうか。
でも出来上がりは楽しみだな。
実は時代と逆行しているような気がするのは気のせいだろうか。
でも出来上がりは楽しみだな。
まぁ,一応動く形になってるという意味ではできてないというわけでもないとは思いますが,
何かきっかけがあれば動き出すかも,今はそのきっかけ待ちという状態かな......
何かきっかけがあれば動き出すかも,今はそのきっかけ待ちという状態かな......
2006/09/14(木) 23:48:24ID:JYPx7xTAP
待ってるだけじゃだめだよ
まぁ,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>
・ 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>
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>
795stream ◆PNstream2s
2006/09/16(土) 08:11:45ID:9F9uonu60 そろそろexがつくサーバーで試してみましょうぜ
2006/09/16(土) 08:15:35ID:A54PmaKA0
よしex9でよろ
2006/09/16(土) 17:28:37ID:0lRjjf12P
ex14キボン
2006/09/16(土) 17:35:48ID:C/O1vIad0
ex18で
2006/09/17(日) 09:57:31ID:5zbObfvc0
ex18
2006/09/18(月) 22:15:54ID:+EKYPSwF0
ひろゆき30歳の誕生日に一斉導入しよう
2006/09/18(月) 22:31:17ID:SHW5sgL8P
19才だよ、永遠に
2006/09/19(火) 03:32:52ID:bYNii1ZZ0
ex16で。
2006/09/19(火) 05:43:15ID:13d6KsrZ0
ex11
804stream ◆PNstream2s
2006/09/19(火) 10:18:00ID:XsGJWZje0 ex全部でいいじゃん
あえてtmp5復活
2006/09/20(水) 17:31:09ID:z7QiX5SC0
そこでqb5
2006/09/20(水) 17:51:27ID:Pa/29gUZ0
本命 ex16
対抗 ex11,tmp5
大穴 qb6
?
対抗 ex11,tmp5
大穴 qb6
?
ex 系もいいですが,さらにそれ以外も付け加えるとすれば,read.cgi が
止められてる鯖とか LA が上昇して人大杉になりやすい鯖とかもですかね.
そのあたりは,鯖の状況も見ながらってことになるでしょうけど.
あと,BE 板がある etc4 とかも...... be.js には旧 BE 板の機能継承という
側面もありますし,さらに dso と同一鯖なので面倒見やすいということも.
それと,今すぐじゃなくてもいいのかも知れませんが,今後の検討課題としては
・ [PR]〜[PR]
・ 関連キーワード
ってのもありますが,これは >>266 のように JavaScript 変数として
渡してもらう形にすればいいかと.いわゆる JSON ってやつかな.
止められてる鯖とか LA が上昇して人大杉になりやすい鯖とかもですかね.
そのあたりは,鯖の状況も見ながらってことになるでしょうけど.
あと,BE 板がある etc4 とかも...... be.js には旧 BE 板の機能継承という
側面もありますし,さらに dso と同一鯖なので面倒見やすいということも.
それと,今すぐじゃなくてもいいのかも知れませんが,今後の検討課題としては
・ [PR]〜[PR]
・ 関連キーワード
ってのもありますが,これは >>266 のように JavaScript 変数として
渡してもらう形にすればいいかと.いわゆる JSON ってやつかな.
2006/10/30(月) 01:38:35ID:GHYcjzZR0
2006/11/02(木) 11:18:26ID:j3v9PXo60
そういえば、過去ログのようなhtmlファイルを最初から作っていく事で
read.cgiを使わなくする計画とかもあったよね。大分前に。
read.cgiを使わなくする計画とかもあったよね。大分前に。
812aasdasd
2006/11/04(土) 13:22:00ID:eEKXms2N0 asda dawefhawliufh lawg agr awg a
2006/11/06(月) 18:22:55ID:EO1AtBHz0
ところで、cgiをphp化するとかは考えてないとか?
>>813
read.cgiはcgiじゃないんで
read.cgiはcgiじゃないんで
2006/11/06(月) 18:26:22ID:1ah8Vbtu0
ApacheのDSOだったりもしますしね
2006/11/06(月) 18:40:12ID:4ce9bvrW0
既にPHPに変えたところでパフォーマンスダウンにしかならないところまで登りつめてるんだよな。
read.cgiってすげーよな。UNIX板ありがとうなんて言ってた頃のあれの面影も残ってねぇw
read.cgiってすげーよな。UNIX板ありがとうなんて言ってた頃のあれの面影も残ってねぇw
2006/11/06(月) 19:45:49ID:/RmElgxW0
cgiだった頃のソース放出したりすると差し障りあるのかな?
それがC言語版なんかだったりすると互換板的にスゲェ需要あるんじゃ。
それがC言語版なんかだったりすると互換板的にスゲェ需要あるんじゃ。
Common Gateway Interface
言語に依らないのですー♪
言語に依らないのですー♪
2006/11/06(月) 21:52:25ID:UgzLq8If0
DSOはCGIに含まれるの?
2006/11/06(月) 22:58:35ID:UgzLq8If0
「DSOが」
ウェブサーバの一部なのか、ウェブサーバの外部のプログラムなのか、と。
ウェブサーバの一部なのか、ウェブサーバの外部のプログラムなのか、と。
2006/11/07(火) 00:34:58ID:UEyc4pMfP
FastCGI化はしないの?
このスレは静的なHTMLでread.cgiを置き換えるスレですから
825動け動けウゴウゴ2ちゃんねる
2006/11/09(木) 11:54:26ID:DGHujHbV0 >>1
プログラム板でやれ
プログラム板でやれ
826動け動けウゴウゴ2ちゃんねる
2006/11/09(木) 13:35:16ID:lhyl8j7NO 動的にpdfを生成すればいいんじゃね?
2006/11/09(木) 19:14:25ID:14UWU7Ik0
Flashでやってみるのもおもし(ry
2006/11/09(木) 20:27:17ID:SoXaakWp0
そこはActiv(ry
2006/11/09(木) 23:15:35ID:Yfq8LBnP0
いっそレスの数だけサーバ立てようぜ
超分散処理最強
超分散処理最強
サーバサイドで動かす read.cgi の話題は↓で.
http://qb5.2ch.net/test/read.cgi/operate/1105909861/l50
ともあれ,IE 7 リリースにより >>582-585 が徐々に進むと.
んでもって,dso 以外に入れるってところで足踏みしてるわけですが,
VIP の移転先新鯖でこの機会に入れるかどうか,ってとこですかね.
http://qb5.2ch.net/test/read.cgi/operate/1105909861/l50
ともあれ,IE 7 リリースにより >>582-585 が徐々に進むと.
んでもって,dso 以外に入れるってところで足踏みしてるわけですが,
VIP の移転先新鯖でこの機会に入れるかどうか,ってとこですかね.
2006/11/11(土) 00:03:12ID:4JoUbKlG0
いれていれて
2006/11/11(土) 00:22:50ID:Ni0k+qrf0
そういやFlashで2chブラウザってありそうでないような
2006/11/11(土) 01:07:12ID:3C6Dxl2y0
携帯限定だけど、Andyってのがあったはず。
2006/11/15(水) 21:06:21ID:SKVUPSxV0
IEでスレッドの内容を保存できないという問題は、
saveSnapshotビヘイビアを使って、取得したdatの内容を
退避しておけば解決できるかもしれません。
<textarea id="hiddencache" style="behavior:url(#default#saveSnapshot);display:none;">
(IEでページを保存する時に、ここの内容はそのまま保持される)
</textarea>
テキスト欄にステージデータをコピペして保存してから開くと
プレイ可能なファイルができてる、不思議なサンプル。(テキスト欄がSaveSnapshotになってる)
http://makimo.to:81/ldm/lrc.html
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 の方でやってもらうということで......
例えば Firefox の完全モードでの保存だと HTML の構造自体を変えてしまうだとか,
オンラインでの表示よりもいろいろ考慮しなければならないことも増えてくるので,
とりあえずは従来版 read.cgi の方でやってもらうということで......
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 【芸能】元フジ・渡邊渚アナ、『週刊現代』の表紙に登場! インタビュー記事も掲載 「マジで綺麗」「大人っぽい雰囲気」★2 [冬月記者★]
- 【脳】人間の脳から「衝撃的」な量のマイクロプラスチックを発見 標準的なプラスチックスプーン1本分 認知症ではさらに高濃度 [ごまカンパチ★]
- 【ワーキングランチ】日米首脳会談始まる [Ikhtiandr★]
- 【話題】空いていても隣に車を停める「トナラー」、その心理状況は? [ひぃぃ★]
- 八潮道路陥没「復旧に2、3年かかる」より強力な下水の利用自粛求める ★6 [おっさん友の会★]
- 文春記事訂正に「フジテレビ悪くなかった」「中居さんは悪くなかった」「文春廃刊」「世紀の大誤報」 [Anonymous★]