X



トップページ運用情報
1001コメント347KB
bbs.cgi再開発プロジェクト 3
レス数が950を超えています。1000を超えると書き込みができなくなります。
00012chtubo愛用者〜ヘ(゚д゚ヘ))))))〜61 ◆yBEncckFOU
垢版 |
04/02/13 19:08ID:o3jHs/Mb
peko鯖の稼動によりボトルネックの一つである事がより明らかになった
bbs.cgi作り直しプロジェクトです。

関連スレ
【Project peko】2ch特化型サーバ構築作戦 Part6
http://qb3.2ch.net/test/read.cgi/operate/1076413123/
◆ 全サーバトリップ統一作戦
http://qb3.2ch.net/test/read.cgi/operate/1067245837/
bby -- スレッド情報一元管理システム構築スレ
http://qb3.2ch.net/test/read.cgi/operate/1073058944/
BBQ システム(公開串リストメンテ)
http://qb3.2ch.net/test/read.cgi/operate/1073061576/
【連投規制】Samba24 情報要望スレ その3
http://qb3.2ch.net/test/read.cgi/operate/1075568934/
【広告】Rock54【自動排除】 3
http://qb3.2ch.net/test/read.cgi/operate/1074735308/
■ 新しいサーバで read.cgi が正しく動かない問題。 (dat落ち)
http://qb.2ch.net/test/read.cgi/operate/1047840578/


前スレ
bbs.cgi 再開発プロジェクト
http://qb3.2ch.net/test/read.cgi/operate/1053067870/
bbs.cgi再開発プロジェクト2
http://qb3.2ch.net/test/read.cgi/operate/1069144193/
0852 ◆Reffi/bQ.c @reffi@報告人 ★
垢版 |
04/06/11 17:08ID:???
my $ripfile = $PATH . "内緒";
my (@IP, @IIP, $TIP);


if($FORM{'subject'} ne ""){

#スレッド立てすぎチェック
my (@IP, @IIP, @ZIP, $TIP, $VIP, $SIP, $JIP, $HIP);

$TIP = $HOST;
$TIP =~ s/<(.*)>//g;
$VIP = $TIP;

if($FLAG == 5){
$TIP = $FORM{'sid'};
$TIP =~ s/\W/\\$&/g;
}else{
0853 ◆Reffi/bQ.c @reffi@報告人 ★
垢版 |
04/06/11 17:09ID:???
my @ippart = split(/\./, $TIP);
$JIP = $ippart[0];
if($TIP !~ /[a-zA-Z]/o){
$TIP =~ s/[0-9]+$//o;
$TIP = "^" . $TIP;
}elsif($JIP =~ /[x\-\.\d]{12}/o){
$TIP =~ s/([x\-\.\d]{5})([x\-\.\d]*)/$1\.\*/o;
}elsif($JIP =~ /\d{8}/o){
$TIP =~ s/(\d{3})(\d*)/$1\.\*/o;
}else{
if(@ippart < 5){
$TIP =~ s/\d+/\.\*/g;
}else{
if(($ippart[@ippart-6] =~ tr/\d/$&/) > 4){
$TIP = $ippart[@ippart-6];
$TIP =~ s/\d.*/\.\*/g;
}else{
$TIP = "";
}
$TIP .= "$ippart[@ippart-5].$ippart[@ippart-4]";
$TIP =~ s/\d+/\.\*/g;
$TIP .= ".$ippart[@ippart-3].$ippart[@ippart-2].$ippart[@ippart-1]";
}
}
$HIP = "$ippart[@ippart-3].$ippart[@ippart-2].$ippart[@ippart-1]";
}
0854 ◆Reffi/bQ.c @reffi@報告人 ★
垢版 |
04/06/11 17:09ID:???
# 書き込みログファイル
open(RIP,"<$ripfile");
@ZIP = <RIP>;
close(RIP);
# 書き込みホスト保存
open(WIP,">$ripfile");
#flock(WIP,2);
print WIP ("$HOST,$FORM{'sid'},$FORM{'key'}\n", @ZIP)[0..$SETTING{'BBS_THREAD_TATESUGI'}-1];
close(WIP);

}
0858動け動けウゴウゴ2ちゃんねる
垢版 |
04/06/12 14:58ID:8VflbAB0
あげとく
08597M. ◆dq7M./4Uw.
垢版 |
04/06/12 17:23ID:O0ZFAfUU
>856
なんか他の色々なところに使ってて、
すれたて規制には使ってないらしらし、
0860動け動けウゴウゴ2ちゃんねる
垢版 |
04/06/12 17:28ID:Cfpi0Eq0
112 名前:FOX ★[] 投稿日:04/06/12(土) 17:25 ID:???
bbs.cgi に入れることに成功した

