X



bbs.cgi再開発プロジェクト7

■ このスレッドは過去ログ倉庫に格納されています
1root▲ ★
垢版 |
NGNG
bbs.cgiの開発作業をすすめていくためのスレッドです。

FOXさんの努力によりSpeedyCGIへの対応が行われ、
パフォーマンスの向上が図られたbbs.cgi。

・雪だるま作戦への対応
・さらなるカスタマイズ
・パフォーマンスの向上
・微妙な虫取り
・長いメインルーチンをより短くコンパクトに

あたりがターゲットか。

前スレ:
bbs.cgi再開発プロジェクト6
http://qb5.2ch.net/test/read.cgi/operate/1113117347/
2005/11/02(水) 17:06:52ID:LLtT2fuS0
/i

っていまだに生きてるんでしょうかね?
もしそうでなければ「Apacheレベルでcへリダイレクトに変更」でもかまわないとおもうのですが・・・

# たしかiってcの前身でいいんですよね?
NGNG
前スレの終盤で出た事項:
・/i はのろいらしい
・で、ほとんど取ったつもりだが、まだちょっとだけ残っているらしい

988 名前:root▲ ★[sage] 投稿日:2005/11/02(水) 16:46:50 ID:???0 ?###
友人の話では、Perl では /i の処理がめちゃんこ遅いという話があるらしい。

つまり、
if($ENV{'SERVER_NAME'} =~ /2ch\.net/i)

みたいなのも、ちりも積もれば山となる可能性ありと。

989 名前: ◆SSu.zv/rvs [sage] 投稿日:2005/11/02(水) 16:48:01 ID:4sehsTr40
ほとんど /i は取ったつもりだけど・・・

990 名前:▲ ◆SANUKI/VII [sage] 投稿日:2005/11/02(水) 16:48:34 ID:j49UPKofP
iってまだあったっけ?

991 名前:root▲ ★[sage] 投稿日:2005/11/02(水) 16:50:00 ID:???0 ?###
>>989
多くはないみたいですが、いくつか散見されるようです。
(>>988 は実際のソースからのコピペ)

992 名前:root▲ ★[sage] 投稿日:2005/11/02(水) 16:54:08 ID:???0 ?###
気づいたところは、私のほうでも取っておくです。
今ざっと見直してみましたが、たぶん、もうそんなにないと思いますです。
NGNG
>>3
えっと、そうじゃなくて、文字列比較の時の /i です。
つまり、大文字小文字を区別しない場合の話。

どうも、Perlってこんなかんじのことをしているらしいのです(裏とっていないのでうそかもです)。

/ABC/i の処理

abc
abC
aBc
Abc
AbC
ABc
AbC
aBC
ABC
と、それぞれ比較
NGNG
あ、AbCがひとつ多いね。
NGNG
おじさんが急いで1000取りしてるように見えた
2005/11/02(水) 17:33:35ID:4sehsTr40
正規表現をインタプリタで動かしたら
1,000万はあながち嘘じゃないっすよ
2005/11/02(水) 17:38:30ID:34OWbqDs0
Perlをインタプリタと言い切るのは誤解の元
NGNG
>>8
複雑なのをくべると、まじめにありそうですね。< 1000万

/i の件については、知り合いのPerlプログラマの話だと、

/ABC/i
/[Aa][Bb][Cc]/

で、下のほうが明らかにパフォーマンスがいい(というか、上が悪杉らしい)そうなので、
Perlの /i の実装がへぼいということの模様です。
2005/11/02(水) 18:03:00ID:LLtT2fuS0
>>10
あーその話ですか、スマソ。では本件の場合は2ch.netの大文字小文字区別なわけなので

if($ENV{'SERVER_NAME'} =~ /2ch\.net/i)



if($ENV{'SERVER_NAME'} =~ /2[Cc][Hh]\.[Nn][Ee][Tt]/)

とすればいいんでしょかね。
NGNG
>>11
そういうことなわけですが、
現状、単純に /i を取ってしまってもいいような気がします。
2005/11/02(水) 18:08:47ID:34OWbqDs0
ttp://qb5.2CH.NET/ではアクセスできないんだっけ?
ドメインはCase無関係だよね
2005/11/02(水) 18:09:02ID:4sehsTr40
わたしは
2005/11/02(水) 18:09:22ID:4sehsTr40
iをとってコーディングしています
NGNG
>>14-15
…ですね。ほとんどの部分はそうなっているです。

