bbs.cgi再開発プロジェクト5
レス数が1000を超えています。これ以上書き込みはできません。
peko鯖の稼動によりボトルネックの一つである事がより明らかになった
bbs.cgi作り直しプロジェクトです。
【開発環境の工事現場】
また挑戦。@2ch掲示板 http://dso.2ch.net/myanmar/
また挑戦2。@2ch掲示板 http://dso.2ch.net/yangon/
関連スレなどは >>2-5 くらい J2EE+Struts+Tomcatなら完全フリーだっけ べつにJavaでもPerlでもCでもPythonでも何でもいいんだよ。
習得コストとメンテコストと導入コストのバランスさえ考えれば。
あとJavaを使えって行っている奴は、2chのサーバーがFreeBSDで構築されていることに自覚無いのか?
もしJavaを使うためにLinuxにするとしたら、それなりに管理コストやらOSライセンス代金もかかるぞ。
すべてはバランスなんだよ。 >>8
バランス考えた上での>>8の意見がないな。ただ反発するだけはイクナイ(・A・)
TCO考えるとWindows2003+ASP.NETにしてしまうという手もあり?
お金あればだけど。
Java系は文字コード変換のコストがかかるから
無条件に軽いとは言い切れない面があるし。
bbs.cgiは他の処理が多いからまだしも
read.cgi改良時に「servletに」という意見が出なかったのは
2chがSJISだからというのもある。 確かに、Perl、PHP、以外では文字列処理での不便はあるな。
しかしごりごり書いてしまうと言う荒技もある。
Cでとかならそれでもさほどコストに見えないほどの速さの開きもあるし。
あと定量的なデータとしてちょっと経路が違うけどTPC-Wベンチマークのの価格性能比一覧。
ttp://www.tpc.org/tpcw/results/tpcw_price_perf_results.asp
Windowsの独壇場だけど、Linux、FreeBSDでチューニングを極めてる企業がないせいもあるかも。 alarm() のかわりに poll() を使うらしいです。
あとは夜までアクセスできない模様。 そもそもbbs.cgiがCでもなくPerlな理由って、
管理人がいじれなくなるからだったと思う。 その管理人って具体的に誰だろう。FOX氏はPerlも文法知らないと言ってたし。 2chの管理人は‘永遠の19歳’西村博之です。
管理人がPerlを知っていたとしても、もやは複雑すぎて
ほとんど弄れないレベルになっていると思うけど。 ひろゆきはCも分かる予感。read.cgiいじってるし。
メンテナンスの容易さ、いじれる人の多さが理由じゃないすかね。 いじれる人の多さならJavaも多いと思うけど(★持ちではどうだかしらんけど)、上を見るにFreeBSDってJVM提供されてないのかー。 理想はC版でかつ共通部分をapacheモジュール化。
かといって2ch運営陣にそこまでやろうとする人的リソースが足りないけと。 実家にて会社に来てるメールを吸い上げ中、、、。
Apacheモジュールにすると、暴走した時にやです(歯止めがきかないから)。
mod_speedycgiにした時にそう思いました。
もちろん、暴走しないように組めばいいわけですが。
あとモジュールにすると、SuExec環境と仲悪いしね。
今のやり方(SpeedyCGI)は、決して悪くないと思うですよ。 >>20
確かに現状を鑑みると十分そうですね。
まだまだチューン必要ですけど dsoは究極の形だとおもうぞ
dinamic shared object に惚れました。 banana229(that3/book3/travel2/bubble2) 完 banana274(qb5/qb6/science3/academy3) 完 _ ∩
( ゚∀゚)彡 FOX ★!FOX ★!
⊂彡 FreeBSDでもJava動くぞ。
ネイティブでな。
Linuxとの比較ならまだしも全否定か・・・
とりあえずJAVAの方が読み易いのは確かかと。
Perlは他人のソース見たくない。
8だけど、バランスを考えた上で選択するのならPerl(mod_perl)じゃないの。
Cでゴリゴリ書いても、コーディングスキルがない人が書いたCはそんなに速くないよ。
普通のスキルの人が書いたPerlのほうが安定している。
個人的にはmod_pythonもオススメしたいが、ひろゆきがpython学ぶつもりがあるかどうかに左右されるかも。 >46
Perlのソースがどうしても読みにくいというのは否定しないけど。
Perl5.6以降のOOPな書き方をちゃんとすればそれほど読みにくくないと思うよ。
PerlからJavaとかPythonに移るぐらいならC++とかにいくと思うぞ。
マシン負荷を考えたらだけど。 言語がドウコウという話はどうでもよく...
常駐化されIF部・コアロジック・バックエンドDBの形になればよろしいかと。
理想を言うとHTMLブラウザ用IF以外にビュアー用のIFが欲しい。
今のビュアーはグチャグチャな仕様に対応するための例外対応や場当たりな対応が多すぎる。
>>51
JavaのStrutsのMVCモデルなら、
>常駐化されIF部・コアロジック・バックエンドDBの形になればよろしいかと。
...はすべて満たされるかと。
>理想を言うとHTMLブラウザ用IF以外にビュアー用のIFが欲しい。
これは設計次第と解釈。
そんな状態ならPerlで続投するにしても早いうちに設計見直し必要ではないかな。 >>52
>>ネイティブでな。
>詳しく。w
FreeBSDがもっているLinuxバイナリ互換機能を使用したLinux版JREの実行ではなく
FreeBSD用のJREがあると言っているだけでは?
昔はLinux版を互換機能(エミュ)で動かしていたが今はFreeBSDネイティブな
javaコマンドが在る。
誰もjavaで書かれたユーザアプリがフルネイティブコンパイルされるとは言って
いないと思うが・・・ >>54
ああ了解。そういう事情があったのですか。 あ、でも、FreeBSD用のWASってあるのかな?TomcatをコンパイルすればOK? >>53
Strutsかどうかは気が早いような気もするが、Javaなら(というかJ2EEなら)
できるには同意。
エンタープライズを想定したプラットホームだから。
商用SWは無理だろうから、雄猫とDB(FireBird?ポスグレ?mySQL?)が耐えられるように
してあげる必要は在るかも。
>>56
残念ながらWASはFreeBSD上ではサポートされません。(頑張ればLinux互換機能で*動く*かも)
とりあえず雄猫かと。コストかかんないし。
それにしてもWASで通じている人が何人いるのか心配(w
# IBM WebSphere Application Server
>>58
いや、WAS= Web Application Server では?WebShpereとは限らない。
今回EJBはいらんのでWASの話は大げさかもだけど。
わたしは「雄猫」ってのがわかりません。_| ̄|○
もしかしてTomcatのことかな。 Practical mod_perl
http://modperlbook.org/
CCライセンスで公開されている。 banana241(news15,news16,news17) 完 これで bbs.cgi はSpeedyCGIのものに統一されました。
(superfreeを除く、sakubbs.cgiを除く)
関係者の皆様方 よろしくです >>84
今日は記念日すか。
なに記念日にしますかね。 あなたが記念日にしようと言ったから 今日は記念日記念日 クリスマスはキリストの誕生日以外に
本来冬、至の記念日が起源だとか、どこかで聞いた希ガス そういやキリストの真の誕生日は7月って説があったな
聖書の記述から推理するとそうなるらしい bbs.cgi が吐くRockのログ Rock54-104-12-21.txt のフォーマットがおかしくなってるみたいなんですけどー
Rockは効いてるのに
http://halcyan.30.kg/klist/list.php?filepattern=-12-21&kwd_sv=&kwd_host=
が04/12/21 17:42:41 から更新されなくなりましたー
ご確認お願いしますー うお、はやっ
実験してみて報告しますー
反映まで10分くらいかかるかもですー >>59
マジレスすると今はTomcat等をアプリケーションサーバとは呼ばないのです。
J2EEが出て少し経ったころに「コンテナ」と呼ぶようにSunから御触れが出ました。
Servletコンテナとか、EJBコンテナとか、J2EEコンテナとか。
正式な呼び方は忘れてしまいましたが一般的にこんな感じで呼ばれてます。
雄猫はTomcatの愛(?)称です。
英語のドキュメント翻訳すると雄猫ってなるので。
質問・雑談スレ86@運用情報板
http://qb5.2ch.net/test/read.cgi/operate/1103460767/578
こういうのをある程度防ぐために、以下の手法がよく使われていますが、
さて、どうしましょうかね。
1)gethostbyaddr()して得た名前
(いわゆるリモホ、今まではそのまま信用)に対してgethostbyname()する
# そもそも引けなかった時(生IPアドレス)は、gethostbyname()しても意味がないので注意
2)得られたIPアドレス群(gethostbyname()で得られるIPアドレスは一つとは限らない)に
最初のIPアドレスが含まれているか調べる
3-1)IPアドレスが含まれていれば
1)の結果を信用する
3-2)含まれていなければ
1)は偽装とみなし、逆引きできなかったことにする ログ記録(BBXとかBBQとかも)で不都合がないのであれば
そのままでもいいんでないかと。
いちいち参照するのは無駄なような気がするです。
と、中身もよくわからずに書いてみる。 リモホは参考程度でいいんでないすか?
結局はIPで作業するわけで、、
3回作業コストかけるのはもったいないような。。 >>108
ふむ。了解。
元のIPアドレスが内部的に記録されるんであれば、それで十分と。 もしくは、fusianasanのときにIPも出すようにするとか。 IP「も」ってことね、
やってみるかな、
問題があるとすれば名前欄の長さ制限かな? X_FORWARDED_FOR(だよね?)を使うのをやめるとか。 fusiana の時だけ特例で「ちょっと」のばすとか・・・
>>113
あー、それはいいかも。
現状でも長いホスト名の人だとfusianasanができないこともわりとあるし。 fushianasanのIP(0.0.0.0)化ですか。
hostname知りたい人は各自でgetbyhostnameとかしてください。と。
いいんじゃないですかね。 >>115
生IPアドレス「も」出すってことなのではないかと。(>>111) っ▲
(゚〜゚)モグモグ
IP付きふしあなて名前欄じゃなきゃだめなん? そういや mokorikomo はどうなったの?あれの復活だめなの? お題「SpeedyCGI(Perl)でタイムアウトはどう捕まえるの?」 bbs.cgi のバージョン表記(各板のindex.html下部)に
SpeedyCGI=yes と表示したのは大失敗だった。
ぐーぐるに大量に引っかかる〜 世界中でさがしたら ロシア語ばっかり引っかかるし
途方にくれてきたぞ、 表示設定をクリックするのだ。
(クリスマスじゃなくてHappy Holiday なんだなー。) > root ★さん
timeout の処理の実験するとき
たとえば bbs.2ch.net. のかわりに適当に
BBB.2ch.net. なんてのを使えばいいですかねぇ >>133
それだと、すぐに結果が返っちゃうですね(ないよ、と言って)。
タイムアウトするようにするには、ひとつ子供のゾーンを切らないとだめです。
peko.2ch.netの下にわざとタイムアウトするドメイン名をひとつ作りますので、
それを使ってくださいです。 timeout.peko.2ch.net ってのを作りました。
ここの配下は必ずタイムアウトします。
bbs.2ch.net のかわりに、timeout.peko.2ch.net をつけて
gethostbyname() するようにしてください。 timeout が timeout しないような。。。 と 思ったら
このスレでテストしていた。
ぎゃふん >>140
このコマンドどうなります?
dig -t a a.b.c.d.timeout.peko.2ch.net. In start_perl, use a poll() timeout instead of an alarm to implement the timeout
while waiting for an accept. It's cleaner than a signal.
らしいんだが、Perlでpoll() ってどうやって使うんだ? poll() っていうぐらいで、select() のように fd ベースでやる時に使うのかな。
とすると、gethostbyname() の待ちには使えないのかな。
んでは、どうすべきか。 待ちじゃなくて、タイムアウトでの抜け出しと。
今こうやっててうまく動かない、ってのを、
まずは書き出してみるといいのかも。 で、こういったalarm()を使う手法がSpeedyCGI配下では使えないとすると、、、さて、どうすべか。
ってことですね。 >>147
いろいろ読んでみたけど
どうもそのようなんです < fd >>153
サザンさんバージョンですね。
この手法が使えないとすると、、、。
どうやるんだろう。
$SIG{ALRM} = \&timeout;
のところの指定を、SpeedyCGI 流にしないといかんのだろうか。
わたしは斜めにしか理解してないけど、例のグローバルバリュー問題とか。
まとはずれだったらごめんなさい。 IO::POll はいわゆるハンドルだったら使えるみたい
たとえば IO::Socket で作ったオブジェクトのハンドル
もちろん IO::File で作ったファイルハンドル
IO::Socket でオブジェクト作って getHostbyName と等価なことできないのかしらん? >>154
たぶんシグナルは発生するんだと思うけど、、、
SpeedyCGI配下では伝わってこないんだと思う(推測)
よって捕まえることはできない、、
もしくは eval がどのようにコンパイルされているのかとか、 http://www.net-dns.org/docs/
http://www.net-dns.org/docs/Net/DNS.html
で、該当名のAレコードがあるかどうかというのが、
gethostbyname() と等価ですね。
tigerには入れてあるけど、bananaはどうかな。
ちょっとみてきます。 qb6には入ってますね。
たぶん、全banana/tiger/cobraで使えるでしょう。< Net::DNS Net::DNS あたりは
あらかじめタイムアウトの設定が入っているのかな?
そんな気がするが、 で、、、Net::DNS って、いわゆる Dynamic update にも対応してるから、
クライアント側からサーバ側へのダイナミックな登録
(例えばbbs.cgiからのダイナミックなDNS DBへの登録)とかも、できるはずですね。
もちろんその場合、サーバ側がDynamic Updateに対応している必要があります。 ここのサンプル見ると、入っているように見えますね。
http://www.net-dns.org/docs/Net/DNS.html
つか、まさにこれ?
Send a background query and use select to determine when the answer has arrived.
use Net::DNS;
use IO::Select;
my $timeout = 5;
my $res = Net::DNS::Resolver->new;
my $bgsock = $res->bgsend("host.example.com");
my $sel = IO::Select->new($bgsock);
# Add more sockets to $sel if desired.
my @ready = $sel->can_read($timeout);
if (@ready) {
foreach my $sock (@ready) {
if ($sock == $bgsock) {
my $packet = $res->bgread($bgsock);
$packet->print;
$bgsock = undef;
}
# Check for the other sockets.
$sel->remove($sock);
$sock = undef;
}
} else {
warn "timed out after $timeout seconds\n";
} もう、わたし限界っす。
Net::DNS使う方針なら、たぶんかなりエレガントに書けるですね。
あとはマニュアル・ドキュメントを読んでいただけると、うれしいっす。
というか、こういうモジュールを柔軟に使えるのも、PIEに移ったおかげかもですね。 tcp_timeout
print 'TCP timeout: ', $res->tcp_timeout, "\n";
$res->tcp_timeout(10);
Get or set the TCP timeout in seconds. A timeout of undef means indefinite. The default is 120 seconds (2 minutes).
udp_timeout >>164
通常のDNSの場合UDP使っているので、UDPのタイムアウトも指定する必要ありです。
というかたぶん、>>162 の例をアレンジする方針がよさげ?
おやすみです。 >>166
はい、了解です。
でもなんか、糸口がつかめそうな予感。
banana238ですが、
live8 に激しく来た時もバッファ溢れしなかったし、
思い切ってバッファでかくしたのは、効果あったかも。
なにせCPUもディスクも遊んでいるから、もうちょっとあがいてみたいなと。 その1
これでうまく行った
use Net::DNS;
my $res = Net::DNS::Resolver->new;
$res->tcp_timeout(1);
$res->udp_timeout(1);
my $ans = $res->query($BHOST);
tcp/udp の timeout をそれぞれ 1(sec) にした。
0だとどうかなと思ってやってみたら、だめだった。
もっと短くする方法は無いものか 専用のサブルーチンを作った
sub foxDNSquery
{
my ($host) = @_;
use Net::DNS;
my $res = Net::DNS::Resolver->new;
$res->tcp_timeout(1);
$res->udp_timeout(1);
$res->retry(1);
my $ans = $res->query($host);
#we don't need answer.
}
新スレ立ったとき
my $AHOST = "$GB->{NEWTHREAD}.$GB->{FORM}->{'bbs'}.$ENV{'SERVER_NAME'}.bby.2ch.net.";
&foxDNSquery($AHOST);
全ての投稿(成功時)
my $BYTES = length($GB->{FORM}->{'MESSAGE'});
#my $BHOST = "$GB->{NOWTIME}.$$.$ENV{'REMOTE_ADDR'}.$GB->{NEWTHREAD}.$BYTES.$GB->{FORM}->{'key'}.$GB->{FORM}->{'bbs'}.$ENV{'SERVER_NAME'}.bbs.timeout.peko.2ch.net.";
my $BHOST = "$GB->{NOWTIME}.$$.$ENV{'REMOTE_ADDR'}.$GB->{NEWTHREAD}.$BYTES.$GB->{FORM}->{'key'}.$GB->{FORM}->{'bbs'}.$ENV{'SERVER_NAME'}.bbs.bbs.2ch.net.";
&foxDNSquery($BHOST);
配布完了。
とくに苦情が無ければ BBS , BBY を落として
ちゃんとタイムアウトするかの実験が可能でーす > root ★さん おふろ入ったら、ちょっと目がさめちゃった。
でももうねるる。
>>170
$res->bgsend って、どうなんだろう。
http://www.net-dns.org/docs/Net/DNS/Resolver.html まずは、DNS queryがちゃんと出てるか、サーバのほうを見てきます(w。 BBS/BBYにはquery来ている模様です。
BBQとBBMはまだ元の状態ですか。 んじゃ、BBSを落としてみるかな。
これ書いたら、BBS止めます。 おおっ
>>181
BBQ,BBM 等答えが要る系はもちっと勉強してからになるです、、 >>186
なるほど、Net::DNS::Packetの解析方法すね。
ちょっぴりDNSの知識が必要すね。でもそんなに難しくないです。 一回タイムアウト検出したら
その船からは二度と聞きに行かないという実装もありかもかも >>189
二度と、はつらいかな。
しばらくの間、ってのがよさげ。
で、Net::DNS::Packetのやり方をちょっと書いておくです。 #we don't need any answer.
だったっすね、
>>177
The program must なんたらが気になるっす #! /usr/bin/perl
use Net::DNS;
my $res = Net::DNS::Resolver->new;
my $ans = $res->query('2ch.net');
@answer = $ans->answer;
print "address = ", $answer[0]->address, "\n";
BBQやBBMは、このパターンでOKかと。
というか、Perlぜんぜんわかんないんで、超みようみまね。 で、undefだったらBBQやBBMにはひっかかってなくて、
127.0.0.1だったらひっかかってる、って判定すればいいはず。 はいはーい
明日以降挑戦してみるです、
それにしてもPerlの達人が居ればねぇ たしかに、、、。
で、DNSのことは少しは知っているので、ちょっとやってみた。
なるほど、数はこうやってとればいいのね。
(c.2ch.netはアドレス2つ)
#! /usr/bin/perl
use Net::DNS;
my $res = Net::DNS::Resolver->new;
my $ans = $res->query('c.2ch.net');
@answer = $ans->answer;
print "count = ", $ans->header->ancount, "\n";
print "address = ", $answer[0]->address, "\n";
print "address = ", $answer[1]->address, "\n"; ということで、
undefになった場合 または undefじゃなくても、ans->header->ancountが0の場合
は、BBQ/BBMにひっかかってないとみなし、
ans->header->ancountが1以上で、配列の中身が127.0.0.2なら
BBQ/BBMにひっかかっているとみなせばいいのか。
ここまでわかれば、あとはFOXさんならすぐできるんじゃないかなと思います。
んでは、あとは明日にでも。 すごく乗り遅れ?(泪)
では風呂入りますm(_ _)m 現在こんな感じ
use Net::DNS;
my $res = Net::DNS::Resolver->new;
$res->tcp_timeout(1);
$res->udp_timeout(1);
$res->retry(1);
my $query = $res->query($host);
my $adr = "ANS =";
if($query)
{
my @ans = $query->answer;
foreach(@ans)
{
$adr .= $_->address;
}
}
else
{
return "127.0.0.0";
}
my $query = $res->query($host);
の答えは Net::DNS::Packet でその中のanserが配列になっている模様。
my @ans = $query->answer;
foreach(@ans)
{
$adr .= $_->address;
}
これは一個しかないという決めうちでコード書いたらまずい?
複数個あるならどれを見ればいいの? よさげな気がするです。
で、127.0.0.2なら焼かれてて、127.0.0.0なら焼かれてないってかんじですか。 >>204
BBQ/BBMでは、Aレコード(IPアドレス)は1個しかないので、きめうちでOKです。
(DBをそういうふうに作っています) BBQ / BBM / BBX は同様の処理にしてみた @myamer BBXも1個しかAないので、同じ仕様でいいはずです。
で、みゃんまーでやればいいのかしら。
まず、
・正しく効くか
・配布してみてから→落としてみて、ブロックしないか
でいいのかな。 BBXはちゃんと動いてるですね。< みゃんまー
BBMは、どうすべ。 今日の深夜
全サーバにこのbbs.cgiを配布してみよう、
そして BBQ/BBM/BBX 止めてテスト
今後は、さらにタイムアウトを縮めることへの挑戦か?
現在は
$res->tcp_timeout(1);
$res->udp_timeout(1);
$res->retry(1);
で、たぶん一秒は待つ予感。
どうやったら縮められるの? 回り回ってselect(2)を呼んでいるみたいなので小数が使えないのかな?@timoutの値
モジュールを追っていくと、、、
Net::DNS
↓
IO::Socket
↓
IO::Select
↓
select(2)
ですので・・・ BBM/BBQ/BBX/BBY/BBS ともに一回タイムアウトしたら
そのプロセスが常駐している間(最大10分)は、DNSクエリ処理をスキップするようにした。 BBS/BBY って何が帰ってくるのかしら?
無条件に 127.0.0.2 ? うっ
なるほど
my $query = $res->query($host);
if($query)
でタイムアウトと区別するにはどうしたらいいのかしら?
BBS は my $query = $res->query($host);
したとき
1) タイムアウト時
2) 正常終了時
ともに $query が無いようです。
んで区別がつかないのだ。 >>223
answerを見ればいいはず。
しらべるのでちょっとまってください。 $query がないから
$query->answer; が見れない予感 おっ
$res->errorstring に qyery timed out または MXDOMAIN だかが入っている res_queryはだめだけど、res_sendつかえばOKですね。
#! /usr/bin/perl
use Net::DNS;
my $res = Net::DNS::Resolver->new;
my $ans = $res->send('2ch.net');
print "rcode = ", $ans->header->rcode, "\n";
my $ans = $res->send('notexist.2ch.net');
print "rcode = ", $ans->header->rcode, "\n"; >>228
あ、それでもOKです。
NXDOMAINが成功(で不存在)、query time outなのはタイムアウト。 改修
sub foxDNSquery
{
my ($host) = @_;
$host .= "bbs.timeout.peko.2ch.net.";
use Net::DNS;
my $res = Net::DNS::Resolver->new;
$res->tcp_timeout(1);
$res->udp_timeout(1);
$res->retry(1);
my $query = $res->query($host);
if($res->errorstring eq 'query timed out') {return 0;}
return 1;
} 呼び出し側
if($FOX->{BBS}){$FOX->{BBS} = &foxDNSquery($BHOST);}
>>231-232
つまり、タイムアウトしたら0で、
普通に動いているときは1と。 例の「不存在」と「タイムアウト」問題っすね。
不存在はBBQ的には「登録なし」ってやつなんで。 127.0.0.2 登録あり(焼かれてる)
NXDOMAIN 登録なし(焼かれてない)
タイムアウト
の3つですね。BBM/BBXも同じ。 改修
sub foxDNSquery2
{
my ($host) = @_;
#$host .= "bbs.timeout.peko.2ch.net.";
use Net::DNS;
my $res = Net::DNS::Resolver->new;
$res->tcp_timeout(1);
$res->udp_timeout(1);
$res->retry(1);
my $query = $res->query($host);
if($query)
{
my @ans = $query->answer;
foreach(@ans)
{
return $_->address;
}
}
if($res->errorstring eq 'query timed out') {return "127.0.0.0";}
return "127.0.0.1";
} if($SPAM eq "127.0.0.0"){$FOX->{BBQ} = 0;}
こんなコード呼び出し側に入っています >>243
これは、
アドレスがあればそのアドレスを返す
アドレスがなくてタイムアウトなら127.0.0.0を返す
そうでなかったら127.0.0.1を返す
という動き? そーですー
呼び出し側では
127.0.0.2
127.0.0.0
だけしか見ていません >>246
127.0.0.2 => BB{Q,X,M} 登録済み
127.0.0.0 => 各DNSに異常発生
というかんじですか。
で、BB{Q,X,M}はそれぞれ別のDNSサーバなので、bbs.cgi側では、
例えばBBQの異常を検知したら、BBQ*だけ*10分停止、
というのがよさげです。 そのようになっています。
$FOX->{BBM} = 1;
$FOX->{BBQ} = 1;
$FOX->{BBX} = 1;
$FOX->{BBY} = 1;
$FOX->{BBS} = 1; 了解です。
最悪はdnscacheがあぼーんすることですが、
そのときは、、、gethostbyaddr() が詰まっちゃうのか。 >>250
そっすね。
でもこれで、そうとうよくなった予感がするですよ。 というか、そこは実装しないで
dnscacheをことん強化が本筋かと、 >>252
そですね。例の計画(RAID1で強化+Anycast装備)いきます。
そういえばRAID1カードのインストール、どうなってるのかしら。 >>253
BBxを止める実験ができるようになった、ということでOK? dnscache が timeout だったら書けないという仕様にするです bbs.cgi
qb5&★ だけ書ける様にして BBQを止める実験、やってみますか。
で、うまくいくなら、続いてBBSを止める実験。
BBYはスレ立てしないといけないので、みゃんまーで。
BBMは携帯で書かないとだめだから、FOXさんに携帯で書いてもらおう。
(私H"とPALDIOしか持ってないです)
BBXは例によって、禁止フレーズをみゃんまーで。
では、順番にいきます。 いいかんじ。
これからBBS動かして、BBY止めます。 >>264 みると、BBXが止まっています、って出るから、正常かな。 でもまだBBM止めてないのに、BBMが止まってるってたまに出るなぁ。 うへー。例のバッファフルがいっぱい。
BBSと同じ対策打ってきます。< BBM
%netstat -s -p udp
udp:
15773031 datagrams received
0 with incomplete header
0 with bad data length field
0 with bad checksum
1 with no checksum
50 dropped due to no socket
2 broadcast/multicast datagrams dropped due to no socket
126085 dropped due to full socket buffers
0 not for hashed pcb
15646894 delivered
15647283 datagrams output 対策打ちました(対策後は今日のラッシュ時もBBSのバッファフルなし)。
あとはBBMか。これからとめます。とめたらおしらせします。 BBMとめました。
携帯からどなたかカキコしていただけると。 dnscacheのログみた。BBMにはqueryはそれなりに出てるみたい。
ブロックしてないかの確認ができれば、OKですが、、、。 morningcoffeeの板トップ見てると、たまに止まってないのに「止まっています」って出ることがあるですね。
1秒だと、短すぎ?
それともたまにリトライしてる?
でもブロックはしたくないから、もろはの刃なのかな。 >>276
新規に立ち上がったbbs.cgiは一回は聞きにいくですから
>>278
どうでしょうねぇ
>>279
時間での切腹機能入れていないから
何時までもだらだら残るのかも(特に暇なサーバは) ex7のspeedy_backendをいったん全部killした。
そしたら、BBMが止まっています、は消えたです。 これで、BB?系のDNS側の実験は終了しました。
また一歩、進歩したですね。すばらしいっす。 #!/usr/local/bin/speedy -- -M32 -b1048576
に -t600 っていれたら 10分?
#!/usr/local/bin/speedy -- -M32 -b1048576 -t600 >>284
10分*全く何も受け取らない*と、自爆しますね。
一番あれなのは、ぽろ、ぽろ、って来る場合かと。 また今度実験してミルです < -t option の効果&弊害 デフォルトでは500回リクエストを受け取ると、自爆します。
(-r500)
-tは3600がデフォルトですね。
つまり、
・500回人を乗せた
・1時間誰も乗らなかった
場合に、自爆すると。 もう知っているかもですが、Perl内から自爆命令を出すこともできます。
・shutdown_now
perlインタープリタを即座にシャットダウンします。この関数は戻ってきません。
$sp->shutdown_now
・shutdown_next_time
perlインタープリタを、このリクエストが終了したらすぐにシャットダウンします。
$sp->shutdown_next_time ふと思ったんですが、
今はsubback.htmlを毎回bbs.cgiで作成してるんですよね?
subback.htmlへのリクエストは、subject.txtの更新頻度よりずっと少ないと思うので
もしかしたら、subback.cgiを作成してmod_rewriteを使うとか
あるいはmod_subbackを作成して組み込むとかの方が
鯖に優しいのではないでしょうか。
呼ばれる度にsubject.txtとSETTING.TXT(こちらは後者ならキャッシュも可能)を
読み込む必要がありますが、bbs.cgiでのディスク書き込みを少しは減らせるので。
後者の方法もそんなに難しくないと思いますが、前者なら非常に簡単だと思いますし。 うーむ。
伝説の機能の!preはPC系だけでいいから実装してほしいなあ。 今日のlive8/live16ともえらい軽かった(伸びが良かった)です。
今までは2ブレーメンぐらいでかなりつらそうだったけど、
今は3ブレーメンぐらいでもかなり平気みたい。 >>292
転送量対策でread.cgiが余分なスペースを全部削ってしまうからなぁ……。 >>297
いえ、read.cgiがdatを読み出すときに。
datには書きこんだとおりのままスペースが保存されてます。 なるほど、、、
今回 read.cgi 書き直すから、その処理はなくなる予定だったりするです 書き直すついでに書きこみ欄をrows=20 cols=80ぐらいに
広げてくれないかなー、、とつぶやいてみる。
たまにIE使ったりすると狭くて、、 BB? については、連続して3回失敗した時とかにはじめて、
「止まっている」とみなすようにしたほうが、いいのかもしんないですね。 スレッドランキングさんのところと比較してると、
BBSが平均的に5〜10%くらいカウントミスってる感じですね、、
初期化時に $FOX->{BBS} = 3; くらいにして、
異常を検知した時は --$$FOX->{BBS} くらいにする、とかって考えたけど、
(これだと連続ではない3回検知で、になるかな、) 1bit左にシフトして+1するとか。@== 7 で3回目検知、スルーできたら1bit目をクリアするとか >>305
ふむ。
根本的なところ = 失敗をなくす方向
だとすると、どうするのがいいのか。
やはり、しくみの変更なのか。
でもDNSでやるしくみ+ノンブロッキングでquery、ってのは、
コスト低いし、筋がいい気がするんですけどね。 無反応の場合はネガティヴキャッシュで解決しないの?
>>307
それがですね、、、BBSの場合、毎回queryするものが違うんですよ。
つまり、キャッシュは効かない、というか、効かせていないのです。
キャッシュが効いちゃったら、正しいカウントができないんで。
というか、そうか、、、。Net::DNSって、聞きに行くDNSサーバを指定できたような。
だったら、工数のかかる再帰検索かけなくても、ダイレクトにBBSのサーバ指定できるかも。
ちょっと、考えてみます。
DNSキャッシュサーバ側のコストを、下げられるかもしんない。 質問 質問
1) BBS の現在の問題点は、コール数が多いために数えられないことがある。
2) そもそもコール数が少なくても数え落しが発生するしくみである。
どっちなんでしょか? >>309
まさにそれを究明しようってのが、>>308 で浮かんだ試みです。
DNSはご存知のように再帰検索(DNSキャッシュサーバがツリーをたどる)をします。
これは場合により、コストがかかる場合があります。
もちろん、DNSはキャッシュがうまく効くので、かなりの場合はキャッシュサーバに
データが蓄えられ、全部のツリーを再帰検索はしなくてもすむ場合がほとんどです。
でも、BBSやBBYの場合は必ず「ないよ」という応答になるので、
キャッシュサーバ側で、それなりに処理の時間がかかるわけです。
つまり、コストが割と高い。
でもBBSとかの場合は「きめうち」で決まったホストに伝わりさえすればいいので、
いわゆる通常の再帰検索は、しなくていいはずなのです。
具体的には、a.ns.bbs.2ch.net にダイレクトにDNSクエリを出せさえすればよい。
再帰検索要求も、必要ないわけです。
で、Net::DNSでは、これができるはずだと。
少し手がすいたら「こういうふうに組んでいただけますか」というのを
ここに書きますので、それを組み込んで実験をしてみたいなと。 http://www.net-dns.org/docs/Net/DNS/Resolver.html
nameservers
@nameservers = $res->nameservers;
$res->nameservers('192.168.1.1', '192.168.2.2', '192.168.3.3');
Gets or sets the nameservers to be queried.
これを指定すればいいのか? recurse
print 'recursion flag: ', $res->recurse, "\n";
$res->recurse(0);
Get or set the recursion flag. If this is true, nameservers will be requested to perform a recursive query. The default is true.
これも関係ある? >>313-314
まさにそれっすね。
再帰止めて(>>314)、BB?の用途に応じてそのサーバに直接query出すと。 こんなかんじでいいみたい。
#! /usr/bin/perl
use Net::DNS;
my $res = Net::DNS::Resolver->new;
# specify bbs.2ch.net server
$res->nameservers('206.223.147.35');
# turn off recurse query
$res->recurse(0);
my $ans = $res->send('a.b.c.bbs.2ch.net'); これで、DNSキャッシュサーバを経由せずに、
直接データを持っているDNSコンテンツサーバにDNS問い合わせをするようになります。
BBSとBBYは戻りの結果を利用しないし、
ローカル側でデータのキャッシュが効く必要がまったくない(というか邪魔)ので、
この形にするのがよいですね。
その分レスポンスがよくなるし、DNSキャッシュサーバの負荷も減少します。
BBQ/BBX/BBMは通常通りにキャッシュが効いたほうがいいので、
これまで通りのパターンの方がよさげです。 ホスト名書いても許されるみたい。
BBS
$res->nameservers('a.ns.bbs.2ch.net');
BBY
$res->nameservers('a.ns.bby.2ch.net');
で、いけそう。 IPアドレスで指定するなら、これかな。
BBS
206.223.147.35
BBY
206.223.147.36 しばしば暴走しているのは、どうもsubbbs.cgiの模様。 subbbs.cgiってもう使われてないですよね? subbbs.cgi って良く知らないんです。
詳しい人いないかな? 昔は投稿確認に使われていた。
今は全てbbs.cgiでやっている。
ってんじゃなかったか。 subbbs.cgiを書き替えて見るとか
「subbbs.cgiは使用できなくなりました。」
とか いいんだろか?
暴走するって、たとえばどうなる出素か? >>320 BBY/BBS 用のらっぱ
sub foxDNSquery
{
my ($host,$nameserver) = @_;
#$host .= "bbs.timeout.peko.2ch.net.";
use Net::DNS;
my $res = Net::DNS::Resolver->new;
$res->tcp_timeout(1);
$res->udp_timeout(1);
$res->retry(1);
$res->recurse(0);# turn off recurse query
$res->nameservers($nameserver);
my $query = $res->query($host);
if($res->errorstring eq 'query timed out') {return 0;}
return 1;
} http://stats.2ch.net/suzume.cgi を見る限りカウントはされているようだ < BBS
果たして数え落しがなくなるか、 果てしなく0に近づくか、、、 いや、
SUBBBS_CGI_ON=1 だと、スレ立て時に確認画面(bbs.cgi)が出て、
ボタン押すともう一回確認画面(subbbs.cgi)が出て、
ボタン押すともう一回確認画面(bbs.cgi)が出て、
ボタン押すとスレ立てできる。
確認はするとしても一回で良いだろうし、bbs.cgiで足りてるね。 >335
うほ、いきなり実験ですか(汗
トラブルあった場合人なだれ込んでくるからすぐにわかるでしょうけどw SpeedyCGIって、ソケットを使ったりしても大丈夫なんすかね? 昨日、スレ立てしようとして何も入力していないのに
いきなり確認画面に行ったのはテスト?の影響ですか?
>>338 はBBS/BBY側の設定かしらん?
お前の要求なんぞ受け付けておらんとか、 >341
ただのCookie確認だべ。
関係無し。 ちなみに =~ /info\.html/ で引っ掛けています うーむ、、、。
>>338 >>342
今ちょっと取り込み中なので、あとでみてみます。 >>348
ちなみに何するですか?
どっかから何か読み込んでくる?
入れたら見てみるけど、
そして負荷高かったら直せばいいのか、ブツブツブツブツ >>348
何しようとしてるんだろう。広告関係かしら、、、。
重い処理が入っちゃうようなら、おじさんが直すんだろうなぁ、やっぱ。ウウム >>333 も >>343 も特に問題はないようだ、 Socketを使うとまたタイムアウト問題が出てくるかもしれませんね( ̄ー ̄)ニヤリッ >>335
Socket を使うときはどんなクラス(←Perlでもこの言い方でいいの?)を使うんですか?
Net::Socket とかなんとか便利なものがあるんですか?
Net::Http とか? (←勝手に想像しています) beに登録してるユーザーの場合は、beのDBに見に行くようにしてみようかと。
>>356
use socket;
だけで、あとはこそこそと。
>>325
単純な暴走が起こります。
そのプロセス(perl subbbs.cgi)が、プロセスを100%使ってしまう。
で、120秒分CPUを使うと、むなしく終了していく。
スレ立ての時に直接subbbs.cgiをコールする2ちゃんねるビューワもあるような
気がちょっとしたけど、どうでしたっけ。
>>326
そのコードでたぶん問題ないと思います。
私も、>>329 の変化に注目したい。
>>357
beのDBが落ちていた場合に、どうなるのかしら。
待っちゃう? 全投稿に対してやるとすると、相当気合入れないと大変すよ。サーバ側。
FreeBSD素の設定(各種カーネルチューンしてない状態)では、
ほとんどむりぽなような。
確か今160万投稿とか170万投稿とかあるので、
そのつもりでサーバ側をまじめに強化しないと、かなりきびしいです。 >>360
subbbs.cgi をバックアップして
今は使われていませんとしてみよう。 そうか、BBSとBBYのDBに、2ちゃんねるのサーバ全部を登録するようにしなきゃ。
やってきます。 うっ 上書きしつまった、
subbbs.cgi は何処か遠くへ・・・
でもどっかのサーバに残っているだろう、きっと。 2ちゃんねるの全bananaサーバからの登録を受け付けるようにした。
カウントアップ復活を確認。
http://stats.2ch.net/suzume.cgi あわわわ
とりあえず、ミャンマー当たりで連投スレ建てしまくって不具合無いか調べた
ほうがいい鴨 >>356
ごくごく簡単にURLから何かを拾ってきたいのならばLWP::UserAgentなんてモジュールがあるですよ。
http://search.cpan.org/~gaas/libwww-perl-5.803/lib/LWP/UserAgent.pm bubble2サーバから回収してきた < subbbs.cgi
subbbs-save.cgi で qb6に入れた。 >>370
あっ それ知ってる、
boo80 はそれでやったような、 $ua = LWP::UserAgent->new() でUA作って
HTTP::Headers->new()
HTTP::Request->new() なんてのを作って
UA にheadrer と Request くべて
$res = $ua->request() すねーるんですよね?
$ua->timeout(15) とか設定して
タイムアウト時は$response->code() あたりを見ればいいのかしら?
しかし本筋は
●の時にやったように期限付きのセッションID方式と思われ < be のDB look up DBが何でできているかわかりませんが、
前にDBIがどうのとかどっかで言っていたような気がするので、
MySQLか何かのサーバと、プロセス間通信しようとしているのかも。 >>359
beにログインしてるユーザーの場合だけです。
>>373
そんな感じですー
→タイムアウト時は$response->code() あたりを見ればいいのかしら?
例文の通り、
$response->status_line;
とすると詳しい情報が得られるようです。('time out' の文字列が含まれています。) $ip = inet_aton($be_host) || print "host($be_host) not found.\n";
$sockaddr = pack_sockaddr_in($port, $ip);
socket(SOCKET, PF_INET, SOCK_STREAM, 0) || print "socket error\n";
connect(SOCKET, $sockaddr) || die "connect $be_host error\n";
autoflush SOCKET (1);
print SOCKET "GET $url HTTP/1.1\n";
print SOCKET "Host: $host\n";
print SOCKET "Connection: close\n\n";
>>377
ちなみに、
$response->status_line のとき。
500 Can't connect to count.2ch.net:80 (connect: timeout) at ./test.pl line 12.
$response->code() のとき。
500 at ./te.pl line 12.
となるですー モジュールのほうが重そうな気がしたので、
書いたほうが早いと思ったんですが、どうなんでしょう? 外部からbeのデータが覗かれちゃう危険は無いのかしらん、 モジュール(って言うんですか?)と同じに書けば同スピード
遅くなるように書けば遅いし
より早いコードを書けば早いかと、
ちなみにコンパイルされるんで
ロードの負荷やコンパイルの負荷は限りなく0です。 >>381
DBIだとselect文とかいじれちゃうので、
http経由のほうがいいかなぁと思ったのです。
>>378みたいに7行で終わるので、
モジュールよりは、早いんじゃないかなぁ、、と。
サーバの場所に実は一番左右されたり < コードの優劣より >>378
timeout処理がないので、count.2ch.net みたいになると永遠に戻らなくなるですよー(汗)
でもってalarm()を使うと、SpeedyCGIではへんてこりんになるんだっけ?
>>380
リクエストされる数にもよるけれども、10分に1回くらいのリクエストならLWP::UserAgent使う方が楽かもですー
(このあたりはTimeoutをどれくらい取るかに左右されるかと思いますー) TCPセッション張るですか。
connect() で詰まったら(サーバが落ちてたとかで)、どうするんだろう。 >>386
alerm() はSpeedyCGIでは使えませんです。
モジュール使って、タイムアウト指定しとかないとひどいことになるような。
LWP::UserAgent とかを使って、タイムアウトを入れたほうがよさげ。 正常にGETが終了する場合
>>378 でも >>373 でも
PIE 内であれば BD の処理を除けば 10ms 以下で終ると予想
PIE 外(たとえば日本) 200ms かかるかも?
異常な場合(timeout.busy等)
>>378 timeout 処理ないと bbs.cgi が待ち続け他の人がかけなくなる (-M32)
>>373 timeout 処理をたんたんと、
ってとこかな?
>>388
LWPなどはIO:SelectでTimeout処理しているのでSpeedyCGIでもへんてこりんにならないようなのですー あと、、
>>378 の場合はわからないけど
>>373 でやると簡単に HTTPS が使えたり、Proxy経由で参照できたりと
のちのち簡単です >>389
概ね、そんなかんじかと。
PIE <=. Sakuraは120msぐらいかかるみたいなので、250msぐらいはかかるですね。
%ping be.2ch.net
PING be.2ch.net (202.222.31.214): 56 data bytes
64 bytes from 202.222.31.214: icmp_seq=0 ttl=47 time=119.828 ms
64 bytes from 202.222.31.214: icmp_seq=1 ttl=47 time=123.794 ms
64 bytes from 202.222.31.214: icmp_seq=2 ttl=47 time=120.057 ms
64 bytes from 202.222.31.214: icmp_seq=3 ttl=47 time=122.132 ms
64 bytes from 202.222.31.214: icmp_seq=4 ttl=47 time=120.747 ms
^C
--- be.2ch.net ping statistics ---
5 packets transmitted, 5 packets received, 0% packet loss
round-trip min/avg/max/stddev = 119.828/121.312/123.794/1.478 ms
>>389
おそらくビンゴー♪
>>391
ですです(嬉) >>390
…ですね。
ふろ入ってくるです。東京、さむさむ。 こっちは最高気温が-5℃とかだったり
雪祭りシーズン並 >>392
あ、RTTだから単純に倍するのはへんだ、、、。 connect()失敗した後にファイルディスクリプタ解放してないのか・・・
まぁひとごとだし、いいけど。
>>397
うむ。
SpeedyCGIだと、こういうのも響いてくる予感。
つまり、どなたかのいう「静脈系」をちゃんとできるひとじゃないと、
いじった場合、よりいっそういけないことになると。
ふろー。 use LWP::UserAgent;
use HTTP::Request;
use HTTP::Status;
my $ua = LWP::UserAgent->new();
$ua->agent ("Iyan Bakan ver 1.00");
$ua->from ("security\@2ch.net");
$ua->proxy("http", "http://$proxy/") ;#proxyさすなら
$ua->timeout(15);
$header = HTTP::Headers->new(
'Referer' => "http://www.2ch.net/",
);
my $parameter= "abc=123&def=456";
my $request = HTTP::Request->new("POST", "http://be.2ch.net/nantara.cgi", $header, $parameter);
my $response = $ua->request($request) ;#ここで GET 処理
#ここでtimeout処理
my $response_code = $response->code();#302とか404とか500
my $response_body = $response->content();#GETの結果はここに入っている
試してみようと、LWPをCPANから拾おうとしたら、
ftp.perl.orgが落ちてる。。 >>402
use をLWP::UserAgentだけにしてみるトステ
use LWP::UserAgent;
my $ua = LWP::UserAgent->new(
'agent' => "Iyan Bakan ver 1.00",
'from' => "security\@2ch.net",
'timeout' => 15,
);
# $ua->proxy('http', "http://$proxy/") ;#proxyさすなら
$ua->default_header(
'Referer' => 'http://www.2ch.net/',
);
my $response = $ua->post(
"http://be.2ch.net/nantara.cgi",
\{
'abc' => 123,
'def' => 456,
}
);
$response = $response->is_success
? $response->content # 成功した時は内容を取り込む
: $response->status_line # 失敗した時はそのレスポンスとエラー内容を取り込む
; >>404
%perl -MCPAN -e shell
してから、
cpan> install LWP
すると、依存関係類もまとめてインストロールしてくれはるです♪ (Д ` ≡ ´ д) (。`? ..。。(( ´ _) Classまで使ってそんなにシビアなコード書きたいなら静脈系自動処理してくれるJava系の方が向いていそう。
その代償にGlobalGC時の硬直があるがJavaVMのParameterを経験則で調整していけばなんとかなる。
完全インタプリタなPerlよりバイトコードに落とすJavaの方が単純なルーチンなら刹那的な速度的にも最大二桁倍の速度向上が見込める。
SystemCallにおいては微妙ではあるが。でもやっぱり過去の資産の総リプレースは怖いのかな。
と言ってみるテスツ。
怒られました。
***
Failed Test Stat Wstat Total Fail Failed List of Failed
-------------------------------------------------------------------------------
live/jigsaw-auth-b.t 3 2 66.67% 1 3
live/jigsaw-auth-d.t 1 1 100.00% 1
live/jigsaw-md5-get.t 2 2 100.00% 1-2
live/jigsaw-neg-get.t 1 1 100.00% 1
live/jigsaw-te.t 4 1 25.00% 4
Failed 5/41 test scripts, 87.80% okay. 7/788 subtests failed, 99.11% okay.
*** Error code 2
Stop in /root/.cpan/build/libwww-perl-5.803.
/usr/bin/make test -- NOT OK
Running make install
make test had returned bad status, won't install without force >>404
あっと、どうしてもソースコードがご入り用でしたら、
http://search.cpan.org/~gaas/libwww-perl-5.803/
からダウソできるですよー
※あらやだ今日は呑んでいないのに酩酊のママだったorz... >>404
LWP、2chの環境には入れてあったような。
あ、直轄サーバで試すのかな。
# FreeBSDならCPANから拾うより、pkg_add -r で入れるほうが楽です。 >>409
ぬー、、、jigsaw.w3.org が墜ちているもより(滂沱)@なのでtest出来ずに鰓。。。
rootさん曰く、
→# FreeBSDならCPANから拾うより、pkg_add -r で入れるほうが楽です。
かもですm(_ _)m >>409
FreeBSDなら、これで一発かと。
pkg_add -r p5-libwww libwwwはかなりの基本ライブラリなんで、さすがにbanana/tiger/cobra全部入っているです。 >>414
ちなみに MacOSX10.3.7 では LWP が入っていませんでしたorz...
そして live/jigsaw- で詰まりました(泪)
あ、でももしかすると、make test がデフォルトで入っているかもしれないので、
%pkg_add -r p5-libwww
でも鰓になるかも、、、 >>415
ううむ。
旧HE時代からlibwwwはpkg_addで入れてますが、
FreeBSD4.x/5.xでは、一度もエラーになったことないです。 ちなみに質問ですが
Perl で Net:: とかLWP:: とかは通常なんて呼ぶんですか? >>417
Perl modules って答えでいいのかな。 Net モジュールとか LWP モジュールって感じ?
あとデストラクタまで入っているという認識でいいのかな? >>419
Net::DNSで1つのモジュール、ってかんじですね。
モジュールの作者がそのへんに配慮して書いているかによると思います。<デストラクタ >>421
/usr/portsはまさか、OS入れたときのそのまま、、、ってことはないですよね。
ちゃんとupdateしてます? >>424
ひゃー。
/etc/make.conf作って、/usr/portsでmake updateするです。
/etc/make.confの例をここに書くです。 # -- use.perl generated deltas -- #
# Created: Tue Oct 12 12:12:01 2004
# Setting to use base perl from ports:
PERL_VER=5.8.5
PERL_VERSION=5.8.5
PERL_ARCH=mach
NOPERL=yo
NO_PERL=yo
NO_PERL_WRAPPER=yo
とかがたぶんデフォルトで(Perl入れていれば)入っていると思うので、
これにこんなかんじの↓を追加するです。
で、cd /usr/ports して、make update を実行。
SUP=/usr/local/bin/cvsup
SUP_UPDATE=yes
SUPHOST=cvsup2.jp.freebsd.org # fastest_cvsupを実行して適当に近いやつにする
SUPFILE=/usr/share/examples/cvsup/standard-supfile
SUPFLAGS=-g -L 2
PORTSSUPFILE=/usr/share/examples/cvsup/ports-supfile
# Thank you for http://qb.2ch.net/test/read.cgi/operate/1062137886/39
WITHOUT_X11=yes
WITH_APACHE2=yes あ、あらかじめ、
pkg_add -r cvsup-without-gui
をやって、cvsupを入れておかないとだめです。 >>427
# -- use.perl generated deltas -- #
# Created: Tue Oct 12 12:12:01 2004
の設定ファイルは、どこにあるんでしょうか? なんか今日は調子わるいっす
二回もコンピュータに負けてしまった < AoM >>429
あ、もしかしてPerlはportsやpackagesじゃなくて、
コンパイルして入れたですか、、、。ううむ。
だったら、/etc/make.confはないと思うので、
とりあえず>>427の↓のが入った /etc/make.conf を作ればいいと思われ。 >>422
ということは書ける機能は備わっているということかな、 >>434
その理解でよいと思います。
http://www.att.or.jp/books/perlmod/
http://www.att.or.jp/perl/man/perlmod.1.html より
パッケージのコンストラクタとデストラクタ
パッケージのコンストラクタとデストラクタとして機能する、2 つ
の特別なサブルーティン定義があります。 それは、BEGIN ルーテ
ィンと END ルーティンです。 このルーティンでは sub は省略で
きます。 おぉー、、updateし始めましたですよ。
ありがとうございますです。 >>436
よかったです。
…ということは、カーネルとかシステム領域(ユーザランド)も最初に入れたままかしら。 #uname -a
FreeBSD be.2ch.net 4.10-RELEASE FreeBSD 4.10-RELEASE #1: Tue Jun 22 10:08:09 JST 2004 root@www.my.domain:/usr/src/sy
s/compile/RENTALv6 i386
全く弄ってないですー。
>>438
4.10Rすね。root権限つきでしたっけ。
た○か社長のところだからそれなりにチューニングはされてるのかもですが、、、。
気が向いたらいじるかもしれないので、よろしければ種をメールしておいていただけると。
# 今日はもうねむねむ。 >>435
なるほどー
これだと OO ッぽく書けるな、 なにやら、変数を保持しっぱなしの予感。。。
>SpeedyCGI http://game10.2ch.net/test/read.cgi/arc/1104213037/64
普通の板でもログインしてると任意IDの所でも強制的に?とID表示されるんですが仕様ですか?。
まあ、ログインしなきゃいいわけですが。 おまえは何をしてるんだ!
年末で奈良の女児誘拐殺人の犯人らしき36歳新聞配達員の男が事情徴収してるというのに! ひろゆきキャップ下さいたま
66999699966669969696@ezweb.ne.jp >>454
というか今度は強制IDのところがID:???になったんだけど…。 ログオンしてる人が書き込めば、
javascriptの記述の分だけdatの容量が増えることになったわけですが、
それについては構わないのでしょうか?
ログオンしてる人が少なければ大した影響は無いでしょうけど。 >427
その/etc/make.conf見覚えがあると思ったら、pekoスレで昔オレが書いたサンプルからの引用か……
・/usr/share/exapmle/cvsup/ports-supfileは/usr/sup/ports-supfileあたりにcpして使ったほうが良いかも
・*default compressはコメントアウトするか、SUPFLAGS= -s -g -L2にして圧縮しない
・fastest_cvsupで速いサーバーを入れるのも当然だが、cvsup-mirrorホストが立っているならそっちを指定する
そもそもcvsup-without-guiがpkg_addされていないんであれば、sysutils/portsnapを使ってもらっても良いかも。
管理手法がばらばらになるというデメリットはあるけど。 ×SUPFLAGS= -s -g -L2にして圧縮しない
○SUPFLAGS= -Z -g -L2にして圧縮しない
ミスったので訂正。
-sはチェック抑制だった。 今度は任意IDみたいになってますよ。
http://qb5.2ch.net/test/read.cgi/operate/1103462401/579-580
579 :動け動けウゴウゴ2ちゃんねる [sage] :04/12/30 09:19:07 ? ID:???
てすと
580 :動け動けウゴウゴ2ちゃんねる :04/12/30 09:20:14 ? ID:Mo0nUNNp
てすとに
質問でーす > どうやらさん
javascript になっているのは、必然?
それとも単に負けただけ?
必然なら改修しないけど、、、って言うだけのことですが、 元スレのURLを引っ張るので必然ですー。
javascript以外の方法でいけるなら、
それもありなんですが。
りょうかいですー
改修するかも知れませんです。
ちょっとでも節約したい(ちょっとどころじゃないかもなんで) datにはi=123456の数字だけ書いて、残りはread.cgiで出力だな。
jsで一括処理なら転送量はかかるまい。
もちろん専ブラは専ブラで。 >>474
そのほうがよさげですねぇ
各専ブラが対応する必要があるっすね、 >>478
いやぁ、全部頂きました。
どもどもです。 >各専ブラが対応する必要があるっすね、
更新作業のの滞った(止まった)専ブラユーザーから
悲鳴が上がる悪寒。
仕方が無いけど・・・。 kageあたりめっちゃ更新が早かったモヨウ
>481 よかったよかった >>474 >>480
賛成すね。
仕様さえ固まれば、対応する方々は対応できると思われ。
>>482
やむを得ないっすね、、、。
私もOpenJaneなんで、そのあたりはちょっとどきどき。 SpeedyCGI導入してどの程度負荷が減りましたか? >>486
かなり効果出ましたね。
Cで組みなおす必要もなさそうですね。 >>485
bbs.cgiの掲示板システム全体に対するトータルコストという観点なら、
十倍〜数十倍は変わった気がするです。
つまり、ある意味革命が起こったと。 >>477 の具合はどうですかね? ok?
>>487
そですね、必要性はかなり遠のいたかと
もすこし節約できるところ(msのオーダと予想されるところ)を何とかすれば・・・
と思っています。 >>489
|Hello 2ch !!
|-----------------------------
|read.cgi ver 05.0.0.1
|FOX ★
とか出ますた。これでいいの? ・fork() exec() の処理コスト
・Perがlプログラムファイルを読み込むコスト
・モジュールをロードするコスト
・インタプリタとしてのコスト(エラーチェックとかいろいろ)
・exit() の処理コスト
が、激減したわけだから。
昨年最大の成果がBBQ/BBXだとしたら、
今年最大の成果はbbs.cgiのSpeedyCGI化と、携帯サーバシステムの構築かと。 あと 対爆撃性能が上がったというのが大きいです。
つまり -M32 で 32個しか同時には受け付けない。 >>490
あっ そっか read.cgi 入れ替えてきます。 >>492
確かに。
仮死状態やサーバダウンに陥るリスクが、大幅に減りました。 今度は人大杉になりますた
何が何でもブラウザで読ませないつもりでつか? あ、mod_cgidsoを切ってきますね。< dso >>501
なるほど、では今はそのままで。
設定変更が必要なら、言ってくださいです。 >>504
何が何でも専用ブラウザを使わないつもりですか? >>510
まだ対応してる専用ブラウザは存在しないでしょ? >>484
オープンソースな専ブラはいいなぁ。
スキルも無い一般ユーザーが出来る事って何だろう。
>511
かちゅやLive2chは対応してますけど
その他も開発が間に合えば今年中に出来るようになるかと target=_blank ですか?
サイズまで指定するならやっぱり javascript が本筋? >>516
いや、今実験してるdsoの話
と思ったら通常リンクだから専ブラだと問題ないね >>517
サイズはどうやらさんのJavaScript版でも指定してないから必要ないと思われ
でもtarget=_blankは欲しいです 言うまでもないけどtarget=_blankはread.cgiで挿入する方向で
専用ブラウザならどのみち別ウィンドウで開くので target="_blank" にした @みゃんまー このさい<base target="_blank">とか Internal Server Errorが出て
ブラウザでもかちゅでも書けない >>523
レス内のURLリンクにtarget=_selfを付ける必要が出てくる
URLリンクを生成してるのはread.cgiだから不可能じゃないけど
どっちが転送量を低く抑えられるかな >>526
そうなると onClick=aaa(); ちかにして
あたまに aaa() を定義かな・・・ < read.cgi
Hello 2ch !!
read.cgi ver 05.0.0.1
FOX ★ >>530
あ、それいいですね
スクリプト切ってる人はうざい別窓見なくて済むし
>>531
まあ確かに専用ブラウザでリンクをクリックすると
全部別タブか別ウィンドウで開くからタブブラウザならそれでもいいかもしれないけど
素のIEとかだとうざすぎる しかし html 化プログラム方面まで直さなきゃだなぁ ところで「d:」の後のURLに板名が入ってないような…。 「>>1」を、
今は
datは <a href="../test/read.cgi/bbs/123546789/1" target="_blank">
read.cgiは <a href=1 target=_blank>
ってなってるのを、datの段階からread.cgiと同じ形にして、
index.html(html/$key.html)だけ../test/read.cgi/〜を出力しよう。
<a href=javascript:w=window.open('http://be.2ch.net/test/p.php?i=4662757&u=d:'+document.URL);if(w)w.focus();void(0);>
<a target="_blank" href="http://be.2ch.net/test/p.php?i=3434483&u=d:http://dso.2ch.net/test/read.cgi/myanmar/1102008822/">
すでに転送量の節約という観点からは無意味どころか逆効果な予感
アクセス性の観点からは(スクリプト使わなくなった分)改善してるけど ・target=_blankをread.cgi生成にする
・ひろゆきにお願いして
d:以降を「dso/myanmar/1102008822」
のみにしてBE側でURLに変換する >>474 のような仕様にして、
>>530 のように実装すると
datの大きさ、転送量の節約を主とした場合一番いいのかな、
問題は専ブラに全部修正を強いるところか、
一方、節約でな各種改造をしなくていいのは
現dsoに入っているやつかな? href="#" onClick="aaa()"
href="javascript:aaa()"
onClinkを使わないほうがわずかにとくかな <script>
function be(i){
window.open('http://be.2ch.net/test/p.php?i=' + i + '&u=d:' +document.URL);
}
</script>
<a href=javascript:be(123456);>?#</a>
js知らんのでてきとー。
ローカルでのテストでは動いたっぽい。 JaneDoeで見てるが、
547 名前:ひろゆき ◆3SHRUNYAXA [] 投稿日:04/12/31(金) 01:51:02 <a href=javascript:w=window.open('http://be.2ch.net/test/p.php?i=303168&u=d:'+document.URL);if(w)w.focus();void(0);>?##</a> ID:nsOY40L9
って表示されてウザイ 旧本家を使っているなら
NightlyBuildにすればOK >>546
<script language="JavaScript"><!--
function be(i){
var w;w=window.open('http://be.2ch.net/test/p.php?i='+i+'&u=d:'+document.URL);
if(w)w.focus();void(0);
}
//-></script>
コメントアウトにしないと古いブラウザでいろいろ出るかも
まあクッキーの所に埋め込んじゃえば問題なし・・ JavaScriptとかだとなあ…
かちゅでブラウザsleipnirにして、sleipnirのデフォがスクリプトオフだと死ねる。
専ブラの対応がないとちょっとつらいよー 2chブラウザのスレッド表示はread.cgiのエミュレートなのだから、read.cgiできちんと表示されているのに直せとここに持ってくるのはよくないですね。
>>552
<script language="JavaScript" type="text/javascript"><!--
function be(i){
var w=window.open('http://be.2ch.net/test/p.php?i='+i+'&u=d:'+document.URL);
if(w)w.focus();
}
//-></script> >>553
今回に限らず専ブラは2chの仕様変更に対応してきたわけで、
今更そういうのは論点がずれてるのではないかと。
>かちゅでブラウザsleipnirにして、sleipnirのデフォがスクリプトオフだと死ねる。
現在もJavaScriptの部分はうまくクリアしてやってくれてるからそういうことにはならないよ。 まぁアクセシビリティの観点から言えばJavaScriptが使えない環境のための代替手段は提供すべきだけどね。 今年初糞、初切れorz。教訓:糞は5日も貯めるな!
という事で今年もよろしく。他人だけど。
ちょっと聞いてもいいですか?
sleepって使ってますか?  ̄ ̄ ̄ ̄ ̄ ̄○ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
O 。
, ─ヽ
________ /,/\ヾ\ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
|__|__|__|_ __((´∀`\ )< ・・・というお話だったとさ
|_|__|__|__ /ノへゝ/''' )ヽ \_________
||__| | | \´-`) / 丿/
|_|_| 从.从从 | \__ ̄ ̄⊂|丿/
|__|| 从人人从. | /\__/::::::|||
|_|_|///ヽヾ\ / ::::::::::::ゝ/||
────────(~〜ヽ::::::::::::|/ つ 【 悪いやつほどよく眠る 】
|彡サッ
| < おぬしも悪よのう ひろゆきぃぃぃぃぃぃぃぃ!!!!!!!!!!!
ヴぇおぃぇぁぁぁぁぁぁぁぁ >>565
じゃあFOXさんが赤幕 rootさんが青幕 まほらさんが黄幕
こうすけさんが緑幕 不動楽さんが白幕で 飛行石さんが字幕って事で ┌───┐
│要望書│
└───┘
「大吉・2005円」ってのは出ない?(2000円以上は出ない?) 出したがっている香具師多数
運営側よろしく おい、グーグルのトップページが大変なことに!
http://news13.2ch.net/test/read.cgi/news/1104536143/43
43: 【中吉】 【192141円】 []:05/01/01(土) 10:32:00 ID:0UNkGcKc
ほう で、西村管理人は、ここで参考になった投稿に
ポイント送ったりはしてるのか、 DATには
05/01/01 00:00:00 ID:??? BE:xxxxxx
ってやって、read.cgiでリンクに変換してよ DATのフォーマットはいまさら変えられないのが実情
一番後ろに<>BEIDをつけるとかなら影響は小さいかもしれんが <>区切りを増やすほうがむしろdatのフォーマットを変えることに近いと思うよ。
>>575なら非対応2chブラウザでもそのまま
05/01/01 00:00:00 ID:??? BE:xxxxxx
と表示されるので安全(IDポップアップを実装してる2chブラウザは影響受ける可能性高いけどそれは本来ない動作なので2chブラウザ側で対応すべき) >>578
うん、そう思って言った。
それで影響受けるんなら名前欄の後にトリップみたいに■xxxxxxとかやってもいいのでは?
DATにJavascript埋め込むのはどう考えても…。
と、某2ch型掲示板の開発者は思います。 >>580
キタ━━━━━━(゚∀゚)━━━━━━ !!おめでとう>>575 Be-2ちゃんねる 人柱募集中。。。
http://qb5.2ch.net/test/read.cgi/operate/1101003269/968
968 名前:名無しさん[sage] 投稿日:05/01/04(火) 10:43:53 ? ID:???
確認した。
架空のBeIDをクッキーに仕込んでもマークでるやん。 >>583
何が言いたいのかさっぱり分からん。
多分時刻の次あたりの事だろうけど。
それはブラウザが対応してないからそうなるだけ。
年末あたりから機能はあった >>584
あーそれか
ありがとう
>>585
そんなことは知ってるから read.cgiはFOXが改造中。
ってbbs.cgiは関係ないけどwwwwwwwwwwwwwww なんかココがオカシイ匂いがするわ。
謎のjane挙動不審のまとめ
・板更新は出来るがスレ取得不可能(エラーが出る)
・read.cgi関連ではない
・2ch以外のアニメ実況等では正常に作動
・1月5日午前5時ごろまではまとも23時過ぎではおかしくなっていた。
・●のある無しは関係無い
・プロバイダの不調でもない
・IEでお気に入りにスレ入れてたら更新しないと新着レスが出ない。
不調はbbs.cgi関連か? >>590
私もOpenJaneDoeですが、特にそのような症状が確認できません・・・
Janeの種類とヴァージョンは?
Monazilla/1.00 (Jane2ch/0.1.12.2) >>590
どの板で、どのスレで、何ていうエラーメッセージなのか、
などなどを書いてJaneのスレへ。 普通にJane使ってても問題ないけど?
スレ違いでしょ どっちにしろ専ブラ側の問題だろうし >>591
open jane 0.1.11.1ですわ >>594
やはりJaneが不調な気がします。
最新版OpenJane-0.1.12.2に変えた後、
まだ不具合が出る場合は、Janeスレで対応して頂く方が吉かと。 >>595
今最新のOpenJane-0.1.12.2に変えようとした所
板一覧の更新すら出来ない情況でした。
後はjaneスレでやります。
皆様ありがとうございました。 >>580
bbs.cgi が変わって BE:xxxxx を dat に出力するようになったら
read.cgi もその後対応します 私の訳のわからない不調も治りました。
ノーd先生を更新したら治ったので
その所為かと思われます。
色々とスレ汚し申し訳ありませんでした。 >>580
おおお採用されそうじゃん!! やったぁ
>>582
さんきゅー! >>598
出来てるんだったら、datの方式変えますよ? ウズウズ…
=≡= ∧_∧ I'm ready.......
/ \ (・∀・ )/
〆 ⊂ つ∈≡∋
|| γ ⌒ヽヽコノ ||
|| .| |:::|∪〓 ||
./|\人 _.ノノ _||_ /|\ 互いに相手が変更するのを待ち合ってデッドロックに陥ってるわけですね >>598で変更したら変えるって行ってるから先にbbs.cgi変えちゃえば? というか BE:xxxxx だけだと仕様が不明確すぎるから
実際にひろゆきが変えてみないと対応のしようがない。
たとえば現行の # の数に対応するものはどうやって出力するの? 管直人さん、スレとは関係ないけど count.2ch.net 直してくれませんか? 手順としては
1. be.2ch.netに試験導入
2. FOX ★がそれ見てread.cgiを変更
3. 全鯖に変更したbbs.cgiを配る
かな。
つーかマダー? (AAry ひろゆきがread.cgi弄るが一番早そうだけどな ´ _).。oO(やりたいゲームが見あたらないに一票・・・) >>616
今年はまだ8日しか経ってないのに、もう3人目・・・去年は何人まで行ったのやら。(w >619
去年は数十人との噂ですよ
しかもその殆どが(ry >>622
dat落ちのスレも開くと
datが存在しません。削除されたかURL間違ってますよ。
read.cgi ver 05.0.0.8 2005/01/07
FOX ★ DSO(Dynamic Shared Object)
って出るのですが仕様ですか? 1000まで行った過去ログ倉庫行きのスレ、1と1001じゃなくて1000が見れたらいいのにな・・・
それか1001に日付が欲しいな・・・
なんでも 今は1と最終1レスを表示する仕様になっているので、スレストかかってたり1001行ってたりすると最終レス日付が分からないけど、
1と最終2レスを表示するようにすれば最終レス日付がわかって良い感じかも。
ってこれはread.cgiスレ行きの案件か。 PC5鯖が微妙に重いっす・・・。
CGIが新しくなったて噂なんですが、マジっすか? サーバダウン(鯖落ち)情報 Part54
http://qb5.2ch.net/test/read.cgi/operate/1102346568/
しばし待たれよシナのDoS攻撃かPCサクセス祭りかのどちらかじゃ >>630
よく考えたらスレ違いの質問なのにありがとうございます。
待つしかないっすね。 >>622
datには
ID:??? BE:123456 lv:2
とかって入るのかな・・・?
となるとread.cgiはsplit(/ /,
ってC言語かorz >>632
空白を'\0'に変えて直後のアドレスとればOKじゃない?
俺ならboost::tokenizerかストリーム使うけど。 BBM携帯に印。
game10、hobby7以外配布済みです。 荒らしの様なノリの板に書き込んだ事のあるIPアドレスやら端末やらは
ここみたいな真面目な板へ書き込む時にやや制限がかかるように出来ませんか?
例えばVIPとか言う板に書き込んだら一定時間フラグを上げといて、
ここへ書き込むときにはそのフラグを参照して上がってたら制限をかける
チェック部分を通るようにするとか。 >>637
おつです。
バリ3マークすか。
[圏外]でもいいかなとか、ちと思った。
雑談ですまそ。 >>642
私が軽い冗談(と少しの皮肉)で提案したものが、なぜかそのまま採用されちゃったです。(w
こちらも雑談でスマソ。 書けないんだから[圏外]の方がよさげですねー。と
これも雑談でスマソ。 おしりに吹き出物が出来ちゃって痛いよー
雑談でスマソ>< >646 わすれものですよ
つ 【 雑談でスマソ 】 bbs.cgi はごくごく小さくするですー
目的は一行目の各種パラメータをサーバ毎に設定できるように、
つまり bbs.cgi の更新で容易に上書きされないように、
#!/usr/local/bin/speedy -- -M32 -b1048576 -t60
use strict 'vars';
#########################################################
#
# bbs.cgi for SpeedyCGI (written by FOX)
# 2004/12/02
#
#########################################################
use vars qw($BBSCGI);#グローバルー
$BBSCGI = "2005/01/09";#最終更新日
require "./bbs-entry.cgi";
#print "Content-type: text/html; charset=shift_jis\n\nWOWOWOWOWOW-----\n";
&bbs_entry;
exit; >>648
→require "./bbs-entry.cgi";
DocumentRoot から外した方がよさげ(苦笑)@DoSとかも回避出来鱒の寿司 今のところ大丈夫そうすね。
で、speedy_backendが11分で必ず自爆するんであれば、
メインのbbs.cgiが書き換わらなくても、サブファイルへの変更はおいおい反映されると。 とりあえずbbs-entry.cgiのxビット落としとけば、いいんではないかなと。 use vars qw($BBSCGI);#グローバルー
$BBSCGI = "2005/01/09";#最終更新日
も entry の方にいれるです
>>652
そっすね、 やってみよう。
>>653
swapout すると自爆しないようです。
その時の -M がどのように作用しているかが気になるところです >>654
わー(大汗)
<FIles bbs-entry.cgi>
deny from all
</Files>
とかとか、、、(汗) >>655
swapoutですか。
そもそもspeedy_backendがswapoutするのは負け筋すからね。
で、メモリ増やすとか、-M16にするとか、そういうかんじですか。
>>656
Files でdenyすると、かえって負荷高くなるような気も。
というか、>>652 が平和な解決すね。 いれた < 全サーバ
pc5 は -M16 へ変更。 tiger/cobra は適宜よろしくです > 660 >>662
了解です。今-M32ですね。
様子見ながら、少しずついじってみます。 あっ でも何時上書きがあるか解からないですので、、、 よろしくです。
入れたばっかだから、もしかしたらあるかもってことで、 了解です。>>664
tiger/cobraは強くてメモリも多いんで、苦しくならないとなかなかチューニングが(りゃ
という話もあります。
今日はたぶん、あせっていじるような事態にはなりそうもない予感。 Samba24 の値は SETTING.TXT に記述という方向で考えているけど、
SETTING.TXT にしたほうが良いと思われるもの他にもありましたっけ? スレッド保持数とか・・・無理か。bbs.cgiじゃないもんな 鯖ごとの設定だと、ぱっと思いつくのは
人大杉、圧縮値(???スレ超えたら???スレに圧縮)だけど、
どっちも板ごとにする意味はあまりなさそうだなぁ、
1スレの最大書き込み数とか最大バイト数とかも
あると面白そうな気はするけど意味なさそうだしいろいろめんどそうだし。
やっぱsamba24くらいじゃないですかねぇ。
他は、せいぜいあるとしてもシベリア仕様のIP表示とか、ホスト表示とかかな、、 入れていいものかどうかは知らんけんども
即死byte数とか、
もしコレをやるとしるならば
ABC(強中弱)表記にしると面白いんじゃないかのう
B=鯖標準 はmaskしといて、しかも個々の鯖ごとに鯖標準が違う、とかはどうじゃろう >>667-8
んー、SETTING.TXTは一括して読むと思うから、固定されてる数値を変えれるようにするのは
(>>668さんの仰ってる通り1スレの最大書き込み数とか最大バイト数とか)
すっごい簡単だと思うけどなぁ。そういう必要があるのかは疑問だけど…。
個人的にあんまり行かないけどAA系の板とかでは512KB越えたいこととかもあるかも。 >671
今のAA系板で最大バイト数増やしても埋め立て荒らしを増長させるだけな気がする
読み込みも重くなるし。 >>666
BBS_ENCODE=
若しくは、
BBS_CHARSET=
デフォは、Shift-JIS で、EUC、JIS、MIME 等々外国語のコードページも視野に入れておく 今回はやっぱめんどーなので
bbs.cgi のSETTING.TXT 読むところで一回Samba値を設定するように
bbs.cgi を変更した。 >>676
準備工事までと。
で、newsとnewsplusのSamba値って、今どうなんでしたっけ。 各板の version 表記のところにだしてみた。 bbspinkの連投規制を元に戻してくださいまし、、、 >>677
90秒だったのですが・・・・気にしません。 >>683
確か今60secって出ている気がしました。< news
サーバの負荷的には特に問題出てないですが、
もし改めて90secに再設定したい場合には、たんたんと申請スレのほうで。 >>684
何だか不具合で120秒とかに戻ったりするらしいですよ。
中の人じゃないと分からない内容ですのでご確認出来ましたらよろしくお願いします。 今のbbs.cgiは「最大11分かけて設定が徐々に反映されていく」ようになったので、
ぼちぼち観察していただけると、いいかもです。
で、ほんとにころころ変わるようなら、改めて不具合報告をたんたんと。 >>688
bbs.cgi のせいじゃないでしょ
投稿している人が悪い or あなたが気にしすぎ >>575 やりますかー
実際にはどうすればいいのかしら?
bbs.cgi 変更したら、次にread.cgiも対応します
朝までには完了すると思われ、 >>692
そうっぽいね
既存のタグ入ったDATはそのままだよね? >>693-694
2chブラウザの作者泣かせですな >>694 了解です。
>>696 まったく作者泣かせです
作業がんばってください>FOX ★ -# 部分は生データ書いたほうがいいのかな?
書いちゃまずいということはないっすよね?
何かポイントの数値なんだけど、 BE:xxxxxxxってIDの後なのか前なのか
どっちかといえば後ろの方が都合が良いと言ったらいいんですけど datにはポイント数で記録しといて
read.cgiでレベルに変換する、てこと? 特に問題ないようなので、これで行くことにいしよー
次は read.cgi へ、 >>554の方がいい予感。
<script language="JavaScript" type="text/javascript"><!--
function be(i){var w=window.open('http://be.2ch.net/test/p.php?i='+i+'&u=d:'+document.URL);if(w)w.focus();}
//--></script>
ちょい整形。 どうでもいいっすけど
BE:xxxxxxxがIDの前にあるとIDまでリンク貼られちゃってる予感 index.htmlのBe IDにはリンクがないんですね。
そりゃそうか。 Perl で書くとこんな感じ?
if($time =~ /BE:/)
{
$time =~ /([\w| ]+) BE:(\d+)-([\#]+)/;
$time = "$1 <a hrefjavascript:be($2);>?$3</a>";
} これでいいような。
$time =~ s/BE:(\d+)-([^ ]+)/<a href=javascript:be($1);>?$2<\/a>/; アトリビュートは""でくくっておいた方がいいのでは? >>717
うまく行きました
さんきうです
>>718
アトリビュートって何? ま、動いてるようなんで無問題ですかね
#他の所もかこってなかたようですし しまった>>717ではレベル0の人がリンクされないや。
$time =~ s/BE:(\d+)-([^ ]*)/<a href="javascript:be($1);">?$2<\/a>/; + 1文字以上
* 0文字以上
専ブラ改造して直した
醜いけどこんな感じ
if(preg_match('|(.*?)BE: ?([\d]+)-([\#]*)(.*?)|',$date_id, $matches)){
$bedate=$matches[1].$matches[4];
$beid=$matches[2];
$belv=$matches[3];
>>726
$2だけじゃなく"?"が入ってるんで問題ないと思うです。 >>729
別に問題ないべ?
最長一致するんだから。 FOX ★に質問です。
2ch鯖、Pink鯖に投入されたbbs.cgiとread.cgiですが
朝生板はひろゆきが入れるのですよね? >>733
FOX ★は、朝生板に新しいbbs.cgiとread.cgiを入れてないですよね? >>734
朝生板はlive14だから勝手に配られたんじゃね? news19でのsamba不具合についてここまでのまとめ
・ERRORがsamba60又はsamba120のどちらか一方が出る
・ERRORが120s表示の場合でも60s後に書ける(書けないときもある)
・前回書き込みから60-120s間経過でも書き込めない
・さっきまで60sで書けていたた→その後は暫く120s→また60sで書けた
・ブラウザ自体や専ブラの設定などは関係してない模様
>>575 がdatファイルのサイズ縮小が目的なら
次はレスアンカーをタグアンカーに変換せず生格納だったりするのかな?
read.cgiは、「>」「>>」「>」「>>」「<」「<<」「<」「<<」に対応したりとか・・・
http://qb5.2ch.net/test/read.cgi/operate/1105442708/292-299
で聞いても分からなかったじょ。 >>741
12/30以降のスレの流れを見ればわかると思うけど、
datファイルサイズをもっと縮小→じゃあBeのプロフィールリンクも短く
って流れじゃないから。
元々Beテスト板(現在の面白ネタnews)のみの仕様ってことで深く考えられてなかったが、
2ch全域導入後に色々意見が出てきてdat仕様を本格的に検討したってことかな。
もちろんその根本にあるのは、
datに余計なものを埋め込まない=サイズを押さえる・転送量削減ってことになりますけど。
ただ、今後のレスアンカーの扱いがどうなるかは知りません。
Beの件とは別物だと思うから。 今回の対応はまだ対応してない専ブラ向けの意味合いも強いと思う
全面的な仕様の見直しではないだろ >>744
あ、そうか。
javascript込みの長いリンクが表示されてるよりBE:xxxxxxxで表示されてる方がマシってことですね。 >>743-745
ありがとう、参考になりました。 ふと思ったんだけど、鷺板でキャップ持ち以外はBeプロフィール(っていうのかな?)が
出ない件については、ここでいいんですかね? ホスト表記と併用できる仕組みになってないんだろうね >>744
OpenJaneの作者の受験に影響が出るからね。w ふと思ったんだけどUA見てるんだから表示できるように仕込めないのかな?
read.cgi側も合わせて弄らないとダメなんだと思うけどどうなんでしょ? BBS 等のタイムアウト 3secくらいにしてみようかな $res->tcp_timeout(3);
$res->udp_timeout(3);
$res->retry(2);
にしてみた、 >>756
おっ。
普通に動いているときはこれで問題ないですが、
へくった時の引っかかり問題がどうなるかっすね。 >>757
_ ∩
( ゚∀゚)彡 実験!実験!
⊂彡
貼っとこ
http://qb5.2ch.net/test/read.cgi/operate/1105959480/624
624 名前:▲ 某ソレ511[sage] 投稿日:05/01/18 02:15:25 ID:O5OzqY/m
>>620
うん、上位の雑談板は先週の平日に比べて少し減少してますねぇ。
そいでいて中位くらいから下の板の投稿量はあまり減ってない、と。
----
ちなみに、きのうDNS問い合わせのtimeoutを変えてから、
すずめのほうもほとんどスレッドランキングさんと
変わらない数値をカウントできるようになりましたね、 なぁなぁ最近日付が変わっても少し時間経たないとID変わらないことあるぞ。
一体スクリプトはどうなってるんですか。怖くて自演できんぢゃないか! まぁ自演云々はネタとして、普通にどういう仕組みで
そういうことが起こるのか気になる。 仕様だから諦めれ。
1:00AM頃までには ほぼ変わってるから…な? 以前は、POSTリクエスト毎にperlを起動/終了していたのが
SpeedyCGI導入で、複数回のリクエストに対処するようになった。
それに伴い、事前に読み込んだ設定等を保持して持ち越すようになった。
ID生成の乱数の種もそのひとつ。
そして、そのperlプロセスに呼び出し回数や時間等で制限をかけ、
設定更新等がある程度の時間内で確実に反映されるようにした。
その設定が、確か10分程度。
つまり、0時を過ぎてから再起動されたプロセスから、順次IDが切り替わる。
再起動されない間は、前日のIDのまま。 >>764
横だけど、SpedyCGIの効用がイマイチ理解できていなかったから
わかりやすい解説でよく理解できたよ。サンクス 0時に強制的に再起動かませば従来どおりの動作にはなるが、ピーク負荷が…… 狼なんかは、0時に強制再起動すると、おもしろいかも
ID無いけど 324 水先案名無い人 [sage] 05/01/26(水) 01:21:15 ID:izKRPcX10 NEW!!
「それが2chの仕様だ」 bbs.cgi開発者、IDが0時で変わらない騒動を一蹴
これが、私が考えたシステムだ。
使い勝手についていろいろ言う人もいるかもしれない。
それは自作自演を画策する利用者や閲覧者が、この仕様に合わせてもらうしかない
サーバの負荷はこれ以上増やしたくないし。サーバの負荷はこれ以上増やしたくなかった。
IDが0時になっても変化しないのも狙ったもの。それが仕様。
これは僕が作ったもので、そういう仕様にしている。
明確な意思を持っているのであって、間違ったわけではない。
世界で一番美しいシステムを作ったと思う。
著名SEが作成するシステムに対して費用の見積もりがおかしいと難癖をつける人はいない。
それと同じこと。
http://qb5.2ch.net/test/read.cgi/operate/1103495887/764 まあ、事前に知ってればたいしたことないんだが
知らないと場合によっては物凄いことに そもそも、IDという仕様も、それが0時に切り替わるという仕様も、勝手に決めたものだからな 朝の5〜6時あたりの人が少ない時間にID変更するのはどうだろう。 そうだよな。テレビと連携する方向ならIDの変更は午前4時あたりがいいと思うな。 そりゃ穴を見つけて2chを陥落させるために決まってるじゃん( ̄ー ̄)ニヤリッ 毎日日付が変わるころにdev/randから種を取ってきてそれでごにょってるらしいから
それは無い。 setting.txtの頭についている妙な文字列がそれかな。 >785
IPアドレス2^32とランダムseedすべての組み合わせテーブルを計算しておけば出来る。
だけど全テーブルを計算するのに宇宙が終わるぐらいの時間がかかるし、データを保持する手段もなさそうだけどね。
>>787
適当な固定IPアドレスに分だけ確保してそれのランダムseed全てとの(ry そもそも重複があるから完全な逆引きは不可能だし。
雑談する場所でもないし。 日本のプロバイダor企業から書き込まれていると仮定すれば
有効なIPアドレスの想定範囲はわりと現実的な範囲に収まるはず。
それでもIPアドレスA.B.C.DのC.Dの部分しかわからないんだっけ?
他の手段も併用してプロバイダを推定しないと確定は難しいか。労力の割に実入りがないな(w >>784
昔のやつはMD5使ってたと思うけど今どうなんだろう
>>786
それは管理パスって聞いたことがあるような気がする。
板名でcryptされた管理パスって。
どこで読んだかなぁあれ >>790
それだと重複する可能性が高すぎる。
IDは、IPアドレス+板名(setting.txtにある"板のID"?)+日替わりの乱数(16バイトだとか)を使ってMD5で暗号化されているらしい。
まあ本当かどうかは知らないけど。
少なくとも、個人で逆算できるようなものじゃないよ。乱数の計算だけでもとてつもなく時間がかかる。 bbs.cgi再開発プロジェクト4
http://qb5.2ch.net/test/read.cgi/operate/1101984763/861
> sub foxCheckMD5id
> {
> my ($bbs,$md5date,$num,$dateFox) = @_;
> if($dateFox eq $md5date)
> {
> return $num;
> }
> my $md5datefile = "../$bbs/md5.cgi";
> if(open(MD5FILE, "<$md5datefile"))
> {
> my $md5line = <MD5FILE>;
> close(MD5FILE);
> my ($a, $b) = split(/<>/, $md5line, 2);
> if ($a eq $md5date) {
> return $b;
> }
> }
> return &foxCreateMD5id($bbs,$md5date);
> } Setting.txtに産婆タイマを入れるって話はボツになったの?
今のJane(View系)だと、わざとカキコエラーして秒数取得する
鯖に優しくない仕様(^^;)なんだけど。。。
index.htmlの一番下に書いてあるかと。>samba数値 >>795
常にギリギリOKのタイミングで書かれるのも鯖に優しくないかと。
エラーしてある程度ばらけた時間おいて書く、というのを想定してるのかなあと たまに再トライする程度なら。。。っていう割合の問題って事ですかね
Setting.txtは取得してカキコ時の設定等に使われてるんで、
載ってた方が他の物を取得せずに済んだりはするんですけどねぇ。。。
まあ、どういう予定なのか聞いてみたかっただけですので
お忙しいとこどもm(__)m 途中送信スマソorz
>>799
無理かと。
現状で使えないようにしている理由がわかってから
また来てください。 >>801
0chにできて2chにできないどんな理由があるの? http://qb5.2ch.net/test/read.cgi/operate/1105232393/
24,128,165,184のような、http://を大量に書き込んでエラーを起こすやつ、
>>規制みたいにbbs.cgiで制御できないかな?
http://は1レス8個までとかみたいに。 bbs.cgiでは難しいかも。
投稿文の中にある、"http://"という文字列を
例えば"http
//"に書き換える等の手もあるにはあるけど、
普通に考えたら、read.cgiでリンクを張る時にカウントして制限するのが自然でしょう。 つまり どうなってるの?
すでに修正されててわからんかった 要は、
URLが大量に書き込まれると、1レスの表示サイズ制限に引っかかる
と言うことです。 実態をこの目で見ないとスプライトの改造もできないなぁ
こんど発見したら修正しないで残しておいてもらってくださいー
dat 回収に行きます read.cgi を直してみた
でも bbs.cgi も直したほうがよさげなきがする、
つまんない質問で恐縮なのですが、
bbs.cgiに変更があった場合に、
自動的に復帰が掛かるなんて事はあるのでしょうか?
自分の居る板で 3/4(金)の朝7時頃に、スレッドの並びが変わってたので…。 変更したら板を壊しちゃったから戻して復帰、
とかはありそうだけどね、 そうなんですかー。
皆様、レスありがとうございます。 心配するだけ無駄かもしれませんが、
サマータイムが導入されても正しく動作するでしょうか? 大丈夫、、、なはず。
# DST (PDT)
# Jan-Mar
1 7 * 1-3 * CGI
# Apr
1 8 1 4 0 CGI
1 7 1 4 1-6 CGI
1 8 2 4 0-1 CGI
1 7 2 4 2-6 CGI
1 8 3 4 0-2 CGI
1 7 3 4 3-6 CGI
1 8 4 4 0-3 CGI
1 7 4 4 4-6 CGI
1 8 5 4 0-4 CGI
1 7 5 4 5-6 CGI
1 8 6 4 0-5 CGI
1 7 6 4 6 CGI
1 8 7-30 4 * CGI
# May-Sep
1 8 * 5-9 * CGI
# Oct
1 8 1-24 10 * CGI
1 7 25 10 0 CGI
1 8 25 10 1-6 CGI
1 7 26 10 0-1 CGI
1 8 26 10 2-6 CGI
1 7 27 10 0-2 CGI
1 8 27 10 3-6 CGI
1 7 28 10 0-3 CGI
1 8 28 10 4-6 CGI
1 7 29 10 0-4 CGI
1 8 29 10 5-6 CGI
1 7 30 10 0-5 CGI
1 8 25 10 6 CGI
1 7 31 10 0 CGI
# Nov-Dec
1 7 * 11-12 * CGI > 1 8 25 10 6 CGI
> 1 7 31 10 0 CGI
1 8 30 10 6 CGI
1 7 31 10 * CGI
こう? >>821
意味はよくわからないけど、大丈夫そうなんですね。
1000000000になったときはYahoo掲示板がバグってたなあ。 というか,TZ をしかるべく設定すればいいのかと. >>799の件ですが
無理と知りつつ<ヽ`∀´>板からもお願いしておきます。。。
http://aa5.2ch.net/nida/ >>799はとりあえずAA系鯖で使用可能にしてほしい。 あとは新bbs.cgiをsports2にも投入することを求む。
あとは公開配布も求む。 あと年表示の百、千の位が表示されてる
つまり2001年あたりまで使ってた表示に戻ったということか > ・3回に1回にする
どーやって測定するのかと(りゃ
> ・ランダムに手を抜く
種生成はーと思ったが、ID生成時に呼んでいますからだいじょぶかしら。
> ・subject.txt/subback.html/index.html生成を別プロセスにして、たまに動かす
実装次第でちょっといけるかもだけど、工夫が必要かも
すなわちhttpd起動とリンクしといてかつspeedy化してたまに稼動、みたいな
安直ですけどね ex10なら新しいスレ立てたら更新or一定時間スレ立たなかったら更新みたいな感じとか オンデマンドにすれば良いだけでは。
呼ばれたら作る、必要ならそのまま保持して次のリクエストにそのまま返す
リクエストがなければ作る必要もないし。
まあ、html/*.htmlに相当する部分をファイルから読み込むようだと
ちと厳しいかもしれませんが。 専用ブラウザ専門にしてしまうってのは、広告の問題上無理なのかしらん。 >>836
じゃあ別に専用ブラウザ専門にしてしまって更新するファイルを
subject.txt一本にしてしまえば良いんじゃない?
read.cgiが無くても全く問題ない板なんだから。 >>837
ぶっちゃけた話、クライアントで出来るものは
IE/mozilla(win)/firefox(win)でプラグイン作ってしまえばええのではと言ってみるテスト
ただし私には開発できないので絵に書いた餅ですがね >>841
mozilla/firefoxにしか対応していませんが、何か?
専用ブラウザのひとつととれますが何か? index.html subback.html の更新をたまにサボるようにした。
subject.txt は従来どおり更新してます
対象サーバ
ex10
live20
live16
live15 subject.txtの更新もサボるとか言い出した時はぶっ殺してやろうかとおもたよ♥ Q.IDの後ろに付いてる0とかOってなに?
A.書込みがPCか携帯かを区別する目印です。
ちなみに、PCが 0 (ゼロ) 、携帯が O (オー) bbs.cgiのソースってどこにあるのん?
read.cgiは2ch-toolかなんかにあったんだけど
読んでみたい。 そうか,それは残念
unix板のwizard連中に見せればなにか妙案も思いつくとおもったんだけどね。
>>852
実名明かしたメールをひろゆきに送れば1年後に検討してもらえるかもしれない live16のbbs.cgiがしょっちゅう反映されなくなる
そのたまカキコ数に波が出る >>853
1年以上経過したけれども何の音沙汰もありません♪ ほんとは外部設計書みたいなのあればいいんだよね。
セキュリティ上明らかにできない機能はブラックボックスでいいから。
やっつけ仕事なので人に見せられるレベルでないとかなんとかw いろいろと荒らしがでるとかいってたんだけど。
「ソース隠すことはセキュリティ対策にはならない」と論破されてからは特に有効な反論も出なくて
のらりくらりと話をスルーしている。
見せる義理。たしかにないですね。
ではbbs.cgi再開発がんばってください。 見てやる義理のある方々に任せておけばいいでしょう。 IDの後ろに投稿回数の表示とか出来ないかなぁ…ID:xxxxxxxx0 (このIDによる投稿は12レス目)
みたいな…
そうすれば専用ブラウザに一定回数以上のIDを荒らしと見なして自動あぼーんする機能とか
出来そうでいいなぁとか思ってみたり。 そんなに連投多いですか?
個人的には、ちょっとうるさいな、と感じたら
手動であぼーんするだけで十分足りるような気がするけど ふとSETTING.TXT見たら
BBS_BG_SOUND=
なにこれ変態じゃないの? 「ソース隠すことはセキュリティ対策にはならない」
これって神話でしょ。 をを!とうとう公開しちゃうのかな?o(^-^)o ワクワク
お掃除ならやってみたいかもかも。 そのとおり。
正しいのは
「ソース隠せばセキュリティ対策は万全」 >>872
ひろゆきの言いたい事は、ソースを隠すことには
セキュリティの観点から見てそれなりの利点がある、ということでしょ そんなことよりおまいら、mozillaのソースコードが流出したらしいですよ。
ttp://www.hyuki.com/tf/?20040401145329 HTTPサーバの動きとかCGIの起動原理とかまでひっくるめてまで隠せるんならな。 1「ソース隠すことはセキュリティ対策になることもある」
2「ソースオープンにすることはセキュリティ対策になることもある」
んで、まだ動いてないシステムであれば、2の可能性はありますが、
既に動いてるシステムであると1の可能性が高いのですな。
オープンしたとたんにソースを見なければわからない脆弱性で
いきなり攻撃される可能性もあるわけです。
これは、つまり公開しないってことですよね。
それはそうと、書き込み時間の取得のタイミングを変更する
ことは無いですかね?あまり実益が無いですけど、書き込み時刻と
スレ番号がずれることがなくなると思うのですが。 みんなbbs.cgiのソース見たいだけだよ。何に使うのかは知らんが。 実益のないことにリソースを使ってもしょうがないような、、、 漏れが言いたいのはセキュリティ対策に「万全」「完璧」など存在しないということ。
永遠に努力を強いられる過酷な問題です。
ここの場合、ソース隠してもCGI仕様に則ってるので少なくともインタフェース仕様は公開されているも同然。インターフェースのみ分かっているブラックボックスのセキュリティホールをどうやって見つけられるかというとこに焦点が集まる。 永遠に見つからないセキュリティホールはセキュリティホールではない。
永遠に見つからない保証はないよ?
で、話戻すとインターフェースのみ分かってるブラックボックスの突付き方はまずいろんなアクセスを試みること。なので次にやらなければいけないのは外部からのアクセスの監査になります。それはやってるのかな? >>882
ソース隠せば、2ちゃんのセキュリティホールをわざわざ解析してまで
攻撃しよう、と思うハッカーが少なくなるんじゃないか、ということではないでしょうか
まあ、2ちゃんがどの程度セキュリティ対策を重視しているのか
甚だ疑問ですけどね。そんなに大事なら、サーバ別負荷の統計とか
狐さんの実験とか、全部やめさせてしまえばいい。もっと安全になりますよwww >>881
確かにそうですね。遊べるし、困っているわけでも無いですし。
こんなことが出来て面白いので。 >>878
アバウトなアーキテクチャぐらいは公表してもいいかと思います。
ログ記録部分とか秘密にしなければならない部分は非公開が鉄則です。
まあそれでも見せたくなければNDAでも結んで見てもらうっていう手もありますがね
某有名RMSが激しく抗議しそうですがw もともとセキュリティ対策ってのは実益が無いのに注力しないといけない類の活動ですよ。
アーキテクチャは公表してもいいんじゃないですか?
ただ、ソースを読める人がアーキテクチャをいちいち書くのを
嫌がらなければの話ですが、、、
RMSってなんですか? >>890
RMS=個人名イニシャルです。むむむさんあたりなら確実にぴんと来るでしょう。
>ただ、ソースを読める人がアーキテクチャをいちいち書くのを
>嫌がらなければの話ですが、、、
そんなにむずかしいことじゃないはずですよ。
整形する
datにかく
なんてことをかいていけばいいので。 アーキテクチャって bbs.cgi でいうと何ですか? そうそう、時間のことは結局下記のようなことです。
だからどうしたと言われたらおしまいなのですが。
とりあえず、故意に時間がずらせると言うことだけです。
http://qb5.2ch.net/test/read.cgi/operate/1111551639/749-751 アーキテクチャはいきあたりばったりでソース主導で書いたと吐露されても困るな。w >>892
どーゆー手順で処理しているか、ということです
アルゴリズムといったほうが正しかったかもしれない。 それは既に流出しているような
それも何回も、
それ以来変わっていません。 再度書いて見ました
2ちゃんねる bbs.cgi アーキテクチャ
1) 始まり
↓
2) 各種パラメータ取得
↓
3) パラメータチェック(この処理超巨大) → byebye
↓
4) dat書き込み
↓
5) index.html subject.txt subback.html 更新
各鯖ごとの/dev/random先頭16byteを公開して下さいお願い >>900
それ公開したら、書き込む前にID分かるようになるんだっけ? っていうかIDの算出方法そのものも教えて下さい>< >>902
そんなの公開されてるでしょ
というかスレ上で公開でみんなでわいわいやったんだから >>899
故意と言っても数分程度しかずらすことは出来ないのですが、先ほどの内容で説明しますと・・・
まず、サーバに接続して、HTTPのヘッダ情報を送ります↓
POST /test/bbs.cgi HTTP/1.0
Host: qb5.2ch.net
Content-length: 129
Referer: http://qb5.2ch.net/operate/
User-Agent: Monazilla/1.00
Cookie: PON=****.***.co.jp; expires=Friday, 01-Jan-2010 00:00:00 GMT; path=/
Connection: close
↑ここまで送ると書き込み時間が決定します。
その後、↓の内容を時間をかけて送信すると、その時間差が生じて書き込まれてしまう。
bbs=operate&key=1111551639&time=1104688508&submit=%8f%91%82%ab%8d%9e%82%de&FROM=&mail=sage&MESSAGE=%82%b1%82%f1%82%c8%8a%b4%82%b6
ただ、↑の情報を送信している間に誰かが書きこまないと、時間がずれているか分からないです。
とりあえず、これだけのことなんですが。 >>907
低速回線環境(PHSなど)と高速回線環境(FTTHなど)が混じったときの
タイムマシーン現象に似せているわけですね。
少なくともこの現象は、もう何年も前からありました。
TCPのパケットを故意に分割して、タイムアウトするまで引っ張るという感じですね。
>>909-911
そうです。ただ、これによって著しく不利益が生じるわけではないと
思うので、特に問題ではないですよね。
実際、この方法でコネクションを引っ張り過ぎるとエラーで
切断/書き込まれないようなので最高でも数十分?くらいかな。 コネクション引っ張る(= 受付嬢を占有する)のはサーバにとっては、コスト高いですね。
だって、受付の人数って決まっているし。
遅い携帯が受付を占領してhttpdがまずしくなるのと、おなじりくつかと。
というかそうか、こういう場合に遠慮なく切っちゃうようにタイムアウト入れるのは、
効果あるのか。 切っちゃっていいんじゃないですか?
数十分も引っ張って迷惑するのは投票所w ちなみに、携帯系サーバは既にTimeout 5にしてあります。
相当効果あったと、記憶しています。
#
# Timeout: The number of seconds before receives and sends time out.
#
#Timeout 300
Timeout 5 (知っている人は気付いていたのだろうけど)この方法が公になったので、
同じ事を利用してリソースを食いつぶそうという愉快犯が出てくるかもしれない。
タイムアウトを設定する手段は準備しておいた方がいいと思われます。
失礼。いつでもコーイということでしたか。(;^ ^
>>917
まぁ、ステータスログは逐次的にとっているので、
問題になるようなら、ぼちぼち >>916 を掲示板サーバにも入れるってことで。 重くなると十分単位で書き込みがずれたり
入れ替わったりするですね 自作PC板の日付表示、ず〜っと、あのままですか?
いゃ、自分はアムダーなんで今のままで良いんですけどね。 >>917
時間ずらしは前にもテストスレで(◆MIPS.kHN86さんが?)実験してたから
知っている人は多そう。(少なくとも、自分はそれを見て気付いた。) >>923
2週間くらい前のでしたらきっと自分です。テストスレで試していました。
実況では時間がずれることはよくあるので、この現象自体は皆さん
知っていると思います。
しかし、実際のところ、これには少し準備が必要なわりに反応が鈍いせいか
やってる人を見たことないですね。 低負荷時にindex更新頻度を上げるってのはできないんだろうか? ってゆうか、
「3分以上古かったらindex更新」とかにしたら?
index生成って結構処理おっきいと思うんだけど。 index作成はbbs.cgiから切り離して、index作成cgiをcronで動かす。 cronでもコストが大きいからdaemonにしちゃうとか。
タイマとキューを使って細かく制御できればベター index と subject.txt はどう違うのでしょうか? >>898
2) 各種パラメータ取得
↓
3) パラメータチェック(この処理超巨大) → byebye
これを順番を適切にするだけでかなり違うような希ガス
・軽くて重要なチェック(たとえばBBQ)を前に
・重くてあまりはねる確率の少ないものを真ん中に
・統計用を最後に
といったかんじで。
で、ぜんぶOKになってはじめてdatをひらく、と(もっともこれは既にやっていると思いますが)。 1) 適切ってのが具体的にわからない。
2) わかったとしても、順番を並び替えるとたぶん動かないだろう。。。
という二重苦だったりします
BASIC (80年代初頭) で組んであると思ってください。 BASIC......ですか、なにもかもなつかしい。 Fortran77
C(78年)
ADA(79年) >>931
subject.txt は、更新順(sage考慮)に並べてある。
index.html はその上位 10 個を HTML 化した、トップのページと。
bbs.cgi は Perl で書かれている。
こんなところであっていますか? 全部白紙に戻すような話だけど、
xmlで全掲示板を構成すれば、鯖の負担も少ないし(2ch程度の大規模サーバーだからの話ですが・・・)、容量も負担しない。
上手くいけば、今のdatの3/4の容量削減が出来ると思われ。
read.cgiの再開発プロジェクトの住民に悪いが、read.cgiもいらなくなる。
WebProg板とWeb製作板の住民に協力を依頼すれば、たくさんの住民が食いついてくるし・・・
ひろゆき・root両氏の降臨キボンヌ
>946多分あってる。 その論理はちょっとおかしい気が
xmldb(?)で〜
ならまだわかるけど まぁdatや、subject.txtにある、<>が必要なくなるのでw
subject.txtのsubject.csvに変えて<>→,にすれば無問題。
>949氏等へ
専門的な話をしてスマソ。
root氏やFOX氏なら直ぐに話が分かるような気がしますが・・・
とりあえず、管理団の回答を待ってます。 <dat>
<res name="動け動けウゴウゴ2ちゃんねる" mail="sage" date="2005/04/08(金) 17:46:04 ID:AQwRoo140">
その論理はちょっとおかしい気が <br> xmldb(?)で〜 <br> ならまだわかるけど
</res>
<res name="動け動けウゴウゴ2ちゃんねる" mail="sage" date="2005/04/08(金) 17:51:04 ID:+8zeIhpi0">
高度なネタですね
</res>
</dat> >953そんなかんじで
修正を加えると
<log>
<res num="948" name="動け動けウゴウゴ2ちゃんねる" mail="sage" date="2005/04/08(金)" time="17:46:04" ID="AQwRoo140">
その論理はちょっとおかしい気が <br> xmldb(?)で〜 <br> ならまだわかるけど
</res>
<res num="949" name="動け動けウゴウゴ2ちゃんねる" mail="sage" date="2005/04/08(金)" time="17:51:04" ID="+8zeIhpi0">
高度なネタですね
</res>
</dat>
相談:このような場合、レスアンカーはどのようにすれば 指定したレスに飛ぶんでしょうかね?/スレ番.xml?num="レスNo."でOKでしょうか?
>954あり
言い忘れたけど、HTML化も不要だな。
HTML同然だし。 XMLは、いろいろなところで流行りだったりして、
各種フォーマットをそれにするというのは、センスとしてはむろんありえます。
で、もし2ちゃんねるのようなものを一から作るとしたら、
XMLベースでいくというのはかなりありえますが、
既に動いている2ちゃんねるに導入するからには、
「作るに足る大きなメリット」言い換えれば「XML化によって見える果実」が
必要な気がします。
後ろにDBを置きやすいとか、標準形式だからブラウザ作ったりする人が対応しやすいとか、
将来の拡張が容易とか、そのへんのもの*以外*に、何かあるといいかもです。
より、実利的な何かがいいかも。
例えば、10倍負荷に強くなるとか、かける工数に対してメリットが目に見える形で存在するなら、
その気にさせる動機になるかもです。
ここの掲示板は「非互換な形にいきなり内部形式を変える」ことには、かなり軽く動くところがあるので、
果実が甘くておいしいなら「いきなりバサっと導入」は、常にありえるかと。 メリット無くてもデメリットさえあってもひろゆきがやるといったらやる悪寒 >>961
転送量を考えれば XML にしたって
read.cgi かなんかでの行数制限読み込みは必要だろう 2ちゃんの負荷分散は専ブラによるところが多い。
現在はIEや携帯の負荷を分散させる作戦中。
100%htmlベースの通常の掲示板というのはシステムの増強なしには無理でしょう。
有料化など収益があれば別ですけど。 「bbs.cgiスレでXML化を言い出す奴=Java屋の会社に入った新入社員」
「bbs.cgiスレでMySQL化を言い出す奴=オープンソースWebASPを聞きかじった新入社員」
XML化してもハードウエアには優しいかも知れんけど、トラフィック的にはそうでも無いんじゃないの? libxml2をincludeしてソース書いたことあるか? >>955
ちょっと要領を得ないのだけど、XML化したとして、そのparseはクライアント側が
やるんでしょうか?XMLをブラウザに丸投げしてブラウザが解釈?
だとするとクライアントの互換性が問題になってくると思う。
サーバーがparseするんであれば、その負荷が馬鹿にならないと思うし、
(Parser作ったことある人なら分かると思うけど、複雑な構文を殻に使った
入れ子のparserってかなり負荷大きい)結局read.cgiがベタデータをparseするのと
何も変わらんので、むしろ負荷は大きくなると思う。
あと、datの容量が減るというのが良く分からないのはどうして?
>>953の形式の方がディスクのリソース食いそうだけど。
ちとXMLについてはほとんど無知なのでおかしな事言ってたらスマソ。 >>950
ネタじゃなくてマジだったのかよw。レスついてるしネタにしとけばいいのに >971
ひろゆきキタ━━━━━(゚∀゚)━━━━━!!
>957=root氏
今のスレは現在のbbs.cgiを使用して、
新スレは新しいbbs.cgiを使用すれば大丈夫だと思われ。
そして今のスレが全部落ちれば、XMLを本格運用すれば(・∀・)イイ!!と思います。
他のメリット・デメリットにに関して・・・現在調査中。
>970全てクライアント。
互換性:デザインはCSSを使用してるので互換性は問題なし!!
datに付いてる<>←これが不要になる。
<a href="">〜</a>とかHTMLでは必要だけど、XMLは<mail>〜</mail>形式でGJ。
ログも読みやすくなる。(正直、今のDATは見にくい。)
read.cgiの容量も軽くなる。→鯖の負担も軽くなる。
専ブラがどうとかこうとか→実施の一ヶ月ぐらい前に、専ブラの作者にメールで通告。
>967重くなるのはクライアント側。けど体感速度は変わらない。
以上です。 なんか真性くさいなあ。
> datに付いてる<>←これが不要になる。
これチョトワラタ >>973
>>他のメリット・デメリットにに関して・・・現在調査中。
そういうのを調べた上で提案するんだろアホか
つかプレゼンした時あるの? 本気で言ってんですかねぇ。
実際に>955の例とDATのサイズを比較してみたことがあるんかな?
XMLやCSSに対応していないブラウザとか持ち出したら「主要ブラウザで
見れれば問題なし!」とか言うんだろうな…。 >975
DATより軽い等
既出のメリットだけで良いかなぁと思ってやった。
今は反省している。
>976基本的にHTMLと同じだっつーの。 XMLにすると、一般ブラウザ利用者が多ければメリットになりそうな気がするが、2chブラウザにとってはデメリットしかないんじゃないのか。
とにかく、datのファイルサイズが増えるのは確かだと思う。 >>978 若いねぇ。
>955 のXML部分を拡張子htmlで保存してWebブラウザで開いてみなされ。
その表示でおまいさんが満足できるなら何も言うまい。
で、DATよりディスク容量をくうのは理解できた? クライアント側でparseプラットフォーム汎用って言うとJava2のXercesに落ち着いてしまうわけだがどうよ。重いんじゃね? いっそ全部preタグでくくってテキスト出しという手もあるなぁ。
文中のURLとか意味のありそうなとこは専用ブラウザが上手に解釈してあげると。
んでもAAがボロボロになっちゃいそうな予感w >>984
preタグだけはやめてくだされー
by au使用者 あのさぁ
すでにクッキーの仕様がIE以外無視でしょ?
主要ブラウザとか以前の問題じゃないかしら。
上で出てるけど俺も個人的にXMLに移行する理由がないと思います。。 まずはこのスレッドや運用情報板のスナップショットをXML化してどっかにアップしてみるとか・・・
サイズの比較とかもそれで一目瞭然と思うわけだが(^_^;)
ま、XML化する必要があるとは思えんけどね(^_^;) >987
壷が使えなくなるのが嫌だってキッパリ言えばいいのに XMLのデメリットはサイズの肥大化だよ?
2chみたいにフォーマットが決まっている場合、
データ項目の変更も無いし、datで十分だよ >>990
あと、XMLは構文解釈が面倒だしコストかかるから、datの汎用性がなくなると想う。
今の形式はPerlなんかでもさらっといじくれるのが魅力なわけで。
やはりdatの場合は<>SVが効力を発揮する場面でしょ。最近のエンジニアは何でもRDBに
突っ込んだりXML化するのが好きな人多いけど、結局コストが掛かって固定長や
CSVの方がよっぽどマシだったってケースも存在するんだよな。ちょっと愚痴。 サイズを気にしてるなら今のdatも作り直したほうがいいんでない?
このスレのdatを適当に削ったら一割以上サイズ減らせたし。 現行のサイズを気にしてるんじゃなくて、現行よりサイズが増えるのを気にしてるんでしょ。
rootが書いてるように作業量に対してメリットが大きければやるでしょ。
1割減らすメリットが充分大きければやるかと。 とりあえずアンカーにリンクつける必要ないんじゃない?
↓これ生成するときにつけたらいいのでは?
http://qb5.2ch.net/operate/html/1103495887.html
どうせread.cgiでは変換するんだから 名前がデフォルト名無しさんの場合はDATに書き込まず、
表示するときにSETTING.TXTから読んで付けるようにしたら?
結構削減されるような気がスルですが。 このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。 レス数が1000を超えています。これ以上書き込みはできません。