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

read.cgi改良スレッド

1 :名無し娘。 ◆vP.bOZFQ :01/08/28 20:24 ID:vA2A8wXI
ここは read.cgi の改良だけを専門に扱うスレッドです。

2ちゃんねるで行われている他のプログラム開発や、動作報告・障害報告等に
ついては、それぞれ専用のスレッドが >>2 から参照できますので、
移動してください。お願いします。

●前スレ
 http://piza2.2ch.net/test/read.cgi?bbs=tech&key=998845501

●read.cgi最新ソースコード(定期的に同期されています)
 http://www.gedoh.org/aki/2ch/current/bbs/
 http://star.endless.ne.jp/users/forcount/4countbbs/scriptmaker/index.html

●2ちゃんねる軽量化関連スレッド群
 >>2

●みなさまへのお願い(急募)
 >>3

●前スレで提示されている案・意見の一覧
 http://piza2.2ch.net/test/read.cgi?bbs=tech&key=998845501&st=868&to=868&nofirst=true

435 :428 :01/08/30 11:46 ID:avybgQxQ
>>434
">"が > になってた! (笑)

436 :428 :01/08/30 11:47 ID:avybgQxQ
>>435
&GTが(;´д`)

437 :428 :01/08/30 11:50 ID:avybgQxQ
>>427
つーこってcommitしました(makeのみ確認、動作は確認してない)

438 :仕様無しさん ◆NwLv.g/w :01/08/30 11:51 ID:zI.sv/Fk
>437 ありがとうございます。
# しかしuuencodeにこんな落とし穴があったとは...

439 :デフォルトの名無しさん :01/08/30 13:39 ID:VaKgQswY
隊長★さんの話のニュアンスは Big-Server以外のところでホスティングできる
ような方向で動いてるということかな? となると mod_* の組み込みなんかの
自由度も高くなる可能性もあるということか......

440 :♯6411 :01/08/30 14:09 ID:B5j.xDlI
スマソ
昨夜分離したモジュール
index.[ch]
は、命名ミスの予感。
晩酌しながらの作業はアプナイアプナイ

誰か、あのモジュールのもっといい
命名してくれないかしら? 思い浮かばん(鬱

441 :仕様無しさん ◆NwLv.g/w :01/08/30 16:48 ID:nL9JLCPA
これってread.cgiのことなのかな...

http://teri.2ch.net/test/read.cgi?bbs=saku&key=996761078&st=408&to=408&nofirst=true

408 名前:復帰マシーン ★ 投稿日:01/08/30 16:18 ID:???
 えーと各削除人氏連絡です
 キャッシュの(2ちゃんねる側)の都合により削除したはず
 のレスやスレッドが見えてしまうという現象がおこることが
 判明しました、依頼人から抗議などありましたらその件を説明
 してあげてください、ひろゆきさんには連絡済です

442 :デフォルトの名無しさん :01/08/30 16:53 ID:.6UDlrR.
>>441 誰かが言っていた"Cache-Control"ヘッダを入れるべきか......

443 :名無し娘。 ◆vP.bOZFQ :01/08/30 16:55 ID:0pm1KlDE
今から現状を追います。。。
>>441
あぼーんでもdatのmtimeは変化するので、304返すってことはないですよね。
とすると、FORCE_304_TIMEかな?

444 :♯6411 :01/08/30 17:50 ID:RSyGf5Ac
path仕様がほぼ完成したことを
関係者各位にお知らせします。
commitしてありますので、ビクビークしながらご賞味ください。
最後にちょっと仕様変更

/test/read.cgi/tech/ 板ダイジェスト(index2.html相当)
/test/read.cgi/tech/- 全スレ一覧(subback.html相当)

今のところ、リンク遷移において、
現仕様と新仕様は互いに干渉しないようになっています。

あと、板ダイジェスト、スレ一覧のhtmlを検証、
打ち直してくださる方、ご協力を。

445 :デフォルトの名無しさん :01/08/30 19:06 ID:4DArGShY
SETTING_R.TXTの読みこみで、ほぼ全てパラメータにできるようにしてみました。
不要なものまでパラメータにしているかもしれません。
read()版は動作確認済み。mmap()版は未確認。
その他、細かいところ2、3の修正。

最新版>>444に変更を加えたものを
ftp://210.170.170.118/incoming/2ch-read-current/read14.2.8.c
ftp://210.170.170.118/incoming/2ch-read-current/read2ch14.2.8.h
におきました。
どなたかmergeをお願いします。

446 :デフォルトの名無しさん :01/08/30 19:33 ID:C3beEwl.
修正もう1つ忘れてた。
splitting_copy()の中の
  || rawmode);
になってるところを、
  || rawmode || is_imode());
にすると、imodeの時にリンクが出なくなります(-DCUTRESLINK時)

447 :名無し娘。 ◆vP.bOZFQ :01/08/30 19:33 ID:QPVBUxP6
実装・検討待ちの案一覧(前スレはほとんど見なくて良くなりました)

PATH_INFO(完成) >>444
USE_SETTING_FILE(完成 merge待ち) >>445
imodeは常にCUTRESLINKする
>>xxx-yyyにnofirstがつかない問題 >>167
ls=1で全スレ表示問題 >>413
1-100,101-200,...のUI >>78 >>93
スレスト時FORM >>11
CUTRESLINK(imode) http://piza2.2ch.net/test/read.cgi?bbs=tech&key=998845501&st=765&to=765&nofirst=true
CUTRESLINK問題 >>418
Cache-Control >>441-442
FORCE_304_TIMEの動的変動 >>297
dat,kako >>230 http://piza2.2ch.net/test/read.cgi?bbs=tech&key=998845501&st=805&to=809 ツール作者さんに対応お願い
index2作成 >>394 >>396
LastMod(ls,st,to) >>127 >>134
mmap(lock) >>139 >>425
expire >>336 >>425
deflate >>326 >>425
bzip >>271 >>425 (前スレ 819 821-822 846 865 873)
r2chhtml.hいろいろ http://natto.2ch.net/test/read.cgi?bbs=hp&key=998774537&ls=20
その他 http://www.gedoh.org/aki/2ch/tiki/ にいろいろ

448 :ヒロユキ@ギコナビ :01/08/30 19:37 ID:AEjMWcrI
ギコナビという2ちゃんねる閲覧ソフトを作成しているものです。
read.cgiがdatを吐く仕様(パラメタなど)は、どこのスレにあるのでしょうか。

449 :名無し娘。 ◆vP.bOZFQ :01/08/30 19:37 ID:QPVBUxP6
>>446
お疲れさまです。
-DCUTRESLINK と連動せずに、imode 時は CUTRESLINK するようにしていただけると
ありがたいです。

450 :名無し娘。 ◆vP.bOZFQ :01/08/30 19:42 ID:QPVBUxP6
>>448
どうも、ありがとうございます。

/* raw=xxx.yyyを有効にする。 xxx=最終レス番号, yyy=そのときのサイズ。
* 一行目はステータス:
* [+OK] の場合は差分のみを送信する。
* [-INCR] (Incorrect)の場合はすべてのデータを送信する。
* [-ERR (テキスト)]の場合はなんかエラーが起きた。
*/
というふうになっています。

http://piza2.2ch.net/test/read.cgi?bbs=tech&key=998997848&raw
で、dat全体を吐きます。

http://piza2.2ch.net/test/read.cgi?bbs=tech&key=998997848&raw=230.45584
だと、レス番号230番目までのdatのサイズが45584だったときに、231番目から
送信し、サイズが異なるときはあぼーんがどこかにあるとみなして、レス番号1
からすべて送信します。

451 :名無し娘。 ◆vP.bOZFQ :01/08/30 19:44 ID:QPVBUxP6
>>449
あれ、今のread.cgiでは、まだ有効になっていないかもしれません。。。

452 :♯6411 :01/08/30 19:49 ID:RSyGf5Ac
>>445 マージしてるんだけど、
なんか手元で一部機能が動かなく
なってしまったので、格闘ちう。

453 :名無し娘。 ◆vP.bOZFQ :01/08/30 20:06 ID:QPVBUxP6
http://star.endless.ne.jp/users/forcount/4countbbs/scriptmaker/index.html
への投稿からコピペ。

BadAccess()ってなんでif文で切っているの?
コンパイルしたときにダイナミックステップ数が多くなるので
case文にしたほうが高速化が図れますよ。
転送数削減には関係なくてスマソ

454 :♯6411 :01/08/30 20:12 ID:RSyGf5Ac
>>445
>>452
えーと。dat_read()中の
getFileSize()を外すと、
ダイジェスト作成の2周目以降が氏ぬので
復活させときました。

ただいまマージ完了

455 :デフォルトの名無しさん :01/08/30 20:14 ID:.6UDlrR.
>>453 NEWBAの方はforループになってるからcase文にできるのかどうか......
っていうか そもそも文字列に対してswitch-caseって使えたっけ?

あえて言えば User-Agentの一番最初に来る文字列だったら
strstr()よりstrncmp()の方が早くできるかな ってぐらいか

456 :445 :01/08/30 20:46 ID:IyBl8mjA
>454
ありがとうございます。&ご迷惑をおかけしました<エンバグ

>449
-DCUTRESLINKしないと通らない部分で、カットしてるので・・・。
でも、read2ch.h内の
#define CUTRESLINK
の下にdefineしてあるLINKTAGCUTを0にするか、
SETTING_R.TXTに
LINKTAGCUT=0
の行があれば、カットしないはずです。

あと、結構繰り返されるループなので、
4文字のmemcmpやmemcpyはlong値にすると速いと思います。それも、
if (*(long *)p == *(long *)"<br>") ではなく、
if (*(long *)p == '>rb<')
が一番速いような。
可読性と移植性を一気に失いますが。

457 :デフォルトの名無しさん :01/08/30 21:10 ID:N/.0WZiw
ドルバッキーさん来てるよ?

458 :♯6411 :01/08/30 21:13 ID:RSyGf5Ac
とりあえず、最新のバージョンが
動作確認できる場所を確保した。
http://www.psychedance.com/test/read.cgi/tech/

459 :デフォルトの名無しさん :01/08/30 21:19 ID:Np0La3X.
>>450
>http://piza2.2ch.net/test/read.cgi?bbs=tech&key=998997848&raw=230.45584
>だと、レス番号230番目までのdatのサイズが45584だったときに、231番目から
>送信し、サイズが異なるときはあぼーんがどこかにあるとみなして、レス番号1
>からすべて送信します。
何処かに「あぼーん」がある場合、レス番号とdatのサイズが不一致であるという
事実(エラーコード?)と、「あぼーん」されたレス番号を返してもらえればクライア
ント側でログを操作できるんじゃないかな?
これならレス番号1から全て送信し直す必要がなくなると思うんだけど、どうかな?

460 :デフォルトの名無しさん :01/08/30 21:20 ID:N/.0WZiw
>459
ログ形式に関してはこちらで話が進んでいます。

bbs.cgi 改良案スレッド
http://piza2.2ch.net/test/read.cgi?bbs=tech&key=998921988

461 :デフォルトの名無しさん :01/08/30 21:21 ID:.6UDlrR.
>>458 ネスケ4.72で
----------------------------------------------------------------------
JavaScript Error: http://www.psychedance.com/test/read.cgi/tech/, line 34:

N is not defined.
JavaScript Error: http://www.psychedance.com/test/read.cgi/tech/, line 36:

N is not defined.
   :
JavaScript Error: http://www.psychedance.com/test/read.cgi/tech/, line 52:

N is not defined.

Too many errors. No further JavaScript errors will be displayed for this page.
----------------------------------------------------------------------
って出てきましたけど......

あとTODO読みました munmap()入れてしまったのオレです スマソ......

462 :音楽侍 ◆NtVkSITE :01/08/30 21:22 ID:KsueBNwE
DolBackyさん、来てますよー>index.cgiスレッド
プロセス起動数が半端じゃなくなりそうだっておっしゃってます。

463 :デフォルトの名無しさん :01/08/30 21:23 ID:N/.0WZiw
また勘違いした。
謝罪しる>自分

>459
専用プロトコルがほしいね。

ABORN 99899784 2CH/0.1
12
23
45

464 :デフォルトの名無しさん :01/08/30 21:25 ID:N/.0WZiw
>458
IE6 でも同様。ヘッダ内で宣言していたJavaScriptを消したせいかと。
HEAD が閉じタグだけあるのは何故?

465 :デフォルトの名無しさん :01/08/30 21:26 ID:4UkPDjVY
IEだと、特に問題なく動いている感じ。

466 :デフォルトの名無しさん :01/08/30 21:29 ID:N/.0WZiw
read.cgi は 1- が 1-50 じゃなくて 1 だけになってます。

467 :♯6411 :01/08/30 21:30 ID:RSyGf5Ac
>>464
JavaScriptは、「あ、えら〜出てるなあ」と。
そのうち治るかな?
HEAD漏れは、漏れの掻き漏れ。スマソ

468 :デフォルトの名無しさん :01/08/30 21:31 ID:hlW8zoEo
gzdopenで、dup(1)は要りません。gzio.c内で1を特別扱いしてます。
atexitfunc() から呼ばれるhtml_errorでexit()呼ばれるのはまずいっす。
あっ、どなたか直してくれてますね。

-/* dup()しないとgzclose()でstdoutを閉じてしまうので */
-pStdout = gzdopen(dup(1), "wb9");
+/* 引数1はzlib/gzio.cで特別扱い 仮にstdoutを設定し、closeしない */
+pStdout = gzdopen(1,"wb9");

gzipped_fwriteをこんな風にすると汎用性と混乱度があがっていいかも。

/****************************************************************/
/* receive gzipped data from zlib/gzio.c */
/****************************************************************/
int gzipped_fwrite(char *buf, int n, int m, FILE *fp)
{
  int l = n*m;

  if ( fp != stdout ) return fwrite(buf,n,m,fp);
  if ( outlen+l > outalloc ) {

469 :デフォルトの名無しさん :01/08/30 21:35 ID:hlW8zoEo
atexitfunc()に
/* あちこちに散らばってたのでまとめてみた */
とかあるんですが、gzip_flag!=0のときしかatexitfunc()は設定されてません。

470 :♯6411 :01/08/30 21:36 ID:RSyGf5Ac
>>466 夕方行われた nofirst 対策の
副作用と思われ。

471 :音楽侍 ◆NtVkSITE :01/08/30 21:42 ID:KsueBNwE
index2.cgi開発者各位は、

index2.html など転送量削減案
http://piza2.2ch.net/test/read.cgi?bbs=tech&key=999097075


までお越しくださいませ。
DolBackyさんが導入検討中です〜

472 :名無し娘。 ◆vP.bOZFQ :01/08/30 21:47 ID:QPVBUxP6
すんません。
http://piza2.2ch.net/test/read.cgi?bbs=tech&key=999097075&st=21&to=21&nofirst=true
の通り、read.cgiが最上行に出力する「掲示板に戻る」が、現状では .html に
なっていますが、これを、gzip 対応のブラウザに対しては .htm にするよう、
お願いいたします。
gzip_flag が 1 か 2 のときに、R2CH_HTML_HEADER の引数を変えてやれば
いいのだと思います。

473 :|  - -) :01/08/30 21:57 ID:PugAduiM
>>472
done(多分)

474 :デフォルトの名無しさん :01/08/30 21:57 ID:Np0La3X.
>463
うん、HTTP自体を捨てられれば色々と楽なんだけど・・・・・
ってのは置いといて、>460見てきました、俺が考えてるのより遥かに高度だった。
ただログ形式から弄るとbbs.cgiを大幅に書き直す必要があるんで、時間が掛かりそう。

今すぐ実装しようと思うとread.cgiの対応だけでなんとかしたいんだけど、「あぼーん」
されるとdat上はどうなるんでしょう?
もし「あぼーん」をdat上で判別可能なら、read.cgiが単独で「あぼーん」されたレス番号
を検索してクライアントに送り返す事ができるんですが・・・・・
どっちみちレス番号1から全部クライアントに送信するのなら、CPU不可自体はそれほ
ど変化しないような気がするんですけど、どうでしょう?

475 :♯6411 :01/08/30 21:59 ID:RSyGf5Ac
>>474 read.cgi単体での
あぼーん検出は
ただいま実装検討中す。

476 :|  - -) :01/08/30 22:09 ID:PugAduiM
>>474
あぼーんはread.cgiで検出できるとして、透明あぼーんはどうするの...?

477 :デフォルトの名無しさん :01/08/30 22:14 ID:QRQ7bTkg
>>476
 今は全部のデータを読んで頭から改行の数を数えているから
 透明あぽーんの方がどっちかいうと処理し易いんじゃない

478 :デフォルトの名無しさん :01/08/30 22:17 ID:hlW8zoEo
>>468 マージしてちょ。

479 :デフォルトの名無しさん :01/08/30 22:20 ID:Np0La3X.
>475
了解です、既に検討中だったんですね、ちと恥ずかしい(´д`;)
read.cの1027行にあぼーん検索関数を割り込ませて、あぼーんレス
番号を表示させればいいのかな?