んじゃ 実際に呼んでみよう。。。
0861動け動けウゴウゴ2ちゃんねる
垢版 |
04/07/07 18:38ID:o8lB/EVs
もう開発しないのか?
0862動け動けウゴウゴ2ちゃんねる
垢版 |
04/07/09 16:34ID:xo7Sweag
cgi以外に、通常ブラウザを制御できるプログラムはないのですか?
0863動け動けウゴウゴ2ちゃんねる
垢版 |
04/07/09 16:37ID:qeTzhCtY
>>862

どうぞこちらへ

WEBプログラミング@2ch掲示板
http://pc5.2ch.net/php/

サーバーサイドプログラミング関連の話題を扱っています。

Perl, PHP, Java, Ruby, C, Tcl といった言語処理系の話、
Apache, CGI, JSP/Servlet, ASP, ColdFusion といったアプリケーション実行環境の話、
Oracle, PostgreSQL, MySQL といったデータベースの話などをテーマにしています。

スレタイトルは言語がハッキリわかるようにしてください。(言語を特定する場合)
配布中止/配布元不明スクリプトが欲しい人はダウンロード板へ
JavaScript、VBScript等クライアントサイドの話題はWeb製作板へ
0864動け動けウゴウゴ2ちゃんねる
垢版 |
04/07/09 16:40ID:xo7Sweag
>>863
板違い失礼。
ありがとねんノ
0865
垢版 |
04/07/11 03:05ID:g55t+9Ba
test
0867本7
垢版 |
04/07/24 10:41ID:j1AbFFVk
Apacheモジュールのmod__bbsならあるけど2chで使うにはコアすぎるかな?
0868本7
垢版 |
04/07/24 11:51ID:j1AbFFVk
てか新bbs.cgiってもう完成したんだっけ?
0869動け動けウゴウゴ2ちゃんねる
垢版 |
04/08/07 16:35ID:+FhTqV9+
NGワードのことだけんども

"&r"を削除するんでなくて、"&amp;r"に変えるようにできないかな。
現状の抜け穴対策と、通常の投稿として"&r"がある時の救済策。

スレッドタイトルのNGワードも同様の処理にして欲しい。
現在の、"&"を全て削除する方法では誤爆が多すぎる。
0872動け動けウゴウゴ2ちゃんねる
垢版 |
04/08/08 20:56ID:GsL2iQKg
一応書いとくと、bbs.cgiにもNGワードがございまして、
特定の文字列があると投稿できなかったり、或いは
別の文字列に変えられたり、削除されたりするのですね。
0881
垢版 |
04/09/17 13:41:16ID:I3k6ObmZ

0882Giraffes ◆uHAyZd8FGA
垢版 |
04/09/23 21:42:07ID:tCfWkHg0
bbs.cgiが処理するvalue値、形式は何なんでしょか?
<input type=hidden name=time value=1095940962>

