X



トップページ運用情報
498コメント239KB
【雪だるま】bbsd⇔各cgi間のI/F仕様について考え・詰めていくスレッド
■ このスレッドは過去ログ倉庫に格納されています
0001root▲ ★
垢版 |
NGNG
雪だるま作戦において開発をすすめている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に持たせたい・持つべきな機能をあぶり出し、実装仕様を詰めていくことを目標にしています。
0239root▲ ★
垢版 |
2005/11/27(日) 12:45:08ID:???0
>>238
了解です。
ENOENTは「スレッドがありません。」
EEXISTは「別の人が同時刻にスレッドを立てようとしています。ごめんなさい。」

にするです。
0241◆cZfSunOs.U
垢版 |
2005/11/28(月) 07:12:46ID:Ki+x4bGX0
>>240 乙です.わかるかと思いますが一応......タイムアウト時間は

use constant BBSD_TIMEOUT => second;

のところで調整できます.あと

use constant BBSD_HOST => inet_aton('host');
use constant BBSD_PORT => port;

というのが現在は定数になってますが,これは今後 live22 以外にも雪だるまを
使うようになったら,各ホストに対応する接続先に切り替えられるように
した方がいいですね.
0242root▲ ★
垢版 |
2005/11/28(月) 11:09:03ID:???0
>>241
ですね。< タイムアウト

で、host, port は、引数で与えるとか、あるいはどこかに config を書いておいて
bbs.cgi の船出航時に読むとかの応用もあるかなと。
0243root▲ ★
垢版 |
2005/11/28(月) 11:15:35ID:???0
で、先日ちょっと書いたトラックバックへの対応ですが、
http でバックエンドにdatをとりにいくように bbs.cgi で対応したので、
bbsd での対応は、不要になったです。
0244◆cZfSunOs.U
垢版 |
2005/11/29(火) 00:30:54ID:xl2IcKRm0
>>242 鯖ごとに config ファイルを置いてそれを読み込むってのがいいかもですね.

>>243 なるほど.まぁ get1 コマンドはとりあえず残しておきますが.
ただ,HTTP を使うなら,バックエンドではなく localhost から取ってくれば
キャッシュを有効活用できてその分バックエンドの負担を減らせるかも知れません.
0245root▲ ★
垢版 |
NGNG
>>244
なるほど。
キャッシュを活用させるためには、どうやってとりにいけばいいのかしら。
read.cgiの特性上、今はlive22x.2ch.netという名前は、live22x[123]の中では、
live22.2ch.netの裏口につけてあったりして。
0246◆cZfSunOs.U
垢版 |
2005/11/29(火) 07:35:19ID:xl2IcKRm0
>>245 ん〜と,普通に localhost 宛に HTTP リクエストを発すればいいかと.
もし VirtualHost を使っているのなら,"ServerAlias localhost" を設定して
localhost 宛のリクエストがその VirtualHost 宛として扱われるようにすればいいですね.
0247root▲ ★
垢版 |
2005/11/29(火) 13:33:14ID:???0
>>246
なるほどです。

本日午後以降多忙のため、別途ぼちぼち。
0248◆cZfSunOs.U
垢版 |
2005/11/29(火) 16:28:48ID:GdnIox6j0
>>247 乙です.というか,Apache 側で ServerAlias とか設定しなくても,
localhost に接続しつつ Host ヘッダを live22x.2ch.net にすればいいですね.
例えば LWP 使ってるなら

    my $req = HTTP::Request->new(GET => "http://localhost/livejupiter/dat/1111111111.dat");
    $req->header(Host => "live22x.2ch.net");

とかすればいいかと.
0249root▲ ★
垢版 |
NGNG
>>248
use LWP::Simple;
$firstlog = get("http://$ENV{SERVER_NAME}/$GB->{FORM}->{bbs}/dat/$GB->{FORM}->{'key'}.dat");
$firstlog =~ s/\n.*//g;

なんていう、超手抜きコードですね。

帰ったら、>>248 を試してみるです。
0250◆cZfSunOs.U
垢版 |
2005/11/30(水) 08:24:40ID:0+e07y/o0
>>249 LWP::Simple ではヘッダ指定とか出来なさそうなので,LWP::UserAgent
などを使ってもうちょっと手をかけなければならないかも知れません......
0251root▲ ★
垢版 |
NGNG
>>250
みたいですね。

つまり「へんなところで手抜きしちゃ だめですよ」ってことすか。