>>13
規格上はそうですが、そのへんはいろいろ微妙なようですね。
小文字に直してから送出してくるブラウザやシステムも、少なからずある模様。
2005/11/02(水) 18:13:03ID:4sehsTr40
実際にはそれで(iなし) 何の問題も起こっていません
2005/11/02(水) 18:15:39ID:4sehsTr40
ちなみに

2CH.net 等でアクセスしたら(bbs.cgiにそう入ってきたら) Samba24=600 にしてます
2005/11/02(水) 18:40:49ID:NA5zqcSJO
iがどのくらい遅いかは、考えるより測ったほうがいいんじゃない?
use Benchmark;で。
NGNG
>>19
そんなのあるですか。

とりあえずできるだけ(数箇所ですが)、追放してみた。 @ qb6
様子を見て配布予定。
2005/11/02(水) 18:48:02ID:mRTXrOn10
>>18
$ENV{SERVER_NAME}はブラウザから渡される値を直ではなくapacheが生成するのでは?

まあ/iが高価なこととは関係ないんだけど
2005/11/02(水) 18:52:20ID:4sehsTr40
いやー

言いたいことは 「iは使わない」という方針でやっているから
議論の意味がないということだったり
NGNG
>>22
999(仮名)をみるところも、/i 追放してよかですか?
2005/11/02(水) 18:54:37ID:4sehsTr40
できるならってことかと、
NGNG
>>24
なるほど。
じゃ、追放したいですね。1レスごとに絶対になめるところだから。

追放しますので、規制リストを書く時には気をつけてくださいーって、
ちょろさんに伝えておいてくださいです。
2005/11/02(水) 18:58:26ID:4sehsTr40
ちょろさんがやっているのは一面かと、
多面はアクセスする側だったり、、、
2005/11/02(水) 18:58:56ID:4sehsTr40
他面だった
NGNG
sec2chdを見ている限り、大文字小文字がきちんと入るなら、
現状ならアクセスする側も実害はないかなと、思っていたり。
2005/11/02(水) 19:07:10ID:34OWbqDs0
use Benchmarkも良いけど、プロファイルもね。
NGNG
>>29
ですね。
プロファイリングのおかげで、
改良前のIsKoukokuがめちゃくちゃ高コストだったことがわかったです。

今は※の人の改良のおかげで、live系以外は有効にできました。
NGNG
BBS.CGI - 2005/11/03

index.html にできるリンク関連を修正。

・www2.ime.st => www.ime.st
https:// でも ftp:// でも http:// になってしまっていたのを修正(虫取り)
・同時に /ig も追放。
2005/11/03(木) 05:17:16ID:nCUOBDm10
root氏めちゃくちゃおっつぃんぐ
NGNG
さらに調整。

https:// と ftp:// は ime.st / pinktower.com を経由しない
(bbs.cgiが当初の思想として予期した動作)
http:// の外部リンクは ime.st / pinktower.com 経由(従来通り)
・gopher: whois: news: telnet: の特殊処理を廃止
https:// と ftp:// の処理は、一部サーバ(live系など)ではリンクにしない
http:// は従来通りどのサーバでもリンクにする
NGNG
重そうな正規表現パターンマッチングを少しは整理できたと思うです。
html/ の下のやつ全部、この処理通っているので、
意外とばかにならないんじゃないかなと。
NGNG
>>33 は、板トップ(index.html)生成部分の処理です。
(read.cgi ではないので要注意)
2005/11/03(木) 11:24:31ID:iErLJGey0
>>33
> ・gopher: whois: news: telnet: の特殊処理を廃止

そんなごにょごにょしてたんですか・・・
NGNG
>>36
大昔から、変わってなかったんでしょうね。

この4つは「私が2ちゃんねるに来た2001年〜現在まで、
一度もリンクとして使われているのを見たことがなかった」ので、
もはや不要であろうと判断したです。
NGNG
&jcode::tr(\$GB->{FORM}->{'FROM'}, '#', '#');
とか、
&jcode::tr(\$GB->{FORM}->{'mail'}, '#', '#');

