1read 100read
2013年06月WebProg96: bbs.cgi開発【WebProg板】 (185) TOP カテ一覧 スレ一覧 2ch元 削除依頼
PHPでPDF (170)
アパッチが動かねんだよ!!タコ (107)
もうそろそろクッキーJavaScript必須でいいですか? (106)
インストールマニアックス4 azure祭り (149)
Webプログラマーになるためには (144)
Google App Engine for Python 6アプ目 (178)

bbs.cgi開発【WebProg板】


1 :02/04/19 〜 最終レス :2013/04/24
http://qb.2ch.net/test/read.cgi/jikken/1017071166/l50
2ちゃんねるの、bbs.cgiが、現在住民の手により作られているようです。
WebProg板でも、改良に役立つように、協力しませんか?

2 :
【bbs.cgiのメインフロー】
 1、システム関連設定(タイムゾーン&日付・時刻&連想配列)
 2、POST入力情報を取得($FORM{}に格納)
 3、入力要素の体裁(コントロールコードや<>を除く)
 4、各種ファイルPATH生成(詳細は下記参照)
 5、設定ファイルから規制などを設定(詳細は下記)
 6、ホスト情報($HOST・$PROXY・$IP)
 7、クッキー発行
 8、書きこみ状態のチェック&補完(monazilla&携帯)
 9、書き込み情報のチェック&補完(トリップ&キャップ&節穴&名無し)
10、エラーレスポンス(ポスト情報の判定)
11、要素ごとのサイズや入力の判定(長さや入力無し)
12、ポートチェック
13、新規スレッドと普通書き込みの分岐
14、レス書き込みまたはスレッド立て規制
15、書き込み情報設定(レスポンスアンカー・ID)
16、DATファイルへ書き込み(.dat)
17、関連ファイルの更新(.html・subject・subback・iモード)
18、index.htmlの更新(圧縮)

3 :
【変数の指定】
use vars qw(%FORM);入力情報
use vars qw(%SETTING);設定情報
use vars qw($NOWTIME);現在の時間
use vars qw($DATE);表示日付
use vars qw($IP);ホスト情報(生?)
use vars qw($PROXY);ホスト情報(プロクシ)
use vars qw($HOST);ホスト情報($IP<$PROXY>)
use vars qw($PATH);$PATH = "../" . $FORM{'bbs'} . "/";(板アドレス)
use vars qw($DATPATH);$DATPATH = $PATH . "dat/";(データディレクトリ)
use vars qw($TEMPPATH);$TEMPPATH = $PATH . "html/";(テンポディレクトリ)
use vars qw($INDEXFILE);$INDEXFILE = $PATH . "index.html";
use vars qw($INDEXGZFILE);$INDEXGZFILE = $PATH . "index.html.gz";
use vars qw($SUBFILE);$SUBFILE = $PATH . "subback.html";
use vars qw($SUBGZFILE);$SUBGZFILE = $PATH . "subback.html.gz";
use vars qw($IMODEFILE);$IMODEFILE = $PATH . "i/index.html";
use vars qw($DATAFILE);データファイル
なお、これらについては、変数自体を使わないという選択もありです。

4 :
#!/usr/local/bin/perl
use strict 'vars';

# とりあえずな感じ。
# last modified 2002年 3月 17日 by トオル
use vars qw($version);
$version ="2002年";

#====================================================
# システム関連設定(タイムゾーン)
#====================================================
use vars qw(%FORM);
use vars qw(%SETTING);
use vars qw($NOWTIME);
$NOWTIME = time;
# タイムゾーンをセットする
{
   $ENV{'TZ'} = "JST-9";
}
# シグナル対処関数
sub SigExit {
   exit(0);
}
{
   $SIG{'PIPE'} = $SIG{'INT'} = $SIG{'HUP'} = $SIG{'QUIT'} = $SIG{'TERM'} = "SigExit";
}