初歩的な質問ですみませんが、どなたか <(_)>
0884882
垢版 |
04/09/24 08:49:47ID:QH62aZR5
ですね (_)m
0885
垢版 |
04/10/13 14:31:35ID:topL7/m/
.
0897動け動けウゴウゴ2ちゃんねる
垢版 |
04/11/05 20:50:15ID:J43AHOGt
とりあえずさ、どう考えても今のやつに手を加えるのが現実的ではないだろうか
誰か有能な人を雇用してよ。
俺とか。
0900root▲ ★
垢版 |
04/11/06 09:52:53ID:???
不動楽さんが手を入れて、明らかに板飛びが減ったですね。
0901通りすがりのUNIX屋
垢版 |
04/11/07 10:01:10ID:mqnEPazJ
共有メモリ使ってはいかがですか?
共有メモリ上にスレッド毎のメッセージ数入れておいて、共有メモリを更新する数msecだけ
SYSVセマフォ(若しくはPOSIXのセマフォ)で排他。
1000を多少越えても良いのだから参照に排他は不要。
SYSV共有メモリで足りなければmmapの共有メモリで。

処理フロー
1.規制確認
2.レス数確認
3.共有メモリロック
4.レス数インクリメント
5.共有メモリロック開放
6.datにアペンド。
0902▲:/usr/local/bin/ch2 -o i686 ◆P8fXJj6wwo
垢版 |
04/11/08 16:45:33ID:WD2hE2cd
mod_cgidso入れさせてテストさせて見たいといってみるテスト
せっかく5.3Rもでたことですし、exで実験!と振ってみるテスト

>>900
つーことは今のbb.cgiソース管理者は不動楽さんということでFA?

>>901
mmapはかなりコストを食うということで却下された経緯があったはず
0903root▲ ★
垢版 |
04/11/09 02:39:27ID:???
>>902
管理者というか、いじっている人の一人かと。
0904▲:/usr/local/bin/ch2 -o i686 ◆P8fXJj6wwo
垢版 |
04/11/09 09:22:11ID:hTgm05bT
>>903
ふむ、では今いじれるのはrootさんを除くと(一部はその気になればいじれるため)