トラックバックは所詮トラックバックなので(= とりあえず動いているのと、
今は量で効いてこないんで、優先度高くない)、おいおい、マターリってかんじで。
0252◆cZfSunOs.U
垢版 |
2005/11/30(水) 20:40:39ID:0+e07y/o0
まぁ手をかけるといっても数行程度ですが......

use LWP::UserAgent;
my $ua = LWP::UserAgent->new(agent => '', timeout => 5);
my $res = $ua->get("http://localhost/$GB->;{'FORM'}->{'bbs'}/dat/$GB->{'FORM'}->{'key'}.dat", Host => $ENV{'SERVER_NAME'});
if ($res->is_error) {
    DispError2($GB, 'ERROR!', 'ERROR:>>1取得失敗');
}
my $firstlog = (split(/\n/, $res->content, 2))[0];
0253root▲ ★
垢版 |
2005/11/30(水) 22:13:49ID:???0
>>252
おー。

例によって、帰宅後にでも。
0254root▲ ★
垢版 |
NGNG
>>252 を組み込みました。

# 051205 雪だるまでのトラックバック送信部分を改良(キャッシュが効くように) by む
0256動け動けウゴウゴ2ちゃんねる
垢版 |
NGNG
実況鯖スレでは擁護に回っているけれど、
live22b[12]のテストが足りなかったんじゃ、という気は正直あります。
heartbeat体制で最速1000テストやったわけでもないし。
0257root▲ ★
垢版 |
2005/12/09(金) 15:05:18ID:???0
>>256
たしかに。

でも、書き込み系のテストは割とすぐできるけど、
読み出し系のテストは、実戦以外でやるの、むずかしいす。

まぁ、言い訳ですが。
0259動け動けウゴウゴ2ちゃんねる
垢版 |
2005/12/13(火) 20:00:33ID:7YzWalJw0
復帰の呪文ですがー
今実際に使ってるのは通常復帰とsage復帰の2種類じゃないでしょうかー
(というか、それで足りているはずというかー)
復帰補さんが登場した時に、古い呪文なんたら、ってことがあったようなー
厳密にはメールで呪文のやりとりして確認するしかないんじゃないでしょうかー
0261◆cZfSunOs.U
垢版 |
2005/12/13(火) 23:34:16ID:pxLkBcfF0
そろそろ呪文系 CGI も bbsd 対応が必要のようで......
呪文関連の API は >>45 >>156 あたりです.

で,sage 復帰っていうのはどのような処理になってるんでしょうか?
場合によっては API 追加になるのかな......
0263削除ふぶき ★
垢版 |
2005/12/13(火) 23:44:06ID:???0
liveanb の復帰依頼が来ていますのでお願いしますわ。ごきげんよう
0264stream ◆PNstream2s
垢版 |
2005/12/13(火) 23:44:18ID:o0NfBbqA0
>>261
>sage復帰
現在subject.txtに存在するスレッドのうち、datが存在しないものを省く処理です。
スレッドの順位は復帰前と復帰後では変わりません。
0265◆cZfSunOs.U
垢版 |
2005/12/14(水) 00:11:10ID:HoK4P3HR0
>>264 なるほど.既存の purge コマンドを使ってやるか,それとも別の API を作るか,
どちらがいいかってとこですね.呪文 CGI のわかる方と相談ということで......
0266root▲ ★
垢版 |
2005/12/14(水) 02:49:45ID:???0
>>259
なるほどです。
通常復帰とsage復帰って、同じ呪文(CGI)で引数が違うのかしら。
それとも、CGI自身が違うのかな。

>>261
どもです。
どうせ必要になると思うので、それらのAPIを使った
もうひとつ上のレイヤのサブルーチンを、ぼちぼち書き始めようかなと。

で、bbsd-common.pl とか、そういう名前で置いておいて、
各呪文からはrequireすると。

>>262
メッセージを見ようと思って点滅しているところをクリックした瞬間に、
ICQが異常終了しました(AA略)、、、。

すみませんが、再度お送りいただけますとありがたいです、、、。
0267水色@飛行石 ★
垢版 |
2005/12/14(水) 02:57:04ID:???0
>通常復帰とsage復帰って、同じ呪文(CGI)で引数が違うのかしら。

同じCGIで、うしろにオプション付けるって感じですー。
0268◆cZfSunOs.U
垢版 |
2005/12/14(水) 03:00:31ID:HoK4P3HR0
>>266 乙です.

で,とりあえず sage 復帰に相当する機能の API 実装しますた.

dat の存在しないスレを subject から消す:
        my $errmsg = bbsd($bbs, 'autopurge', "$logfilename:$logline");