とかって、もうちょっと効率よくできないのかしら。
NGNG
>>38
そんなあなたに・・・
use encoding;
http://search.cpan.org/~dankogai/Encode-2.12/encoding.pm
NGNG
>>39
それ、5.6.1でも使える?
NGNG
BBS.CGI - 2005/11/04

動きそのものは変わりませんが、雪だるまをめざして
bbs_main のかなりの部分をサブルーチン化しました。

$GB 操作しているのでカプセル化はぜんぜんですが、
自分で読んでいて、bbs_main が長すぎて頭がうにーになってきたので、
整理の意味を込めて、いじっています。

ひととおりのテストはしてありますので、大丈夫だとは思いますが、
もし何かへんなことがあったら、知らせてくださいです。
2005/11/04(金) 22:11:35ID:h/nc5pj90
|∀・)<いくらー
NGNG
>>40
http://search.cpan.org/src/DANKOGAI/Encode-2.00/encoding.pm
うー(苦笑)
=head1 ABSTRACT

Let's start with a bit of history: Perl 5.6.0 introduced Unicode
support. You could apply C<substr()> and regexes even to complex CJK
characters -- so long as the script was written in UTF-8. But back
then, text editors that supported UTF-8 were still rare and many users
instead chose to write scripts in legacy encodings, giving up a whole
new feature of Perl 5.6.

Rewind to the future: starting from perl 5.8.0 with the B<encoding>
pragma, you can write your script in any encoding you like (so long
as the C<Encode> module supports it) and still enjoy Unicode support.
This pragma achieves that by doing the following:

2005/11/04(金) 22:49:22ID:AKcR43oSO
もしかしてjcode.pl使ってるの?
だとしたら、MakefileしたJcode.pmの方が速いんじゃ?
NGNG
>>44
Jcodeは他のところで使っているはずなので、全サーバに入っているはずですね。

どうすればいいのかしら。
NGNG
>>44
おそらくほとんどのbanana鯖には入っていないと思うので、
かなりむりぽかと(哀)@なのでPerl5.6.*のまま

>>45
なので、banana鯖に入ってJcode.pm 0.88あたりをゲトして組み込まなきゃだと思うのですです(泪)
最新のJcode.pm は2.1*でしてEncode.pmのラッパになっていたりします。@5.8.*

なので、PIEの中の人にbananaにperlを5.8.*(最新は5.8.7)におながいしないと。。。
NGNG
>>41 ですが、まだまだ作業進行中です。
今は 40% ぐらいの進捗か。

