■スレッドリストへ戻る■ 全部 1- 101- 201- 301- 401- 501- 601- 701- 801- 901- 最新50

read.cgi改良スレッド

588 :♯6411 :01/09/01 02:58 ID:LOycKPho
>>586 path仕様では、リンクの長さが
短くなるため、あえてカットせずにいます。
で、転送総量削減を期待して、
必ずchunk単位になるようにリンクを張り直します。
詳細は、サイケダンスドットコムで遊んでみてくだちい。

いまは、L-Mをchunk毎に求められるように
最適化を施してる最中です。

589 :デフォルトの名無しさん :01/09/01 03:18 ID:41gLtufk
rewrite_hrefなんですけど、
if (sscanf(
 "<a href=\"../test/read.cgi?bbs=%20[a-zA-Z0-9_]&key=%12[0-9]"
 "&st=%u&to=%u&nofirst=true\" target=\"_blank\">>>%u</a%c"
 , ...) == 6 && 最後の%c == '>') {
  /* >>nn の場合 */
  ・・・
  2つ目の'>'までカット
} else if (sscanf(
 "<a href="../test/read.cgi?bbs=%20[a-zA-Z0-9_]&key=%12[0-9]"
 "&st=%u&to=%u\" target=\"_blank\">>>%u-%u</a%c"
 , ...) == 7 && 最後の%c == '>') {
   /* >>nn-nn の場合 */
   ・・・
 2つ目の'>'までカット
}
なんてのは駄目ですか?
重くなるかもしれないけど。
あ、sscanfの%[]のフォーマットに'-'を入れる場合、どうやったか忘れた。

590 :♯6411 :01/09/01 03:21 ID:LOycKPho
>>589 さいしょはhrefから抜こうと
思ってたんだけど、それよりも
エレメント抜き出した方が確実だと
考えたのだ。

