[過去ログ] bbs.cgi再開発プロジェクト 3 (1001レス)
1-

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
844
(2): 動け動けウゴウゴ2ちゃんねる 04/06/01 22:00 ID:YAEmiTro(1)調 AAS
>>843
mod_perlはhttpdプロセス一つごとにcgiが起動するからメモリ食う。
FastCGIの方がいいよ。
845: 動け動けウゴウゴ2ちゃんねる 04/06/02 03:24 ID:vuIr/nLK(1)調 AAS
保守
846
(1): 動け動けウゴウゴ2ちゃんねる 04/06/02 07:00 ID:g/lHGssg(1)調 AAS
>>844
read.cgi以外の*.cgiを処理するmod_perl有効のhttpdと。
*.gif|*.htmlなどの固定ファイル専用のSTATICビルドしたhttpd。
その二つを別ポートもしくはaliasした別IPで立ち上げて。
poundで分岐するってのはどうだ?
847: mod_perl 04/06/02 09:46 ID:qSUlVdsV(1)調 AAS
おそらく>>844は理解できていないか失敗した厨房
Apache拡張ガイドでも嫁

>>846
2chにそのような運用を期待するのは浅はかだと思わんかね
848
(1): 動け動けウゴウゴ2ちゃんねる 04/06/02 13:03 ID:j+uMUo52(1)調 AAS
そもそも、httpd数とプロセス(コネクション)数は1対1にする必要ないんだけどね。
httpdが数百個も動いてメモリが気になるなら、マルチスレッドで動かせばいいだけでしょ。
apache2を使っているんだから。
849: 動け動けウゴウゴ2ちゃんねる 04/06/03 12:54 ID:6tmZQ3gf(1)調 AAS
>>848
MPM workerで安定動作しているところってどこか知ってる?
ヤフーとかgoogleとかはどうなんだろうなぁ。
850: たつ ◆1qlFf1VE/. 04/06/04 18:22 ID:BOSVdGMa(1)調 AAS

851: ◆Reffi/bQ.c @reffi@報告人 ★ 04/06/11 17:08 ID:??? AAS
質雑スレよりスレ建て規制関連のソース転載しますね。