0269root▲ ★
垢版 |
2005/12/14(水) 03:02:22ID:???0
>>267
了解です。

>>268
はやっ。おつです。
live22のbbsdを更新してきます。
0270root▲ ★
垢版 |
2005/12/14(水) 03:05:08ID:???0
bbsd 更新完了 @ live22。
0271◆cZfSunOs.U
垢版 |
2005/12/14(水) 03:29:20ID:HoK4P3HR0
>>269-270 乙です.が......ちょっとマズい点があって修正したので,
再度更新お願いします......
0273root▲ ★
垢版 |
NGNG
SunOSさんに作ってもらったAPIを使って、
呪文に組み込むための、

$errmsg = &ResSakujo($ita, $key, $resnum);

$errmsg = &ResToumeiSakujo($ita, $key, $resnum);

$errmsg = &SureStop($ita, $key);

$errmsg = &SureAgain($ita, $key);

$errmsg = &SureMove($ita, $key, $newita);

のサブルーチンを作ってみました。

で、気づいたところを。

1) レス削除をすると、BBS_DELETE_NAME を読むようです。
私は問題ないと思いますが、今の動作と違うみたいです。

2) スレ移動をすると、移動先の一番下に入るようです。
これは今の呪文も、そうなんでしたっけ。
0274root▲ ★
垢版 |
NGNG
で、削除系では、

$errmsg = &SureSakujo($ita, $key);

$errmsg = &SureGomibako($ita, $key);

は、今日中にできると思います。

で、スレ削除に使うAPI、

# スレッドのファイル自体削除:
# my $errmsg = &bbsd($bbs, "tdelete:$key", '*', "$logfilename:$logline");

は、本当にスレがrmされてしまうのでしょうか。
つまり、二度と復活できない。
0275root▲ ★
垢版 |
NGNG
復帰系では、

$errmsg = &Fukki($ita);

$errmsg = &SageFukki($ita);

を、作る予定。

で、質問なのですが、html/html の下って、
今の復帰の呪文でも、作られなおすんでしたっけか。
0276root▲ ★
垢版 |
NGNG
で、ここまではここ数日のうちにはできると思うので、
あとは、呪文への組み込みができれば、それでよいはず。

このへんのパーツができたら、次の段階(組み込み)へと。
0278root▲ ★
垢版 |
2005/12/14(水) 21:13:50ID:???0
>>277
了解です。ということは、現在の動作で問題ないですね。

で、$range というぐらいで、ひょっとするとインテリジェントな指定が
できたりするのかしら。< レス削除と透明削除
0280root▲ ★
垢版 |
2005/12/14(水) 21:48:09ID:???0
>>266
> すみませんが、再度お送りいただけますとありがたいです、、、。

再度送っていただきました。どもです。

で、ちと、重要なおながいをば、、、。

Qをお送りいただいた方には大変申し訳ないのですが、
管理人または管理人に許可を受けた方以外の方が、
呪文の名前と機能を使い方をQで私にダイレクトに送るのは、
今後はできれば、ご遠慮いただけますと幸いでございますです。
見ちゃうと、目がつぶれますです。えぇえぇ。

で、お送りいただいた復帰の呪文については、
練習を兼ねて私のほうで組み込んでみますです、、、。むぎゅー。
0282root▲ ★
垢版 |
NGNG
>>273 のスレスト再開を、

> $errmsg = &SureAgain($ita, $key);

から、

$errmsg = &SureRestart($ita, $key);

に、変えた。
0283root▲ ★
垢版 |
NGNG
田吾作 ★ さんへ

芋掘りの芋は既に live22xN の所定の位置に配置されるようになっていますので、
芋掘り機を live22xN に入れていただければ、芋堀りは可能なはずです。

芋掘り機を入れる場合、live22xN (N=1,2,3) の全てに同じものを入れてくださいです。

なお、ファイルはゆっくり同期していますので、書き込みから最大5分程度、
芋ができるのに遅延がありますです。
0284root▲ ★
垢版 |
NGNG
ゴミ箱送りが、うまく動かないようです。

%./bbsd-test.pl
No such file or directory

たぶん、live22xtr じゃなくて live22tr だからか。
0285root▲ ★
垢版 |
NGNG
>>283
芋はバックエンドで掘るようにしてもらえるようです。
(コピーが減って、少し楽になる)
0286root▲ ★
垢版 |
NGNG
さて、ひととおり共通APIを書いたんで、

・スレスト
・復帰

の呪文を、とりあえずごにょってみるです。
0288◆cZfSunOs.U
垢版 |
2005/12/15(木) 00:17:30ID:p57+vtBb0
>>273- 乙です.動き出したようですね<呪文対応

