bbs.cgiの開発作業をすすめていくためのスレッドです。
FOXさんの努力によりSpeedyCGIへの対応が行われ、
パフォーマンスの向上が図られたbbs.cgi。
・雪だるま作戦への対応
・さらなるカスタマイズ
・パフォーマンスの向上
・微妙な虫取り
・長いメインルーチンをより短くコンパクトに
あたりがターゲットか。
前スレ:
bbs.cgi再開発プロジェクト6
http://qb5.2ch.net/test/read.cgi/operate/1113117347/
探検
bbs.cgi再開発プロジェクト7
■ このスレッドは過去ログ倉庫に格納されています
1root▲ ★
NGNGNGNG
過去スレ:
bbs.cgi 再開発プロジェクト
http://qb3.2ch.net/operate/kako/1053/10530/1053067870.html
bbs.cgi再開発プロジェクト2
http://qb3.2ch.net/operate/kako/1069/10691/1069144193.html
bbs.cgi再開発プロジェクト3
http://qb5.2ch.net/operate/kako/1076/10766/1076666901.html
bbs.cgi再開発プロジェクト4
http://qb5.2ch.net/operate/kako/1101/11019/1101984763.html
bbs.cgi再開発プロジェクト5
http://qb5.2ch.net/operate/kako/1103/11034/1103495887.html
bbs.cgi再開発プロジェクト6
http://qb5.2ch.net/test/read.cgi/operate/1113117347/
関連スレ:
【雪だるま】bbsd⇔各cgi間のI/F仕様について考え・詰めていくスレッド
http://qb5.2ch.net/test/read.cgi/operate/1130482779/
bbs.cgi 再開発プロジェクト
http://qb3.2ch.net/operate/kako/1053/10530/1053067870.html
bbs.cgi再開発プロジェクト2
http://qb3.2ch.net/operate/kako/1069/10691/1069144193.html
bbs.cgi再開発プロジェクト3
http://qb5.2ch.net/operate/kako/1076/10766/1076666901.html
bbs.cgi再開発プロジェクト4
http://qb5.2ch.net/operate/kako/1101/11019/1101984763.html
bbs.cgi再開発プロジェクト5
http://qb5.2ch.net/operate/kako/1103/11034/1103495887.html
bbs.cgi再開発プロジェクト6
http://qb5.2ch.net/test/read.cgi/operate/1113117347/
関連スレ:
【雪だるま】bbsd⇔各cgi間のI/F仕様について考え・詰めていくスレッド
http://qb5.2ch.net/test/read.cgi/operate/1130482779/
2005/11/02(水) 17:06:52ID:LLtT2fuS0
/i
っていまだに生きてるんでしょうかね?
もしそうでなければ「Apacheレベルでcへリダイレクトに変更」でもかまわないとおもうのですが・・・
# たしかiってcの前身でいいんですよね?
っていまだに生きてるんでしょうかね?
もしそうでなければ「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 ?###
気づいたところは、私のほうでも取っておくです。
今ざっと見直してみましたが、たぶん、もうそんなにないと思いますです。
・/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
と、それぞれ比較
えっと、そうじゃなくて、文字列比較の時の /i です。
つまり、大文字小文字を区別しない場合の話。
どうも、Perlってこんなかんじのことをしているらしいのです(裏とっていないのでうそかもです)。
/ABC/i の処理
↓
abc
abC
aBc
Abc
AbC
ABc
AbC
aBC
ABC
と、それぞれ比較
NGNG
あ、AbCがひとつ多いね。
7▲ ◆SANUKI/VII
NGNG おじさんが急いで1000取りしてるように見えた
2005/11/02(水) 17:38:30ID:34OWbqDs0
Perlをインタプリタと言い切るのは誤解の元
10root▲ ★
NGNG >>8
複雑なのをくべると、まじめにありそうですね。< 1000万
/i の件については、知り合いのPerlプログラマの話だと、
/ABC/i
/[Aa][Bb][Cc]/
で、下のほうが明らかにパフォーマンスがいい(というか、上が悪杉らしい)そうなので、
Perlの /i の実装がへぼいということの模様です。
複雑なのをくべると、まじめにありそうですね。< 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]/)
とすればいいんでしょかね。
あーその話ですか、スマソ。では本件の場合は2ch.netの大文字小文字区別なわけなので
if($ENV{'SERVER_NAME'} =~ /2ch\.net/i)
を
if($ENV{'SERVER_NAME'} =~ /2[Cc][Hh]\.[Nn][Ee][Tt]/)
とすればいいんでしょかね。
2005/11/02(水) 18:08:47ID:34OWbqDs0
ttp://qb5.2CH.NET/ではアクセスできないんだっけ?
ドメインはCase無関係だよね
ドメインはCase無関係だよね
16root▲ ★
NGNG ちなみに
2CH.net 等でアクセスしたら(bbs.cgiにそう入ってきたら) Samba24=600 にしてます
2CH.net 等でアクセスしたら(bbs.cgiにそう入ってきたら) Samba24=600 にしてます
2005/11/02(水) 18:40:49ID:NA5zqcSJO
iがどのくらい遅いかは、考えるより測ったほうがいいんじゃない?
use Benchmark;で。
use Benchmark;で。
2005/11/02(水) 18:48:02ID:mRTXrOn10
いやー
言いたいことは 「iは使わない」という方針でやっているから
議論の意味がないということだったり
言いたいことは 「iは使わない」という方針でやっているから
議論の意味がないということだったり
25root▲ ★
NGNG28root▲ ★
NGNG sec2chdを見ている限り、大文字小文字がきちんと入るなら、
現状ならアクセスする側も実害はないかなと、思っていたり。
現状ならアクセスする側も実害はないかなと、思っていたり。
2005/11/02(水) 19:07:10ID:34OWbqDs0
use Benchmarkも良いけど、プロファイルもね。
30root▲ ★
NGNG31root▲ ★
NGNG2005/11/03(木) 05:17:16ID:nCUOBDm10
root氏めちゃくちゃおっつぃんぐ
33root▲ ★
NGNG34root▲ ★
NGNG 重そうな正規表現パターンマッチングを少しは整理できたと思うです。
html/ の下のやつ全部、この処理通っているので、
意外とばかにならないんじゃないかなと。
html/ の下のやつ全部、この処理通っているので、
意外とばかにならないんじゃないかなと。
2005/11/03(木) 11:24:31ID:iErLJGey0
37root▲ ★
NGNG >>36
大昔から、変わってなかったんでしょうね。
この4つは「私が2ちゃんねるに来た2001年〜現在まで、
一度もリンクとして使われているのを見たことがなかった」ので、
もはや不要であろうと判断したです。
大昔から、変わってなかったんでしょうね。
この4つは「私が2ちゃんねるに来た2001年〜現在まで、
一度もリンクとして使われているのを見たことがなかった」ので、
もはや不要であろうと判断したです。
38root▲ ★
NGNG &jcode::tr(\$GB->{FORM}->{'FROM'}, '#', '#');
とか、
&jcode::tr(\$GB->{FORM}->{'mail'}, '#', '#');
とかって、もうちょっと効率よくできないのかしら。
とか、
&jcode::tr(\$GB->{FORM}->{'mail'}, '#', '#');
とかって、もうちょっと効率よくできないのかしら。
41root▲ ★
NGNG BBS.CGI - 2005/11/04
動きそのものは変わりませんが、雪だるまをめざして
bbs_main のかなりの部分をサブルーチン化しました。
$GB 操作しているのでカプセル化はぜんぜんですが、
自分で読んでいて、bbs_main が長すぎて頭がうにーになってきたので、
整理の意味を込めて、いじっています。
ひととおりのテストはしてありますので、大丈夫だとは思いますが、
もし何かへんなことがあったら、知らせてくださいです。
動きそのものは変わりませんが、雪だるまをめざして
bbs_main のかなりの部分をサブルーチン化しました。
$GB 操作しているのでカプセル化はぜんぜんですが、
自分で読んでいて、bbs_main が長すぎて頭がうにーになってきたので、
整理の意味を込めて、いじっています。
ひととおりのテストはしてありますので、大丈夫だとは思いますが、
もし何かへんなことがあったら、知らせてくださいです。
2005/11/04(金) 22:11:35ID:h/nc5pj90
|∀・)<いくらー
>>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:
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の方が速いんじゃ?
だとしたら、MakefileしたJcode.pmの方が速いんじゃ?
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 再開発に協力したいのですが、
一般人はソースとか見ること出来ないですか?
一般人はソースとか見ること出来ないですか?
協力するにも色々な方法があるわけでして♪
root★さんが悩んで居られるようでしたら助言をしてあげたり最適化したルーチンを提示したりとかとか♪
なんでもかでも「対等でなければならない」なんて孟宗竹なんてのは根っこから切り取らないと♪
root★さんが悩んで居られるようでしたら助言をしてあげたり最適化したルーチンを提示したりとかとか♪
なんでもかでも「対等でなければならない」なんて孟宗竹なんてのは根っこから切り取らないと♪
55root▲ ★
2005/11/08(火) 03:17:02ID:???0 1000超えの判定って、html/ の下を作るところの最初の部分でやっているのね。
ちょっと、驚いた。
ちょっと、驚いた。
57root▲ ★
2005/11/08(火) 04:22:33ID:???0 >>56
その様子は、何度かaccuse/operateを通じて見ているです。
なんか、いかにも効率悪そうで、気持ち悪くて、重そうなことをしてるんだなぁと
はじめて実際に、少しだけ気持ちがわかったわけです。
(これまでは、そこにたどり着く前に既に負けていた)
&MakeWorkFile を初めて呼ぶところの前までの整理整頓と、
できる範囲でのサブルーチン化は、それなりにやったです。
でも、そこから先が、、、。
たぶん、アイガー北壁なんだろうなと。
#==================================================
# ファイル操作(subject.txt & subback.html)
#==================================================
# 雪だるまサーバでは、以降のファイル処理はしない(bbsdが実行)
if(&IsSnowManServer($ENV{'SERVER_NAME'}))
{
&endhtml($GB);
}
####################################
# ここから先はまだカオス状態 by む #
####################################
その様子は、何度かaccuse/operateを通じて見ているです。
なんか、いかにも効率悪そうで、気持ち悪くて、重そうなことをしてるんだなぁと
はじめて実際に、少しだけ気持ちがわかったわけです。
(これまでは、そこにたどり着く前に既に負けていた)
&MakeWorkFile を初めて呼ぶところの前までの整理整頓と、
できる範囲でのサブルーチン化は、それなりにやったです。
でも、そこから先が、、、。
たぶん、アイガー北壁なんだろうなと。
#==================================================
# ファイル操作(subject.txt & subback.html)
#==================================================
# 雪だるまサーバでは、以降のファイル処理はしない(bbsdが実行)
if(&IsSnowManServer($ENV{'SERVER_NAME'}))
{
&endhtml($GB);
}
####################################
# ここから先はまだカオス状態 by む #
####################################
58root▲ ★
2005/11/08(火) 04:32:01ID:???0 まずは読んでいたりします。
ここからは思いつきで手直しすると遭難しそうなので(何せアイガー北壁)、
じっくり、やってみようかなと。
とりあえず、
$GBX->{OVER1000} = 0 ;# 1000超えフラグ(現在は未使用)
を追加してみた。
ここからは思いつきで手直しすると遭難しそうなので(何せアイガー北壁)、
じっくり、やってみようかなと。
とりあえず、
$GBX->{OVER1000} = 0 ;# 1000超えフラグ(現在は未使用)
を追加してみた。
59root▲ ★
2005/11/08(火) 05:04:58ID:???0 BBS_CONTENTS_NUMBER の意味を初めて知った私ガイル。
60root▲ ★
2005/11/08(火) 05:10:01ID:???0 BBS_LINE_NUMBER は、「省略されました」か。
61root▲ ★
2005/11/08(火) 05:14:02ID:???0 MakeWorkFile とりあえず読み終わり。
今日はもう遅いから、どうするかはいったん寝て考えるか。
とりあえず >>1 の処理と BBS_LINE_NUMBER 分のレスについての
おんなじような処理について、
べたにおんなじルーチンが2回書かれていたということはわかたです。
今日はもう遅いから、どうするかはいったん寝て考えるか。
とりあえず >>1 の処理と BBS_LINE_NUMBER 分のレスについての
おんなじような処理について、
べたにおんなじルーチンが2回書かれていたということはわかたです。
2005/11/08(火) 13:18:33ID:Im6W7Y3z0
BBS_CONTENTS_NUMBER分のレスかな。
1とそれ以外、同じようで違う。
まとめるのが面倒で放置って感じっすか。
1とそれ以外、同じようで違う。
まとめるのが面倒で放置って感じっすか。
2005/11/08(火) 13:28:47ID:wlYZz8W80
65root▲ ★
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; }
}
#############################################################################
# 処理中の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; }
}
66root▲ ★
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";
(以下略)
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";
(以下略)
67root▲ ★
2005/11/08(火) 16:28:33ID:???0 1000超えのdat追記部分は、Process1000ってのを書こう。
68root▲ ★
2005/11/08(火) 16:42:46ID:???0 >>65
通常の板だと、これだとコストが低くないかもなぁ。
subject.txt って、何百行とか千何百行とかあるわけで。
bbsdのように、mmap() するのもちょっとあれだし。
スレ数が少ない板は、subject.txt優先で、
スレ数が多い板は、dat優先がよさげ?
どのくらいが変更点なのかな。
通常の板だと、これだとコストが低くないかもなぁ。
subject.txt って、何百行とか千何百行とかあるわけで。
bbsdのように、mmap() するのもちょっとあれだし。
スレ数が少ない板は、subject.txt優先で、
スレ数が多い板は、dat優先がよさげ?
どのくらいが変更点なのかな。
69root▲ ★
2005/11/08(火) 16:43:22ID:???0 変更点じゃなくて、分岐点か。
70root▲ ★
2005/11/08(火) 16:45:36ID:???0 &GetHojisuu 書く必要がありそうですね。
こいつは出航時に1回だけ読めばいいだろうから、initFOXでやろう。
こいつは出航時に1回だけ読めばいいだろうから、initFOXでやろう。
71root▲ ★
2005/11/08(火) 17:40:32ID:???072root▲ ★
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; }
}
#############################################################################
# 処理中の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; }
}
73root▲ ★
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;
}
#############################################################################
# 処理中の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;
}
74root▲ ★
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;
}
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 = $.;
とか
とか
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 【中居正広騒動】NTT東日本、アフラックなどフジCM差し止め…各社に拡大 [Ailuropoda melanoleuca★]
- 明治安田、フジCM差し止め 日本生命やトヨタも 中居さんトラブル [ひかり★]
- 【中居正広騒動】NTT東日本、アフラックなどフジCM差し止め…各社に拡大 ★2 [Ailuropoda melanoleuca★]
- トヨタ、フジテレビへのCM差し替え ★5 [冬月記者★]
- 山田邦子 フジ・港社長会見を評価「売れっ子タレントがチヤホヤされるのは当たり前」 [シコリアン★]
- 【経済】新NISAブームから一転、「投資から貯蓄へ」の逆回転が発生?「高金利定期」の大逆襲が始まった [シャチ★]
- 【悲報】フジテレビさん、1番組内でACが12回も流れる異常事態 [455679766]
- NTT東日本、アフラック生命保険、フジテレビCM差し止め表明 [126042664]
- 【速報】フジテレビ、終了。日本がどんどん浄化されていく [308389511]
- ルーナ姫のお🏡💕 ★2
- 「これ以上せきをしたら殺すぞ」59歳医師、電車内で19歳男性(自衛隊員)にアイスピック突きつけ逆に取り押さえられる。なんだよこの事件 [399583221]
- 【急募】ワイの口癖が「障害とかある?w」なんやが