bbs.cgiの開発作業をすすめていくためのスレッドです。
FOXさんの努力によりSpeedyCGIへの対応が行われ、
パフォーマンスの向上が図られたbbs.cgi。
・雪だるま作戦への対応
・さらなるカスタマイズ
・パフォーマンスの向上
・微妙な虫取り
・長いメインルーチンをより短くコンパクトに
あたりがターゲットか。
前スレ:
bbs.cgi再開発プロジェクト6
http://qb5.2ch.net/test/read.cgi/operate/1113117347/
探検
bbs.cgi再開発プロジェクト7
■ このスレッドは過去ログ倉庫に格納されています
1root▲ ★
NGNG264root▲ ★
NGNG Put1Line と PutLines を使って、
index.html を作るサブルーチン(MakeIndex4PC)を書き換えました。
それに伴い、ひとつ小さな虫取り(不要な</form>の削除)を行いました。
また、HTMLタグを基本的に小文字にしました。
ただ、まだ直していない部分(htm/の下を作るところとか)があるので、
従来通り(w、大文字と小文字のタグが混在しています。
bbs.cgiの動作そのものは変わっていないはずですが、
もし問題を発見した場合、ここでお知らせくださいです。
これで、MakeIndex4PCは神の領域ではなくなったと思う。
今日は、ここまで。
index.html を作るサブルーチン(MakeIndex4PC)を書き換えました。
それに伴い、ひとつ小さな虫取り(不要な</form>の削除)を行いました。
また、HTMLタグを基本的に小文字にしました。
ただ、まだ直していない部分(htm/の下を作るところとか)があるので、
従来通り(w、大文字と小文字のタグが混在しています。
bbs.cgiの動作そのものは変わっていないはずですが、
もし問題を発見した場合、ここでお知らせくださいです。
これで、MakeIndex4PCは神の領域ではなくなったと思う。
今日は、ここまで。
265root▲ ★
NGNG ええと、前にあった(今dat落ちかな)、
bbs.cgiが吐くindex.html をコンパクトにするというか、よくする話し合いをしてたスレッドって、
どれでしたっけか。
すぐやるかどうかはわからないけど、教えていただけるといいかもしんないです。
index.html作成部分の保守性がよくなったので(実際潜んでいた虫も見つけた)、
反映できるものもあるかも、かも。
bbs.cgiが吐くindex.html をコンパクトにするというか、よくする話し合いをしてたスレッドって、
どれでしたっけか。
すぐやるかどうかはわからないけど、教えていただけるといいかもしんないです。
index.html作成部分の保守性がよくなったので(実際潜んでいた虫も見つけた)、
反映できるものもあるかも、かも。
2005/11/22(火) 10:43:04ID:JzWOnNm+0
267root▲ ★
NGNG >>266
どもです。それです、それです。
MakeIndex4PC, MakeIndex4Keitai, UpdateSubback あたりのクリーンナップ後に、
ぼちぼちってかんじで。
あと、SunOSさんが雪だるま版index.htmlにこのスレのどのへんを採用したかの
情報があると、うれしいかも、かも。
どもです。それです、それです。
MakeIndex4PC, MakeIndex4Keitai, UpdateSubback あたりのクリーンナップ後に、
ぼちぼちってかんじで。
あと、SunOSさんが雪だるま版index.htmlにこのスレのどのへんを採用したかの
情報があると、うれしいかも、かも。
269root▲ ★
NGNG >>264 の作業により、クッキーを食べるところと
BEのプロフィールを表示するところ(具体的にはJavaScriptのところ)が、
うまく動いていませんでした。
今、対応したものを配りました。
すみませんでした。
# <-- の後と // --> の前には \n が必要。
BEのプロフィールを表示するところ(具体的にはJavaScriptのところ)が、
うまく動いていませんでした。
今、対応したものを配りました。
すみませんでした。
# <-- の後と // --> の前には \n が必要。
2005/11/22(火) 14:03:13ID:l5OCF7ES0
この際PHPだ!
271root▲ ★
NGNG 310 名前: ◆MUMUMUhnYI :2005/11/22(火) 14:08:29 ID:cuANVpjV0 ?###
# 051122a UpdateSubject, UpdateSubback, MakeIndex4Keitai, MakeWorkFileを
# Put1Line, PutLinesに対応
# これで、ファイル作る系の第一次対応はできたはず by む
以上配布済み。
ひととおり予定の作業はおわたです。
ということで、作業可能です。>>305
これでこのへんのサブルーチンは、神の領域ではなくなったと思います。
>>270
以前からある話なわけですが、、、。
PHPって暴走すると、httpdが暴走しちゃうから。
# 051122a UpdateSubject, UpdateSubback, MakeIndex4Keitai, MakeWorkFileを
# Put1Line, PutLinesに対応
# これで、ファイル作る系の第一次対応はできたはず by む
以上配布済み。
ひととおり予定の作業はおわたです。
ということで、作業可能です。>>305
これでこのへんのサブルーチンは、神の領域ではなくなったと思います。
>>270
以前からある話なわけですが、、、。
PHPって暴走すると、httpdが暴走しちゃうから。
272root▲ ★
NGNG あと、神の領域なのは、newbbs と foxIkinari ぐらいだと思う。
…人間のものになったんだろうか。
…人間のものになったんだろうか。
2005/11/22(火) 14:58:35ID:mkoqPojk0
関数名を誰が見ても分かるようにするとか、説明を書いておくとか
274root▲ ★
NGNG >>273
とりあえずあまり進んでいませんが、こんなことをはじめているです。
########################################################################
# キャップがあるかどうか調べ、あったらそのキャップ名を返す
# 引数: キャップパス、板名、フラグ1、フラグ2
# フラグ1が真の場合、板別キャップの処理を行う
# フラグ2が真の場合、キャップあぶりだしの処理を行う
# 戻り値: キャップハンドル名 または ""(該当なしの場合)
########################################################################
sub FindCap
{
my ($pass, $board, $bflag, $tflag) = @_;
(以下略)
とりあえずあまり進んでいませんが、こんなことをはじめているです。
########################################################################
# キャップがあるかどうか調べ、あったらそのキャップ名を返す
# 引数: キャップパス、板名、フラグ1、フラグ2
# フラグ1が真の場合、板別キャップの処理を行う
# フラグ2が真の場合、キャップあぶりだしの処理を行う
# 戻り値: キャップハンドル名 または ""(該当なしの場合)
########################################################################
sub FindCap
{
my ($pass, $board, $bflag, $tflag) = @_;
(以下略)
2005/11/22(火) 17:24:13ID:JzWOnNm+0
index.html(html/*html)が壊れる壊れる
2chの動作報告はここで。 パート18
http://qb5.2ch.net/test/read.cgi/operate/1131005961/355-
2chの動作報告はここで。 パート18
http://qb5.2ch.net/test/read.cgi/operate/1131005961/355-
2005/11/22(火) 17:34:54ID:mkoqPojk0
rootm9(^Д^)プギャー
277root▲ ★
NGNG うーむ。問題あるとしたら、MakeIndex4PCだなぁ。
neet4vip以外でも、起きているですか?
364 名前:root▲ ★[sage] 投稿日:2005/11/22(火) 18:08:55 ID:???0 ?###
>>362
ニー速だけ?
365 名前:root▲ ★[sage] 投稿日:2005/11/22(火) 18:09:55 ID:???0 ?###
私が入れた虫くさいわけで。
しかし、他では出てないんだろうか。
366 名前:root▲ ★[sage] 投稿日:2005/11/22(火) 18:16:44 ID:???0 ?###
ちなみに、subject.txt が破損すると、起こると思います。
index.html は、subject.txt を見て作っているので。
neet4vip以外でも、起きているですか?
364 名前:root▲ ★[sage] 投稿日:2005/11/22(火) 18:08:55 ID:???0 ?###
>>362
ニー速だけ?
365 名前:root▲ ★[sage] 投稿日:2005/11/22(火) 18:09:55 ID:???0 ?###
私が入れた虫くさいわけで。
しかし、他では出てないんだろうか。
366 名前:root▲ ★[sage] 投稿日:2005/11/22(火) 18:16:44 ID:???0 ?###
ちなみに、subject.txt が破損すると、起こると思います。
index.html は、subject.txt を見て作っているので。
278root▲ ★
NGNG あるいは、MakeWorkFile (html/ の下を作っている)か。
ううむ。
ううむ。
279root▲ ★
NGNG 確認しました。
ううむ、同じのが複数ある。
あとで、みてみるです。
ううむ、同じのが複数ある。
あとで、みてみるです。
280root▲ ★
NGNG neet4vip 復帰します。
281root▲ ★
NGNG 368 名前:root▲ ★[sage] 投稿日:2005/11/22(火) 18:54:55 ID:???0 ?###
ありがとうです。
MakeWorkFileか。
369 名前:root▲ ★[sage] 投稿日:2005/11/22(火) 18:56:53 ID:???0 ?###
違うキーのも、同じファイルになってる、ってことですかね。
370 名前:root▲ ★[sage] 投稿日:2005/11/22(火) 18:59:45 ID:???0 ?###
>>369 ですね。
ううむ、なぜだ。
371 名前:root▲ ★[sage] 投稿日:2005/11/22(火) 19:02:21 ID:???0 ?###
わかった気がする。ううむ、、、。
やはり、神の領域は深いらしい。
372 名前:動け動けウゴウゴ2ちゃんねる[sage] 投稿日:2005/11/22(火) 19:03:59 ID:JzWOnNm+0
見た感じ、新スレの*.htmlが、直近(同時刻?)に投稿のあったスレの
*.htmlと同じになってしまっているのかな。
373 名前:root▲ ★[sage] 投稿日:2005/11/22(火) 19:08:08 ID:???0 ?###
# 注意: $key と $GB->{FORM}->{'key'} は一致しているとは限らない!!!!
のですね。
また、滑落か。
なおすです。
ありがとうです。
MakeWorkFileか。
369 名前:root▲ ★[sage] 投稿日:2005/11/22(火) 18:56:53 ID:???0 ?###
違うキーのも、同じファイルになってる、ってことですかね。
370 名前:root▲ ★[sage] 投稿日:2005/11/22(火) 18:59:45 ID:???0 ?###
>>369 ですね。
ううむ、なぜだ。
371 名前:root▲ ★[sage] 投稿日:2005/11/22(火) 19:02:21 ID:???0 ?###
わかった気がする。ううむ、、、。
やはり、神の領域は深いらしい。
372 名前:動け動けウゴウゴ2ちゃんねる[sage] 投稿日:2005/11/22(火) 19:03:59 ID:JzWOnNm+0
見た感じ、新スレの*.htmlが、直近(同時刻?)に投稿のあったスレの
*.htmlと同じになってしまっているのかな。
373 名前:root▲ ★[sage] 投稿日:2005/11/22(火) 19:08:08 ID:???0 ?###
# 注意: $key と $GB->{FORM}->{'key'} は一致しているとは限らない!!!!
のですね。
また、滑落か。
なおすです。
282root▲ ★
NGNG てなわけで、世の中甘くないすね。
なんで、MakeWorkFileに$GBじゃなくて、$GB, $key っていうふうに
引数が2つあるか、っちゅーことですね。
まさか、そんなことしてるとは、思いもよらんかったですよ。
なんで、MakeWorkFileに$GBじゃなくて、$GB, $key っていうふうに
引数が2つあるか、っちゅーことですね。
まさか、そんなことしてるとは、思いもよらんかったですよ。
283root▲ ★
NGNG Perl でファイルの行数を if 文で、チェックできるんだっけか。
284root▲ ★
NGNG できないっぽいすね。ううむ。
287root▲ ★
NGNG お題は「おせっかいなbbs.cgi」にしよう。
説明は、のちほど。
説明は、のちほど。
2005/11/22(火) 20:56:48ID:WZb4VPiX0
my $fp;
open($fp, '>', 'hoge.txt') or die;
foo($fp);
close($fo);
sub foo($)
{
my $fp = shift;
while (<$fp>) {
# hogehoge
}
}
これって駄目なのかな
open($fp, '>', 'hoge.txt') or die;
foo($fp);
close($fo);
sub foo($)
{
my $fp = shift;
while (<$fp>) {
# hogehoge
}
}
これって駄目なのかな
289root▲ ★
NGNG >>288
基本は、そうゆうことなんですよ。
今回の問題は、
「subject.txt にはそのスレが既に載っているけど、対応する html/html が製作途中、
あるいはまだ存在してない」
時に、動きが変になったんです。
くわしい説明は、帰宅してめしくってふろはいってからで。
基本は、そうゆうことなんですよ。
今回の問題は、
「subject.txt にはそのスレが既に載っているけど、対応する html/html が製作途中、
あるいはまだ存在してない」
時に、動きが変になったんです。
くわしい説明は、帰宅してめしくってふろはいってからで。
2005/11/22(火) 22:00:06ID:jzGvkBEMO
2005/11/22(火) 23:12:47ID:7B8fTBqD0
ファイルシステムが「行」を管理してくれたら可能かもしれませんね(苦笑)
# (Count, ERROR message) = TotalLineNumberinFile(filename)
# Count = TotalLineNumberinFile(filename)
# filename は行数を調べたいファイル名
# Count は行数。-1の時はエラー。リストコンテキストで評価した場合、第2返り値にエラーメッセージが入ります。
# 正常に取得出来たときは'OK'が返ります。
sub TotalLineNumberinFile{
my $filename = shift;
my $count;
open my $filehandle $filename or return wantarray ? (-1,$!) : -1;
$count++ while <$filehandle>;
close $filehandle;
return wantarray ? ($count,'OK') : $count;
}
# (Count, ERROR message) = TotalLineNumberinFile(filename)
# Count = TotalLineNumberinFile(filename)
# filename は行数を調べたいファイル名
# Count は行数。-1の時はエラー。リストコンテキストで評価した場合、第2返り値にエラーメッセージが入ります。
# 正常に取得出来たときは'OK'が返ります。
sub TotalLineNumberinFile{
my $filename = shift;
my $count;
open my $filehandle $filename or return wantarray ? (-1,$!) : -1;
$count++ while <$filehandle>;
close $filehandle;
return wantarray ? ($count,'OK') : $count;
}
2005/11/22(火) 23:37:31ID:JzWOnNm+0
wcでも使うか
2005/11/23(水) 03:53:20ID:3uL3GDNB0
index.html作成時に必要なhtmlが無ければ作るというのは変じゃないような気がする。
ほとんどの場合、必要なhtmlが無い=スレ立て直後 だろうけど。
ほとんどの場合、必要なhtmlが無い=スレ立て直後 だろうけど。
299む P221119009124.ppp.prin.ne.jp
2005/11/23(水) 12:23:06ID:h05bzQxj0 そですね。作ること自体は間違いじゃないと。
今夜あたりにでもちと。
今夜あたりにでもちと。
300root▲ ★
2005/11/23(水) 16:52:24ID:???0 対応したです。
347 名前: ◆MUMUMUhnYI [sage] 投稿日:2005/11/23(水) 16:47:32 ID:93wvGgv70
# 051123 htmlファイルが存在しなくて、かつしばらくたっても作られない場合にのみ、
# MakeIndex4PCからMakeWorkFileを呼ぶようにする by む
operate2 でテストしました。
html/ の下をからっぽにしてからレスして、必要な html が作られなおすことを確認済み。
347 名前: ◆MUMUMUhnYI [sage] 投稿日:2005/11/23(水) 16:47:32 ID:93wvGgv70
# 051123 htmlファイルが存在しなくて、かつしばらくたっても作られない場合にのみ、
# MakeIndex4PCからMakeWorkFileを呼ぶようにする by む
operate2 でテストしました。
html/ の下をからっぽにしてからレスして、必要な html が作られなおすことを確認済み。
301root▲ ★
2005/11/23(水) 17:02:15ID:???0 ちょっと、ex13でテストしてみるかな。
html/html 全消しします。< ex13
問題が出なければ成功。
html/html 全消しします。< ex13
問題が出なければ成功。
302root▲ ★
2005/11/23(水) 17:02:39ID:???0 × ex13
○ neet4vip
○ neet4vip
303root▲ ★
2005/11/23(水) 17:04:07ID:???0 大丈夫そうですね。
様子を観察中。
様子を観察中。
305root▲ ★
2005/11/23(水) 19:20:36ID:???0 >>304
メールざっと見ました。
主旨は、帽子の強度というか取り扱い方面に関するご相談、ということですか。
で、bbs.cgi での取り扱いにからむので、ここできいたと。
直感的に、仕様変更というか仕様追加を伴いそうな話な気がするので、
内容をよく読んでから、お返事するです。
場合によっては、別途いろんな方にご相談させていただく可能性も。
ということで。
メールざっと見ました。
主旨は、帽子の強度というか取り扱い方面に関するご相談、ということですか。
で、bbs.cgi での取り扱いにからむので、ここできいたと。
直感的に、仕様変更というか仕様追加を伴いそうな話な気がするので、
内容をよく読んでから、お返事するです。
場合によっては、別途いろんな方にご相談させていただく可能性も。
ということで。
2005/11/23(水) 23:53:37ID:5fdaspcI0
外部にトラックバック打つ時にshift_jisのまま打つのはどうかと
307桶屋
2005/11/24(木) 01:53:13ID:tdesbJrh0308桶屋
2005/11/24(木) 01:55:17ID:tdesbJrh0 ここよりもむしろ雪だるまの話になるかもですが、
indexから見たhtml/ の下のファイルは、iframeにして埋めてしまうのはどうかと考えたことがあります。
つまり、index.htmlでは以下のようにしてしまい、スレッド順位が変わるときには"./01.html"の部分だけ書き換え。
<iframe src="./01.html" align="center" width="95%" height="90%" scrolling="auto" frameborder="0" marginwidth="0" marginheight="0">
(説明文)このページではインラインフレームを使用しています。
</iframe>
・
・
・
10スレッド分ほど繰り返す
メリットは、
・index.htmlが一気にコンパクトになって生成コストが下がる(cssにするだけより断然効果あり)
・前段にキャッシュを使う場合、html/ の下がヒットして稼げるかも
デメリットは、
・スクロールが二重に (;^ ^
・Netscape 4.7 など古いブラウザは、やっぱりiframeは使えない(cssの時と同じ互換性の問題)
indexから見たhtml/ の下のファイルは、iframeにして埋めてしまうのはどうかと考えたことがあります。
つまり、index.htmlでは以下のようにしてしまい、スレッド順位が変わるときには"./01.html"の部分だけ書き換え。
<iframe src="./01.html" align="center" width="95%" height="90%" scrolling="auto" frameborder="0" marginwidth="0" marginheight="0">
(説明文)このページではインラインフレームを使用しています。
</iframe>
・
・
・
10スレッド分ほど繰り返す
メリットは、
・index.htmlが一気にコンパクトになって生成コストが下がる(cssにするだけより断然効果あり)
・前段にキャッシュを使う場合、html/ の下がヒットして稼げるかも
デメリットは、
・スクロールが二重に (;^ ^
・Netscape 4.7 など古いブラウザは、やっぱりiframeは使えない(cssの時と同じ互換性の問題)
309桶屋
2005/11/24(木) 01:56:49ID:tdesbJrh0 それで、SETTING.TXTに、例えばINDEX_MODEといった新しいフラグを作っておいて、
INDEX_MODE=0 :デフォルト html/*.htmlファイルを作る。index.htmlも全部作る
INDEX_MODE=1 :html/*.htmlファイルを作る。index.htmはiframeで埋め込む
INDEX_MODE=2 :html/*.htmlファイルを作る。index.htmはサボる。今の実況板仕様
INDEX_MODE=3 :html/*.htmlファイルを作らない。index.htmはローカルルールとスレッド一覧と広告だけ
こういうのはどうですかね?(;^ ^ >SunOSさん他
INDEX_MODE=0 :デフォルト html/*.htmlファイルを作る。index.htmlも全部作る
INDEX_MODE=1 :html/*.htmlファイルを作る。index.htmはiframeで埋め込む
INDEX_MODE=2 :html/*.htmlファイルを作る。index.htmはサボる。今の実況板仕様
INDEX_MODE=3 :html/*.htmlファイルを作らない。index.htmはローカルルールとスレッド一覧と広告だけ
こういうのはどうですかね?(;^ ^ >SunOSさん他
310root▲ ★
NGNG >>307
> どこまでやろうと考えているかはわかりませんが、
> それを実際にやるときには、管理人に確認を取った方がいいと思います。
そうすね。
で、html/html を作るところは、まだカスタマイズの余地がありそうな肝。
例えば下の方のスレにsageでレスした時は、更新しないとか。
(今はレスしたものについては必ず作っている)
> どこまでやろうと考えているかはわかりませんが、
> それを実際にやるときには、管理人に確認を取った方がいいと思います。
そうすね。
で、html/html を作るところは、まだカスタマイズの余地がありそうな肝。
例えば下の方のスレにsageでレスした時は、更新しないとか。
(今はレスしたものについては必ず作っている)
2005/11/24(木) 03:04:04ID:PVimEjmL0
iframeは操作感が非常に悪くなると思います。
2005/11/24(木) 03:56:35ID:7i6JpL430
じゃー、今流行のajaxで
2005/11/24(木) 09:19:19ID:uDXz6nAD0
やりとりを見てると改善できる所は
まだまだありそうですね
まだまだありそうですね
314root▲ ★
2005/11/24(木) 13:38:26ID:???02005/11/24(木) 15:50:46ID:zK+0kexT0
SSIで挿入で
317▲ ◆cZfSunOs.U
2005/11/24(木) 21:08:18ID:g6I3uHOe0 >>267 実際に bbsd が吐く index.html を直接見るのが一番手っ取り早いかも知れません.
ただ,index.html 以外に index.css というファイルも生成するようになってまして,
これは SETTING.TXT の更新を検出するとそれに合わせて更新するようになってます.
>>308 そういう <iframe> (or <object>) の使用というのも考えたことも
あるにはあるんですが,やはりスクロール等の操作性の問題などもあると思います.
まぁ,bbsd での index.html 生成は bbs.cgi のよりは軽くなってるかと思うので,
とりあえず大筋では従来のやり方を踏襲する形でもいいかなという感じでやってます.
ただ,index.html 以外に index.css というファイルも生成するようになってまして,
これは SETTING.TXT の更新を検出するとそれに合わせて更新するようになってます.
>>308 そういう <iframe> (or <object>) の使用というのも考えたことも
あるにはあるんですが,やはりスクロール等の操作性の問題などもあると思います.
まぁ,bbsd での index.html 生成は bbs.cgi のよりは軽くなってるかと思うので,
とりあえず大筋では従来のやり方を踏襲する形でもいいかなという感じでやってます.
318root▲ ★
NGNG 厨な質問をば。
if ($errmsgが10桁の数字だったら)
というのは、Perlでどう書いたらいいのかしら。
if ($errmsgが10桁の数字だったら)
というのは、Perlでどう書いたらいいのかしら。
2005/11/26(土) 16:33:09ID:0o7g/RPa0
$errmsg =~ /^\d{10}$/
じゃないと、「aa1234567890」も真になっちゃわない?
じゃないと、「aa1234567890」も真になっちゃわない?
2005/11/26(土) 20:26:40ID:7t446eNO0
lengeh($_) == 10 || int($_) eq $_
2005/11/26(土) 20:27:38ID:7t446eNO0
あーリロードしてないしlengthだし
325動け動けウゴウゴ2ちゃんねる
2005/11/26(土) 22:43:57ID:zBsPZFmx0 なんかエラー出たんで貼っときますね
ERROR:不明なエラーが発生しました。
(board:livejupiter key:1133001202 errmsg:No such file or directory)
このメッセージをコピペして、運用情報板で報告していただけるとありがたいです。
誘導されてきました
ERROR:不明なエラーが発生しました。
(board:livejupiter key:1133001202 errmsg:No such file or directory)
このメッセージをコピペして、運用情報板で報告していただけるとありがたいです。
誘導されてきました
326stream ◆PNstream2s
2005/11/27(日) 16:51:15ID:wSLpr1G40327▲ ◆cZfSunOs.U
2005/11/27(日) 20:05:08ID:Q5XEP8aN0 >>326 それは意図的に1000までにさせてますが,1001以降も表示させた方がいいんでしょうかね?
書き込みフォームをなくすことで終了してるスレということを示すようにはしてますが......
書き込みフォームをなくすことで終了してるスレということを示すようにはしてますが......
2005/11/27(日) 20:18:34ID:u0humMch0
今までどおりのほうがいいような
2005/11/27(日) 20:23:12ID:xD14ZgWG0
なぜ書き込めないのか、という理由の表示として、
あった方がわかりやすいかもしれない。
状況を理解してもらうためのメッセージだし。
あった方がわかりやすいかもしれない。
状況を理解してもらうためのメッセージだし。
332325
2005/11/28(月) 00:34:23ID:N5H/ccvWO で>>325って何だったんですか?
なんとなくしかわからいんで教えてください。(´・ω・)
なんとなくしかわからいんで教えてください。(´・ω・)
333桶屋
2005/11/28(月) 00:48:22ID:0iPr7fvn0 どうぞ。
【雪だるま】bbsd⇔各cgi間のI/F仕様について考え・詰めていくスレッド
http://qb5.2ch.net/test/read.cgi/operate/1130482779/236-
【雪だるま】bbsd⇔各cgi間のI/F仕様について考え・詰めていくスレッド
http://qb5.2ch.net/test/read.cgi/operate/1130482779/236-
335root▲ ★
2005/11/28(月) 14:35:38ID:???0 >>334
それは確か、read.cgi だったような。
index.html は、bbs.cgiのソースを見る限りそうは見えないです。
常にdatのお尻のBBS_CONTENTS_NUMBER行を表示していたと思う。
それは確か、read.cgi だったような。
index.html は、bbs.cgiのソースを見る限りそうは見えないです。
常にdatのお尻のBBS_CONTENTS_NUMBER行を表示していたと思う。
336どくどくさぼてん
2005/11/28(月) 14:50:40ID:/GNK4Si70 ありゃ、ほんとだ、、いろいろ見てみましたけど
NHK教育実況板見たら100表示されてますね、、
だけど表示されてないように見えたのは気のせいか、、
すいません、
NHK教育実況板見たら100表示されてますね、、
だけど表示されてないように見えたのは気のせいか、、
すいません、
2005/11/28(月) 21:00:32ID:qciCODWD0
ここ扱いか知らんけど
スレッドの並べ替えってやっぱローカルで処理させたほうがいいんじゃないの?
スレッドの並べ替えってやっぱローカルで処理させたほうがいいんじゃないの?
2005/11/29(火) 10:40:56ID:zjVVPpoJ0
なんかよく判らんけどバグかな?
http://ex11.2ch.net/test/read.cgi/morningcoffee/1132910311/
俺が持ってる最後のレス
990 名前:名無し募集中。。。 投稿日:2005/11/29(火) 01:01:04 0
誰もいないな
がたぶん1000いってdat落ちするはずだったけど
スレタイもdatも無くなってリスタートしてる模様
http://ex11.2ch.net/test/read.cgi/morningcoffee/1132910311/
俺が持ってる最後のレス
990 名前:名無し募集中。。。 投稿日:2005/11/29(火) 01:01:04 0
誰もいないな
がたぶん1000いってdat落ちするはずだったけど
スレタイもdatも無くなってリスタートしてる模様
340root▲ ★
2005/11/29(火) 12:09:33ID:???0341root▲ ★
NGNG しかしこれは、リスクをぎりぎりまで減らすことはできても、
「ローカル雪だるま」をしない限り、なしにはできないですね。
従来のbbs.cgiでも、入り口のところでdatの存在は見ているです。
入り口ではあったのに、書くところで圧縮が入ってなくなったということで。
今の様子を見ていると、サーバ資源がどきどきしているlive系ではこの部分スルー(従来通り)で、
他ではこれ入れて、安全性を高めることにしよう。
「ローカル雪だるま」をしない限り、なしにはできないですね。
従来のbbs.cgiでも、入り口のところでdatの存在は見ているです。
入り口ではあったのに、書くところで圧縮が入ってなくなったということで。
今の様子を見ていると、サーバ資源がどきどきしているlive系ではこの部分スルー(従来通り)で、
他ではこれ入れて、安全性を高めることにしよう。
344root▲ ★
2005/11/29(火) 14:11:12ID:???0 これまで、mnewsplusとかnews4vipとかmorningcoffeeとかで、出ているですね。
所詮、特殊な板か。
所詮、特殊な板か。
2005/11/29(火) 14:43:16ID:j5QwZ4jc0
AFOX
2005/11/29(火) 15:45:02ID:OFgfa+aY0
いっそdatをSQL化して、.datは.htmlとかと同じように生成さぼる対象にしてはどうか。
で、read.cgiと同じパラメータ方法でdatの該当行だけとれるようにする。
そうしたらSQLのレベルで1000ロックとか排他とかできるようになりませんかね。
で、read.cgiと同じパラメータ方法でdatの該当行だけとれるようにする。
そうしたらSQLのレベルで1000ロックとか排他とかできるようになりませんかね。
2005/11/29(火) 16:01:32ID:F6/xCrikO
2ちゃんねるブラウザが使えなくなる
2005/11/29(火) 16:22:16ID:OFgfa+aY0
350▲ ◆cZfSunOs.U
2005/11/29(火) 16:28:16ID:GdnIox6j0 C レベルでの open() 関数呼び出し段階で
スレ立て時: O_WRONLY|O_CREAT|O_EXCL (同一名ファイルが存在すれば EEXIST)
レス追記時: O_WRONLY|O_APPEND (ファイルが存在しなければ ENOENT)
というフラグ付きで呼ばれるようにできればファイルの存在確認とオープンが
アトミックに行えるんですよね(bbsd ではそうしてます).
となると,Perl では sysopen() を使えばいいのかな......
スレ立て時: O_WRONLY|O_CREAT|O_EXCL (同一名ファイルが存在すれば EEXIST)
レス追記時: O_WRONLY|O_APPEND (ファイルが存在しなければ ENOENT)
というフラグ付きで呼ばれるようにできればファイルの存在確認とオープンが
アトミックに行えるんですよね(bbsd ではそうしてます).
となると,Perl では sysopen() を使えばいいのかな......
>>350
定数を利用するのには use Fcntl がいるですね♪
定数を利用するのには use Fcntl がいるですね♪
353root▲ ★
NGNG354root▲ ★
NGNG こうかしら。
・スレ立て時
use Fcntl;
sysopen(FH, $path, O_WRONLY|O_CREAT|O_EXCL, 0666) or &DispError2(スレ立て失敗処理);
・レス追記時
use Fcntl;
sysopen(FH, $path, O_WRONLY|O_APPEND) or &DispError2(レスができない処理);
で、index.html とか subject.txt / subback.html とかを
安全にかつうまくこなすには、どういうアイディアが考えられるのかと。
・スレ立て時
use Fcntl;
sysopen(FH, $path, O_WRONLY|O_CREAT|O_EXCL, 0666) or &DispError2(スレ立て失敗処理);
・レス追記時
use Fcntl;
sysopen(FH, $path, O_WRONLY|O_APPEND) or &DispError2(レスができない処理);
で、index.html とか subject.txt / subback.html とかを
安全にかつうまくこなすには、どういうアイディアが考えられるのかと。
356root▲ ★
NGNG これで、うまくいったようです。
これで、datの存在チェックうんぬんのところと、
追記してクローズした後でdatをchmod 666しているところをとばせました。
Over1000処理してchmod 555datをあとから追いついて
chmod 666することがなくなったので、
より、安全にもなったはず。
# 新スレの場合、datがあったらエラー
if($GB->{NEWTHREAD})
{
sysopen(OUT, $filename, O_WRONLY|O_CREAT|O_EXCL, 0666)
or &DispError2($GB,"ERROR!","ERROR:板飛びそうなので、またの機会にどうぞ。。。");
}
# レスの場合、datに追記できなかったらエラー
else
{
sysopen(OUT, $filename, O_WRONLY|O_APPEND, 0666)
or &DispError2($GB,"ERROR!","ERROR:レスしようとしたらdatに書けませんでした。今dat落ちしちゃったかもです。");
}
これで、datの存在チェックうんぬんのところと、
追記してクローズした後でdatをchmod 666しているところをとばせました。
Over1000処理してchmod 555datをあとから追いついて
chmod 666することがなくなったので、
より、安全にもなったはず。
# 新スレの場合、datがあったらエラー
if($GB->{NEWTHREAD})
{
sysopen(OUT, $filename, O_WRONLY|O_CREAT|O_EXCL, 0666)
or &DispError2($GB,"ERROR!","ERROR:板飛びそうなので、またの機会にどうぞ。。。");
}
# レスの場合、datに追記できなかったらエラー
else
{
sysopen(OUT, $filename, O_WRONLY|O_APPEND, 0666)
or &DispError2($GB,"ERROR!","ERROR:レスしようとしたらdatに書けませんでした。今dat落ちしちゃったかもです。");
}
357root▲ ★
NGNG chmod 555datを => chmod 555したdatをあとから
358root▲ ★
NGNG 481 名前: ◆MUMUMUhnYI [sage] 投稿日:2005/11/30(水) 03:23:06 ID:vRY99gsD0 ?###
# 051130 WriteDatFile改良、sysopenを使用しより安全確実な処理に by む
# 051130 WriteDatFile改良、sysopenを使用しより安全確実な処理に by む
359root▲ ★
NGNG When opening a file, a lock with flock(2) semantics can be obtained by
setting O_SHLOCK for a shared lock, or O_EXLOCK for an exclusive lock.
If creating a file with O_CREAT, the request for the lock will never fail
(provided that the underlying file system supports locking).
ふむ、、、。
しかし、どうなんだろう。
setting O_SHLOCK for a shared lock, or O_EXLOCK for an exclusive lock.
If creating a file with O_CREAT, the request for the lock will never fail
(provided that the underlying file system supports locking).
ふむ、、、。
しかし、どうなんだろう。
360root▲ ★
NGNG これは、index.html / subject.txt / subback.html i/index.html(qb5とbbspinkのみ)
といったファイルの話です。
今は、
index.html subject.txt … 一時ファイル(*1)を作ってそっちで作り、それをrename
subback.html i/index.html … ロックなしでいきなり本ファイル作成(カミカゼ状態)
に、なっているです。
で、animeサーバやmorningcoffee、news4vipなど、たくさんの書き込みがあるところで、
かつlive系と違ってスレ数が多くてファイル生成にコストがかかるところを中心に、
上記の一時ファイルがだんだんと溜まっていき、
例えばanimeサーバではメモリディスクを圧迫していき、何回か破綻状態になりました。
で、このへんをなんとかできると、こういったことも減るんじゃないかなと。
上のほうでもおじさんが書いていたような気がしますが、
まずはopenやsysopenのエラーチェックをまじめにやるべきなのかもですね。
といったファイルの話です。
今は、
index.html subject.txt … 一時ファイル(*1)を作ってそっちで作り、それをrename
subback.html i/index.html … ロックなしでいきなり本ファイル作成(カミカゼ状態)
に、なっているです。
で、animeサーバやmorningcoffee、news4vipなど、たくさんの書き込みがあるところで、
かつlive系と違ってスレ数が多くてファイル生成にコストがかかるところを中心に、
上記の一時ファイルがだんだんと溜まっていき、
例えばanimeサーバではメモリディスクを圧迫していき、何回か破綻状態になりました。
で、このへんをなんとかできると、こういったことも減るんじゃないかなと。
上のほうでもおじさんが書いていたような気がしますが、
まずはopenやsysopenのエラーチェックをまじめにやるべきなのかもですね。
361root▲ ★
NGNG あとは、renameでやる手法でやる時の、最後のrenameのところをどうするかか。
今は、こんな処理をしているですね。
my $resuc = 0;
until($resuc)
{
$resuc = rename($subtemp, $subject);
}
これだと、何らかの形でrenameが失敗し続けると、ブロックしてしまうような。
…といったところで、今日はここまでか。
http://qb5.2ch.net/test/read.cgi/operate/1130482779/248
は、またあとで。
今は、こんな処理をしているですね。
my $resuc = 0;
until($resuc)
{
$resuc = rename($subtemp, $subject);
}
これだと、何らかの形でrenameが失敗し続けると、ブロックしてしまうような。
…といったところで、今日はここまでか。
http://qb5.2ch.net/test/read.cgi/operate/1130482779/248
は、またあとで。
my $rename_status = eval {
for (1..10){
rename($subtemp, $subject) and return 0;
}
return $!;
}
if (defined $rename_status) {
&DispError2($GB,"ERROR!","ERROR:subject.txtは変更出来ませんでした。($rename_status)")
}
こんなかんじかな?
for (1..10){
rename($subtemp, $subject) and return 0;
}
return $!;
}
if (defined $rename_status) {
&DispError2($GB,"ERROR!","ERROR:subject.txtは変更出来ませんでした。($rename_status)")
}
こんなかんじかな?
363▲ ◆cZfSunOs.U
2005/11/30(水) 08:23:38ID:0+e07y/o0 >>355 乙です.
>2番目のにも、0666 が必要すね。
mode (0666) が反映されるのはファイル作成時だけなので,
単に追記するだけなら不要です(指定しても実害はないでしょうが).
で subject.txt 等の更新処理ですが,ロックなしだと例えば
bbs.cgi-1: subject.txt 読み込み
bbs.cgi-2: subject.txt 読み込み
bbs.cgi-1: 1111111111.dat レス数インクリメント
bbs.cgi-2: 1111111112.dat レス数インクリメント
bbs.cgi-1: subject.txt.1 に書き出し
bbs.cgi-2: subject.txt.2 に書き出し
bbs.cgi-1: subject.txt.1 -> subject.txt にリネーム
bbs.cgi-2: subject.txt.2 -> subject.txt にリネーム
のようになると「1111111111.dat レス数インクリメント」は反映されなく
なってしまいますね.これならいっそのこと,一時ファイル名は固定にして
O_EXCL 付きで sysopen() して,失敗したら subject.txt の更新処理自体
スキップするようにしてしまってもいいかも知れません.
きっちりやるとしたら,やはりロックせざるを得ないでしょう.
ちなみに,bbsd ではファイルロックより軽い mutex で排他制御してます.
# もっとも,この前の負荷試験では mutex の保護下でやってるのに
# 1000 越え発生という奇妙な現象も起こってしまったので,
# その点は要観察なわけですが......
>2番目のにも、0666 が必要すね。
mode (0666) が反映されるのはファイル作成時だけなので,
単に追記するだけなら不要です(指定しても実害はないでしょうが).
で subject.txt 等の更新処理ですが,ロックなしだと例えば
bbs.cgi-1: subject.txt 読み込み
bbs.cgi-2: subject.txt 読み込み
bbs.cgi-1: 1111111111.dat レス数インクリメント
bbs.cgi-2: 1111111112.dat レス数インクリメント
bbs.cgi-1: subject.txt.1 に書き出し
bbs.cgi-2: subject.txt.2 に書き出し
bbs.cgi-1: subject.txt.1 -> subject.txt にリネーム
bbs.cgi-2: subject.txt.2 -> subject.txt にリネーム
のようになると「1111111111.dat レス数インクリメント」は反映されなく
なってしまいますね.これならいっそのこと,一時ファイル名は固定にして
O_EXCL 付きで sysopen() して,失敗したら subject.txt の更新処理自体
スキップするようにしてしまってもいいかも知れません.
きっちりやるとしたら,やはりロックせざるを得ないでしょう.
ちなみに,bbsd ではファイルロックより軽い mutex で排他制御してます.
# もっとも,この前の負荷試験では mutex の保護下でやってるのに
# 1000 越え発生という奇妙な現象も起こってしまったので,
# その点は要観察なわけですが......
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 中居正広氏 フジテレビから「100億円賠償」請求も 第三者委員会の結論次第で [阿弥陀ヶ峰★]
- 外国人労働者、最多230万人 12.4%増、特定技能20万超 [蚤の市★]
- 【RPG】『ドラゴンクエスト』VS『ファイナルファンタジー』アナタはどっち派? [湛然★]
- 【🚺】なぜ女性トイレだけ行列? 706カ所調べてみたら…見えた男女格差 「女性は衣類を上げ下げする時間が必要」 [ぐれ★]
- 【麻雀】伊藤友里アナ、体調不良で31日のMリーグ公式レポーター欠席 プロ雀士・岡田紗佳から暴言、失言被害 [muffin★]
- 【フジ】清水新社長「週刊文春にはあらゆる選択肢を検討している」訴訟の可能性も ★6 [Ailuropoda melanoleuca★]
- 【悲報】外国人「なんで日本人って神社で『合格祈願』するの?宗教に頼むくらいなら、英単語の一個でも覚えたほうが生産性高くね? [786648259]
- 世間「フジテレビと文春、どっちを信じればいいんだ…?」 [558748787]
- 【速報】八潮ジャップの事故、人災確定、トラック荷台引き上げで運転席が埋まったと判明 [926029754]
- 三(ヽ´ん`)🤜自転車に乗り、握った拳を顔の高さに上げ、通行中の女子生徒とすれ違う小太り中年男性が発生 [359965264]
- 【悲報】トランプ大統領、2月1日にカナダとメキシコに25%関税と表明 [733893279]
- 【朗報】猛虎弁に続く第2公用言語「巨人弁」が爆誕!語尾は「○○べ」