BBS_DELETE_NAME ですが,「あぼーん」と違う設定の板があるとか,
この項目を将来的に SETTING.TXT から廃止する予定があるとか,
そういうことがあればその部分の処理を変えた方がいいのかも知れませんが,
どうなんでしょうか.

レス削除の $range は,例えば

-4,8-13,18,20-24,26,29-

のように柔軟な指定が可能になってます."-4" は "1-4" と等価で,
"29-" は例えば最終レス番が 40 なら "29-40" と等価です.

26,29-,20-24,8-13,18,-4  (順不同な指定)
-4,8-13,11,18,20-24,22-23,26,29-  (重複するレス番がある)

というような指定であっても問題ありません.
ただ,"24-20" のように - の後ろの数値が小さい指定や,
最終レス番が 40 のスレで "38-41" のように範囲外の数値を
指定するとエラーになります.

スレのファイル自体削除は,dat そのものを削除しますので,復活はできません.
ゴミ箱送りが機能しないのは,やはりホスト名の問題ですね.フロントも live22 という
名前ならゴミ箱の名前が live22tr になりますが,現状だと live22xtr にしてしまうので.
とりあえずスレ移動で代用するのがいいのかな......
0289root▲ ★
垢版 |
NGNG
>>288
> BBS_DELETE_NAME ですが,「あぼーん」と違う設定の板があるとか,
> この項目を将来的に SETTING.TXT から廃止する予定があるとか,
> そういうことがあればその部分の処理を変えた方がいいのかも知れませんが,
> どうなんでしょうか.

私は、今の仕様でいいかなと思っているです。
削除人の方々は、どうなのかしら。

> レス削除の $range は,例えば
> -4,8-13,18,20-24,26,29-
> のように柔軟な指定が可能になってます."-4" は "1-4" と等価で,
> "29-" は例えば最終レス番が 40 なら "29-40" と等価です.
> 26,29-,20-24,8-13,18,-4  (順不同な指定)
> -4,8-13,11,18,20-24,22-23,26,29-  (重複するレス番がある)
> というような指定であっても問題ありません.
> ただ,"24-20" のように - の後ろの数値が小さい指定や,
> 最終レス番が 40 のスレで "38-41" のように範囲外の数値を
> 指定するとエラーになります.

おー、すごいですね。
であれば、API仕様(ここに書く予定)の変数を、rangeにしてこよう。

> スレのファイル自体削除は,dat そのものを削除しますので,復活はできません.

やはりそうですか。
呪文のほうでは、実はファイルを移動しているのかな。

> ゴミ箱送りが機能しないのは,やはりホスト名の問題ですね.フロントも live22 という
> 名前ならゴミ箱の名前が live22tr になりますが,現状だと live22xtr にしてしまうので.
> とりあえずスレ移動で代用するのがいいのかな......

そうなるですね。
で、そもそもlive22はメモリディスク仕様だったりして、
live22trはメモリディスク上になかったりするので、
そのままではEXDEVか何かになるかもしれんです。
0290◆cZfSunOs.U
垢版 |
2005/12/15(木) 00:46:34ID:p57+vtBb0
>>289
>> スレのファイル自体削除は,dat そのものを削除しますので,復活はできません.
>やはりそうですか。
>呪文のほうでは、実はファイルを移動しているのかな。

従来のスレ削除ではどうなってるのか知りたいですね>ご存じの方

>で、そもそもlive22はメモリディスク仕様だったりして、
>live22trはメモリディスク上になかったりするので、
>そのままではEXDEVか何かになるかもしれんです。

*.dat は別ファイルを作成した上で内容転送,*.html は単純な rename() になってます.
移動先では一番下に追加ということで,index.html に表示されないぐらい下なら *.html が
なくてもとりあえず平気でしょうけど,そうじゃない場合にどうかってところですか......
0291root▲ ★
垢版 |
NGNG
>>290
なるほどです。

パラノイアにやるならhtml/htmlを作り直すんでしょうけど、
たぶんそこまでやらなくても、いいような気がするです。
0292root▲ ★
垢版 |
NGNG
復帰・sage復帰の呪文も、対応できたと思います。

今後、対応ができた呪文は、live22xに対して唱えてくださいです。
0293root▲ ★
垢版 |
NGNG
で、今後の方針ですが、、、。

各パーツを完成させて、実行するためのAPIの仕様をここに公開しようと思うです。

で、対応のさせ方を全部書いたうえで、
あとは、呪文のおもりをされている方に、個別に対応していただこうかなと。
たぶん、それが一番問題が少ないと思うです。