5 :
use vars qw($IP);
use vars qw($HOST);
use vars qw($PROXY);
$IP = $ENV{'REMOTE_ADDR'};
$IP = gethostbyaddr(pack('c4',split(/\./, $IP)), 2) || $IP;
if ($ENV{'HTTP_VIA'} =~ s/.*\s(\d+)\.(\d+)\.(\d+)\.(\d+)/$1.$2.$3.$4/) {
   $PROXY = $ENV{'HTTP_VIA'};
}
if ($ENV{'HTTP_X_FORWARDED_FOR'} =~ s/^(\d+)\.(\d+)\.(\d+)\.(\d+)(\D*).*/$1.$2.$3.$4/) {
   $PROXY = $ENV{'HTTP_X_FORWARDED_FOR'};
}
if ($ENV{'HTTP_FORWARDED'} =~ s/.*\s(\d+)\.(\d+)\.(\d+)\.(\d+)/$1.$2.$3.$4/) {
   $PROXY = $ENV{'HTTP_FORWARDED'};
}
$PROXY = gethostbyaddr(pack('c4', split(/\./, $PROXY)), 2);
$HOST = $IP;
$HOST .= "<$PROXY>" if ($PROXY);

6 :
一回聞いてみたかったんだけど、こういうスクリプトで
CGI.pmをわざわざ使わないようにする理由ってなに?
どうせならCGI.pmとか色々モジュール使いーの、perl5.6.1使いーの
したほうがよろしいような気がするのですが。

7 :
利用者の多いところでCGI.pmは得策ではないだろう。(mod_perlなら話は別だが)
ただ大量のvarsはいただけないな。
Perl5.6なら"our $var = initvalue"で済むものが見苦しすぎる。

8 :
2chのbbs.cgiってPerlで書かれてるの?
C言語で作られてるって聞いたんだけど・・・・

9 :
>>8
read.cgiはC

10 :
CGI::Simple なんてどうだろう。作者によると同機能でCGI.pmの2倍は速い
との事だけど。

11 :
>>10
これかな。
http://tachyon.perlmonk.org/modules/html/CGI-Simple.htm

12 :
そうそう、それよりもう少しあたらしいのがこっち
http://search.cpan.org/search?dist=Cgi-Simple
(↑ただしドキュメンテーションがない模様・・・)

13 :
he.netで使ってるPerlのバージョンは全部5.004_01な模様なので
そこらへんも考慮しなきゃ、、

14 :
perlのバージョンなんてどうやて調べんのよ?
http://oyster.2ch.net/test/check.cgi

15 :
CGI::Simple見てみた。
が、バグが多すぎてまだ実用レベルではないね。
例えば、パラメタのキーに".globals"などのメタデータのキーが入ってるとクラッシュする。
(場合によってはクラッシュせずに予想外の動作をするものもある)
これじゃCGI.pm v3.xの方がまだマシだね。

16 :
速いにこしたことはないけどCGI.pmを使いたくないほど過酷な環境
ならPerlCGIをやめたほうがいいと思うのだが。

17 :
mod_perlマンセー

18 :
CGI.pmを使っても全く影響が感じられないような素晴らしい環境なんてそうは無いだろ。

19 :
http://www8.ocn.ne.jp/~hoehoe/bbscgi.txt
bbs.cgiのソースです。

20 :
で、なにを改良するんさ?

21 :
この板が激しく適切ですね

22 :
(´-`).oO(なんか、実験板方面が閉鎖的なんだよなぁ……。)

23 :
>>22
(´-`).。oO(禿げ同・・)
 

24 :
実験場とは別に、この板で作ってみるとか。
2ちゃんねるで使われるかどうかは別にして。

25 :
一応リンク
monazilla Part 3
http://pc.2ch.net/test/read.cgi/tech/1012544484/l20
2ちゃん専用ブラウザ「かちゅ〜しゃ」Part60
http://pc.2ch.net/test/read.cgi/software/1018022445/l20
2ちゃんねる用ブラウザ「ホットゾヌ」 Part10
http://pc.2ch.net/test/read.cgi/software/1018096103/l20
2ちゃんねる用ブラウザ「A Bone」Vol.15
http://pc.2ch.net/test/read.cgi/software/1017916153/l20
新鋭2ちゃんねるブラウザ「Jane2ch」 part 3
http://pc.2ch.net/test/read.cgi/software/1016550175/l20
2ちゃんねる用ブラウザ「ギコナビ」 Part2
http://pc.2ch.net/test/read.cgi/software/1015310037/l20