先は長いとゆうことで。
NGNG
BBS.CGI - 2005/11/05
>>41 の続き。
49動け動けウゴウゴ2ちゃんねる
垢版 |
2005/11/05(土) 08:17:34ID:oU3fQSIn0
再開発に協力したいのですが、
一般人はソースとか見ること出来ないですか?
50動け動けウゴウゴ2ちゃんねる
垢版 |
2005/11/05(土) 09:19:57ID:cU0kVqJKP
>>49
そう言うことがわからない人は再開発しなくていいで(^_^;)
2005/11/05(土) 09:59:50ID:SUKMWkOMO
なぜ?
2005/11/05(土) 10:32:22ID:LYZ9MSO/0
そういうことが判らない人は(ry
53動け動けウゴウゴ2ちゃんねる
垢版 |
2005/11/07(月) 22:09:18ID:I44rESOi0
再開発に協力したいのですが、
一般人はソースとか見ること出来ないですか?
NGNG
協力するにも色々な方法があるわけでして♪
root★さんが悩んで居られるようでしたら助言をしてあげたり最適化したルーチンを提示したりとかとか♪

なんでもかでも「対等でなければならない」なんて孟宗竹なんてのは根っこから切り取らないと♪
2005/11/08(火) 03:17:02ID:???0
1000超えの判定って、html/ の下を作るところの最初の部分でやっているのね。
ちょっと、驚いた。
2005/11/08(火) 04:13:24ID:NtcGXxuC0
挑戦してみる?

よたしは毎年挑戦しようと思ったけど
負け続け、、、
2005/11/08(火) 04:22:33ID:???0
>>56
その様子は、何度かaccuse/operateを通じて見ているです。

なんか、いかにも効率悪そうで、気持ち悪くて、重そうなことをしてるんだなぁと
はじめて実際に、少しだけ気持ちがわかったわけです。
(これまでは、そこにたどり着く前に既に負けていた)

&MakeWorkFile を初めて呼ぶところの前までの整理整頓と、
できる範囲でのサブルーチン化は、それなりにやったです。

でも、そこから先が、、、。
たぶん、アイガー北壁なんだろうなと。

#==================================================
# ファイル操作(subject.txt & subback.html)
#==================================================

# 雪だるまサーバでは、以降のファイル処理はしない(bbsdが実行)
if(&IsSnowManServer($ENV{'SERVER_NAME'}))
{
&endhtml($GB);
}

####################################
# ここから先はまだカオス状態 by む #
####################################
2005/11/08(火) 04:32:01ID:???0
まずは読んでいたりします。

ここからは思いつきで手直しすると遭難しそうなので(何せアイガー北壁)、
じっくり、やってみようかなと。

とりあえず、
$GBX->{OVER1000} = 0 ;# 1000超えフラグ(現在は未使用)

を追加してみた。
2005/11/08(火) 05:04:58ID:???0
BBS_CONTENTS_NUMBER の意味を初めて知った私ガイル。
2005/11/08(火) 05:10:01ID:???0
BBS_LINE_NUMBER は、「省略されました」か。
2005/11/08(火) 05:14:02ID:???0
MakeWorkFile とりあえず読み終わり。
今日はもう遅いから、どうするかはいったん寝て考えるか。

とりあえず >>1 の処理と BBS_LINE_NUMBER 分のレスについての
おんなじような処理について、
べたにおんなじルーチンが2回書かれていたということはわかたです。
2005/11/08(火) 13:18:33ID:Im6W7Y3z0
BBS_CONTENTS_NUMBER分のレスかな。
1とそれ以外、同じようで違う。
まとめるのが面倒で放置って感じっすか。
2005/11/08(火) 13:28:47ID:wlYZz8W80
>>59
http://kobe.cool.ne.jp/r_030/2ch_jikken/SETTING.htm
これは見てなかったの?
2005/11/08(火) 13:53:33ID:???0
>>63
そのページは当然見てますけど、
これまでbbs.cgiについては私の知識がその程度だったってことです。
2005/11/08(火) 16:19:23ID:???0
こんなかんじかな。

#############################################################################
# 処理中のdatの現在のレス数を調べる
# 新スレの場合0、異常発生時は-1
#############################################################################
sub GetResNum
{
my ($GB) = @_;
my $resnum = 0;

# 1) 新スレなら0を返す
if($GB->{NEWTHREAD}) { return 0; }
# 2) subject.txtを調べてみる
# subject.txtはSaborin系サーバでも逐次更新されているはず
$resnum = &GetResNumFromSubject($GB);
# 3) とれなかったら仕方ないので、datの行数を読む
# 990超えている時も、安全のためdatを読む
if ($resnum <= 0 || $resnum > 990)
{
$resnum = &GetResNumFromDat($GB);
}
# 4) それも失敗したら、-1を返す
if ($resnum <= 0) { return -1; }
# 得られた結果を返す
else { return $resnum; }
}
2005/11/08(火) 16:23:35ID:???0
今は、毎回こういうことをやっているです。

open(RDAT,"<$dattemp");
@logdat=<RDAT>; #ログを配列に読み込む
close(RDAT);

#ログのカキコ数を取得
$lognum = @logdat;
if($lognum > 999)
{
if(open(OUT,">>$dattemp"))
{

my $b1000 = "このスレッドは1000を超えました。 <br> \
もう書けないので、新しいスレッドを立ててくださいです。。。 ";
my $p1000 = $GBA->{PATH} . "1000.txt";
(以下略)
2005/11/08(火) 16:28:33ID:???0
1000超えのdat追記部分は、Process1000ってのを書こう。
2005/11/08(火) 16:42:46ID:???0
>>65
通常の板だと、これだとコストが低くないかもなぁ。
subject.txt って、何百行とか千何百行とかあるわけで。
bbsdのように、mmap() するのもちょっとあれだし。

スレ数が少ない板は、subject.txt優先で、
スレ数が多い板は、dat優先がよさげ?
どのくらいが変更点なのかな。
2005/11/08(火) 16:43:22ID:???0
変更点じゃなくて、分岐点か。
2005/11/08(火) 16:45:36ID:???0
&GetHojisuu 書く必要がありそうですね。
こいつは出航時に1回だけ読めばいいだろうから、initFOXでやろう。
2005/11/08(火) 17:40:32ID:???0
>>70
mumumuGetHojisuu 実装済み。

出航時に、$FOX->{HOJISUU} にサーバの保持数が入っている。
2005/11/08(火) 17:50:05ID:???0
で、>>65 はこうか。

#############################################################################
# 処理中のdatの現在のレス数を調べる
# 新スレの場合0、異常発生時は-1
#############################################################################
sub GetResNum
{
my ($GB) = @_;
my $resnum = 0;

# 1) 新スレなら0を返す
if($GB->{NEWTHREAD}) { return 0; }
# 2) 保持数が少ない板では、subject.txt を調べる
if ($FOX->{HOJISUU} < 200)
{
# 2) subject.txtを調べてみる
# subject.txtはSaborin系サーバでも逐次更新されている
$resnum = &GetResNumFromSubject($GB);
}
# 3) 次に、datの行数を読む (2)がしくった場合も同様)
# 990超えている時も、安全のためdatを読むことにしよう
if ($resnum <= 0 || $resnum > 990)
{
$resnum = &GetResNumFromDat($GB);
}
# 4) それも失敗したら、-1を返す
if ($resnum <= 0) { return -1; }
# 得られた結果を返す
else { return $resnum; }
}
2005/11/08(火) 17:55:37ID:???0
このほうがいいか。

#############################################################################
# 処理中のdatの現在のレス数を調べる
# 新スレの場合0、異常発生時は-1
#############################################################################
sub GetResNum
{
my ($GB) = @_;
my $resnum = 0;

# 1) 新スレなら0を返す
if($GB->{NEWTHREAD}) { return 0; }
# 2) 保持数が少ない板では、subject.txt を調べる
if ($FOX->{HOJISUU} < 200)
{
# subject.txtを調べてみる
# subject.txtはSaborin系サーバでも逐次更新されている
$resnum = &GetResNumFromSubject($GB);
}
# 3) 次に、datの行数を読む (2)がしくった場合も同様)
# 990超えている時も、安全のためdatを読むことにしよう
if ($resnum <= 0 || $resnum > 990)
{
$resnum = &GetResNumFromDat($GB);
if ($resnum <= 0) { return -1; }
}
# 上記により得られた結果を返す
return $resnum;
}
2005/11/08(火) 18:07:21ID:???0
外枠を作った。

Perlがだめだめな私に、愛の手を。

#############################################################################
# subject.txtに書いてあるレス数を調べる
# 異常時は-1
#############################################################################
sub GetResNumFromSubject
{
my ($GB) = @_;
my $subject = $GB->{PATH} . "subject.txt";
my $resnum = 0;

# subject.txtを開き、中身を調べる
open(SUBJ,"<$subject");
# ここに実際の処理を入れる
# 探すためのキーは$GB->{FORM}->{'key'}に入っている
# Perlではどうやるのが高速なんだろう
close(SUBJ);

return $resnum;
}

#############################################################################
# datのレス数を調べる(行数を調べる)
# 異常時は-1
#############################################################################
sub GetResNumFromDat
{
my ($GB) = @_;
my $datfile = $GB->{DATPATH} . $GB->{FORM}->{'key'} . ".dat";
my $resnum = 0;

# datを開き、行数を調べる
open(DAT,"<$datfile");
# ここに実際の処理を入れる
# Perlではどうやるのが高速なんだろう
close(DAT);

return $resnum;
}
2005/11/08(火) 18:46:35ID:2de4x2Mv0
while (<DAT>) {}; $resnum = $.;

とか
2005/11/08(火) 19:34:21ID:NjmJiyb00
subject.txtから読む場合は、スレのタイトルに「<>」「(」「)」とか半角スペースが
入ってるとsplitで面倒になるかもね。出来るだけsubstr使うべきなんだろうな。

datファイルの行数調べるには・・・unixのwcコマンド使うとかw
2005/11/08(火) 19:34:42ID:???0
出先に移動。10分ぐらい時間が。

>>75
ひとつ、書き忘れていたです。

どうせ必要になるので、
datを読んだ時には、つまりGetResNumFromDatが呼ばれた時には、
そのdat内の>>1と、以下の条件(*1)で抽出した行のdatは、
内容を保存しておきたいですね。

つまり、datを複数回読み込みモードでopenしたくないわけです。

(*1)if BBS_CONTENTS_NUMBERよりもレス数が多い
お尻のBBS_CONTENTS_NUMBER行ぶんのdatの内容を保存
else
頭の >>2 〜 最後の行までのdatの内容を保存

これは、html/ の下のファイルを作るのに使っているですよ。

保存は、、、そうすね、
$GB->{DAT1} 文字列変数
$GB->{DATLAST} 文字列配列変数

っていうことにするか。

で、たぶんほんとは、subject.txt 的に上位のやつだけ作れるともっといいわけですが、
(つまり実際に index.html を合成する時に使うものだけ)
今は pageview.cgi があった時のコードのままになっているです。
つまり、1000個datがあれば、html/ の下のファイルも1000個あるです。
これは、別に考えることにしよう。
2005/11/08(火) 19:38:36ID:???0
index.html 合成するところで、判定すりゃいいのか。

1000000000.dat に対する html/1000000000.html の最新版が必要になったら、
html/1000000000.html と 1000000000.dat の mtime を調べて、
(この時点では dat への追記は終わっているものとする)
もし html のほうの mtime のほうが古かったら、dat から html を合成するサブルーチンを呼べばいいと。
2005/11/08(火) 19:38:50ID:???0
さて、いったん時間切れ。
またのちほど。
NGNG
つ open ゴニョゴニョ or return -1; # 500鰓で悩む恐れ有りなので
2005/11/08(火) 19:39:43ID:???0
で、$GB->{SABORIN} がtrueだったら、このへんの処理はキャンセルできると。
2005/11/08(火) 19:41:22ID:???0
>>80
現在、datのopenはメインルーチン内で堂々とやっているですよ。
ひろゆき的堂々人生。
2005/11/08(火) 20:04:30ID:NtcGXxuC0
>内容を保存しておきたいですね。

それがうまくいけば楽なんですけどね、
bbs.cgi が非同期で同時に 30本とか走っているんですよ。
FIFOとかじゃなくてさ、

「どれが最後に終わるかわからない」という話だったり、
平気で後から来たのが追い越していきます。

それとの戦いの痕跡かと、
2005/11/08(火) 20:14:25ID:2de4x2Mv0
$GB->{DAT1} = <DAT>;
@{$GB->{DATLAST}} = <DAT>;
$resnum = $.;
if ( @{$GB->{DATLAST}} > BBS_CONTENTS_NUMBER ) {
@{$GB->{DATLAST}} = splice(@{$GB->{DATLAST}}, -BBS_CONTENTS_NUMBER);
}

こんな感じになるんかな
でも>>83なのね
2005/11/08(火) 21:04:50ID:???0
>>83
ですね。

今のやつは、なんでもかんでもdat読んで配列に突っ込んで、
配列の要素数数えて、
BBS_CONTENTS_NUMBERより大ならおしりから、
より小ならあたまからhtmlにして、html/html に入れ込む
みたいなことをやっているです。
で、1000行以上あったら、1000超え判定していたりするです。

つまり、datの読み込みモードでのオープンは1回で済んでいるものの、
毎回datを全行絶対なめなめしているわけです。
このへんをなんとかしたいかなぁと。
2005/11/08(火) 21:11:57ID:???0
で、>>83 のこころは、
「subject.txt からとろうというのは誰もが思いつくわけだけど、
それって所詮非同期なんじゃないのかしら」

ってゆうことですよね。
ううむ。

> if ($resnum <= 0 || $resnum > 990)

ここを 900 とかかなぁ。
2005/11/08(火) 21:23:18ID:xTFEnbVV0
subject.txt更新前に別のbbs.cgiが参照するとずれるような希ガス
っていうかずれたからdat読みになったんじゃ?(違うかも)
2005/11/08(火) 21:28:11ID:???0
>>87
所詮、参考記録でいいと思っていたりするです。
クリティカルなところで、コストを少しでもさげられるといいなと。

そのへんが、>>86 の if 文なわけで。
どうしてもうまくいかなきゃ、GetResNumFromSubjectをあきらめると。
2005/11/08(火) 21:35:48ID:+RowFQSH0
まぁ,bbs.cgi やその他各種呪文用 CGI と bbsd との I/F が完成したら,
雪だるま系鯖以外でも bbsd を使うという選択肢もあるのでしょうけど.
2005/11/08(火) 22:05:38ID:xTFEnbVV0
>>88
参考記録といってもずれたままになりそうなのは気になる

個人的にはレス数と一緒にサイズも記録してあれば
少なくとも全読みは避けられそうと思っているけど
影響大きそうだからなあ
2005/11/08(火) 22:07:47ID:NtcGXxuC0
>参考記録

ってどういう意味?
2005/11/09(水) 00:55:26ID:???0
subject.txtから取ったレス数よりも実際のdatの行数がいくつか増えてしまっていてもいい、
ぐらいの感覚で書きました。

ただ、900超えたあたりからはクリティカルか。

いずれにせよ、毎回全読みするコストを何とか下げられないかな、というのが、
subject.txtからとる趣旨なわけで、それが期待できないなら、
単にサブルーチン化して、整理整頓するだけかなぁと。

# おじさん、インテンショナルな徹夜で時差調整中?
2005/11/09(水) 00:58:26ID:kbrSpD780
>subject.txtから取ったレス数よりも実際のdatの行数がいくつか増えてしまっていてもいい、
>ぐらいの感覚で書きました。

わたしもその意見には賛成で、実は以前それを実験しました。

で、結果はというと、
惨憺たるものだったかと、たしか専用ブラウザが困ってしまうんじゃなかったかと、
もう何年も前の話で忘れちまったが、

眠くなったら寝るというみだらな作戦です。
2005/11/09(水) 01:00:45ID:???0
>>93
で、900超えたらsubject.txtを信用するのやめて、
今までの方法でdatを読んじゃおうという、日和見風見鶏作戦かなぁと。

で、900をできるだけ1000に近づける方向でがんがってみると。
2005/11/09(水) 01:02:49ID:kbrSpD780
「dat と subject.txt のずれを許容してくれない」
とっても厳密に扱われているというのが問題だと思います。

900 とか 980 のことじゃなく
2005/11/09(水) 01:02:54ID:???0
>>93
あ、そっか。
シンクロ具合とゆってますね。
あんまりずれが大きいと、subject.txt をあてにして動いているアプリさんたちが
困っちゃうってことですか。

めしめし。
2005/11/09(水) 01:18:58ID:svPRiUsW0
現状でも、スレスト時にsubject.txtが変更されないため
subject.txtと実際の行数が一致しなくなり
毎回のように取得に行ってしまうクライアントもありますよ。
98動け動けウゴウゴ2ちゃんねる
垢版 |
2005/11/09(水) 01:19:33ID:rY6bA6aZ0
それはそのブラウザの作りが悪い
2005/11/09(水) 01:22:30ID:kbrSpD780
>>97
そんなんですよね

>>98
でも、その数が膨大だったりするのだ。


で、実際には高速で回転しているところは
dat と subject.txt が一致することなんてほとんどないから
それを利用してむ Saborin が生まれたのだ。
作る前はどうなるかと思ったけど、実際にやってみると
これがまずまず動いているんだな、よかったよかった
100root▲ ★
垢版 |
2005/11/09(水) 01:36:13ID:???0
>>99
Saborin は確かに、結構効果ありますね。

Saborin = index.html / subback.html の更新をまばらにする
ただし subject.txt は更新する
ex系とlive系で絶賛動作中

SaborinはLAが閾値を超えると自動的に発動
cobra=30 / tiger=20 / banana=4
101root▲ ★
垢版 |
2005/11/09(水) 01:36:35ID:???0
新スレはさぼらない >>100
102root▲ ★
垢版 |
2005/11/09(水) 01:42:01ID:???0
>>100
> 自動的に発動
^
一般サーバでも
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況