で、もし対応される方が既にいない呪文、というのがあった場合は、、、。
その時は、みんなで困りましょうと。
0294どくどくさぼてん
垢版 |
2005/12/15(木) 02:58:03ID:yD6lgmp/0
>>289
> BBS_DELETE_NAME ですが,「あぼーん」と違う設定の板があるとか,
> この項目を将来的に SETTING.TXT から廃止する予定があるとか,
> そういうことがあればその部分の処理を変えた方がいいのかも知れませんが,
> どうなんでしょうか.

これって、SETTING.TXTで多い設定は「あぼーん」と「あぼーん!」の2種類っすね。
たまにこれとちがって空文字列やら「おぼーん」やら「半漁人さん」という
設定になっている板があります。もちろん実際にはそうはなりませんが。。

で、最近、レス削除の時に、「あぼーん」のかわりに「うふーん」やら、
スレストのときに「スレは止めても愛は止まらない!」とか書いてあるときがあるけど、
あれってどうなっとるんやろなぁ。。
0295root▲ ★
垢版 |
NGNG
>>294 最終段落

何か、新しい呪文だと思うです。
このへんのメッセージを変えるAPIは、、、別途考えようっと。
0296root▲ ★
垢版 |
NGNG
てゆうか、「あぼーん」を変えるのは、ちょっと今の仕様だと難しいかもですね。
「愛は止まらない」にするとかはSunOSさん提供のAPIで、できるですが。
0297◆cZfSunOs.U
垢版 |
2005/12/15(木) 06:21:54ID:p57+vtBb0
>>294-296 なるほど.となると......レス通常削除用 API に引数追加して
「あぼーん」に相当する文字列を CGI 側から指定してもらうとかするのがいいんですかね.
0298root▲ ★
垢版 |
2005/12/15(木) 08:03:40ID:???0
>>297
そですね、そんなかんじかと。
0299root▲ ★
垢版 |
NGNG
どの呪文もこの2つを相当使っているようなので、
以下の共通APIを準備することにした。

@dat = &GetDatFromBackend($ita, $key);

@sub = &GetSubjectFromBackend($ita);

で、共通判定部分を準備した。

if (&IsSnowmanServer) {
雪だるま;
} else {
通常;
}

のように使用可能。

昨日仮対応した呪文も、追ってこれに書き換えよう。
0300root▲ ★
垢版 |
NGNG
> 昨日仮対応した呪文も、追ってこれに書き換えよう。
完了。

対応例:

# 雪だるまサーバ対応 -- 12/15/2005 by む
if (&IsSnowmanServer) {
@dat = &GetDatFromBackend($FORM{'bbs'}, $FORM{'key'});
} else {
open(DAT,"<$ondat");
@dat = <DAT>;
close(DAT);
}
0301root▲ ★
垢版 |
2005/12/15(木) 14:12:59ID:???0
で、追加でひとつお願いです。

スレッド削除は、ファイルの実体を移動することで実装している、
という情報がありました(ごくたまに、誤削除されたものを戻している人がいます)。

ということで、bbsdに以下のAPIの追加をお願いできますでしょうか。

処理名: datの移動処理(スレッド削除に相当)
動作: 板$bbsのキー$keyのdatを、指定したパス名で移動(保管)する

- 入力: $bbs, $key, パス名
- パス名はpublic_html/testからの相対パス
- datがある場所と移動先は同じパーティションにあるとは限らない

よろしくおながいいたしますです。
0302動け動けウゴウゴ2ちゃんねる
垢版 |
2005/12/15(木) 15:19:44ID:i6WLaNGa0
あぼーん<>あぼーん<>あぼーん<>あぼーん<>あぼーん
ぬるぽ<>ぬるぽ<>ぬるぽ<>ぬるぽ<>ぬるぽ
停止しました。。。<>停止<>停止<>真・スレッドストッパー。。。( ̄ー ̄)ニヤリッ<>停止したよ。
停止しました。<>停止<>停止<> 停止いたしますわ。ごきげんよう。 <>停止したよ?

こういうのを見るとfrontから一行分指定できたほうがよさそう。
0303root▲ ★
垢版 |
2005/12/15(木) 15:36:44ID:???0
>>302
既に、そうなっているですね。< bbsd
0305動け動けウゴウゴ2ちゃんねる
垢版 |
2005/12/15(木) 21:45:12ID:FMxJtf9e0
どうでもいいんだけど
/_service/IPnum-xxxx-xx-xx.txt
って書き込みIP数なの
それとも読み込みも含めたIP数なの?
0307◆cZfSunOs.U
垢版 |
2005/12/15(木) 23:20:11ID:p57+vtBb0
レスの通常あぼーん:
        my $errmsg = bbsd($bbs, "delete:$key", $range, $deletename, "$logfilename:$logline");
        # 引数追加で $deletename に「あぼーん」などの文字列を指定.