>476
透明あぼーんってクライアント側で実装してるんだと思ってたんだけど
read.cgiと関係あるの?
何か基本的なところで、俺は間違ってるのかも?(´д`;)

ふと気付いたんですが、cgi経由でdatを読むのなら、サイズとレス番号
が不一致でも問題ないような・・・・・

480 :♯6411 :01/08/30 22:21 ID:RSyGf5Ac
>>479 透明あぼーんは、
.datからエントリがごっそり消え失せるものと
認識してます。

481 :名無し娘。 ◆vP.bOZFQ :01/08/30 22:25 ID:QPVBUxP6
>>479-480
ええ、そのはずです>透明

専用ブラウザはdatの差分を採ります。
しかし、すでに専用ブラウザが取得済の部分であぼーんがおこった場合は、
差分だけ採ってもあぼーんがわからずじまいになりますし、透明あぼーん
だともっと悲しいことになるかも。
それを回避するために、サイズとレス番号。

482 :|  - -) :01/08/30 22:25 ID:PugAduiM
>>468
done.

>>469
とりあえずどんな場合でもatexit(atexitfunc());されるようにしてみました。

>>479
多分透明あぼーんはそのデータ1行が丸ごと削除されるものと思われ。

483 :デフォルトの名無しさん :01/08/30 22:29 ID:hlW8zoEo
>>482
さんくす

484 :デフォルトの名無しさん :01/08/30 22:35 ID:hlW8zoEo
>>482
1537行目のとこ、
fflush(stdout); close(1); っているのかしら?
waitpid()は if (gzip_flag) で括るべき。

if (gzip_flag) waitpid(pid, NULL, 0);

485 :デフォルトの名無しさん :01/08/30 22:38 ID:7PExlRw6
後始末無視さんせー。

readSettingFile()の最初を
  ・・・
  char *endp;
  struct stat st;
#ifdefUSE_MMAP
  void *mmptr;
  fstat(fd, &st);
  mmptr = mmap(NULL, st.st_size, PROT_READ, MAP_SHARED, fd, 0);
#else
  char mmptr[8192];
  st.st_size = read(fd, mmptr, sizeof(mmptr));
#endif
にして、
最後の #ifdef-#endif は、ばっさりカットしましょ。

それと、
zz_GetEnv()の
  localtime_r(&t_now, &tm_now);
を勝手にlocaltime()にしちゃってました。ごめんなさい(家で動かないんで)。

486 :さくーしゃ@マカー用。 :01/08/30 22:39 ID:i89NKQig
現在,RAWOUT って有効になってますか?

>>450 のURLでためしてみたんですけど,text/html でかえってきてるみたいなんです。。。?

487 :デフォルトの名無しさん :01/08/30 22:44 ID:Np0La3X.
>480-483
かちゅーしゃの透明あぼーんとゴッチャになってました。ご教授感謝です。
エントリごと消え去るんですね、ってことはスレ番号もズレるのか・・・・
read.cgi単独での検出は難しそう(汗

>481
問題を理解できました。
透明あぼーんが挟まると発言を取り漏らすってことですね。

488 :♯6411 :01/08/30 22:48 ID:RSyGf5Ac
>>458 のサンプル、見てくれをいじった。
さくっとやったので、ところどころおかしい
(それどころか根本的におかしい)けど、
いい感じではないかな?

>>486
rawoutって、運用で動いてなかったんじゃなかったっけ。
http://www.psychedance.com/test/read.cgi/tech/
こっちは最新版なので、よかったら検証してもらえます?

489 :|  - -) :01/08/30 22:55 ID:PugAduiM
>>484
gzipが終了するためには入力ストリームを閉じないといけません。
gzip_flagで囲むようにはしました。

>>485
done.

>>450
?raw だとだめです。
?raw=0.0 ならうまくいきます。
(仕様です)

490 :|  - -) :01/08/30 22:57 ID:PugAduiM
事故レス >>489
入力ストリーム → gzipの入力ストリーム
つまりread.cgi側の出力ストリームです

491 :♯6411 :01/08/30 22:57 ID:RSyGf5Ac
>>466
>>470
どうやらエンバグで、
現行形式でも仕様通りに動かないもよう。

492 :デフォルトの名無しさん :01/08/30 23:03 ID:hlW8zoEo
>>490 了解。確かにcloseせないけませんね。

493 :test :01/08/30 23:19 ID:HEIfwNwk
test

494 :♯6411 :01/08/30 23:35 ID:RSyGf5Ac
>>491 修正してみました > |  - -)

495 :|  - -) :01/08/30 23:42 ID:PugAduiM
>>494
ls=1のときはnofirst=true強制ですね。
それでいいと思います。

496 :デフォルトの名無しさん :01/08/30 23:47 ID:N/.0WZiw
to>st な場合の表示はどうするんですか?

こういう場合。
http://www.psychedance.com/test/read.cgi/tech/998921988/20-10

497 :♯6411 :01/08/30 23:48 ID:RSyGf5Ac
>>496 元の仕様でもよろしくなかったような
気がするんですが…救済した方がいいかしら?

498 :デフォルトの名無しさん :01/08/31 00:07 ID:pEodOMrQ
>497
言っておきながらなんですが、
今の仕様が一番サーバに優しそうなのでそのままで良いかも。

色々試すと面白い…
http://www.psychedance.com/test/read.cgi/tech/998921988/0-0
http://www.psychedance.com/test/read.cgi/tech/998921988/0-1
http://www.psychedance.com/test/read.cgi/tech/998921988/-5-1

499 :デフォルトの名無しさん :01/08/31 00:08 ID:pEodOMrQ
日付変わったせいで ID も変わってるけど 496=498。

500 :♯6411 :01/08/31 00:10 ID:WLvR5P8o
>>498 いろいろ試されると、
解析アルゴリズムがバレちゃうね。

とはいってもソース公開されてるし(w

501 :デフォルトの名無しさん :01/08/31 00:15 ID:PS9zdCQg
今の状況じゃ、転送量にやさしければ、なんでもいいでしょ。

502 :♯6411 :01/08/31 00:46 ID:WLvR5P8o
新仕様
>>数字 のレスリンクの、リンクさせ方を変更。
chunk単位で取りにいくようになります。
キャッシュ効率の向上が期待…できるといいな。

503 :名無しさん :01/08/31 01:44 ID:1YfH/xHU
>>489
> >>450
> ?raw だとだめです。
> ?raw=0.0 ならうまくいきます。

試してみたんですがうまくいきませんです…

504 :デフォルトの名無しさん :01/08/31 01:47 ID:MkV83E8o
URLの自動リンクを無効にするというのは既出ですか?

505 :デフォルトの名無しさん :01/08/31 01:54 ID:HfubHdvY
read.cgiが吐き出すデータの先頭2kbがスペースというのは既出ですか?

506 :デフォルトの名無しさん :01/08/31 01:56 ID:6a8y9j3k
>>505
gzip転送の定説です。
つーかIE4が悪いのか IE5以上でも起きるの?

507 :|  - -) :01/08/31 01:58 ID:W1MB8EFM
>>503
えーっと、現在のバージョン(5.10)には入っていません。
http://www.psychedance.com/test/read.cgi/tech/998921988/?raw=0.0
で試してみてください。

508 :♯6411 :01/08/31 01:59 ID:DT2vnGqI
>>504 がいしゅつなんだけど、結論は
どうなったか忘れた。条件に応じて
削る(というよりはリンクしない)ことは、
やろうとおもえばすぐできるけど。

>>505 稼働中のバージョンではやむを得ず
そうなってる。実際のところ、転送量は
10数バイトしか増えてない。
最新バージョンではすでにスペースを吐かなく
なっている。

509 :名無し娘。 ◆vP.bOZFQ :01/08/31 02:00 ID:s8ksSf.2
>>489
ぺこぺこ
>>506
うちのIE5だとだいじょうぶ
>>507
うまくいったです

510 :♯6411 :01/08/31 02:03 ID:DT2vnGqI
>>506 IE5.5でも起きる。
バグなのか正しい仕様なのかつかみ切れていないけど、
Transfer-Encoding: chunked
Content-Encoding: gzip
Content-Length: ナシ
のときに、展開したストリームの頭2048バイトを
きっかり無視する…

511 :♯6411 :01/08/31 02:04 ID:DT2vnGqI
>>509 う、漏れの手元で見たヘッダ欠けは
幻だったのか…鬱だ

512 :デフォルトの名無しさん :01/08/31 02:15 ID:PS9zdCQg
index2.cgiがあったら、掲示板に戻るをindex2.cgiを呼ぶようにする。

html_head()で、

char fname[1024];

sprintf(fname, "../%.256s/index2.cgi", zz_bs);
if ( access(fname,S_IXUSR) == -1 )
 pPrintf(pStdout,
  R2CH_HTML_HEADER_1("%s", "/%s/index2.htm%s"),
  title, zz_bs, gzip_flag ? "" : "l");
else
 pPrintf(pStdout,
  R2CH_HTML_HEADER_1("%s", "/%s/index2.cgi"),
  title, zz_bs);

あと、1758行目 dat_out(); だけど dat_out(0); じゃない?

513 :506 :01/08/31 02:16 ID:6a8y9j3k
>>510
mod_gzipはどうやってるのかのう。
ちょっと調べてみよう。

514 :♯6411 :01/08/31 02:20 ID:DT2vnGqI
>>513 T-E: chunkedを吐かない、のが大きな違いのようだ

515 :VC++まだ箱のなか厨房(w :01/08/31 02:26 ID:OWdgxIS.
ちょこっと書いておきますと

 2ちゃん専用ツール側での削除は「あぼ〜ん」で
 2ちゃんねる上での削除は「あぼーん」です。

この2つを使い分けるといいかもしれません、、です

516 :名無し娘。 ◆vP.bOZFQ :01/08/31 02:29 ID:s8ksSf.2
>>509-511 M$ですから、夢も幻もいっぱいあるでしょう(^^;
>>514 ソース読んだ限りでは、特別なことはそれしかやっていないようで。
>>515 知らなかった。。。

517 :506 :01/08/31 02:31 ID:6a8y9j3k
>>514
mod_gzip.cみました。
そのようです。
失礼しますた。

518 :デフォルトの名無しさん :01/08/31 02:40 ID:PS9zdCQg
>>511
幻じゃないかも。
動的生成gifをgzipで送ってたら、表示できないWIN2000上のIE5とIE5.5が
あった。
最初は表示されていたが、なにかの拍子で駄目になり、IE5→IE5.5で直らず
OSインストールしなおして直ったが、また駄目になったとか聞いた。

519 :デフォルトの名無しさん :01/08/31 02:52 ID:BJK6ay72
ftp://210.170.170.118/incoming/bmem/bmem.c
っていうのでちょっと実験してみたんだけど(IA Solaris8)

bmem@test:~/tmp[479]% time bmem mmap
0.35u 1.78s 0:02.10 101.4%
bmem@test:~/tmp[480]% time bmem mmap.pri
0.37u 1.81s 0:02.15 101.3%
bmem@test:~/tmp[481]% time bmem mmap.pri.wri
0.52u 5.73s 0:06.21 100.6%
bmem@test:~/tmp[482]% time bmem read
0.23u 3.80s 0:03.99 101.0%
bmem@test:~/tmp[483]% time bmem fread
3.20u 4.09s 0:07.26 100.4%

確か.datをmmap()で読む時はMAP_PRIVATEにして BigBufferに書き込み
してたよね? これだと上記の"mmap.pri.wri"のケースに該当するんだけど
......どうしましょ? プラットフォームによっては違う結果になる?

520 :|  - -) :01/08/31 03:00 ID:W1MB8EFM
bash-2.03$ uname -sr
Linux 2.4.9
bash-2.03$ for i in mmap mmap.pri mmap.pri.wri read fread ; do echo -n $i; time
./a.out $i; echo; done
mmap
real 0m1.272s
user 0m0.230s
sys 0m1.020s

mmap.pri
real 0m1.237s
user 0m0.220s
sys 0m1.020s

mmap.pri.wri
real 0m2.454s
user 0m0.250s
sys 0m1.960s

read
real 0m6.346s
user 0m0.340s
sys 0m6.000s

fread
real 0m10.448s
user 0m1.950s
sys 0m8.490s

521 :|  - -) :01/08/31 03:03 ID:W1MB8EFM
...というわけでたぶんプラットフォーム依存かと。

522 :♯6411 :01/08/31 03:05 ID:DT2vnGqI
>>519 検証せずにしゃべってるので突っ込み大歓迎♪

MAP_PRIVATEのときは、commitも
含むんだとおもう。なので mmap.pri の結果は順当かと。
で、そこに書き殴ったときは、カーネル内部で
・ページフォルト
・ページのコピー
がページ境界をまたぐたびに発生するんで、
オーバーヘッドはまぬがれない。
以上はイパーン論。

今回のケースでは、以下の前提があると思われ。
・ターゲットファイルはページキャッシュにある
 ことが多いと期待される。
・実際書き殴ってるのは、ケツの1ページだけ。
なので、read()でバッファに読み込むより
いくぶんか効率的なのでは…と思ったら、
dat_read()以外の部分でBigBuffer書き殴って
たりしないっけ? あれ? あれれ? あれれのれ?

書かないという前提があれば、readonly, sharedで
いいんだよねー。

レポートさんくすです。
ちなみにターゲットはLinux.

523 :デフォルトの名無しさん :01/08/31 03:07 ID:PS9zdCQg
無意味だけど一応 FreeBSD4.2

time ./bmem mmap
0.148u 2.207s 0:02.35 99.5% 10+191k 0+0io 0pf+0w
time ./bmem mmap.pri
0.257u 1.979s 0:02.23 99.5% 10+191k 0+0io 0pf+0w
time ./bmem mmap.pri.wri
0.351u 3.841s 0:04.29 97.6% 10+192k 0+0io 0pf+0w
time ./bmem read
0.357u 2.525s 0:02.90 98.9% 12+210k 0+0io 0pf+0w
time ./bmem fread
1.531u 4.327s 0:05.91 98.9% 10+215k 0+0io 0pf+0w

524 :♯6411 :01/08/31 03:07 ID:DT2vnGqI
>>520 早速レポートいただけるとはさすが。
参考になるす。tnx.

525 :デフォルトの名無しさん :01/08/31 03:11 ID:PS9zdCQg
そういえば、ターゲットのカーネルのバージョンはいくつかな。
サーバー導入時期で違ってたりして。

526 :デフォルトの名無しさん :01/08/31 03:17 ID:0V6W10r6
>>525
ttp://www.maido3.com/server/usagi/news.html
には Linux2.2.19 Slackware って書かれてますね

527 :506 :01/08/31 03:21 ID:6a8y9j3k
>>518 う gifを生成しとるので夢の話という事ですよね。

content encoding gzip RFCひっくり返して見たが
やはりMSのヒトリヨガリの仕様のようだちなみにMSDNにも
ロクな事は乗ってなかった

糞MSのトップページみたらMSIE6が出てて鬱になった。

528 :518 :01/08/31 03:28 ID:PS9zdCQg
いえ、無圧縮GIFをgzip通して送出してたら、表示できないIE5があったんです。

529 :デフォルトの名無しさん :01/08/31 03:31 ID:pEodOMrQ
ところで、2048 バイト欠ける理由は分かったの?

530 :506 :01/08/31 03:36 ID:6a8y9j3k

>>529
2048欠けるのはMSIEの単純なバグ。

531 :デフォルトの名無しさん :01/08/31 03:39 ID:pEodOMrQ
もしそうなら IE6 でも直ってないのだけれど。やる気ないな。
どこかにこの件に関するバグレポートないのか。

532 :デフォルトの名無しさん :01/08/31 03:42 ID:PS9zdCQg
>>518 のような例があるので、単純なバグじゃないのかも。

533 :506 :01/08/31 03:54 ID:6a8y9j3k
他にも Windows2000 とかでも
accept encoding "gzip" が 「無い」 MSIEがあるようです。
OSごと入れなおすと直ったらしい 藁

>>531 MSあさりました RFC詠んだ mod_gzip.c読んだ 吐き気がする程に。結論は無かった
けどgzipで2048の空白なんざ数バイトになるので、あまり問題に
しないほうがいい。
なので 消防の自分は寝るよ。

534 :デフォルトの名無しさん :01/08/31 03:58 ID:PS9zdCQg
>>533
OS入れなおさないと直らないってところが(藁
IE再インストやverUPでなぜか直んないんだよね〜。

535 :デフォルトの名無しさん :01/08/31 03:59 ID:pEodOMrQ
>533
お疲れ様です…
自分も google しまくったけど手かがりなし。
原因が解明できないのは精神衛生的に良くないが、時間の無駄みたいだ。

536 :デフォルトの名無しさん :01/08/31 04:03 ID:PS9zdCQg
一応
http://teri.2ch.net/test/read.cgi?bbs=accuse&key=999151333&st=822&to=825&nofirst=true

537 :音楽侍 ◆NtVkSITE :01/08/31 04:12 ID:Ha76ETsk
いま、どこかにmake一発で動くread.cgiって保存されていますでしょうか?
公開版は一ヶ所別に置くとか、gzipになってるとか。。。

538 :名無し娘。 ◆vP.bOZFQ :01/08/31 04:16 ID:s8ksSf.2
>>537
http://www.gedoh.org/aki/2ch/current/bbs/
これじゃだめ?

539 :音楽侍 ◆NtVkSITE :01/08/31 04:24 ID:Ha76ETsk
>>538
やってみます〜

540 :デフォルトの名無しさん :01/08/31 04:29 ID:PS9zdCQg
Makefileに追加して、一括ファイル作りましょうよ。
http://www.gedoh.org/aki/2ch/current/bbs/
でcvs更新後に実行してくれるとうれしいな。

最低限必要なのは、下記

dist:
 tar cf - *.[ch] Makefile zlib/*.[ch] zlib/configure zlib/Makefile.in | gzip -9 > read.tgz

541 :音楽侍 ◆NtVkSITE :01/08/31 04:40 ID:Ha76ETsk
>>538
出来ました〜ありがとです。

>>540
ビルドごとにアーカイブして隔離していただいた方が安全です〜

542 :デフォルトの名無しさん :01/08/31 04:44 ID:Rl8iN43I
>>541
そのへんは cvs の tag に活躍させてもいいのでは?

543 :音楽侍 ◆NtVkSITE :01/08/31 04:59 ID:Ha76ETsk
>>542
私はコーディングには参加しない(動作確認とチェックだけ)ですので、CVSだと状況を追い切れません。
スレを追っての現状認識では、どれがカレントで、どれが評価版で、どれが最新か、という判断するのに時間がかかりすぎますです・・・

544 :デフォルトの名無しさん :01/08/31 05:09 ID:Rl8iN43I
>>543
だからこそ cvs の tag や branch を利用してみてはってことなのですが…。

545 :♯6411 :01/08/31 05:11 ID:DT2vnGqI
>>543
ブランチ切ってないので、
最新版 == current と捉えてくだちい。
機能評価などは、ヘッダなどでcondition outしてから
cvsのcommit logに書く、というのが一般的。

なので、何が行われたかは、cvs logで見るべし。
(どこかにcvswebのURL書いてあるでしょ?)

546 :デフォルトの名無しさん :01/08/31 05:11 ID:6a8y9j3k
#6411はもう寝たのかな。

547 :デフォルトの名無しさん :01/08/31 05:45 ID:PS9zdCQg
掲示板に戻るはindex2.cgiがあったら呼ぶようにしました。
MakefileにSRCSとdistターゲットを加えました。

548 :aki :01/08/31 07:14 ID:N9m3H/y.
>>547
gedoh.org のミラーで cvs up したタイミングで
make dist するように仕掛けてみました。

でもって、tag とか branch は自由にきっちゃってください。
夜勤さんや$さんが取り込んだ版にtag切っておくといいかも。

549 :aki :01/08/31 07:17 ID:N9m3H/y.
でもって、レポジトリ内容はここでみれます。
http://2ch.uryusoft.net

550 :aborn ◆OonrVZq6 :01/08/31 07:32 ID:6m29/Im2
遅いかもしれないが…
>>533-535
インターネットオプションの詳細設定で「(プロキシ接続で)HTTP 1.1を使用する」にチェックを入れないと、
Accept-Encoding に gzip は出てきません。それのことでは。

551 :デフォルトの名無しさん :01/08/31 07:38 ID:PS9zdCQg
distのやり方間違ってて、毎回read.tgz作ってました。
直しました。

552 :デフォルトの名無しさん :01/08/31 07:57 ID:PS9zdCQg
あれ?まだ、毎回作ってる。
どおして〜?

553 :デフォルトの名無しさん :01/08/31 16:47 ID:vhMKUI7c
ハックですか?

>トップ見ろよ
http://www.2ch.net/

554 :デフォルトの名無しさん :01/08/31 17:02 ID:TsVa1PVU
ネタでしょう。
本気で売るなら、ネットオークションなんかには出品しませんよ。
荒らされるの必至。つか、もう荒らされてるし(w

555 :名無し娘。 ◆vP.bOZFQ :01/08/31 18:10 ID:0C9lj0zQ
こんなはなしも。
http://piza2.2ch.net/test/read.cgi?bbs=tech&key=981726544&st=856

556 :デフォルトの名無しさん :01/08/31 19:20 ID:BJK6ay72
結局オークションはひろゆきのジサクジエンデシタ
でもこういうことされたから bzip2実装してやろうと思ってきた(w

557 :デフォルトの名無しさん :01/08/31 21:31 ID:gWobhVmY
なんかcvs重いな

558 :♯6411 :01/08/31 21:36 ID:WLvR5P8o
アタック受けて氏んだかと思った(w

559 :デフォルトの名無しさん :01/08/31 22:21 ID:xu.zymnM
どこまでがネタなのかわからんな…。

そんな状況で発言するのもなんか馬鹿馬鹿しいのだが…
ページ最下部に、リロード用のリンクつくるってのはどうだろう。
st=(最新の番号-10)とかそんな感じので。
ls=100とかのままリロードしてる人間が結構いると思うので、
これって転送量結構減らせるような気がするんだけど。

って、これ、スレ違いかな?
ガイシュツだったらスマソ。

560 :|  - -) :01/08/31 22:26 ID:W1MB8EFM
>>559
-DRELOADLINKですな。実装済みです。

561 :デフォルトの名無しさん :01/08/31 22:56 ID:KHrRCh/w
http://www.psychedance.com/test/read.cgi?bbs=tech&key=998997848
Internal Server Error
http://www.psychedance.com/test/read.cgi?bbs=tech&key=998997848&ls=10
だと大丈夫。

index関係のスレでがいしゅつかな?
http://www.psychedance.com/test/read.cgi/tech/,
で、[全レス][最新50]のリンクが全部一緒(しかもbbs=hp)

562 :デフォルトの名無しさん :01/08/31 22:58 ID:xu.zymnM
ごめん。

563 :|  - -) :01/08/31 23:05 ID:W1MB8EFM
>>561
http://www.psychedance.com/test/read.cgi?bbs=tech&key=998997848&raw=0.0
もうまくいきません(500エラー)

564 :♯6411 :01/08/31 23:09 ID:WLvR5P8o
>>561 ときどきPremature end of scriptが
出るっぽいんだけど、漏れが連打した限りでは
なかなか出ない。

スレダイジェストのアンカーが不完全なのは、
まだ実装してないからです…

565 :デフォルトの名無しさん :01/08/31 23:23 ID:PuIIKuzw
とりあえず、
BigBufferをread-onlyにする変更をしてみた。
(>>560の分に対して)
URLリンク等もressplitter_splitに入れ、
BigLineが\nで終了(要はつながったまま)する形式になる。
全体をスキャンする回数はかなり減るはず。

またエンバグが怖いので、どなたかテスト&mergeをお願い。
ftp://210.170.170.118/incoming/2ch-read-current/read14.2.9.c

566 :デフォルトの名無しさん :01/08/31 23:26 ID:PuIIKuzw
あ、全て-DCUTRESLINK時のみ有効です。
mmap()をREADONLYにはしていません。

567 :565 :01/08/31 23:26 ID:PuIIKuzw
名前とメールを間違えた・・

568 :デフォルトの名無しさん :01/08/31 23:28 ID:MkV83E8o
そういえばいつの間にかかちゅ〜しゃ規制が外れてるらしいですが、
gzip対応なわけでもないのに規制を外して大丈夫なんでしょうか?

569 :♯6411 :01/08/31 23:29 ID:WLvR5P8o
>>563 これだと確実に出ますねえ。
ちょっと追っかけてみるっす。

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

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レスを読む」ボタンつけるのととどっちがいいんだろ。

688 :デフォルトの名無しさん :01/09/04 01:53 ID:1lIywugU
「掲示板にもどる」を修正。
index2.cgiチェックは標準からはずした。
index2.htm[l]は使われなくなるようなので、index.htm[l]に変えた。
SERVER_SOFTWAREにmod_gzipがあったら、index.htm[l]も出さないようにした。

689 :デフォルトの名無しさん :01/09/04 08:03 ID:b.YsqqHc
-DUSE_PATHや-DGZIPって、外すとコンパイルすらできないね。

690 :デフォルトの名無しさん :01/09/04 11:09 ID:1lIywugU
>>689
GZIPとZLIBなしでのコンパイルは、>>688で直してある。

691 :♯6411 :01/09/04 14:01 ID:h7Jd1mr6
>>689 外してコンパイルの
テストはほとんどしてなかったろで(スマソ

ただ、自分が掻いた部分に関しては、
path_depth == 0 のときは
従来の動作を行うように
心がけてたんだけど…ここ2日くらいの
変更についてってない(鬱

692 :デフォルトの名無しさん :01/09/04 14:06 ID:EcqU4D62
USE_PATH未定義でコンパイルできるようにして
rewrite_href2をrewrite_hrefに取り込んでみた。

693 :♯6411 :01/09/04 14:44 ID:.iUWuuDs
>>692 新バージョン見まスた。
お手数おかけしまスた。

694 :デフォルトの名無しさん :01/09/04 15:50 ID:s4.H7M7U
やっぱりそろそろ不要な#ifdefを整理したほうがいいような。

695 :♯6411 :01/09/04 16:09 ID:.iUWuuDs
>>694 ちなみにウチのプロジェクトだったら、
ひととおりチェックして機能的に採用されそうなものは
条件を取り払ってしまう、というポリシーっす。
今回は誰がプロジェクトマスターというわけでも
ないからねえ(w

696 :♯6411 :01/09/04 16:35 ID:.iUWuuDs
index仕様をcommitした。
殺してあるので、実験したい場合は以下に。

・#define USE_INDEX
・mkdir board/dat/idx

これ主体に書き換えることができれば、
BigBuffer, BigLineを置き換えていくことになろう。

697 :♯6411 :01/09/04 16:39 ID:.iUWuuDs
>>696 linuxでは動いているが
freebsdでは動いてないっぽ…鬱

698 :デフォルトの名無しさん :01/09/04 16:51 ID:EcqU4D62
>>696
read.c
> /* XXX これはウソ、Expires: は、
> 現在時間を基準にすべきである */
ローカル時計じゃなくてDateヘッダ(サーバ時間)基準だってば。

699 :デフォルトの名無しさん :01/09/04 16:52 ID:EcqU4D62
>>698
ってread.cgiはそのサーバで実行してるから同じことか (鬱

700 :♯6411 :01/09/04 17:09 ID:.iUWuuDs
>>697 単にサイケどっと混むのパーミションの
問題だった(鬱

>>698 おいしいつっこみありがとう。
これで二人とも鬱だ氏のう

701 :デフォルトの名無しさん :01/09/05 13:47 ID:Il0l9chs
CFLAGSに"-march=i686"って入れても大丈夫かな?

あと実運用のではLDFLAGSに"-s"って入れた方がバイナリサイズが小さくなる
ので その分CGI呼び出しでの負荷が軽くなる......かな?

702 :♯6411 :01/09/05 14:50 ID:2LugT.hk
>>701 ld -s でやってるわけじゃないけど
make strip ってのが用意されてる。

703 : :01/09/05 21:26 ID:ZOwDxD/w
read.cgi ver5.12 (01/9/5)

704 :♯6411 :01/09/05 21:31 ID:zceo8xV2
>>703 まだまだだねー

漏れは別の仕事が入ったので、休憩中。

705 :デフォルトの名無しさん :01/09/05 21:32 ID:F4TkSYjU
>>703
これってcvsのソース持ってってくれてるのかなあ?

706 :デフォルトの名無しさん :01/09/05 21:48 ID:F4TkSYjU
>>705
されてなさげか

707 :デフォルトの名無しさん :01/09/05 21:52 ID:d3E9QeVc
ここの成果を参考にしつつ、夜勤さんが管理しているソースを夜勤さん自身が
メンテしているのだろうね。トラブルも怖いし転送量削減に関係ない部分の
アグレッシブな変更はやはりちょっと手を出しづらいのであろう。

708 :名無し :01/09/06 00:31 ID:4dWQq6IU
sage でやってると夜勤さんは気付かないらしい。
みんなから、もう忘れ去られてるし。

709 :辛口 :01/09/06 00:56 ID:TLbpbvsU
俺だけかもしれないけど、新しいおもちゃを買ってもらった子供の気分だったね。

read.cgiに新機能なんか要るわけない。
何か別な機能が必要になれば、別途用意すればいい。
余計な機能は邪魔。

便利になるようにするのはいい。
ただ、それがピーク転送量や負荷に影響する可能性があれば
簡単に時間帯制限を設けたり、機能を外したりできるようにしておくべき。
(ほとんど影響しないならば、是非取り入れるべき)

とは言っても、決めるのはここにいる誰かではなく、
夜勤さんであり、ひろゆきである。
特にread.cgiには夜勤さんの決定が最重視されるだろう。
もちろん好き嫌いで決めるのではなく、いろいろ試し、
転送量や負荷を調べ、結果を見て判断するだろう。

ただ、現状のシステムを変化させる必要があるような機能は
夜勤さんはおそらく取り入れない(変更できない)。
現状に合わせて、その中で最善な機能を選択すると思われる。

read.cgiに求められるのは、ピーク時の転送量と負荷の削減。
忘れられかけているが、転送量問題が表面化するまでは、
サーバー負荷が最大の懸案だった。
特殊機能があっても使わなければ同じとは言っても、
ここ(2ch)は、他の人や組織から悪意を持って攻撃される事もある(あった)。
負荷が増える可能性も全て消しておかなければならない。
復帰作業が、スクリプト名を公開せず、
サーバーや時間帯によって厳しく決め事を設けているのを考えればわかるだろう。
便利な機能でも、負荷がかかるようならおそらく外される。

index.htm[l]から"投稿日"が消え、レスから曜日も省かれているのに、
read.cgiは投稿日を非表示にするオプションも(まだ)ない。
文字通り「1バイトを削る」という作業を行っているのに、
常時全レスにアンカーを設定する事に、夜勤さんは同意するだろうか。
natto等に導入されていたread.cgi Ver4.23には、
読みこみdatの最大値を時間帯によって変動させていた。
(もちろん、サーバーの負荷を考慮して。実際、bbspinkの最大値が変更された)
こんなオプションも(まだ)ない。
こういった基本的な点をもう一度重視して、
安定化を図るべきではなかろうか。

で、良さそうと思えるバージョンが安定したら、
そこで簡単なオプション説明でもつけて夜勤さんに推薦するといいのでは?
ここでずっと続けているから、夜勤さんも安定していないと考えて
取り入れないのかもしれない。

710 :♯6411 :01/09/06 01:00 ID:ae./7xbU
>>709 「新しいおもちゃ」の部分は禿胴。

711 :  :01/09/06 04:01 ID:IAYQ/SXs
楽しげな新機能を思いつきました。
新規ログ10件表示にして、表示順を逆にして新しいレスを上に表示する
書き込み後再び、この10件表示にすれば、チャットモードの完成。

実況スレがさらに活発化!(あかんやん・・。)
このモードでは、無駄な部分は徹底的に削って超簡易表示モード
日付も時間も表示する必要は無い。
一行レスが乱れ飛ぶ事必死!(笑)

712 :デフォルトの名無しさん :01/09/06 08:22 ID:0iK.UQWw
>>709
同意

「こんなん作ってみました」じゃなくって、「ここをこう変更するだけで
○○の低下は××程度に抑えたまま転送量をここまで削減することができます」
という具体的な数字を挙げながら説明をして、変更のリスクに見合うだけの効果が
確実と説得できないと採用されないと思うよ。
#リーマンなら当然分かると思うが。

だからここで30個アイディアが出てそれをこのスレのバージョンですべて採用しても
本番環境では29個ボツになるかもしれない。

それを分かった上でいろいろ試すのはいいんじゃないかと思うけど。
このスレももはや直接的な実装よりも、そういう斬新なアイデアが
出てこないかという部分で期待されてるんだろうし。

713 :デフォルトの名無しさん :01/09/06 08:36 ID:x54XUUQc
更新日:とか年の上2桁、曜日の削除って、圧縮かからないときにしか
ほとんど効果ないよな。
圧縮かけられないリクエストって全体のどれぐらいなのかな。

714 :デフォルトの名無しさん :01/09/06 12:57 ID:iopuCCXI
現在がサーバ負荷よりも転送量に重大な問題があるなら、
指定した板の指定したレスの生データを吐き出すCGIを
用意してくれないかな。

monazillaで利用されて少しは転送量軽減の足しになるのではあるまいか。

715 :♯6411 :01/09/06 13:02 ID:EWT7f5cU
正直、採用されない(採用されたがらない?)コードを
いじくりまわしてるのは、モチベーションが下がる一方で。

いろいろ問題提起もあったんで、もしこの
プロジェクトを続けるんなら、仕切り直しもしたい。

「誰でも気楽に改造を施すことができる」
「評価とかレビューのプロセスが欠落している」
などが、漏れ的には大きな問題になってると
考える。後者は、モチベーションが上がんないと
誰もレビュー買って出ない、というのもあるけど。

また、プロジェクトマスターに相当する人間が
いなかったので、実装の方向性が固まってなかった
とゆーのもある。漏れが突っ走りすぎたのも、
単に歯止めが利かなかっただけ(w

漏れ的には、「バイト数低減と転送量低減のバランス」
「ローカルキャッシュおよびキャッシュサーバへの
キャッシング効率」「実装の軽量化」「潜在バグの追放」
を睨んであれこれ手を出してた。
あ、あと、「オナーニ」「換骨奪胎」もだな(w

ちうわけで、もうしばらくは、唯一コテハン晒して
生き残ってる漏れが、取りまとめ役に回っても
構わんのだが、どーよ?

実際の実装にまつわるギロンはまた後ほど。

716 :♯6411 :01/09/06 13:48 ID:TE3IkoNg
>>709 一点だけ。

> index.htm[l]から"投稿日"が消え、レスから曜日も省かれているのに、
> read.cgiは投稿日を非表示にするオプションも(まだ)ない。
> 文字通り「1バイトを削る」という作業を行っているのに、
> 常時全レスにアンカーを設定する事に、夜勤さんは同意するだろうか。

夜勤さんが同意するかどうかは置いといて。
投稿日を非表示にするか否かに関して、
ここでは「全部削れ」という意見は出なかったので
誰もその方面に手を着けなかった、と考えるべき。
むしろ、「曜日は復活させてほしい」という意見の
方が多かったと感じてる。(俺もそう思う)
ちなみに、現在の仕様だと、内部で投稿日を
解釈してるので、(曜日の表示を含め)日付フォーマットを
自在にいじるのは簡単。

あ、「投稿日」という文字列を削る話?
ぞぬで見てたから気づかなかった。

あと、アンカーの件は俺の改造を指してると思われ。
俺的な考えでは、局所的に見たらバイト数の増加に
繋がれど、大局的に見たらリクエスト数の軽減に
繋がるのでは? と考えて試験的に導入。
この手の仕様に関しては、いくら思考実験を繰り返しても
結局のところ実地テストなしには最終的な評価が
出せないと思うが、いかが?

path仕様でない箇所で<A name=x>を出してるのは
俺の手落ち。機会があったら禁止しとくっす。

個人的な意見では、1バイトでも削る作業より
他にすることはまだある。

最終的に判断するのは夜勤さんであり、ひろゆきさんで
あるという事実には同意。ただ、キャップが誰も
意見を言ってくれない(放置?)以上、その手前の
レベルでとりまとめを行う人間は必要。

717 :♯6411 :01/09/06 14:04 ID:.R/e0Ey.
>>712 今後検討する仕様に関しては、
効果予測の文と一緒に提案することにするっす。

ただ、リーマン稼業と違い、
「とりあえず実装してみた、評価頼む」は
大いにありなのだと考える。
以前ウニクース板見てた連中に、ここがなんて言われてたか
覚えてる? 「理論ばかりで実装が遅れてる」(←揚げ足歓迎)
なので、漏れはまず実装して、それをたたき台にしたい
と考えた。結果的には、安定版がつくれないので、
ちょっとマズい方針だったんだが。

というわけで、「新機能実装ブランチ」を「バグ取り安定」から
分けないと、作業がしにくいなあ、と昨夜思った。

ちなみに漏れも、いわゆるリーサラだけど、
クライアントに提案して尻込みされた例は数知れず。
説得して採用させたことも多いけどね。

718 :デフォルトの名無しさん :01/09/06 19:19 ID:nYC88wV.
自己満足でやりたいなら、勝手にやってれば?

719 :名無し娘。 ◆vP.bOZFQ :01/09/06 23:23
>>716
おそらく「投稿日」という語句そのものを削る話だと思います。

>>717
>「とりあえず実装してみた、評価頼む」は
>大いにありなのだと考える。
それは同感なのですが、評価対象がふくらみすぎて、しかも、どこで
defineなりをすればどこがどう変わるのか、途中からさっぱり不明に
なってしまったと感じています。#ifdef の字面と内容が噛み合わない
部分さえ出てきた始末で。
評価してもらうのに最良の方法は、私は結局、全設定を外部ファイルによって
動的変更可能にすることだと思います。
そのこと自体が負荷増を伴うのは確かですが、それなら評価が終わって正式
採用の決まった設定から順に、再び内部定義に切り替えればいいのですし。

もし今後も続けるのでしたら、現行read.cgi(ver5.12/ver5.0x)に対し、
新たな選択肢を提起する形で、もう一度実装をし直す必要があるように
感じます。

720 :音楽侍 ◆NtVkSITE :01/09/07 00:08
火急的な課題がなくなったんだったら、そして、今後も改良作業を続けるのだったら、read.cの変更を出来る人を決めるだけでだいぶ違うと思うです。
read.cn変更権にパーミッションかけるだけで、だいぶ作業が効率化すると思います。

今までは時間に追われてましたけど、これからは効率化だけ見ていくべきだと思います。
あと、「こういう機能はいかがですか?」と、夜勤さんなどに確認をとるというのがもっとも効率的だと思います。
これまでの経緯から、私は名無し娘。さんがリーダーになるのが良いのでは?と思います。

721 :名無し娘。 ◆vP.bOZFQ :01/09/07 00:16
>>720
私は、いわゆる「プログラムは読めるけど書けない」人種ですので、ご勘弁を。
#6411さんのようなしっかりとしたコーディングをなされる方が仕切らないと
何もできないlevelに達していると感じます。

722 :デフォルトの名無しさん :01/09/07 00:26

u


723 :(゚Д゚)ハァ?スレ発起人@批判要望板 :01/09/07 00:29
はじめましてー
詳しく read.c のソースは読んでないのですが

/* SJIS1バイト目=<br>タグ直前の空白が削除可かを適当に判定 */

IE等では>>722のようなことになるので,
datファイルの<br>前の空白だけでなく,
datファイルの各行末にある<>前の空白も
削除可能かどうか判定されると完璧ではないかと思います.

724 :♯6411 :01/09/07 00:32
>>720
> 今までは時間に追われてましたけど、これからは効率化だけ見ていくべきだと思います。
同意。内部的には、効率化・安全化を進める
べきなんでは〜と。
漏れのコードは安全化より重要な「自己満足化」が多いのだが(w

> あと、「こういう機能はいかがですか?」と、夜勤さんなどに確認をとるというのがもっとも効率的だと思います。
漏れは夜勤さんハァハァではないので追いかけ切れんす。
どなたか、この点のフォローをしていただければ。

>>721
「読める」人間こそ、取りまとめに必要ではないかな?
漏れは「掻けるけど嫁ない」人間なので(w

さしあたっては、ブランチを設けることを提案。

725 :709 :01/09/07 00:54
反論は煽り系のキャラで逝ってみる

>>716
>あ、「投稿日」という文字列を削る話?
>ぞぬで見てたから気づかなかった。
関連スレや意見を読んだりすれば、
どういう状態になっているか、板を開いてみる程度はするのが普通。
現状を認識しようとする意志が全くないわけね。
現状を把握せずに機能を提案できるなんて、すばらしい。

>俺的な考えでは、局所的に見たらバイト数の増加に
>繋がれど、大局的に見たらリクエスト数の軽減に
>繋がるのでは? と考えて試験的に導入。
試験的に導入した割に、完全に書き換えてしまうわけね。
戻せるとはいえ。「俺的な考え」を基に。
で、コンパイルが通らなくなったりしても、
尻拭いは後回しにして、結局他の人がすることになるわけだ。

>この手の仕様に関しては、いくら思考実験を繰り返しても
>結局のところ実地テストなしには最終的な評価が
>出せないと思うが、いかが?
その通り。だから?
簡単にテストができるようにしておけばいいものを、
まるで仕様が確定したかのように扱うのはどうかと思うが、いかが?

>>717
>個人的な意見では、1バイトでも削る作業より
>他にすることはまだある。
個人的な意見なんでしょ。他人に押し付けないでよね。
ま、ある程度は同意するけど。
そもそも「1バイトを削る」自体が夜勤さんの言葉からの引用だけど、
それも読んでないんだろうね。

>「とりあえず実装してみた、評価頼む」は
>大いにありなのだと考える。
その通りだね。
普通は評価前に仕様確定するようなやり方はしないけどね。

726 :709 :01/09/07 00:54
あ、俺はリーダーに最も適任なのは夜勤さんだけど、忙しいだろうし
それ以外では名無し娘。 ◆vP.bOZFQさんが適任だと思うね。
関連スレのチェックもしているし、重視すべき事項を一番わかっていると思う。
直接コーディングなんかできなくても、
機能追加の方向性やスケジュール等を把握して示してくれれば充分。
以前から、要望やらをまとめたりしてくれてたしね。

既に実装済みの機能や不具合の修正もいくつもあるのに、
(zlib等の他にも、ぱっと見で>>687とか>>559とか。>>606は未?)
fix版が出せないのは悲しいからね。

727 :名無し娘。 ◆vP.bOZFQ :01/09/07 01:11
>>724 >>726
ボランティアの作業で、仕切る人間が口だけじゃまずいと思いますです。
あくまでコーディングをする人にすべての権利があり、それを承知の上で
周りの人もそれぞれの意見をいう。。。という共通意識が何より大切かと。
ですから私が仕切るわけにはいきませんです。

夜勤さんがread.cgiにどれくらいの時間を割けるのかは、わかりません。
ですがやはり、いくらソースが長くなっても、オリジナルのソースと改良案は
(部分毎に)並行して提示しないと、採用には抵抗があると思います。

そろそろ、replace系の関数を最適化する方が先なのかもしれませんね。

728 :♯6411 :01/09/07 01:13
マターリと逝くよ…

> 現状を認識しようとする意志が全くないわけね。
> 現状を把握せずに機能を提案できるなんて、すばらしい。

オナーニだったんだよ、所詮。


> 試験的に導入した割に、完全に書き換えてしまうわけね。
> 戻せるとはいえ。「俺的な考え」を基に。
> で、コンパイルが通らなくなったりしても、
> 尻拭いは後回しにして、結局他の人がすることになるわけだ。

同意。自分じゃ条件外すことはめったにしないしのー。


> 簡単にテストができるようにしておけばいいものを、
> まるで仕様が確定したかのように扱うのはどうかと思うが、いかが?

放置されてて誰も構ってくれないので、
(うん、外せといわれたら即座に外せはするんだけど)
外す方法を吟味せずにcommitした漏れはダメダメだ。


> 個人的な意見なんでしょ。他人に押し付けないでよね。

オナーニなんだ、言わせてくれよう。


> そもそも「1バイトを削る」自体が夜勤さんの言葉からの引用だけど、
> それも読んでないんだろうね。

読んだ記憶はあるんだが、俺解釈してた。
字面通りに受け取らないとダメねー


> 普通は評価前に仕様確定するようなやり方はしないけどね。

<a name=>の件は、正直、すまなかった。


…漏れはもともと煽りキャラ持ってないんだが、
マターリキャラも持ってないので、疲れた…
(引用ばかりすると、十分煽りになりうるんだが)
…疲れたので、今晩はもう逝くよ…探さないでくれ…鬱だ氏のう

729 :音楽侍 ◆NtVkSITE :01/09/07 01:28
>>727
>ボランティアの作業で、仕切る人間が口だけじゃまずいと思いますです。

ちょっと違うです。むしろ、全体を見られる人はコーディングしない方がいいです。
どうしても自分が動くと、いろいろ出ます。読めるけどかけない人の方が適任かと。

いろんなプロジェクト見てくださいです。
リーダーやマネジャーがコーディングを始めたプロジェクトは大抵納期間に合いませんです。
品質管理もままなりませんです。

>>728
相談と報告のキモチが良薬かと・・・

730 :デフォルトの名無しさん :01/09/07 01:34
とりあえず、既出の不具合で未修正のもの。
キャッシュであぼーんされたレスが見える?(詳細不明)>>441
PATH_INFO時に間違えるとレス1しか表示されない>>624
かちゅ〜しゃ規制>>670
設定ファイル読みこみ時のオーバーフロー>>674
行末の空白削除>>723
それ以前は>>397だけど、どれだけ残ってるかな・・

その他、今気がついたもの。
批判要望板で最近よく出てくる
「このスレッド大きすぎます」への暫定対処として、
datファイルの大きさがある程度(最大値-16K位)を超えたら、
「もうすぐ読めなくなります。新スレの準備を。」の警告があれば親切かも。

あと、できるだけ設定ファイルから読みこめるようにして、
リメイクは不要にした方がよさそうだね。

731 :デフォルトの名無しさん :01/09/07 02:19
>>723さんは
「スクリプト関連要望統合スレッド 」
http://teri.2ch.net/test/read.cgi?bbs=accuse&key=994071363
の人ですね。

732 :730 :01/09/07 04:48
改めてソースを見たら、既に>>674は修正されてた。氏にます。
他にも修正済みがあるかも。

733 :デフォルトの名無しさん :01/09/07 08:33
これまで行った変更点をすべて列挙して、それぞれの目的と変更量とそのリスク、
転送量削減に対する効果、その他の効果などを一覧にまとめてテストケース作って
すべて再評価した上で改めて内容を吟味したらいかが?

テストサーバに置いてここの住人にテスト手伝ってもらうとかはできるっしょ。
仕様書はソースコード、って状況はやっぱりPGの自己満足モードで終わっちゃうよう。

734 :デフォルトの名無しさん :01/09/07 10:44
read.cgiに加えられている変更点は単純に2つに分類できる。
A)転送量・負荷低減のために行われるもの
B)機能を追加してより使いやすくするもの
そして、それぞれの変更点について、
1)導入する
2)導入しない
3)時間帯によって導入する
の3つの選択肢がある。
この3つのうち、1)か2)かを選択するようにしておくのは
#ifdefで切り分けるだけなので比較的簡単だが、
3)の形式は#defineで導入し、さらに時刻によって
処理を変化させなければいけないので、1)2)よりは面倒になる。
しかし、転送量や負荷の少ない時間帯に比較テストできるため、
「試しにやってみて結果を知りたい」場合に有効になる。
試した結果が、時間制限付にするか完全導入するかの判断材料になる。

というわけで、「この機能は時間制限つきで導入してみよう」という指針が
示されれば、必要な変更を施して仮導入してもよさそうな気がする。
さらに、外部ファイルで変更可能にしておけばさらに良かも。

735 :デフォルトの名無しさん :01/09/07 10:44
ブランチを設けるのは大賛成。
Linuxみたく、安定版と開発版とで仕切る人が別になるのも手だろう。
従事するメンバーを分けるほど人数が多いわけじゃないが。

当面、安定版は現行のVer5.12と同等の機能部を抽出し
不具合を修正したものをベースに、ある程度の機能追加をしたものになると思う。
「ある程度」がどの程度なのかは、まとめ役の人の裁量に従いたいが、
-DZLIBは以前から作ってある
-DCHECK_MOD_GZIPはあった方がいい
-DUSE_SETTING_FILEは柔軟性のために必要
等々、結構難しそう。
さらに、-DZLIB,-DUSE_MMAP等の「見栄えは変わらないが負荷低減を狙う機能」は、
早目に安定版にいれて、確定させてしまいたいところだ。

また、増えすぎた#ifdefの中で、Ver5.10以前の導入で問題出ていないものは
条件をはずしてしまっていいと思う。
個人的には-DLASTMOD,-DNEWBA,-DGSTR2は全然問題なし、
-DPREVENTRELOADも#ifdef無しで構わないと思うが、
意志決定はまとめ役の人の判断に任せるのが一番。
BadAccessの旧版にあるAccept-UAのリストなどは、
コメントとして残しておくのがいいかもしれない。
(気分的には、BadAccess中のReadOnlyなローカル配列はstaticにしたいなー)

あ、娘。さんは「オリジナルも残したほうが」と言ってるな。
だったら、採用をほぼ決定したものに対しては、
同じ1種類の#ifdefにしてしまったら、少しはわかりやすくなるかも。

736 :デフォルトの名無しさん :01/09/07 10:45
以下は名無し娘。さんのお手伝い・・・のつもり。

>#ifdef の字面と内容が噛み合わない部分

-DCUTRESLINKは、本当に#define名と内容が一致していない。
変更部のメインは最適化で、リンクの削除はオマケ程度な感じ。
方向としては、
・mmapがSHARED & READONLYで使えるようにBigBufferを読みこみだけに
・ファイル全体やレス全体を走査する回数を極力減らす
・そのために変換や空白削除、http://のリンク等を全て同時に行う
といったところ。
ただ、そのことにより内部で保持するデータ形式が変わってしまい、
他の部分への影響も出ている。
名目通りのCUTRESLINKに相当するのは大きなswitch文の一箇所だけで
全体のdefine名は、つけ直すならBUFFER_READONLYとか
NO_RES_NUL_TERMINATEとか、そんな感じに近いと思う。

>replace系の関数を最適化する方が

上とも関連するけど、現在、-DCUTRESLINKを指定すると
replace系は全く使われない。
現行のVer5.12等では、hlinkReplaceの中でdoReplaceが使われているが、
これもressplitter_splitの内部に吸収されている。
ソース中ではTYPE_TERIが定義されていない場合にsomeReplaceが呼ばれるが、
同等の変換は既にressplitter_split内部で為されているので、本来必要ない。

というわけで、-DCUTRESLINK(内容は違う)を採用する方針でいくなら、
replace系には目を向けなくてもいいと思う。
あえて不安材料を挙げれば、Ver5.1xでの稼動実績があるのが基本部だけで、
保持データ系式の変更やhttp://リンク、mmapとの併用、
これらでの実績が乏しい点があるが、今のところ
まともなdatを低負荷時に読んでいる範囲では、問題は出ていない。

逆に、-DCUTRESLINKを採用しない/条件等によっては機能をoffにしたい、
となる可能性があるなら、replace系の最適化には意味がある。
その辺の判断と指示はまとめ役の人にお任せしたい。

737 :♯6411 :01/09/07 12:17
>>734
細分してみた。

> A)転送量・負荷低減のために行われるもの

* 外部的に機能がほぼ変わらないもの

A0) 安全性の向上のみを目的としたもの(いわゆるバグフィクス)
A1) 転送量の低減を狙っているもの
A2) 転送量以外の負荷低減
A3) 単なる設計・構造・インタフェイス変更

> B)機能を追加してより使いやすくするもの

B0) 従来仕様と相反しない、独立した機能
B1) 従来仕様の不備を補完するもの
B2) 従来仕様の不備を再定義するもの
B3) 従来仕様と置き換わるもの

フォローきぼんぬ

738 :♯6411 :01/09/07 12:20
>>735
PREVENTRELOADは、まだなんとなく
潜在的な問題をはらんでるような気もしない
でもないんだか、杞憂だろうか?

739 :♯6411 :01/09/07 12:23
>>736
CUTRESLINKを再評価するのであれば、
名前付けなおしてさらに細分化するのがよろしかと。

あと、従来とまったく置き換わってしまうものに
関しては、モジュールを切り分けることを
前向きに検討した方がいい。

740 :デフォルトの名無しさん :01/09/07 12:33
>>730おつかれ。
ところで、提案していた

>批判要望板で最近よく出てくる
>「このスレッド大きすぎます」への暫定対処として、
>datファイルの大きさがある程度(最大値-16K位)を超えたら、
>「もうすぐ読めなくなります。新スレの準備を。」の警告があれば親切かも。

はたしかに良いな。

是非搭載してほしいところだが、夜勤さんは嫌がるだろうか?
(read.cgiの負荷増大につながるため)

741 :デフォルトの名無しさん :01/09/07 12:33
今CHUNKが強制になってる感じ?
#ifdefでCHUNKにならない従来型UIにする選択肢なくなってない?

742 :723 :01/09/07 13:22
>>731
そうです。

743 :♯6411 :01/09/07 15:34
ブランチ案

○リリースには明示的にリビジョンを設ける
ex) 5.12
今回は、どの辺から始まってるか微妙なので、
-r4.99あたりで始めるといいのでは。
夜勤さんから、本番に適用したバージョンを
もらい受けて、-r5.xx などとしてcommit
以降、Revision 4.99 が存在するとして説明。

○リリース候補(4.9.x.x)
プロジェクトマスター
(あるいはマスターから委任された人間)
のみがcommitできるブランチ。
cvs tag -b RC-4-99 のようにつくっておく。

○ワーキングブランチ(4.9.x.x.y.y)
今までheadでやってたものは、みなブランチの中で
作業を行う。
cvs co -r RC4-99 bbs で取り出したブランチに、
cvs tag -b HEAD-4-99 のようにつくっておく。

○プロジェクトマスターの役目
・適宜ワーキングを吟味し、RCに取り込み、commit
・夜勤さんの作業に追従
・新しいリリースが出たら、ブランチを作成。

○検討事項
ワーキングブランチは、
改造系統毎に分ける、あるいは
担当毎に分ける方がいいかもしれない。


ブランチの作成は、サーバ持ってる aki さん
あたりにやってもらえると早いんだけど、
さしあたっては名無し娘。さんがやってもらえれば。
(ローカルで念入りに実験した方がいいかも)
漏れがやってもいいです。

744 :♯6411 :01/09/07 15:37
>>743 最新リリースの入手に手間取るようだったら、
さしあたっては8/28 4:00(GMT)あたりのものを
「仮リリース」として据えるといいかも

745 :音楽侍 ◆NtVkSITE :01/09/07 15:54
検証班の作業も工程に入れて置いてください(^_^;)

746 :名無し娘。 ◆vP.bOZFQ :01/09/07 17:32
ver5.12(夜勤さん版)のひとつ前に実動してたのって、verいくつでしたっけ。。。

昨日ちょっとだけ、試しにteriに入ってるread.cgiをいじめてみたら、zz_xx の
size制限がかなり厳しくなってるようで。zz_xx[20]になってるのかな。
たとえば http://piza2.2ch.net/test/read.cgi?bbs="></a> みたいなこと
やられると気持ち悪いからかもしれません。
こんな感じで、いろいろちょこちょこと夜勤さんが手直ししてくださってるのかも。

なんにせよ、一度夜勤さんにお出まし願った方がよさそうですね。
どのソースを元に、どういうとこから手をつけてくのがいいか。
などなど。

747 :デフォルトの名無しさん :01/09/07 17:56
>>746
> なんにせよ、一度夜勤さんにお出まし願った方がよさそうですね。
さんせい

748 :デフォルトの名無しさん :01/09/07 20:49
>>746-747 そうですよね とにかく運営サイドの誰かに度々ここに来てもらって
意思疎通ができないと こちら側だけで突っ走ってもタダの骨折り損になりそうな
気がしますし

749 :デフォルトの名無しさん :01/09/07 22:39
>746
http://piza2.2ch.net/test/read.cgi?b=tech&k=998845501
の段階で zz_GetString が変わって、キーの先頭1文字しか見なくなりました。
たとえば
http://piza2.2ch.net/test/read.cgi?board=tech&kiji=998997848
のように書いても正しく読めます。

750 :名無し娘。 ◆vP.bOZFQ :01/09/07 23:20
>>747-748
機会があればお願いしてきます。
>>749
1文字判定もできますが、たとえば zz_ky は今でも20文字(19文字)を
格納しています(判定後、切り出された文字列。たとえば key=998997848 の
"998997848"部分)。
http://piza2.2ch.net/test/read.cgi?bbs=123456789abcdefgh
をリクエストしたときのエラーメッセージ中、下部「過去ログ倉庫」の
リンク先を見ると、何となく何をやっているかがわかります。

751 :名無し娘。 ◆vP.bOZFQ :01/09/07 23:21
>>750
...hまでじゃだめじゃん。
http://piza2.2ch.net/test/read.cgi?bbs=123456789abcdefghijklmnop
やると。。。ね。

752 : ◆D69Zsbfg @夜勤 ★ :01/09/08 20:33
どうも、お世話になっています。 > みなさん。
明日の未明(今晩)あたりに、登場しまーす。
で、最新版を組み込もうかなぁと目論んでいます。

よろしくお願いします。

753 :音楽侍 ◆NtVkSITE :01/09/08 20:57
おつかれさまです。

754 :デフォルトの名無しさん :01/09/08 21:04
ヤター

755 :デフォルトの名無しさん :01/09/08 21:42
......となると どれを組み込んでもらうのか整理しておかないと

756 :デフォルトの名無しさん :01/09/08 21:45
#defineを消すだけでは外せない機能がありすぎ。やばいって。

757 :デフォルトの名無しさん :01/09/08 22:00
全然コード考えてないけど、この程度の条件分けは必要だろ。

/* "投稿日"を(時間帯によって)非表示にする */
#define CUT_DATE_STRING

/* テレホタイムに読みこめるdatの最大値 */
#define MAX_FILESIZE_BUSY

/* 大きすぎて読みこめなくなります */
#define CAUTION_FILESIZE

/* <a name=...> */
#define CREATE_NAME_ANCHOR

/* '<'や'&'の直前に、必要ならば空白をいれる */
#define CHARCHECK_STRICT

USE_PATHのサブに
#define OUTPUT_SUBBUCK
#define OUTPUT_INDEX

758 :名無し :01/09/08 22:05
さて、もうすぐ1000000000秒ですが、何か起きるでしょうか。
プログラムがこけたら笑えます。

もうすぐ1000000000秒 2chでもお祝いをしましょう
http://kaba.2ch.net/test/read.cgi?bbs=news&key=999927113&ls=50

759 :デフォルトの名無しさん :01/09/08 22:07
■ ひとあしお先に。
http://teri.2ch.net/test/read.cgi?bbs=accuse&key=1000000000

760 :デフォルトの名無しさん :01/09/08 22:10
大きな問題は2点。

1.<a name=>が外せない
→単純にサイズが増える(総リクエストが減る可能性はある)
2.CHUNK_ANCHORが外せない
→>>nnnでリンクされる範囲が不要に大きくなる

2は、REWRITE_HREF2で一応回避可能。

761 :デフォルトの名無しさん :01/09/08 22:32
>>757
さっさとやろうかと思うんだけど、

/* "投稿日"を(時間帯によって)非表示にする */
#define CUT_DATE_STRING
これ時間帯判定いるのかな? いらないんでないかと思うがどうかな。

いらないのならr2chhtml.hだけで完結するんだが。

762 :デフォルトの名無しさん :01/09/08 22:34
>で、最新版を組み込もうかなぁと目論んでいます。

何が何やらぐちゃぐちゃなのでマズいんではないかと..

763 :名無し娘。 ◆vP.bOZFQ :01/09/08 22:34
>>752
それまでに現状をまとめとかにゃいかんなぁ。
とはいっても、最新版の状況は私もさっぱり(汗
>>758
bbs.cgiがtimeを見ているのですが、これもちょっと心配(w
知りうる資料では、if(time > xx)な比較の仕方をしていないのでだいじょぶそう。

764 :デフォルトの名無しさん :01/09/08 22:40
正直、最新版を組みこむのはもう一日待ってもらったほうが無難。

それより、夜勤さんに質問しておいたほうがいいと思う。
・datの最大サイズは、時間帯によって可変にした方がいいのか
・「大きすぎます」に近付いたら警告を出していいか
・ツールの差分取得(の圧縮)は、.htaccessで対応してもらえるのか
・○○な機能は必要なのか
・○○な機能を組みこんで良いか
等々。

765 :名無し娘。 ◆vP.bOZFQ :01/09/08 22:41
まず、.datをmod_gzipでgzip圧縮して転送する件、直近の夜勤さん情報。
http://teri.2ch.net/test/read.cgi?bbs=accuse&key=996674822&st=267&to=268&nofirst=true

http://piza2.2ch.net/test/read.cgi?bbs=tech&key=981726544&st=856&to=859&nofirst=true
の意図は、.htaccessの記述によって mod_gzipを.datにも有効にしようという
ことのようですが、もしや .htaccess に記述しても無効なのでしょうか。
有効ならば、.htaccessに記述するだけで、.datも圧縮転送しますです。

もちろんread.cgiも.dat圧縮に対応しておけば("?raw=")差分転送とかできて
うれしい(^^

766 :名無し :01/09/08 22:43
夜勤さんの多忙なので、今日しかチャンスは無いのだと思う。

767 :761 :01/09/08 22:48
とりあえず時刻判定なしで

/* "投稿日:"を非表示にする */
#define CUT_DATE_STRING

commitしたっす

768 :デフォルトの名無しさん :01/09/08 22:51
>>763
>知りうる資料では、if(time > xx)な比較の仕方をしていないのでだいじょぶそう。
数値レベルで処理してるものは今回は関係ないよ。
文字列化するときに長さを9桁(以下)固定前提に処理しているものがあると
まずいってだけ。

769 :デフォルトの名無しさん :01/09/08 23:10
rewrite_href中、} else { をぶった切って、

#ifdefCHUNK_ANCHOR
 /* chunk仕様を生かすためのkludgeは以下に。 */
 mst = (st - 1) / CHUNK_NUM;
 mto = (to - 1) / CHUNK_NUM;

 if (mst == mto) {
  /* chunk範囲 */
  mst = 1 + CHUNK_NUM * mst;
  mto = CHUNK_NUM * (mto + 1);
 } else
#endif
 {
  /* chunkをまたぎそうなので、最小単位を。*/
  mst = st;
  mto = to;
 }

にすれば、CHUNK_ANCHORがdefineされていなくてもコンパイルは通るようになる

770 :デフォルトの名無しさん :01/09/08 23:12
mod_gzip使うのなら
    mod_gzip_item_include mime "text/.*"
でいいのではないかな? あとserver-parsedの問題は
    XBitHack full
とした上で .htmlファイルのパーミッションを"g+x"にしてもらえば
Last-Modified吐くようになるし

771 :デフォルトの名無しさん :01/09/08 23:22
>>769
commitした

772 :デフォルトの名無しさん :01/09/08 23:31
CREATE_NAME_ANCHORの変更点を捜索中・・・

r2chhtml.h内で
#ifdef CREATE_NAME_ANCHOR
 ・・・
#else
それぞれ、パラメータのlはそのまま無視するようにして、書きなおす
CUT_DATE_STRINGとの関係で、さらにややこしいか?
#define R2CH_HTML_RES_MAIL(n, l, m, nm, d, t)
#define R2CH_HTML_RES_NOMAIL(n, l, nm, d, t)
#define R2CH_HTML_RES_SAGE(n, l, nm, d, t)
#endif

rewrite_href()内の
 /* 新しい表現をブチ込む */
 if (isprinted(st) && isprinted(to))
 {
  d += sprintf(d,
   "<a href=#%u>",
   st);
 } else
を、
#ifdef CREATE_NAME_ANCHORで囲む

同、後半の
#ifdef USE_PATH

#ifdef CREATE_NAME_ANCHOR
に変える

必要なら、rewrite_href2()内の #ifdef USE_PATH で囲まれたif文の、
else までを #ifdef CREATE_NAME_ANCHORで囲む

out_html()内の、
pPrintfでフォーマットに
R2CH_HTML_RES_MAIL,R2CH_HTML_RES_NOMAIL,R2CH_HTML_RES_SAGEを用いている部分の、
全体を
#ifdef CREATE_NAME_ANCHOR
で囲み、
#else以下に、同じ内容でパラメータに2つあるlineNoを1つだけにしたものをつける
#endif

こんなもんだと思う。ただし、未検証(ごめん)

773 :名無し娘。 ◆vP.bOZFQ :01/09/08 23:39
>>768
それくらいは知ってますよん(^^
ちょっと知り得ないところからもtimeと比較する値が提供されているようだから、
念のためのお話。

774 :デフォルトの名無しさん :01/09/08 23:41
>>772
やってみる。ちょいお待ちを

775 :774 :01/09/09 00:07
>>772
あててみた。
動作確認も軽くしてみたけど、厳重なチェックとかよろしく

776 :名無し娘。 ◆vP.bOZFQ :01/09/09 00:11
何を考えるべきか混乱中。
まずはソースの整理&可読性の回復かな。

まず zlib を試してみて、うまくいったら正式実装。ただし念のため、
簡単に強制的に gzip_flag = 0 できるようしておいたほうがいいかも。
そして、GZIP/ZLIB関連の#ifdefを整理。

bzip/deflateは考えないことにしてよいかな?
expire/cache-controlも考えなくていい?

CUTRESLINK関連は、imodeの使い勝手や関数の使用不使用と一部連動しているが、
これらを切り離した上で、1つの-DCUTRESLINK(CUTRESLINKするかしないかの
単純なもの)にまとめる。実装はしておいて、いつでも切り替えられるように
しておけばよい(設定外部ファイル化も実装できているのでいつでも移行できるし)。

777 :デフォルトの名無しさん :01/09/09 00:14
>>776

778 :777 :01/09/09 00:16
操作ミスごめん。

>>776
>bzip/deflateは考えないことにしてよいかな?
bzipは考えなくて良いと思う。
deflateはzlibネイティブだし、HTTP/1.1に言及があるので将来的にはアリかな。

>expire/cache-controlも考えなくていい?
当面考えなくていいんじゃないかな。

779 :名無し娘。 ◆vP.bOZFQ :01/09/09 00:21
read.h に追い出されているものと追い出されていないものって、
何か戦略的な区別あります?
一度このあたり整理した方がよいかも。
# ソース読んできます

780 :デフォルトの名無しさん :01/09/09 00:26
外部的に変化のないcondition消さない?
REWRITE_HREF2とかNEWBAとか。

781 :♯6411 :01/09/09 00:30
今起きた…

>>769
>>775
すまんこってす。

>>779
read.h は、read.c における
外部インタフェイスとして切り分けた。

782 :名無し娘。 ◆vP.bOZFQ :01/09/09 00:54
>>778
よくみたらexpiresって実装されているんですね。どうしましょう。。。
すぐに正式作用できそうならしちゃってもいいかと。
>>780
GSTR2 も消してよさそう。従来型との互換はあるので。
COOKIE もとりあえず消しちゃって、お蔵入りじゃダメでしょうか。
condition多すぎて読むのがつらいです。
>>781
了解です。

783 :デフォルトの名無しさん :01/09/09 01:04
>>782 Expiresについては>>679参照 少なくとも転送量を増やすことはあっても
減らすことはないと思われ

784 :名無し娘。 ◆vP.bOZFQ :01/09/09 01:05
あと、replace系はすべて破棄して、その分、CUTRESLINKする/しない場合の
>>xxx へのリンク設定部分を最適化ってことでよさそうですね。

…なんてことを考えていたら、むしろ絶対URI表記にリンク設定(<A>タグ)
しないことの方も考えていいような気がしてきた。この部分は.datに<A>タグ
ないものをread.cgiでわざわざはっているのだけど、絶対URI表記はコピペ
すればそのまま飛べるんだし。どうでしょう?

785 :デフォルトの名無しさん :01/09/09 01:11
>>780
USE_INDEX2CGIは、いまさら不要です。

>>775
CREATE_NAME_ANCHORなしでテストしたら、
>>60が、
 read.cgi?bbs=tech&key=998695422&st=51&to=100&nofirst=true
 read.cgi/tech/998695422/51-100
になるんですが、これでいいの?
従来仕様(st=60&to=60&nofirst=true)は考えないでいいの?

CHUNK_ANCHORで、"&n=t"ってなっているけど、nofirst=trueと混じっちゃって
キャッシュが効きません。
bbs.cgiとのからみがあるから、n=tとnofirst=trueを簡単に統一できる手段が
欲しいな。

786 :775 :01/09/09 01:15
>>785
それはread2ch.hにコメントで書いたけど、CHUNK_ANCHORもコメントアウトすれば目的の番号だけの
参照になるんだよな。
CREATE_NAME_ANCHORなしでCHUNK_ANCHORありってのはそもそも矛盾してるよね?
頭で条件つぶしかけるべき?

787 :775 :01/09/09 01:18
>>785
>CHUNK_ANCHORで、"&n=t"ってなっているけど、nofirst=trueと混じっちゃって
>キャッシュが効きません。
この点単純に修正してcommitしてみた。

788 :名無し娘。 ◆vP.bOZFQ :01/09/09 01:18
>>783
了解です。expires部分もいったんソースから消してしまいましょうか。
>>784
補足。read.cgiでの動作を以下のようにしてはどうかなという提案です。
LIMIT_PM - LIMIT_AM:>>xxx のリンク削る。
LIMIT_AM - LIMIT_PM:http://... ftp://... のリンクはる。

read.cの最後4つの関数 cutWordOff,ExistHlinkX,ExistHlink,hlinkReplaceは
#ifndef CUTRESLINK してしまってよいようです。

789 :772 :01/09/09 01:20
>>775
お疲れさま。
rewrite_hrefの後半の書き換え、>>772に書いた通りじゃまずいって後で気がついたんだけど、
直してくれたんですね。どうもです。

今、夜勤さん向けにread2ch.hよりちょっとだけ詳しい機能説明書いてます。
勝手にON/OFF推奨してるんで、そのへんの判断がおかしかったらツッコミお願い。
もうちょっと時間くださいな。

790 :デフォルトの名無しさん :01/09/09 01:29
>>782
>>783
>>788
EXPIRESは氏んでるってば
まあ役に立つものではないので
ソースから削るのを止めはしないけど
(これって6411氏が入れたんだっけ?)

791 :デフォルトの名無しさん :01/09/09 01:32
ひとつひとつ。
>>788

>read.cの最後4つの関数 cutWordOff,ExistHlinkX,ExistHlink,hlinkReplaceは
>#ifndef CUTRESLINK してしまってよいようです。
これ当てました。

792 :名無し娘。 ◆vP.bOZFQ :01/09/09 01:33
>>790
ええ、氏んでるかどうかではなく、ソースから削っちゃうかどうかを。

793 :772 :01/09/09 01:36
REWRITE_HREF2削除した。

794 :デフォルトの名無しさん :01/09/09 01:37
imodeの時に、最初から(st=1&to=10)の時だけ[次の10レス]が出ません。
なんか、nofirst=true相当になっている感じ。

795 :名無し娘。 ◆vP.bOZFQ :01/09/09 01:41
>>794
http://teri.2ch.net/test/read.cgi?bbs=accuse&key=999099427&ls=20
この問題かな。。。ずいぶん昔からですね。

796 :説明がき−1 :01/09/09 01:41
有効なオプションの説明
◎Ver5.1xで導入済み
○Ver5.1xで導入済みだが、変更あり
△新機能・大きな変更ではない等で、ON推奨
▲新機能・変更が大きいので、とりあえずOFF推奨
×新機能・テスト中等の理由で、開発版でもOFFになっているもの

○CUTRESLINK
ファイルのreadとsplitを最適化する
(define名がおかしい)

○LINKTAGCUT
混雑時間帯に >>000 形式のレスへのリンクを削除。
「レスを全部読む」の増加への対策として、
表示範囲外のリンクは削除しないように変更。
(CUTRESLINKが有効な時のみ機能する。0/1で指定)

△RELOADLINK
一番最後に、「更新したレスを表示」のリンクを表示する
連打されてもNotModifiedが返るので、大きな負荷にはならないはず。

◎LASTMOD
導入済み。ほぼ必須。

×EXPIRES
proxy用に、キャッシュの保持期限を出力する。

◎NEWBA
BadAccessの新しいバージョンを使う。
稼動中。今のところ問題なし。かちゅ〜しゃ規制に注意。

◎GSTR2
nofirst → n など、短縮形で指示できるようにする
稼動中。今のところ問題なし。

▲USE_PATH
PATH_INFOを処理することにより、
http:://piza2.2ch.net/test/read.cgi/tech/998997848/10-20
のリクエストを処理できるようになる。
CHUNK_ANCHORとの併用で効果を発揮する。
http:://piza2.2ch.net/test/read.cgi/tech/
時に、板のスレ一覧を表示するため、負荷が増える可能性あり。

×COOKIE
Cookie による名前、E-mail フィールドの初期値の埋め込みを CGI 側で行う
Last-Modified付加により、proxyでキャッシュされた場合に各種の不都合
(最悪の場合、キャップ・トリップのパス漏れ)が発生するため使用不可に

797 :説明がき−2 :01/09/09 01:42
◎PREVENTRELOAD
書き込み直後のリロードを防止する
FORCE_304_TIMEで指定された時間の間、304 Not Modifiedを返す
稼動中。

◎GZIP
△ZLIB
出力を圧縮する。
ZLIBを指定すると圧縮にgzipを使わなくなるため、
プロセス数が減り、負荷低減につながる。

△RAWOUT
datの(差分)取得をread.cgiで処理する。
生datも圧縮して転送量を減らすことができる。
CGIへのリクエストが増加する可能性があるので、負荷が大きくなる可能性あり。
mod_gzipの設定次第では、不要になる場合も。

△USE_MMAP
fread(read)の代わりにmmapを使用する。
負荷の低減が期待できる。

×EXPLICIT_RELEASE
明示的に資源を解放する。
CGIプロセスが終了すれば、資源は解放されるので明示的な解放は不要。
逆に、解放処理が負荷を増加させる危険があるので、OFF推奨。

×USE_INDEX
read.cgi側によるindexの実装(experimental)
/board/dat/idx/ディレクトリがあれば、各レスのindexを作成する。

×ALL_ANCHOR
▲CHUNK_ANCHOR
トップに「全部読む」/CHUNK_NUM毎に区切ったレスへのanchorをつける
どちらかはあった方がよさそうだけど、
CHUNK_ANCHORには、現在、副作用があるので。
※表示範囲外への >>000 形式のリンクを、1レス分であっても
CHUNK_NUMレス分へのリンクに変更してしまう。

△LATEST_ANCHOR
「最新レス LATEST_NUM」をつける

798 :説明がき−3 :01/09/09 01:42
▲SAGE_IS_PLAIN
sageレスのとき、名前を太字にしない
(<a href="mailto:sage">の代わりに<font color=>をつける)
若干転送量が減るが、見た目が変化する。

×USE_INDEX2CGI
index2.cgiがあったら、「掲示板に戻る」のリンク先をindex2.cgiにする
もはや不要?

△CHECK_MOD_GZIP
mod_gzipが導入されていたら、「掲示板に戻る」のリンク先を
/板名/ にする。
(OFFにすると、戻り先はaccept-encodingによって、/index.htmか/index.htmlになる)

△CUT_DATE_STRING
"投稿日:"を非表示にする

▲CREATE_NAME_ANCHOR
各レスにアンカーをつける。
CHUNK_ANCHORとの併用でキャッシュ効果が上がる可能性があるが、
転送量を増やす結果になる可能性もある。
これをOFFにした場合でも、CHUNK_ANCHORをOFFにしないと、
>>000 形式のリンク先が広範囲となるため、
転送量を増やす可能性がある。

△USE_SETTING_FILE
板毎に設定が書いてあるファイルを使用する。
板のディレクトリにSETTING_FILE_NAMEのファイルがあり(SETTING.TXTと同じ場所)、
有効なエントリがあれば、デフォルト値を置き換える。
SETTING_R.TXTは
---
FORCE_304_TIME=30
LIMIT_PM=23
RES_NORMAL=50
MAX_FILESIZE=512
LINKTAGCUT=0
---
など。空行可。'='前後の空白不可。'='がなかったり、マッチしなかったりしたら無視
最後の行に改行が入ってなかったら、その行も無視
現在設定可能な値は、
RES_YELLOW
RES_REDZONE
RES_IMODE
RES_NORMAL
MAX_FILESIZE (Kbyte単位で設定)
LIMIT_PM
LIMIT_AM
FORCE_304_TIME (PREVENTRELOAD有効時のみ)
LATEST_NUM (LATEST_ANCHOR有効時のみ)
LINKTAGCUT (CUTRESLINK有効時のみ)

799 :775 :01/09/09 01:45
あ、>793 は私。名前書き間違えた

800 :796-798 :01/09/09 01:47
説明がき書いている間に、すでになくなってしまったものがいくつか・・・
ON推奨/OFF推奨は俺の主観なので、他の人の意見も聞いて、
合意のうえで夜勤さんに提案したいな。

801 :デフォルトの名無しさん :01/09/09 01:50
△CUT_DATE_STRING
"投稿日:"を非表示にする
えーと、今現在のbbs.cgiでは":"のようですが、
そのあたりの対応は大丈夫でしょうか?

802 :775 :01/09/09 01:51
>>801
その通りになってるつもりですがどうでしょうか(^^;

803 :775 :01/09/09 01:54
×なやつ全部消していいすかね? バッサリと。

×EXPIRES
×COOKIE
×EXPLICIT_RELEASE ; これは…残す? (^^;
×USE_INDEX ; これは残す?
×ALL_ANCHOR
×USE_INDEX2CGI

804 :デフォルトの名無しさん :01/09/09 01:58
>>802
datには"投稿日"なんて文字は元からないのか。
今バージョンでは、":"が表示されてません。

805 :名無し娘。 ◆vP.bOZFQ :01/09/09 01:59
>>803
NEWBA,GSTR2 の旧部分も削っちゃってよいと思います。
>>796 NEWBA のかちゅ〜しゃ規制部分も、おそらく大丈夫そうですし。

806 :775 :01/09/09 02:00
>>804
こりゃまた失敬。直しました。

807 :775 :01/09/09 02:12
とりあえず以下のものをバッサリ削除した。

NEWBAの旧部分
EXPIRES
USE_INDEX2CGI
COOKIE

808 :775 :01/09/09 02:21
LASTMODはON固定ってことでcondition消しますか?

GSTR2はすでに昔のコードは無いみたい。1文字か完全一致かの
条件分けになってますね。

809 :デフォルトの名無しさん :01/09/09 02:27
imodeのむりやり修正。
なんか根本的に間違っている気がするが、ないと困るので。
いんちきでごめん。

dat_out()中に一行追加。
 if (out_html(level, line, lineNo))
  break;
+ if (lineNo==1 && is_imode() && nn_st==1) ++out_resN;

810 :775 :01/09/09 02:35
>>809
あてた。

811 : ◆D69Zsbfg @夜勤 ★ :01/09/09 02:36
どんなもんでしょ?
全ファイル(makefile含む)を どこかに上げていただけると
とっても嬉しいです。

で、kaba とかでテストしてみたいです。

まだのようでしたら、また明日 お伺いしますが、、、

812 : ◆D69Zsbfg @夜勤 ★ :01/09/09 02:36
本当に、みなさんすみませんねぇ、
感謝 感謝 です。

813 :775 :01/09/09 02:38
夜勤さん、ご苦労さまです。
最新ソースはcvsから随時
http://www.gedoh.org/aki/2ch/current/bbs/
にコピーされていて、
その全部が read.tgz に圧縮されているようです。

read2ch.h で設定をいろいろいじる必要があるかもしれません。
特にバージョン名(笑)

814 :775 :01/09/09 02:39
>>813
あぎゃ。
× ご苦労さまです
○ お疲れ様です

細かいかな(^^;

815 :775 :01/09/09 02:48
各設定の説明は
>>796-798
でなされていますが、
現時点の状態で出しちゃっていいんでしょうかね(笑)
他の皆はどうしたんだろう。寝た?

816 :名無し娘。 ◆vP.bOZFQ :01/09/09 02:52
>>815
ソース追いきれずにコメント不能状態です(氏
一度どこかに導入してもらって仕切り直せれば、それが一番楽かもしれませんね。

817 :デフォルトの名無しさん :01/09/09 02:57
>>784(>>788で補足)に書いてあることは、
ressplitter_split()内の
#if 1
#else
#endif

#ifndef シンボル名(NO_LINK_URL_BUSY,etc)
#else
#endif
にすれば、ほぼ実現するんじゃなかろうか?
(レス1の時の動作とi-mode対応がどうかな)

818 : ◆D69Zsbfg @夜勤 ★ :01/09/09 02:58
まず、全部ダウンロードして、サーバにアップして
make しました。
このように言われました。

gcc -c read.c -DHAVE_READ2CH_H -Izlib -g -O2 -Wall -funsigned-char -o read.o
read.c: In function `dat_read':
read.c:1254: `MAP_FAILED' undeclared (first use this function)
read.c:1254: (Each undeclared identifier is reported only once
read.c:1254: for each function it appears in.)
make: *** [read.o] Error 1

819 :775 :01/09/09 03:00
>>818
USE_MMAP時のOS側の定義が足りないようですね。

read2ch.hで#define USE_MMAPをコメントアウトするといかがでしょうか。

820 : ◆D69Zsbfg @夜勤 ★ :01/09/09 03:02
USE_MMAP コメントアウチおしました。

こんどは、

gcc -c datindex.c -DHAVE_READ2CH_H -Izlib -g -O2 -Wall -funsigned-char -o datind
ex.o
datindex.c: In function `create_index':
datindex.c:372: `MAP_FAILED' undeclared (first use this function)
datindex.c:372: (Each undeclared identifier is reported only once
datindex.c:372: for each function it appears in.)
datindex.c: In function `open_dat':
datindex.c:412: `MAP_FAILED' undeclared (first use this function)
datindex.c: In function `datindex_open':
datindex.c:457: `MAP_FAILED' undeclared (first use this function)
make: *** [datindex.o] Error 1

821 :デフォルトの名無しさん :01/09/09 03:02
ってゆーか、Linuxでmmapが失敗したら返す値(シンボル)って何だろ?

822 :デフォルトの名無しさん :01/09/09 03:03
現バージョンでの範囲外へのリンクがますいです。
PATHで呼ばれた時は大丈夫だけど、現行形式で呼ばれたときに
read.cgi?bbs=tech&key=998997848101-150#145
なんてことになってしまいます。

転送量削減が主なら、PATHで呼ばれたかをチェックしてリンク先を変えることになるのかな。

823 : ◆D69Zsbfg @夜勤 ★ :01/09/09 03:03
× コメントアウチおしました。
○ コメントアウトしました。

824 :デフォルトの名無しさん :01/09/09 03:04
>>820
ぐえ。datindex.cって、USE_INDEX時にしか使わないモジュールですね。
これ外しましょう(笑)
Makefileの 9行目、 OBJS = の行で、"datindex.o"を削除してください。

825 :デフォルトの名無しさん :01/09/09 03:07
>>821
http://www.linux.or.jp/JM/html/LDP_man-pages/man2/mmap.2.html
一応、MAP_FAILEDみたいですが。

826 :デフォルトの名無しさん :01/09/09 03:08
USE_INDEXとか、USE_PATHが#defineされたままだったりして

827 : ◆D69Zsbfg @夜勤 ★ :01/09/09 03:09
いぇーい

http://kaba.2ch.net/test/read5x.cgi?bbs=news&key=999960057

828 :デフォルトの名無しさん :01/09/09 03:10
>>825
ヘッダ構成の違い?

829 : ◆D69Zsbfg @夜勤 ★ :01/09/09 03:10
>>824 さんに言われた通り
datindex.o を削除したら、できましたー。

830 :775 :01/09/09 03:11
>>827
おお! 動いてる!
read2ch.hはどのように変更しましたか? >夜勤さん
それを元に一旦CVS側で区切り(タグ)を付けたいですね。

831 :デフォルトの名無しさん :01/09/09 03:12
次のバージョンでは
#ifndef MAP_FAILED
#define MAP_FAILED (void *)(-1)
#endif
をread2ch.hに入れたほうが良さそうやね

832 :デフォルトの名無しさん :01/09/09 03:12
n=tが効いてないような…。
http://kaba.2ch.net/test/read.cgi?bbs=news&key=999960057&st=16&n=t

833 : ◆D69Zsbfg @夜勤 ★ :01/09/09 03:13
>>830
read2ch.h は、まだ何も変更してないですー。

834 : ◆D69Zsbfg @夜勤 ★ :01/09/09 03:14
>>832
あっまだ、read.cgi にはしてないです。
read5x.cgi です、

835 :デフォルトの名無しさん :01/09/09 03:15
CREATE_NAME_ANCHORとか、有効になってる。
夜勤さん、暇な時にでも>>796-798にある説明を見て、
何をON(define)にして何をOFFにするか決めちゃうと良いと思うです。

836 :デフォルトの名無しさん :01/09/09 03:17
ああなるほど、リンクをクリックするとread.cgiのほうに
飛んじゃうのか。自分の名前を取得するようにできる?

837 :♯6411 :01/09/09 03:17
>>818 おつかれさまです。

んっと、暇あったら、
$ fgrep -n MAP_FAILED /usr/include/*.h /usr/include/sys/*.h
の実行結果を教えていただけませんか?

何のディストロなんだろ??

838 :デフォルトの名無しさん :01/09/09 03:18
>>834 夜勤さんへ。
暫らくread5x.cgiでテストするのでしたら、read2ch.hで

#define CGINAME "read5x.cgi"

にしていただけないでしょうか。

839 :デフォルトの名無しさん :01/09/09 03:19
とりあえず、これだと次の10レスが表示されるけど、これでいいのかな?
http://kaba.2ch.net/test/read5x.cgi?bbs=news&key=999960057&imode=true&st=1&to=10

840 :775 :01/09/09 03:19
>>838
rewrite_href内でCGINAME使ってない(涙

841 : ◆D69Zsbfg @夜勤 ★ :01/09/09 03:19
なにもでないです >>837
fgrep -n MAP_FAILED /usr/include/*.h /usr/include/sys/*.h

842 :♯6411 :01/09/09 03:21
>>840 …油断してた…

>>841 了解、MAP_FAILED再定義すべきですね。

843 :775 :01/09/09 03:22
じゃあ、一度ここで判明したりしたいくつかの修正を加えて
cvsに上げますかね?
それをまた夜勤さんにdownloadしてもらう形とか。

夜勤さん、時間どれぐらいとれますか?

844 :デフォルトの名無しさん :01/09/09 03:22
>>837
http://www.maido3.com/server/usagi/ によると
 Linux2.2.19 Slackware
だそうです。

今時だとslackware使っている人は少ないか。

845 : ◆D69Zsbfg @夜勤 ★ :01/09/09 03:23
>>838
やりましたー
http://kaba.2ch.net/test/read5x.cgi?bbs=news&key=999920210

846 :デフォルトの名無しさん :01/09/09 03:25
http://kaba.2ch.net/test/read5x.cgi/news/999960057/

あひゃ
http://kaba.2ch.net/test/read5x.cgi/news/

847 :デフォルトの名無しさん :01/09/09 03:25
http://kaba.2ch.net/test/read5x.cgi?bbs=news&key=999920210#20
ここで>>9がなぜか#95にリンクしてる

848 : ◆D69Zsbfg @夜勤 ★ :01/09/09 03:25
>>843
あせりは禁物かと、、、
また、明日の今ごろ登場予定。。。

849 :775 :01/09/09 03:27
>>848
おお。>847 とかも出てるし、明日の夜までに直す形がイイ感じ?

850 :デフォルトの名無しさん :01/09/09 03:27
>♯6411氏
digest.[ch]いらなくなったのなら、MakefileのSRCSから消してちょうだい。
あと、datindex.cの中身全部を#ifdef USE_INDEXで括っておくように。(w

851 :名無し娘。 ◆vP.bOZFQ :01/09/09 03:30
夜勤さん&みなさまお疲れさまですー。

MAP_FAILED >>831 でよろしそう。
gzipぱっと見問題なさそう。zlib使えてるってことかな?

852 :音楽侍 ◆NtVkSITE :01/09/09 03:30
確認しましたです。>5x
HTTP1.0と1.1で「掲示板に戻る」のindex.htm(l)の切り替え確認しました。

51- 101-ですが、頭に「1」の書き込み表示がないのは仕様でしょうか?
もしかするとちょっと不便かもしれません。

853 :デフォルトの名無しさん :01/09/09 03:32
n=tはキャッシュが効かないからnofirst=trueにしたんじゃ
なかったっけ?

854 :デフォルトの名無しさん :01/09/09 03:35
>>848
お疲れ様でした〜

855 :デフォルトの名無しさん :01/09/09 03:47
USE_PATHで旧形式を指定されたときはリダイレクトするか
BASEを吐いて常に新形式でリンクするというのはどうします?

856 :855 :01/09/09 03:52
いまのところはGSTR2と一緒で隠し機能にしたほうがいいかな

857 :- :01/09/09 04:02
http://kaba.2ch.net/test/read5x.cgi?bbs=net&key=998373518&st=151&to=200&nofirst=true

>> のリンクが、最大レス番号を超えてないものでも一部切れてたりするんですが・・・
154 160 171 など

858 :デフォルトの名無しさん :01/09/09 04:10
とりあえずtag打っときなさいな。

859 :857 :01/09/09 04:11
あれ、仕様でしたか?582あたりの。

860 :デフォルトの名無しさん :01/09/09 04:24
>>858
tag名どうしまっか?

861 :デフォルトの名無しさん :01/09/09 04:27
>>857って、何かリンクする条件が逆のような気がする
表示範囲内→リンクしない(タグを削除)
表示範囲外→リンクする

とりあえず、今出ている不具合は、↑と
MAP_FAILEDの再定義>>831
リンク先(rewrite_hrefの#)>>847
CHUNK_ANCHORで1-が無い>>852
ぐらいか?

862 :857 :01/09/09 04:28
http://kaba.2ch.net/test/read5x.cgi?bbs=net&key=998373518&st=196&to=196&nofirst=true

>> のリンクは read.cgi を read5x.cgi に直したとしても飛べません

863 :775 :01/09/09 04:29
>>862
それ、>>840 (涙

864 :デフォルトの名無しさん :01/09/09 04:35
>>860
YAKIN0909 とか
ReleaseVersionになるのは、一日一回がせいぜいでしょ。

865 :775 :01/09/09 04:37
>>864
YAKIN20010909でtag打っときました

866 :名無し :01/09/09 04:43
バージョンを実際の5.XXに合わせるべきだと思います。

867 :デフォルトの名無しさん :01/09/09 04:46
今回は、仮リリースだからね。ver14だし。
正式にインストールされた時は、実際のバージョンにすべきだけど。

868 :775 :01/09/09 04:50
>>831
read2ch.hだとincludeのタイミングが速かったりするので、read.hに入れた

869 :857 :01/09/09 04:51
>>863
えーと、st=xx&to=xxの形式なのに、↓で無条件に xx-xx を付けてるのが問題ではないかと。
わかりづらかったらゴメン

#ifdef USE_PATH
d += sprintf(d,
"<a href=\"%s%d-%d",
depth_expr,
mst, mto);
#else
d += sprintf(d,
"<a href=\"%s&st=%d&to=%d&nofirst=true",
depth_expr,
mst, mto);
#endif

870 :775 :01/09/09 04:52
>>840
CGINAME参照するようにした

871 :775 :01/09/09 04:53
>>850
>あと、datindex.cの中身全部を#ifdef USE_INDEXで括っておくように。(w
括った(笑)

872 :デフォルトの名無しさん :01/09/09 05:05
やっぱ ネスケ4.72ではgzip圧縮した場合にContent-Lengthが入ってると
Last-Modifiedが無効になるみたい

HTTP/1.1 200 OK
Date: Sat, 08 Sep 2001 20:00:12 GMT
Server: Apache/1.3.6 (Unix) PHP/4.0.3pl1 mod_ssl/2.3.6 OpenSSL/0.9.3a
Content-Encoding: gzip
Last-Modified: Sat, 08 Sep 2001 19:33:13 GMT
Content-Length: 974
Connection: close
Content-Type: text/html

            場所: http://kaba.2ch.net/test/read5x.cgi?bbs=news&key=999920210
     ファイルMIMEタイプ: text/html
           ソース: 現在、ディスクキャッシュに入っています
ローカル キャッシュ ファイル: M0IH2L6U
        最終更新日時: 不明
        最終更新日時: 不明
         内容サイズ: 38018
          有効期限: 日付なし
         文字セット: Shift_JIS
        セキュリティ: このドキュメントでは暗号化によるセキュリティ保護は行われていません。

HTTP/1.1 200 OK
Date: Sat, 08 Sep 2001 20:01:35 GMT
Server: Apache/1.3.6 (Unix) PHP/4.0.3pl1 mod_ssl/2.3.6 OpenSSL/0.9.3a
Content-Encoding: gzip
Last-Modified: Sat, 08 Sep 2001 19:33:13 GMT
Connection: close
Content-Type: text/html

            場所: http://kaba.2ch.net/test/read.cgi?bbs=news&key=999920210
     ファイルMIMEタイプ: text/html
           ソース: 現在、ディスクキャッシュに入っています
ローカル キャッシュ ファイル: MUOF7EA1
        最終更新日時: 09/09/01 04:33:13 地方標準時
        最終更新日時: 09/08/01 19:33:13 世界標準時(GMT)
         内容サイズ: 41675
          有効期限: 日付なし
         文字セット: Shift_JIS
        セキュリティ: このドキュメントでは暗号化によるセキュリティ保護は行われていません。

873 :775 :01/09/09 05:13
>>869
PATHではなく旧形式で呼ばれたときに、USE_PATH時でも旧形式で >> のリンクを
生成するようにしてみた。

874 :775 :01/09/09 05:16
んじゃ寝るー。

875 :名無し娘。 ◆vP.bOZFQ :01/09/09 06:04
明日あたりに新スレ立ててきますので、それまでにこのスレのまとめが
できるようにお願いいたしますです。

実装・検討待ちの案一覧

gzip/zlib関連conditionの整理
 gzip/zlibをconditionなしで採用し整理

PATH_INFO
 >>869 >>873
 リンク先がいろいろおかしい
 ・http://kaba.2ch.net/test/read5x.cgi?bbs=net&key=998373518&st=196&to=196&nofirst=true
 ・http://kaba.2ch.net/test/read5x.cgi?bbs=net&key=998373518&st=1&to=10 の 1
 ・http://kaba.2ch.net/test/read5x.cgi?bbs=net&key=998373518&st=1&to=1
 ・http://kaba.2ch.net/test/read5x.cgi?bbs=net&key=998373518&st=151&to=200&nofirst=true

CHUNK_ANCHORで1-が無い
 >>852

CUTRESLINK, replace系関数
 >>736
 とにかく整理

URL記述に対するリンク設定も時間帯によらせる
 >>817

<a name>をつけるかつけないかをconditionによらせる

"投稿日"非表示を時間帯によらせる

スレスト時FORM
 >>11

dat制限サイズ警告
 >>740

876 :名無し娘。 ◆vP.bOZFQ :01/09/09 06:04
mmap時にlockすべきか
 >>139 >>425

行末の空白削除
 >>723

NN4.72でgzip圧縮&&Content-LengthがあるとLast-Modifiedが無効
 >>872

.hからいろいろなくなってるけど?
 >>670
 http://cocoa.2ch.net/test/read.cgi?bbs=unix&key=998695422&st=81&to=81&n=true

キャッシュであぼーんされたレスが見える?(詳細不明)
 http://teri.2ch.net/test/read.cgi?bbs=saku&key=996761078&st=408&to=408&nofirst=true

FORCE_304_TIMEの動的変動
 鯖負荷に応じて動的に変更する

外部設定ファイル
 >>798

dat,kako
 /kako/ に対応
 ツール作者さんに対応お願い
  * raw=xxx.yyy の形式でリクエスト。 xxx=最終レス番号, yyy=そのときのサイズ。
  * 一行目はステータス:
  * [+OK] の場合は差分のみを送信する。
  * [-INCR] (Incorrect)の場合はすべてのデータを送信する。
  * [-ERR (テキスト)]の場合はなんかエラーが起きた。

datの一部についてのLastModを求める

877 :名無し娘。 ◆vP.bOZFQ :01/09/09 06:05
deflate
 そのうち対応

板ダイジェスト
 そのうち対応

スレッド一覧
 そのうち対応

スレインデックス
 >>680 >>696
 そのうち対応

condition一覧(更新しなくちゃ)
 >>796-798

r2chhtml.hいろいろ
 http://natto.2ch.net/test/read.cgi?bbs=hp&key=999020167&ls=20
 http://natto.2ch.net/test/read.cgi?bbs=hp&key=998774537&ls=20(前スレ)

その他
 http://www.gedoh.org/aki/2ch/tiki/

878 :デフォルトの名無しさん :01/09/09 06:55
/dat/が見れない状態が続くならdat制限サイズ警告は
優先度高いですね

879 :デフォルトの名無しさん :01/09/09 07:10
>>793でREWRITE_HREF2は削除したって書いてますけど
まだソースに残ってませんか?

880 :デフォルトの名無しさん :01/09/09 07:12
>>875
http://kaba.2ch.net/test/read5x.cgi?bbs=net&key=998373518&st=1&to=10 の 1
これは、2-5は現在表示中に全部含まれているので、#2で正しいと思いますが。

881 :デフォルトの名無しさん :01/09/09 08:08
lockに関しては やるとしたらread.cgiではshared lock(F_RDLCK)
bbs.cgi等の書き込み側ではexclusive lock(F_WRLCK)になるんだろうけど
どっちにしろbbs.cgi等の書き込み側の協力がないと......

882 :デフォルトの名無しさん :01/09/09 08:17
http://kaba.2ch.net/test/read5x.cgi?bbs=news&key=999911192&ls=50
1000超えのスレッドや停止されたスレッドでは
「新レスの表示」も不要ですね。

883 :デフォルトの名無しさん :01/09/09 08:46
#ifdef Katjusha_Beta_kisei
"Kathusha",
#endif

つづりが間違っています。
"Katjusha",

884 :デフォルトの名無しさん :01/09/09 09:35
>>883
直した。

>>875
リンクを貼ってくれない場合や、#95などが出る原因を修正。

if (!*zz_http_user_agent && !*zz_http_language)
というのがあるんだが、*が付いてるのは理由があるのか?
NULLチェックのつもりだと思うんだが。

885 :デフォルトの名無しさん :01/09/09 09:51
>>884
if (!zz_http_user_agent)
zz_http_user_agent = KARA;
if (!zz_http_language)
zz_http_language = KARA;

ってのが別にあるからな。とはいえ
if ( zz_http_user_agent == KARA || zz_http_language == KARA )
とか
if ( zz_http_user_agent[0] == '\0' || zz_http_language[0] == '\0' )
って感じで分かりやすくして欲しい気はするが..

886 :デフォルトの名無しさん :01/09/09 10:32
nofirst=trueの表記を統一しました。
#define NO_FIRST "&n=t" で省略形式に統一可能。

>>879
REWRITE_HREF2の削除もれを消しました。

>>796-798に手を加えてconfig.txtとして追加した。
conditionをいじったら、config.txtもいじってね。
http://www.gedoh.org/aki/2ch/current/bbs/config.txt
実情にあってない所があったら指摘してください。

887 :881 :01/09/09 11:06
fcntl()でのshared/exclusive lockだと read.cgiがひっきりなしに呼ばれていると
bbs.cgi等の書き込み側がexclusive lockを取得できなくなってしまう可能性もあるな...

となると 書き込み側では
  1. まず別のファイル名でオープンして(例えば"987654321.new")そこに書き込む
  2. 書き込みが終わったら rename("987654321.new", "987654321.dat") を実行
って感じでやってもらう方がいいのかも これならread.cgi側でのlockは
考えなくてもいいんだな bbs.cgi等の書き込み側の排他制御は必要だろうけど

888 :デフォルトの名無しさん :01/09/09 11:58
CUTRESLINK関係の話が、
-DCUTRESLINKで加えられた変更全体を指すのか、
レスのリンクをカットする機能のみを指すのか、若干わかりにくい。

CUTRESLINKの名前をOPTIMIZE_SPLIT等に変更して、
本来のリンクをカットする部分のみを#ifdef CUTRESLINKで囲うことを希望。

889 :775 :01/09/09 14:10
>>886
REWRITE_HREF2削除に漏れあったのか。修正さんくす

890 :775 :01/09/09 14:17
CUTRESLINKはONの状態で採用ってことでOFF時のコード消さない?

CUTRESLINKまわりの二重状態がいちばんソース見難く、でかくしてる感じだし。

891 :デフォルトの名無しさん :01/09/09 14:31
とりあえずの行末の空白削除(タグ消し)対策
ressplitter_split()の、case ' ':
-  if (bufp == *This->buffers) /* 名前欄が半角空白の場合 */
-   *bufp++ = ' ';
+  if (bufp == *This->buffers /* 名前欄が半角空白の場合は最低1文字必要 */
+   || (resnumber && isSJIS1(*bufp-1))) /* 行末の文字化け対応 */
+   *bufp++ = ' ';
/*
resnumberのチェックを外せば名前・メール欄の
直後の空白もある程度消せるようになるが、
厳密に判定しないと(名前欄が)でこぼこに
なってしまうので、もう少し待ち。
*/
転送量的には、"名無しさん"の"ん"の直後の空白が(今のままでは)
削除できないのが痛い(3byte前から調べれば削除できる)ので、
空白が必要かを完全に判定する厳密なルーチン
(末尾から調べ、長くても数文字で終わるはず)を作成予定。
名前とメールの直後の空白が消せるし、
<br>前の空白もまだ結構残っているので、
処理を少し複雑にしてでもやる価値はあると見る。

もう一点。
index.htmlに合わせる場合、
メール欄が"0"の場合は""として扱うほうが良いのかな、と。
その場合、
splitting_copy()の最後に、
+ if (s[1][0] == '0' && s[1][1] == '\0')
+  s[1][0] = '\0';
つければOK。
以上は、http://teri.2ch.net/accuse/dat/994071363.datを出力して動作確認。

http://teri.2ch.net/test/read.cgi?bbs=accuse&key=994071363&st=448&to=449
の問題は、dat内に'&','<',"http://"が現れるたびに直前の文字をチェックして
' 'を入れるか判定する必要がある割には、実際に壊れている割合は非常に少なく、
費用対効果の点で疑問が残るので、OFF推奨のconditionとして実装予定。

892 :デフォルトの名無しさん :01/09/09 14:58
>>890
個人的には賛成。
Ver5.12でも使われているし、ON前提で書かれている機能もけっこうある。

他にも同意する人がいて、反対する人が現れなかったら、
必要なのは「決断」?

893 :名無し娘。 ◆vP.bOZFQ :01/09/09 16:20
>>880
その通りでした(^^;
>>890 >>892
決断の一助となるべく賛成を表明(^^

894 :775 :01/09/09 16:21
>>893
賛成多数につき(笑)
やりまーす

895 :775 :01/09/09 16:33
>>894
ということでCUTRESLINKをON固定として条件削除しました。

896 :892 :01/09/09 16:46
>賛成多数につき(笑)
笑った。

897 :892 :01/09/09 16:51
そういえば、LASTMODもまだON固定にしてなかったよね?
ネスケ関係の問題ってLastModifiedを吐く側には対処できそうにないし、
ON固定にして、万一不具合が出てもその都度対処すればよいのではないかと。

898 :名無し娘。 ◆vP.bOZFQ :01/09/09 17:01
>>895
おつかれですー。
>>897
賛成ですー。

899 :名無し :01/09/09 17:11
批判要望板では、曜日は表示して〜〜〜とのことです。
会社行く日なのか判断出来なくなっちゃうよ〜〜〜。

900 :775 :01/09/09 17:14
>>897
んじゃLASTMODもON固定にしときます。

>>899
確かに曜日賛成。

901 :775 :01/09/09 17:21
>>900
LASTMOD ON固定にした。

>>891
+   || (resnumber && isSJIS1(*bufp-1))) /* 行末の文字化け対応 */
これってSJISの1バイト目でも2バイト目でもつかえるコードがたまたまそこにあると
誤動作するよね?

902 :デフォルトの名無しさん :01/09/09 17:22
「投稿日:」は削っていいから、「(日)」を・・・。

903 :775 :01/09/09 17:23
>>902
でも曜日ってread.cgiで消してるんじゃないんだよね(笑)

904 :名無し娘。 ◆vP.bOZFQ :01/09/09 17:26
私も曜日賛成。でも曜日はbbs.cgiなんですよねぇ。
read.cgiで現在時刻/日付でも表示しますか?

905 :デフォルトの名無しさん :01/09/09 17:26
http://homepage2.nifty.com/katuya/mp/index.html
わからないやつはここへ書き込め

906 :名無し娘。 ◆vP.bOZFQ :01/09/09 17:28
もうちょっとこのスレで粘って、>>875-877 でやりやすいとこから実装して
削っちゃって下さい。
>.hからいろいろなくなってるけど?
がちょっと気になります。。。

907 :デフォルトの名無しさん :01/09/09 17:42
>>901
誤動作(余分に不要な空白を吐く)けど、html上では無視されるので
大丈夫ではないかと。
というか、<br>の直前でも同じアルゴリズム(超単純な判定)で空白をカットしているはず。

908 :デフォルトの名無しさん :01/09/09 17:44
>>878に賛成。
今のところめいめいにdatをチェックして警告、スレ移行を行っているようだが、
dat/が見られないとそれもままならなくなり、混乱を招く可能性が高いのでは?

909 :775 :01/09/09 17:44
>>875

>PATH_INFO
具体的にどんな問題だっけ。最初のやつは >>873 で解決してるはずだけど
">>1"があるときにnofirst=trueでリンクしてしまって結局飛べないってのはあるか。

>CHUNK_ANCHORで1-が無い
無い? あるようにも見えるけど

>CUTRESLINK, replace系関数
CUTRESLINK削除済み

><a name>をつけるかつけないかをconditionによらせる
CREATE_NAME_ANCHORになってる

>スレスト時FORM
> >>11
なんか「ストッパー」があるかどうか判定するコードは入ってるみたい。

>>877
>condition一覧(更新しなくちゃ)
cvsのconfig.txtでメンテしてる

910 :775 :01/09/09 17:59
>>909
>>PATH_INFO
>具体的にどんな問題だっけ。最初のやつは >>873 で解決してるはずだけど
>">>1"があるときにnofirst=trueでリンクしてしまって結局飛べないってのはあるか。

">>1"のときに限りst=1&to=1&nofirst=trueにして一つだけ見られるようにした。
範囲指定時は1は除外されるままだけど。

911 :名無し娘。 ◆vP.bOZFQ :01/09/09 18:12
>>909
>PATH_INFO
残りは
http://kaba.2ch.net/test/read5x.cgi?bbs=net&key=998373518&st=151&to=200&nofirst=true
だけかな。リンクはったりはらなかったりしている。完全に逆転しているわけでもないようで。
>CHUNK_ANCHORで1-が無い
"1-"ではなく"1"ですね、おそらく。nofirst=trueになってしまっているのは
不便ではなかろうかということだとおもいます。>>910でおっしゃっている通りで。
どっちがよいのでしょうねぇ。

>>875-877 以降のもの
config.txtにcondition一覧(SETTING_R.TXTの有効事項も)
lock >>881 >>887

912 :775 :01/09/09 18:27
>>911
>リンクはったりはらなかったりしている。
これは>>884で修正したみたい。

913 :デフォルトの名無しさん :01/09/09 18:39
>>882は?
>>903
曜日は内部で解析してるからやろうと思えばできるはず…

914 :デフォルトの名無しさん :01/09/09 18:52
r2chhtml.h内のRELOADLINK関係でCGI_NAMEが使われてないっす。
CUTRESLINKがON固定になったので、res_split,findSplitterは消し。
doReplace, someReplaceも消し。
(out_htmlx内でsomeReplaceを読んでいる部分は全て不要)

警告出ししてみた。

read2ch.h
/* 「大きすぎます」の警告を出すまでのサイズ(KB単位)
 MAX_FILESIZE - CAUTION_FILESIZE*1024 を超えたら警告
 これが未定義なら、警告は出さない */
#defineCAUTION_FILESIZE16
/* デバッグ用
#defineMAX_FILESIZE_BUSY(MAX_FILESIZE - 64 * 1024) */

r2chhtml.h
/* ファイルサイズやばい: %d=超えた大きさ %d=表示できない大きさ %s=付加文字列 */
#define R2CH_HTML_HEADER_SIZE_REDZONE \
 "<p><table><tr><td bgcolor=red>\n" \
 "<font color=white>サイズが%dKBを超えています。%dKBを超えると%s表\示できなくなるよ。</font>" \
 "</td></tr></table>"

read.c html_head内の、最後のif(is_imode())の直前あたりに、
#ifdefCAUTION_FILESIZE
 if (zz_fileSize > MAX_FILESIZE - CAUTION_FILESIZE * 1024) {
  pPrintf(pStdout, R2CH_HTML_HEADER_SIZE_REDZONE,
   MAX_FILESIZE/1024 - CAUTION_FILESIZE, MAX_FILESIZE/1024, "");
 }
#ifdefMAX_FILESIZE_BUSY
 else if (zz_fileSize > MAX_FILESIZE_BUSY - CAUTION_FILESIZE * 1024) {
  pPrintf(pStdout, R2CH_HTML_HEADER_SIZE_REDZONE,
   MAX_FILESIZE_BUSY/1024 - CAUTION_FILESIZE, MAX_FILESIZE_BUSY/1024, "時間帯によっては");
 }
#endif
#endif

915 :775 :01/09/09 18:59
>>914
とりあえず
r2chhtml.hのRELOADんとこでCGINAMEを使うようにして、
read.cでres_split, findSplitterは削除した。

916 :デフォルトの名無し :01/09/09 19:07
そろそろ次のスレッドの準備を
名無し娘。よろしく!

917 :914 :01/09/09 19:08
あ、警告文字列はコピペだし、
#ifdefで判断する部分と実際の数値を同じdefineで扱ってしまっているので、
その辺は適宜変更お願いします。

918 :774 :01/09/09 19:13
>>914
適当に突っ込んでみた

919 :775 :01/09/09 19:15
>>918
774って買いてしまった。775ね

>>914
>doReplace, someReplaceも消し。
>(out_htmlx内でsomeReplaceを読んでいる部分は全て不要)
これイマイチ不安なんだけど、どうなのかな。

920 :デフォルトの名無しさん :01/09/09 19:15
/*
findSplitterの代わり

これも削除しましょう。関数がなくなったのにコメントだけ
残ってると混乱の元

921 :デフォルトの名無しさん :01/09/09 19:27
>>919
someReplaceは !TYPE_TERI のconditionの中にしかありません。
不安ならdoReplace, someReplaceを
#ifndef TYPE_TERI
#endif
で括っては。

922 :775 :01/09/09 19:34
>>920-921
 両方やった。

923 :デフォルトの名無しさん :01/09/09 19:54
http://kaba.2ch.net/test/read.cgi?bbs=news2&key=999391480
http://kaba.2ch.net/test/read5x.cgi?bbs=news2&key=999391480
これって倉庫落ちしてHTML化を待っているdatの保存場所が
変わったことを意味してると思うんですけど、保存場所を
教えてもらうことはできるんでしょうか?
ブラウザで見ることができない位置(public_htmlの外とか)にあれば
とくに差し支えないと思うんですけど。

924 :デフォルトの名無しさん :01/09/09 20:17
ストッパー・1000オーバーのRELOADLINK非表示

dat_out後半の#ifdef RELOADLINK - #endif を
最後の
if (strstr("ストッパー")・・・

html_foot()
の間に移動。
if 文内の条件を
 if (!level && lineMax == lineLast) {
→if (!level && lineMax == lineLast && lineMax <= RES_RED && !threadStopped) {
に変更。

925 :775 :01/09/09 20:21
>>924
あてた

926 :デフォルトの名無しさん :01/09/09 20:22
最近のストッパーは投稿日が「停止」になってるので
それの対応も必要ではないかと。

927 :デフォルトの名無しさん :01/09/09 20:25
if( s[2]!=0 && strstr( s[2], "ストッパー" )) threadStopped=1;

if( s[2]!=0 && (strstr( s[2], "ストッパー" ) || strstr( s[2], "停止" )) threadStopped=1;
でいいかな?

928 :デフォルトの名無しさん :01/09/09 20:26
閉じ括弧が1個足りなかった。
if( s[2]!=0 && (strstr( s[2], "ストッパー" ) || strstr( s[2], "停止" )) ) threadStopped=1;

929 :デフォルトの名無しさん :01/09/09 20:28
「停止」になってるスレひとつ教えて(笑)
datとってきて確認したかったり

930 :デフォルトの名無しさん :01/09/09 20:30
じゃあ一例
http://ton.2ch.net/test/read.cgi?bbs=gline&key=997994037

931 :775 :01/09/09 20:34
>>930
さんくす。確認したのでcommitした

932 :名無し娘。 ◆vP.bOZFQ :01/09/09 20:41
みなさまお疲れさまです。新スレです
http://piza2.2ch.net/test/read.cgi?bbs=tech&key=1000035521&ls=20

このスレで完結できそうな話題は、このスレで続けちゃっていいと思います。
次スレに持ち越しそうなものは、早めに見切りをつけて移動しましょう(^^

933 :デフォルトの名無しさん :01/09/09 20:59
>>923
過去ログ倉庫のスレにも情報無いですね。
http://green.jbbs.net/computer/bbs/read.cgi?BBS=20&KEY=992663547&LAST=50
次スレに持ち越して、夜勤さんに聞いてみるしかないか。
ひみつかもしれないけど。

934 : ◆D69Zsbfg @夜勤 ★ :01/09/09 21:14
秘密というか、今の状態は暫定です。
dat とかその辺は、全面改修の可能性あり。
たぶん、dat 直読みはできなくなるでしょう。。。(多分だけどね、まだ決まっていない)

935 :デフォルトの名無しさん :01/09/09 22:07
こんな早い時間?から、お疲れさまですー。

936 :名無し娘。 ◆vP.bOZFQ :01/09/10 00:29
このスレで実装・検討待ちの案一覧

gzip/zlib関連conditionの整理
 gzip/zlibをconditionなしで採用し整理

#define Katjusha_Beta_kisei されていない(元はdefineされていた)

URL記述に対するリンク設定も時間帯によらせる
 >>817

"投稿日"非表示を時間帯によらせる

FORCE_304_TIMEの動的変動
 鯖負荷に応じて動的に変更する

CHUNK_ANCHORでnofirst=trueになっているが、どうか

mmap時にlockすべきか
 >>139 >>425

dat,kako
 /kako/ に対応
 ツール作者さんに対応お願い
  * raw=xxx.yyy の形式でリクエスト。 xxx=最終レス番号, yyy=そのときのサイズ。
  * 一行目はステータス:
  * [+OK] の場合は差分のみを送信する。
  * [-INCR] (Incorrect)の場合はすべてのデータを送信する。
  * [-ERR (テキスト)]の場合はなんかエラーが起きた。

datの一部についてのLastModを求める

NN4.72でgzip圧縮&&Content-LengthがあるとLast-Modifiedが無効
 >>872

キャッシュであぼーんされたレスが見える?(詳細不明)
 http://teri.2ch.net/test/read.cgi?bbs=saku&key=996761078&st=408&to=408&nofirst=true

deflate/板ダイジェスト/スレッド一覧/スレインデックス
 >>680 >>696
 そのうち対応

過去datの場所が変わりそう
 >>923 >>934

condition一覧/SETTING_R.TXT記述一覧
 http://www.gedoh.org/aki/2ch/current/bbs/config.txt
 追加すべきもの
  >>914
   CAUTION_FILESIZE xx, MAX_FILESIZE_BUSY (xx) (デバッグ用)
  http://cocoa.2ch.net/test/read.cgi?bbs=unix&key=998695422&st=81&to=81&n=true
   CM_BBSPINK, LOGLOGOUT x, TYPE_TERI, Katjusha_Beta_kisei

r2chhtml.hいろいろ
 http://natto.2ch.net/test/read.cgi?bbs=hp&key=999020167&ls=20

その他
 http://www.gedoh.org/aki/2ch/tiki/

937 :デフォルトの名無しさん :01/09/10 00:59
>>914を確認したいんだけど、現在kaba鯖上に450KBとか、そういうでかいdat
が見当たらない……

どのように動作確認すべきだろうか?

938 :デフォルトの名無しさん :01/09/10 00:59
>>937
MAX_FILESIZEを小さく書けばいいんでは

939 :デフォルトの名無しさん :01/09/10 01:04
>>937
確認のために巨大なコピペを貼りまくる

アクセス制限を喰らう

(゚д゚)ウマー

ってかkaba鯖バージョンは警告未対応では?

940 :937 :01/09/10 01:47
>938
……おれはなにをボケているんだろうか。
多謝。

>939
アクセス制限は勘弁願いたいが、警告未対応というのはマジですか?
テストされていないということ?

941 :デフォルトの名無しさん :01/09/10 01:50
>>940
警告のコードが入ったのは夜勤さんが昨夜入れてからだってこと。
今日入ったpiza2版にはたぶん入ってる。
つーかいい加減新スレ行きなされ。
http://piza2.2ch.net/test/read.cgi?bbs=tech&key=1000035521

942 :937 :01/09/10 01:52
恥の上塗りだ……

>940の発言は忘れてください……

943 :デフォルトの名無しさん :01/09/10 06:38
とにかく、この2日間は、大車輪の活躍をしてくれた、
775さん、
名無し娘。 ◆vP.bOZFQさん
884さん、
886さん、
等に感謝したい。

本筋に関係ないので前スレで。

944 :デフォルトの名無しさん :01/09/10 22:23
[r2chhtml.h]
//***********************************************
・追加
#define R2CH_HTML_TAIL_SIMPLE \
 " (%02d:00PM - %02d:00AM の間一気に全部は読めません)<br>\n"
/* テストなので使っていないけど */
#define CHUNKED_ANCHOR_SELECT_HEAD(bbs,key) \
 "<form><select onchange='" \
 "var st=parseInt(this[selectedIndex].text);" \
 "location=\""CGINAME"?bbs="bbs"&key="key"&st=\"+st+\"&to=\"+(st+49)+\"&"NO_FIRST"\";"\
 "'>"
#define CHUNKED_ANCHOR_SELECT_STARTNUM(num) \
 "<option>"num"-"
#define CHUNKED_ANCHOR_SELECT_TAIL \
 "</select></form>"


[read2ch.h]
//***********************************************
・ALL_ANCHORとLATEST_ANCHORをなくしたいので
LATEST_NUMの扱いをRES_NORMAL等と同様にしてほしい。

//***********************************************
・追加
/* select form形式で CHUNKED_ANCHORを表示する */
/*#define CHUNKED_ANCHOR_WITH_FORM
「掲示板に戻る」「レスを全部」「最新レス」との統一が取れていない
*/

945 :デフォルトの名無しさん :01/09/10 22:24
[read.c]
//***********************************************
・前半にある#ifdef LATEST_ANCHOR - #endif を
全て条件を外し、中身を生きに。(全部 #ifdef USE_SETTING_FILE の中)

//***********************************************
・out_html()の後半、/* imode */ の手前、
  if (isbusytime && out_resN > RES_NORMAL) {
   ・・・
   return 1;
  }
の部分を、
  if (isbusytime && out_resN > RES_NORMAL) {
#ifdef CHUNK_ANCHOR
   pPrintf(pStdout, R2CH_HTML_TAIL_SIMPLE, LIMIT_PM - 12, LIMIT_AM);
#else
   ・・・
#endif
   return 1;
  }
に。

946 :デフォルトの名無しさん :01/09/10 22:25
//***********************************************
・html_head()
#ifdef CHUNK_ANCHOR
 int i;
#endif
警告が出るので削除。

//***********************************************
・同、html_head()の真中辺りから、 } else { の手前(その下がimode)まで、
#ifdef ALL_ANCHOR
 ・・・
#endif
#ifdef CHUNK_ANCHOR
 ・・・
#endif
#ifdef LATEST_ANCHOR
 ・・・
#endif
を、
 /* ALL_ANCHOR は常に生きにする
  ただし、CHUNK_ANCHORが生きで、かつisbusytimeには表示しない */
#ifdef CHUNK_ANCHOR
  if (!isbusytime)
#endif
  {
#ifdef USE_PATH
   if (path_depth)
    pPrintf(pStdout,
     R2CH_HTML_PATH_ALL_ANCHOR);
   else
#endif
    pPrintf(pStdout,
     R2CH_HTML_ALL_ANCHOR,
     zz_bs, zz_ky);
  }
  html_thread_anchor(1, first_line()-1);
に。

947 :デフォルトの名無しさん :01/09/10 22:26
//***********************************************
・html_foot()
最初から、
 if (line <= RES_RED && !stopped) {
の手前までを、
static void html_foot(int level, int line, int stopped)
{
#if 0
 /* 初期化した数値を再び使うのはダイジェスト関係だけのはず */
 out_resN = 0; /* ここで初期化するといいらしい? */
#endif

 if (is_imode()) {
  html_foot_im(line,stopped);
  return;
 }
 if (last_line() < lineMax) {
  /* RELOADLINKの表示条件の逆なんだけど */
  html_thread_anchor(last_line() + 1, lineMax - LATEST_NUM);
#ifndef CHUNK_ANCHOR
   /* 最新レスnnがかぶるので苦肉の策
    LATEST_ANCHORを生きにして、なおかつ末尾に持ってきているので
    out_html内の R2CH_HTML_TAILを修正するほうが
    処理の流れとしては望ましいが、
    「混雑時にCHUNK_ANCHORを非表示にする」等の場合には
    再修正が必要なので保留 */
  if (!(isbusytime && out_resN > RES_NORMAL))
#endif
  {
   /* LATEST_ANCHORも常に生きにする */
#ifdef USE_PATH
  if (path_depth)
   pPrintf(pStdout,
    R2CH_HTML_PATH_LATEST_ANCHOR,
    LATEST_NUM, LATEST_NUM);
  else
#endif
   pPrintf(pStdout,
    R2CH_HTML_LATEST_ANCHOR,
    zz_bs, zz_ky,
    LATEST_NUM, LATEST_NUM);
  }
 }
に。

948 :デフォルトの名無しさん :01/09/10 22:27
//***********************************************
html_head()の手前あたりに、以下・・・最後までを追加

#ifdef CHUNK_ANCHOR
/* first-lastまでのCHUNKED anchorを表示
firstとlastはレス番号。firstに0は渡すなー */
static void html_thread_anchor(int first, int last)
{
 int line = ((first - 1)/ CHUNK_NUM) * CHUNK_NUM + 1;
 if (first <= last) {
#ifdef CHUNKED_ANCHOR_WITH_FORM
  pPrintf(pStdout, CHUNKED_ANCHOR_SELECT_HEAD("%s", "%s"),
   zz_bs, zz_ky);
  for ( ; line <= last; line += CHUNK_NUM) {
   pPrintf(pStdout, CHUNKED_ANCHOR_SELECT_STARTNUM("%d"),
   line);
  }
  pPrintf(pStdout, CHUNKED_ANCHOR_SELECT_TAIL);
#else
  for ( ; line <= last; line += CHUNK_NUM) {
#ifdef USE_PATH
   if (path_depth)
    pPrintf(pStdout,
     R2CH_HTML_PATH_CHUNK_ANCHOR,
     line,
     line + CHUNK_NUM - 1,
     line);
   else
#endif
    pPrintf(pStdout, R2CH_HTML_CHUNK_ANCHOR,
     zz_bs, zz_ky,
     line,
     line + CHUNK_NUM - 1,
     (line == 1 ? "" : NO_FIRST),
     line);
  }
#endif
 }
}
#else
#define html_thread_anchor(first, last)  /* (void)0 nothing */
#endif /* CHUNK_ANCHOR */

949 :デフォルトの名無しさん :01/09/10 22:28
/* 最初と最後に表示されるレス番号を返す(レス1を除く)
imode未対応, isprintedと同じ動作を。
*/
static int first_line()
{
 if (nn_st)
  return nn_st;
 if (nn_ls)
  return lineMax - nn_ls + 1;
 return 1;
}
static int last_line()
{
 /* html_footを呼ぶ時に最終表示行を渡すようにすれば要らないんだけど */
 int line = lineMax;
 if (nn_to && nn_to < lineMax)
  line = nn_to;
 if (isbusytime) {
  int busy_last = first_line() + RES_NORMAL - 1 - is_nofirst();
  /* 細かい計算間違ってるかも */
  if (busy_last < line)
   line = busy_last;
 }
 return line;
}

950 :775 :01/09/10 22:36
これは何ですか? (^^;

951 :次スレ166 :01/09/11 17:35
H4sICBbKnTsAA2RpZnMudHh0ANVa/2sbyRX/eQP5H0Y+LkjWKtGuZFuqLr3TOUosIslGUi7X
byw+ax2LcyQjrU3vgn7wGNpLzl/SOl8o9O4Hc5Q2d20oR+4OyhVa4vQM9kEhtJTeDymFloQW
fFBa6E99Mzuzs7uaVaTYaVMFx9rZmXnvfd6b9208PDyMWuZ07fjM8WbrwtEjsViMPR89Muz5
0GekjY6q2ph+9AhCz9Vna+YsmirnXsmVquVcYTJ7iowr9YaFTjdbM6aRiCeNav2imaHzzUat
Pgsk2EqlkK3mKlUjWxqfmCw7KwvTltm2jNLiRc8q/rbeeL06fWF80crYzNoMaShGPgdhS06+
myhCHVQxLaveuNBGJ9GlIJxSwFbSS6B/uWM95e5mAWaVcxXja7lCYfK8ypEZI6oSyDw9BPzk
pYikNFVLjblw6FbR6cnyeM5mLl/MqX1aDRspnSuqPnEK+dLZavbM+Lkqx2QsDUwk/dYyGCvd
JL2EAJ9MEAYJIJ/u0yo8RGKBctnkEGpbrcUZi6iDSpqKA6kRl/YPLJGbhEw6PZ5UdS3eE9ZL
ypCXjyFVOcaN6bjXOFWl068JwLZCAM+Wwpr927FljpzeZY7B01UEUT0eV/X4SB+2cxAhBxSm
fxGCrVKPj4Le9D6tsn/uYk8ENbe15xYbhAHhV7gWNNDCqMuun2G0pVJIVaCPqXoi4VrhFYm+
gOF6w/S9UQIk7e/gMGICADchMapIMPEQIIrRQTG6SzFPQZCDM8yWOzoMUEcCjnpitNc5OBAj
MYlELpZcGzmjisTSBDTKiWHlXCVnVHLVar50xjidL+SU4RNcMwnQTMqlmacI5yHyLtNMWh9R
0wkaYxT4zAOhUjNiJypKx/5Vn0Xhevu1xfYbFtgPOnYMNRcto2W2S+iriJzE0mS5mC1E7MyF
5YuEg6lsdYLtTPZYmLbmjJq5YM1FOL2FqRakQ7PhhYpVg01ZZEhrYyow5vJJh8FalLNWyU1l
y6ALY3ziXOmsY4NRJGEIlfXxCWOiWiwY1Wy+YFTyxalCTkWFfDFfNaaKCDIDnT9mi4Q9oGPO
t81DwEKqsCRgM6LzRYoQUu051oNhOqNlWoutBtI8+HYQkQRdUsCmUP1is2YixE9BOqmr6WTK
q6TDYCfqjiYDMiYPx/ERCHEaM3K2X7s1Y+/InsMLKIo0Gw5K48TwAT8n7F0UYjxoIpc9lStT
0RX+5uD7szSKRPAxjyb6EzKKxKlQAk8FvKdeqWvcbLWaLfk61DDNWht1L7EV6/lmk/dPBb3O
1lttKzY/3bbwF3gb79IpuVNoujEz12zh/evfXP8RmQofOhXfo3P3VlZXXr12f+07yy/bwztx
vLfZwB/jz5a/Qa0kCon3tFWfQUvNeg3NWRfnDWuOVOmGvXWYlGh0rYrIV7JthCyjXoQWcMQb
Qa0WDtNpxIojJ5i44N8jaFg8EMgz9kI4+Pb8F07am7r9ksLkYyAY5/PVCQNietF2TV2eyTe9
kivkxqsGMbTw0PPtIRWR/yMqc2xvvmm81lYR/Hr9DfuUKcpss4XCKGMLw1hiT9GTbmkuBXlH
OQ+VarZchYXAR01wQPbllDsDyUQ8r8ezDs58lyeOSj1xNMATR5knc4IB2cRj8WISYcH7BBYg
rAFMRUWe1xwUhQsnDoeMG1dIkjPgVvUTshW27fsk0tCLaGgIfQWVJiGRKFeqEVXKe8fHN33u
eFTG8xjJeWNnjR4J6tLD5GRG4nCyG01rDlIddm6dDEcexNks5j/Wtjcu43tr26t/xjvEV+AP
8SP8kHsH8B/38cdh8oin8P7GD/FPI8yb0IByY+t7n19+FxxAe4Hgb9bwvc3b+KPNn639De8v
v0ymenyJ4zMMgkvY7S/AyhoNg/kQxznToYx7xnzbO4NsVJz+NuiGvhSOxBUTGcouJgiKXTwA
HBT32WbTwvurd/H99XfxDiCUJ8istfE+9ZB/we/hHfj9CH9+cwn/FX+Gt/CX+Jf4Nv4Nk9bt
/Rh/HhmsJsnC7C8v8BlMLLaMvhSLRP7mOBpCgwwaRBZY4cYVUBAJBTFb+Km3jUaTTgpzgyT6
/z3+Cd5aXVr/+pX7b/0J/wrfxQ9h5AGXhFIXZGxuuRNgvDqvM8Ks3eoRGvh/yRm8AzxF0kgv
RksdnhAitM7BQacRdd5cMudVNDM33UIzzQZAPmzVrXmTBVkbfEQbbtxfe7OCmG19dV9D1+6q
gi4pAVaGBNUWJFMCUVMJkS49AwIPIISXtNMpJEKNpJ38mtGhoSDi70oTMw5xiLOFggNwqDtO
hpAkTIZkyQAb9gdJsX8kg+w5TnnkzvO7t0O+7cROXJealiCdNt1XhPQhPPEPYj+E9zb+jneu
foTfp+7vIZ0CkQB/Cs7vznLWbYf4Fp23vZwFZ/Jr4b1g5R4NM3eI26ROJiTPbjmmIZfr83Mp
r6Xlyh8h9c3oaDdiMgUgiQL61KdHAfZLb1pJ9Ss2lR7iEM/d6uBetQyq0+SNuFL42pW5HUo/
AewkReyk+57Cyxp6jF5CgXo5eF0PCkySMi5xCPuH+slW2aS666ssIeTvnEaB9PAOkKTaCtF1
opBU1zXj4YosMf0++Q9S0hiJkynNcTXBuIQGxCUkTd4H0xI5UwE5u1+PHcEryZW7smhHI75O
LVMfeBwtkfA3fwZHX46SRJ8S39PtfIRgPXsaZJqkCgEk3YlmjDZKAsxgjJhB0pG8B/B+Q+kI
HykFPhQAfMARkZ+QID+op0FvSS1Qbx6UUW+UQ49BOTQAyiFeJgYv4qVExhtjGB+KXVzWwh7U
IqQWCfFXUj4jB0ZWbiFp4ijSkpjsYdBB2Xfs7UHXHTIS370IuJqh8ozR5XHyxclTOcMuKwyN
k3FnS+5fwAittOgq/oIbUhIOgDbicwBPSUiSq3k2ZA7qvyy4VM/aCMksRhOHV0d0tSZJye4u
J3jtYH9rW82FBbMmCgnFuQE5ieIZgh3+Ofzb3rh85d+Xf0GSW3wPqvotqO7v4K0XGZZO+QGl
NG1/hCMR/qcPOkip6ro7zX4WRBWd6eALHZCeyX0Hf3r12vfn8f7aXfzb9Qv4PbyL91aMlfGV
8yunV15duXDld6vnaacDxvEn3MSeCEx3aeoV27Ea4odHk8+evp3QSLiAN7QRqHKiGccgUsQg
vPl0L1Wg/40qorIuwaASyzVIsnVtNN3HenEfYz90RKnPWtfE2ZRzp2iw4gt7FD/ewEQSj0SE
K0YHtvQRz9XpoMw9/kbIZl60GV2NPt7BA/XYf8BDbq3xLqmLN/ZXN/Du2xZUx76Woiziu7eP
IhH/IeP1RgneyAv1dREs7jJog/jqK6T/22jgW1DL3wcT2sXbbz/a/BfeXfsHm4eQN/jgfdYm
uIPvLmdBmB+TNsCNG9f+iXfW36FdxvfhZ8veTGxC+CFybj7Au8svea+V8f7G+NUPqQ3/AY7D
LbFq462b7+Ddmx/gR2DdQBHv3fgW/oJYOL61nBXzlhfXPlg/Q3q6nlbF/rUvaUuCNjWWlzZ/
gHc3Hq19l7QqxNq1u5T6retnby6BPMD19T/evM2V4w+++IG3VcIPmuyCRX6/EnS94isf/DlE
9DHpQhQF3KA8np6clPQepTf9jugSu/8K9LDP+n8A6D+NSmYsAAA=

952 :外出ですか? :01/09/11 22:40
http://ton.2ch.net/test/read.cgi?bbs=sec&key=996966367&st=40&to=40&nofirst=true

953 :外出ですか? :01/09/11 22:42
スレ違い。

954 :スレ埋め改良スレッド :01/10/14 20:43
    スレを埋めに来ました
______ __________
         ∨
   ------------- 、____
  /  ̄ ̄ ̄.// ̄ ̄|| |___/\○ ○
 /     //     .|| |  \\○○○○
[/______. //[ ]    || |    \\○○ ○
.||     |_| ̄ ̄  .|.| |___\\○○○○
.lO|--- |O゜.|______ |.|_|ニニニニニニl.|○○○○
|_∈口∋ ̄_l______l⌒ l.|_____| l⌒l_||  ○○○○
──`--'───`ー'─── `--' `ー' ┐ ○○○○
                         │  ○○○○
                         │   ○○○○
                         │ ミ  ○○ ○○   〃
                         │  ;:○○ ○○; ’〃、、..
                         | ミ ミ\○ ○゙○ ○/ミ
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~〜〜〜〜~~~~~~~~~~~~~~~~~~~

955 : :01/10/19 17:22
http://www.oldandmature.de/oldandmature3/pictures/menapril0005.jpg

956 :-- :01/10/19 17:26
http://www.oldandmature.de/oldandmature3/pictures/menjuly0075.jpg

333KB
新着レスの表示

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

0ch BBS 2004-10-30