転載元
2chスレ:news
852
(1): ◆Reffi/bQ.c @reffi@報告人 ★ 04/06/11 17:08 ID:??? AAS
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{
853
(2): ◆Reffi/bQ.c @reffi@報告人 ★ 04/06/11 17:09 ID:??? AAS
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]";
}
854
(2): ◆Reffi/bQ.c @reffi@報告人 ★ 04/06/11 17:09 ID:??? AAS
# 書き込みログファイル
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);

}
855: 7M.@ j179136.ap.plala.or.jp ◆dq7M./4Uw. 04/06/11 18:03 ID:YUq2wQsC(1)調 AAS
RIPファイル内緒って。。。(汗
普通に知られてると思うんだけどな。。。(汗
856
(1): 動け動けウゴウゴ2ちゃんねる 04/06/11 22:00 ID:2qpKDhau(1)調 AAS
>>853であれこれやってるものが>>854のどこにも使われてないように
見えるんだが
857: 動け動けウゴウゴ2ちゃんねる 04/06/12 14:14 ID:c+x+USDx(1)調 AAS
こっちでやってるのか
欠けてるコードも補完されてた
2chスレ:operate
858: 動け動けウゴウゴ2ちゃんねる 04/06/12 14:58 ID:8VflbAB0(1)調 AAS
あげとく
859: 7M. ◆dq7M./4Uw. 04/06/12 17:23 ID:O0ZFAfUU(1)調 AAS
>856
なんか他の色々なところに使ってて、
すれたて規制には使ってないらしらし、
860: 動け動けウゴウゴ2ちゃんねる 04/06/12 17:28 ID:Cfpi0Eq0(1)調 AAS
112 名前:FOX ★[] 投稿日:04/06/12(土) 17:25 ID:???
bbs.cgi に入れることに成功した

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

どうぞこちらへ

WEBプログラミング@2ch掲示板
2ch板:php

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

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

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

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

スレッドタイトルのNGワードも同様の処理にして欲しい。
現在の、"&"を全て削除する方法では誤爆が多すぎる。
870: 動け動けウゴウゴ2ちゃんねる 04/08/08 20:02 ID:nTi3CZqs(1)調 AAS
それは専ブラじゃないか
871: 動け動けウゴウゴ2ちゃんねる 04/08/08 20:06 ID:A6+c/0Ld(1)調 AAS
1行目しか読んでない悪寒
872: 動け動けウゴウゴ2ちゃんねる 04/08/08 20:56 ID:GsL2iQKg(1)調 AAS
一応書いとくと、bbs.cgiにもNGワードがございまして、
特定の文字列があると投稿できなかったり、或いは
別の文字列に変えられたり、削除されたりするのですね。
873: ここ→←重ねて→&r← 04/08/09 01:11 ID:HNwwfeok(1)調 AAS
&rが削除されるのは、名前欄だけじゃないのか?
ここに→&r←来た
874: 動け動けウゴウゴ2ちゃんねる 04/08/09 09:25 ID:L7UYaoY0(1)調 AAS
そだよ
875: 保守 [保守] 04/08/12 11:50 ID:ZidxCuc8(1)調 AAS
保守
876: 動け動けウゴウゴ2ちゃんねる 04/09/02 11:37 ID:VSrCQeoZ(1)調 AAS

877: 動け動けウゴウゴ2ちゃんねる 04/09/06 10:38 ID:LPdsoeYd(1)調 AAS
要望はここでいいのかな?
https://で始まるURLもリンク形式にして欲しいんだけど
878: 動け動けウゴウゴ2ちゃんねる 04/09/06 19:37 ID:/C2k9wTD(1)調 AAS
2chブラウザ使えや
879
(1): 動け動けウゴウゴ2ちゃんねる 04/09/06 19:43 ID:szIUr1kJ(1)調 AAS
bbs.cgiがdatに記録するのは素のURLで
リンクにしてるのはread.cgi(or専用ブラウザ)ですね
880: 動け動けウゴウゴ2ちゃんねる 04/09/06 20:05 ID:nFcHlILR(1)調 AAS
>>879
そういうことでっす
881: 04/09/17 13:41:16 ID:I3k6ObmZ(1)調 AAS

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

初歩的な質問ですみませんが、どなたか <(_)>
883: 動け動けウゴウゴ2ちゃんねる 04/09/23 22:00:32 ID:Rd0mgR11(1)調 AAS
timeはUnix時間だったっけ?
884: 882 04/09/24 08:49:47 ID:QH62aZR5(1)調 AAS
ですね (_)m
885: 04/10/13 14:31:35 ID:topL7/m/(1)調 AAS
.
886: 動け動けウゴウゴ2ちゃんねる 04/10/13 23:24:23 ID:Nz0AON1Z(1)調 AAS
スレ一覧生成するときに、1行1スレにして、可読性を高めることはできますか?
887: t040086.ipgw.phs.yoyogi.mopera.ne.jp ◆arc/U573Xw 04/10/14 09:03:00 ID:gJ4mn6kL(1)調 AAS
専用ブラウザを使う。
888: 動け動けウゴウゴ2ちゃんねる 04/10/24 09:55:15 ID:SLK0YXuC(1)調 AAS
ソースきたないなぁ>>852-854
これはメモリをいっぱい使う典型的な例じゃない?
889: 動け動けウゴウゴ2ちゃんねる 04/10/28 11:13:05 ID:2O4mPvM0(1)調 AAS
Perlわからんのに下手なことやる★がいるからな。
2chにワケワカランおまけ機能つける奴とか
890: 動け動けウゴウゴ2ちゃんねる 04/10/28 18:51:11 ID:anlG9U+J(1)調 AAS
それで負荷がどうのこうの言って制限とかやめてよ
先にやることあるでしょ
891: 動け動けウゴウゴ2ちゃんねる 04/10/28 20:29:43 ID:arV63oCy(1)調 AAS
それがわかるぐらいならこんなことになっていない
892: 動け動けウゴウゴ2ちゃんねる 04/11/05 00:27:14 ID:fIHc0x17(1)調 AAS
思ったんだがPerl使うより
サーバサイドJAVA使ったほうが比較処理早いと思うんだが・・・
893: 動け動けウゴウゴ2ちゃんねる 04/11/05 03:31:29 ID:0hLvehPf(1)調 AAS
誰が組むの?
894: 動け動けウゴウゴ2ちゃんねる 04/11/05 03:32:15 ID:Q0Ll4shF(1)調 AAS
オレオレ
895: 動け動けウゴウゴ2ちゃんねる 04/11/05 04:35:16 ID:/XP1jvbw(1)調 AAS
ひろしかい?
896: 動け動けウゴウゴ2ちゃんねる 04/11/05 10:59:40 ID:R5u39dy/(1)調 AAS
やっぱりバイナリ(C/C++)でしょう
897: 動け動けウゴウゴ2ちゃんねる 04/11/05 20:50:15 ID:J43AHOGt(1)調 AAS
とりあえずさ、どう考えても今のやつに手を加えるのが現実的ではないだろうか
誰か有能な人を雇用してよ。
俺とか。
898: 動け動けウゴウゴ2ちゃんねる 04/11/05 20:51:54 ID:GKffWgut(1)調 AAS
その謳い文句のままIT企業に売り込んでみれば?
899: 動け動けウゴウゴ2ちゃんねる 04/11/06 09:19:21 ID:zGCPlBxu(1)調 AAS
bbs.cgi開発【WebProg板】
2chスレ:php

開発ストップ中
900
(1): root▲ ★ 04/11/06 09:52:53 ID:??? AAS
不動楽さんが手を入れて、明らかに板飛びが減ったですね。
901
(1): 通りすがりのUNIX屋 04/11/07 10:01:10 ID:mqnEPazJ(1)調 AAS
共有メモリ使ってはいかがですか?
共有メモリ上にスレッド毎のメッセージ数入れておいて、共有メモリを更新する数msecだけ
SYSVセマフォ(若しくはPOSIXのセマフォ)で排他。
1000を多少越えても良いのだから参照に排他は不要。
SYSV共有メモリで足りなければmmapの共有メモリで。

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

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

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

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

あとだれがいましたかね。
905
(1): root▲ ★ 04/11/09 11:04:11 ID:??? AAS
>>904
某受験生
906: ヾ(゚パ)ノ ◆f0.zuburi6 04/11/09 18:50:58 ID:b9gs6s98(1)調 AAS
南の(ry
つまり>>905
907: ◆cZfSunOs.U 04/11/15 22:41:54 ID:ZCkDk6ko(1/2)調 AAS
read.cgi はともかく bbs.cgi で mod_cgidso を使うとなると,
普通の実行可能バイナリじゃなくて共有オブジェクトにしなきゃいけないとか,
自前でリソース解放してくれないとどんどんリークしていっちゃうとかで,
perlcc で直接バイナリ作るんじゃなくて,生成された C コードを
手作業で直さなきゃならないんでしょうけど......

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

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

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

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

あとは,NAME/MAIL の Cookie の問題ですね.設定がサーバサイド,
読み出しがクライアントサイドという不整合のため,Mozilla 等では
文字化けしてしまうと.現状では Set-Cookie ヘッダで設定していますが,
これを JavaScript の方で設定すればいいのではないかな,と.
とはいえ,bbs.cgi 出力に Cookie 設定用 JavaScript コードを入れると,
" や \ を \ でエスケープさせる必要がありますが,Shift JIS だと
漢字等の2バイト目が \ になることもあるんで,この判定をきっちりやるのも
結構大変か......むしろ bbs.cgi 出力では行わず,投稿フォーム側の
onsubmit() でこの処理をやらせた方が安全ですかね.
908: ◆cZfSunOs.U 04/11/15 22:43:05 ID:ZCkDk6ko(2/2)調 AAS
その場合の各板トップ及び 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 "";
}
909: 動け動けウゴウゴ2ちゃんねる 04/11/16 19:58:37 ID:gupowrUH(1)調 AAS
わかるひとそんなにいないんじゃないの?
910: 動け動けウゴウゴ2ちゃんねる 04/11/22 23:29:27 ID:lGHEU7j1(1)調 AAS
もう今はスクリプト配布してないんだっけ?
4.2ぐらいのころのは持ってるよ。
911
(1): 動け動けウゴウゴ2ちゃんねる 04/11/24 13:24:29 ID:ZoS47VUx(1)調 AAS
MySQL使えないんでしょうか?
ファイルシステムでこの規模なんて自分では考えられないです。
DATを返すインターフェイス作っておけば問題ないと思うのですが・・・。
912: 動け動けウゴウゴ2ちゃんねる 04/11/24 15:16:57 ID:56mAf6sD(1)調 AAS
DBとの連携ってどこらへんで×だったんだっけ。
過去ログ引っ張り出すのもまんどくせ。
913: 動け動けウゴウゴ2ちゃんねる 04/11/24 16:28:12 ID:QEeeH5cs(1)調 AAS
別に技術的な理由で×というのは無かったような。
強いて言えばめんどくさいってだけ。
914
(1): 動け動けウゴウゴ2ちゃんねる 04/11/24 20:17:51 ID:z53A+14I(1)調 AAS
beのbbs.cgiって新規物だよね。
915
(1): 動け動けウゴウゴ2ちゃんねる 04/11/24 21:22:09 ID:oKqt30OR(1)調 AAS
>>914
DMDM と MDMD の MD5 を算出して、DB(MySQL) と照らし合わせて合致すれば桶だと思うので、
その部分以外は使い回しかと思われんこん。
916: ▲:/usr/local/bin/ch2 -o i686 ◆P8fXJj6wwo 04/11/25 08:59:42 ID:RPrai8qa(1)調 AAS
>>915
そもそもMD5があやしい疑惑があるんだが・・・・
917
(2): 動け動けウゴウゴ2ちゃんねる 04/11/28 23:37:38 ID:LLgV0enQ(1)調 AAS
>>911
過去ログ検索とかではDBは有効だけど、ライブスレッドなら
ファイルのが負荷少ないしベストな選択のように思うけど、
どうなんだろう。
918: 動け動けウゴウゴ2ちゃんねる 04/11/28 23:48:22 ID:NucojG8+(1)調 AAS
負荷ってどうなるのかなぁ・・・
PHPで試しに作ってみる。
919: 動け動けウゴウゴ2ちゃんねる 04/11/28 23:59:22 ID:6IOqzKJj(1)調 AAS
>917
ファイルシステムにするとキューだのロックだのを同期する必要がある。
MySQLだと、そのあたりはデータベースに任せられる。

また、MySQLをバックエンドにして、閲覧系を複数にして負荷分散するのが非常に楽になる。
920
(1): 917 04/11/29 00:10:17 ID:h4Qkpn0t(1)調 AAS
そうか書き込みのことを忘れてた・・・スマソ
MySQL速いらしいいいかもね。
921: 動け動けウゴウゴ2ちゃんねる 04/11/29 13:07:47 ID:n6JmgVVk(1)調 AAS
ひ(ryがいぢれないと採用してもらえなかった希ガス
922: ▲:/usr/local/bin/ch2 -o i686 ◆P8fXJj6wwo 04/11/29 17:10:20 ID:mfH1gp4Z(1)調 AAS
>>920
というかbbs.cgiはそもそも書き込み用途のはずではw
923
(1): 動け動けウゴウゴ2ちゃんねる 04/11/29 20:36:27 ID:DNrkqTfx(1)調 AAS
datをDBにするとread.cgiも変えざる得ないから、読み書き両方を考える必要があるのか・・・
924: 動け動けウゴウゴ2ちゃんねる 04/11/29 20:55:08 ID:4MCabMvy(1)調 AAS
そーゆーんじゃなくってさ、
bbs.cgi の改良でだいぶよくなる気がする。
だって何あのソース??
おっきく仕様変えなくても。。
925: 動け動けウゴウゴ2ちゃんねる 04/11/29 22:24:47 ID:ePnTCL4s(1)調 AAS
>923
Perl DBIでインターフェースを作っとけば、仮にCで書きなおしたりしてもインターフェース部分だけ変えればよいと。
んでDBはDBで切り離してチューニングが出来ると。
閲覧系のキャッシュ同期とかがけっこうノウハウあるらしいので高負荷サイトはそれなりに難しいらしいけど。
926: 動け動けウゴウゴ2ちゃんねる 04/12/01 21:55:38 ID:fVLVA0+J(1)調 AAS
関連ページをクリックして、Pingを発射したとき
どう足掻いてもスレッドのURLの末尾の/が相手先に送れないのですが
この問題もこちらでよろしいでしょうか?
2ちゃんねるpingβのスレがあるといいのですが、見あたらないので・・・
927: 動け動けウゴウゴ2ちゃんねる 04/12/01 22:06:13 ID:BcbzKHvd(1)調 AAS
なんちゃって関連ページまとめツールβの不具合はこちらへ。
2chスレ:operate
928: 動け動けウゴウゴ2ちゃんねる 04/12/02 00:46:21 ID:WZTWIT/v(1/3)調 AAS
dW : Linux : Perlを最適化する
外部リンク[html]:www-6.ibm.com

ほい。peko2スレから誘導されて貼りにきましたよ。
929: FOX ★ 04/12/02 14:59:24 ID:??? AAS
これから質問しまくるんで
優しく教えてください。

つまり Perl を知らないぼんくらなんです
930
(2): FOX ★ 04/12/02 15:02:26 ID:??? AAS
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
931: root▲ ★ 04/12/02 15:24:44 ID:??? AAS
■ bbs.cgi(SpeedyCGI)の巻 part1 (2004/12/01-)
2chスレ:myanmar

500エラーになって、書けないっす。
たぶん Premature なんちゃら、って言って、えらーログに残っているはず。
932: ▲:/usr/local/bin/ch2 -o i686 ◆P8fXJj6wwo 04/12/02 15:25:56 ID:WBZMaSLu(1/3)調 AAS
>>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のエラーコードとか)
933: root▲ ★ 04/12/02 15:27:12 ID:??? AAS
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になる時がありますね。
934: ▲:/usr/local/bin/ch2 -o i686 ◆P8fXJj6wwo 04/12/02 15:30:00 ID:WBZMaSLu(2/3)調 AAS
>>930
あ、まちがい、ローカル変数だったですね。スマソorz

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

printはdisperror内でですかね。
935: 動け動けウゴウゴ2ちゃんねる 04/12/02 15:31:46 ID:nD7Hw/zx(1)調 AAS
現時点での全ソース晒せ〜
936: FOX ★ 04/12/02 15:53:29 ID:??? AAS
いやー

まったく

たいへんたいへん
937: 動け動けウゴウゴ2ちゃんねる 04/12/02 15:53:47 ID:NQYkKTg/(1/3)調 AAS
なんかゴソゴソやっとるな
938: FOX ★ 04/12/02 15:58:54 ID:??? AAS
外部リンク[txt]:dso.2ch.net

現時点での全ソース

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

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

2ch板:myanmar

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

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

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

にした
943: [―{}@{}@{}-] 動け動けウゴウゴ2ちゃんねる 04/12/02 16:31:19 ID:yl4eb3hK(1/5)調 AAS
ぜんぜんわからんな・・・orz

外部リンク:www.google.co.jp
あたりに原因があるようだ。CGIモジュールは、でかいからねえ。なので、SpeedyCGIを使うように変更してみたが、どうやら、グローバル変数の初期化をしてないようなので、reset 'a-z';を先頭行に追加してみた。これで、なんとなく、まともに動作しているようだ。
944
(1): [―{}@{}@{}-] 動け動けウゴウゴ2ちゃんねる 04/12/02 16:45:23 ID:yl4eb3hK(2/5)調 AAS
> グローバル変数の初期化をしてないようなので

my $NOWTIME = time;

   ↓

my $NOWTIME;
$NOWTIME = time;
945: FOX ★ 04/12/02 16:53:42 ID:??? AAS
>>944
それやってみたけど、だめだったぞな
946: FOX ★ 04/12/02 17:01:01 ID:??? AAS
PID=$$ も書くようにした

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

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

&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="2ch板:guide">2ちゃんねるガイド</a>へ。。。<br><br>
アクセス規制・プロキシー制限等規制は、<a href="外部リンク:2ch.tora3.net">2ちゃんねるビューア</a>
を使うと回避できることがあります。
</center>
<p>
time=$GB->{NOWTIME}<br>
$GB->{version}
</body>
</html>
EOF
#-----------------------------------------------------------------------
exit;
}
950
(1): FOX ★ 04/12/02 17:30:39 ID:??? AAS
>>949
おおっ そういうほうが好き好き

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

んで my で宣言されていても使い方がグローバルなら
結局はグローバルな変数になっちゃうということなのかしら?
951
(1): 動け動けウゴウゴ2ちゃんねる 04/12/02 17:33:45 ID:WZTWIT/v(2/3)調 AAS
sub init_onceを書いて、初期化ルーチンを押し込めましょう。

そして初期化ずみフラグを見てrace condition回避も忘れずに。
952
(1): 動け動けウゴウゴ2ちゃんねる 04/12/02 17:37:28 ID:YeLg7Dw8(2/8)調 AAS
>>949
my %FORM; を消し忘れた……。

>>950
よくは分からないですけど
外側のmy変数はコンパイル時に実体が作られるんでしょうか。
953: [―{}@{}@{}-] 動け動けウゴウゴ2ちゃんねる 04/12/02 17:37:57 ID:yl4eb3hK(3/5)調 AAS
SpeedyCGIインストール完了

なんとなく離してみた
なぜか動いた
なぜだ〜〜〜

my $NOWTIME;#現在時刻
&bbs_main;

exit;

#########################################################
sub bbs_main
{
my $version = "BBS.CGI - 2005 (for SpeedyCGI)";
$NOWTIME = time;#現在時刻
954: FOX ★ 04/12/02 17:53:42 ID:??? AAS
>>952
なんでしょうねぇ
my しても、実際に使い方が悪かったらどっかに(CS?) 実態が
作られちゃうんでしょうねぇ
955
(2): 動け動けウゴウゴ2ちゃんねる 04/12/02 17:56:29 ID:WC2kwP6B(1/2)調 AAS
んもう、書き直すならオブジェクト指向で書き直せばいいのに。
オブジェクト指向ならmod_perlの道が見えるのに。
956: FOX ★ 04/12/02 17:58:44 ID:??? AAS
>>955
それは大変すぎるですよ、私にとっては
次の世代の方々への贈り物ということで、

SpeedyCGI でかなり改善することが知りたいというのが目的なもんで
「かなり改善」が望めないならお蔵入りという話し。
957
(1): FOX ★ 04/12/02 18:00:25 ID:??? AAS
外部リンク[txt]:dso.2ch.net

現在の bbs.cgi

こまっているところ【3】
&foxReadForm($GB);#$FORM を読み込む
安易に代入しただけじゃ駄目なの?

$GB->{FORM} = %FORM;  ← この部分
958: 動け動けウゴウゴ2ちゃんねる 04/12/02 18:11:54 ID:YeLg7Dw8(3/8)調 AAS
>>957
foxReadFormの頭で

my $FORM = $GB->{FORM};

として、代入の方は

$FORM->{$name} = "$value";

とするのがよいかと。
959: FOX ★ 04/12/02 18:12:56 ID:??? AAS
やってみるです
960: FOX ★ 04/12/02 18:16:02 ID:??? AAS
sub foxReadForm
{
my ($GB) = @_;

my $query_string = undef;
my (@m_elements, $m_element, $name, $value);
my %FORM = $GB->{FORM};

で駄目だった。 (my $FORM だと 500 error だった)
961
(1): 動け動けウゴウゴ2ちゃんねる 04/12/02 18:17:51 ID:YeLg7Dw8(4/8)調 AAS
うひょ。

sub foxReadForm
{
my ($GB) = @_;

my $query_string = undef;
my (@m_elements, $m_element, $name, $value);
my $FORM = $GB->{FORM};

#環境変数からPOSTのでーたをもらう〜
if ($ENV{'REQUEST_METHOD'} eq "POST") {
read(STDIN, $query_string, $ENV{'CONTENT_LENGTH'});
@m_elements = split(/&/, $query_string);
foreach $m_element (@m_elements) {
($name, $value) = split(/=/, $m_element);
$value =~ s/\0//g;
$value =~ tr/+/ /;
$value =~ s/%([0-9a-fA-F][0-9a-fA-F])/pack("C", hex($1))/eg;
$value =~ s/</</g;
$value =~ s/>/>/g;
$value =~ s/\r\n|\r|\n/<br>/g;
$value =~ s/<br>/ <br> /g;
$value =~ s/[\0\x00-\x1f]//g;

$FORM->{$name} = "$value";
}
}

#1行データからは改行を削ってタグを閉じます
$FORM->{'subject'} =~ s/\#//g;
$FORM->{'subject'} =~ s/ <br> //g;
$FORM->{'subject'} =~ s/&//g;

$FORM->{'FROM'} =~ s/"/"/g;
$FORM->{'FROM'} =~ s/ <br> //g;
$FORM->{'mail'} =~ s/"/"/g;
$FORM->{'mail'} =~ s/ <br> //g;

$FORM->{'bbs'} =~ s/\|//g;
$FORM->{'bbs'} =~ s/\\//g;
$FORM->{'key'} =~ s/\|//g;
$FORM->{'bbs'} =~ s/\.//g;
$FORM->{'key'} =~ s/\.//g;
$FORM->{'bbs'} =~ s/&//g;
$FORM->{'key'} =~ s/&//g;
$FORM->{'time'} =~ s/\D//g;
$FORM->{'bbs'} =~ s#/##g;
$FORM->{'key'} =~ s#/##g;

$FORM->{'subject'} =~ s/&r//g;
$FORM->{'FROM'} =~ s/&r//g;
$FORM->{'mail'} =~ s/&r//g;
}
962: FOX ★ 04/12/02 18:18:47 ID:??? AAS
勘違いしているかな?

もう一回挑戦
963: FOX ★ 04/12/02 18:19:32 ID:??? AAS
>>961
どもども
コピペさせてもらいます、
964: FOX ★ 04/12/02 18:21:55 ID:??? AAS
わーい
うまくいった。

次へ行こう。
965: ▲:/usr/local/bin/ch2 -o i686 ◆P8fXJj6wwo 04/12/02 18:22:08 ID:WBZMaSLu(3/3)調 AAS
>>955
さすがにつらすぎるでしょう。

でも最終手段としての書き直しは軽く心に留め置いておいたほうがいいかもしれないと振ってみる
966: FOX ★ 04/12/02 18:31:09 ID:??? AAS
sub bbs_main
{
use CGI::SpeedyCGI;
my $sp = CGI::SpeedyCGI->new;
my $spv = $sp->i_am_speedy ? 'yes' : 'no' ;

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

require "./bbs-main.cgi";

&DispError2($GBX,"FOX ★","<font color=green>FOX ★ ふふふっ</font><br><br>これが表\示されるということは・・・<br>本体requireしたのにそっちへ行かないと、、、");
print "Content-type: text/html; charset=shift_jis\n\nWOWOWOWOWOW-----\n";
return;
}
967
(1): FOX ★ 04/12/02 18:32:14 ID:??? AAS
require "./bbs-main.cgi";
で本体に処理を移そうとしたら・・・

最初の起動時は本体へ行った
しかーし、二回目以降はだめだった、、、

どうする?
968
(1): 動け動けウゴウゴ2ちゃんねる 04/12/02 18:44:47 ID:WZTWIT/v(3/3)調 AAS
>967
>951
969
(1): 動け動けウゴウゴ2ちゃんねる 04/12/02 18:46:08 ID:YeLg7Dw8(5/8)調 AAS
bbs-main.cgiの処理を関数に括りだしておいて
その関数を陽に呼び出せばいいような。
970: FOX ★ 04/12/02 18:49:18 ID:??? AAS
>>968
わたし・・・
理解不能なんです

>>969
そんなふうにしてみた

sub bbs_honati
{
my ($GB) = @_;

&DispError2($GBX,"FOX ★","<font color=green>FOX ★</font> いよいよ本体");
}

1;

んで &bbs_honati ; で呼び出してみた。
1-
あと 31 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ

ぬこの手 ぬこTOP 0.023s