スレッド削除($path へ移動; EXDEV 対策済み):
        my $errmsg = bbsd($bbs, "delete:$key", '*', $path, "$logfilename:$logline");
        # ゴミ箱逝きには move を使ってもらって,お役ご免になりそうなスレ用 delete をこの仕様に変更.

以上実装しますた.
0308root▲ ★
垢版 |
2005/12/16(金) 00:22:47ID:???0
>>307
はや。おつです。

落ち着いたら、bbsdの入れ替え & APIへの組み込みをば。
0312どくどくさぼてん
垢版 |
2005/12/16(金) 04:47:26ID:JHq6W4mI0
そういえば、スレストの処理が微妙に従来と違うような。
いままでは、24レスのスレがスレストされたら、subject.txtには(24)って表示だったはずなのに、
>>310のスレは(25)って表示になってるですね。

あと、移転された場合も、従来は、レス数表示は移転された時点のレス数のまま、
スレタイも「移転しました。。。」ではなく移転される前のままだったけど、
移転しました。。。 (1)ってなってるように見えるです。
(通常復帰があった場合は確かにそうなるし、これは完全には確認はできてないですが、、)
0313◆cZfSunOs.U
垢版 |
2005/12/16(金) 07:13:38ID:LKeZJ6l30
>>311 乙です.ただ......細かい bugfix をしましたので,お手数ですが再度更新お願いします<bbsd

>##############################################################################
># スレをsubject.txt/subback.htmlから消去(dat落ち処理とかで)
># 入力: 板名、キー
>##############################################################################
>$errmsg = &PurgeSubject($ita, $key);

こういう形になってるとわかりやすそうですね.で,bbsd の purge コマンドの引数は
$keys となってるのがミソでして,もちろん単一のスレキーでもいいんですが,
複数のスレキーを ',' で区切って列挙しても Ok になってます.


>>312 それはですね......bbsd では,内部で保持している subject データが
dat の状態を正しく反映しているという前提で各種処理を行っているので,
dat の実際の状態と乖離したままにしておくと弊害が出かねないため
そのようにしています.また,dat の状態を正しく反映するためのオーバヘッドも
bbs.cgi に比べるとずっと小さくなっているということもあります.
0314動け動けウゴウゴ2ちゃんねる
垢版 |
2005/12/16(金) 09:06:58ID:TDi7DV+U0
しつもん
誤爆レス削除の復旧も、お願いすれば出来たんですけど。
スレ削除と同じで。
レス削除・透明削除でも
どこかに削除前のdatは持っててくれてるのかしら。
0315root▲ ★
垢版 |
2005/12/16(金) 11:07:37ID:???0
>>313
更新したです。
で、purgeは複数指定できるですか。さすが。

>>314
なるほどです。
たぶん、呪文内で保存しているんだと思います。
保存の仕方により、bbsdやその上の部分(私が今組んでいる)のAPIで
フォローする必要があるかどうかが決まるのかな。
そのへん、どうなんですかね。> 知っている方

# 削除系は、技術情報がちと。
0316root▲ ★
垢版 |
2005/12/16(金) 11:15:31ID:???0
>>315
で、そういうことであればスレ削除と同じで、残す機構を用意すればよさげですね。
対象はレス削除と透明削除ですか。

で、>>307 にも言えるのですが、既に移動先に同じ名前のファイルがあったら、
どのようなことになるのかしら(EEXISTとかかな)。
0318root▲ ★
垢版 |
NGNG
live22xではなく、live22に対して実行することになる呪文:

相当する呪文があるかどうかではなく、そういう機能を持った呪文ということで。

・SETTING.TXTをいじる呪文
・1000.txtをいじる呪文
・過去ログ削除の呪文
・強制dat落ちの呪文(手動むぎゅ)
・強制倉庫送りの呪文(★漏れとかの時に使用しているもの) → 動作確認済み by 私
・キャップを操作する呪文 → 動作確認済み by anglerさん
・削除(退避)したものを復活させる呪文
・dat落ちしたものを復活させる呪文
・芋掘り機 → おじさんから既に宣言あり
0319root▲ ★
垢版 |
NGNG
で、たぶんですが、

・SETTING.TXTをいじる呪文