26 :
>>24
賛成。
とりあえずおおざっぱな方針かな?
個人的には、もはや軽量化はどうでもよくて、
「使いやすい」2ch互換スクリプトにしたいところ。
もちろん、無駄は省かれるべきだけど。

27 :
age

28 :
>>26
じゃあ、このbbs.cgiを参考にしつつ、
17氏スクリプトを作りつつ、使いやすい2ch掲示板クローンを作るって方向でどうですか?
17氏が引退して、「2chスクリプトくれくれ君」が増えてうざいし。。

29 :
http://tolkien.s7.xrea.com/paranoia/
全部perlで1から作り上げたらしいよ。

30 :
というか、どう考えても17氏スクリプトと2ch互換は、転送量とか考えたら設計が古くてだめでしょ。
アハンと12chくらいじゃないかな?

31 :
完全なクローンなんて作っても仕方ない。
プロトコル互換の「もっとずっと使いやすい」BBSを設計してみてはどうだろう。
.
.
.
.
.
.
でも専用ブラウザで見るなら同じことなんだよな。

32 :
>>30-31


bbs.cgi開発【WebProg板】

1 :nobodyさん :02/04/19 08:10 ID:20PTEIcN
http://qb.2ch.net/test/read.cgi/jikken/1017071166/l50

2ちゃんねるの、bbs.cgiが、現在住民の手により作られているようです。
WebProg板でも、改良に役立つように、協力しませんか?

33 :
ちょっと話は違うけど、PHPとDBを利用して作ったほうが
負荷も少なく、早くて、しかもログが壊れにくいと思うんだけど、
どうなんでしょうか。

34 :
んでもひろゆきとかドル猫達はいじれない罠

35 :
漏れはperlがなんとなく好きなんだが、
速さとかを突き詰めていけばphpとかそういう方向に行くんだろうな

36 :
>>35
phpって速いの?Perlより遅い気がするんだけど。
もしかして4.2xは速いの?

37 :
>>36
モジュル版が速いって事では?

38 :
>>36
mod_perlを使えばperl早いけど、
夜勤さんが使わないっていってるからなぁ。

39 :
c++

40 :
++c;

41 :
+c+

42 :
(+c+)

43 :
>>42 >>http://pc.2ch.net/test/read.cgi/php/1019673146/

44 :
>>43
(+c+)b

45 :
コラボ ワラタヨ

46 :
test
http://isweb43.infoseek.co.jp/art/mm2ch/cgi-bin/admin/kanri.cgi

47 :
これなに?
なんかとても面白そうな雰囲気が。

48 :
>>46
ほー。いいねそれ。

49 :
>>46
17スクリプトだろ、、、

50 :
それはどうかな。

