雪だるま作戦において開発をすすめているbbsdでは、
+- [ フロントエンドサーバlive22x1 ] -- ユーザは
[ バックエンドサーバlive22 ] -+- [ フロントエンドサーバlive22x2 ] -- live22xという代表名で
制御プログラムbbsd +- [ フロントエンドサーバlive22x3 ] -- これらにアクセス
| | | dat直読みや、
dat subject.txt subback.html bbs.cgiやread.cgiやofflaw.cgi、
書きこみログ(芋掘り)ファイルなど (こちらは基本的に書き込み操作なし)
(書き込み操作はこちらで)
# 復帰/削除cgiなどについては、さてどっちかな => 今後の課題
という形で「ユーザの相手」と「各種ファイル処理」を複数のサーバに分業することにより、
さらなるパフォーマンスの向上を目論んでいます。
つまりこの場合、dat/subject.txt/subback.htmlは
バックエンドサーバで動作するbbsdというプログラムがリクエストに応じて生成し、
更新や場合によっては削除する形となります。
ということで、bbs.cgiをはじめとする従来2ちゃんねるで動いているcgiでは、
これらが同じサーバにあるつもりでファイル操作をしていましたが、
上記に示すように、少なくとも元本は同じサーバにはなくなるため、
何らかの形で対策を考慮する必要があります。
また現在、ID生成の種やSamba24や
timcount/timeclose等の規制関係で使用している一時ファイル等、
複数のフロントエンドサーバが同じ情報を、
何らかの形で共有する必要があるものもあります。
このスレッドではこれらの処理方法や実装方法について考えながら、
bbsdに持たせたい・持つべきな機能をあぶり出し、実装仕様を詰めていくことを目標にしています。
探検
【雪だるま】bbsd⇔各cgi間のI/F仕様について考え・詰めていくスレッド
■ このスレッドは過去ログ倉庫に格納されています
1root▲ ★
NGNG2005/11/07(月) 22:43:28ID:KqEOS0ue0
>>104
そういう意味ではなく、種が必要な処理は全てbbsdに任せて、bbs.cgiは
種を使った処理をしないという選択もありでは?
種を使う処理が仮に書き込み時だけだとすると、書き込み時に bbsd が
変換すればOKなので。
と、各々の細かい役割を知らないのに勝手なこと言ってすいません。
そういう意味ではなく、種が必要な処理は全てbbsdに任せて、bbs.cgiは
種を使った処理をしないという選択もありでは?
種を使う処理が仮に書き込み時だけだとすると、書き込み時に bbsd が
変換すればOKなので。
と、各々の細かい役割を知らないのに勝手なこと言ってすいません。
>>105
個人的にbbs.cgiは内容には一切触れずに規制処理(DNS系統:省Rock54+BBR)だけ行えば?なぁんて妄想もしていたりします。
単一bbsdでは負担が掛かるようなら子供を産んでも良さそうな。とかとか。。。
個人的にbbs.cgiは内容には一切触れずに規制処理(DNS系統:省Rock54+BBR)だけ行えば?なぁんて妄想もしていたりします。
単一bbsdでは負担が掛かるようなら子供を産んでも良さそうな。とかとか。。。
107105
2005/11/07(月) 23:36:28ID:qaYfXUl/0 同じこと言ってましたね。
ちゃんと読んでませんでした、申し訳ない。
bbsdとのI/Fは変えずに、単純に、bbs.cgi を frontend/backend に役割を分けて
しまう手もありますね。
ちゃんと読んでませんでした、申し訳ない。
bbsdとのI/Fは変えずに、単純に、bbs.cgi を frontend/backend に役割を分けて
しまう手もありますね。
108root▲ ★
2005/11/08(火) 02:05:40ID:???0 >>105
書きこみ時に bbsd で共通部分の処理をするというセンスは、
次の段階としては、ありなのかな。
ただ、基本的にファイルI/Oと共通データベース処理に専念してほしい予感も。
そもそも、bbsd.cgiのバックエンド的な位置づけなわけだし。
書きこみ時に bbsd で共通部分の処理をするというセンスは、
次の段階としては、ありなのかな。
ただ、基本的にファイルI/Oと共通データベース処理に専念してほしい予感も。
そもそも、bbsd.cgiのバックエンド的な位置づけなわけだし。
109root▲ ★
2005/11/08(火) 16:31:58ID:???0 bbsdって1000超えした時って、どういう処理をするんでしたっけ。
1) このスレッドは1000を超えました。 <br> \
もう書けないので、新しいスレッドを立ててくださいです。。。
を書くかどうか
2) 板名/1000.txt を読むかどうか
1) このスレッドは1000を超えました。 <br> \
もう書けないので、新しいスレッドを立ててくださいです。。。
を書くかどうか
2) 板名/1000.txt を読むかどうか
110▲ ◆cZfSunOs.U
2005/11/08(火) 21:32:03ID:+RowFQSH0 >>109 1000.txt が存在すればそれを用い,なければ 1) の内容で dat に書き込みます.
2005/11/09(水) 21:26:46ID:4LkEBQVF0
【Project peko】2ch特化型サーバ構築作戦 Part6
http://qb3.2ch.net/test/read.cgi/operate/1076413123/652-
懐かしいところ、日々成長だわな
http://qb3.2ch.net/test/read.cgi/operate/1076413123/652-
懐かしいところ、日々成長だわな
113動け動けウゴウゴ2ちゃんねる
2005/11/11(金) 14:27:16ID:lQB+cJ3w0 久しぶりに来たが、ぜんぜん進展してないの?
つうか、まとめサイトは?
テンプレすら張ってないし。
つうか、まとめサイトは?
テンプレすら張ってないし。
2005/11/11(金) 14:27:47ID:lQB+cJ3w0
すんません誤爆しました。
115root▲ ★
2005/11/11(金) 14:54:00ID:???0 >>113
もうすこしかな。
Check_HardPosting (連続投稿ですか?) のところの
しくみの洗い出しと理解を、先にやりたいです。
それができると、雪だるまのためのbbs.cgi洗い出しは、
概ねできたことになるはず。
もうすこしかな。
Check_HardPosting (連続投稿ですか?) のところの
しくみの洗い出しと理解を、先にやりたいです。
それができると、雪だるまのためのbbs.cgi洗い出しは、
概ねできたことになるはず。
116root▲ ★
NGNG timecount/timeclose の処理も、FIFOですね。
ここに書こうと。
ここに書こうと。
117root▲ ★
NGNG 簡単にいうと、こんなかんじ。
1) timecount分のFIFOを準備しておく
2) 投稿に固有のID(*1)をキーに、FIFOを探す
3) FIFO内にそのIDがtimeclose個以上あったら「連続投稿ですか? (見つかった回数)回」エラー
4) IDをFIFOに積む、古いものからところてん式に押し出されていく
(*1)IPアドレスまたは携帯固有番号またはp2の番号
これなら、先だって用意していただいたものと同じようなのを
もひとつ準備していただければ、できそうですね。
1) timecount分のFIFOを準備しておく
2) 投稿に固有のID(*1)をキーに、FIFOを探す
3) FIFO内にそのIDがtimeclose個以上あったら「連続投稿ですか? (見つかった回数)回」エラー
4) IDをFIFOに積む、古いものからところてん式に押し出されていく
(*1)IPアドレスまたは携帯固有番号またはp2の番号
これなら、先だって用意していただいたものと同じようなのを
もひとつ準備していただければ、できそうですね。
118root▲ ★
NGNG [1-10] 1-A-d timecount/timecloseのための記録用ファイル 一
についてです。
ということで、bbsdでは、
・SETTING.TXTを読んで、板ごとにtimecount段数分のFIFOを準備する
・FIFOには、何か文字列(とりあえず256バイト以内ぐらい)が積まれる
・bbs.cgiは「板」「ID」を引数とし、bbsdに「これについて調べてちょ」と聞く
・bbsdは指定された板のFIFOを検索して、指定されたIDがtimeclose個以上見つかったら、
その旨をbbs.cgiに返す。ただし、このときはbbsdはIDをFIFOに積まない
=> bbs.cgi はエラー処理(連続投稿ですか)をする
・timeclose個未満だったら、そのIDをFIFOに積み、bbs.cgiには正常を返す
=> bbs.cgi は正常系の処理をする
という形のAPIをbbsd側で作っていただけると助かります。
で、これは「記録用ファイル」と書きましたが、bbsd的にはメモリ上のみでよいと考えます。
についてです。
ということで、bbsdでは、
・SETTING.TXTを読んで、板ごとにtimecount段数分のFIFOを準備する
・FIFOには、何か文字列(とりあえず256バイト以内ぐらい)が積まれる
・bbs.cgiは「板」「ID」を引数とし、bbsdに「これについて調べてちょ」と聞く
・bbsdは指定された板のFIFOを検索して、指定されたIDがtimeclose個以上見つかったら、
その旨をbbs.cgiに返す。ただし、このときはbbsdはIDをFIFOに積まない
=> bbs.cgi はエラー処理(連続投稿ですか)をする
・timeclose個未満だったら、そのIDをFIFOに積み、bbs.cgiには正常を返す
=> bbs.cgi は正常系の処理をする
という形のAPIをbbsd側で作っていただけると助かります。
で、これは「記録用ファイル」と書きましたが、bbsd的にはメモリ上のみでよいと考えます。
119root▲ ★
NGNG あとは、>>92 ですか。
これらは基本的には、データベースですね。
ID、時間の要素、回数の要素
というDBをbbsd側で作っていただき、フロントからはそれに登録したり、
参照したりするかんじになるかなと。
詳細は、読みきったところで。
これらは基本的には、データベースですね。
ID、時間の要素、回数の要素
というDBをbbsd側で作っていただき、フロントからはそれに登録したり、
参照したりするかんじになるかなと。
詳細は、読みきったところで。
120▲ ◆cZfSunOs.U
2005/11/13(日) 19:10:56ID:s+Rpgd2P0 >>115-119 乙です.そちらもぼちぼち実装していきます.
ところでふと思ったんですが,timecount / timeclose データの FIFO の段数は
SETTING.TXT の timecount 値ということですが,となるとスレッド立てすぎデータ (>>93)
の FIFO 段数 $n も,ひょっとするとやはり SETTING.TXT の BBS_THREAD_TATESUGI 値
だったりするのでしょうか? もしそうだとすると......当初仕様通り bbsd 呼び出し時の
引数として $n を渡すのがいいのか,それとも bbsd 側で SETTING.TXT から取得するのがいいのか,
どうなんでしょうね.微妙なところかも知れませんが......
ところでふと思ったんですが,timecount / timeclose データの FIFO の段数は
SETTING.TXT の timecount 値ということですが,となるとスレッド立てすぎデータ (>>93)
の FIFO 段数 $n も,ひょっとするとやはり SETTING.TXT の BBS_THREAD_TATESUGI 値
だったりするのでしょうか? もしそうだとすると......当初仕様通り bbsd 呼び出し時の
引数として $n を渡すのがいいのか,それとも bbsd 側で SETTING.TXT から取得するのがいいのか,
どうなんでしょうね.微妙なところかも知れませんが......
122root▲ ★
NGNG 読み直しました。
ご指摘のとおり、段数はbbs.cgi側からは要らないですね。
> - 「板名」「FIFOファイル」「FIFO段数」「登録キー」「登録データ」を引数として、bbs.cgiから呼び出し
を、
> - 「板名」「FIFOファイル」「登録キー」「登録データ」を引数として、bbs.cgiから呼び出し
つまり、
> my $value = bbsd($bbs, 'chkthr', $file, $n, $key, $value, "$logfilename:$logline");
の、$n は bbs.cgi 側から指定しないことにして、
bbsd が SETTING.TXT から TATESUGI を読んで、それを使う
ことにしていただければと思います。
ご指摘のとおり、段数はbbs.cgi側からは要らないですね。
> - 「板名」「FIFOファイル」「FIFO段数」「登録キー」「登録データ」を引数として、bbs.cgiから呼び出し
を、
> - 「板名」「FIFOファイル」「登録キー」「登録データ」を引数として、bbs.cgiから呼び出し
つまり、
> my $value = bbsd($bbs, 'chkthr', $file, $n, $key, $value, "$logfilename:$logline");
の、$n は bbs.cgi 側から指定しないことにして、
bbsd が SETTING.TXT から TATESUGI を読んで、それを使う
ことにしていただければと思います。
124▲ ◆cZfSunOs.U
2005/11/14(月) 22:24:59ID:tChr8Idl0 [1-10] 1-A-d timecount/timecloseのための記録用ファイル 一 (>>118)
my $n = bbsd($bbs, 'chktimecount', $id, "$logfilename:$logline");
・ 段数 timecount の FIFO をオンメモリで作成.
・ $id のデータ数が timeclose 以上ならば戻り値としてそのデータ数を返す.
FIFO データは変更せず.
・ $id のデータ数が timeclose 未満ならば戻り値として 0 を返す.
FIFO に $id のデータを追加.
[1-9] 1-A-c スレッド立てすぎです、のための記録用ファイル 一 (>>93, >>122)
my $value = bbsd($bbs, 'chkthr', $file, $key, $value, "$logfilename:$logline");
・ 引数 $n を廃止し,FIFO 段数として BBS_THREAD_TATESUGI 値を使用するよう変更.
----------------------------------------------------------------------
ここまで実装しますた.
my $n = bbsd($bbs, 'chktimecount', $id, "$logfilename:$logline");
・ 段数 timecount の FIFO をオンメモリで作成.
・ $id のデータ数が timeclose 以上ならば戻り値としてそのデータ数を返す.
FIFO データは変更せず.
・ $id のデータ数が timeclose 未満ならば戻り値として 0 を返す.
FIFO に $id のデータを追加.
[1-9] 1-A-c スレッド立てすぎです、のための記録用ファイル 一 (>>93, >>122)
my $value = bbsd($bbs, 'chkthr', $file, $key, $value, "$logfilename:$logline");
・ 引数 $n を廃止し,FIFO 段数として BBS_THREAD_TATESUGI 値を使用するよう変更.
----------------------------------------------------------------------
ここまで実装しますた.
126root▲ ★
NGNG Samba24の処理
a) Samba24用DB初期化用API
bbsdはbbs.cgi船が起動する時に指令を受ける
(bbs.cgiは最初にこの指令を出すように組まれる)
入力: 板名bname、秒数s
bbsdが起動して最初に指令を受けたら板別にDBを作り、
秒数sや回数nが異なった指令を受けたら、DBをconfigしなおす。
ただし、DBに蓄えているものは保持する。
指令が既にあるものと同じ秒数や回数だったら、何もしない。
万一a)の前にb)を受けたら、常に正常終了でよい。
# 最大10分、Samba24のDBが作られなくなりますが、、、。
# HDD上にDBをダンプするなり作るなりして、そこに前にあったbnameやsを入れるのもありです。
# というか、そのほうがよさげか。そうすればa)が来なくてもサービスできるですね。
# 将来秒数sはSETTING.TXTになるとのこと。
a) Samba24用DB初期化用API
bbsdはbbs.cgi船が起動する時に指令を受ける
(bbs.cgiは最初にこの指令を出すように組まれる)
入力: 板名bname、秒数s
bbsdが起動して最初に指令を受けたら板別にDBを作り、
秒数sや回数nが異なった指令を受けたら、DBをconfigしなおす。
ただし、DBに蓄えているものは保持する。
指令が既にあるものと同じ秒数や回数だったら、何もしない。
万一a)の前にb)を受けたら、常に正常終了でよい。
# 最大10分、Samba24のDBが作られなくなりますが、、、。
# HDD上にDBをダンプするなり作るなりして、そこに前にあったbnameやsを入れるのもありです。
# というか、そのほうがよさげか。そうすればa)が来なくてもサービスできるですね。
# 将来秒数sはSETTING.TXTになるとのこと。
127root▲ ★
NGNG (続き)
b) Samba24用DB登録&チェック用API
1) 書き込みリクエストがあると、bbs.cgi は投稿に固有のID(*1)をキーに、
Samba24用DBに問い合わせを出す
入力: bname、ID
(*1)IPアドレスまたは携帯固有番号またはp2の番号
2) bbsdは投稿に固有のIDをキーに、Samba24用DBを検索する
DBでは、
「そのIDで問い合わせを受けた通産回数」と「そのIDで問い合わせを受けた最後の時間」
を保持している
今まで1回もそのIDで問い合わせを受けたことがなければ、
DBに「ID、1回、その時間」を登録して、正常終了を呼び出し元に返す
b) Samba24用DB登録&チェック用API
1) 書き込みリクエストがあると、bbs.cgi は投稿に固有のID(*1)をキーに、
Samba24用DBに問い合わせを出す
入力: bname、ID
(*1)IPアドレスまたは携帯固有番号またはp2の番号
2) bbsdは投稿に固有のIDをキーに、Samba24用DBを検索する
DBでは、
「そのIDで問い合わせを受けた通産回数」と「そのIDで問い合わせを受けた最後の時間」
を保持している
今まで1回もそのIDで問い合わせを受けたことがなければ、
DBに「ID、1回、その時間」を登録して、正常終了を呼び出し元に返す
128root▲ ★
NGNG (続き)
3) そのIDで問い合わせを受けたことがある場合は、
3.1) もし、前に問い合わせを受けてからs秒以上経過していた場合には、
DBのそのIDのエントリをリセット(*2)して、正常終了を呼び出し元に返す
(*2)「ID、1回、その時間」にする
3.2) もし、前に問い合わせを受けてからs秒未満だった場合には、
DB側のそのIDのエントリの回数により、下記のように動作が分かれる
3.2.1) もし、そのIDでの通産問い合わせ回数が注意回数
(デフォルト3回、何かで変更可能になっているとうれしい)以下だったら、
DBの「ID、通産回数、最終時間」を更新し、
「異常ステータス1」を呼び出し元に返す
3.2.2) もし、そのIDでの通産問い合わせ回数が注意回数を超えているが、
規制回数(デフォルト5回、何かで変更可能になっているとうれしい)以下だったら、
DBの「ID、通産回数、最終時間」を更新し、
「異常ステータス2」を呼び出し元に返す
3.2.3) もし、そのIDでの通産問い合わせ回数が規制回数を超えたら、
DBを「ID、永久」にし、
「異常ステータス3」を呼び出し元に返す
3.2.4) 「ID、永久」の状態になった以降は、s秒以上の時間を空けた問い合わせが
あったとしても、すべて「異常ステータス3」を呼び出し元に返す
3) そのIDで問い合わせを受けたことがある場合は、
3.1) もし、前に問い合わせを受けてからs秒以上経過していた場合には、
DBのそのIDのエントリをリセット(*2)して、正常終了を呼び出し元に返す
(*2)「ID、1回、その時間」にする
3.2) もし、前に問い合わせを受けてからs秒未満だった場合には、
DB側のそのIDのエントリの回数により、下記のように動作が分かれる
3.2.1) もし、そのIDでの通産問い合わせ回数が注意回数
(デフォルト3回、何かで変更可能になっているとうれしい)以下だったら、
DBの「ID、通産回数、最終時間」を更新し、
「異常ステータス1」を呼び出し元に返す
3.2.2) もし、そのIDでの通産問い合わせ回数が注意回数を超えているが、
規制回数(デフォルト5回、何かで変更可能になっているとうれしい)以下だったら、
DBの「ID、通産回数、最終時間」を更新し、
「異常ステータス2」を呼び出し元に返す
3.2.3) もし、そのIDでの通産問い合わせ回数が規制回数を超えたら、
DBを「ID、永久」にし、
「異常ステータス3」を呼び出し元に返す
3.2.4) 「ID、永久」の状態になった以降は、s秒以上の時間を空けた問い合わせが
あったとしても、すべて「異常ステータス3」を呼び出し元に返す
129root▲ ★
NGNG c) Samba24用DBリセット用API
F22から呼ばれる。
これを呼ぶと、そのbbsdで管理しているSamba24用DBの中身は全部ゼロクリアされる
ただし、a) で初期化した値はそのまま残る
d) Samba24用DB状況調査用API
F22から呼ばれる。
これを呼ぶと、いくつのIDがSamba24用DBに登録されているかを返す
F22から呼ばれる。
これを呼ぶと、そのbbsdで管理しているSamba24用DBの中身は全部ゼロクリアされる
ただし、a) で初期化した値はそのまま残る
d) Samba24用DB状況調査用API
F22から呼ばれる。
これを呼ぶと、いくつのIDがSamba24用DBに登録されているかを返す
130root▲ ★
NGNG …というかんじです。日本語が、微妙かもしれないですね。
変なところがあったら、書いてくださいです。> SunOSさん
日本語で説明を書き下すと、以外に複雑な形になってしまいましたが、
実際の中身は、それほどのものでもないです。
ようは、同じIDで短い時間の間に何度も何度もやると、だんだんと出世していって、
そのうち永久になっちゃいますよ、っていうかんじです。
それを、コスト低く実現していると。
今日は、こんなところで。
変なところがあったら、書いてくださいです。> SunOSさん
日本語で説明を書き下すと、以外に複雑な形になってしまいましたが、
実際の中身は、それほどのものでもないです。
ようは、同じIDで短い時間の間に何度も何度もやると、だんだんと出世していって、
そのうち永久になっちゃいますよ、っていうかんじです。
それを、コスト低く実現していると。
今日は、こんなところで。
131root▲ ★
NGNG …と、ここまで書いて、
s秒をbbsdで管理するか、bbs.cgiで管理するか、
微妙なかんじもしてきました。
つまり、bbsdでは「回数」「前の問い合わせからの経過秒数」を戻りにして、
Sambaの判定は、bbs.cgiでやらせたほうがいいんじゃないかなと。
その路線だと、、、。ちょっと、再度考えてみるですかね。
s秒をbbsdで管理するか、bbs.cgiで管理するか、
微妙なかんじもしてきました。
つまり、bbsdでは「回数」「前の問い合わせからの経過秒数」を戻りにして、
Sambaの判定は、bbs.cgiでやらせたほうがいいんじゃないかなと。
その路線だと、、、。ちょっと、再度考えてみるですかね。
133▲ ◆cZfSunOs.U
2005/11/20(日) 08:54:55ID:EFjCcJ0V0 >>126-132 乙です.処理内容のイメージはだいたいつかめました.
問題は設定値(規定秒数・注意回数・規制回数)の扱いというところですか.
># 将来秒数sはSETTING.TXTになるとのこと。
というのを雪だるまを機に実施して,そうした設定値をすべて
SETTING.TXT から取得できるようにするのも一案かも知れませんが,
それができなければどうするかというところで......
「a) Samba24用DB初期化用API」と「b) Samba24用DB登録&チェック用API」
を別々にした場合,>>126 でも言及されているように a) より b) が
先に来るという可能性もあるのですが,それなら両者を統合して
「b) Samba24用DB登録&チェック用API」の引数でそれらの設定値も
一緒に渡すというのも一案かも知れませんね.いずれにせよ
秒数や回数の判定は登録&チェックの段階で行うことになりますし.
あるいは >>131 のように設定値に基づく判定は bbs.cgi 側が行って
bbsd は登録のみ行うということも考えられますが,その場合
規定秒数以上だった場合のリセットが行えないのが問題ですかね.
問題は設定値(規定秒数・注意回数・規制回数)の扱いというところですか.
># 将来秒数sはSETTING.TXTになるとのこと。
というのを雪だるまを機に実施して,そうした設定値をすべて
SETTING.TXT から取得できるようにするのも一案かも知れませんが,
それができなければどうするかというところで......
「a) Samba24用DB初期化用API」と「b) Samba24用DB登録&チェック用API」
を別々にした場合,>>126 でも言及されているように a) より b) が
先に来るという可能性もあるのですが,それなら両者を統合して
「b) Samba24用DB登録&チェック用API」の引数でそれらの設定値も
一緒に渡すというのも一案かも知れませんね.いずれにせよ
秒数や回数の判定は登録&チェックの段階で行うことになりますし.
あるいは >>131 のように設定値に基づく判定は bbs.cgi 側が行って
bbsd は登録のみ行うということも考えられますが,その場合
規定秒数以上だった場合のリセットが行えないのが問題ですかね.
134▲ ◆cZfSunOs.U
2005/11/20(日) 10:01:50ID:EFjCcJ0V0 あと,規定秒数以上経過していたエントリは消していかないと,DB がどんどん肥大化
していきそうな気もしますね(その対策として c) があるのだと思いますが,
その呼び出しが来る前の段階で肥大化を防げればその方が良さそうな気もします).
ということで,やはり規定秒数は何らかの形で bbsd が知っておいた方がいいかも知れません.
していきそうな気もしますね(その対策として c) があるのだと思いますが,
その呼び出しが来る前の段階で肥大化を防げればその方が良さそうな気もします).
ということで,やはり規定秒数は何らかの形で bbsd が知っておいた方がいいかも知れません.
135root▲ ★
2005/11/20(日) 21:10:44ID:???0 >>133
どもです。
> 問題は設定値(規定秒数・注意回数・規制回数)の扱いというところですか.
そういうことですね。
なんか「ステートレス」「ステートフル」っていう話か。
> 「a) Samba24用DB初期化用API」と「b) Samba24用DB登録&チェック用API」
> を別々にした場合,>>126 でも言及されているように a) より b) が
> 先に来るという可能性もあるのですが,それなら両者を統合して
> 「b) Samba24用DB登録&チェック用API」の引数でそれらの設定値も
> 一緒に渡すというのも一案かも知れませんね.いずれにせよ
> 秒数や回数の判定は登録&チェックの段階で行うことになりますし.
これ、いいかもですね。
毎回bbsdに引数を全部渡せばいいのか。
>>134
そですね。DBのレコード毎にexpireできる仕組みを実装していただけると、
いいようなかんじで。
ちょっと、これらの路線で改めて仕様考えてみるです。
どもです。
> 問題は設定値(規定秒数・注意回数・規制回数)の扱いというところですか.
そういうことですね。
なんか「ステートレス」「ステートフル」っていう話か。
> 「a) Samba24用DB初期化用API」と「b) Samba24用DB登録&チェック用API」
> を別々にした場合,>>126 でも言及されているように a) より b) が
> 先に来るという可能性もあるのですが,それなら両者を統合して
> 「b) Samba24用DB登録&チェック用API」の引数でそれらの設定値も
> 一緒に渡すというのも一案かも知れませんね.いずれにせよ
> 秒数や回数の判定は登録&チェックの段階で行うことになりますし.
これ、いいかもですね。
毎回bbsdに引数を全部渡せばいいのか。
>>134
そですね。DBのレコード毎にexpireできる仕組みを実装していただけると、
いいようなかんじで。
ちょっと、これらの路線で改めて仕様考えてみるです。
136root▲ ★
2005/11/20(日) 22:11:01ID:???0 a+b) Samba24用汎用API、●でスレッド立て過ぎにも使用
書き込みリクエストがあると呼ばれる。
引数: bname, ID, s, w, k
bname: 板名
ID: IPアドレスまたは携帯固有番号またはp2の番号または●セッションID
(任意の文字列として取り扱えればOK)
s: 秒数 (s > 0)
w: 注意回数 (w >= 0)
k: 規制回数 (k >= w >= 0)
処理内容:
今まで1回もそのIDで問い合わせを受けたことがなければ、
DBに「ID、1回、その時間」を登録して、正常終了を呼び出し元に返す。
そのIDで問い合わせを受けたことがある場合は、
もし、前に問い合わせを受けてからs秒以上経過していた場合には、
DBのそのIDのエントリをリセット(*2)して、正常終了を呼び出し元に返す
(*2)「ID、1回、その時間」にする。
(続く)
書き込みリクエストがあると呼ばれる。
引数: bname, ID, s, w, k
bname: 板名
ID: IPアドレスまたは携帯固有番号またはp2の番号または●セッションID
(任意の文字列として取り扱えればOK)
s: 秒数 (s > 0)
w: 注意回数 (w >= 0)
k: 規制回数 (k >= w >= 0)
処理内容:
今まで1回もそのIDで問い合わせを受けたことがなければ、
DBに「ID、1回、その時間」を登録して、正常終了を呼び出し元に返す。
そのIDで問い合わせを受けたことがある場合は、
もし、前に問い合わせを受けてからs秒以上経過していた場合には、
DBのそのIDのエントリをリセット(*2)して、正常終了を呼び出し元に返す
(*2)「ID、1回、その時間」にする。
(続く)
137root▲ ★
2005/11/20(日) 22:13:42ID:???0 (続き)
もし、前に問い合わせを受けてからs秒未満だった場合には、
DB側のそのIDのエントリの回数により、下記のように動作が分かれる。
1) もし、そのIDでの通産問い合わせ回数が注意回数w以下だったら、
DBの「ID、通産回数、最終時間」を更新し、
「異常ステータス1」を呼び出し元に返す。
2) もし、そのIDでの通産問い合わせ回数が注意回数wを超えているが、 規制回数k以下だったら、
DBの「ID、通産回数、最終時間」を更新し、
「異常ステータス2」を呼び出し元に返す。
3) もし、そのIDでの通産問い合わせ回数が規制回数kを超えたら、
DBを「ID、規制発動」にし、
「異常ステータス3」を呼び出し元に返す。
4) 「ID、永久」の状態になった以降は、s秒以上の時間を空けた問い合わせで
あったとしても、すべて「異常ステータス3」を呼び出し元に返す。
もし、前に問い合わせを受けてからs秒未満だった場合には、
DB側のそのIDのエントリの回数により、下記のように動作が分かれる。
1) もし、そのIDでの通産問い合わせ回数が注意回数w以下だったら、
DBの「ID、通産回数、最終時間」を更新し、
「異常ステータス1」を呼び出し元に返す。
2) もし、そのIDでの通産問い合わせ回数が注意回数wを超えているが、 規制回数k以下だったら、
DBの「ID、通産回数、最終時間」を更新し、
「異常ステータス2」を呼び出し元に返す。
3) もし、そのIDでの通産問い合わせ回数が規制回数kを超えたら、
DBを「ID、規制発動」にし、
「異常ステータス3」を呼び出し元に返す。
4) 「ID、永久」の状態になった以降は、s秒以上の時間を空けた問い合わせで
あったとしても、すべて「異常ステータス3」を呼び出し元に返す。
138root▲ ★
2005/11/20(日) 22:16:23ID:???0 (続き)
あ、「ID、規制発動」になおしてください。< 4)
「ID、規制発動」の状態になってから3600秒(1時間)経過したら、
あるいは最後の問い合わせから3600秒経過したら、
そのIDのエントリをDBからexpireする。
あ、「ID、規制発動」になおしてください。< 4)
「ID、規制発動」の状態になってから3600秒(1時間)経過したら、
あるいは最後の問い合わせから3600秒経過したら、
そのIDのエントリをDBからexpireする。
139root▲ ★
2005/11/20(日) 22:22:20ID:???0 これで、bbs.cgi側から普段使うAPIはひとつにできそうです。
で、●でスレッド立てすぎです、にも、応用できるですね。
bname: 板名
ID: ●のID
s: 3600
w: 6
k: 6
とかやれば、1時間で6つまでしか同じ●でスレッド、立てられないはず。
<チラシの裏>
うまくやれば、●を使ったスレつぶしにも対応できそうな気がしますが、
それは同じIDでDBを複数持たせる必要があるのかな。
あと、このI/Fを利用して、他サーバのbbs.cgiからex14のbbsdに通信して、
news4vipに関するデータを参照するとか(以下略。
</チラシの裏>
で、これをすればF22での定期クリアは必要なさそうな気もしますが、
メンテナンス用に、以下のI/Fは準備いただけると。
で、●でスレッド立てすぎです、にも、応用できるですね。
bname: 板名
ID: ●のID
s: 3600
w: 6
k: 6
とかやれば、1時間で6つまでしか同じ●でスレッド、立てられないはず。
<チラシの裏>
うまくやれば、●を使ったスレつぶしにも対応できそうな気がしますが、
それは同じIDでDBを複数持たせる必要があるのかな。
あと、このI/Fを利用して、他サーバのbbs.cgiからex14のbbsdに通信して、
news4vipに関するデータを参照するとか(以下略。
</チラシの裏>
で、これをすればF22での定期クリアは必要なさそうな気もしますが、
メンテナンス用に、以下のI/Fは準備いただけると。
141root▲ ★
2005/11/20(日) 22:25:14ID:???0 で、あと、
これまで出た中で、詰めなければいけない仕様って、あったっけか。
これまで出た中で、詰めなければいけない仕様って、あったっけか。
142root▲ ★
2005/11/20(日) 22:28:18ID:???0 …で、私のほうでも、
bbs.cgi 見直してみるです。
この目的のために、かなり整理整頓したわけで。
bbs.cgi 見直してみるです。
この目的のために、かなり整理整頓したわけで。
143▲ ◆cZfSunOs.U
2005/11/21(月) 00:18:31ID:+sSOM0E80 >>135-142 乙です.で,確認しておきたい点としては,この API 用の DB は
オンメモリで完結ということでもいいのでしょうか,ということと,
Samba24 と ● のデータを1つの DB に混在させる形でもいいのでしょうか,
というところです.
あと,確認事項で残っているものはこれでしょうかね.
[1-3] 1-B-a index.htmlの広告ファイル1 四
[1-4] 1-B-a index.htmlの広告ファイル2 四
[1-8] 1-C-a bbspinkのみの広告ファイル 四
オンメモリで完結ということでもいいのでしょうか,ということと,
Samba24 と ● のデータを1つの DB に混在させる形でもいいのでしょうか,
というところです.
あと,確認事項で残っているものはこれでしょうかね.
[1-3] 1-B-a index.htmlの広告ファイル1 四
[1-4] 1-B-a index.htmlの広告ファイル2 四
[1-8] 1-C-a bbspinkのみの広告ファイル 四
144▲ ◆cZfSunOs.U
2005/11/21(月) 01:34:39ID:+sSOM0E80 考えてみると,性質の異なるデータを1つの DB に混在させてしまうより,
別々の DB に分けた方が検索効率もアップしますし,>>139 のチラシの裏のような
用途への応用も考えると,複数の DB を作成できるようにした方が汎用性は高そうですね.
ということで「板名」以外に「DB名」という引数も設け,1つの板で複数の DB を
持てるようにするのもいいかも知れませんね.
別々の DB に分けた方が検索効率もアップしますし,>>139 のチラシの裏のような
用途への応用も考えると,複数の DB を作成できるようにした方が汎用性は高そうですね.
ということで「板名」以外に「DB名」という引数も設け,1つの板で複数の DB を
持てるようにするのもいいかも知れませんね.
145root▲ ★
NGNG >>143-144
> この API 用の DB はオンメモリで完結ということでもいいのでしょうか
こういう仕様だといいかもです。
1) bbsdが終了する時に、HDDに吐き出して終了する
場所・場所は public_html/test/bbsdのDBとわかるもの.cgi あたりで
2) bbsdは起動時にそのDBがあるか調べて、あれば読み込んでスタート
あとはオンメモリで動作
> Samba24 と ● のデータを1つの DB に混在させる形でもいいのでしょうか,
これは >>144 のご指摘のとおり、DB名を指定できるとすばらしいです。
今後何か装置を開発した時に、DB名を変えていろいろとDBを増やせそうなので。
ということで、>>136 はこんな汎用APIになりますか。
(続く)
> この API 用の DB はオンメモリで完結ということでもいいのでしょうか
こういう仕様だといいかもです。
1) bbsdが終了する時に、HDDに吐き出して終了する
場所・場所は public_html/test/bbsdのDBとわかるもの.cgi あたりで
2) bbsdは起動時にそのDBがあるか調べて、あれば読み込んでスタート
あとはオンメモリで動作
> Samba24 と ● のデータを1つの DB に混在させる形でもいいのでしょうか,
これは >>144 のご指摘のとおり、DB名を指定できるとすばらしいです。
今後何か装置を開発した時に、DB名を変えていろいろとDBを増やせそうなので。
ということで、>>136 はこんな汎用APIになりますか。
(続く)
146root▲ ★
NGNG (続き)
a+b) Samba24用汎用API、●でスレッド立て過ぎにも使用
書き込みリクエストがあると呼ばれる。
引数: DB, bname, ID, s, w, k
DB: 文字列(例: samba24)
bname: 板名
ID: IPアドレスまたは携帯固有番号またはp2の番号または●セッションID
(任意の文字列として取り扱えればOK)
s: 秒数 (s > 0)
w: 注意回数 (w >= 0)
k: 規制回数 (k >= w >= 0)
処理内容:
今まで1回もそのIDで問い合わせを受けたことがなければ、
DBで指定されたDBに「ID、1回、その時間」を登録して、正常終了を呼び出し元に返す。
そのIDで問い合わせを受けたことがある場合は、
もし、前に問い合わせを受けてからs秒以上経過していた場合には、
指定されたDBのそのIDのエントリをリセット(*2)して、正常終了を呼び出し元に返す
(*2)「ID、1回、その時間」にする。
a+b) Samba24用汎用API、●でスレッド立て過ぎにも使用
書き込みリクエストがあると呼ばれる。
引数: DB, bname, ID, s, w, k
DB: 文字列(例: samba24)
bname: 板名
ID: IPアドレスまたは携帯固有番号またはp2の番号または●セッションID
(任意の文字列として取り扱えればOK)
s: 秒数 (s > 0)
w: 注意回数 (w >= 0)
k: 規制回数 (k >= w >= 0)
処理内容:
今まで1回もそのIDで問い合わせを受けたことがなければ、
DBで指定されたDBに「ID、1回、その時間」を登録して、正常終了を呼び出し元に返す。
そのIDで問い合わせを受けたことがある場合は、
もし、前に問い合わせを受けてからs秒以上経過していた場合には、
指定されたDBのそのIDのエントリをリセット(*2)して、正常終了を呼び出し元に返す
(*2)「ID、1回、その時間」にする。
148root▲ ★
NGNG で、先回りして言っておくと、広告には「取り扱い的に」種類が大きく二つあるです。
a) 所定のファイルを読み込んでいる広告
b) bbs.cgiにハードコーディングで埋め込まれている報告
a) は、bbsdで無理なく対応可能ですが、
b) を、さてどうするかと。
というわけでこのへんは、動かしながら調整かなぁと。
a) 所定のファイルを読み込んでいる広告
b) bbs.cgiにハードコーディングで埋め込まれている報告
a) は、bbsdで無理なく対応可能ですが、
b) を、さてどうするかと。
というわけでこのへんは、動かしながら調整かなぁと。
149root▲ ★
NGNG ということで、今日はこのへんで二度寝するです。
なんか寝床からムニャーとしながら京ぽんでアクセスしたら、
何か漏れてたみたいで、PC出してごそごそと。
なんか寝床からムニャーとしながら京ぽんでアクセスしたら、
何か漏れてたみたいで、PC出してごそごそと。
150root▲ ★
2005/11/21(月) 16:22:49ID:???0 で、bbs.cgiに埋め込まれている広告問題ですが、
a) このさいだから、bbs.cgiから切り出す
b) bbs.cgi から bbsd に何らかの方法で渡す
の2つが考えられるですね。
でかいのは a) にするとして、b) もある程度残りそうな予感も少し。
a) このさいだから、bbs.cgiから切り出す
b) bbs.cgi から bbsd に何らかの方法で渡す
の2つが考えられるですね。
でかいのは a) にするとして、b) もある程度残りそうな予感も少し。
151▲ ◆cZfSunOs.U
2005/11/21(月) 20:54:54ID:+sSOM0E80 >>145-150 乙です.では DB 用 API はそういう形で実装していきます.
これが完了すると,とりあえず bbsd 側では動かせる形になるってところですかね.
広告については,確かに大きく固まってる部分は切り出しも容易でしょうけど,
細かくちりばめられてる部分をどうするかってのは考えどころですね......
これが完了すると,とりあえず bbsd 側では動かせる形になるってところですかね.
広告については,確かに大きく固まってる部分は切り出しも容易でしょうけど,
細かくちりばめられてる部分をどうするかってのは考えどころですね......
152root▲ ★
2005/11/22(火) 01:56:57ID:???0 >>151
了解です。よろしくおねがいしますです。
で、それ(広告)をうまく切り出せるようにすることをめざして、
作業をすすめています。
しかし、
MakeWorkFile
MakeIndex4Keitai
MakeIndex4PC
いずれも、割と神の領域だったりするんだな、これが。
了解です。よろしくおねがいしますです。
で、それ(広告)をうまく切り出せるようにすることをめざして、
作業をすすめています。
しかし、
MakeWorkFile
MakeIndex4Keitai
MakeIndex4PC
いずれも、割と神の領域だったりするんだな、これが。
153root▲ ★
2005/11/24(木) 17:54:43ID:???0 厳密にはスレ違いですが。
read.cgi と offlaw.cgi は、とりあえずmor_proxy経由でバックエンドで動かして、
mod_cache を通さないようにする、という、アドホックな路線でいってみようかと。
で、ひとつSunOSさんにというか、Apacheをわかっている方に質問なのですが、
<IfModule mod_cache.c>
CacheDisable /livejupiter/SETTING.TXT
CacheEnable disk /livejupiter/
CacheRoot /md/cache
CacheSize 65536
</IfModule>
なんて書いた場合、/md/cache のオーナーとかパーミッションって、
どうすればよかったんでしたっけか。
なんか、キャッシュされないみたいなんで。
read.cgi と offlaw.cgi は、とりあえずmor_proxy経由でバックエンドで動かして、
mod_cache を通さないようにする、という、アドホックな路線でいってみようかと。
で、ひとつSunOSさんにというか、Apacheをわかっている方に質問なのですが、
<IfModule mod_cache.c>
CacheDisable /livejupiter/SETTING.TXT
CacheEnable disk /livejupiter/
CacheRoot /md/cache
CacheSize 65536
</IfModule>
なんて書いた場合、/md/cache のオーナーとかパーミッションって、
どうすればよかったんでしたっけか。
なんか、キャッシュされないみたいなんで。
155▲ ◆cZfSunOs.U
2005/11/24(木) 21:06:02ID:g6I3uHOe0 Samba24 用汎用 DB チェック&登録:
my $statnum = bbsd($bbs, 'chkid', $dbname, $id, $seconds, $nwarn, $nkick, "$logfilename:$logline");
・ このような流れ:
if ($id エントリ存在) {
if ($id_entry->n == 規制発動)
$statnum = 3;
else if (現在時刻 - $id_entry->time >= $seconds) {
$id_entry->n = 1;
$statnum = 0;
}
else if (++$id_entry->n <= $nwarn)
$statnum = 1;
else if ($id_entry->n <= $nkick)
$statnum = 2;
else {
$id_entry->n = 規制発動;
$statnum = 3;
}
}
else {
$id エントリ作成;
$id_entry->n = 1;
$statnum = 0;
}
$id_entry->time = 現在時刻;
return $statnum;
・ (現在時刻 - $id_entry->time >= 3600 秒) のエントリは削除.
・ データは $DOCUMENT_ROOT/$bbs/bbsd_dbs/$dbname にストア.
次回起動時にそのファイルがあれば読み込んで利用.
bbsd_dbs ディレクトリが存在しなければ自動的に作成し,
その際 "Deny from all" という内容の .htaccess も自動作成.
# これでファイル名を *.cgi にしたりダミーの index.html を作成したりも不要かと.
Samba24 用汎用 DB チェック:
my $statnum = bbsd($bbs, 'peekid', $dbname, $id, $seconds, $nwarn, $nkick, "$logfilename:$logline");
・ エントリ登録・更新を行わないが,それ以外は chkid と同じ.
Samba24 用汎用 DB クリア:
my $errmsg = bbsd($bbs, 'clearids', $dbname, "$logfilename:$logline");
Samba24 用汎用 DB エントリ数カウント:
my $n = bbsd($bbs, 'countids', $dbname, "$logfilename:$logline");
my $statnum = bbsd($bbs, 'chkid', $dbname, $id, $seconds, $nwarn, $nkick, "$logfilename:$logline");
・ このような流れ:
if ($id エントリ存在) {
if ($id_entry->n == 規制発動)
$statnum = 3;
else if (現在時刻 - $id_entry->time >= $seconds) {
$id_entry->n = 1;
$statnum = 0;
}
else if (++$id_entry->n <= $nwarn)
$statnum = 1;
else if ($id_entry->n <= $nkick)
$statnum = 2;
else {
$id_entry->n = 規制発動;
$statnum = 3;
}
}
else {
$id エントリ作成;
$id_entry->n = 1;
$statnum = 0;
}
$id_entry->time = 現在時刻;
return $statnum;
・ (現在時刻 - $id_entry->time >= 3600 秒) のエントリは削除.
・ データは $DOCUMENT_ROOT/$bbs/bbsd_dbs/$dbname にストア.
次回起動時にそのファイルがあれば読み込んで利用.
bbsd_dbs ディレクトリが存在しなければ自動的に作成し,
その際 "Deny from all" という内容の .htaccess も自動作成.
# これでファイル名を *.cgi にしたりダミーの index.html を作成したりも不要かと.
Samba24 用汎用 DB チェック:
my $statnum = bbsd($bbs, 'peekid', $dbname, $id, $seconds, $nwarn, $nkick, "$logfilename:$logline");
・ エントリ登録・更新を行わないが,それ以外は chkid と同じ.
Samba24 用汎用 DB クリア:
my $errmsg = bbsd($bbs, 'clearids', $dbname, "$logfilename:$logline");
Samba24 用汎用 DB エントリ数カウント:
my $n = bbsd($bbs, 'countids', $dbname, "$logfilename:$logline");
156▲ ◆cZfSunOs.U
2005/11/24(木) 21:06:47ID:g6I3uHOe0 スレスト:
my $errmsg = bbsd($bbs, "stop:$key", $datline, "$logfilename:$logline");
スレ再開:
my $errmsg = bbsd($bbs, "restart:$key", $datline, "$logfilename:$logline");
$datline は dat に追記する内容(通常書き込み時と同フォーマット).
スレ移動:
my $errmsg = bbsd($bbs, "move:$key", $newbbs, "$logfilename:$logline");
----------------------------------------------------------------------
以上実装しますた.別鯖へのスレ移動を除いて一通り実装できたかと思います.
>>153 乙です.
>/md/cache のオーナーとかパーミッション
httpd プロセスが読み書き可能なオーナ・パーミッションであれば Ok かと.
>なんか、キャッシュされないみたいなんで。
とりあえず "LogLevel debug" にしてみると手がかりが得られるかも知れません.
>read.cgi と offlaw.cgi は、とりあえずmor_proxy経由でバックエンドで動かして、
>mod_cache を通さないようにする、という、アドホックな路線でいってみようかと。
これやるなら,Last-Modified を吐くようにしてキャッシュを効かせる形の方が良さそうな気もしますけどね.
my $errmsg = bbsd($bbs, "stop:$key", $datline, "$logfilename:$logline");
スレ再開:
my $errmsg = bbsd($bbs, "restart:$key", $datline, "$logfilename:$logline");
$datline は dat に追記する内容(通常書き込み時と同フォーマット).
スレ移動:
my $errmsg = bbsd($bbs, "move:$key", $newbbs, "$logfilename:$logline");
----------------------------------------------------------------------
以上実装しますた.別鯖へのスレ移動を除いて一通り実装できたかと思います.
>>153 乙です.
>/md/cache のオーナーとかパーミッション
httpd プロセスが読み書き可能なオーナ・パーミッションであれば Ok かと.
>なんか、キャッシュされないみたいなんで。
とりあえず "LogLevel debug" にしてみると手がかりが得られるかも知れません.
>read.cgi と offlaw.cgi は、とりあえずmor_proxy経由でバックエンドで動かして、
>mod_cache を通さないようにする、という、アドホックな路線でいってみようかと。
これやるなら,Last-Modified を吐くようにしてキャッシュを効かせる形の方が良さそうな気もしますけどね.
157root▲ ★
2005/11/25(金) 00:13:21ID:???0158root▲ ★
2005/11/25(金) 00:13:41ID:???0 で、live22のbbsdを更新しました。
いっぽ、いっぽ。
いっぽ、いっぽ。
159root▲ ★
2005/11/25(金) 02:52:48ID:???0 bbs.cgi とにらめっこ中、、、。
単純な質問で申し訳ないのですが、
$logfilename:$logline は、その「行為」ごとにとられる、ということかしら。
つまり、ログとらなくてもいい場合は、どうすればいいのかなと。
単純な質問で申し訳ないのですが、
$logfilename:$logline は、その「行為」ごとにとられる、ということかしら。
つまり、ログとらなくてもいい場合は、どうすればいいのかなと。
160root▲ ★
2005/11/25(金) 02:56:25ID:???0 こんなふうでいいのかな。
my $md5line = &bbsd($GB->{FORM}->{'bbs'}, 'getmd5seed', "/dev/null:");
my $md5line = &bbsd($GB->{FORM}->{'bbs'}, 'getmd5seed', "/dev/null:");
161root▲ ★
2005/11/25(金) 03:08:20ID:???0 $md5line = &bbsd($bbs, 'getmd5seed', "/dev/null:");
しこんだ。
しこんだ。
162root▲ ★
2005/11/25(金) 03:44:33ID:???0 とれるみたい。
%./bbs.pl livejupiter getmd5seed /dev/null:test | cat -v
2005_11_25<>M-XM-{Y=M-^E^@.M-^_TcM-QM-/<M-^EM--0
で、どうしてこれはとれないのかな。
%./bbs.pl livejupiter chkthr (むぎゅー) 256 AAAAAAAA This_is_test /dev/null:test
Invalid argument
%./bbs.pl livejupiter getmd5seed /dev/null:test | cat -v
2005_11_25<>M-XM-{Y=M-^E^@.M-^_TcM-QM-/<M-^EM--0
で、どうしてこれはとれないのかな。
%./bbs.pl livejupiter chkthr (むぎゅー) 256 AAAAAAAA This_is_test /dev/null:test
Invalid argument
163root▲ ★
2005/11/25(金) 03:57:34ID:???0 %./bbs.pl livejupiter chkid kuromarusuretate AAAAAAAA 3600 6 6 /dev/null:test
164root▲ ★
2005/11/25(金) 04:04:16ID:???0 ./bbs.pl livejupiter getndats /dev/null:test
0
0
167▲ ◆cZfSunOs.U
2005/11/25(金) 06:49:32ID:M1pAccsZ0 >>159-166 乙です.
>$logfilename:$logline は、その「行為」ごとにとられる、ということかしら。
>つまり、ログとらなくてもいい場合は、どうすればいいのかなと。
"$logfilename:$logline" のところに ':' を含まない文字列を適当に指定すれば Ok です.
/dev/null でもログ出力はしませんが,ファイルオープンは試みてしまうので
':' を含まない文字列指定の方がわずかですがムダは少ないかと思います.
>で、どうしてこれはとれないのかな。
>
>%./bbs.pl livejupiter chkthr (むぎゅー) 256 AAAAAAAA This_is_test /dev/null:test
>Invalid argument
>>124
> my $value = bbsd($bbs, 'chkthr', $file, $key, $value, "$logfilename:$logline");
>
> ・ 引数 $n を廃止し,FIFO 段数として BBS_THREAD_TATESUGI 値を使用するよう変更.
引数が1個余分ですね.$n は廃止で,$key は整数値です.
>$logfilename:$logline は、その「行為」ごとにとられる、ということかしら。
>つまり、ログとらなくてもいい場合は、どうすればいいのかなと。
"$logfilename:$logline" のところに ':' を含まない文字列を適当に指定すれば Ok です.
/dev/null でもログ出力はしませんが,ファイルオープンは試みてしまうので
':' を含まない文字列指定の方がわずかですがムダは少ないかと思います.
>で、どうしてこれはとれないのかな。
>
>%./bbs.pl livejupiter chkthr (むぎゅー) 256 AAAAAAAA This_is_test /dev/null:test
>Invalid argument
>>124
> my $value = bbsd($bbs, 'chkthr', $file, $key, $value, "$logfilename:$logline");
>
> ・ 引数 $n を廃止し,FIFO 段数として BBS_THREAD_TATESUGI 値を使用するよう変更.
引数が1個余分ですね.$n は廃止で,$key は整数値です.
169root▲ ★
NGNG というわけで、ひとつ、仕様追加のお願いがあります。
>>155 ですが、
> Samba24 用汎用 DB チェック&登録:
> my $statnum = bbsd($bbs, 'chkid', $dbname, $id, $seconds, $nwarn, $nkick, "$logfilename:$logline");
を、
Samba24 用汎用 DB チェック&登録:
my ($statnum, $count, $second) = bbsd($bbs, 'chkid', $dbname, $id, $seconds, $nwarn, $nkick, "$logfilename:$logline");
にしていただくことは可能でしょうか。
$count, $second はSamba24でそれぞれ、
($count回目、$second sec しかたってない)
に、使っているです。
つまり、問い合わせ回数が何回目か($count)と、
前回の問い合わせからのインターバルが$second秒だったよ、という情報を、bbs.cgi側に返していただきたいなと。
>>155 ですが、
> Samba24 用汎用 DB チェック&登録:
> my $statnum = bbsd($bbs, 'chkid', $dbname, $id, $seconds, $nwarn, $nkick, "$logfilename:$logline");
を、
Samba24 用汎用 DB チェック&登録:
my ($statnum, $count, $second) = bbsd($bbs, 'chkid', $dbname, $id, $seconds, $nwarn, $nkick, "$logfilename:$logline");
にしていただくことは可能でしょうか。
$count, $second はSamba24でそれぞれ、
($count回目、$second sec しかたってない)
に、使っているです。
つまり、問い合わせ回数が何回目か($count)と、
前回の問い合わせからのインターバルが$second秒だったよ、という情報を、bbs.cgi側に返していただきたいなと。
170root▲ ★
NGNG あと、もう一つI/Fがほしいです。
・板名とスレッドキーで指定してbbsdを呼ぶと、該当するdatの1行目をそのまま返す
これができると、トラックバックに対応できます。
さみだれ式ですみませんが、よろしくおながいしますです。
・板名とスレッドキーで指定してbbsdを呼ぶと、該当するdatの1行目をそのまま返す
これができると、トラックバックに対応できます。
さみだれ式ですみませんが、よろしくおながいしますです。
171root▲ ★
NGNG それから、、、広告か。
ここに晒していいかどうかわからないから、メールしておくです。
ここに晒していいかどうかわからないから、メールしておくです。
173root▲ ★
NGNG175root▲ ★
NGNG おしりの
アニメ | CM | ゲーム | 映画 | 音楽 | テレビ | 日記
は、bbs.cgi から教えることにしたです(対応済み)。
アニメ | CM | ゲーム | 映画 | 音楽 | テレビ | 日記
は、bbs.cgi から教えることにしたです(対応済み)。
176root▲ ★
NGNG purge...
とか、なってしまうのですね。< footnote
ちと、微妙かも。
とか、なってしまうのですね。< footnote
ちと、微妙かも。
177root▲ ★
NGNG …あと、Over1000やらスレストやら何やらで、書き込みリクエストがしくった場合の
エラー処理ハンドリングって、どうやればいいのかしら、、、。
エラー処理ハンドリングって、どうやればいいのかしら、、、。
2005/11/25(金) 17:29:36ID:i7XT2rQk0
★★ 頑張って!rootさん! ★★
179▲ ◆cZfSunOs.U
2005/11/25(金) 22:08:00ID:M1pAccsZ0 >>169 実装完
Samba24 用汎用 DB チェック&登録:
my ($statnum, $count, $second) = split(/,/, bbsd($bbs, 'chkid', $dbname, $id, $seconds, $nwarn, $nkick, "$logfilename:$logline"));
Samba24 用汎用 DB チェック:
my ($statnum, $count, $second) = split(/,/, bbsd($bbs, 'peekid', $dbname, $id, $seconds, $nwarn, $nkick, "$logfilename:$logline"));
bbsd は直接 Perl 配列を返せないため CSV 文字列で返しますので,split() をかまして下さい.
>>170 実装完
>>1取得:
my $datline = bbsd($bbs, 'get1', $key, "$logfilename:$logline");
>>171-172 えーと,届いてません......というか,もし旧 E-mail (〜(at)super.win.ne.jp) 宛に
お送り頂いていたとすると,ISP が事実上破綻状態となっているため利用できなくなってます.
お手数ですがとりあえず sunos(at)saita.ma 宛に再度お送り下さい.折り返し新 E-mail もお知らせします.
>>177 $errmsg が空文字列以外ならエラーで,例えば 1000 レス越えや 512kB 越えなら
"Disc quota exceeded" (EDQUOT) を返し,スレストなら "Permission denied" (EACCES) を
返しますので,それに沿って処理すればいいかと.
Samba24 用汎用 DB チェック&登録:
my ($statnum, $count, $second) = split(/,/, bbsd($bbs, 'chkid', $dbname, $id, $seconds, $nwarn, $nkick, "$logfilename:$logline"));
Samba24 用汎用 DB チェック:
my ($statnum, $count, $second) = split(/,/, bbsd($bbs, 'peekid', $dbname, $id, $seconds, $nwarn, $nkick, "$logfilename:$logline"));
bbsd は直接 Perl 配列を返せないため CSV 文字列で返しますので,split() をかまして下さい.
>>170 実装完
>>1取得:
my $datline = bbsd($bbs, 'get1', $key, "$logfilename:$logline");
>>171-172 えーと,届いてません......というか,もし旧 E-mail (〜(at)super.win.ne.jp) 宛に
お送り頂いていたとすると,ISP が事実上破綻状態となっているため利用できなくなってます.
お手数ですがとりあえず sunos(at)saita.ma 宛に再度お送り下さい.折り返し新 E-mail もお知らせします.
>>177 $errmsg が空文字列以外ならエラーで,例えば 1000 レス越えや 512kB 越えなら
"Disc quota exceeded" (EDQUOT) を返し,スレストなら "Permission denied" (EACCES) を
返しますので,それに沿って処理すればいいかと.
180▲ ◆cZfSunOs.U
2005/11/25(金) 22:24:56ID:M1pAccsZ0181む@食事中 P211018235238.ppp.prin.ne.jp
2005/11/25(金) 22:52:19ID:u8Lne6GM0 おー、帰ったら早速組み込むです。
で、すぐメール出しなおします。
で、すぐメール出しなおします。
182▲ ◆cZfSunOs.U
2005/11/25(金) 23:11:38ID:M1pAccsZ0 bbsd 側の SO_SNDBUF も大きくした方がよさそうなので,その点も変更.
183root▲ ★
NGNG 洋ぽん問題の対応を先にするです。
まずは、メールフォワードしておくです。
まずは、メールフォワードしておくです。
184▲ ◆cZfSunOs.U
2005/11/26(土) 00:52:45ID:NBQj9pON0 >>183 メール受け取りました.で,広告の件ですが......
インクルードファイルの情報は非公開とのことなんですが,bbsd.c 自体が
今のところソース公開状態なんで,それを直接 bbsd.c に埋め込むと
結果的には公開してしまうことになってしまうんですよね......
ということで,いくつか方策を考えたんですが
1. bbsd.c も非公開化する.
2. 広告テキストだけでなく,インクルードファイル名も bbsd 呼び出し時の
引数として渡すようにする.
3. index.html のテンプレートは bbsd.c にハードコーディングではなく,
外部ファイル化してそれを利用する形にする.
4. その他何かいい方法.
さて,どういう形がいいでしょうか......
インクルードファイルの情報は非公開とのことなんですが,bbsd.c 自体が
今のところソース公開状態なんで,それを直接 bbsd.c に埋め込むと
結果的には公開してしまうことになってしまうんですよね......
ということで,いくつか方策を考えたんですが
1. bbsd.c も非公開化する.
2. 広告テキストだけでなく,インクルードファイル名も bbsd 呼び出し時の
引数として渡すようにする.
3. index.html のテンプレートは bbsd.c にハードコーディングではなく,
外部ファイル化してそれを利用する形にする.
4. その他何かいい方法.
さて,どういう形がいいでしょうか......
185root▲ ★
NGNG >>184
私は、広告の場所も公開して問題ないとは思うのですが、、、。
1. は、いやですね。
2. がいい気がします。
基本的に、広告は3ブロックなので、
'ad1'
'ad2'
'ad3'
みたいな引数で、DOCROOTからの相対パスで
広告のファイル名指定できるようにしておくというのはどうでしょう。
で、それをそのまま読んでいただければと。
私は、広告の場所も公開して問題ないとは思うのですが、、、。
1. は、いやですね。
2. がいい気がします。
基本的に、広告は3ブロックなので、
'ad1'
'ad2'
'ad3'
みたいな引数で、DOCROOTからの相対パスで
広告のファイル名指定できるようにしておくというのはどうでしょう。
で、それをそのまま読んでいただければと。
186root▲ ★
NGNG187▲ ◆cZfSunOs.U
2005/11/26(土) 01:15:14ID:NBQj9pON0 >>185-186 では,インクルードファイル名も引数化ってことですね.
ただ,bbsd に渡すパス名は,$logfilename も touch コマンドの引数も
$DOCUMENT_ROOT/test/ からの相対パスという形になってますので,
それに統一した方がいいと思います.これは,bbs.cgi 自体の場所からの
相対パスってことですね.
ただ,bbsd に渡すパス名は,$logfilename も touch コマンドの引数も
$DOCUMENT_ROOT/test/ からの相対パスという形になってますので,
それに統一した方がいいと思います.これは,bbs.cgi 自体の場所からの
相対パスってことですね.
190root▲ ★
NGNG あと、datを chmod 444 すると、
書けたように見えて書けないというのが、発生するみたいです。
書けたように見えて書けないというのが、発生するみたいです。
191▲ ◆cZfSunOs.U
2005/11/26(土) 02:31:37ID:NBQj9pON0193▲ ◆cZfSunOs.U
2005/11/26(土) 02:41:05ID:NBQj9pON0194root▲ ★
NGNG %./bbs.pl livejupiter 1132860497 'a<>a<>a<>a<>' foot log
Permission denied
ふうむ。ってことはbbs.cgi側すね。
すんませーん。でなおしてきます。
Permission denied
ふうむ。ってことはbbs.cgi側すね。
すんませーん。でなおしてきます。
195root▲ ★
NGNG bbs.cgiの虫でした。
さっきのは、虫していただければと。カサコソ
--------------------
書込み中・・・
--------------------
ERROR!
ERROR:このスレッドには書き込めません。
ホストbanana637.maido3.com
名前: ◆MUMUMUhnYI
E-mail: sage
内容:
ほい。
こちらでリロードしてください。 GO!
分からないことがあったら2ちゃんねるガイドへ。。。
アクセス規制・プロキシー制限等規制は、2ちゃんねるビューアを使うと回避できることがあります。自分で解決してみよう! 書き込めない時の早見表
さっきのは、虫していただければと。カサコソ
--------------------
書込み中・・・
--------------------
ERROR!
ERROR:このスレッドには書き込めません。
ホストbanana637.maido3.com
名前: ◆MUMUMUhnYI
E-mail: sage
内容:
ほい。
こちらでリロードしてください。 GO!
分からないことがあったら2ちゃんねるガイドへ。。。
アクセス規制・プロキシー制限等規制は、2ちゃんねるビューアを使うと回避できることがあります。自分で解決してみよう! 書き込めない時の早見表
196▲ ◆cZfSunOs.U
2005/11/26(土) 09:58:37ID:NBQj9pON0 広告対応しますた.書き込み API の引数追加になります.
# ずいぶん引数が多くなってきました(w
my $errmsg = bbsd($bbs, $key, $datline, $footnote, $adfile1, $adfile2, $adfile3, $adline, "$logfilename:$logline");
$adline が一番下の小さいやつです.
ただ,現状では $adfile1 には外枠が含まれておらず(つまり bbsd 側で枠を作成),
一方 $adfile2, $adfile3 には外枠が含まれ(つまり bbsd 側では枠を作成せず),
そのため今のままでは枠の外観が不統一になってしまいますね.
# ずいぶん引数が多くなってきました(w
my $errmsg = bbsd($bbs, $key, $datline, $footnote, $adfile1, $adfile2, $adfile3, $adline, "$logfilename:$logline");
$adline が一番下の小さいやつです.
ただ,現状では $adfile1 には外枠が含まれておらず(つまり bbsd 側で枠を作成),
一方 $adfile2, $adfile3 には外枠が含まれ(つまり bbsd 側では枠を作成せず),
そのため今のままでは枠の外観が不統一になってしまいますね.
>>196
> # ずいぶん引数が多くなってきました(w
リファレンスで渡すといぃかも?
my $errmsg = bbsd(
[
BBS => $bbs,
KEY => $key,
DATLINE => $datline,
:
:
]
);
みたいな。。。
> # ずいぶん引数が多くなってきました(w
リファレンスで渡すといぃかも?
my $errmsg = bbsd(
[
BBS => $bbs,
KEY => $key,
DATLINE => $datline,
:
:
]
);
みたいな。。。
198▲ ◆cZfSunOs.U
2005/11/26(土) 11:03:31ID:NBQj9pON0 >>197 単純に引数を羅列するよりリファレンスで渡す方が
無駄なコピーとかは発生しないようになるんですかね.
ただ,sub bbsd {} 自体はあまりインテリジェントではなく,
単純に引数を連結して bbsd にパケット投げてるだけなんで,
ハッシュリスト形式にするメリットはあまりないかも......
無駄なコピーとかは発生しないようになるんですかね.
ただ,sub bbsd {} 自体はあまりインテリジェントではなく,
単純に引数を連結して bbsd にパケット投げてるだけなんで,
ハッシュリスト形式にするメリットはあまりないかも......
199● iv66.opt2.point.ne.jp(222.225.56.66) stream ◆PNstream2s
2005/11/26(土) 12:35:38ID:z1nSq/XO0 live22xでスレ立てしようとしたらこうなりました。
●ログインしてました
ERROR!
ERROR:不明なエラーが発生しました。
(board:livejupiter key:1132976035 errmsg:1132976035)
このメッセージをコピペして、運用情報板で報告していただけるとありがたいです。
ホストiv66.opt2.point.ne.jp
sss
名前: 名無しさん@お腹いっぱい。
E-mail:
内容:
test
これはこっちでいいのかな
それともbbs.cgiスレかな?
Monazilla/1.00 (JaneLovely/0.1.6)
●ログインしてました
ERROR!
ERROR:不明なエラーが発生しました。
(board:livejupiter key:1132976035 errmsg:1132976035)
このメッセージをコピペして、運用情報板で報告していただけるとありがたいです。
ホストiv66.opt2.point.ne.jp
sss
名前: 名無しさん@お腹いっぱい。
E-mail:
内容:
test
これはこっちでいいのかな
それともbbs.cgiスレかな?
Monazilla/1.00 (JaneLovely/0.1.6)
200stream ◆PNstream2s
2005/11/26(土) 12:36:52ID:z1nSq/XO0201stream ◆PNstream2s
2005/11/26(土) 12:37:52ID:z1nSq/XO0 うーん、IFをつめてくスレだったからやっぱbbs.cgiスレのほうが良かったですね
203root▲ ★
NGNG で、ちょっと対応します。
そうか、新スレの時はスレッドキーが返るのを忘れてた。
そうか、新スレの時はスレッドキーが返るのを忘れてた。
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 竹中平蔵氏、立憲民主党の食料品消費税ゼロ案に持論を展開「日本は税負担が少ない国」「インフレ率が極めて低い」 [樽悶★]
- 【食糧】スーパーのコメ5kg4000円突破 値上がり続く 史上最高値を更新 農水省★4 [シャチ★]
- 「けんかをやめて」「維新と国民民主をとめて」 野党を糾合できない立憲民主の悲哀と限界 [蚤の市★]
- 高額療養費制度、外国人の利用割合限定的 支給額全体の約1% [蚤の市★]
- 「性犯罪マップ」が物議 事件・加害者情報などマッピング、誰でも閲覧可能 個人情報保護の観点で疑問の声 [おっさん友の会★]
- 【JA全農】「備蓄米」明記しないよう販売要請へ 取り合いになる可能性懸念 “スポット価格”は依然高止まりか ★2 [牛乳トースト★]
- 【実況】博衣こよりのえちえち朝こよ🧪
- 【画像】東京都民「助けて!満員電車が悪化してるの!あと40年これやるの?!誰かなんとかしてよッッ!」 [732289945]
- 朝日新聞「コメは5kg2265円が適正価格!誰かが差額分ボロ儲けしてる!!」 [481941988]
- (´・ω・`)おはよ
- ワイ社畜、吐く🤮
- 【悲報】トランプ政権、クリミアをロシア領と認めることを検討 [733893279]