は、私の知っているものについてはlive22xで起動かけたら、
「この呪文はバックエンドサーバで実行してください」
っていうのを表示するCGIを、仕込んでおくかんじで。
0320◆cZfSunOs.U
垢版 |
2005/12/16(金) 21:41:11ID:LKeZJ6l30
>>316
>で、>>307 にも言えるのですが、既に移動先に同じ名前のファイルがあったら、
>どのようなことになるのかしら(EEXISTとかかな)。

現状では単なる rename() のエミュレーション,つまり上書きになります.
EEXIST になるようにした方がいいですかね.


で,レスあぼーんでもデータ退避ですか......あぼーんの度に dat 全体を
保存していると HDD を食い潰していきそうなんで差分で保存した方が
合理的だと思いますが,そうなるとどのようなフォーマットで保存すべきかとか,
あと退避したデータからロールバックする際に,直近のデータから復元するのは
問題ないでしょうけど,何世代も前のデータから復元する際に途中に透明あぼーんが
あるとそのままではずれてしまうでしょうし......そのあたり従来のあぼーん呪文では
どうしてるんでしょうね.

また,bbsd 以外のプロセスが dat を操作することに関してですが,例えば dat 落ちの
ようにファイル自体を rename() や unlink() するのは比較的安全だと思いますが,
dat の中身を書き換えるような操作には脆い面もあります.どのような操作かにも
依存しますが,レス追記とバッティングすると追記されたレスが消失するかもとか,
*.html 生成時には対応する dat を mmap() しますので,生成される HTML が崩れるとか
最悪の場合地雷 (SIGSEGV / SIGBUS) を踏むとかいった可能性もあるので......
となると,レスあぼーんのロールバックは bbsd 側で I/F を用意した方が
良さそうにも思いますが,従来の呪文でどのような処理をしているかがわからないと
なかなか具体的に作りづらいという面もあります......
0321root▲ ★
垢版 |
NGNG
>>320
> 現状では単なる rename() のエミュレーション,つまり上書きになります.
> EEXIST になるようにした方がいいですかね.

そうしていただけると助かります。

> そのあたり従来のあぼーん呪文では
> どうしてるんでしょうね.

いつだったかに管理人とおじさんに聞いた話を思い出しつつあるのですが、
確か「レス削除系でも、毎回全部dat全体を保存している」ということらしいです。
で、ファイルがあるかどうか調べて、
あったら何らかの規則で(見てませんが、例えば.0とか.1とか)、
保存しているんではないでしょうか。

「削除」という行為の、2ちゃんねるにおける「重み」を考えると、
そのぐらいはしているような、気がしますです。

で、管理人がそういった形でのデータの「あふれ」を気にするはずもなく、
おじさんが静脈系のプログラム(F22ともいう)を作って、
定期的に後始末をしていると、ぼやいていたのを聞いたことがあります。
0322root▲ ★
垢版 |
NGNG
>>320
>また,bbsd 以外のプロセスが dat を操作することに関してですが,例えば dat 落ちの
>ようにファイル自体を rename() や unlink() するのは比較的安全だと思いますが,
>dat の中身を書き換えるような操作には脆い面もあります.

私も、そう思っているです。
なので、特にレス削除系は、基本的にフロントからbbsd経由で
統一的に操作するようにしたいところです。

>となると,レスあぼーんのロールバックは bbsd 側で I/F を用意した方が
>良さそうにも思いますが,従来の呪文でどのような処理をしているかがわからないと
>なかなか具体的に作りづらいという面もあります......

確かに、そのとおりですね。
ロールバックも基本的に呪文でやっているはずなので(違うかもですが)、
これもフロントでやるようにしたほうが、いいかもです。

あるいはもし呪文でやってなかったなら、
そのための「復活の呪文」を新たに作って、それをぢぇんぬさんに配布してもらうかんじか。


# やっぱり、もう1段階覚悟を決めて、
# 標準セットの呪文を教えてもらって、読んでみるしかないのかなぁ、、、。
0323ヒント
垢版 |
2005/12/16(金) 22:47:04ID:uVe7rRDa0
$key = スレキー;
$nowtime = UNIXたいむ;
ログ保存($key$nowtime);

一度削除系CGIの仕様を詳しく聞いた方が・・・。
俺の口からはいえない。
0324root▲ ★
垢版 |
NGNG
>>323
なるほど。
どこのどなたかは存じませんが、ありがとうございます。

