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

read.cgi改良スレッド

570 :デフォルトの名無しさん :01/08/31 23:34 ID:naodixwc
>>568
恥ずかしながら、オークションの実況をROMってしまった身から言うと、
ハマりまくってるときのリロードは1−5スレずつダウンロードすることになるね。
かちゅーしゃだとあまり関係ないと思うな。
圧縮するにこしたことはないけど。

571 :♯6411 :01/08/31 23:34 ID:WLvR5P8o
>>569 Content-Encoding: gzipのとき氏ぬ。
落ちちゃってるわけではなく、バッファを
フラッシュしきれてない??

gzipがない状態では、正常に処理されてる模様。

572 :♯6411 :01/08/31 23:39 ID:WLvR5P8o
>>571 ** デバッグ協力お願い **
サイケダンスドットコムの、
/tech/dat/998997848.datを
持ってってみてください。
たぶん、動かない予感。

bash$ (export HTTP_ACCEPT_ENCODING=gzip;
export PATH_INFO='/tech/998997848/';
export QUERY_STRING='raw=0.0';
export HTTP_USER_AGENT=console;
./read.cgi )>file

さいしょは、Linux(開発に使ってる)と
FreeBSD-2.2.x(公開に使ってる)の差かとオモタよ…

573 :デフォルトの名無しさん :01/08/31 23:42 ID:WK591e.c
TODOより
>現在の実装では、/board/subject.txt のmtimeを返しているが、subject.txt
>はsage進行の時は更新されないと思われるので、上位n個スレでsage進行が行
>われているとき、正しいものが取れなくなる可能性はある。

新スクリプト(要するに今使っているbbs.cgi)では、
sageレスも必ずレス数にカウントされるので、
並べ替えは起きないものの、subject.txtの更新は行われていると思われます。

574 :♯6411 :01/08/31 23:44 ID:WLvR5P8o
>>573 tnx, 信じてみるよ。
ちょっと前(?)、subback.htmlとかのレス数が
sageで増えてなかったような気がして、
subject.txtも同じなのかな? と邪推
してたのであります…

575 :|  - -) :01/08/31 23:49 ID:W1MB8EFM
dat_readのところの、mmapした後の盲目的strlenで問題が発生している。
本来、このコードはdatが破損してデータの一部が\0で埋められたときにそれを
できるだけ修復するためにあるコードかと思われ。
memchr(BigBuffer, '\0', zz_fileSize);を使えば問題は起きなくなるでしょう。
(その後のwhile()ループも同様に修正)

576 :デフォルトの名無しさん :01/09/01 00:06 ID:CHjn5Q7E
>>575
strlenは、read版だと末尾に'\0'を入れてあり、正常に動いてました。
で、>>565のコードだと、strlen使わなくなってます。

577 :565,576 :01/09/01 00:08 ID:CHjn5Q7E
getLineMax()の内部も変更済み。

でも、要-DCUTRESLINK。
※-DCUTRESLINKでもLINKTAGCUTが0なら、リンクのカットはしません

578 :デフォルトの名無しさん :01/09/01 00:25 ID:Z2Y7gl3o
ってゆーか、read()版でも、いつの間にか消えてた。

dat_read()
 ・・・
 /* XXX ところどころに 0 が現れるの? */
 {
  char *end = BigBuffer + zz_fileSize;
  char *p = BigBuffer;
  while ((p = memchr(p, '\0', end - p)) != NULL) {
   *p = '*';
  }
 }

ブロックが汚いけど、こうすれば、OKかな

579 :名無し娘。 ◆vP.bOZFQ :01/09/01 00:32 ID:EhmPvxQ6
-DCUTRESLINK だとむしろ転送量が増えるかもしれない問題について、
妥協的な提案ですが、その窓内で表示されている部分だけは CUTRESKINK して、
表示されていない部分については RESLINK をはるというのはどうでしょう。
&st=50&to=100 なら、 >>58 ははらないけど >>14 ははる、というふうに。

それとも、PATH_INFO 使い出すと同時に -DCUTRESLINK はやめる方向でしょうか。