っていうか、余所に公開するコードに
scanfを使うのは漏れの趣味じゃない。
自作一発ツールでは多用するけど(w

591 :デフォルトの名無しさん :01/09/01 07:45 ID:UJUxMf.6
とりあえず1つデバッグ

dat_out_raw()の最後、のfor内、
 pPrintf(pStdout, "%s\n", BigLine[i]);

#ifndefCUTRESLINK
 pPrintf(pStdout, "%s\n", BigLine[i]);
#else
 pPrintf(pStdout, "%.*s\n", BigLine[i+1] - BigLine[i], BigLine[i]);
#endif
に直さないとまずい。(BigLineを'\n'-terminateに変更したため)

が、>>563のエラーは、BigLineの形式を変える前から起きていたので、
これが原因ではない。
>>563までの原因は>>575で、>>585の原因がこれ(↑)であれば、
解決している(かもしれない)。

あと、
http://www.psychedance.com/test/read.cgi/tech/998921988/10-20
等の時、「続きを読む」が欲しいような。
全レス表示や最新レス表示だと「新レスの表示」が出るけど。

592 :デフォルトの名無しさん :01/09/01 12:50 ID:twr9sQ6c
>>591
上の話 commitしときました。

593 :デフォルトの名無しさん :01/09/01 13:41 ID:/.JZzzqk
dat_out_index()、初めて目を通したんですが、
呼び出されるたびにdatを全部読んで解析して・・というのは
さすがに負荷が大きいような。
bbs.cgiがindex2.htmlを作成する時は、
http://piza2.2ch.net/tech/html/998997848.html
こういうファイルにキャッシュされたデータを利用しています。
これを何とか利用する方法は・・・

また、板別の設定(N_INDEX_THREADS等)は、規制実施等との整合性を保つために
http://piza2.2ch.net/tech/SETTING.TXT
の内容に合わせたほうがよいかと思います。

594 :♯6411 :01/09/01 13:50 ID:apo2ymi.
>>593 そのへんの仕様を知らなかったので、
あーゆー形で仮実装してたんですが、
使える設定があるのなら、喜んで
流用させてもらうです。

いずれにせよ、htmlを読んで再走査するよりは、
datから作り出した方が速い、んじゃないかなと
いうのが今の考えです。

595 :♯6411 :01/09/01 14:04 ID:apo2ymi.
ヘッドラインとか
広告とかの
テンプレートは
あるんだろうか?

いずれにせよこの機能は使われずじまいになる
可能性も大きいし(鬱

596 :♯6411 :01/09/01 14:26 ID:apo2ymi.
cvsweb 氏んでる?

あっそうだ、今日はAir H"買いに逝こう♪

597 :♯6411 :01/09/01 14:39 ID:apo2ymi.
>>591
> あと、
> http://www.psychedance.com/test/read.cgi/tech/998921988/10-20
> 等の時、「続きを読む」が欲しいような。
> 全レス表示や最新レス表示だと「新レスの表示」が出るけど。

「自分以降」のchunk候補を表示してあげると、
ユーザに優しくなるだろうね。漏れも思った。

…chunk表示は、ひとつだけ問題を孕んでるんだ…
それはまた後ほど話すよ…

598 :♯6411 :01/09/01 15:07 ID:apo2ymi.
>>563
> 500 Internal Server Error
のバグ判明。

getLineMax() の最後の方に、
BigLine[line+1] = BigBuffer + zz_fileSize;
があるんだけど、結果的にこれがsentinelの
役割を果たしてない。結果、dat_out_raw()で、
最後の行を踏むと、NULLポインタを手繰って氏ぬ。

BigLine[line] = BigBuffer + zz_fileSize;
が妥当ではないかと思うのだが、現在手元の
read.cはマージしたくないので、どなたか
追試・修正求む。

それにしても、つくづくemacs gdbは便利やのう。

599 :♯6411 :01/09/01 15:22 ID:apo2ymi.
>>598 これは直接関係のない潜在バグだった(鬱

最終行で、NULL - &BigBuffer[n] を計算
した結果、十分大きな値(21億超えてるかも)に
なっちゃうんだけど、BigLine[lineMax-1]は
たいていNULL terminateされているので(藁
結果オーライ、と。

600 :デフォルトの名無しさん :01/09/01 15:27 ID:twr9sQ6c
>>599
BigLine[line]が未記入なのは気持ち悪いのでcommitしてみた。

601 :♯6411 :01/09/01 15:30 ID:apo2ymi.
なんとなくわかった。
問題は、397がけっこうサイズ大きくて、
printf("%.*s") の * が耐えきれなくなってる
ものと見た。

というわけで、これをwrite/gzwriteを用いた
ものに変更すると、問題は解決
すると思うっす。

ところで、linux-2.4だと、mmap(MAP_PRIVATE)の
挙動が変わってます? 今のところ、
ファイルサイズを超えた割り当ては、
0で埋められた名無しさんメモリが割り当てられる、
という前提でコード書いてんですが…
> |  - -)

602 :デフォルトの名無しさん :01/09/01 15:40 ID:YSt69fX.
もひとつ修正お願い。
>>591と同じところで、改行が2つ出ちゃってます。
× pPrintf(pStdout, "%.*s\n", BigLine[i+1] - BigLine[i], BigLine[i]);
○ pPrintf(pStdout, "%.*s", BigLine[i+1] - BigLine[i], BigLine[i]);

603 :デフォルトの名無しさん :01/09/01 15:44 ID:YSt69fX.
>>563って、getLineMaxやdat_out_rawのprintf()の変更を加える前からです・・・
>>575が原因であればいいんだけど。

604 :デフォルトの名無しさん :01/09/01 15:46 ID:twr9sQ6c
>>602
あてた

605 :デフォルトの名無しさん :01/09/01 16:21 ID:D.BYJFUs
>>601
多分、gzprintf()が、
char buf[4096];
vsnprintf(buf,4096,format,va);か
vsprintf(buf,format,va);のどちらかになる。
下なら当然バグる。
上でバグるならライブラリの問題だが、どっちにしろ正しい結果にならない。

606 :VC++まだ箱のなか厨房(w :01/09/01 16:49 ID:/IvlKP0E
割り込みですいません、

動作報告にあったやつなんですが、read.cgi 5.10 で
imode経由の時、「レスを最初から読む」のリンク先が
「st=1&to=10」のためとんだページで11以降のレスを読み出すリンク
が表示されないようですが、
最新版ではこれ、「&to=11」とかなるようには対処済みでしょうか?

607 :605 :01/09/01 17:10 ID:D.BYJFUs
>>601
gzwrite使うようにした。

ところで、他のところで本文を一括でpPrintf()に渡しているような
ところはないかな。

608 :605 :01/09/01 17:36 ID:D.BYJFUs
8000文字程度のを作って食わせたら、駄目だたーョ。
zlibの方をいじった方がよさげなんだが、
スタック上に10Kぐらいとるのと、vasprintf()使うのとどっちがいい?

vasprintf()使っちゃっていいかな?

609 :デフォルトの名無しさん :01/09/01 17:51 ID:Oz0a82Qk
>>608 vasprintf()ってどんな関数なの? Solaris上では見当たらないんだけど...
zlibのgzprintf()もどうせ小さな関数だから 文字列長の制限のないor制限の緩い
関数を自作しちゃってもいいかもね

610 :605 :01/09/01 17:55 ID:D.BYJFUs
sprintf内でmallocする。
パフォーマンス的にうれしくないが、最も安全。

printf系の関数を自作するのは、つらいっす。

611 :デフォルトの名無しさん :01/09/01 17:55 ID:twr9sQ6c
>>609
vasprintfってのは、第一引数をポインタのポインタで渡して
そこにメモリ確保して内容も書いてアドレス書き込んでくれる関数みたい

612 :デフォルトの名無しさん :01/09/01 18:12 ID:bCko6D0s
ちょっと提案なんですが、めがびーのように
「書き込み後もこのスレッドに留まる」機能を導入するというのは
いかがでしょうか?主にチャット対策ですね。
上記の機能のチェックボタンをONにして書き込みした場合、
再び最新の数十件を表示し、チェックボタンは再びONに
なっているという具合に。
脳内シミュレーションでは転送量も削減され、使用者にとっても
メリットがあり、結構いい感じなんですが・・
がいしゅつだったら申し訳ありません。

613 :605 :01/09/01 20:27 ID:D.BYJFUs
>>609
2ちゃんなら最大8kぐらいだから、とりあえず10kにしときました。
gzipped_fwriteは、zlibの方に移しました。

614 :609 :01/09/01 20:43 ID:Oz0a82Qk
>>613 とりあえずそれが妥当なところですね
vsnprintf()って確か戻り値が「バッファ長が十分あったと仮定した場合の
結果文字列長」だと思ったので それチェックして10kより長かったら
malloc()でもっとデカいバッファ作って呼び直す ってのもいいのかも......

でも vsnprintf()の実装がbrokenだと戻り値が当てにならないこともあるのかな?

615 :♯6411 :01/09/01 20:50 ID:73Q/QYVY
現在の最新を、サイケドットコムに
反映しときました。

それにしても、Air H"さいこー。

616 :605 :01/09/01 20:58 ID:D.BYJFUs
>>614
たしかに、
 if the return value is greater than or equal
とかあります。

ただね、「zlibってvsnprintf()使ってんのにどうして落ちる」と悩んだんですわ。
良く見るとconfigure使うくせに STDC とか HAS_vsnprintfとかを自分で定義して
やらんといけなかった様ですな。

configureがなければ、最初っから手で調整したのにィ〜。

617 :609 :01/09/01 21:18 ID:Oz0a82Qk
>>616 うひゃ〜 このconfigureホントに手抜きもいいとこだな
しかし そうなると......世の中のgzprintf()使ったプログラムには
buffer overflowの脆弱性が潜んでる可能性がかなり高い......

618 :605 :01/09/01 21:57 ID:D.BYJFUs
>>614 この方式も組み込みました。
10kのままにしたので、おそらくread.cgiでは使わないでしょう。

>>617 FreeBSD標準のlibzだとsnprintf()が使われるように見える。
vsnprintf()の方を使って欲しいなあ。

619 :♯6411 :01/09/01 22:03 ID:73Q/QYVY
とりあえず、最新のものを追っかけてます。

620 :デフォルトの名無しさん :01/09/02 00:06 ID:6jadN1QI
dat_out_raw()で、
 /* 全部を送信するように変更 */
 raw_lastnum = 0;
となっているのは、else以下に入れるのが正しいのでは?
&raw=5.123等の適当な数字を入れると、
-INCRと共に全体が返ってくる

621 :|  - -) :01/09/02 00:12 ID:U9FxmX3M
>>620
いや、それが正しい動作なのですが...
(正しいレス番号とそのときまでのファイルサイズを指定したときのみ差分が返ってくる)

622 :デフォルトの名無しさん :01/09/02 00:20 ID:5PMhQoM6
あ、+OKが差分で、-INCRはあぼーん等なんですね。
raw=0.0で返ってくる+OKと内容が同じだったので、
全体を返すときは+OKだと勘違いしてました。

623 :デフォルトの名無しさん :01/09/02 00:48 ID:k3O562RI
変更点。
>>nnと>>nn-nnについて
・表示範囲外の時にはリンクを貼る
・正しいレス番号でなかったらリンクは貼らない
・リンクを貼る時、USE_PATHだったら、PATH形式に(CHUNKは未使用)
・テレホタイムは、表示範囲に含まれている場合のみリンクしない

・強引に4バイト比較にした(警告が出る)

urlcopy()とressplitter_split()を取り去り、
変わりにこれを入れてください。
ftp://210.170.170.118/incoming/buggy/read.part.1.c
また、お暇な時にお願いします。

手元の環境の都合で、相変わらず GZIP,ZLIB,USE_MMAP,PREVENTRELOAD
での動作確認はしていませんが、
今回は他に影響する部分は無いと思います。

624 :デフォルトの名無しさん :01/09/02 02:14 ID:QoqrwTN6
テスト用URLs
http://www.psychedance.com/test/read.cgi/tech/991795568
http://www.psychedance.com/test/read.cgi/tech/991795568/st=50
間違いではあるんだけど、この辺の動作がもうひと工夫欲しいかも。

http://www.psychedance.com/test/read.cgi/tech/
http://www.psychedance.com/test/read.cgi/tech/991795568/
http://www.psychedance.com/test/read.cgi/tech/991795568/?st=50
http://www.psychedance.com/test/read.cgi/tech/998997848/?st=50
http://www.psychedance.com/test/read.cgi/tech/998915621/?to=50
http://www.psychedance.com/test/read.cgi/tech/990334284/10-20
http://www.psychedance.com/test/read.cgi/tech/991795568/?ls=50

http://www.psychedance.com/test/read.cgi/tech/998997848/?st=50
http://www.psychedance.com/test/read.cgi/tech/998915621/?to=50
http://www.psychedance.com/test/read.cgi/tech/990334284/10-20
http://www.psychedance.com/test/read.cgi/tech/991795568/?raw=0.0

http://www.psychedance.com/test/read.cgi/tech/999073816/?i=t
http://www.psychedance.com/test/read.cgi/tech/977112364/?n=t
http://www.psychedance.com/test/read.cgi?bbs=tech&key=998878393
http://www.psychedance.com/test/read.cgi?bbs=tech&key=998878393&st=20
http://www.psychedance.com/test/read.cgi?bbs=tech&key=998808627&st=50
http://www.psychedance.com/test/read.cgi?bbs=tech&key=994424597&to=50

http://www.psychedance.com/test/read.cgi?bbs=tech&key=998878393&imode=true
http://www.psychedance.com/test/read.cgi?bbs=tech&key=998808627&nofirst=true
http://www.psychedance.com/test/read.cgi?bbs=tech&key=994424597&st=50to=100
http://www.psychedance.com/test/read.cgi?bbs=tech&key=994424597&raw=0.0

625 :名無し :01/09/02 02:23 ID:Lim.QX.U
夜勤さんが批判要望に出現してます。
インストール頼むなら今ですよ。

626 :仕様無しさん ◆NwLv.g/w :01/09/02 02:33 ID:gUvmJJ.Q
http://teri.2ch.net/test/read.cgi?bbs=accuse&key=999345252&st=764&to=764

764 名前:夜勤 ◆D69Zsbfg @夜勤 ★ 投稿日:01/09/02 02:31 ID:???
 ちと 話の流れと違うけど、すまそ

 今 www2.bbspink のサーバに mod_gzip が入っています。
 ちゃんと動いているようなので(効果もかなりあるし)、
 来週は全サーバに入れる予定ですー。

627 :名無し :01/09/02 02:33 ID:Lim.QX.U
764 名前:夜勤 ◆D69Zsbfg @夜勤 ★ :01/09/02 02:31 ID:???
ちと 話の流れと違うけど、すまそ

今 www2.bbspink のサーバに mod_gzip が入っています。
ちゃんと動いているようなので(効果もかなりあるし)、
来週は全サーバに入れる予定ですー。

過去ログの圧縮もやる予定です。

628 :デフォルトの名無しさん :01/09/02 02:38 ID:nSC2NXko
ホントやねぇ zlib関連のコーディングは結局お蔵入りになっちゃうけど
まぁ めでたしめでたしということか

% telnet www2.bbspink.com 80
GET / HTTP/1.0
Host: www2.bbspink.com
Connection: close

HTTP/1.1 200 OK
Date: Sat, 01 Sep 2001 17:35:09 GMT
Server: Apache/1.3.6 (Unix) PHP/4.0.3pl1 mod_gzip/1.3.19.1a mod_ssl/2.3.6 OpenSSL/0.9.3a
Connection: close
Content-Type: text/html

629 :デフォルトの名無しさん :01/09/02 02:40 ID:TU.A0Olc
790 名前:夜勤 ◆D69Zsbfg @夜勤 ★ 投稿日:01/09/02 02:38 ID:???
>>779
1/3 になると思う、ほぼ達成です。
unix板、プログラム板、web 関係の板の皆様方には
本当に感謝しています。

ありがとう。

630 :♯6411 :01/09/02 02:41 ID:GBYgH3SU
>>624 勘弁してくだちい(藁

> http://www.psychedance.com/test/read.cgi/tech/991795568

まっとうでないpath喰わせたら、本来ならば
302(Apacheが勝手に吐くけど)吐いて
Location: 入れる必要があるのよねー。
そのうち善処するです。

> http://www.psychedance.com/test/read.cgi/tech/991795568/st=50

st= は、path の構成要素として扱われるんだけど、
今は数字が入ってなかったらあまり動作が
芳しくないかもしれん。0-0 と同じ動作をするかな?

> http://www.psychedance.com/test/read.cgi/tech/991795568/50-
だと、想定される動作をするはず。

631 :♯6411 :01/09/02 02:43 ID:GBYgH3SU
>>628 どーでもいーけど、
なんでL-M吐かないんだろ??

632 :デフォルトの名無しさん :01/09/02 02:46 ID:nSC2NXko
>>631 例の"server-parsed"のためと思われ

633 :デフォルトの名無しさん :01/09/02 02:48 ID:vmaCIJDM
>>628
無駄になるのは、index2.htmlスレ関連の方。
read.cgiでは、意味がある。

>>631
mod_gzipだと、そのあたりがいまいち。
304でのリロード拒否も考えると、cgi挟みたくなるよね。

634 :♯6411 :01/09/02 02:51 ID:GBYgH3SU
>>633 mod_expire入れられれば…

635 :デフォルトの名無しさん :01/09/02 02:55 ID:vmaCIJDM
mod_gzipでcgiの出力も圧縮できるんでしたっけ?
そこら辺まで見てないんだけど。

636 :♯6411 :01/09/02 03:01 ID:GBYgH3SU
>>635 できる。
サイケドットコムにはmod_gzip入ってるが、
意図的に www.psychedance.com だけ
mod_gzipしない設定になっていて、
あのサーバが抱えている他のコンテンツは
gzip効かされるようになってる。

漏れも目で確認してみた。

637 :- :01/09/02 03:03 ID:SJhkwM6g
http://www2.bbspink.com/test/check.cgi

HTTP/1.1 200 OK
Date: Sat, 01 Sep 2001 18:00:46 GMT
Server: Apache/1.3.6 (Unix) PHP/4.0.3pl1 mod_gzip/1.3.19.1a mod_ssl/2.3.6 OpenSSL/0.9.3a
Connection: close
Content-Type: text/html
Content-Encoding: gzip
Content-Length: 684

gzipもlengthも使われてますね

638 :デフォルトの名無しさん :01/09/02 03:08 ID:vmaCIJDM
>>636
できるのかあ。じゃあ、うちのは設定の問題か、勘違いかな。
細かいとこまで見ないで入れちゃったからなあ。

ところで、>>623 のコードどうします?
そのまま取りこむのは、少し抵抗あるんだけど。

639 :ひろゆき :01/09/02 04:59 ID:Y47cJeS2
どうもお世話になってます。
いろいろとありがとうございます。
ノートPCが手元にないもので、インストールができないおいらです。。。

640 :デフォルトの名無しさん :01/09/02 05:11 ID:qidyfsQI
j時間帯的には
http://cocoa.2ch.net/test/read.cgi?bbs=unix&key=998764722
の★つきひろゆきと思われるが、何でこっちはキャップないの?

641 :デフォルトの名無しさん :01/09/02 06:49 ID:OGRZcBVM
 index2とかread.cgiのhtmlにはform書かずに、「書きこみ」に
リンクして別窓開かせるというのか、もしかして激しくガイシュツ?

642 :名無し :01/09/02 06:50 ID:kg0l2cpY
age

643 :♯6411 :01/09/02 15:04 ID:DixhmFmM
>>641 フォームがあそこに付いてるってのが
2chの活性化につながってると思われ。
フォームを外すと、禿げしく活性化が
損なわれること必至なので、熟考が必要。
現に、スレ立ては、昔は表に出てたけど、今は
引っ込んでるでしょ?

もちろん、運営側が脱活性化を狙ってるのなら、
フォームを引っ込めてしまうというのも…鬱

644 :♯6411 :01/09/02 15:06 ID:DixhmFmM
>>639 こっちこそ、大変楽しんでますです。
本業そっちのけで(w

645 :デフォルトの名無しさん :01/09/02 15:45 ID:FVpdjhrE
たまにここをのぞいてるもんですが。
>>623のアイディアをさらに進めて、各レスに <a name="nn"> ってつけて
表示範囲内へのリンクは <a href="#nn"> にするのはどうでしょ。
転送量削減というより便利になるだけだけど。

646 :♯6411 :01/09/02 15:57 ID:DixhmFmM
>>645 path仕様では実装済みです。
現仕様に適用する作業はやってないですが、
できないこともないと思われ。

http://www.psychedance.com/test/read.cgi/tech/998997848/351-400#397

647 :デフォルトの名無しさん :01/09/02 15:58 ID:McpMRzTs
>>623
これcvsにあてちゃっていいんでしょーか

648 :♯6411 :01/09/02 16:02 ID:DixhmFmM
>>647 未評価なんだけど、
評価可能なように、conditionつけてお願いしまーす

649 :デフォルトの名無しさん :01/09/02 16:03 ID:McpMRzTs
>>648
それにしてもconditionだらけになってきたので
いじるのもつらくなりつつあるような(^^;

650 :デフォルトの名無しさん :01/09/02 16:10 ID:McpMRzTs
>>623
・強引に4バイト比較にした(警告が出る)
アライン無視で *(long *)化して比較してるんですか。
これはやめたほうがいいと思われ。
環境変わると死ぬので将来サーバ環境変更したときに危険

651 :♯6411 :01/09/02 16:10 ID:QJw7snFQ
>>649 仕様確定している新機能は、
そろそろcondition外してもいいんだけどねー。
これはみんなのコンセンサス必要。

いちお、古い分はリポジトリに残ってるわけだし。

652 :デフォルトの名無しさん :01/09/02 16:12 ID:FVpdjhrE
おお、できてますな。便利ですなり>>646
そういう仕様のすり合わせはちゃんと読んでないのでもぐります...

653 :♯6411 :01/09/02 18:29 ID:ZI/K/6dI
>>650 サイケドットコムに反映した。

rewrite_href()に限らず、漏れが書き下ろした
モジュールは、どなたでも手を着けて
くださって結構。(そのためのcvsでしょ?)

rewrite_href2()は、葬れると思われ。
(本人もそういってるし)

654 :デフォルトの名無しさん :01/09/02 19:36 ID:McpMRzTs
zz_GetStringリファインしてみた。
あと'=' がない場合が想定されていなかったので、無い場合は無視するようにしたっす。
あ、commitのcomment入れ失敗。日本語文字が消えてる(^^;

655 :デフォルトの名無しさん :01/09/02 19:54 ID:McpMRzTs
>>624 で入れたやつ、rawmodeでもURLがタグ化されてるけどいいの?

656 :デフォルトの名無しさん :01/09/02 19:54 ID:nSC2NXko
>>631-634 Last-Modifiedの件だけど オレのところのApacheで確認してみた
ところ mod_gzip使ってもserver-parsedになってない静的コンテンツは
ちゃんとLast-Modified吐いてます ということでserver-parsedを外しても
問題がないのなら外してもらった方がいいですね

あとExpiresヘッダがらみの部分が現在

#if 1
    get_lastmod_str(expires_str, zz_fileLastmod + 5);
#else
       :
#endif

とかなってるけど まぁ実際には EXPIRES が定義されてなければExpiresヘッダは
吐かれないけど もしこのままExpiresヘッダを吐いたとすると mtimeの
5秒後にexpireされてしまう......ということは事実上"Pragma: no-cache"と
ほとんど等価になってしまってブラウザでキャッシュされなくなってしまうような
気がするんだけど......

657 :656 :01/09/02 20:56 ID:nSC2NXko
server-parsedの場合これどうかね?

                     Apache module mod_include

XBitHack directive

  Syntax: XBitHack on|off|full
  Default: XBitHack off
  Context: server config, virtual host, directory, .htaccess
  Override: Options
  Status: Base
  Module: mod_include

  The XBitHack directives controls the parsing of ordinary html
  documents. This directive only affects files associated with the MIME
  type text/html. XBitHack can take on the following values:
     :
  full
     As for on but also test the group-execute bit. If it is set,
     then set the Last-modified date of the returned file to be the
     last modified time of the file. If it is not set, then no
     last-modified date is sent. Setting this bit allows clients and
     proxies to cache the result of the request.

658 :♯6411 :01/09/02 21:29 ID:rH8fTNpc
>>657 そもそも、server-parsedにしてる
理由って、adとか差し込むため?

659 :♯6411 :01/09/02 21:29 ID:rH8fTNpc
>>656 Expires: の件に関しては、
途中で投げちゃったので、
深く追求しないで…鬱

660 :655 :01/09/02 21:33 ID:McpMRzTs
rawmodeでタグ化してるけどってのは、
http://www.psychedance.com/test/read.cgi?bbs=tech&key=998997848&raw=0.0
これ見るとrewrite_href*が処理されてるように見えるんだけど。

661 :655 :01/09/02 21:37 ID:McpMRzTs
>>660
って勘違い。鬱

662 :デフォルトの名無しさん :01/09/02 22:18 ID:df.8HYUw
どちらにせよ個々のPCの時間がそんなに精度良くサーバと
合ってるはずないんで Expires ヘッダ使うのは無理だと思われ

663 :♯6411 :01/09/02 22:23 ID:rH8fTNpc
>>662 Expiresに関しては、どちらかとゆーと
キャッシュサーバに対する妥当性を与える
手段としてあれこれ研究してたす。

ウチの会社で使ってるのはSquid-2

664 :デフォルトの名無しさん :01/09/02 22:27 ID:McpMRzTs
>>662
Expiresの時刻はDateヘッダの時刻との差を出して
有効期間を割り出すものじゃないかと思うけど。
RFC2616
>13.2.4 Expiration Calculations
> freshness_lifetime = expires_value - date_value

665 :デフォルトの名無しさん :01/09/02 22:28 ID:nSC2NXko
>>663 とするとCache-Controlでわ?

666 :♯6411 :01/09/02 22:36 ID:rH8fTNpc
>>665 IE5では、Expires:で保障されてる
オブジェクトに対しては、サーバに問い合わせすら
しない、という噂を聞いて、いろいろ試してた
んですわ。たとえば、過去ログとかは有効期限を
長めに設定しても生きていける可能性が
あるわけでしょ?

/* ためしに廃棄期限をちょっと30秒先に設定してみる */
という部分が、その実験の名残。

先日出た結論 >>336 >>391 以降 では
.cgi ? などという文字がURLに含まれていると、
キャッシュサーバだけでなく、UAもExpiresを信用しなく
なるのでは? ということだった。これに関しての
実験は、後ほどしてみる。

667 :662 :01/09/02 22:45 ID:df.8HYUw
>>664
すんません、逝ってきます

668 :デフォルトの名無しさん :01/09/02 22:48 ID:nSC2NXko
>>666 なるほど......ただ問題は有効期限切れでexpireされると キャッシュから
捨てられてしまうため 今度は逆にコンテンツが変化していなくても取得しに行って
しまうことになるので そのあたりのトレードオフを検討する必要がありますね

まぁおっしゃる通り過去ログなら有効期限を1年ぐらいにしておけばいいのかも
知れませんけど

669 :♯6411 :01/09/02 22:53 ID:rH8fTNpc
>>668 詳しく実験してないんだけど、
大筋では、expiredなオブジェクトに対しても、
I-M-S付きで取りに逝ってくれるようなので、
無駄ではない、かもしれん。

今は別の作業やってるので、Expires:の検証ができぬ。

670 :デフォルトの名無しさん :01/09/03 05:03 ID:TpCC4vQc
>>568 を読み流してた。。

read2ch.hから、
#defineKatjusha_Beta_kisei
がなくなってます。
http://cocoa.2ch.net/test/read.cgi?bbs=unix&key=998695422&st=81&to=81&n=true

その他、CM_BBSPINKやLOGLOGOUTはどうなんだろ?

671 :♯6411 :01/09/03 05:21 ID:L5jSUf32
>>670 いつのまにか消えてますな(w
いま調べたら、リポジトリには
ハナっからかちゅーしゃ規制定義が
入ってないっぽ。

漏れも、なんであちこちに
Katjusha_Beta_kisei
入ってんだろー? とギモンにはなってた
んだが…まーいっか。

672 :♯6411 :01/09/03 06:15 ID:L5jSUf32
そろそろ寝るか…

要望: だれか、現行版(5.10?)とほぼ同じもの(?)に、
タグつけといてもらえませんか?
漏れはどの時点が取り込まれたか、いまいち
覚えてませんです。

673 :デフォルトの名無しさん :01/09/03 09:10 ID:.8abJrUE
Ver5.10の導入報告は前スレ608
CVSの導入が前スレ739(commitが764)
というわけで、Ver5.10は残ってない

5.10以前に導入され、苦情や問題の無いcondition
NEWBA
DEBUG
GSTR2
こいつらはOK

GZIPは、プロセス数問題があるので保留
PREVENTRELOADは、削除依頼板に若干気になる発言があるので保留
ZLIBは、導入時にzlibがなく、入っていない

674 :デフォルトの名無しさん :01/09/03 13:38 ID:nLIVOBVk
「掲示板に戻る」をindex2.html→index.htmlに。

潜在的なバグ
readSettingFile()
  if (cptr[len] == '='
cptr + len < endp を確認してからにしないとまずい。

dat_out_raw()
  pPrintf(pStdout, "%.*s", BigLine[i+1] - BigLine[i], BigLine[i]);
datに'\0'が含まれていた場合に、期待した動作をしない。
(最近はbbs.cgiで'\0'をはじいている気がするし、
mod_gzipが.datも圧縮するようになれば、あまり問題ではない)

675 :♯6411 :01/09/03 13:40 ID:xDKgLLeA
>>673 そうだったのか、tnx.
リポジトリの最初の方が、5.10にやや近い、
ということにしとけば、いいのかな?

676 :デフォルトの名無しさん :01/09/03 14:35 ID:eRhXWXRI
>>674
/index.html より / にしたほうが明らかにバイト数が少なくてすむ。

677 :デフォルトの名無しさん :01/09/03 18:04 ID:Z2g4dJyM
>>676
>今までは、http://teri.2ch.net/accuse/index2.htmlとかで
>ブックマークしてたと思いますが、
>これから、http://teri.2ch.net/accuse/になります。
>index2.htmlってのがいらなくなるわけですね。

http://teri.2ch.net/accuse/
だと、gzip化されてない様に見えるが?
mod_gzipが導入されるまでの移行中は、どこに戻すのがいいのやら。

678 :仕様無しさん ◆NwLv.g/w :01/09/03 19:32 ID:shKKa9Vo
>677 とりあえず #defineで設定して後ですぐに変えられるようにしとくのが吉かと。

679 :デフォルトの名無しさん :01/09/03 20:28 ID:MKp/si06
ちょっと Expiresヘッダを吐いた場合のIE5.01とネスケ4.72の
振る舞いを観察してみました

IE5.01 -> Expiresは無視されている模様(Expiresを吐かなかった場合との差が見られない)

ネスケ4.72 -> 当該ページを表示させてから「戻る」ボタン等で前のページに戻ってから
        「次」ボタン等で当該ページに戻った際に次のような振る舞いになる
        Expire日時前 -> そのままキャッシュの内容が表示される
        Expire日時後 -> If-Modified-Since付きでコンテンツを取りに行く
                 Statusが304ならキャッシュの内容を表示
        このケース以外(URLを直打ちした場合,リンクからジャンプした場合,
        リロードボタンを押した場合等)ではExpiresなしの場合と振る舞いの違いがない模様

ってな感じでした なお >>664 で指摘されているRFCの規定にもかかわらず
ネスケはコンテンツをexpireさせる日時はPC側の内部時計のものを使ってしまっている模様

ところで ネスケ4.72で次のような問題があるようです
    gzip圧縮されたコンテンツでContent-Lengthヘッダが指定されていると
    Last-Modifiedによる指定が無効になってしまう
これはネスケ側のバグではないかと思います 現在2chサーバで稼動中のread.cgiでは
Content-Lengthヘッダがありませんが これが指定されるようになると
ネスケでは(少なくとも4.72では)If-Modified-Since付きのリクエストを
行わなくなって毎回コンテンツを取りに行くようになってしまうと思います

mod_gzipではdechunkを行うとContent-Lengthヘッダを生成させるので
(そうでなくともスタティックなコンテンツではそうですが)これは
頭の痛い問題ですねぇ......

680 :♯6411 :01/09/04 00:04 ID:.iUWuuDs
cvs追いかけてる人は知ってると思うけど、
いま、インデクスの実装を行っており、
設計はほぼ固まりました。

概要・特長は以下の通り。
・インデクスのサイズは 4096 bytes
・/board/dat/idx/XXXXXXXXXX.idx
・ディレクトリ idx がなかったら、インデクスは作成されない
・bbs.cgiの改造はたぶん不要
・完璧な排他制御(w
・スピンロック不使用
・SMP safe(まじかよ)

仕様はほぼ決まっているが未実装な機能は以下の通り。
・あぼーん時のインデクス再構築

…っていっても、いまからmainに組み込むことを
考えると、もちっと道のりあるかな?

681 :デフォルトの名無しさん :01/09/04 00:27 ID:1lIywugU
read.cgi更新されたもよう。
http://teri.2ch.net/test/read.cgi?bbs=accuse&key=999451574&nofirst=true&st=573&to=573

682 :♯6411 :01/09/04 00:28 ID:.iUWuuDs
>>681 ここのカレントじゃなく、
zlib使うようにしたバージョンかな?

683 :デフォルトの名無しさん :01/09/04 00:29 ID:Mgf2Z89w
ありゃ、生DATのgzip圧縮転送って結局まだ有効になってないの? >新read.cgi

684 :デフォルトの名無しさん :01/09/04 00:34 ID:1lIywugU
なんかindex.htmに戻るようにしただけな気がする。

685 :デフォルトの名無しさん :01/09/04 00:45 ID:ydrizmO6
そうかな?

686 :♯6411 :01/09/04 00:49 ID:MmUrMvH6
あまりアグレッシヴな改造やると
嫌われるかなあ? (鬱

687 :デフォルトの名無しさん :01/09/04 01:40 ID:LkAi.Uls
早く「>>」規制を解除してほしいなぁ。

いちいちst=&to=打ち込めば済むんだろうけど、
ほとんどの人は「レス全部」押すだろうし。
「前100レスを読む」ボタンつけるのととどっちがいいんだろ。

335KB
新着レスの表示

スレッドリストへ戻る 全部 前100 次100 最新50

0ch BBS 2004-10-30