ひ(りゃ(ほとんど触っていなさそうだけど)
見習い
不動楽

あとだれがいましたかね。
0907 ◆cZfSunOs.U
垢版 |
04/11/15 22:41:54ID:ZCkDk6ko
read.cgi はともかく bbs.cgi で mod_cgidso を使うとなると,
普通の実行可能バイナリじゃなくて共有オブジェクトにしなきゃいけないとか,
自前でリソース解放してくれないとどんどんリークしていっちゃうとかで,
perlcc で直接バイナリ作るんじゃなくて,生成された C コードを
手作業で直さなきゃならないんでしょうけど......

まぁ bbs.cgi に関しては,fork() させないようにするなら
mod_perl の方が現実的かなとは思います.

あとは,suExec の代替措置も必要なんでしょうけど,
perchild MPM よりも安定して動くと言われているのがこれ.
    Metux MPM http://nibiru.borg.metux.de:7000/wiki.mpm/

**********************************************************************

個人的に bbs.cgi 関連で気になっているのは,まずは ftp のリンク URL が
おかしくなること (ex. ftp://core.ring.gr.jp/pub/ ).これは ime.nu で
ftp リンクを扱えるようになっていなければ,ime.nu を入れず直リンに
した方がいいのかも知れませんけど.

あとは,NAME/MAIL の Cookie の問題ですね.設定がサーバサイド,
読み出しがクライアントサイドという不整合のため,Mozilla 等では
文字化けしてしまうと.現状では Set-Cookie ヘッダで設定していますが,
これを JavaScript の方で設定すればいいのではないかな,と.
とはいえ,bbs.cgi 出力に Cookie 設定用 JavaScript コードを入れると,
" や \ を \ でエスケープさせる必要がありますが,Shift JIS だと
漢字等の2バイト目が \ になることもあるんで,この判定をきっちりやるのも
結構大変か......むしろ bbs.cgi 出力では行わず,投稿フォーム側の
onsubmit() でこの処理をやらせた方が安全ですかね.
0908 ◆cZfSunOs.U
垢版 |
04/11/15 22:43:05ID:ZCkDk6ko
その場合の各板トップ及び read.cgi 出力の JavaScript コード変更案.
----------------------------------------------------------------------
onload = function(e) {
    var N = getCookie("NAME"), M = getCookie("MAIL"), i;
    with (document)
        for (i = 0; i < forms.length; i++)
            if (forms[i].FROM && forms[i].mail) {
                forms[i].FROM.value = N;
                forms[i].mail.value = M;
                if (forms[i].addEventListener)
                    forms[i].addEventListener("submit", setCookie, false);
                else
                    forms[i].onsubmit = setCookie;
            }
};

if (!Date.prototype.toUTCString)
    Date.prototype.toUTCString = Date.prototype.toGMTString;

function setCookie(e) {
    var exp = new Date();
    exp.setMonth(exp.getMonth() + 1);
    document.cookie = "NAME=" + escape(this.FROM.value) + "; path=/; expires=" + exp.toUTCString();
    document.cookie = "MAIL=" + escape(this.mail.value) + "; path=/; expires=" + exp.toUTCString();
}

function getCookie(key, tmp1, tmp2, xx1, xx2, xx3, len) {
    tmp1 = " " + document.cookie + ";";
    xx1 = xx2 = 0;
    len = tmp1.length;
    while (xx1 < len) {
        xx2 = tmp1.indexOf(";", xx1);
        tmp2 = tmp1.substring(xx1 + 1, xx2);
        xx3 = tmp2.indexOf("=");
        if (tmp2.substring(0, xx3) == key)
            return unescape(tmp2.substring(xx3 + 1, xx2 - xx1 - 1));
        xx1 = xx2 + 1;
    }
    return "";
}
0910動け動けウゴウゴ2ちゃんねる
垢版 |
04/11/22 23:29:27ID:lGHEU7j1
もう今はスクリプト配布してないんだっけ?
4.2ぐらいのころのは持ってるよ。
0911動け動けウゴウゴ2ちゃんねる
垢版 |
04/11/24 13:24:29ID:ZoS47VUx
MySQL使えないんでしょうか?
ファイルシステムでこの規模なんて自分では考えられないです。
DATを返すインターフェイス作っておけば問題ないと思うのですが・・・。
0915動け動けウゴウゴ2ちゃんねる
垢版 |
04/11/24 21:22:09ID:oKqt30OR
>>914
DMDM と MDMD の MD5 を算出して、DB(MySQL) と照らし合わせて合致すれば桶だと思うので、
その部分以外は使い回しかと思われんこん。
0917動け動けウゴウゴ2ちゃんねる
垢版 |
04/11/28 23:37:38ID:LLgV0enQ
>>911
過去ログ検索とかではDBは有効だけど、ライブスレッドなら
ファイルのが負荷少ないしベストな選択のように思うけど、
どうなんだろう。
0919動け動けウゴウゴ2ちゃんねる
垢版 |
04/11/28 23:59:22ID:6IOqzKJj
>917
ファイルシステムにするとキューだのロックだのを同期する必要がある。
MySQLだと、そのあたりはデータベースに任せられる。

また、MySQLをバックエンドにして、閲覧系を複数にして負荷分散するのが非常に楽になる。
0920917
垢版 |
04/11/29 00:10:17ID:h4Qkpn0t
そうか書き込みのことを忘れてた・・・スマソ
MySQL速いらしいいいかもね。
0924動け動けウゴウゴ2ちゃんねる
垢版 |
04/11/29 20:55:08ID:4MCabMvy
そーゆーんじゃなくってさ、
bbs.cgi の改良でだいぶよくなる気がする。
だって何あのソース??
おっきく仕様変えなくても。。
0925動け動けウゴウゴ2ちゃんねる
垢版 |
04/11/29 22:24:47ID:ePnTCL4s
>923
Perl DBIでインターフェースを作っとけば、仮にCで書きなおしたりしてもインターフェース部分だけ変えればよいと。
んでDBはDBで切り離してチューニングが出来ると。
閲覧系のキャッシュ同期とかがけっこうノウハウあるらしいので高負荷サイトはそれなりに難しいらしいけど。
0926動け動けウゴウゴ2ちゃんねる
垢版 |
04/12/01 21:55:38ID:fVLVA0+J
関連ページをクリックして、Pingを発射したとき
どう足掻いてもスレッドのURLの末尾の/が相手先に送れないのですが
この問題もこちらでよろしいでしょうか?
2ちゃんねるpingβのスレがあるといいのですが、見あたらないので・・・
0929FOX ★
垢版 |
04/12/02 14:59:24ID:???
これから質問しまくるんで
優しく教えてください。

つまり Perl を知らないぼんくらなんです
0930FOX ★
垢版 |
04/12/02 15:02:26ID:???
sub bbs_main
{
our$version = "BBS.CGI - 2005 (for SpeedyCGI)";

&DispError2("FOX ★","<font color=green>FOX ★ ふふふっ</font>");
return;
}

とやって $version を DispEooro2 というサブルーチンで参照したいのですが
どうすれば参照できるんですか?

$version は SpeedyCGI に対応した、いわゆるグローバルな変数ではなく
ローカルな変数です。

ちなみにこうやって失敗しています(500 error)

print <<EOF;
version = $version
EOF
0932▲:/usr/local/bin/ch2 -o i686 ◆P8fXJj6wwo
垢版 |
04/12/02 15:25:56ID:WBZMaSLu
>>930
この例だと
-------------------
#! /usr/local/bin/speedy --r1

our $version = "BBS.CGI - 2005 (for SpeedyCGI)";

sub bbs_main
{

&DispError2("FOX ★","<font color=green>FOX ★ ふふふっ</font>",$version, $errnum);
return;
}
-----------
Dispの第2引数にversionを渡すようにしています。
errnumはエラー番号(たとえばapacheのエラーコードとか)
0933root▲ ★
垢版 |
04/12/02 15:27:12ID:???
FOX ★
FOX ★ ふふふっ

ホストHOST
FORM{'subject'}
名前: FORM{'FROM'}
E-mail: FORM{'mail'}
内容:
FORM{'MESSAGE'}

こちらでリロードしてください。 GO!
分からないことがあったら2ちゃんねるガイドへ。。。

アクセス規制・プロキシー制限等規制は、2ちゃんねるビューアを使うと回避できることがあります。BBS.CGI - 2005 (for SpeedyCGI)

が出る時と、出ないで500 Internal Server Errorになる時がありますね。
0934▲:/usr/local/bin/ch2 -o i686 ◆P8fXJj6wwo
垢版 |
04/12/02 15:30:00ID:WBZMaSLu
>>930
あ、まちがい、ローカル変数だったですね。スマソorz

# 実は私もperlはあまり詳しくない・・・むしろPHPのほうが強い

printはdisperror内でですかね。
0936FOX ★
垢版 |
04/12/02 15:53:29ID:???
いやー

まったく

たいへんたいへん
0938FOX ★
垢版 |
04/12/02 15:58:54ID:???
http://dso.2ch.net/test/bbs.txt

現時点での全ソース

今つまずいているところ【2】
$NOWTIME がローカルな変数になっていない
起動されるたびに変わらない

私の言っているローカルと一般的に言うローカルの意味が違うのかも、
別に私が言っているわけじゃないけどサ
0939FOX ★
垢版 |
04/12/02 16:10:39ID:???
でも、たまに変わるなぁ
ちょっと時間を置くと換わるのか?

http://dso.2ch.net/myanmar/

ここでやってます
0940root▲ ★
垢版 |
04/12/02 16:13:12ID:???
>>939
1分以上バックエンドにリクエストがないと、バックエンドをexitするようにしてあるので、
その時には元に戻ります。

やめる場合、bbs.cgiの1行目の-t60をやめればよいです。
0941FOX ★
垢版 |
04/12/02 16:14:49ID:???
なるほど、

-t60 なしでデバッグしたほうがいいっすね、
0942FOX ★
垢版 |
04/12/02 16:15:43ID:???
#!/usr/local/bin/speedy -- -b1048576

にした
0943 [―{}@{}@{}-] 動け動けウゴウゴ2ちゃんねる
垢版 |
04/12/02 16:31:19ID:yl4eb3hK
ぜんぜんわからんな・・・orz

http://www.google.co.jp/search?q=cache:Fh2W0Hmt6b8J:qtea.bne.jp/2004/+PersistentPerl+OR+SpeedyPerl+OR+SpeedyCGI+%E3%82%B0%E3%83%AD%E3%83%BC%E3%83%90%E3%83%AB%E5%A4%89%E6%95%B0&hl=ja&lr=lang_ja
あたりに原因があるようだ。CGIモジュールは、でかいからねえ。なので、SpeedyCGIを使うように変更してみたが、どうやら、グローバル変数の初期化をしてないようなので、reset 'a-z';を先頭行に追加してみた。これで、なんとなく、まともに動作しているようだ。
0945FOX ★
垢版 |
04/12/02 16:53:42ID:???
>>944
それやってみたけど、だめだったぞな
0946FOX ★
垢版 |
04/12/02 17:01:01ID:???
PID=$$ も書くようにした

当然のことながら、いつも同じPID、、、
さてさて〜、どうすればいいやら
0947root▲ ★
垢版 |
04/12/02 17:04:34ID:???
なるほど、、、。

常識的に(というか半ば無意識に)使っていたものが、使えなくなるですね。
代替手段は大体あるに違いないけど、こむずかしそうだ。
0948FOX ★
垢版 |
04/12/02 17:08:27ID:???
Time::time なんてのもあるんですか? < Perl
0949動け動けウゴウゴ2ちゃんねる
垢版 |
04/12/02 17:20:37ID:YeLg7Dw8
こういうノリではいかがでしょうか。

&bbs_main;
exit;

sub bbs_main {
my $GB = {};
$GB->{version} = "BBS.CGI - 2005 (for SpeedyCGI)";
$GB->{NOWTIME} = time;#現在時刻
$ENV{'TZ'} = "JST-9";#日本
#$ENV はそのまま使う
my %FORM;
$GB->{FORM} = {};
&foxReadForm($GB);#$FORM を読み込む

&DispError2($GB, "FOX ★","<font color=green>FOX ★ ふふふっ</font>");
return;
}

sub DispError2
{
my ($GB, $title, $topic) = @_;

print "Content-type: text/html; charset=shift_jis\n\n";
#-----------------------------------------------------------------------
print <<EOF;
<html>
<head>
<title>$GB->{title}</title>
<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
</head>
<body bgcolor="#FFFFFF"><!-- 2ch_X:error -->
<font size=+1 color=#FF0000><b>$GB->{topic}</b></font>
<ul>
<br>ホスト<b>HOST</B><br><b>GB->{FORM}->{'subject'} </b><br>
名前: $GB->{FORM}->{'FROM'}<br>E-mail: $GB->{FORM}->{'mail'}<br>
内容:<br>$GB->{FORM}->{'MESSAGE'}<br><br>
</ul>
<center>こちらでリロードしてください。<a href="../$GB->{FORM}->{'bbs'}/index.html"> GO! </a><br>
分からないことがあったら<a href="http://info.2ch.net/guide/">2ちゃんねるガイド</a>へ。。。<br><br>
アクセス規制・プロキシー制限等規制は、<a href="http://2ch.tora3.net/">2ちゃんねるビューア</a>
を使うと回避できることがあります。
</center>
<p>
time=$GB->{NOWTIME}<br>
$GB->{version}
</body>
</html>
EOF
#-----------------------------------------------------------------------
exit;
}
0950FOX ★
垢版 |
04/12/02 17:30:39ID:???
>>949
おおっ そういうほうが好き好き

$GB は構造体(クラス)と思えばいいのかな?
要素(メンバー)を追加するのは、たんに $GB->なんとか
とやれば追加されるのかな?

んで my で宣言されていても使い方がグローバルなら
結局はグローバルな変数になっちゃうということなのかしら?
レス数が950を超えています。1000を超えると書き込みができなくなります。

ニューススポーツなんでも実況