51 :
ここでいいのかな
トリップをメール欄に書くとおかしくなるの既出?
例えば、
名前[#hogehoge]メール欄[sage]
   →名前[ ◆/Re6aTC.]メール欄[sage]
名前[#hogehoge]メール欄[sage #hogehoge]
   →名前[ ◆jG/Re6aTC.]メール欄[sage]

52 :
>>51
昨日からトリップ10桁になったんだよ
メール欄とは無関係、メール欄の#以降が削除されるのは以前からの仕様

53 :
ホントだ。
思い切り誤解ですた。ごめんなさい。

54 :
>>1の軽量化コンペのログ、HTML化されてた模様
http://ooo.2ch.net/jikken/kako/1017/10170/1017071166.html

55 :
843 名前:夜勤 ★ 投稿日:02/11/14 15:22 ID:??? ???
ex , ex2 うまくいっているのかなぁ。
結局は、極端にいえば「もう一行も bbs.cgi にはコード追加できません」
ってことのような感じ、もちろんコードの内容にもよりますけど。
人が増えすぎて、コードを削らなきゃならない段階のようです。
解決策は
(1) コードを削る。
(2) サーバを増設する。
ということでしょうが、どっちにしろ なんともかんとも

さーおまいら出番ですよ。

56 :
夜勤って頭悪いと思う。

57 :
うん。

58 :
>>55
夜勤が本気でそんなこと言ってるなら夜勤は真性のアフォ。

59 :
「サーバを増設したいから、●買ってくれ」が正解。

60 :
(^^)

61 :
廃れてるなぁ。
誰かまじめにbbs.cgi開発する人いないの?

62 :
>>61
真面目に開発している人はここには来ない罠。

63 :
>>61
いいだしっぺの法則。

64 :
お前らも暇な奴だなぁ(オレモナー
っていうのは置いておいて、真面目にやっている人がいるなら
ソースコードを提供してもいいよ。ただし再配布は禁止。
どうよ?

65 :
あー、書き忘れたけれど興味あるならメールください。
フリーメールはNGです。
kigaru2@kigaru2.net
(正体ばればれだなぁ。)

66 :
>>65
hu8up@ww2.personal.ne.jp
このメアドでよろしいでしょうか。

67 :
突っ込み無い…(´・ω・`)ショボーン

68 :
>>67
返事がない。攣られたようだ。

69 :
>66
どあほー^^;

70 :
>>69
ヽ(´ー`)ノ

71 :
おまえら、出番ですよ。
http://pc.2ch.net/test/read.cgi/unix/1044371176/826

72 :
正直perl以外は(´・ω・`)ショボーン

73 :
時代はPHPか。
勉強してみるか(お。

74 :
(^^)

75 :
(^^)

76 :
■ お手伝いさん募集中。。。
http://jbbs.shitaraba.com/computer/bbs/read.cgi?BBS=2095&KEY=1050545010
夜勤さんが助手を募集しているらしい。
来たれ猛者。

77 :
へるぷみー。
http://www.kigaru2.net/cbp/

78 :
   ∧_∧
  (  ^^ )< ぬるぽ(^^)

79 :
反応なしかyo!
というか、面倒くなったのであと誰かよろ。

80 :
17氏の手に入った。
PATHINFO対応に改造するにはどうすればいいでつか?

81 :
>>80
PATHINFO対応の他のBBSのソースを参考にしたら?

82 :
誰も突っ込みいれてない(´・ω・`)
一応動くんだけどなー。
誰か試してくれないかなー。

83 :
>>82
これはbbs.cgiをCで書いたやつとかですか?

84 :
そだよ。
まだ足りない機能もあるけど^^;

85 :
>>84
ダウンロードとコンパイル出来ました。
RedHat8です。
2ch初心者で申し訳無いんですけど、起動の方法がわかりません。
「ERROR:POSTしてください!」とか出ました。

86 :
http://homepage.mac.com/hitomi18/

87 :
コンパイルは適当に
gcc -O2 -Wall -o bbs.cgi bbs.c
とやればいいと思ふ。
>85
コンソールじゃなくて、CGIで起動しているんだよね?
環境変数がセットされてないのかなぁ?
ごめん、よくわからないや^^;

88 :
=""とかけばよいものを、="\0"と書くのがわからない。つーか静的なんだから自動的に0に初期化されるね。
staticのついていない関数の宣言はヘッダーファイルでした方がいいよ。
getenvがNULLを返さないかどうか監視しないと、strcmp等で悲惨な結果を生むことがあるだろう。例え(環境変数が)定義されていないはずがないと思っても。
もしもデコード対象の文字列が%で終わっていたらhex_packでまずいことになるかもね。hex_packでもきちんと文字列をチェックするか、decodeで2バイトstrncpyしてstrtolするといいよ。
mallocの戻り値をチェックしているところもあればしていないところも・・・
ところで、なんで*.hファイル(ヘッダーファイルだよね?)で関数の定義をしているの?(^_^;)
>>85
書き込み用のフォームを用意していないからでしょ。直接bbs.cgiにアクセスすればそりゃあそのエラーが出るよ。
あとはPOSTじゃなくて小文字でpostだったりすると(そこは非標準関数のstrcasecmpを使えばうまくゆくね)。
>>87
コンソールから起動すれば多分Segmentation Faultが出るよ(理由は上述)。

89 :
>>87
SETTING.TXTが2chとは違うようだけど。

90 :
>88
突っ込み多謝ですm(_ _)m
>ところで、なんで*.hファイル(ヘッダーファイルだよね?)で関数の定義をしているの?(^_^;)
他のコードを書くのに便利そうな関数は別ファイルにしようかなぁと。
それなら*.cにしる!ってことなんですけれども^^;

91 :
>89
実験室仕様です。
2chに合わせるにはbbs.hを書き換えればいいと思います。
若干(でもないけど)テンポラリファイルの仕様も違うけど、
多分大丈夫^^;

92 :
>>91
書き換えるのがめんどいのでSETTING.TXTもアップしてけろ

93 :
SETTINT.TXTをパースする仕組みがないのでは。

94 :
更新したー。
88さんの指摘と、ID生成部分の修正、DATファイルの書き込み判定を追加。
>92
http://www90.sakura.ne.jp/~hoehoe/temp/kigaru/SETTING.TXT
bbs.hの書き換えは俺も面倒い^^;
>93
文字列を分割する処理だよね?<パース
これのことではない?
value = split( key, '=' );
split( value, '\n' );

95 :
(・∀・)ニヤニヤ

96 :
いちお貼っとく
■ 新しいサーバで read.cgi が正しく動かない問題。
http://qb.2ch.net/test/read.cgi/operate/1047840578/
bbs.cgi 再開発プロジェクト
http://qb.2ch.net/test/read.cgi/operate/1053067870/

97 :
男爵Cも書けるのか…
まぁそれはいいとしておいらはCはほとんど書けないから出番なしかなー。

98 :
━―━―━―━―━―━―━―━―━[JR山崎駅(^^)]━―━―━―━―━―━―━―━―━―

99 :
     ∧_∧
ピュ.ー (  ^^ ) <これからも僕を応援して下さいね(^^)。
  =〔~∪ ̄ ̄〕
  = ◎――◎                      山崎渉

100read 1read
1read 100read
TOP カテ一覧 スレ一覧 2ch元 削除依頼
二回入力させるUIはアホ (197)
【初心者】励ましあいながらサイト製作【PHP】 (170)
金出すからスクリプト作ってよvol.1 (123)
PPPHについて考えるべさ (136)
インストールマニアックス4 azure祭り (149)
use Socket;について熱く語るスレ (103)
--log9.info------------------
逆に「幼なじみ」がメインヒロインのアニメやったら受けるんじゃね 神岸や藤崎みたいなピンク髪は勘弁 (120)
自転車で「イヤホン」「携帯電話」禁止を明文化キタ━━━━(゚∀゚)━━━━!!!! 罰金5万 (613)
【もぐもぐ】アニメのもぐもぐgifを集めるスレ【もぐもぐ】 (204)
マジック・ザ・ギャザリング大型ルール改訂 伝説のクリーチャー対消滅が廃止に (128)
パヤオ、自分の作品を見て初めて泣く (290)
無料だった日本語化ファイルを消した後30jで売るスクエニの千年勇者について聞いてみた (175)
ホリエモン、ブラック企業の従業員に対して「嫌だと思ったら辞めればいいのでは?辞めるの自由よん」 (1001)
アニソンイベント@JAM 2013で殴る蹴るの流血事件発生、警察が出動し迷惑イベンター「和田さん」連行 (295)
【韓国】「殴ったほうが訴える……?」横暴やまないサッカー韓国代表に、世界中から非難の目 (182)
メンヘラと付き合うことになった 注意点教えてくれ (141)
民主壊滅w社民は消滅してるし、後は共産を潰せば日本を取り戻せるな (153)
任天堂 宮本「開発人員を増強した。これで過去のソフトのリメイクできる」 オワコン企業すぎる・・・ (147)
【悲報】K-POPファンのJKに2000通もの嫌がらせツイートをしたネトウヨが追い詰められて逃亡 (258)
 古代韓国人の顔、本当はもっとイケメンだった! 日本人が捏造して不細工な画像を広めている (238)
【PS3】 地球防衛軍4キタ━━━━━━━━━━━━━━(゚∀。)━━━━━━━━━━━━━━!!!! (404)
橋下「都議選で負けたら辞任」議席3→2 どうすんだよ・・ (107)
--log55.com------------------
【DRAGON BALL】ベジータ関連アンチ&ヲチスレ13
彼岸島ってバカにされてるけど
僕のヒーローアカデミア愚痴スレ54
【最終回】稲葉みのり『源君物語』を語ろう【卒業】
鬼滅の刃 愚痴スレpart43
【名探偵コナン】灰原哀&信者アンチスレ92
一発当たった作品にしがみついてるクズな漫画家
こいくまサンクチュアリを語ろう