580 :デフォルトの名無しさん :01/09/01 00:43 ID:3xMt6oxQ
dat_read()内で、
 if (zz_fileSize > MAX_FILESIZE)
  html_error(ERROR_TOO_HUGE);
の次に、
 if (zz_fileSize < 10)
  html_error(ERROR_NOT_FOUND);
ぐらい、入れておいたほうがいいかもしれない。
(エラー種別は別にした方がいいかも)

実際、過去にサイズ0のファイルがあったことがある。
各フィールドの区切りや投稿日があるので
正常なdatが10バイトを下回ることは無いはず。

581 :♯6411 :01/09/01 00:43 ID:xtb9tuCk
ちょっと雑用が入ってしまい、
マージ作業とかできぬ、ゴメソ

今から帰らなきゃ…

582 :デフォルトの名無しさん :01/09/01 02:06 ID:lOi0M7Jo
>-DCUTRESLINK だとむしろ転送量が増えるかもしれない問題について、
読みなおしされる回数と、全体の約2割の削減(非圧縮UAのみ)で、
どちらが効果があるのか、調べないと実際にはわかりません。

で、1から「関連スレは>>2-5のどこか」とリンクされる場合は
明らかに逆効果なので、
レス1の場合はリンクするよう、とりあえず変更しました。
(>>578>>580も加えた)
ftp://210.170.170.118/incoming/2ch-read-current/read14.2.9.c.1

書いてあるレスとリンク先のレス番号の差をみたり、
さらに、st=やls=を見て判断するのは、
単純にカットするのと比べて、閉じタグの時も判断しなければならず、
変更が大きく、
やってはみますが、それなりに重い処理になりそうです。

あと、しつこいようですけど、-DCUTRESLINKだけでカットされるわけではなく、
read2ch.h内で  #define LINKTAGCUT 0
にすれば、カット機能は働きません。

>>581
お疲れ様です。頼りきっていてすみません。

583 :♯6411 :01/09/01 02:39 ID:LOycKPho
>>582 いれときました。
500 Internal Server Error問題は
解決しちゃったかな?

584 :デフォルトの名無しさん :01/09/01 02:39 ID:dsS601S.
rawwrite_href()をちょっと見た感じ、
st=やls=によってリンクする/しないを区別する場合には
この中でやった方がよさそうですね。
>>0>>9999(lineMaxより大きい数字)を判断したりも、
ここで行ったほうが効率が良さそうです。

ただ、BigBufferを書き換えなくすると、
'\0'が含まれないので(逆に最後が'\n'であることが保証されている)、
 n = strcspn(*sp, ">");
 if (n == 0)
  return 0;
は、
 n = strcspn(*sp, ">\n");
 if (*(*sp + n) == '\n')
  return 0;
という感じになおし、
 s = strstr(s, "</a>");
 if (!s)
  return 0;
は、
 s = strcspn(s, "<\n");
 if (*s == '\n' || strncmp(s, "</a>", 4) != 0)
  return 0;
等の修正が要りそうです。
(他にもあるかも)

585 :デフォルトの名無しさん :01/09/01 02:52 ID:vzOvppvM
>>561は大丈夫っぽいけど、
>>563
http://www.psychedance.com/test/read.cgi?bbs=tech&key=998997848&raw=0.0
は直ってないっぽいです。

586 :名無し娘。 ◆vP.bOZFQ :01/09/01 02:53 ID:EhmPvxQ6
>>582
お疲れさまです。要はどっちにも対応できることですよね。
レス1からのリンクも明らかに逆効果かどうかわからないくらいです(^^;
リンク先を実際に参照してもらった回数のうち、リンクがなければ飛ぶのをやめた
人と、リンクがなくてもきちんと ls,st,to などを指定した人の分を除いた量が、
「約2割の削減」よりも大きいか小さいか。。。

ところで、そうすると -DCUTRESLINK しない場合というのは、どういう
事態が想定されているのでしょうか。
# ソース読んだだけではわからなかった(^^;

587 :♯6411 :01/09/01 02:55 ID:LOycKPho
>>585 あとでデバッガで追ってみるね(涙

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:の検証ができぬ。

335KB
新着レスの表示

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

0ch BBS 2004-10-30