/i
っていまだに生きてるんでしょうかね?
もしそうでなければ「Apacheレベルでcへリダイレクトに変更」でもかまわないとおもうのですが・・・
# たしかiってcの前身でいいんですよね?
4root▲ ★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 ?###
気づいたところは、私のほうでも取っておくです。
今ざっと見直してみましたが、たぶん、もうそんなにないと思いますです。 5root▲ ★NGNG
>>3
えっと、そうじゃなくて、文字列比較の時の /i です。
つまり、大文字小文字を区別しない場合の話。
どうも、Perlってこんなかんじのことをしているらしいのです(裏とっていないのでうそかもです)。
/ABC/i の処理
↓
abc
abC
aBc
Abc
AbC
ABc
AbC
aBC
ABC
と、それぞれ比較 6root▲ ★NGNG
あ、AbCがひとつ多いね。
7▲ ◆SANUKI/VII NGNG
おじさんが急いで1000取りしてるように見えた
正規表現をインタプリタで動かしたら
1,000万はあながち嘘じゃないっすよ
10root▲ ★NGNG
>>8
複雑なのをくべると、まじめにありそうですね。< 1000万
/i の件については、知り合いのPerlプログラマの話だと、
/ABC/i
/[Aa][Bb][Cc]/
で、下のほうが明らかにパフォーマンスがいい(というか、上が悪杉らしい)そうなので、
Perlの /i の実装がへぼいということの模様です。 >>10
あーその話ですか、スマソ。では本件の場合は2ch.netの大文字小文字区別なわけなので
if($ENV{'SERVER_NAME'} =~ /2ch\.net/i)
を
if($ENV{'SERVER_NAME'} =~ /2[Cc][Hh]\.[Nn][Ee][Tt]/)
とすればいいんでしょかね。 12root▲ ★NGNG
>>11
そういうことなわけですが、
現状、単純に /i を取ってしまってもいいような気がします。 16root▲ ★NGNG
>>14-15
…ですね。ほとんどの部分はそうなっているです。
>>13
規格上はそうですが、そのへんはいろいろ微妙なようですね。
小文字に直してから送出してくるブラウザやシステムも、少なからずある模様。 実際にはそれで(iなし) 何の問題も起こっていません
ちなみに
2CH.net 等でアクセスしたら(bbs.cgiにそう入ってきたら) Samba24=600 にしてます
iがどのくらい遅いかは、考えるより測ったほうがいいんじゃない?
use Benchmark;で。
20root▲ ★NGNG
>>19
そんなのあるですか。
とりあえずできるだけ(数箇所ですが)、追放してみた。 @ qb6
様子を見て配布予定。 >>18
$ENV{SERVER_NAME}はブラウザから渡される値を直ではなくapacheが生成するのでは?
まあ/iが高価なこととは関係ないんだけど いやー
言いたいことは 「iは使わない」という方針でやっているから
議論の意味がないということだったり
23root▲ ★NGNG
>>22
999(仮名)をみるところも、/i 追放してよかですか? 25root▲ ★NGNG
>>24
なるほど。
じゃ、追放したいですね。1レスごとに絶対になめるところだから。
追放しますので、規制リストを書く時には気をつけてくださいーって、
ちょろさんに伝えておいてくださいです。 ちょろさんがやっているのは一面かと、
多面はアクセスする側だったり、、、
28root▲ ★NGNG
sec2chdを見ている限り、大文字小文字がきちんと入るなら、
現状ならアクセスする側も実害はないかなと、思っていたり。
use Benchmarkも良いけど、プロファイルもね。
30root▲ ★NGNG
>>29
ですね。
プロファイリングのおかげで、
改良前のIsKoukokuがめちゃくちゃ高コストだったことがわかったです。
今は※の人の改良のおかげで、live系以外は有効にできました。 31root▲ ★NGNG
BBS.CGI - 2005/11/03
index.html にできるリンク関連を修正。
・www2.ime.st => www.ime.st
・https:// でも fhttp:// でも http:// になってしまっていたのを修正(虫取り)
・同時に /ig も追放。 33root▲ ★NGNG
さらに調整。
・https:// と fhttp:// は ime.st / pinktower.com を経由しない
(bbs.cgiが当初の思想として予期した動作)
・http:// の外部リンクは ime.st / pinktower.com 経由(従来通り)
・gopher: whois: news: telnet: の特殊処理を廃止
・https:// と fhttp:// の処理は、一部サーバ(live系など)ではリンクにしない
・http:// は従来通りどのサーバでもリンクにする 34root▲ ★NGNG
重そうな正規表現パターンマッチングを少しは整理できたと思うです。
html/ の下のやつ全部、この処理通っているので、
意外とばかにならないんじゃないかなと。
35root▲ ★NGNG
>>33 は、板トップ(index.html)生成部分の処理です。
(read.cgi ではないので要注意) >>33
> ・gopher: whois: news: telnet: の特殊処理を廃止
そんなごにょごにょしてたんですか・・・ 37root▲ ★NGNG
>>36
大昔から、変わってなかったんでしょうね。
この4つは「私が2ちゃんねるに来た2001年〜現在まで、
一度もリンクとして使われているのを見たことがなかった」ので、
もはや不要であろうと判断したです。 38root▲ ★NGNG
&jcode::tr(\$GB->{FORM}->{'FROM'}, '#', '#');
とか、
&jcode::tr(\$GB->{FORM}->{'mail'}, '#', '#');
とかって、もうちょっと効率よくできないのかしら。
41root▲ ★NGNG
BBS.CGI - 2005/11/04
動きそのものは変わりませんが、雪だるまをめざして
bbs_main のかなりの部分をサブルーチン化しました。
$GB 操作しているのでカプセル化はぜんぜんですが、
自分で読んでいて、bbs_main が長すぎて頭がうにーになってきたので、
整理の意味を込めて、いじっています。
ひととおりのテストはしてありますので、大丈夫だとは思いますが、
もし何かへんなことがあったら、知らせてくださいです。
43 ◆TWARamEjuA NGNG
>>40
http://search.cpan.org/src/DANKOGAI/Encode-2.00/encoding.pm
うー(苦笑)
=head1 ABSTRACT
Let's start with a bit of history: Perl 5.6.0 introduced Unicode
support. You could apply C<substr()> and regexes even to complex CJK
characters -- so long as the script was written in UTF-8. But back
then, text editors that supported UTF-8 were still rare and many users
instead chose to write scripts in legacy encodings, giving up a whole
new feature of Perl 5.6.
Rewind to the future: starting from perl 5.8.0 with the B<encoding>
pragma, you can write your script in any encoding you like (so long
as the C<Encode> module supports it) and still enjoy Unicode support.
This pragma achieves that by doing the following:
もしかしてjcode.pl使ってるの?
だとしたら、MakefileしたJcode.pmの方が速いんじゃ?
45root▲ ★NGNG
>>44
Jcodeは他のところで使っているはずなので、全サーバに入っているはずですね。
どうすればいいのかしら。 46 ◆TWARamEjuA NGNG
>>44
おそらくほとんどのbanana鯖には入っていないと思うので、
かなりむりぽかと(哀)@なのでPerl5.6.*のまま
>>45
なので、banana鯖に入ってJcode.pm 0.88あたりをゲトして組み込まなきゃだと思うのですです(泪)
最新のJcode.pm は2.1*でしてEncode.pmのラッパになっていたりします。@5.8.*
なので、PIEの中の人にbananaにperlを5.8.*(最新は5.8.7)におながいしないと。。。 47root▲ ★NGNG
>>41 ですが、まだまだ作業進行中です。
今は 40% ぐらいの進捗か。
先は長いとゆうことで。 48root▲ ★NGNG
BBS.CGI - 2005/11/05
>>41 の続き。 再開発に協力したいのですが、
一般人はソースとか見ること出来ないですか?
>>49
そう言うことがわからない人は再開発しなくていいで(^_^;) 再開発に協力したいのですが、
一般人はソースとか見ること出来ないですか?
54 ◆TWARamEjuA NGNG
協力するにも色々な方法があるわけでして♪
root★さんが悩んで居られるようでしたら助言をしてあげたり最適化したルーチンを提示したりとかとか♪
なんでもかでも「対等でなければならない」なんて孟宗竹なんてのは根っこから切り取らないと♪
1000超えの判定って、html/ の下を作るところの最初の部分でやっているのね。
ちょっと、驚いた。
挑戦してみる?
よたしは毎年挑戦しようと思ったけど
負け続け、、、
>>56
その様子は、何度かaccuse/operateを通じて見ているです。
なんか、いかにも効率悪そうで、気持ち悪くて、重そうなことをしてるんだなぁと
はじめて実際に、少しだけ気持ちがわかったわけです。
(これまでは、そこにたどり着く前に既に負けていた)
&MakeWorkFile を初めて呼ぶところの前までの整理整頓と、
できる範囲でのサブルーチン化は、それなりにやったです。
でも、そこから先が、、、。
たぶん、アイガー北壁なんだろうなと。
#==================================================
# ファイル操作(subject.txt & subback.html)
#==================================================
# 雪だるまサーバでは、以降のファイル処理はしない(bbsdが実行)
if(&IsSnowManServer($ENV{'SERVER_NAME'}))
{
&endhtml($GB);
}
####################################
# ここから先はまだカオス状態 by む #
#################################### まずは読んでいたりします。
ここからは思いつきで手直しすると遭難しそうなので(何せアイガー北壁)、
じっくり、やってみようかなと。
とりあえず、
$GBX->{OVER1000} = 0 ;# 1000超えフラグ(現在は未使用)
を追加してみた。
BBS_CONTENTS_NUMBER の意味を初めて知った私ガイル。
BBS_LINE_NUMBER は、「省略されました」か。
MakeWorkFile とりあえず読み終わり。
今日はもう遅いから、どうするかはいったん寝て考えるか。
とりあえず >>1 の処理と BBS_LINE_NUMBER 分のレスについての
おんなじような処理について、
べたにおんなじルーチンが2回書かれていたということはわかたです。 BBS_CONTENTS_NUMBER分のレスかな。
1とそれ以外、同じようで違う。
まとめるのが面倒で放置って感じっすか。
>>63
そのページは当然見てますけど、
これまでbbs.cgiについては私の知識がその程度だったってことです。 こんなかんじかな。
#############################################################################
# 処理中の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; }
}
今は、毎回こういうことをやっているです。
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";
(以下略)
1000超えのdat追記部分は、Process1000ってのを書こう。
>>65
通常の板だと、これだとコストが低くないかもなぁ。
subject.txt って、何百行とか千何百行とかあるわけで。
bbsdのように、mmap() するのもちょっとあれだし。
スレ数が少ない板は、subject.txt優先で、
スレ数が多い板は、dat優先がよさげ?
どのくらいが変更点なのかな。 &GetHojisuu 書く必要がありそうですね。
こいつは出航時に1回だけ読めばいいだろうから、initFOXでやろう。
>>70
mumumuGetHojisuu 実装済み。
出航時に、$FOX->{HOJISUU} にサーバの保持数が入っている。 で、>>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)
{
# 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;
}
外枠を作った。
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;
}
while (<DAT>) {}; $resnum = $.;
とか
subject.txtから読む場合は、スレのタイトルに「<>」「(」「)」とか半角スペースが
入ってるとsplitで面倒になるかもね。出来るだけsubstr使うべきなんだろうな。
datファイルの行数調べるには・・・unixのwcコマンド使うとかw
出先に移動。10分ぐらい時間が。
>>75
ひとつ、書き忘れていたです。
どうせ必要になるので、
datを読んだ時には、つまりGetResNumFromDatが呼ばれた時には、
そのdat内の>>1と、以下の条件(*1)で抽出した行のdatは、
内容を保存しておきたいですね。
つまり、datを複数回読み込みモードでopenしたくないわけです。
(*1)if BBS_CONTENTS_NUMBERよりもレス数が多い
お尻のBBS_CONTENTS_NUMBER行ぶんのdatの内容を保存
else
頭の >>2 〜 最後の行までのdatの内容を保存
これは、html/ の下のファイルを作るのに使っているですよ。
保存は、、、そうすね、
$GB->{DAT1} 文字列変数
$GB->{DATLAST} 文字列配列変数
っていうことにするか。
で、たぶんほんとは、subject.txt 的に上位のやつだけ作れるともっといいわけですが、
(つまり実際に index.html を合成する時に使うものだけ)
今は pageview.cgi があった時のコードのままになっているです。
つまり、1000個datがあれば、html/ の下のファイルも1000個あるです。
これは、別に考えることにしよう。 index.html 合成するところで、判定すりゃいいのか。
1000000000.dat に対する html/1000000000.html の最新版が必要になったら、
html/1000000000.html と 1000000000.dat の mtime を調べて、
(この時点では dat への追記は終わっているものとする)
もし html のほうの mtime のほうが古かったら、dat から html を合成するサブルーチンを呼べばいいと。
80 ◆TWARamEjuA NGNG
つ open ゴニョゴニョ or return -1; # 500鰓で悩む恐れ有りなので
で、$GB->{SABORIN} がtrueだったら、このへんの処理はキャンセルできると。
>>80
現在、datのopenはメインルーチン内で堂々とやっているですよ。
ひろゆき的堂々人生。 >内容を保存しておきたいですね。
それがうまくいけば楽なんですけどね、
bbs.cgi が非同期で同時に 30本とか走っているんですよ。
FIFOとかじゃなくてさ、
「どれが最後に終わるかわからない」という話だったり、
平気で後から来たのが追い越していきます。
それとの戦いの痕跡かと、
$GB->{DAT1} = <DAT>;
@{$GB->{DATLAST}} = <DAT>;
$resnum = $.;
if ( @{$GB->{DATLAST}} > BBS_CONTENTS_NUMBER ) {
@{$GB->{DATLAST}} = splice(@{$GB->{DATLAST}}, -BBS_CONTENTS_NUMBER);
}
こんな感じになるんかな
でも>>83なのね >>83
ですね。
今のやつは、なんでもかんでもdat読んで配列に突っ込んで、
配列の要素数数えて、
BBS_CONTENTS_NUMBERより大ならおしりから、
より小ならあたまからhtmlにして、html/html に入れ込む
みたいなことをやっているです。
で、1000行以上あったら、1000超え判定していたりするです。
つまり、datの読み込みモードでのオープンは1回で済んでいるものの、
毎回datを全行絶対なめなめしているわけです。
このへんをなんとかしたいかなぁと。 で、>>83 のこころは、
「subject.txt からとろうというのは誰もが思いつくわけだけど、
それって所詮非同期なんじゃないのかしら」
ってゆうことですよね。
ううむ。
> if ($resnum <= 0 || $resnum > 990)
ここを 900 とかかなぁ。 subject.txt更新前に別のbbs.cgiが参照するとずれるような希ガス
っていうかずれたからdat読みになったんじゃ?(違うかも)
>>87
所詮、参考記録でいいと思っていたりするです。
クリティカルなところで、コストを少しでもさげられるといいなと。
そのへんが、>>86 の if 文なわけで。
どうしてもうまくいかなきゃ、GetResNumFromSubjectをあきらめると。 まぁ,bbs.cgi やその他各種呪文用 CGI と bbsd との I/F が完成したら,
雪だるま系鯖以外でも bbsd を使うという選択肢もあるのでしょうけど.
>>88
参考記録といってもずれたままになりそうなのは気になる
個人的にはレス数と一緒にサイズも記録してあれば
少なくとも全読みは避けられそうと思っているけど
影響大きそうだからなあ subject.txtから取ったレス数よりも実際のdatの行数がいくつか増えてしまっていてもいい、
ぐらいの感覚で書きました。
ただ、900超えたあたりからはクリティカルか。
いずれにせよ、毎回全読みするコストを何とか下げられないかな、というのが、
subject.txtからとる趣旨なわけで、それが期待できないなら、
単にサブルーチン化して、整理整頓するだけかなぁと。
# おじさん、インテンショナルな徹夜で時差調整中?
>subject.txtから取ったレス数よりも実際のdatの行数がいくつか増えてしまっていてもいい、
>ぐらいの感覚で書きました。
わたしもその意見には賛成で、実は以前それを実験しました。
で、結果はというと、
惨憺たるものだったかと、たしか専用ブラウザが困ってしまうんじゃなかったかと、
もう何年も前の話で忘れちまったが、
眠くなったら寝るというみだらな作戦です。
>>93
で、900超えたらsubject.txtを信用するのやめて、
今までの方法でdatを読んじゃおうという、日和見風見鶏作戦かなぁと。
で、900をできるだけ1000に近づける方向でがんがってみると。 「dat と subject.txt のずれを許容してくれない」
とっても厳密に扱われているというのが問題だと思います。
900 とか 980 のことじゃなく
>>93
あ、そっか。
シンクロ具合とゆってますね。
あんまりずれが大きいと、subject.txt をあてにして動いているアプリさんたちが
困っちゃうってことですか。
めしめし。 現状でも、スレスト時にsubject.txtが変更されないため
subject.txtと実際の行数が一致しなくなり
毎回のように取得に行ってしまうクライアントもありますよ。
>>97
そんなんですよね
>>98
でも、その数が膨大だったりするのだ。
で、実際には高速で回転しているところは
dat と subject.txt が一致することなんてほとんどないから
それを利用してむ Saborin が生まれたのだ。
作る前はどうなるかと思ったけど、実際にやってみると
これがまずまず動いているんだな、よかったよかった >>99
Saborin は確かに、結構効果ありますね。
Saborin = index.html / subback.html の更新をまばらにする
ただし subject.txt は更新する
ex系とlive系で絶賛動作中
SaborinはLAが閾値を超えると自動的に発動
cobra=30 / tiger=20 / banana=4 で、狼やらVIPやらanimeサーバやらで 500 エラーが起こりやすい理由の一端は、
>>80 が原因の予感のもより。 >>104
狼でちょっとだけ聞いてみたところでは、
どうもクリーンナップ大作戦の後、少し減ったらしいです。
出なくなるのは、まだまだ先かなと。 結局、
・まずは従来通りdatから全部とることにして、クリーンナップをすすめる
ことにしました。
コストは、かわんないですもんね。
で、GetDatInfoを書きました。
>>84 さんに感謝です。
#############################################################################
# 処理中のdatの情報を$GBにセットする
# $GB->{DATNUM}, $GB->{DAT1}, $GB->{DATLAST}
#############################################################################
sub GetDatInfo
{
my ($GB, $outdat) = @_;
my $datfile = $GB->{DATPATH} . $GB->{FORM}->{'key'} . ".dat";
my $datlastnum = $FOX->{$GB->{FORM}->{bbs}}->{"BBS_CONTENTS_NUMBER"};
if($GB->{NEWTHREAD})
{
# 新スレの場合
$GB->{DAT1} = $outdat;
$GB->{DATNUM} = 1;
@{$GB->{DATLAST}} = ();
}
else
{
# レスの場合
open(DAT,"<$datfile");
$GB->{DAT1} = <DAT>;
@{$GB->{DATLAST}} = <DAT>;
$GB->{DATNUM} = $.;
close(DAT);
if (@{$GB->{DATLAST}} > $datlastnum)
{
@{$GB->{DATLAST}} = splice(@{$GB->{DATLAST}}, -$datlastnum);
}
}
return 0;
} 107root▲ ★NGNG
BBS.CGI - 2005/11/09
雪だるまに向けたクリーンナップ大作戦 その3
・GetDatInfo (>>106) を作り、datへの追記(新スレでは作成)直後に呼ぶようにしました。
・datの情報はもっぱらここでとることにし、$GB に蓄えて使いまわすようにしました。
・html/ の下を作るところ(MakeWorkFile)では、datはオープンしなくしました。
・Over1000 をサブルーチン化して、GetDatInfo の直後に呼ぶようにしました。
・これでMakeWorkFile内から、1000超えチェックが分離できました。 108root▲ ★NGNG
subject.txt を作るところ
sage のほうが、処理工数が多いのね。
ちょっと目からうろこ。
109root▲ ★NGNG
BBS.CGI - 2005/11/09a
# 051109a 雪だるまに向けたクリーンナップ大作戦 その4
# UpdateSubject (subject.txt作成) サブルーチン化
# いよいよ、神の領域の入り口に突入か by む
110root▲ ★NGNG
# 051109b @newsub を @{$GB->{NEWSUB}} にして追放(UpdateSubjectに封じ込め) by む
本日はここまでの予定。
111root▲ ★NGNG
で、わかってきたことは、
subject.txt って軽々しく作っている割に、
suback.html も index.html も /i/index.html (qb系 dso系 bbspinkのみ)も、
ぜーんぶ、これをベースにこしらえているらしいということだなぁ。
こりゃ、非同期にsubject.txtをなんてのは、とんでもない話だなぁ。
何が起きるか、予想もできないや。
というかたぶんもともと、宣撫らでの参照のために作ったんじゃなくて、
そうゆう内部処理のために、作ってるんだろうなぁ。
なぁ。
なぁ
その部分は歴代誰もさわっていない気がする
なぜなら太古のままの姿で残っているから、
しいていえば dat と subject のずれをなくすため
およびdjをなくすため、神か or トオルさんが2001年ころ手を加えたかと、
root探検隊2005秋
「驚愕! 未開の地bbs.cgiの奥地に謎の古代神殿subject.txt生成部を発見!?」
今日あたりから妙な動作をしてる気がするんだが、何かいじってる?
具体的には
・某板で、かなり時間を置いて違う内容を書き込もうとしても二重書き込みが出る
・しょうがないのでIP変えたら書き込めた
・IP変えた後、他の板に書き込んだら何故かcookie確認が出ない
出た現象としてはそれだけ。
どこの板とかは出さないので、回答には特に期待していないけど。
>>117
そのへん、全然変えてないです。
上2つは、過疎な板だと正常な動作としてよくあるですね。
一番下は、ちと気になりますが。 確認画面の話が出てるから、自分もちょっと
先日の京ぽんのID末尾o→0の関係でごちゃごちゃやってた以降
自分の味ぽんはどの板で書いても、回線切ろうが、電源切ろうが
確認画面が1度も出ないんですが、良いのでしょうか?
ごちゃごちゃの当日に指摘した時は流された気がしますが…
>>119
奥様(味ぽんユーザ)では「普通は最初だけ出るよ」
「でも、最初でも出ないときがあるみたい。再現性はわかんない」
ということらしいです。
うぅむ。
# 「最初だけ出る」が、意図した動作。 >>120
そう、「最初の1回だけ出て後は出ない」なら今まで通りで何の
疑問も感じない訳ですが
自分は最近、確認画面を全然見てないから謎なんですよ
まぁ、面倒が無くて良いって言えば良い訳ですけど >>121
それって、京ぽんを 0 にしてからなったということですかね。
ううむ。 >>122
タイミング的にはそんな感じです
完全にイコールかと言われると判りませんが
確か一連の作業中に一時的に味ぽんから書き込めなくなって
その後、復活してからの様な気がしますが >>123
ふーむ。
うちの環境では幸運にも実物で試してもらえるので、
また、時間取れたときにみてみるです。 おぉ、わかた、、、。>>123
あとで、なおしておこう。 @ 今qb6で別の作業中 とりあえずoperate2で動くのを確認しました。>>126
今日の作業がおわったら、配布で。 BBS.CGI - 2005/11/11
109 名前: ◆MUMUMUhnYI [sage] 投稿日:2005/11/11(金) 02:42:33 ID:d6RFRwJS0
・味ぽんでも投稿確認画面が出るように(虫取り)
・MakeWorkFile から緊急ストッパーを切り出し(Emerg1020 Emerg1050)
・UpdateSubback サブルーチン化
・MakeIndex4PC サブルーチン化
今日までで、bbs_main中から、だらだらと長くて保守性の悪い部分はなくなったはず
一般的な意味を聞いてるなら味ぽん!=京ぽん。JRCの出した初代AirH" Phoneの事と考えるのが普通。
MUMUMU氏の意図ならAirH" PHONE全部という可能性もあるな。
# もうAirH" PHONEというブランドは無いんだけども。
>>130
やはりAirH"=京ぽんをもじって味ぽんに(りゃな解釈? 私の定義:
・味ぽん: AH-J3001V AH-J3002V AH-J3003S
これらはbbs.cgi内で特別扱いしています( o 表示のゆえん )。
京ぽんのbbs.cgiでの特別扱いは全廃されました。
PCと全く同じ扱いです。
今後出るWillcom端末は、特別扱いしたくないですね。
ちゃんとリファラ吐いて、クッキー食べてほしい。
bbs.cgi のぐろーばるーについてのチラシの裏
$FOX <= 船単位で設定 (基本的に出航時に1回設定される)
$GB <= 1トランザクション単位で設定 (1投稿ごとに設定される)
例えば、SETTING.TXT の値はこうやって得られるです。
・SETTING.TXTは出航時に読めばよい固定値だから$FOX
・でも板名はトランザクションごとに変わるから$GB
・その下に要素がぶらさがる
$FOX->{$GB->{FORM}->{'bbs'}}->{"BBS_CONTENTS_NUMBER"}
SpeedyCGIの特性を利用した、すごくよい使い分けと思います。
もしこれがなかったら、どうやってもカオスからは脱出できなかった。
他の処理系をまたぐ必要のあるぐろーばるーは、全部追放か$GBに押し込める方向で。
でないと、どれがどれなんだかちっとも。
で、概ねそれはできたような気がしているです。
といっても、ほとんどはおじさんがやったわけですが。
で、該当部分。
# ちょっと感動した。
#設定ファイルを読む
sub foxReadSettings
{
my ($GB) = @_ ;
my $ita = $GB->{FORM}->{'bbs'} ;
$GB->{DEBUG} .= "SETTING.TXT よみこむ? $ita<br>";
if(defined($FOX->{$ita}))
{
$GB->{DEBUG} .= "SETTING.TXT 既に読み込み済みー(1)$ita<br>";
return 0;
}
$GB->{DEBUG} .= "SETTING.TXT よみこみー$ita<br>";
(以下略)
>>135
既に概ね、外れているです。
(ここはたまたま、外れてなかっただけみたい) なにか言いたいけど
すでに getting drunk
そろそろ 11時? たぶん
三人でぽとる一本あけたから、、、、
with Jim &79
ぼうしぬいで、だらだら。
>>139
79さんですか。
そりゃ、たいへんだ。
ところで、飲酒禁止とか控えるとかゆう話、ありませんでしたっけ。 そうそう
beer とか wine はご法度
でも沢山のんだけど in Euro
145 ◆TWARamEjuA NGNG
DispError(sprintf qq|プリンが規制中です(%d)|, $GB->{prin}) if defined $GB->{prin};
147root▲ ★NGNG
167 名前: ◆MUMUMUhnYI [sage] 投稿日:2005/11/12(土) 05:19:07 ID:axdTew+g0 ?###
BBS.CGI - 2005/11/12a
# 051112a 雪だるまに向けたクリーンナップ大作戦 その6
# $GB->{OUTDAT}, $GB->{LOGDAT}, $GB->{xID}, $GB->{xBE} 新設
# ResAnchor, MakeBEString, MakeIdStringAndLogdat, MakeLogdat,
# MakeOutdat, Update924, WriteDatFile 以上サブルーチン化 by む
これで、bbs_main の真ん中当たりにあったアドホックなワーク用変数を
ほとんど整理した。
明日あたりから、Check_HardPosting (連続投稿ですか?のところ)を見始めるか。
149▲ ◆SANUKI/VII NGNG
↑あら、ならなかったです
キャップ付けるとoutdatってなるだす
151root▲ ★NGNG
サブルーチンにして移動する時に、
色気心を起こして、処理の順番を変えてしまったです。
・虫がいた時
if (saku sakud saku2ch) {
if (capじゃない) {
datにHOST: が入ったのを作る
}
}
else
{
普通のdatを作る
}
・今(前と同じ)
普通のdatを作る
if (saku sakud saku2ch) {
if (catじゃない) {
datにHOST: が入ったのを作る
}
}
152root▲ ★NGNG
変えてしまった => 変えてしまっていた >>151
しかも、>>151 の上のやつはオプティマイズにはなっていないわけで。
なんだかなぁ。おじさんにセッキョーされそうだなぁ。(´・ω・`) 153(^-^)犬 ◆VET4349ZB. NGNG
猫? いや、何となくです。分かりますから、、、ゴメンチャイ
qb5用のbbs.cgiの存在は、なかなか微妙だと思います。
削除系全般のHOST処理とか、BBQで串マークとか、規制でもfusianaで書き込めるとか。
バグの温床。 if(板名)ってのはなんとかやめること出来ないのかなあ
と、中身を何も知らないのに言ってみるテスト
156root▲ ★NGNG
>>155
いやーん。
絶対、面手できなくなりそう。 158root▲ ★NGNG
timecount/timecloseの処理をしているところって、
ずいぶん、贅肉があるみたいな。
歴史的経緯ですか。
simplify したいけど、今はとりあえずこのままにしておくか。
あるファイルをbbs.cgiだけがさわっているのであればラッキー
その確証が得られないor得るのがめんどくさい → 放置
誰かが作った装置をさっさと取り外すのはやはり嫉妬の渦の中 → さわらぬなんとか
なんてのが bbs.cgi の歴史です
160root▲ ★NGNG
>>159
> 誰かが作った装置をさっさと取り外すのはやはり嫉妬の渦の中 → さわらぬなんとか
そうゆうものですか、、、。
私なんか、あんまりそうゆうこと考えずについさわってしまうし、そのことをどんどん公開してしまうし。
だから、いかんのかしら。 161root▲ ★NGNG
もちろん理由がなければそういうことはやらないし、
基本的には全部表でやるわけですけど。
て裕香、表でやれないようなことは、やっぱ体にも心にもいくないっす。
せめて2ちゃんねるぐらいでは、そうゆうことはできるだけしたくないなと。
162root▲ ★NGNG
2ちゃんねるぐらい = 趣味の世界
ってことですね。
仕事の世界だと、なかなかそうもいかないわけで。
あとはMakeWorkFileをちょっと読んで、今日は中身はいじらずにもうねるか。
(雑談スマソ)
>>161そこで裕香と誤変換しますか。彼女とか娘とか、はたまた平田裕香のファンなのか・・・チョイキニナル >>163
saku / sakud 等でよく見かける方のいち隠れファンです。 >>158
今の時代、本当にtimecount/timecloseが必要なのか、一度考え直すのもいいのかも。
連続投稿に関してはsamba24 やバーボンができました。
投稿に関する対応は、ボランティアさんも含めた新しい仕組みが動くようになりました。
timecount/timecloseは、これらがない時代からあるものですね。
timecount/timecloseの必要性と、実装や運用のコストの比較になるのかなと。
samba24は鯖ごと、バーボンに至っては全板一律だからなぁ。
確かsamba24はSETTING.TXTで設定できるようにする、って話もあったけど、
ただ、最近もちょくちょく全板でいっせいに設定値変えとかしてるから、
ちとそうもしづらいのかなぁ。とか。
>>165
板によって、結構絶妙なバランスで設定されてる
値だと思いますけどね。普通の使い方をしてる人では、
まず引っかからないし見ないから、「空気みたいなもの」
としか感じないかもしれませんが。
けど見てると、設定を微妙に変更することで、荒らしさんは
やっぱり速度が落ちたりとかするのを見たりします。
だから効果はあるんだと思います。
逆に言えば、普通の人がやたら引っかかるようなものは、
それなりに問題なんじゃないですかね。 >>166
もしできればでいいですけどsambaは全板と各板(setting.txt)の共存ができればええんでないかと 169 ◆MUMUMUhnYI NGNG
>>165-167
それなりに効果は出ていると思います。
たぶん2ちゃんねるが今よりもっともっと小さかった頃は、
画期的な仕組みだったんだと思うです。
でも今となっては、ファイルI/Oのコストが毎回(少ないとはいえ)
発生するのが、ちと気になるですね。
ということで投稿数が多い板だと、
この方式を現在の実装でやるのは、ちょっと苦しいところがあるです。
基本的に、効果を大きくしようとしてFIFOの段数を大きくすると
コストも大きくなってしまいますし、
段数が少ないと、効果が薄いです。
ということで、雪だるまにしてbbsd側でオンメモリでやるなら、
それほどでもないという読みで、今の方式を踏襲する形での実装は、
してもらおうかなと思っているです。
オンメモリならコストは低いし、実装もそれほどでもなさそうなので。
<チラシの裏>
あと、メッセージ本文の最初の何文字かとか本文の長さとか、
投稿したスレッドのキーとか時間とか、いろいろとっているけど、
今は全く使っていないので、このへんの贅肉をとって、
いずれはすっきりしたいなと思っているです。
<チラシの裏の隅>
たぶんこのへんも規制に使おうとした、あるいは昔規制に使ったことがあるんだろうなと。
</チラシの裏の隅>
</チラシの裏> 170 ◆MUMUMUhnYI NGNG
で、先回りして言ってしまうと、Samba24って、
そういうところが、よくできているです。
ようは、ひとことでいうと、
「大きい板でもコストを上げることなく、同じしくみで動かすことができる」ってことですかね。
スケーラビリティがあるとゆうか、成長に耐えるとゆうか。
実現している部分は正直、短いコードですけど、
かなり感心したところだったり。
さぁ みんなで踊ろう
S A M B A !
もうすぐ夜明けだ。
173▲ ◆SANUKI/VII NGNG
そうか、時差があるのか
いやー
どこへ行ってもこんな感じの一ヶ月でした。
毎日五時に起きてしまい、夜も八時を過ぎればおねむ
きっとホームに帰ってもとうぶんそれが続くかと
起きたらまずススキのの生活・・・
177 ◆MUMUMUhnYI NGNG
>>176
早朝営業ですっきり、ってやつですか。
ちと、おふろへ。
その後はSambaの解読と、live20のバージョンアップあたりを。 179 ◆MUMUMUhnYI NGNG
さて、、、。
1001のところ、どうするですかねぇ。
私は今の実装でも大きな問題はないと思っていたりしますが。
全部の船に共通の変数があるといいんですが、
たぶんそういうのは、なさげだし。
180 ◆MUMUMUhnYI NGNG
WriteDatFile … datに追記
GetDatInfo … dat行数、>>1の内容、datの最後のいくつか(html/の下作成用)を取得
if (datが1000以上) Over1000 … 1001を書いて、chmod 555
というのが、今の流れです。
これをどうするのが、いんだべか。 >>180
そこのパーミッション書き換えタイミングにレスが重なると1000overカキコが
多発するんでしたっけ?
レス>1001の時にdat追記そのものを破棄することって難しいのかな?
多分難しいからおいちゃんも今の形にしてあったとは思うのですけど。 182 ◆MUMUMUhnYI NGNG
Over1000 を複数のbbs.cgiが実行している、っちゅーことなんです。
それはたぶん避けられない気がするんで、さて、どうしたもんかなと。
183 ◆MUMUMUhnYI NGNG
で、確実に止まっているようなので、
とりあえずは今のままでいいのかなとは思っていたり。
perlってappendモードで開いているファイルに対して
ftell相当のこと出来ないのけ?
出来るなら、「自分が書き込んだ後の末尾の位置」を覚えておいて
再度(行数判定等のために)読み込んだときの合計サイズと一致している場合のみ
(==1000を書き込んだのが自分である場合のみ)
1001を追記したらよいのでは?
既にオープンしているファイルからftellするのは、
I/Oコスト的には大したことないはずだし。
185 ◆MUMUMUhnYI NGNG
>>184
ぱっと見、それだと忙しい時、
1001が書かれなくなるような。 あーそうか。「同時に」なんだ。
てことは,実現させるには1001番以上が付くかどうかを各bbs.cgiが判定して,
以上なら強制的に止めてしまうしかないんですねえ。
187 ◆MUMUMUhnYI NGNG
あとは、GetDatInfoして得たdatの最終行が既に1001だったら、
Over1000で1001を書かないぐらいかなぁ。
190 ◆MUMUMUhnYI NGNG
Perlで、その配列の最後の要素にアクセスするのって、どうするんだっけか。
具体的には、@{$GB->{DATLAST}} の最後。
191 ◆MUMUMUhnYI NGNG
予想されるのは、
1000
1001 1000を超えました。。。
1002 普通の書き込み
とかで、終わるパターンすね。
chmod 555 は必ずするので、
壊れるリスクは今と同じのはず。
あ、そっか。
まず書き込みをして、それから書けたかどうか判定するのか。
と思ったけど、>>184の5行目の()内が間違いで
(==最終レスを書き込んだのが自分であった場合のみ)
が正しいのかな。
とは言っても、「再読込」した後で他のプロセスが書き込んじゃうという
可能性もある(というより、現状その状態っぽい?)ので
複数プロセスがが1001を書き込むのは避けられない点は同じか。 確実にやるにはロックなどで排他制御するしかないでしょうね.
ロック使用を回避するなら,わずかでもタイミングの隙が発生するのは不可抗力かと......
194 ◆MUMUMUhnYI NGNG
>>193
やっぱ、そうかなとは思っていたりするです。
概ね動いてはいるようなので、1001がいっぱい書かれることを減らせれば、
とりあえずいいかなと思っていたり。 195 ◆MUMUMUhnYI NGNG
$array[-1]; でいいのか。>>190
ちょっと、ごにょってみるか。 むずかしいー
1000時のみロックとかできないんでしょうかー
とか思ってしまいますです
まあ,1000以降で実際に書き込まれないならいいかな なんて思ったりもしますがw
ん?現状でも、既に
AとBが両方書き込んだ後、
A:読み込み(.datは1000行)
B:読み込み(.datは1000行)
A:1001書き込み(.datは1001行)
B:1001書き込み(.datは1002行)
という経過によって、複数の1001が書かれているのではないですか?
とすると、読み込んだ内容をどう判定しようと
重複1001は減らないのでは?
200 ◆MUMUMUhnYI NGNG
いけそうだ。
$GB->{DATLAST}[-1] と $lastdat を比較して、
同じなら1001を書くのをさぼろう。 in Over1000
201 ◆MUMUMUhnYI NGNG
こんなの?
$lastdat = "1001<><>Over 1000 Thread<> $b1000 <>\n";
# 既に1001が書いてあったら、書くのをやめる
if ($GB->{DATLAST}[-1] ne $lastdat)
{
# 1001書き込み処理
if(open(OUT,">>$dat"))
{
print OUT $lastdat;
close(OUT);
# $GBの処理
# datの番号をひとつすすめる
++$GB->{DATNUM};
# $GB->{DATLAST}をひとつ押し出す
shift(@{$GB->{DATLAST}});
push(@{$GB->{DATLAST}}, $lastdat);
}
}
# datを書けなくする
umask(0);
chmod(0555, $dat);
return 0;
202 ◆MUMUMUhnYI NGNG
>>198
ふむ。確かにそうかも。
少しは減るかもぐらいか。 $GB->{DATLAST} は配列のリファレンスなので
$GB->{DATLAST}[-1] でなく $GB->{DATLAST}->[-1] かと
umask() は open() や mkdir() には影響しますが,chmod() には影響しないので不要ですね.
むしろない方が chmod() の実行タイミングがわずかながら早くなって,その分隙は減るかと.
206 ◆MUMUMUhnYI NGNG
>>204
$GB->{DATLAST}[-1] でも $GB->{DATLAST}->[-1] でも
結果は同じでした。 209 ◆MUMUMUhnYI NGNG
配ったです。
# 051114 Over1000の処理改良、既に1001が書かれていたら書かない by む
>>208 のは、消したです。 210 ◆MUMUMUhnYI NGNG
しかし、あくまで対症療法に過ぎないすね。
効果があるかどうかも、微妙かも。
211 ◆MUMUMUhnYI NGNG
で、上のほうにも書きましたが、
何かのタイミングで、
1000 普通のレス
1001 1000を超えました。
1002 普通のレス
みたいなことが、起こるかもですね。
chmod() はするので、止まりはするはずですが。
212root▲ ★NGNG
# 051114a 雪だるまに向けたクリーンナップ大作戦 その7
# NotifyBBY, NotifyBBS, SuretateTotalCheck サブルーチン化
# これで雪だるまに向けたbbs_mainのコンパクト化はほぼ終了、長かった by む
>>165-167>>169
期待して書いたのだけども、やっぱりなんというか歯切れが悪いというか……。
ここの人でも、ちゃんと説明しきれていない。「timecount/timecloseは、他と違って、
○○で△△の特徴があるから、絶対必要です」みたいなものがない。
>雪だるまにしてbbsd側でオンメモリでやるなら、それほどでもないという読みで、
>今の方式を踏襲する形での実装は、してもらおうかなと思っているです。
ここは、なるほどなーと思いつつも、どうやら消極的賛成で入れているらしい、、、
というのが読んだ感想です。
>>211
技術はひとまず置いておいて、これは本当にオッケーですか?
スレッドが終端しない=一番最後に1001の書き込みがないと、
ユーザーがずっと書き込もうと行動し続ける気がするのですけど……。
速い時ほど、そんなことが起きる気がします。
二年ほど前「もう timecount/timecloseは必要ないだろ」と思いはずしたことがあります。
結果はぼろぼろで、あわてて元に戻しました。
連投あらしのオンパレードでした。
それも低速タイプのやつ。(2ちゃんねるのほとんどの板は低速です)
>>216
sambaとかバーボンとかは対スクリプトとか実況級に進行が早い板向けですからな
ゆっくりゆっくり書かれる連投には無力かと。 そういう自動書き込みスクリプト(繋ぎ換えまで一緒にやるようなの)は、
まだゴロゴロしてますからね。。
繋ぎ変えは、もう一歩技術がいるようですけど(プロバイダによるし)、
スクリプト自体は、厨房でも設定可能なレベルみたいですし。
特にタイマー式は厄介(自動確認式もあるし。新規投稿が1回あったら
数回AAを自動投稿するとか。進行遅いスレだと、それだけで簡単に潰せる)。
219root▲ ★NGNG
>>215
1001メッセージは合成不可能なので、一つは書かれるはずと。
で、どうせそのスレには書けなくなるので、移行していただけると信じているです。
# でも、1001で終わってないスレは、ちょっと気持ち悪いかも。 そこは秒間20回とか書き込んでる馬鹿がいるからっぽいし、
そんなもんでいいんじゃないっすかねぇ。
まぁ、あれで止まってるほうがよかったって感じで。
まぁ bbsd 版ではそれぐらいのでもちゃんと止まる......と思います.
1001いってるスレなのにsubject.txtでは999で止まってるのがあるね
みんなしてテストしてくれてる、ってことなのかしら。
まあ確かに試験・実験には最適ですね。
後々出ちゃうよりは、さっさとバグ出ししちゃう方がやりやすいだろうし。
毎回 WriteDatFile で 書いた後で chmod 666 しているとゆうのが、微妙なんだよなぁ。
bbs.cgiのことは何も知らないですが、
perlで通常書き込みや追記モードなopenに成功したと言うことは、
書き込み権限があるということとイコールだから、
openの後にchmodで書き込み権限を付加するのは、意味ないような・・・
openの前にchmod 666してるとしたら、絶対に書き込んでやる!
という強い意志の表れでしょうか・・・
書き込み権限のないfileに、chmodしてまで書き込もうとする理由が
想像つかないですが・・・
HOSTとかはどこへ保存してあるんですか?>root★
>>232
openしなくてもパーミッションはかえられますよ。
良く知らないけど、3get禁止スレとかに管理者が書き込むためとか? read.cgi再開発スレが消えてしまいますたor
dat取得出来たけど、書きこもうとしたら
リアルでdat落ちしたです (´・ω・`)
必要になったときに、必要な人が立て直せばいいとおもう。
常時必要なスレってわけじゃないと思うし。
230 名前: ◆MUMUMUhnYI [sage] 投稿日:2005/11/17(木) 03:40:54 ID:1HWflj8o0
# 051117 アクセス規制中にfusianasanして書き込みOKになった場合、しるしつき by む
ってか運営に●ありで串で書き込めないのをどうにかしてくれ
244root▲ ★NGNG
# 051118 saku sakud saku2chでは公式p2ユーザ番号とp2-client-ipを表示 by む
Perlって、いわゆるファイルディスクリプタって、サブルーチンに渡せるんでしたっけ。
具体的には、メインルーチンで
open(FILE,">$workfile");
としたFILEに、サブルーチンから書きたい場合、
どういうふうに記述すればいいかなんですが。
あ、ファイルハンドルっていうんでしたっけ。
なにぶんPerlは、その程度の知識で。
open(FILE ,">foo.txt");
&hoge(*FILE);
sub hoge{
local (*FILE) = shift;
print FILE "bar\n";
}
みたいかな?
あとはFileHandleつかうとか。
http://search.cpan.org/~abergman/ponie-2/perl/lib/FileHandle.pm >>247
おぉ、そうやるですか。
ファイルハンドルと文字列(or 文字列の配列)を引数でくべてやると、
そのファイルハンドルに吐き出す、みたいなサブルーチンがあるといいなとゆうことです。
html/ の下を作るところと、
index.html を作るところを、なんとかしたいなと。
ようは、残された神の領域を少しずつ人間の領域にしたいということで。
# 某所でやっている広告切り分けとも、微妙に関連しているという噂も。 ちょっとぐぐってみた限りでは、>>247 のがいいみたいですね。
その場合、こんなふうにしても大丈夫みたいですね。
つまり、localのもじどおり局所化できると。
open(FILE1 ,">foo.txt");
&hoge(*FILE1);
close(FILE1);
...
open(FILE2 ,">foo.txt");
&hoge(*FILE2);
close(FILE2);
sub hoge{
local (*FILE) = shift;
print FILE "bar\n";
} もうちょっとtypicalな例を書くか。
こういうのも許されるということですかね。
open(FILE1 ,">foo.txt");
open(FILE2 ,">foo.txt");
&hoge(*FILE1);
&hoge(*FILE2);
close(FILE2);
close(FILE1);
sub hoge{
local (*FILE) = shift;
print FILE "bar\n";
}
あ、二つ目は bar.txt すね。すまんです。>>252 うまくいったっぽいです。
#! /usr/bin/perl -w
my $str = "This is test.\n";
my @substr = ( "This is test.\n", "This is test 2.\n" );
open(FD, ">test.txt");
open(FD2, ">test2.txt");
&Put1Line(*FD, $str);
&PutLines(*FD2, @substr);
close(FD);
close(FD2);
exit;
#############################################################################
sub Put1Line
{
local (*FD) = shift;
my ($str) = @_;
print FD $str;
return 0;
}
#############################################################################
sub PutLines
{
local (*FD) = shift;
my (@str) = @_;
foreach (@str) { print FD $_; }
return 0;
}
で、つぎのお知恵を拝借、、、。
print SHTM <<EOF;
<TABLE border=1 cellspacing=7 cellpadding=3 width=95% bgcolor="$FOX->{$GBA->{FORM}->{bbs}}->{"BBS_THREAD_COLOR"}" align=center><TR><TD><DL><a name="\$ANCOR"></a><DIV ALIGN="right"><a href ="#menu">■</a><a href="#\$FRONT">▲</a><a href="#\$NEXT">▼</a></DIV><B>【\$ANCOR:$GBA->{DATNUM}】<FONT size=5 color="$FOX->{$GBA->{FORM}->{bbs}}->{'BBS_SUBJECT_COLOR'}">$subject</FONT></B>
EOF
といった行が、それこそ死ぬほどあるわけですが、
こいつらの保守性を少しでもよくする方法は、何かないのかなと。
qq// とかにしようかなとも思ったのですが、/ も使っているわけで、
何かいい知恵はないものなのかなと。
qq// じゃなくて、qq| | とか qq{ } とかでもよくなかったっけ
>>256
なんでもいいんでしたっけ。
{ } も使いまくりなんで、| | かしら。
# 何せ、その程度の知識しか。 どもです。>>258
で、こういうEOF〜EOF のやつは、
一律 qq|〜| にして、ちゃんとうまくいくのかしら。 手元のスクリプトいじってみたら、
print SHTM qq|
(中略)
|;
こんなんで動くことは動きましたです。
>>261
どっか間違っても、直感的にわからないとか、
カスタマイズがとってもしにくいとか、そういう話ですね。
そのうち、複数行にするかも。 264root▲ ★NGNG
Put1Line と PutLines を使って、
index.html を作るサブルーチン(MakeIndex4PC)を書き換えました。
それに伴い、ひとつ小さな虫取り(不要な</form>の削除)を行いました。
また、HTMLタグを基本的に小文字にしました。
ただ、まだ直していない部分(htm/の下を作るところとか)があるので、
従来通り(w、大文字と小文字のタグが混在しています。
bbs.cgiの動作そのものは変わっていないはずですが、
もし問題を発見した場合、ここでお知らせくださいです。
これで、MakeIndex4PCは神の領域ではなくなったと思う。
今日は、ここまで。
265root▲ ★NGNG
ええと、前にあった(今dat落ちかな)、
bbs.cgiが吐くindex.html をコンパクトにするというか、よくする話し合いをしてたスレッドって、
どれでしたっけか。
すぐやるかどうかはわからないけど、教えていただけるといいかもしんないです。
index.html作成部分の保守性がよくなったので(実際潜んでいた虫も見つけた)、
反映できるものもあるかも、かも。
267root▲ ★NGNG
>>266
どもです。それです、それです。
MakeIndex4PC, MakeIndex4Keitai, UpdateSubback あたりのクリーンナップ後に、
ぼちぼちってかんじで。
あと、SunOSさんが雪だるま版index.htmlにこのスレのどのへんを採用したかの
情報があると、うれしいかも、かも。 268root▲ ★NGNG
とりあえず今20秒ぐらい読んで、>>266 のは >>140 から読めばよいのかなと書いておこうと。 269root▲ ★NGNG
>>264 の作業により、クッキーを食べるところと
BEのプロフィールを表示するところ(具体的にはJavaScriptのところ)が、
うまく動いていませんでした。
今、対応したものを配りました。
すみませんでした。
# <-- の後と // --> の前には \n が必要。 271root▲ ★NGNG
310 名前: ◆MUMUMUhnYI :2005/11/22(火) 14:08:29 ID:cuANVpjV0 ?###
# 051122a UpdateSubject, UpdateSubback, MakeIndex4Keitai, MakeWorkFileを
# Put1Line, PutLinesに対応
# これで、ファイル作る系の第一次対応はできたはず by む
以上配布済み。
ひととおり予定の作業はおわたです。
ということで、作業可能です。>>305
これでこのへんのサブルーチンは、神の領域ではなくなったと思います。
>>270
以前からある話なわけですが、、、。
PHPって暴走すると、httpdが暴走しちゃうから。 272root▲ ★NGNG
あと、神の領域なのは、newbbs と foxIkinari ぐらいだと思う。
…人間のものになったんだろうか。
関数名を誰が見ても分かるようにするとか、説明を書いておくとか
274root▲ ★NGNG
>>273
とりあえずあまり進んでいませんが、こんなことをはじめているです。
########################################################################
# キャップがあるかどうか調べ、あったらそのキャップ名を返す
# 引数: キャップパス、板名、フラグ1、フラグ2
# フラグ1が真の場合、板別キャップの処理を行う
# フラグ2が真の場合、キャップあぶりだしの処理を行う
# 戻り値: キャップハンドル名 または ""(該当なしの場合)
########################################################################
sub FindCap
{
my ($pass, $board, $bflag, $tflag) = @_;
(以下略) 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 を見て作っているので。 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'} は一致しているとは限らない!!!!
のですね。
また、滑落か。
なおすです。 282root▲ ★NGNG
てなわけで、世の中甘くないすね。
なんで、MakeWorkFileに$GBじゃなくて、$GB, $key っていうふうに
引数が2つあるか、っちゅーことですね。
まさか、そんなことしてるとは、思いもよらんかったですよ。
283root▲ ★NGNG
Perl でファイルの行数を if 文で、チェックできるんだっけか。
284root▲ ★NGNG
できないっぽいすね。ううむ。
>>274
あ、キャップの判定のことでお願いしたいことが・・・。
あとでメールさせていただきます。 286root▲ ★NGNG
>>285
了解です。
で、neet4vip問題は、対応できたはず。 287root▲ ★NGNG
お題は「おせっかいなbbs.cgi」にしよう。
説明は、のちほど。
my $fp;
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 が製作途中、
あるいはまだ存在してない」
時に、動きが変になったんです。
くわしい説明は、帰宅してめしくってふろはいってからで。 290root▲ ★NGNG
そうゆうこと => そうゆうことじゃない >>289 >>283
if $. == 65536
こういうやつのこと? 293root▲ ★NGNG
>>292
そですね。そうゆうっぽいの。
Perlから明示的に open() しなくてもチェックできる手は、ないのかなと。 >>293
つsystem()
…そういう話じゃ無かったらごめんなさい。 295 ◆TWARamEjuA NGNG
ファイルシステムが「行」を管理してくれたら可能かもしれませんね(苦笑)
# (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;
}
index.html作成時に必要なhtmlが無ければ作るというのは変じゃないような気がする。
ほとんどの場合、必要なhtmlが無い=スレ立て直後 だろうけど。
そですね。作ること自体は間違いじゃないと。
今夜あたりにでもちと。
対応したです。
347 名前: ◆MUMUMUhnYI [sage] 投稿日:2005/11/23(水) 16:47:32 ID:93wvGgv70
# 051123 htmlファイルが存在しなくて、かつしばらくたっても作られない場合にのみ、
# MakeIndex4PCからMakeWorkFileを呼ぶようにする by む
operate2 でテストしました。
html/ の下をからっぽにしてからレスして、必要な html が作られなおすことを確認済み。
ちょっと、ex13でテストしてみるかな。
html/html 全消しします。< ex13
問題が出なければ成功。
>>285の件、先ほどメールしました。
よろしくお願いいたします。 >>304
メールざっと見ました。
主旨は、帽子の強度というか取り扱い方面に関するご相談、ということですか。
で、bbs.cgi での取り扱いにからむので、ここできいたと。
直感的に、仕様変更というか仕様追加を伴いそうな話な気がするので、
内容をよく読んでから、お返事するです。
場合によっては、別途いろんな方にご相談させていただく可能性も。
ということで。 外部にトラックバック打つ時にshift_jisのまま打つのはどうかと
>>265-268
どこまでやろうと考えているかはわかりませんが、
それを実際にやるときには、管理人に確認を取った方がいいと思います。
見映えやデザインが変わる恐れもありますので……。
まあ、「あいあい」だけで終わるような気もしますけど。
>>216
レスしていませんでした。興味深い話をどうもですー。
ここよりもむしろ雪だるまの話になるかもですが、
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の時と同じ互換性の問題)
それで、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さん他
310root▲ ★NGNG
>>307
> どこまでやろうと考えているかはわかりませんが、
> それを実際にやるときには、管理人に確認を取った方がいいと思います。
そうすね。
で、html/html を作るところは、まだカスタマイズの余地がありそうな肝。
例えば下の方のスレにsageでレスした時は、更新しないとか。
(今はレスしたものについては必ず作っている) やりとりを見てると改善できる所は
まだまだありそうですね
316 ◆TWARamEjuA NGNG
>>314
どっかで叩かれていたような気も。。。
ひとまず、x 演算子のオペランドが逆です(哀)
#5.003時代のものだったかな?@最新のは5.008(5.8.x) >>267 実際に bbsd が吐く index.html を直接見るのが一番手っ取り早いかも知れません.
ただ,index.html 以外に index.css というファイルも生成するようになってまして,
これは SETTING.TXT の更新を検出するとそれに合わせて更新するようになってます.
>>308 そういう <iframe> (or <object>) の使用というのも考えたことも
あるにはあるんですが,やはりスクロール等の操作性の問題などもあると思います.
まぁ,bbsd での index.html 生成は bbs.cgi のよりは軽くなってるかと思うので,
とりあえず大筋では従来のやり方を踏襲する形でもいいかなという感じでやってます. 318root▲ ★NGNG
厨な質問をば。
if ($errmsgが10桁の数字だったら)
というのは、Perlでどう書いたらいいのかしら。
319 ◆TWARamEjuA NGNG
>>318
$errmsg =~ /\d{10}/
かなぁ。。。
$errmsg + 1 < 10000000001
なんてのも有りかな?(文字列に対してもインクリメント出来るから) 320root▲ ★NGNG
>>319
どもです。
上のほうで組み込んでみるです。 $errmsg =~ /^\d{10}$/
じゃないと、「aa1234567890」も真になっちゃわない?
lengeh($_) == 10 || int($_) eq $_
なんかエラー出たんで貼っときますね
ERROR:不明なエラーが発生しました。
(board:livejupiter key:1133001202 errmsg:No such file or directory)
このメッセージをコピペして、運用情報板で報告していただけるとありがたいです。
誘導されてきました
>>326 それは意図的に1000までにさせてますが,1001以降も表示させた方がいいんでしょうかね?
書き込みフォームをなくすことで終了してるスレということを示すようにはしてますが...... なぜ書き込めないのか、という理由の表示として、
あった方がわかりやすいかもしれない。
状況を理解してもらうためのメッセージだし。
で>>325って何だったんですか?
なんとなくしかわからいんで教えてください。(´・ω・) >>326
もともと1000以降は表示されない仕様だったような、、 >>334
それは確か、read.cgi だったような。
index.html は、bbs.cgiのソースを見る限りそうは見えないです。
常にdatのお尻のBBS_CONTENTS_NUMBER行を表示していたと思う。 ありゃ、ほんとだ、、いろいろ見てみましたけど
NHK教育実況板見たら100表示されてますね、、
だけど表示されてないように見えたのは気のせいか、、
すいません、
ここ扱いか知らんけど
スレッドの並べ替えってやっぱローカルで処理させたほうがいいんじゃないの?
>>339
F22で落ちた瞬間に書き込みがなされると、こうなるですね。
対策してみるか。
レスの時は、そのdatがなかったら書かない。 341root▲ ★NGNG
しかしこれは、リスクをぎりぎりまで減らすことはできても、
「ローカル雪だるま」をしない限り、なしにはできないですね。
従来のbbs.cgiでも、入り口のところでdatの存在は見ているです。
入り口ではあったのに、書くところで圧縮が入ってなくなったということで。
今の様子を見ていると、サーバ資源がどきどきしているlive系ではこの部分スルー(従来通り)で、
他ではこれ入れて、安全性を高めることにしよう。
10億回に一回以下の出来事になにかしてもしょうがないと思うです
ほっとけ ほっとけ
>>342
10億回すか。
まぁ、10億かどうかはともかく、レアケースであると。
# というか、想定通りの回答で。 これまで、mnewsplusとかnews4vipとかmorningcoffeeとかで、出ているですね。
所詮、特殊な板か。
いっそdatをSQL化して、.datは.htmlとかと同じように生成さぼる対象にしてはどうか。
で、read.cgiと同じパラメータ方法でdatの該当行だけとれるようにする。
そうしたらSQLのレベルで1000ロックとか排他とかできるようになりませんかね。
>>346
VIPのプロジェクトってやつですね。
あれ、どのくらい進んだのかな。 >>347
あれ?それ初耳です。数人であれこれ考えていて出てきただけなので。
もしよろしければ参考URL教えていただけませんか?
>>348
>>346の範囲だと使えなくなるのではなくて、
現行のAPI使った専ブラでは読み込みの追従が遅れるだけ。 C レベルでの open() 関数呼び出し段階で
スレ立て時: O_WRONLY|O_CREAT|O_EXCL (同一名ファイルが存在すれば EEXIST)
レス追記時: O_WRONLY|O_APPEND (ファイルが存在しなければ ENOENT)
というフラグ付きで呼ばれるようにできればファイルの存在確認とオープンが
アトミックに行えるんですよね(bbsd ではそうしてます).
となると,Perl では sysopen() を使えばいいのかな......
351 [―{}@{}@{}-] ▲ ◆SANUKI/VII @焼きうどん ★NGNG
352 ◆TWARamEjuA NGNG
>>350
定数を利用するのには use Fcntl がいるですね♪ 353root▲ ★NGNG
>>348
レガシなdatとsubject.txtは、作るようですよ。< VIPのやつ
>>350
なるほど、なるほど。
で、戻り値でエラーハンドリングもすると。
ちなみに subject.txt 生成部分とかは、ワークのファイルで作って、rename() しているですね。
で、rename() でしくると、どうも500エラーになっているらしいと。
このへんも、何かうまいわざがあるように思っていたり。
flock() じゃなくて。 354root▲ ★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 とかを
安全にかつうまくこなすには、どういうアイディアが考えられるのかと。
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落ちしちゃったかもです。");
}
357root▲ ★NGNG
chmod 555datを => chmod 555したdatをあとから
358root▲ ★NGNG
481 名前: ◆MUMUMUhnYI [sage] 投稿日:2005/11/30(水) 03:23:06 ID:vRY99gsD0 ?###
# 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).
ふむ、、、。
しかし、どうなんだろう。
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のエラーチェックをまじめにやるべきなのかもですね。
362 ◆TWARamEjuA NGNG
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)")
}
こんなかんじかな?
>>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 越え発生という奇妙な現象も起こってしまったので,
# その点は要観察なわけですが...... 364root▲ ★NGNG
>>362
そんなようなことを考えていたです。
ただ、エラーにするんじゃなくて、たぶん単にあきらめて一時ファイル消して次に行くかんじで。
(新スレの時はもうちょっといい加減じゃないほうがいいかもですが)
>>363
> のようになると「1111111111.dat レス数インクリメント」は反映されなく
> なってしまいますね.
そですね。
いわゆる「不可視スレ」ができちゃうのも、同じ原因だとにらんでいるです。
news4vip morningcoffee newsplus とかで起きやすいことも、それを裏付けているかんじで。
> これならいっそのこと,一時ファイル名は固定にして
> O_EXCL 付きで sysopen() して,失敗したら subject.txt の更新処理自体
> スキップするようにしてしまってもいいかも知れません.
これ、直感的にはよさげな気がしますが、
いきなり全サーバに入れるのは、ちとどきどきするですね。
ex11 ex14 anime ぐらいで、ちょっと試したいなと。
あと固定にするとしても、新スレの時とレスの時では、
一時ファイル名として別のを用意したほうがいいような肝するです。
なんてことを、だらだらと。 366root▲ ★NGNG
>>363
> ちなみに,bbsd ではファイルロックより軽い mutex で排他制御してます.
CPANしてみると、Win32::Mutex というのしかなさげですね。ううむ。 流れとしては
1) あんま排他とか考えない太古代 (2001)
2) 排他しまくりで壊れない中生代 (2002-)
3) 排他なんてやってる余裕なし、壊れてもok の戦国時代 (2004-)
となっています。
わざわざ、排他は全部はずしたのだー
簡単に言えば排他等を組み込んでコスト(お金)を払うのもひとつの戦術ではあるけど、
それによって負荷増大、キャパシティ減少になったとき
それをやめて現状復帰が容易なようなコーディングを切に希望
369root▲ ★NGNG
>>367
はい、知っているです。
bbs.cgiにばっちり、コメントで残っているですね。
3) は、live8 とともに私もリアルタイムで経験したです。
で、そろそろ世代交替を狙っているということすね。
雪だるまのほうは、こうなったのかな。
4) コストの低い排他制御で、スマートにこなす現代(2005-)
従来バージョンのほうは、2006年かなぁと。 370root▲ ★NGNG
>>368 には、とても同意するです。
ようは「そんなに排他して(コストかけて)、いったい何を守るの?」っていうのを
忘れないようにしないといかんと。 371root▲ ★NGNG
で、flockでやる方法は「いやーんばかーん」なわけで、
もうちょっと「はやいうまいやすい」方法は、ないもんかなと。
あと 大きな流れとしては「雪だるま」に全部置き換え、
と思っているんで、旧世代の捨て去られる bbs.cg の面倒見ても
意味内科と、
>>374
「過去ログ倉庫はこちら」のところの話かしら。 baseでtarget指定してるからね。
そこだけ_selfにでもするか。
1.一時ファイルに新スレをどんどん追加
2.一時ファイルからsubject.txtを生成
…ダメかな?
378root▲ ★NGNG
リネーム部分 改良案
#############################################################################
# ファイルのリネームを行う
# 入力: $src、$dst
# 戻り値: 0またはエラーメッセージ
#############################################################################
sub TryRename
{
my ($src, $dst) = @_;
my $status = undef;
my $count = 100;
my $debug = 0;
# ex11で実験することにする
# 他サーバには、うまくいったら入れよう
if($ENV{'SERVER_NAME'} =~ /ex11/)
{
$debug = 1;
}
# 100回、renameを試行してみる
for (1..$count)
{
rename($src, $dst) and return 0;
}
# だめだったらステータスを保存する
$status = $!;
# デバッグしている時は、ユーザの画面にその旨表示する
if($debug)
{
print "bbs.cgiデバッグ中。。。<br>\n";
print "renameに失敗しましたが、そのまま処理を続けます。<br>\n";
print "($src)($dst)($status)<br>\n";
print "<br>\n";
print "このメッセージをコピペして、運用情報板の以下のスレッドに報告していただけるとありがたいです。<br>\n";
print "<br>\n";
print "bbs.cgi再開発プロジェクト7<br>\n";
print "<a href=\" print "<br>\n";
}
# デバッグしてない時は、ゴミファイルを消す
else
{
unlink($src);
}
return $status;
} 379root▲ ★NGNG
これに対応したbbs.cgiを、ex11に入れてみよう。
で、1日動かしてみると。
380root▲ ★NGNG
ex11に入れてみた。
狼のスレに、お知らせしてこよう。
これでまずは、現状把握と。
うまくいけば、おじさんが手で消している一時ファイル消去の頻度が、減るかも、かも。
問題なさそうなので、一番ゴミファイルが残っているanimeサーバにも入れてみた。>>380
というわけで、おやすみなさい。 中間報告
・animeサーバは、切り替えて以降500エラーはなしでした。
・ex11は、出ているようです。
メッセージが悪さしているかもしれないので、
ex11でも、画面にメッセージが出ないようにしてみた。
試験継続で。
なお、rename試行回数を100回から1000回にしてみた。< ex11
だらだらと観察中。
-rw-rw-rw- 1 ch2ex11 ch2 16384 Nov 30 18:54 237491133170255.tmps
-rw-rw-rw- 1 ch2ex11 ch2 32768 Nov 30 19:41 252251133408443.tmps
-rw-rw-rw- 1 ch2ex11 ch2 0 Nov 30 18:33 443801133404390.tmp
ううむ、きりのいい数字が。
このへんにヒントがあるのかもね。
banana723.maido3.com から、アクセスがあるようです。
どこか、臭いかいでいる板があるのかも。
banana723.maido3.com のDNSキャッシュも、リスタートいただけますか。
他には、2ch内部からのアクセスはないようです。
>>387
いんどる = 誤爆する
です。
わかりにくくて、ごめんなさい。 ということで、リスタート自体は必要になります。
よろしくお願いいたします。
すいません
前スレでも検討中だった2ch規約承諾問題ですが、まだ
> 消費者契約法上、確認を取ってクッキーを発行するのならば契約の成立の主張を主張するのならば分かるが、確認取る前の表示の段階でクッキーを発行しているんだぜ。
> パンフ送れば申し込まなくても契約成立みたいな感じ。
>
> 当然、俺はこの書き込みの著作権を主張するし、2chに2ch以外での著作権の複製権があるなんて俺は今でも認めていない。
>
> 匿名組合との契約書で、契約書を貰った段階で申し込みを止めたら契約は不成立だよな。
> 2chのクッキーの発行のタイミングがおかしいんだよ。確認画面を表示したら契約成立って考えだろ。
> そんな訳ないじゃん。
http://live19.2ch.net/test/read.cgi/stock/1131996799/501
こんなたわけた理屈を言っているコテハンがいますので、何とか対処のほどよろしくお願いします。 animeサーバは、全くゴミファイルが出なかったようです。
%ls */*.tmp
ls: No match.
%ls */*.tmps
ls: No match.
狼はまだ出ています(減った気がするけど)。
%ls */*.tmp
morningcoffee/443801133404390.tmp morningcoffee/830051104688508.tmp
%ls */*.tmps
morningcoffee/131501133424226.tmps morningcoffee/593171133422110.tmps
morningcoffee/192241133416590.tmps morningcoffee/626701133426337.tmps
morningcoffee/237491133170255.tmps morningcoffee/725821133439300.tmps
morningcoffee/252251133408443.tmps morningcoffee/832991133434947.tmps
morningcoffee/322941133409115.tmps morningcoffee/960071133431171.tmps
morningcoffee/364681133435025.tmps
上記のすべてのファイルが16384の倍数(0倍も含む)なので、
ひょっとすると、printが異常終了している、、、のかも。
ちなみに現在は、ex11でもごみファイルを消すようにしています。(>>378 について) ごみファイルを消す => renameに失敗したらごみファイルを消す
397 ◆TWARamEjuA NGNG
unlink($src) while -f $src;
してみるとか?
Rock54方面で、わざわざこんなことした覚えがあるです。。。@FreeBSDだとちゃんと消してくれないようなふいんき?
>>397
えっと、renameしても元が消えないってことですか。 399 ◆TWARamEjuA NGNG
>>398
あっと、renameではなくってunlinkの方です。。。
あと気になるのは未だにRock54/BBQの起動スクリプトがちゃんと終了せずにzombieになっちゃうことかなぁ。@cron起動の時だけ >>399
まじですか。
unlink1回したんじゃ消えないことがあるってことすか。うーむ。
>>397 は偶発的な事象により無限ループに陥る可能性のあるコードなので、
例によって for 文回し(>>378 参照)にしようかと。 もう報告して下さいは終わりですか@ex11
--------------------
書込み中・・・
--------------------
書込みに失敗した模様
--------------------
HTTP/1.1 500 Internal Server Error
--------------------
書き込みは反映されてます
>>402
どもです。終わってないっす。
やっぱり、dat追記後の後半の処理でエラーということですか。 404root▲ ★NGNG
animeサーバで2日ぐらい動かしてみたけど、とりあえずゴミは残っていなかったので、
今よりもコストが上がらない範囲ということで、>>378 のデバッグ部分を取ったものを入れてみた。
やっぱ、unlinkしてもunlinkされないからそこまでチェックするってのは
あまりにもあれだし、コストも無駄そうな気がするし。 >>405
read.cgi というか、サーバの設定ですね(対応したです)。 409root▲ ★NGNG
# 051207 ItabetsuSpecialサブルーチン化、板別の特殊処理
# ProcessMaru サブルーチン化(●のプロセス部分)、
# NanashiProcess => NanashiReplace4Heaven 名称変更
# ProcessNanashi サブルーチン化(名無し補完処理)
# FormInfoCheck サブルーチン化(フォーム情報のチェック)
# これでbbs_mainからのサブルーチン化は概ね終了のはず by む
http://qb6.2ch.net/test/read.cgi/operate2/1131481715/508
>408
これ、どんなものなんでしょか。 410root▲ ★NGNG
クリーンナップが一段落したので、久しぶりに、プロファイリングしてみた。
qb6で●なしBEありで、sageでレス。
予想通り、index.html を作るところが一番重かった。
IsKoukokuは、相対的に相当軽くなっている(DBのSJIS化等が効果発揮と思われ)。
これがbbs.cgiからまるごとなくなるんだから、雪だるまはやはり効果絶大ということで。
%dprofpp tmon.out
Total Elapsed Time = 0.687158 Seconds
User+System Time = 0.410596 Seconds
Exclusive Times
%Time ExclSec CumulS #Calls sec/call Csec/c Name
24.3 0.100 0.136 1 0.1005 0.1356 main::MakeIndex4PC
9.50 0.039 0.265 1 0.0389 0.2646 main::bbs_entryXXX
9.50 0.039 0.163 30 0.0013 0.0054 main::BEGIN
5.60 0.023 0.023 1 0.0234 0.0234 main::IsKoukoku
5.60 0.023 0.023 20 0.0012 0.0012 main::GetDatInfo
5.60 0.023 0.022 10 0.0023 0.0022 LWP::UserAgent::BEGIN
3.90 0.016 0.016 1 0.0156 0.0156 Net::HTTP::Methods::my_read
3.90 0.016 0.015 74 0.0002 0.0002 main::PutLines
3.90 0.016 0.015 2 0.0078 0.0076 URI::implementor
3.90 0.016 0.052 3 0.0052 0.0174 Net::DNS::Resolver::UNIX::BEGIN
3.90 0.016 0.037 11 0.0014 0.0033 Net::DNS::Resolver::Base::BEGIN
3.65 0.015 0.020 1 0.0150 0.0198 main::initFOX
3.65 0.015 0.028 21 0.0007 0.0013 main::MakeWorkFile
1.95 0.008 0.007 72 0.0001 0.0001 strict::bits
1.95 0.008 0.008 1 0.0078 0.0078 DynaLoader::dl_findfile
報告いる?いらなきゃスルーで
--------------------
書込み中・・・
--------------------
書込みに失敗した模様
--------------------
HTTP/1.1 500 Internal Server Error
--------------------
書き込み反映されてました
せっかくだからもう一回
--------------------
書込み中・・・
--------------------
書込みに失敗した模様
--------------------
HTTP/1.1 500 Internal Server Error
--------------------
書き込み反映されてなかった
>>411-412
えっとえっと、
どの板で、できればどのスレで起きたかも、
教えていただけると。 >>411-412とは別人だけど昨日morningcoffeeで2回500エラー出ました
確か2回とも書き込みは反映されたはず >>408-409
2ちゃんねる検索よりは期待できるかと思うけど
負荷がふえるだけだったら意味ないか 416 ◆TWARamEjuA NGNG
>>415
旧式bbs.cgiのように継ぎ接ぎだらけのようなのでかなりオススメ出来ないです(w 419root▲ ★NGNG
またしても、ご相談です。
Perlで、結果が返ってこなくてもブロックしないgethostbyaddr()をするには、
どうしたらいいんでしょうか。
SpeedyCGI前提なので、alermするのはなしで。
BBx のところみたいにNet::DNS 使う?
それとも、何かほかにもっとうまい方法があるのかしら。
某所のやつで・・・
$ip_address = "219.101.194.170";
@addr = split(/\./, $ip_address);
$packed_addr = pack("C4", $addr[0], $addr[1], $addr[2], $addr[3]);
($name, $aliases, $addrtype, $length, @addrs) = gethostbyaddr($packed_addr, 2);
print $name."\n";
反応無し orz
>>419
ブロックって?
そういやSpeedyCGIを使った方のソースって配布してないのか?
>>419
if文を使って、結果が返ってこなかったらスルーするような関数を作っちゃったらどうよ 422root▲ ★NGNG
>>420
DNSが死んだり相手側の設定が悪かったりすると、
> ($name, $aliases, $addrtype, $length, @addrs) = gethostbyaddr($packed_addr, 2);
ここで結果が返ってこなくて、待たされちゃうわけです。
つまり、ここで止まっちゃうと。
例えば、5秒待って結果が来なかったらあきらめて、
次の行にいってほしいわけです。
>>421
管理人の方針により、bbs.cgiのソースは非公開で。 >422
これくしー 1.08 の作者に任せましょう
と思ったら
alerm 使ってるようだ
bbs.cgiが使ってるdns側で何かしないとダメっぽい
426root▲ ★NGNG
いや、Net::DNS 使えばできるのはわかってるんですが、
手抜きしちゃおうかなとか思っただけです。
ぼちぼち、Net::DNS使う方法に変えるです。
モジュールから都合の良いところだけを切り貼りしてもってくるのは良くやるなぁ。
>>428
そのページは前からあるのを知っていて、
その問題がないバージョンを入れてあるわけですが、
それでもどうも、うまく動かないみたいです。
で、alermでやるのは全面的にやめているはず。 430 ◆TWARamEjuA NGNG
TimeOutを設定したいとなるとやはりNet::DNSが良いかと思うのですです♪@udp_timeout
gethostby*() と同じような感覚で使える Net::DNS 用のラッパ関数を作るとか.
1000に達したスレがまだ見れるんですけど、●を買う必要がなくなったって事ですか?
435root▲ ★NGNG
リモホの逆引きで、すくんでいるなぁ。< 一部サーバ
このへんも、ぼちぼちってかんじかなと。
436root▲ ★NGNG
BBS.CGI - 2006/01/11
650 名前: ◆MUMUMUhnYI [sage] 投稿日:2006/01/11(水) 16:47:41.95 ID:lEMnCwRm0 ?
# 060111 トラックバックで受け取ったものから \r を除去するコードを追加 by む
>>436
いままでやってなかったのが不思議だ。
(もしや LFは消してたけどCRは放置してた とか? >>437
そうなっていたです。
(通常のフォームを読むところは、ちゃんとCRも除去している) 440root▲ ★NGNG
>>439
微妙にbbs.cgiスレじゃない気がするんで、特化型スレでやるです。
前に試した時は、softupdatesのほうがasyncよりも好成績という
ちょっと意外な結果が出たのです。 441root▲ ★NGNG
660 名前: ◆MUMUMUhnYI [sage] 投稿日:2006/01/13(金) 02:13:28.46 ID:ERBncrZx0 ?
# 060113 トラックバックの時は★でもIDが出るように(060107で入った虫の修正)
# トラックバックでもSamba24/Rock54/BBQを有効に(機能追加) by む
>440
その時のOSの問題でMFSのasyncダメポだったのかも。
後は特化スレで。
bbs.cgi を、スレッド毎のワーカプロセス化したら
排他処理周りが一気に楽になるんでね?
と思った折れであった。
実況系ではてきめん効きそうだけど
爆撃系には弱くなりそ。
>>445
雪だるまで使っているbbsdって、まさにその思想だったりするですね。
で、期待通りに絶大な効果を発揮したわけですが、
どうもOS(FreeBSD)のマルチスレッド周りに難ありのようで、
現在シングルプロセスシングルスレッドで動作。
でも、これまでの数倍はパフォーマンスよくなったです。 >>446
それは失礼しゃした^^;
陰から応援し続けマッスル >>445
台数も数倍つかっているから、、
なかなか評価が難しいんですが、
限界性能をしりたいなぁというとこですかねぇ DragonFlyを使って「サーバーが安定しねぇ」なんて書こうものならhrsさんが激怒しそうだ。
>>449
7-current使う方がまだ安定してそう 452root▲ ★NGNG
あとで、VIP931のところを確認してみるか。
あと、BBEのところも気になるかも。
とメモメモ。
453root▲ ★NGNG
>>452
vip931 のところは、取れなければ臭くないことにするというコードを追加した(はず)。
BBEのところは、まだ。 454root▲ ★NGNG
BBEのところ見てみた。
タイムアウト処理は入っている(ありのサブルーチン呼んでいる)ですね。
これなら、すぐに対応しなくても(とりあえず)いいかなと。
頻度が上がってくれば他のBBx同様、非常呼び出しストッパーを組み込む感じで。
456root▲ ★NGNG
>>455
これって例の、ascii2d (だっけ)で出回っていたやつの亜種ですか。
つまりリモートからbbs.cgi叩いて投稿すると。
で、いわゆるRockにかからないようなパターンで来ると。 >>456
スレタイトルや名無しの変更などに、こまめに亜種作って対抗されているような気がします。 459root▲ ★NGNG
>>458
つまりいわゆる「いたち」だと。
それはたぶん、bbs.cgi で対応してもそうなるということかも。 461c⌒っミ `Д)っφ ◆CaKkuEV3EI NGNG
>>460
専用スレでぁゃιぃファイルの情報を集めて解析していただいたりアンチウイルスベンダーに送ったり、
ぁゃιぃファイルを踏まないように啓蒙したほうがいいと思います。 作者を呪うくらいしか出来ないか。
亜種を簡単に作れるって事は、遠くない将来、全板規模で。。。。
463root▲ ★NGNG
>>462
仮にそうなったら、またみんなで踊るしかないかなと。 >>458
日付が変わる頃に丁度書き込みの調子が変わってるから時限かも知らん >>464
もしかしたら、書き込む内容を毎日どっか別のところから取ってきて変えてるのかなあ いや、名前欄と内容は、ある程度のパターンをランダムに書いてるんじゃないかな。
同一IDで一時間以内に違う名前欄、内容で書き込みがある。
>462
広告マルチポストの方でそれらしき投稿が2種類観測されていたり,,です。
一部をRockしてますー。止めることは目的にしてませんがー。
文字バラバラのランダムのと、複数行書いてるのは同じウィルス
スクリプトですねー。ホストが同じものを並べてみるとわかるんですがー。
感染してるホストは100台なんてもんじゃないと思いますー。
Rockされてるのは一部ですがー、それでもホスト情報は100個をとっくに
越えてる気がしますー。
あとはー、トロイの木馬よろしく、作成者が端末に修正版を送り込めるのかもー。
でないと、同時にあの数に感染させたりは無理ですしー。
亜種が新たに配布されてるんじゃなくてー、そこまでやってる可能性大ですー。
もしその推測が当たってるとすると、かなり周到に準備して感染端末
増やしてたんでしょうねー。おそろしやー。
小手先の対応じゃなく、感染端末を地道に潰していくしかないようなー。
けど、プロバイダが協力してくれるかなー。
まー、地道にBBQしていくという手もありますけどねー。
何割かは固定か半でしょうからー、それで止まるものもあるかもー。
ホストが切り替わっちゃうものは対処無しですがー。
なるほど。
だから半角二次元と同人なのか。
たしかに感染させやすそう。
画像に混ぜて……
爆撃がとまっているスレに削除かけると、次の瞬間から爆撃が再開されますね。
(特定のIDでは無い)
手の込んだ事しやがる。
>>472
500KB逝って書き込めなくなったスレのレスを削除したってことはない? いんや。
複数のスレッド&他の人の処理も確認したけど、削除直後にコピペの書き込みが始まるみたい。
>>475
datの更新時間を見てるんじゃないですかねー。 2chから書き込みする人のDNS逆引きがタイムアウトすると500 Internal Server Error になって書き込めないっぽいです。
500が返ってくるまでかなりの時間がかかるので500になってるのはなかなか気付かないけど。
>>478
ですね。
普通に gethostbyaddr() してるからと。(>>419 あたりから) 本文の量に最低ラインを設けたら(3行とか64バイトとか)
負荷はどうなるんだろとかふと思った。
人間に入力の手間をかけさせる負荷分散?
481root▲ ★NGNG
>>480
上限じゃなくて(これは既にある)下限を設けるということですか。
できなくはない気がするけど、そうしたい理由は何だろうなと。 実況とか祭りの発端とかでの「きた」だけで数百レス、みたいな状況を回避しやすくなるとか。
それ以上の効果は望めないだろうけど……。
483root▲ ★NGNG
仮にそういう機能入れても、
live2ch とかに自動的に食う行を保管する機能が入るだけの予感が。
484root▲ ★NGNG
ありゃ、変換むちゃむちゃ。
空行を補完で。
488root▲ ★NGNG
# 060320 携帯用ブラウザ(携帯側IPアドレスと固有情報を正しくくれるもの)に対応
# IDの種は固有情報、各種規制にはIDの種を使用、BBM/BBNを参照
# 識別マークは Q (新設) by む
まずは qb5 に。
これで、試してもらうと。
個人的には新しい識別マークを入れる必然性がわからないけど
たぶん何か深い意味があるんだろうな
2chに投稿するときに「管理者」に著作権が帰属することに同意するっていう表現があるけど
掲示板の規制(アクセス規制)やperlスクリプト作成に携わっていることも「管理」のうちといえるので
FOXあたりは、ひろゆきに「電車男」の印税を(一部)請求することは法理論上は可能みたい
もし、ひろゆきが請求されたくなかったら、借りるサーバー会社を分散させるなどして対処することだな
法律上は著作権の時効は、著作権者が死んでから50年だから、けっこう長い
むかしみたいに「いまの時間帯は100レスづつしか表示できません」
っていうのを復活してみては?
>>495
アクセス規制で負荷を減らすよりも
表示できるレス数を50〜100レス程度に制限したほうが負荷は減ると思う 498 ◆KONAN/fu2I NGNG
今何かいじってまつ?
投稿日:2006/03/32(土)
pc8鯖で確認でつ (・∀・)ニヤニヤ
499 ◆KONAN/fu2I NGNG
ありゃここもかーw (・∀・)ニヤニヤ
501 ◆KONAN/fu2I NGNG
>>500
寝惚けてますた。しみましぇん・・・(´・ω・`) 502動け動けウゴウゴ2ちゃんねるNGNG
>>501
乙。
bbs.cgiの再開発に全力を尽くそうジャマイカ ふと思ったんだが、
書き込み前に「書き込みキー」を入力させるようにしたらどうよ。
「書き込みキー」は、定期的に画像形式で提供(板看板につけるとか)
bbs.cgiの変更は簡単だけど、専ブラ修正はきついか・・・
(携帯からの書き込みが大変そうだ・・・)
その前にスレ違いだな
510root▲ ★NGNG
>>509
そうですね。それは既に裏方面の規定路線と。
たぶんですが、固有番号と紐付けするかんじなのかなとか。 512root▲ ★NGNG
Cookie なしだと書けちゃうの?
いつか来る日が来たって事で、
以前にVIPとかでテストして駄目だしはしておいたはずです < 専ブラのくっきー
514root▲ ★NGNG
>>513
ですね。
ただ、今回そうはなっていないという噂も。 そのうち落ち着くところに落ち着くでしょう、きっと。
519root▲ ★NGNG
クッキーを食う・送る部分の仕様は、
前のものに戻るというか、さらに変更される可能性が大です。
472 名前:動け動けウゴウゴ2ちゃんねる[sage] 投稿日:2006/05/27(土) 18:00:21 ID:OAMS9SRA0
クッキーって、bbs.cgi から吐き出されるクッキー確認にくっついているものを、
そのまま返せば良いんですよね?
475 名前:ひろゆき[] 投稿日:2006/05/27(土) 18:02:44 ID:i3Z0R8NC0 ?#
>>472
クッキーじゃなくて、formの内容をPOSTしてもらえると。 524ヾ(゚パ)ノ ◆f0.zuburi6 NGNG
ほくじょうねぇ。
525root▲ ★NGNG
どうやるのがいいのかしらね。
通常のIE等で書き込みをする場合、こういうフローになるわけです。
(これまで)
1回目の bbs.cgi
・クッキー持っていない
=> 投稿確認画面が出る
2回目の bbs.cgi
・クッキーを持っている
=> 書き込める
526ヾ(゚パ)ノ ◆f0.zuburi6 NGNG
っと すいやせん,へへっ
ついでに
なんかねぇ。
ほくじょうねぇ。
こうかねぇ。
527root▲ ★NGNG
(今の、管理人が書いたアルゴリズム)
(IEで画面遷移どおりに書くことを想定)
1回目の bbs.cgi
・クッキー持っていない
・呪文を唱えていない
=> 投稿確認画面が出る
2回目の bbs.cgi
・クッキー持っていない
・呪文を唱えている
=> 書き込める
そもそもCookieの必要性とはなんなのかという疑問はありますが。
「規約に同意しなければクッキーを覚えない」かつ「クッキーがなければ書き込めない」
を実装するなら、今まで2段階だったのを、3段階にして、
1段階目 規約に同意するかどうか <input type=hidden name=hana value=mogera>
2段階目 書き込み確認 Set-Cookie
3段階目 書き込みました
にすればいいのでは。
んでこれだと2chブラウザは最初から
hana=mogera を送信するだろうから規約画面は見ないわけですが
たとえばOpenJaneとその派生はもともと、規約画面は自動的に同意しちゃっています。
そういうことを考えると、別にこれでもいいかなと思います。
530root▲ ★NGNG
クッキーをチェックする bbs.cgi を qb5/qb6 に入れた。
しかし、超暫定版。
問題なさげなら、配布で。
531root▲ ★NGNG
>>528
なるほど、3段階ですか。
悪くないアイディアかも。というか、本筋に近そうですね。
クッキー握っていれば、2段階目はスキップと。
引越しのごたごたが終わったら、考えてみるです。 >>530
金で書き込みテストしましたが、やはり同じようにループでした。 533root▲ ★NGNG
>>532
ループ問題をクリアしたものだけが、このテストに参加できますです。 534root▲ ★NGNG
つまり、
・ループバージョンのbbs.cgiは、クッキーチェックがスキップになってしまう
↓
・クッキーチェックを別途追加
という流れです。
従来通りにクッキーを送っている専用ブラウザなら、
対応版を使っていて、かつもらったクッキーを送ってもらえるなら、
qb5 ではエラーにはならないはず。
536root▲ ★NGNG
一点。
質問・雑談スレ224@運用情報板
http://qb5.2ch.net/test/read.cgi/operate/1148709150/699
699 名前:ノtasukeruyo ◆TWARamEjuA [sage] 投稿日:2006/05/27(土) 21:01:52 ID:4mMa4nT80 ?#
>>673
Set-cookies: で吐き出した物そのものかと?
--------------------------------------------------------------------------------
Monazilla/1.00 MAKA/1.0b
これですが、
bbs.cgi で Set-Cookie: する
そのクッキーを食ったかどうか、*そのbbs.cgiで*チェックする
なんていうこと、できるのかしら。
次の bbs.cgi ならできる(今までのもの)わけですが、、、。
できるなら、いい方法が知りたいです。 537root▲ ★NGNG
で、これが大変だと思うので、>>528 がいいかなとか思ったりするわけです。
今までのルーチン(2と3)に、1を追加する感じで。 538ひろゆきNGNG
>bbs.cgi で Set-Cookie: する
そのクッキーを食ったかどうか、*そのbbs.cgiで*チェックする
必ず食うんだったら、チェックする必要ないような。。
539root▲ ★NGNG
で、手段が先んじるといけないので、目的を先に書いておくと、
管理人は、投稿確認画面から承諾しないで、
ブラウザでバックして、次に再度書き込むことで、
投稿確認画面をスキップできてしまうことを、不満に思っているわけです。
で、これを防ぐために、
投稿確認画面のフォームに、ちょっとした呪文を入れた。
で、この呪文がないと、書けなくしたわけです。
この副作用で現在、クッキーがなくても
呪文さえ唱えれば、投稿できる状態になっていると。
なるほど、BEみたくするのか
1段階目で例のCaptchaとか使えば飛ばせなくなるけど凶悪すぎるだろうな
541root▲ ★NGNG
>>538
つまり、クッキーのチェックは不要ということなのかしら。 >>528の対応だと、えーと。
今回ハナモゲラを送信するようになった専用ブラウザたち
→昨日までと同じ感じで、クッキー確認が出てから書き込むようになる。
まだ更新前の専用ブラウザたち
→書き込めない(クッキー確認ループになる)
IEなど普通のブラウザ
→>>528のように三段階になる
という感じになりますかね。 543root▲ ★NGNG
で、ひとつ、リーガルなことの確認ですが、
この呪文をくっつけたフォームで送ることは、
投稿確認画面にある規約を、全部承諾したことと等価である、
ということにしたいんですよね、きっと。
545ひろゆきNGNG
クッキーが重要なのではなくて、
承諾ボタンを押したときにしか得られないデータが
投稿者から送られてくれば、承諾したということになるってのが重要かと。
>>545なら、別に hane=mogera を送ればクッキーが要らない仕様でも問題ないですね。
>>528の1行目に書いたとおりです。 548root▲ ★NGNG
あ、
× >>545 ということですか。
○ >>543 ということですか。
で、そのコンセプトなら、
フォームデータにその呪文つけないと受け付けなくする、
というのは、必須ですね。
ところで今は、sports2 とか be とかに1回書き込みしちゃうと、
その呪文がなくても、通ってしまうようです。 549root▲ ★NGNG
で、クッキーはあらし対策に別途考えればよいと。
であれば、やり方は明確です。
・投稿確認画面は、呪文がない時には絶対表示する
・クッキーのチェックは、投稿確認とは完全に分離する
550ひろゆきNGNG
sports2とかbeはなかったことに、、、
んで、hana=mogeraは状況によって変える可能性があるので、
formに表示されたものをつかって欲しいのですね。
爆撃などの材料にされる可能性もあるので。
551ひろゆきNGNG
>・投稿確認画面は、呪文がない時には絶対表示する
そうすると、投稿毎に確認画面がでちゃう予感。
なので、クッキーをキーにするのは必要かと。
hana=mogeraをcoookieにいれてもいいかもしれないすね。
>・クッキーのチェックは、投稿確認とは完全に分離する
投稿確認と嵐対策は別で考えたほうがすっきりするかもですね。
552root▲ ★NGNG
> んで、hana=mogeraは状況によって変える可能性があるので、
> formに表示されたものをつかって欲しいのですね。
> 爆撃などの材料にされる可能性もあるので。
方針、了解です。
たまに気が向いたら、変える感じですね。
専用ブラウザ的には、たぶんその度にバージョンアップするか、
あるいは出るフォームから呪文を取ってくるか、
どっちかってことになるかと。
553root▲ ★NGNG
>>551
> hana=mogeraをcoookieにいれてもいいかもしれないすね。
このアイディア、いただきます。 554 ◆TWARamEjuA NGNG
久喜を食ったか食っていないかは次のセッションでしか確認は出来ないと思うですです@クライアント依存
久喜ってそんなものですから、そんな用途にしか使えないです。
ので、3段論法が正道のような。
書き込み欄
↓
確認画面@ここで発行
↓
了承した画面(書き込みました画面)@ここで食ったかを確認。していなければ鰓にするとか
555root▲ ★NGNG
>>554
> 久喜を食ったか食っていないかは次のセッションでしか確認は出来ないと思うですです@クライアント依存
> 久喜ってそんなものですから、そんな用途にしか使えないです。
ですね。はい。 なんかajaxを使えば出来そうな気がしなくもない(見た目上bbs.cgiの回数を減らす
557root▲ ★NGNG
hana=mogera を cookie に入れるのは、
書き込み完了時にするのがよさげですね。
そうすれば、通常ブラウザでやる場合、書き込み完了の時にしか
そのクッキー食わないと。
既存のクッキ処理は弄らなくてもいいわけか
IEの「戻る」で承諾ボタンを押してないのに次ポストできる問題を解決するなら
承諾ボタンを押した後、つまり投稿しました画面で承諾済みである旨のクッキを
食わせれば(Mogera)、毎回承諾画面はでないし、「戻る」で承諾回避される
こともない、と
560 ◆TWARamEjuA NGNG
安易にmogeraを吐く人にはそれなりの責務を負わせるみたいな?@うん、いいことだ♪
その旨も書き記すと良いかも?@確認画面
そんなに承諾画面を見せたければ、投稿時に毎回表示させる、
専ブラ作者にも承諾画面表示を実装させるとかすればいいじゃん。
見た段階と書いた段階でクッキ2つ食わせれはいいじゃん。
564root▲ ★NGNG
やっぱ、3段階がよさげですね。
1回だけは、hama=mogera を Set-Cookie: しなくても
書き込みを許す、っていうことになっちゃうから。
で、1回許したら、2回もx回も、
区別できないわけで。
いったん、食事にするです。
566root▲ ★NGNG
>>563
つまり、3段階にする必要があるんですよ。それだと。
重要なこと:
食わせたクッキーは、次のセッションになるまで有効にならない。 ID生成のアルゴリズムとくっつけるとか。
IDその2のはなもげらとクッキーのペア。
1回目のCookieをhana=mogeraとかの安易な値じゃなくて
予測不可能な値にすれば2段階で済みます。
1回目のCookieなりフォーム変数なりが予測可能だから
投稿確認画面を経由せずに投稿されてしまうわけで。
負荷の関係で不可能なのかもしれませんがいちおう提案しておきます。
>>528の3段階目を2段階目の書き込み確認画面でXMLHttpRequestを行わせれば
見た目は2回になる。
もちろんJavaScrip切ってる人も大丈夫なように<noscropt>を駆使しなきゃいけないけど。 571root▲ ★NGNG
>>569
できれば、具体的なコードサンプルを示していただけるとありがたいです。
なにせ、Perl は素人なんで。 >現行の仕様(呪文さえ唱えれば、クッキーがなくても書けてしまう)はいまいちなので、
この呪文って何?
>>571
PerlっていうかJavaScriptです。
普通に3段階のを実装していただいたうえで
2段階目に表示するHTMLの中にJavaScriptのコードを入れると。
そのJavaScriptがユーザー操作を必要とせず3段階目をやってくれるというからくりですから。 >>573
それをどうするって?
その他→で、オンオフ両方やってみたけど無理だ どちらにしろ荒らし対策としての Cookie 付与なら,サーバサイドでのセッション管理も行うとか
しないとナンセンスなんで(これは結構な大仕事),とりあえず今回は初回投稿時の承諾画面の
ことだけ考えればいいかと.
ということで,Cookie なし& mogera ありで書き込めたとしても,その観点からは
問題なしということでいいのでは.普通に一般ブラウザ使って mogera が POST データに
付加されるのは承諾画面で了承した時のみならば,ユーザが小細工して勝手に
POST データに mogera を付け加えるのは illegal な手段ってことになるんで,
「mogera が付加された POST データを送ったら承諾画面の事項を受諾したものとみなす」
ということにすればいいでしょう.
ということで,こんな感じでいいのでは.
[初回投稿時]
投稿フォームから書き込む
↓
承諾画面表示(mogera 付きフォーム)
↓
「書き込みました」& Cookie 設定
[次回以降投稿時]
投稿フォームから書き込む
↓
Cookie があるのでそのまま「書き込みました」
・Cookie*もしくは*フォーム変数にhana=mogeraが含まれていなかったら、
投稿確認画面を表示する。このとき
<input type=hidden name=hana value=mogera>を含んだフォームを出力
あらし対策用のCookieが必要ならここで発行
Set-Cookie: hana=mogeraはまだ行わない
・書き込み完了したらSet-Cookie: hana=mogeraを発行
これでおk
1回目:
Cookieにもフォーム変数にもhana=mogeraが含まれていないので
投稿確認画面が表示される。
2回目:
投稿確認画面のフォームにhana=mogeraが含まれているので書き込まれる。
以後はCookieにhana=mogeraが含まれるので投稿確認画面はスルーされる。
1回目で戻って書き込み:
Set-Cookie: hana=mogeraはまだ発行されていないし
フォームにはhana=mogeraが含まれていないので再び投稿確認画面が出る。
これでどう?
クッキーとフォームに同じはなもげらを入れて規約を見せて、
書き込んだらはなもげらとは違うクッキーを渡してこっちがあれば
はなもげらはスルーとか?
>>575
特定の専ブラウザの質問はその専ブラのスレで 580root▲ ★NGNG
めし終わり。
>>576
第2段落は概ね今の実装で、つまりは管理人の意思って感じですね。
これについては同意です。
クッキーはあらし対策の意味があるので(これは厳密には今回のものとは別の問題)、
仕様は、今回のとは別に考慮する必要がありそうですね。
で、write-after-cookie にして、
>576 の実装を、まずは私のほうで。
で、次にあらし対策としての cookie の取り扱いの考慮で。
これは引越し完了後にでも、おじさんにがんがってもらおうかと。 >>582
今はあらし対策のCookieが投稿確認画面で同意したときのCookieを兼ねてるけど、
あらし対策を分離できるように、「投稿確認画面で同意した」という意味のCookieを
別途発行するように変えるってこと。
そのCookieがなければ、あらし対策のCookieの有無にかかわらず
投稿確認画面を出す。 read.cgiの方も同意済みか否かでフォームを変化させちゃうとか。
静的なページからの投稿には毎回同意してもらうってのはご愛嬌で。
>>584
それは>>577(というか>>557)では?
>>576には「Cookie なし& mogera ありで書き込めたとしても〜」とあるから
で、2段階だと結局、
呪文(確認部分で取得可能)と書き込み用クッキー(これも確認部分で取得可能)
があれば書けるのかな 仕様がはっきりしないと対処のやりようがないからなぁ。
> それは>>577(というか>>557)では?
>>557だと「次のセッションまでCookieが有効にならない」という問題が
あるとroot ★氏が言っていた(>>564)ので、
3段階にしなくて済むようフォーム変数の併用を提案したのが>>577。 けっきょくどう送ればいいのかな?
POST /test/bbs.cgi HTTP/1.1
Host: qb5.2ch.net
User-Agent: Monazilla/1.00
Referer: http://qb5.2ch.net/operate/
Cookie: NAME=; MAIL=; PON=*****; HAP=*****;
Connection: close
Content-Type: application/x-www-form-urlencoded
Content-Length: *
FROM=名前&mail=sage&MESSAGE=本文&bbs=operate&key=1234567890&time=time()&submit=書き込み&hana=mogera
こんなんでいいのかしら? 運営臨時に一度書き込めば、とりあえずは解決できる問題
ただしめんどくさい
俺も2段階方式に賛成
「FormのHanaがあるとCookieチェックがスルーされる」とすればそれはバグであって方式の問題じゃないと思う
CookieのHanaがあればそのまま投稿処理にすすめばいいし、
なければ、FormのHana有りなら投稿処理、なければ未承諾なのでエラー
みたいな。あるいは投稿処理の直前で、CookieのHanaかFormのHanaいずれかが
ないと未承諾エラーとか
どっちかでクッキーチェックされてれば問題なかったんじゃ
でFormのHanaというか承諾ボタンがポチられてたら完了画面で
Hana喰わすと
595動け動けウゴウゴ2ちゃんねるNGNG
書き込むボタンに規約を載せればいいのか
全部クッキーに入れちゃえ。
CONFIRM=了承?
ここに書くお話なのかわからないのですが…
クッキー確認の画面でMESSAGEパラメータについて”の
半角の文字についてのサニタイジングがされていないようで、
”の半角以降の文字がfirefoxで書き込みしたときに消えてしまうのですが…
勘違いでしたらすみません。
佐賀ってるスレを揚げる会
(`ー^)
〜( 〜)
/ ヽ
JavaScript 使うんなら,index.html や read.cgi のフォームの onsubmit() でチェックするという手も.
for (var i = 0; i < document.forms.length; i++)
if (document.forms[i].FROM && document.forms[i].mail) {
if (!document.forms[i].addEventListener)
document.forms[i].addEventListener = function(t, l, c) { this["on"+t] = l; };
document.forms[i].addEventListener("submit", function(e) {
if (!/(^|[,;]\s*)hana=mogera($|[,;])/.test(document.cookie)) {
if (comfirm( "投稿確認\n"
+ "・投稿者は、投稿に関して発生する責任が全て投稿者に帰すことを承諾します。\n"
+ "・投稿者は、話題と無関係な広告の投稿に関して、相応の費用を支払うことを承諾します\n"
+ "・投稿者は、投稿された内容及びこれに含まれる知的財産権、(著作権法第21条ないし第28条に規定される権利も含む)\n"
+ " その他の権利につき(第三者に対して再許諾する権利を含みます。)、掲示板運営者に対し、無償で譲渡することを承諾します。\n"
+ " ただし、掲示板運営者は、投稿者に対して日本国内外において無償で非独占的に複製、公衆送信、頒布及び翻訳する権利を投稿者に許諾します。\n"
+ " また、投稿者は掲示板運営者が指定する第三者に対して、一切の権利(第三者に対して再許諾する権利を含みます)を許諾しないことを承諾します。\n"
+ "・投稿者は、掲示板運営者あるいはその指定する者に対して、著作者人格権を一切行使しないことを承諾します。\n"))
document.cookie = "hana=mogera; path=/; expires=Friday, 01-Jan-2010 00:00:00 GMT";
else {
if (e && e.preventDefault)
e.preventDefault();
return false;
}
}
return true;
}, false);
}
専ブラ使えない状態なのはつまり、人大杉状態の板では書き込み不可ですか?
609 ◆TWARamEjuA NGNG
hana=mogeraがやってきたら2ちゃんねるの中の人的には「規約を了承したとみなす」で桶かと。
で、その旨を規約の中に盛り込むと良いかと。
♪ひさびさにJavaScriptのソスーを観たです(照)
>>608
頓。
それだけ対応済みなら、ギコナビも時間の問題だろうからしばらく待ちますか。 ギコナビはCVSでコード書き換わってたからリリースは時間の問題でしょう
OpenJaneはコミット出来る人もいなければコードを直して野良ビルドを作る人もナシ・・・。
☆ チン マチクタビレタ〜
マチクタビレタ〜
☆ チン 〃 ∧_∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
ヽ ___\(\・∀・) < A Bone まだ〜?
\_/⊂ ⊂_ ) \_____________
/ ̄ ̄ ̄ ̄ ̄ ̄ /|
| ̄ ̄ ̄ ̄ ̄ ̄ ̄| |
| 愛媛みかん |/
専ブラの対応状況は他でやってもらえると。
対策のノイズにもなりかねないとおもいます。。
>>611
いやぁ、普通の炎狐で確認画面を表示させてそこのフォームのボタンを押したときですよ。 >>618
ここの対応が発生源なんだからどうしようもないですな。
もちっと専ブラ作者とリンクして動いているのか思っていたけど。
そうでもないし。 今回変更された点は
・書きこみ&クッキー確認のところでcookieを取得させるのをやめた(ソース見てみたらSet-Cookie:がない)
・書き込みにhana=mogeraが必要になった
でおk?
で、cookieはどこで取得させてるの?これがわからないんだけど…
624動け動けウゴウゴ2ちゃんねるNGNG
あのー、A Boneユーザーなんですがさっき帰って来て2chにカキコしようと思ったら
全然カキコできないんですがどうすればいいのでしょうか?
(IEからなら書き込めます)
このスレ読んだんですが、クッキーやらなんやらわけわかめでサッパリっす・・・
どうか対処放送お教えくだされーウワァァァァァァヽ(`Д´)ノァァァァァァン
627動け動けウゴウゴ2ちゃんねるNGNG
>>626
すみません・・・
そんな板見に行ったこともないしそんなスレがあることも知りませんでした
取り合えずそのスレ見てみます 専ブラのスレは知らないくせに、書けないからって
いきなりbbs.cgiのスレに来るとはw
妙なところに詳しい変な奴だな
>>623
これまでどおり2段階でこなすのは確定のようだから
書き込みPOST後の書き込み完了画面とともに送られてくる可能性高し
初回書き込み時(CookieでHanaを送信してない)はPOSTパラメータで
hana=mogeraが必要なのは確かだと思うけど、それ以降Cookieだけで送ってれば
いいのかPOSTでも必要とかみたいな細かいところはまだ分からない
承認ボタン押してエラー画面に飛んだときCookie来るのかとかエラーパターン
増えるのかとか・・・ >629
大当たり。
書き込み完了画面で4つばかりCookieが飛んできますね。
# ホスト名のCookie2010年有効期限で設定されてもなぁ
>>629
hana=mogera追加して書き込みした後の書き込み完了画面にもSet-Cookieが無いんだけど…
どこにあるんだ? >>629
すいません。ヘッダ見ない形で書いてたんで見落としてしまいました。書き込み完了画面にありますね。ありがとうございます。 ああ、PONやHAPまで書き込み後発行になっちゃってるのか
そりゃ不具合でるわ
これらは最初の確認画面で食わせないと当然hanaだけで書けるようにするしかない
638root▲ ★NGNG
PON と HAP の仕様は従来通り(送らないと投稿確認になる)
新たに「hana=mogera」クッキーを送るか、
hana=mogera のフォームを送るかしないとだめ
という仕様の bbs.cgi を開発しています。
で、PON と HEP は、
正しい PON と期限切れではない HEP を送ってきた時、
有効とみなすようになっています。(従来通りの仕様)
http://ch2.ath.cx/load/comic6.html
comic6(というか同人板)なんですが、確認画面の所でウイルスがリトライを繰り返して
DDoSしてる気がします
ウイルスの処理部分はこんな感じです
if body.match(/(書き込み確認)|(2ch_X:check)/)
@board.cookie = head['set-cookie']
retry 642root▲ ★NGNG
>>638 をもう少し正確に書こう。
1) 従来通りのもの(PON/HEP)を、クッキーとして bbs.cgi に送ってこないと書き込めない。
=> 投稿確認画面になる。管理人がいじる前の仕様と同じ
2) *そのうえで*、新たに「hana=mogera」クッキーを送るか、
*または* hana=mogera 入りの投稿フォームを送るかしないと、書き込めない。
=> 投稿確認画面になる。★新仕様
3) PON/HEP は、
従来通りのふるまいで送ってきた時、従来通りに有効なものとなる。
=> 管理人がいじる前の仕様と同じ
4) 有効な PON/HEP を送ってきた場合、
bbs.cgi からは PON/HEP を Set-Cookie: することはない。
=> 管理人がいじる前の仕様と同じ
5) PON を送って来ないとか、HEP が無効だった場合、
bbs.cgi は有効な PON/HEP を Set-Cookie: する。
=> 管理人がいじる前の仕様と同じ
またこの場合、hana=mogera フォーム や hana=mogera クッキーを
bbs.cgi に例え送ってきていたとしても、上記 1) により書き込めない。
6) hana=mogera クッキーは、書き込みが成功して、
かつ hana=mogera クッキーを送ってこなかった時のみ、
bbs.cgi から Set-Cookie: される。(★新仕様) cookieはないけど、hana=mogera のフォームを送って来るブラウザをあっさり切る
夕方の仕様は嫌な感じ。
hana=mogera、cookieなしでもcookieを寄こして欲しい。
6) hana=mogera クッキーは、書き込みが成功して、
かつ hana=mogera クッキーを送ってこなかった時のみ、
bbs.cgi から Set-Cookie: される。(★新仕様)
一番初めはどうするの?
書き込みを成功させるにはhana=mogera クッキーが必要なのに
hana=mogera クッキーが無いと書き込めない
647root▲ ★NGNG
>>646
hana=mogera 入り投稿フォームを送れば、
書き込むことができます。 ( 2) のとおり )
つまり、専用ブラウザは、*再度の仕様変更*が、
必要になることになります。 >>643
重くは無いんですが、負荷が高いと同人の自治とかダウソのウイルスオチスレで報告が出てたんで、念のために >649
テスト結果
View 前と同じで書けず
Nida 書き込める
もらったクッキーを次のセッションでそのまま使ってくれるブラウザや、
今回作者さんに「hana=mogera フォーム」を送るように対応いただいたブラウザでは、
きちんと書き込めるはずであるということを、期待しています。
つまりすべての人は漏れなく一番初めに投稿フォームを送らなければいけない
=利用規約に同意しなければならないということですね。
653root▲ ★NGNG
そういうことです。>>652
hana=mogera 投稿フォームを送っても、
クッキーは従来通りに、つけていただく必要があるというわけです。 654root▲ ★NGNG
それで、>>647 に再度の仕様変更が必要、と書きましたが、
今回単に「hana=mogera 投稿フォーム」を送る機能だけを*追加*することで
対応したものについては、再度の仕様変更は*不要*なはずです。 >>642 乙です.その仕様でよさげですね.
ついでに,「投稿確認」の記述を
<!-- 2ch_X:confirm -->〜<!--/ 2ch_X:confirm -->
で囲むとかして,専ブラでも表示してもらえるといいかも? 656root▲ ★NGNG
で、重要なことは、
この変更版 bbs.cgi を全部に配布すると、
例の「運用情報 臨時でのクッキーの栄養補給」でしのいでいるタイプの
従来型専用ブラウザは、その方法ではもはやしのげなくなる、
つまり、書き込みができなくなる、
ということです。
657root▲ ★NGNG
>>655
泣きそうでした。
だって、bbs.cgi の中でも一番アドホックで汚くて、
どうにかしなきゃなぁ、って思っていたところだから。
あそこをいじろうっていう気持ちになるあたりが、
さすが「The 管理人」
で、
> <!-- 2ch_X:confirm -->〜<!--/ 2ch_X:confirm -->
> で囲むとかして,専ブラでも表示してもらえるといいかも?
これ、チャレンジしてみるです。 661root▲ ★NGNG
>>644
hana=mogera フォームあり, hana=mogera cookie なしだと、
hana=mogera cookie をよこしてきます。
(>>642 の 6) ) >>656
今回は規約変更で仕方ないと思うけど、
以後ハナモゲラの呪文がどんどん変わるとしたらイヤンな感じですね。
呪文を変えるたびに更新のないブラウザの切捨てになりそうで。 >>661
アラスカで確認しました。新仕様はいいですね。乙です 667root▲ ★NGNG
アラスカのスレ見ていると、大丈夫そうかな。
もうしばらくしたら、配布します。
いま配布しようとしているものは正式に今後使われるものですか?
さらに変更を予定していますか?
669root▲ ★NGNG
>>657 の最終段落ですが、
なんとなく副作用が出そうなので、今の変更は控えます。
来週以降かな。 670root▲ ★NGNG
>>668
問題がなければ、この仕様でいこうかと。
なにをもって「正式」というかは、私にもよくわかりません。 672root▲ ★NGNG
スレッド 924 に仕様をレスしたりして、
それからもう少しアラスカの様子見て問題なければ、
配布してみようかなと。
>>672
今日の朝六時以降ですかね?
がんばって起きてます。 674root▲ ★NGNG
>>673
そこまでもたないんで、それより早いと思います。 < 配布時刻 ハナモゲラは承諾ボタンを押さなくても得られるけど
単純に戻って書くことができない分、今までよりいいのかな...
677root▲ ★NGNG
そろそろ、配布します。
Cookieのほうのmogeraチェックは前方一致だね
680root▲ ★NGNG
BBS.CGI - 2006/05/28
10分程度で。
>>681
Cookie: ... mail=sage; hana=mogeranus
とか通るように見える 683root▲ ★NGNG
>>682
あ、なるほど。
それは一応、配慮したつもり。
変だったら、報告ください。 684root▲ ★NGNG
>>682
あ、勘違いしてました。
確かに。
そのうち、exact match に変更するです。 hana=mogeranus
にしても書き込めなかったですが。。
686root▲ ★NGNG
>>685
hana=mogera では大丈夫でしたか。 >>686
hana=mogera
なら問題無いです。 これを機にエラー応答も<!--2ch_X: -->フォーマットに統一して欲しいなぁ
と言ってみるテスト。
フォームのほうは ^mogera$ でクッキは ^mogera っぽい?
クッキの切り出しの時にバッファを6文字で切ってるのかな
書き込むときに bbs.cgi を呼ぶのではなく
XMLウェブサービスを呼ぶようにしようよ
今回の改良はこれで終了。めでたしめでたしということですね。
>>605 の regex /(^|[,;]\s*)hana=mogera($|[,;])/ を $ENV{HTTP_COOKIE} に適用でいいかな. >>691
そうですね。エラーメッセージと同時に埋め込んであると処理がある程度
楽になるかなぁと。 696root▲ ★NGNG
>>694
そんな感じですね。
というかクッキーって結構使っているので、
クッキーのトリートメントするために、サブルーチンを一つ書き起こす感じかなと。
# 今日はもう、元気ありませんです。 >>696
乙です。近々エラーのあたりにも手を付けていただけるとありがたいかなと。 結局専ブラはアドホックに、POSTに&hana=mogeraをくっつけるだけで済むわけか
変更があるならFormのHiddenはそのままオウム返しするようにしたほうがよさそうかな
699root▲ ★NGNG
>>698
それでよいのではないかと。
ちなみにはなもげら関連は、bbs.cgi 中で変える場所を集めて、
すぐにわかるようにしておいたです。
だって、変えるかもしれないっていう人がいるから。
で、投稿確認画面の表示部分は新たに &HoutekiToukouKakunin っていう
サブルーチンに起こしなおしました。
これで、この部分の差し替えもしやすくなったはず。 701tiger2526.maido3.com(206.223.157.125)@root▲ ★NGNG
>>700
おつでした。
私はこれで書き込めています。
Monazilla/1.00 (JaneNida 試作品/060527) 702root▲ ★NGNG
ということで、自然治癒班はそろそろ、お風呂の時間。
>>701
了解しました。
ここで書き込めた報告はスレ違いかもなので
うーむやはり雑談スレが良いかなぁ?<報告 >>696 >>702 乙ですた.Cookie 取得関数ということなら,
use CGI qw/:standard/ すれば cookie('hana') 一発で取れますけどね. 707root▲ ★NGNG
>>706
おぉ、なるほど。
Perl を知らない私。
明日以降に。 708ノtasukeruyoNGNG
かちゅ〜しゃ 2.102+kage 0.99.1.1165 書けてます。
Monazilla/1.00 kage/0.99.1.1165 (0)
710ノtasukeruyoNGNG
ちなみに、一回何もないエラーメッセージが出て
それのOKを押してから、もう一回書き込むボタンを押して
書き込めるというのが正常動作なのですか?
Monazilla/1.00 kage/0.99.1.1165 (0)
711ノtasukeruyoNGNG
>>710
エラーメッセージが、書き込み内容に訂正。
Monazilla/1.00 kage/0.99.1.1165 (0) 712通りすがり@天麩羅 ◆/dd8SR4TVc NGNG
>>710
かちゅ〜しゃスレで同様の症状が出ているか尋ねた方が良いかと。
取りあえずwiki更新しときます<かちゅ+kage 714ノtasukeruyoNGNG
>>713
了解。
>>712
残り少ないから、新スレ立てるわ。
Monazilla/1.00 kage/0.99.1.1165 (0) >>712
あと5レスやんけww
次スレ立て&誘導願います<2chの動作報告はここで。 おい。root。
●金返せ。Jane使えなくなったじゃネーか。
糞壷なんか使うかよ。
動作効率悪いんだよ。
早くなんとか汁。
金で『心地よさ』買ってんだよ。
ある意味純粋なユーザーでは無く『客』なんだけど。
考慮してくんない?そーゆう所もさ。
>>716
Styleに乗り換え
Monazilla/1.00 (JaneStyle/2.30β2) >>716
Jane派生Nida(確定)とStyle(未確認) >>720
ログが移行できるならね。
もちろん外装もな。
ログ抽出機能とかID判別とか要らないから。
最近のはゴチャゴチャ無駄につけて使いにくい。 >>723
Jane系ならログ移行は容易
まあわからなけりゃソフウェア板に行って質問しる そのソフトウェア板が落ちてた件について。
つか入りにくいよ。今。
IEでも入れなかったし。
728tiger2526.maido3.com(206.223.157.125)@root▲ ★NGNG
>>727
「同意ボタン」を押させる仕様ですね。
これなら、問題ないかと。
Monazilla/1.00 (JaneView/0.1.12.1) JaneDoe View α ( build date: 060528 )
テスト
>731
そのスレッドもちょっと違うかな
情報集約しやすくするため、この板に情報スレ建てます。
なんかまだダメだhana=mogura
にしても書き込めない
>>738
ここってネタスレじゃないよねw
メチャワラタw jane lovelyって専ブラ使ってるのですが、作者が更新するか不明です
そのhana=mogeraっていう呪文で対応したいのですが
どうすればいいのでしょうか?
いっとう最初は、PONとHAPを貰うためだけの送信ってことで、
最小限の内容(半角1文字とか)を送って、鯖からPONとHAP貰ったら
それをCookiに入れて、今度はちゃんとした内容(hana=mogera込)を
送ってやるって実装でOKかな?その方が無駄な送量がなくていい?
1.ラブリー終了
2.Jane2ch.iniの[TEST]のWrtCookie=PON=リモホ;の最後にhana=mogera;追加
3.ラブリー起動
2。は起動中に書き込んだら駄目だお
昨日から専ブラスレで初心者相手のサポセンやってたが
さすがにウンザリしてきた
エラーメッセージとかバージョンとか環境とか書かないで
ただ「書き込めない」とかしか書かないから困るよな。
エスパーじゃないんだから環境しっかり書いてくれと。
昨日の「ひ」のつく人の気まぐれ以降まだ使う機会ないんだけど
AIR-EDGE PHONEの「o」表示になるタイプからの
書き込みは特に問題ないのかな
.。oO(>>748みたいな表示ってどうやるんだろ)
>>756 名前欄にノtasukeruyoを入れればいいんですよ^^ >>758-759
でも普通は>>730みたいな表示なんじゃないの?
Monazilla/1.00 kage/0.99.1.1168 (1000) どれどれ?
Monazilla/1.00 (JaneStyle/2.24)
そこにはUAが表示されるからProxomitronかなんかで
UAを好きな文字列に書き換えてんじゃないの?
オリモオリモー
Monazilla/1.00 (JaneStyle/2.24)
>>762>>764
なるほど、そういう事かw
昨日も時折見かけてたからなんとなく気になってて
ちなみに>>756の上の件は現段階では問題なさそうだと確認済 うわー
うわー
お、おおおお、おれの・・・おれのあいぴーがぁあああああ
hana=mogeraの部分が今後書き換わる可能性があるようですが、
その場合はmogeraのぶぶんだけ書き換わりますか?
たとえば
hana=mizuとかhana=sakajiisanとか。
それとも
koma=nechiとかga=cho-nとか丸ごと変わりますか?
また、同時に二つ以上の呪文を唱えないとならないケースは発生しますか?
たとえば、hana=mogeraとkona=nechi両方をPOSTしなければならない、など。
名前も値も個数も変わりうるでしょう。
例え、現時点では変えない方針だとしても、将来はわからないし。
都度対応でいくか、どうとでもなる機能にしておくか、だな。
bbs、key、time、FROM、mail、MASSAGE、submit、(sid)を
標準送信データとして、確認画面にこれ以外のデータがあれば、
追加データとして取得し、全て送信する。
submitの値を書き込みボタンに反映させると尚良し?
>>771
次はkoma=nechiくるね。きっと クッキーはダミーを使わず、2ちゃんから取得したものを使えと
おいちゃんが言ってたらしいから、
単純にhana=mogeraを追加したただけのやり方は
あまりよろしくないという事になるのかな。
781ヾ(゚パ)ノ ◆f0.zuburi6 NGNG
hana=pockey
でよろしく(素
hana=maruki
で、みそ1年分がひろゆきに贈呈されます
Live2ch作者です。
http://www8.plala.or.jp/uro/live2ch/lzh/live2ch114b1.lzh
1.13では強制的にhama=mogeraつけてるだけなので、フォームの内容ちゃんと読んで
bbs、key、time、FROM、mail、MASSAGE以外のinput type=hiddenのデータがあったらそれを付加して書き込むようにしてみました。
複数あっても大丈夫です。
1.13
ハナモゲラ付き書き込み→クッキー確認→クッキーを食べる→ハナモゲラとクッキーつけて書き込み
1.14b1
ハナモゲラ無し書き込み→クッキー確認→クッキーを食べて、フォームのイレギュラーな項目を抽出→クッキーと抽出したフォームをつけて書き込み
となってます。
フォームの内容調べるのは、クッキー確認画面(2ch_X:cookie)の時になってます。
こんな感じで理想的ですかね? 784root▲ ★NGNG
>>783
おつです。
ざっと読む限りでは、概ね問題なさげ。 >>783
超乙です!!
ユーザーとしてはありがたい限り >>784
問題なさげですか。
ありがとうございます。
近いうちに正式版公開することにします。 こちらにも報告
主立った専用ブラウザの対応版リリースはほぼ出そろいました。
(細かい改良はあると思いますが)
こんなときこそmonazilaのメーリングリストで仕様変更を呼びかけたらいいのにねえ
「hana=mogera」はクッキーの方に入れるの?
それともコンテンツの方?それとも両方?
2ちゃんに書けるのを規約に同意してアカウント作ったん人に
すればいいんじゃないか?
>789
今のところCookieだけで書けてるけど。
>>790
またゴネる人が出てくるよ。
荒らし辛くなるってね・・・。w >>792
ごちゃごちゃしすぎ
と数年後いってるはず >>791
そうなの、、、
どっちか一方でもいいのかな・・・ ふいー。一段落ですね。
質問。
wikiにこんなのが。
問題は無い?
http://stream.st/works/
2chの書き込み仕様変更(2006.05.28)に対応できない2chブラウザで書き込めるようにするソフト
HanamogeraProxy 0.0.0.5 ダウンロード
古いJane系のブラウザなど、今回の2chの仕様変更で書き込めなくなったブラウザは多いと思います。
このソフトを使えば、古い2chブラウザでも書き込みが出来るはずです。 >>795
フォームのハナモゲラは送っているけどクッキーのハナモゲラは送ってないんで
非対応ブラウザでは今までどおり規約確認画面が出るんで問題ないはず。 ex14.2ch.net で試してたんですけど、もしかして UserAgent によって処理変わってきますか?
hana=mogera フォーム無しクッキー有りだと、IE は書き込めて Monazilla は書き込めなくて……。
クッキーの設定方法間違ってるだけかな(´・ω・`)?
798動け動けウゴウゴ2ちゃんねるNGNG
>795
かちゅ〜しゃで対応できない仕様をkageで対応してるのと同じだと思う。
そのうち"Open Jane Doe + HanamogeraProxy"で一つの専ブラの名前になるかもね。
>>797
以前からUAをごにょごにょするとごにょごにょが無くても書き込めるようになってますな
仕様かバグかは知らぬ >>799
thx
ってことは、どう対応すればいいんでしょうか……。
1: 今のまま、2回目の書き込みは IE に習い、hana=mogera フォーム無しクッキー有りで確認ページに突入させる
2: UA 変える
3: hana=mogera フォームを常に追加
……微妙にスレ違いの予感。ごめんなさい orz すんません。UA 変えても 2ch_X:Cookie 返ってきました orz
クキの追加あたりが間違っている悪寒。・゚・(ノД`)・゚・。
……スレ汚し本当にすいません orz
Monazilla フォーム無し Cookie有り で逝けてますよ。
Cookieを再取得してから、、PONにならってhana mogeraを追記するといいかも
>>802
もらっていないうちに hana=mogera Cookie を一方的に吐くのは、
本来、邪道すね。
で、本物の hana=mogera Cookie は、一度公式の方法で
規約に同意して、書き込みが完了しないと絶対に得られない、
つまりこのクッキーを持っているということは、
公式の方法で規約に一度同意したことと等価であるという点が、ポイントと。 >>803
hana=mogeraを送らせるのではなく、規約同意させるのが変更の意図なのですから、
可変(ランダム文字列)に変更するのが良いかと。 806root▲ ★NGNG
>>805
そのへんは、管理人の胸先三寸ですね。
ここの上のほうでも「いつでも変える」って言っていたような。
変えられるようなしくみは、今回一応準備工事だけはしたつもり。 なんだかんだいって、昔のbbs.cgiよりはだいぶ簡単、かなぁ?
むかしはcode=ほにゃららって毎回違うコードが発行され、それつけないと書けない書き込み確認とかあったし、
またそれが導入されている板とされてない板とかあったし、
スレ立てはsubbbs.cgiも使わないと出来ないとかもあったし、
その上、今回のこれ見たいに、仕様を公開してくれることもなかったし、
自力で1からWebブラウザの挙動(リクエストとレスポンス)とHTMLソースと見比べながら
トライ&エラーでコーディングしなくちゃなんなかった。
あのころに比べたら、今の2chはとても優しい。
何でもいいんだけど、キーの部分(現行だと"hana")は固定でお願いしたいなぁ、、、
でないと抽出しにくいから・・・
つーかひ(ryが弄れる箇所がまだ残ってたのが驚きだったり
812root▲ ★NGNG
>>811
少なくとも私は、いじりやすくしているつもりなので、
当然、管理人はいじることができるはずと。 ・投稿者は、投稿された内容及びこれに含まれる知的財産権、(著作権法第21条ないし第28条に規定される権利も含む)
その他の権利につき(第三者に対して再許諾する権利を含みます。)、掲示板運営者に対し、無償で譲渡することを承諾します。
ただし、掲示板運営者は、投稿者に対して日本国内外において無償で非独占的に複製、公衆送信、頒布及び翻訳する権利を投稿者に許諾します。
また、投稿者は掲示板運営者が指定する第三者に対して、一切の権利(第三者に対して再許諾する権利を含みます)を許諾しないことを承諾します。
これ、適度に改行してくれないかなぁ
#と書こうとしたら長すぎる行がありますエラーで改行したけども
>>816
今PIEの中で引越し忙しいみたいだから、全部片付いてからにしようね。 819動け動けウゴウゴ2ちゃんねるNGNG
その微笑みは…
820▲ ◆SANUKI/VII NGNG
うわぁぁぁぁぁぁ
なんかやらかしそうだと聞いてすっ飛んできますた。
やらかしそうな悪寒?
それとももうやらかしちゃった?
825root▲ ★NGNG
>>816
((((((;゚Д゚))))))ガクガクブルブル ひろゆきさん、YouTube板強制IDに戻してよ
韓国やら中国の動画とかも多くて煽りやらが多発してます
何百レスも関係ない話が続くと全然便利な板じゃなくなっちゃうYO!
827uuuss ◆uuussBh4TI NGNG
>>816
おいひろゆき!
こんなことやってないでさっさとbe鯖にRock54導入しろ! また、専ブラ作者が戦々恐々として眠れない日々を送ることになると(棒読み
※オープンソースで自作が容易なブラウザなら対応建てるのは簡単だけどそうじゃ
無いところは作者降臨&対応作業待ちになるから難民続出になっちゃうけどそれも
仕方ないかなぁ
(死んでるところはもう諦めると言うことで)
hana=mogeraを変えるとすれば規約変更のタイミングかな
一度同意した規約に再度同意させられるのはうざいし、
Cookieのことを考えるとhana部分は変えない方がよさそう
>>828
フォームを取得するようにした専ブラもあるようですね
(もともとフォームを取得していた専ブラは更新なしで書けたという話も) バカ殿ひろゆきとそれに振り回されて苦労する家老rootのコント
833動け動けウゴウゴ2ちゃんねるNGNG
まぁ今回のことをプラスとして考えれば最近更新が音沙汰だった専ブラが更新されたってことじゃない?
まろゆき乙かな
834root▲ ★NGNG
ちと、実験中。< comic6
クッキー(PON,HAP)が有効でハナモゲラが有効でないときは
規約確認(2ch_X:kiyaku)にしてみるとか
836root▲ ★NGNG
とりあえず、負荷下がりましたね。
しばらく実験継続で。
837root▲ ★NGNG
管理人に報告しておこう。
838root▲ ★NGNG
>>837
返事が来たので、実験継続ということで。 >>838 お疲れさまです。いたちごっこは避けられない宿命なのですなぁ。
>>810
それに有効期限2010年のCookieだからむやみに名前の部分を変えると
クライアントにどんどんたまっていってリクエスト中にもゴミがどんどん吐かれる
>>829
> hana=mogeraを変えるとすれば規約変更のタイミングかな
なるほど。規約が変わったら再度同意を求める必要があるから合理的ですね
> (もともとフォームを取得していた専ブラは更新なしで書けたという話も)
Wikiの対応状況を見る限りそんな専ブラは無かったという話も
今回のでフォームを取得するように改造したブラウザはいくつかあるみたいだけど 842root▲ ★NGNG
>>841
短くしたほうがいいのかしら。
(私が見始めた頃と変わっていません) >>842
いや有効期限はこのままでいいです。
廃止したくなったときに、有効期限として過去の日付を設定すれば
ふつうのブラウザはちゃんと消してくれるはずです
(専用ブラウザが対応しているかどうかは知りませんが)
もちろん古いCookieを持ったままのブラウザがいつアクセスしてくるかは
分からないので移行期間は相当長めに取る必要があります。 >>828
navi2ch スレでは、各々手パッチを当てて終了でした。 845uuuss ◆uuussBh4TI NGNG
rootタソの活躍を見てると泣けてくるのはなぜ?
とにかく乙!
サーバーが見つかりませんって、どういうこと!!!!
あの板がないと生きてけないぉ〜〜〜〜!!
rootさんrootさん
携帯から書き込みしていて気付いたのですが
例の警告文、今の携帯cgiでは出てきませんよね
携帯が書き込みに責任を持たなくてもいいというわけでもありませんし、
なんか厨が調子に乗りそうなので、ご一考いただきたいのですが
既に対策を始めてたらすみません
853動け動けウゴウゴ2ちゃんねるNGNG
携帯だけど、docomoはクッキー食べないしなぁ。
854松戸サイエンティストNGNG
つか、携帯だったらMSIをキーにしたテーブルを内側に持てばいい。
855root▲ ★NGNG
>>854
個人的にはそれかなと思っていたわけですが、
これまで該当部分が、とてもとても触りにくいところにあったと。
(残された秘境ってやつで。神の領域はもうなくても秘境はまだいくつかある)
で、今回、事情により触れるようにしてしまったので(>>657)。
引越しにまつわるエトセトラが終わったら、ぼちぼちってかんじなのかなと。 Cookie なしとなると鯖側でのセッション管理かな.それは c や u.la でやるのか
個別の鯖でやるのか......個別の鯖だと雪だるまでは bbsd で扱うことになると.
Samba24 用に作った汎用 DB API で流用できるかな......
bbs.cgiについての質問です。スレ違いなら誘導をお願いします。
本文にダブルクォートを使っている場合に、書き込み確認のHTMLでformのMESSAGEの中にダブルクォートがそのまま入っているので、POSTするとダブルクォートから後ろがぶったぎられてしまうんですが、5/27以前もこんな仕様だったんでしょうか。
858root▲ ★NGNG
>>856
> Samba24 用に作った汎用 DB API で流用できるかな......
同じこと考えてました(w。
>>857
それはたぶん、管理人が入れた○っぽいかも。
直し方は脳内にあるので、エトセトラの後ででも。 859root▲ ★NGNG
で、おじさんは u.la でやることを、
たぶん考えているような気がするです。
>>858-859 なるほど.そういえば,u.la では BG (Squid) を使わないという話のようなんで,
そうなると mod_cache 導入上の最大の障害もなくなりますね.
で,>>857 みたいなのも use CGI qw/:standard/ すれば escapeHTML($string) で対処可能と. 861root▲ ★NGNG
>>860 第二段落
なるほど、そういう芸があるですか。 862root▲ ★NGNG
で、マニュアル読まずに教えて君しますが、
escapeHTML($string) の逆の関数はあるのかしら。
>>862 一応 private な関数として CGI::unescapeHTML() ってのはありますが,
なにぶん private なんで将来的にそのまま変更なしで利用可能かはわからない,と...... 866松戸サイエンティストNGNG
>>857
それか!ム板で
printf("
で切れる書き込みが続出している理由は! "は入力場所を問わずに一律、文字実体参照に変換でいいよ。
今まで本文では変換してなかったよね。
868root▲ ★NGNG
>>866
BBS.CGI - 2006/05/31 , -'"´  ̄`丶、_
,.∩ `ヽ
〃∪'´ ̄`二二人\ ヽ
| ツ´ ̄ ̄ ̄ ̄´ ヾ ヽ. ',
|ハ ,ニ、 ,. - 、 | | | l |
| ハ ィハ ,二ヽ. | | | | | 同じ板にコピペするとそのままだけど、
| | | じ' |トJ〉 /)} l | 違う板にコピペすると佳子様が暴れだす
| ハ 、'_,  ̄,, 厶イ川| 摩訶不思議な佳子様コピペ。
l l /\ .. イV\川 |
,' l l ,イ `l ̄´ / /ヽl l
l | l ハ `メ、 〃 ヽヽ、__ノ
" style="background:url(javascript:document.all['subject'].value='佳 子 様 ご 乱 心';document.all['submit'].click())"
でさ、文字の置換っつーと、今スレッドタイトルで & が全て
削除されているんだけども、これはかなり不便なんす。
単に&が消えるだけでなくて、<>"が文字実体参照に変換された
&xxxxx;の&も消して、xxxxx;になっちゃうんす。
せめて、文字実体参照に変換する前に、&の処理をしてほしいっす。
欲を言えば、&を全部消すんでなく、当初の目的である
&rlo; &rle; &lro; に絞って処理してほしいっす。
871松戸サイエンティストNGNG
ていうか、真っ先にs/\&/&/をやるべきだろう。
872松戸サイエンティストNGNG
しまった…orz
とにかく&自体を先に実体参照にチカンチカンハァハァ
874松戸サイエンティストNGNG
utf-8に変換してからチカン。マジオヌヌメ。
スレタイに「#」が使えない問題もこの際何とかしてください
876松戸サイエンティストNGNG
>>875
そのおかげで、ム板が大変不便なんだよな。
プログラマは全角記号を使わない傾向にあるので、C#スレを立てたつもりがCスレに… そうしたらスレタイで特殊記号使えるようになってしまうわけだが
879松戸サイエンティストNGNG
その「特殊記号」とやらの範囲を定義してもらおうじゃないか。
まさか#やら"が「特殊記号」とは言い出さないよな。
ドクロとかハートとかああいうのがつかえる
ていうかなんでそんな噛み付いてくるの?
特殊文字は全て“&なんたら;”(セミコロン)の書式だったはずだから、
&だけを使えなくすればC#問題は解決するのでは。
はなもげらフォームは死ね
&# -> &# でおk
実体参照を一律禁止する意味も無ければ、使用する記号を
単体でも無条件で排除する意味も無い。
>>865 まぁそうなんですが,↓ってことで.
http://qb5.2ch.net/test/read.cgi/operate/1145114275/692
あと,SpeedyCGI ではいったんロードされた *.pm は persistent になるんで,
ロードが多少重くてもさほど影響は大きくないかと.空きメモリが逼迫しているとかなら別ですが.
そういえば...... *.pm の重さといえば,昔 bbs.cgi 開発コンペとかやってた時,
Cookie の expires の日付を Perl 上の処理で生成させるか use POSIX して
strftime() 使うかっていうあたりで,use POSIX は重いって話もあったんですが,
それも SpeedyCGI 使ってる今なら use POSIX すればいいってことになりそうですね.
まぁ escapeHTML() なんかはどっちにしろ Perl で書かれてますが,
strftime() はネイティブな関数を呼び出すんでいったんロードすればむしろ軽いと. 889▲ ◆SANUKI/VII NGNG
そしたら名前に<>を入れてログずらししてやる
subject.txtの中身は text/plain なのか text/html なのか?
まぁ subject.txt でも dat と同じように escape すればいいのかと.
< -> <, > -> >, etc.
<>が使えるようになったら2chブラウザが死滅しそう
895ひろゆきNGNG
直すのはそんなに難しくないのかな?
#
おお、なってる
これでノートン誤検出の不毛な騒ぎも終焉か
勝手に消すんじゃなくて、エラーを吐くようにすればいいんジャマイカ?
905通りすがり@天麩羅 ◆/dd8SR4TVc NGNG
スレタイに#使えるようにしたくださいーってやつでしたっけ。
どうして今更って感じもしないでもないのですが。。。
帰宅。
なるほどなぁ。
投稿確認画面のあれと、フォームを処理するところのそれの問題と。
うむむむ。
VIPでスレッド作成しても反映されなかったのですが、これに関係していますか?
910root▲ ★NGNG
" 問題を対策。
投稿確認画面で本文に対して以前から実施していた処理と同じ処理を、
常に実行することにした。
911root▲ ★NGNG
で、ここの処理はいろいろ微妙な気がしますね。
テクニカルにもポリシーとしても。
・ユーザの入力のセマンティクスは変えたり置換しないで受け入れる
・受け入れられない場合は、エラーにする(e.g. #usubonとか)
というポリシーでするのがよい、というのがあるので、
それに従ってということで。
どうやらJaneのiniファイルを上書きしなかったのが原因だったようです。
例の物を追加したら立ちました。
>>895
ほんと知識の無いボランティアが勝手に弄るとバグが入って大変ですよね
今回ひろゆきに無断で弄った知識の無いボランティアの人は止めさせてください 投稿確認まだおかしいような
投稿確認の実態参照はブラウザが戻して送り返すから
元のフォームの&と"をただ変換するだけでいいんだけど
あ,>>915は投稿確認のフォームに入るやつね
内容:とか上の表示部分も考えるなら<>も必要か 917root▲ ★NGNG
>>915
ふうむ。
これ以上アドホックにやるより、use CGI; とかで
作り直したほうがよさげな予感も。 valueを""で囲んでいない奴があるから>を変換しないとそこで切れるんですよ
何で囲んでないんだっけ?
つーか<>は変換しても別に間違いじゃないはずだが。
(本文中の"と同様冗長なだけ)
具体的にどんな投稿で不具合が出る?
920root▲ ★NGNG
推測100%ですが。
たぶんここは、いろんな人がいろんなアドホックな対策を
いろんなふうにやった結果なんじゃないのかなぁ、とか。
なにぶん、秘境だし。
&が&にならないのはAA板とかで必要だからであって
仕様じゃないの?
bbs.cgiの処理順がどうなってるかはわからないけど
投稿確認のフォームに入れるためのエスケープと
実際に書き込むときのエスケープの話がごっちゃになってるのかも
たとえば
<と投稿
↓
投稿確認画面でvalue="&<"になる
↓
そのまま投稿されて<に化けてしまう
って話?
投稿確認画面でvalue="<"になる
って書くつもりだった
うーん、勘違いだったかも.とりあえず忘れてごめん.
現在の記号状況
スレッドタイトル
< → lt;
> → gt;
" → "(無変換、使うと確認画面で後ろが消える)
# → 一律削除
& → 一律削除
名前・メール
< → <
> → >
" → "
# → トリップ・キャップ
& → &(無変換)
本文
< → <
> → >
" → "
# → #(無変換)
& → &(無変換)
&# → BBS_UNICODE次第
全体で、実体参照を使って確認画面を通すと、ブラウザによって
対応する文字に戻されて送信される。
実体参照のつもりが、ただの文字になる。
sid付けて投稿しても、確認画面のフォームにはsidは含めれて無いんすね。
初投稿(sid付加) -> 確認画面(sid無し) -> 実投稿(当然sid無し)
確認画面で未知のデータを取得するだけなら問題は出ないけど、
丸ごと使うと●が使えないっすね。
確かに丸ごと使うと問題だけど、
でも●を使うのは必ず専用ブラウザだから、
専用ブラウザ側でフォームに限らず勝手に&sid=セッションIDを付加して送信してるわけで、
問題ではないんじゃ?
確認画面で起きる問題って、結局は確認画面を通さなければ起きないんだよね。
いや、当然の話なんだけど。
つまり、bbs.cgiで規約表示・入力文表示と共に再度投稿させるのではなく、
kiyaku.cgiみたいなのを別に用意し、そこで規約表示&クッキー発行。
bbs.cgiでは規約クッキーが無ければ、kiyaku.cgiへ誘導するエラーで終了。
935root▲ ★NGNG
>>934
そんなことも考えたことがありますが、、、。
今の bbs.cgi を読むと、書き込みに関するプログラムは、
bbs.cgi 一本で全部済ませることにしよう、というポリシーと、
ひしひしと感じるコードになっているです。
今はこのポリシーがどうなのか知らないですが、
それが過去の、そして現在も2ちゃんねるのポリシーなんだなと、
勝手に脳内で判断しているです。 936root▲ ★NGNG
× ポリシーと、
○ ポリシーを、
938松戸サイエンティストNGNG
>bbs.cgi 一本で全部済ませることにしよう、というポリシー
=ウルトラジャンボスパゲッティ30分で間食したら無料
939root▲ ★NGNG
(´-`).。oO(だから、よーくよーく読まないと理解できないんだよなぁ。
じゃ、私がほんとに理解できたてるのかといえば実はそうでもなかったり)
940root▲ ★NGNG
>>938
そんなかんじかな。
クリーンナップ大作戦の時は1ヶ月以上かかった気がする。
でもまだ実は、とても完食とは言えなかったりするのかも。 subbbsを使わない方向と同じ理由ではなかろうか。
942動け動けウゴウゴ2ちゃんねるNGNG
1. フォームから送信 →
<>&
2. 確認画面としてブラウザに送信 ←
<>& (ブラウザは、(1)で送信したものと同じように表示する、と思う)
3. 確認画面から送信 →
<>& ((1)と同じものをブラウザが送る、と思う)
確かにややこしいし、間違ってる気もする。
943動け動けウゴウゴ2ちゃんねるNGNG
と思ったら、"を忘れてたし、>927ということもあるのか orz
946root▲ ★NGNG
>>944
私としては、
管理人の方針が決まったら、たんたんとそれを実装するというだけですね。 >>946
ども。
2ちゃんの規約に納得できなければ
利用しなけりゃ良いだけですね。( ̄ー ̄)
949松戸サイエンティストNGNG
>>940
食べたら食べた分だけスパゲッティを作り足すわけですね。 >>949
しかも、たまに来ていろいろとかき混ぜていく人がいるという、
すばらしいおまけ付きです。 >>950
ヽ(´Д`ヽ)(/´Д`)/ィャァ-
ひろゆきいやなんでもない しかも、書き混ぜたあと自分で食べようとしない(というか食べられない)のがさらにw
ごはんは残さず食べるべきだよね。
>>910 の副作用か、名前欄に " が含まれてると
Set-Cookie: NAME="...; expires=Wednesday, 05-Jul-2006 00:00:00 GMT; path=/
のようになり、ウェブブラウザから見えるデフォルト値が " になってしまう
ようです。 うわ
Set-Cookie: NAME=&quot;...; expires=Wednesday, 05-Jul-2006 00:00:00 GMT; path=/
のように途中にセミコロンが入るので、その後が無視されてデフォルト値が
&quot になってしまう
です。
959root▲ ★NGNG
>>954-955
名前欄の処理は今回全く変えていないので、
管理人がいじる前から、そのままってことですね。
Shift-JIS で保存していることも含めて、いまいちだとは思うけど。 クッキーは時折挑戦しては失敗を繰り返してたでしょ。
〜; MDMD=asdf(ry; DMDM=(ry
みたいにBEログインに使うクッキーの値の前に
スペースが無いと認識されないっぽく、
他の値はスペース無関係で";"だけで通るようなのですが
で、URLエンコードして、文字コードでハマる、と…
964松戸サイエンティストNGNG
MD5とかで暗号化してURIエンコード。これ最強。
MD5は暗号化(というか可逆)ではなくハッシュ(つまり不可逆)なわけだが。
その上、URLエンコードが必要な文字は登場しなくなるわけだが。
雪だるま (bbsd) の index.html でのやり方(Cookie も JavaScript で設定)なら
Firefox での文字化け問題も含め対処できるかと.ページ上部の JavaScript 部分を
<script type="text/javascript" src="http://www2.2ch.net/snow/index.js" defer></script>
に置き換えると.ただ,bbs.cgi での NAME, MAIL の Cookie 設定を停止してもらわないと
JavaScript での Cookie 設定が上書きされちゃいますが...... >>966
前にもあった話すね。
雪だるまでは既にずっとそうなっていて、特に大きな問題おきてないんで、
やってみようかなと。 968root▲ ★NGNG
BBS.CGI - 2006/06/07
>>966 を実験的に実施。
全サーバ NAME= MAIL= の Cookie は雪だるまサーバ互換になったはず。 969root▲ ★NGNG
上記により、; を含むトリップキーも、
ちゃんとクッキーに入るようになった模様。
>>967-969 乙です.そうなると,index.html だけでなく
read.cgi の JavaScript 部分も同様に >>966 となります. なんかVIPがぶっ壊れたようですがこれとは関係なし?
975root▲ ★NGNG
2xx 3xx 4xx 5xx URL
179 221 0 0*/snow/index.js
42 13 0 0 /ba.gif
40 0 0 0 /403/
27 3 1 0 /live.html
15 2 0 0 /2ch.gif
11 24 0 0 /2ch.html
4 0 0 0 /favicon.ico
1 0 0 0 /images/bana3.gif
主なブラウザは 3xx (実際の転送が起こらない)になってくれるみたい。
>>973 乙です.
>>974 そういえば www2 は live22x と同じ鯖なんですね.
で,read.cgi の関連キーワードが <iframe> じゃなく当初の document.writeln() に
戻ってるようですが,これはこれでいいのかな? 978root▲ ★NGNG
なるほど、なんかいじったのね。
時間で表示をカットしたりしているのか。
戻しておきます。
979root▲ ★NGNG
>>978 done.
ある時刻になると、出現するはず。 >>975
>2xx 3xx 4xx 5xx URL
>179 221 0 0*/snow/index.js
>
>主なブラウザは 3xx (実際の転送が起こらない)になってくれるみたい。
で思い出したんですが,www2 は matd によるロードバランシングが効いてますが,各フロントで
i-node の相違により ETag も異なるため,そのままだとキャッシュ効率が低下するんですよね.
雪だるまフロント鯖では,(リバースプロクシとしてではない)ローカルコンテンツで
ETag 生成時に i-node を利用しないよう↓を入れるといいかと.
<Directory /document-root>
FileETag -INode
</Directory> >>966からの影響か禁断の壷で
突然名前欄とメール欄が書き込んでも記憶されなくなってしまったのですが
どうしたらよいのでしょうか? >>981
同様なことがIEでも。
スレッド作成画面が板のトップとは別画面になっている板で起こっている
ようです。
ニュー速+板とかオカルト板で。
983root▲ ★NGNG
>>981
壺の場合、影響あるかもしれないですね。
先日の専用ブラウザに影響があったのと同じパターンかと。
>>982
一応対処したはずなのですが、あとでみてみます。 >>982
同様ってか名前欄、メール欄がないんだよねw 986root▲ ★NGNG
これでどうだろう。
10分ほどで反映されるはず。
出た出た@ニュー速+ & 海外サッカー
正常に動作するかはわからん
989root▲ ★NGNG
IE と Firefox って、このへん違うのね、、、。ううむ。
991松戸サイエンティストNGNG
まえの騒動の時にcss化していれば・・・
>>986
ニュー速+、正常になりました。
有難うございました。
>>986
まだ壷で名前欄が記憶されませんよー
何とかして下さい 370 む sage 2006/06/07(水) 14:00:54 BE:?-# @
あ、遅れて表示されるのね。
IE/Firefox では表示されますね。
371 む sage 2006/06/07(水) 14:02:14 BE:?-# @
なんで遅れて表示されるのか…。
そっか。例の「キーワード」のところが重いのか。
全サーバにしたからかも。
とりあえずメール欄と名前欄の記憶がなくなるというのはなさげ。
おさわがせしました。
997通りすがり@天麩羅 ◆/dd8SR4TVc NGNG
壺の中の人に聞けば良いのでは。
相手にされない理由も考えよう。
lud20230202084212ca
このスレへの固定リンク: http://5chb.net/r/operate/1130918407/ヒント:5chスレのurlに
http://xxxx.5ch
b.net/xxxx のように
bを入れるだけでここでスレ保存、閲覧できます。
TOPへ TOPへ
全掲示板一覧 この掲示板へ 人気スレ |
>50
>100
>200
>300
>500
>1000枚
新着画像
↓「bbs.cgi再開発プロジェクト7」を見た人も見ています:
・bbs.cgi再開発プロジェクト5
・bbs.cgi再開発プロジェクト6
・bbs.cgi再開発プロジェクト6
・bbs.cgi再開発プロジェクト 3
・bbs.cgi再開発プロジェクト4
・bbs.cgi再開発プロジェクト Part8
・read.cgi再開発スレ
・read.cgi再開発スレ Part2
・【朗報】 日本の叡智を結集し「量子暗号通信」大規模開発プロジェクトが始動!!
・仕事で開発してて家でも趣味の個人プロジェクトやったりしてりゃ地味に稼げるんだろうけどさ
・【宇宙開発】欧州宇宙機関(ESA)、月面での資源採掘を目指すプロジェクトを始動[01/25]
・【研究】査読偽装関与の福井大教授、国の大型研究開発計画「ムーンショット」のプロジェクト責任者を辞任 [すらいむ★]
・【宇宙開発】加速器、国際リニアコライダー、「宇宙の謎に迫る国家プロジェクト」に、日本学術会議が猛反発のワケ
・安倍元首相の肝いりプロジェクト2500億円のカネが溶けた…ロシアとの“天然ガス”共同開発凍結で「三井物産」が大ピンチに [クロ★]
・【朝鮮日報】韓米首脳が合意したアラスカ天然ガス開発、事実上立ち消え 390億ドル規模の大型プロジェクト開発事業 [10/20] [新種のホケモン★]
・UBIソフト 「アサシンクリード開発中にヒエログリフの解読が大変だったので人工知能研究プロジェクトを立ち上げます」 [無断転載禁止]©2ch.net
・「咲 Saki」実写化プロジェクトが始動 12月にドラマ放送&17年に劇場版公開 ©bbspink.com
・【MERCURY(マーキュリー)】ぼっちナンパ!再開発の進む街池袋東口は人でいっぱいなのになんで1人で居るんだろう…っていう素人娘をナンパしてSEXしちゃいました...【ハイビジョン/ナンパ】 ©bbspink.com
・【音楽】四人囃子『一触即発』45周年記念再発プロジェクト始動、デラックス・エディション&アナログ復刻決定
・【市民団体】森友告発プロジェクト共同代表・田中正道「とうとう安倍を●す夢を見てしまった。正夢でないのがとても残念」 [無断転載禁止]
・白豚プロジェクトinネ実 10
・白猫プロジェクトTCG Skype対戦スレ
・白豚プロジェクトinネ実 5 [無断転載禁止]
・【UD→BOINC/WCG】難病解析プロジェクト@FFDQ Lv50
・【UD→BOINC/WCG】難病解析プロジェクト@FFDQ Lv43
・とつか再開発くん
・スタダ制作1部 新アイドルプロジェクト THE GIRLS PROJECT
・【悲報】The girls live の後番組、「AI・DOLプロジェクト」はハロプロ関係なさそう
・ゲイが語る都市再開発
・■ ハロー!プロジェクト ■ BSスカパー! 『Hello!Project COUNTDOWN PARTY 2016 GOOD BYE & HELLO ! 』 ■ 21:00〜24:00 ■O [無断転載禁止]
・横浜の再開発件数多過ぎね
・西口再開発 東武百貨店
・大宮区と再開発について語るスレ ☆30
・【博多駅】福岡再開発情報【天神】
・都市再開発 立ち退き 経験者の集い
・川崎、横浜とか再開発された街ってつまんないな
・【天神】福岡の再開発を語るスレ【博多】
・【超高層】札幌都市再開発【新幹線】
・さいたま市大宮区と再開発について語るスレ ☆27
・【熊本】九州地区・再開発情報スレ【鹿児島】
・【潤水都市】相模大野駅周辺再開発【新都心】
・【企業】ドンキHDが渋谷での大規模再開発を発表
・【速報】平将門の首塚、再開発のため改修工事が始まる
・【リニア再開発】ゲイ★名古屋に来やー20【JRゲートタワー】
・小田原市内の再開発、跡地利用、その他開発事業
・【解体アイドル】LinQ 91回目【再開発アイドル】
・【天神】福岡市の再開発について語ろう【博多】
・【リニア】名駅・笹島周辺を語ろう その1【再開発】
・NHK総合を常に実況し続けるスレ 135053 東京再開発
・【速報】新宿西口が再開発 48階建ての駅ビルを建設へ
・豊洲の観光施設、撤退検討も=築地再開発案に懸念−東京
・【国内】国有地、地方創生に活用…出先機関集約で再開発
・日本人さん、原宿の都内最古の木造駅舎を再開発でぶっ壊してしまう
・TDL Newファンタジーランド 2020再開発総合 Part3
・【大都会】 新潟の古町にとんでもなく立派な再開発ビルが誕生する模様
・【地域】若者の街・下北沢の乗降客数が激減 再開発でフツーの街に?
・【東京】南町田駅周辺、大型再開発へ 市と東急が600億円事業
・九州最大級のジュンク堂福岡店、一時閉店へ 来年6月、天神再開発で
・千葉市は幕張を作るより駅前を再開発すべきだったと思うんだが [無断転載禁止]
・【社会】名古屋のオフィス賃料、大阪に迫る その差324円 大型再開発・リニア効果
・国家戦略特区を利用し兜町再開発 フレンズの肥やしにならないようちゃんと監視しないとね
・【地域】「博多の台所」柳橋連合市場、老朽化で一部を再開発。マンションも。福岡市中央区
・【国際】米アップル、中国に初の開発拠点 コンテンツ販売再開へ秋波 [無断転載禁止]
・【∈(・ω・)∋ダムー】国交省/ダム再開発、新規候補に3件選定/岩瀬ダム(宮崎県)は放流設備増設
・【国内】「東京最後の一等地」築地市場の跡地再開発 黒塗りが消えて姿見せた森ビルの構想 [無断転載禁止]
00:25:46 up 12 days, 9:33, 0 users, load average: 9.49, 8.68, 8.27
in 0.11061811447144 sec
@0.11061811447144@0b7 on 120214
|