同一秒の間に同じスレへの削除が起こらなければ、いけるようになっていると。
で、そうやっているってことは、
昔のbbs.cgiのスレ立て重複防止装置のところを書いた人と
仮に同じ人が書いているとすれば、
$newtimeを+1して、、、ってのを、大丈夫になるまで繰り返しているんでしょうね。

ぢぇんぬさんに、相談してみるです。
0325動け動けウゴウゴ2ちゃんねる
垢版 |
2005/12/17(土) 00:16:20ID:J/BRnm1c0
呪文だけ教わっても、アカウントがなければ作業は出来ないから
作業を押し付けられることはないと思うんですが(ぼそ)

削除ログのcgiをいじられる上で気になるのは、
書き込みログとの整合性をどこかで取ってる筈なので、
そちら(IP・リモホ)の消しすぎや漏れが出ないかどうか、です。。
0326root▲ ★
垢版 |
NGNG
ご相談のメールを、ぢぇんぬさんと管理人に発射したです。
0327root▲ ★
垢版 |
NGNG
>>325
第一段落:
某ホテルで「(アカウントは)いつでも作るですよ」って管理人に言われて、
ものすごい勢いで、首を横に振った私がいるです。

第二段落:
そうですね。
書き込みログはバックエンドにしかないので、そのへんも問題になる可能性ありか。
まずは「ご相談」のお返事を見てから、次の行動をってかんじで。
0328動け動けウゴウゴ2ちゃんねる
垢版 |
2005/12/17(土) 00:49:20ID:J/BRnm1c0
うはw 予想通り>「いつでも」&「ものい勢いで」

あとは「削除の呪文を唱えた人のログ」もあるはずなので
そちらの方の記録もできるかってことですかね。

いろいろお疲れ様です。宜しくお願いします。
0331root▲ ★
垢版 |
NGNG
>>328
>あとは「削除の呪文を唱えた人のログ」もあるはずなので
>そちらの方の記録もできるかってことですかね。

そっちは、bbsdのほうで対応するためのI/Fが用意されているです。
0332◆cZfSunOs.U
垢版 |
2005/12/17(土) 01:57:30ID:M1QED0Kk0
スレ削除(退避)時に同一パス名が存在した場合に EEXIST にするのは対応完了です.
あぼーん/ロールバック関連については,もうちょっと様子見で......
0333root▲ ★
垢版 |
NGNG
>>332
おつです。入れ替えてきます。

> あぼーん/ロールバック関連については,もうちょっと様子見で......

こちらも了解。
0334root▲ ★
垢版 |
NGNG
>>333
完了です。

- || (fd_new = open(new, O_WRONLY|O_CREAT|O_TRUNC, 0644)) == -1
+ || (fd_new = open(new, O_WRONLY|O_CREAT|O_EXCL, 0644)) == -1

なるほど。

# bbsd.cをちびちびと読み始めようかと思っていたりするんですが、
# なにぶん、中身がすごくて(いい意味です)。
# 何というか、コメントではなく、中身をもって語らしめよ、みたいな。
0335◆cZfSunOs.U
垢版 |
2005/12/17(土) 02:26:32ID:M1QED0Kk0
>>334 確かにコメントがほとんどないのは不親切かも......w
とにかくがーっと書いててコメントまで気が回らなかったんですが,
bbsd.c のおもりをどなたかに委ねるとかいうことになったら,
わかりやすいようにしなきゃですね.
0336root▲ ★
垢版 |
NGNG
>>335
> bbsd.c のおもりをどなたかに委ねるとかいうことになったら,
> わかりやすいようにしなきゃですね.

どきどき。
面白いと感じていただける間は、ぜひお願いしますです。
私も、面白いと感じていられる間は、やりますです。

で、bbs.cgi は「おじさんや私じゃなくても大丈夫な状態にする」ことが目的だったので、
もうしつこいぐらい、コメントにつぐコメントだらけになっているです。

%wc -l bbs-main.cgi
4569 bbs-main.cgi
%grep # bbs-main.cgi | wc -l
1193
0337◆cZfSunOs.U
垢版 |
2005/12/17(土) 02:40:21ID:M1QED0Kk0
>>336 まぁ,よほどのことがなければ自分の側から投げ出すってことはないと思うんで.
もっとも,天変地異はいつ起こるかわからないとか,そういうレベルの話だと神のみぞ知る,ってところですが.
0338root▲ ★
垢版 |
NGNG
>>337
それは、お互い様すね。
今日はたぶんここはこのぐらいで、たぶん、また明日以降に。

# さっきのメールの返事、管理人からはいつもどおりの「おつです。おつです。」、、、。
■ このスレッドは過去ログ倉庫に格納されています