bbs.cgi 再開発プロジェクト(2ちゃんねる)

FTP、CGI、SSI、telnetが自由に使える超高速レンタルサーバ。
工夫しだいで、楽しさ100倍。 www.binboserver.com
月額千円サーバ | サブドメインコース | BIGなサーバ

サブドメインコース:CGIやFTPが使いたい・お金を掛けたくない人のために。
 *****.syo-ten.com *****.gasuki.com *****.zansu.com
 お好きな名前を無料で使えます。早い者勝ち。

人気サイト 月額千円サーバ:.com .net .org で取得できます。.JPドメイン大歓迎!
 超高速・高機能サーバを1000円で!使ってみれば、分かります。

BIGなサーバ:Big なBig なサーバー。充実したサポートをお求めの方へ。
 インターネットでご活躍の皆様へ、そしてご活躍予定の皆様へ。
2ちゃんねるは、このサーバを使っているです。

■掲示板に戻る■ ■過去ログ倉庫めにゅーに戻る■

bbs.cgi 再開発プロジェクト
1 名前: ◆Chacha.PkA 投稿日: 03/05/16 15:51 ID:Ysz+WCxa
read.cgi の作り直しや、2ch 特化型サーバの構築など、
一連のプロジェクトに並行する形で bbs.cgi の作り直しプロジェクトも発足です。

http://qb.2ch.net/test/read.cgi/operate/1047840578/287-319

参考 >>2-5


2 名前: ◆Chacha.PkA 投稿日: 03/05/16 15:51 ID:Ysz+WCxa
関連スレ
■ 新しいサーバで read.cgi が正しく動かない問題。
http://qb.2ch.net/test/read.cgi/operate/1047840578/
2ch特化型スペシャルサーバ構築大作戦
http://qb.2ch.net/test/read.cgi/operate/1052923573/
2ちゃんねる専用DNSサーバ関連スレ
http://qb.2ch.net/test/read.cgi/operate/1052479294/


3 名前: 名無しさん@お腹いっぱい。 投稿日: 03/05/16 15:52 ID:Ysz+WCxa
319 名前:BG ★[sage] 投稿日:03/05/16 15:38 ID:???
 まずは基本思想からだから
 この板に別スレッドでのんびり話し合って行くっていうところでしょうか、

 1) 基本思想
 2) 基本設計
 3) 詳細な設計 → モジュール別にコード書き
   (ここでさまざまな方法が試される、連投規制とか)
 4) 組み上げ
 5) テストー

 ってな流れになるのでしょうか。


4 名前: ◆rafale0Mno 投稿日: 03/05/16 15:54 ID:3Eh+WwMU
関連スレ
■ お手伝いさん募集中。。。
http://jbbs.shitaraba.com/computer/bbs/read.cgi?BBS=2095&KEY=1050545010

★ read.cgi 作り直し大作戦 〜愛は2chを救う〜
http://jbbs.shitaraba.com/computer/bbs/read.cgi?BBS=2095&KEY=1051177958


5 名前: ◆Chacha.PkA 投稿日: 03/05/16 16:05 ID:Ysz+WCxa
315 名前:BG ★[sage] 投稿日:03/05/16 14:37 ID:???
 んじゃ案を

 案 ver0.001

 main()
 {
 SETTING.TXT 読み込み();
 規制関連();
 datに追記();
 subject.txt更新();
 /*subback.html更新();*/
 }

まずはこんな感じに、bbs.cgiの処理に関する案を出して頂きたいです。
または、それに関するコメントなどもお願いします。


6 名前: ◆MUMUMUkopk @むむむ ★ 投稿日: 03/05/16 16:49 ID:???
記念。どんどん増えるプロジェクト(以下略。


7 名前: 名無しさん@お腹いっぱい。 投稿日: 03/05/16 16:56 ID:3FRPcNog
二兎を…(以下自粛


8 名前: BG ★ 投稿日: 03/05/16 16:57 ID:???
虻蜂・・・(以下自粛


9 名前: 名無しさん@お腹いっぱい。 投稿日: 03/05/16 17:08 ID:3FRPcNog
ぐぅ、即レスが飛んできてる。
水を差して、正直スマンかった。


10 名前: ◆rafale0Mno 投稿日: 03/05/16 17:14 ID:3Eh+WwMU
しかし優先順位は決めておいたほうがいいかも。


11 名前: ◆Kinen/LLFY 投稿日: 03/05/16 17:14 ID:6B0ky/8u
下手な鉄砲数打ちゃ(ry


12 名前: 名無しさん@お腹いっぱい。 投稿日: 03/05/16 17:20 ID:hblgnuqO
優先順位とは、他のプロジェクトとの比較で?
被るのはread.cgiプロジェクトぐらいかな。


13 名前: 名無しさん 投稿日: 03/05/16 18:11 ID:2kRCvp25
優先順位?何の?誰の?
サーバ構築が好きな人はサーバスレ行けば良いし、
read.cgiが好きな人はread.cgiスレ行けば良いし、
bbs.cgiが好きな人はここで開発してれば良いし。
やりたい人がやりたい事をやれる範囲でやるだけじゃん。
全部やれなんて誰も言ってないでしょ。


14 名前: 名無しさん@お腹いっぱい。 投稿日: 03/05/16 18:17 ID:PgTNJfeY
開発言語はCなんですか?Perlじゃなくていいの?



15 名前: 名無しさん@お腹いっぱい。 投稿日: 03/05/16 18:26 ID:wdsgC9Vl
どうやらさんが弄れなくなっても大丈夫?


16 名前: ぼるじょあ ◆yEbBEcuFOU 投稿日: 03/05/16 18:30 ID:+JuP1QOr
(・3・) エェー ぴろゆきってC読めるNO〜?


17 名前: BG ★ 投稿日: 03/05/16 18:30 ID:???
>>15
このさい、その方が・・・ (以下自粛


18 名前: proxy117.docomo.ne.jp 投稿日: 03/05/16 19:03 ID:8NVQj+hS
携帯関連で書けない人とか、どうやらさんに救済してもらった(最近だと味ぽん)こと考えると、
一携帯ユーザとして、どうやらさんがいじれなくなるのは痛いですな。


19 名前: 名無しさん@お腹いっぱい。 投稿日: 03/05/16 20:16 ID:un9NtoUg
>>13
bbs.cgi内で何を優先するかじゃないか?

で、神のbbs.cgiの作者はどこ行った…?


20 名前: ひろゆき ◆3SHRUNYAXA @どうやら管理人 ★ 投稿日: 03/05/16 20:30 ID:???
bbs.cgiの負荷ってI/Oがほとんどだから、
Cだろうとperlだろうと対してパフォーマンスは変わらない気がしてるおいら、、
アルゴリズム自体が変わるのであれば、劇的に変わるかもしれませんが、、、



21 名前: 名無しさん@お腹いっぱい。 投稿日: 03/05/16 20:33 ID:hcNyHENO
最近ひろゆきを見かけないな




22 名前: ひろゆき ◆3SHRUNYAXA @どうやら管理人 ★ 投稿日: 03/05/16 20:35 ID:???
志村うしろー。


23 名前: 名無しさん@お腹いっぱい。 投稿日: 03/05/16 20:36 ID:hcNyHENO
>19
現行バージョンを作った人はつい最近引退しました


24 名前: ◆Chacha.PkA 投稿日: 03/05/16 20:42 ID:Ysz+WCxa
ではI/Oに関して、何を残して、何を除外するかと言うのが最初の課題でしょうか。

1) SETTING.TXT (R)
2) プロ串等の規制。 (R)
3) xxxxxxx.dat 読み込み (R)
4) xxxxxxx.dat 追記 (W)
5) log/xxxxxxxx.dat にも追記 (W)
6) subject.txt 読み込み (R)
7) subject.txt 書き出し (W) (tmp作ってrename unlink かも知れない)
8) subback.html 読み込み (R)
9) subback.html 書き出し (W)
10) i/index.html 更新 (W)
11) index.html 更新 (W)
12) xxxxxxx.html 読み込み (R)
13) xxxxxxx.html 書き出し (W)


25 名前: BG ★ 投稿日: 03/05/16 20:42 ID:???
>>20

1) I/O
2) リモホ look up
3) 正規表現をつかっての比較しまくり

が主要負荷(処理?)かと。


26 名前: 名無しさん@お腹いっぱい。 投稿日: 03/05/16 20:45 ID:hcNyHENO
>22
Σ(゚Д゚;≡;゚д゚)


本人に突っ込まれてしまったここほんとに2chなんだろうかw



27 名前: ひろゆき ◆3SHRUNYAXA @どうやら管理人 ★ 投稿日: 03/05/16 20:49 ID:???
アクセス規制系がでかいんですよね。

>2) リモホ look up
>3) 正規表現をつかっての比較しまくり

アクセス規制を別サーバにするってのを考えていたりします。
ポートチェックがしなくてすむように、、



28 名前: 名無しさん@お腹いっぱい。 投稿日: 03/05/16 20:54 ID:AxtM7wBZ
/html って必要なんでしょうか?
index.html を読み込んで再利用すれば、かなりHDヘッドシークも減ると思うんですが。
ついでに、head.txt とか広告関係も再利用できるのでファイルアクセス回数は減ると思います。


29 名前: ◆MUMUMUkopk @むむむ ★ 投稿日: 03/05/16 20:56 ID:???
>>20
Perlだと、最初の起動コストがでかいすね。
特に連想配列とか使ってると。起動してしまえば軽いですが。

あと、system() や ` ` でのプロセス起動はコストが大きいので、
できるだけ使用を控える方向がいいかも。
できるだけライブラリ使うか、どうしてもプロセス起動が必要な時もsystem()は
使わないようにする方向で。

>>22
lookupはDNSがうまく動けば(って私かぁ)それなりになんとかなるか。

比較しまくりは、比較(マッチング)アルゴリズムを工夫するとか、>>27 みたいに
別サーバを立てるとか、でかいテーブルがあるならリニアサーチじゃなくて
ハッシュしてみるとかか。

# 今午後2時前。ちょっとお疲れモード。


30 名前: ひろゆき ◆3SHRUNYAXA @どうやら管理人 ★ 投稿日: 03/05/16 20:56 ID:???
/htmlの中には、index.htmlに表示される各スレッドの書きこみ10個分のテーブルが
スレッドごとにファイルとして入ってます。
http://qb.2ch.net/operate/html/1047840578.html


31 名前: ひろゆき ◆3SHRUNYAXA @どうやら管理人 ★ 投稿日: 03/05/16 20:58 ID:???
proxy制限のマッチングが、ひたすらリニアにやってるんで、
そこらへんのマッチングのアルゴリズムをperlでやってる例とかあればいいんですが、、、



32 名前: ぼるじょあ ◆yEbBEcuFOU 投稿日: 03/05/16 21:04 ID:+JuP1QOr
(・3・) エェー ひとつ知りたいんでつが、書き込みが集中すると bbs.cgi のプロセスが
     同時にいくつも起動されている状態になるんでしょうかNE?


33 名前: BG ★ 投稿日: 03/05/16 21:06 ID:???
top で見ていると
bbs.cgi が数十(100は行っていないかな)見えます。
同様に read.cgi , r.i も沢山起動されています。 

#以上 live5 サーバ内からお送りいたしました。


34 名前: 名無しさん@お腹いっぱい。 投稿日: 03/05/16 21:07 ID:AxtM7wBZ
>各スレッドの書きこみ10個分のテーブルが
これとほぼ同じ物が、index.html内に有ると思うんですけど
index.htmlを丸ごと読み込むので、メモリ効率は悪くなるんですけどね。。。


35 名前: ひろゆき ◆3SHRUNYAXA @どうやら管理人 ★ 投稿日: 03/05/16 21:12 ID:???
index.htmlは読みこまないですよ。。。
index.htmlをつくるために、各スレッドの書きこみ10個分のテーブルをくっつけてるわけです。



36 名前: ◆MUMUMUkopk @むむむ ★ 投稿日: 03/05/16 21:14 ID:???
>>31
でかいテーブルを上からなめてるってことすか。
お手軽にやるなら、DB_File (Perl5系なら標準装備)とかかな。
これで、データベースがハッシュ化されるので、テーブルがでかいなら
高速化とコスト低下が見込めるかと。

ちょっとぐぐると、こんなのが。
私はプログラミングはプロじゃないので、参考ということで。
こっち方面はもっとくわしい人がいっぱいいる気がする。

http://member.nifty.ne.jp/hippo2000/perltips/db_file.htm
http://www.hotwired.co.jp/webmonkey/code/97/37/cgi.html
http://www15.xdsl.ne.jp/~vfr/debian/old/cgiperl.shtml


37 名前: 名無しさん@お腹いっぱい。 投稿日: 03/05/16 21:17 ID:vuLVezHu
運営板のindex.htmlには20個のスレが表示されてるけど
**********.htmlを20個読み出して作ってるの?


38 名前: ひろゆき ◆3SHRUNYAXA @どうやら管理人 ★ 投稿日: 03/05/16 21:21 ID:???
>でかいテーブルを上からなめてるってことすか。
そですー。

DBを使うとサーバに依存しそうなので、
出来ればさけたかったんですが、
DB_Fileだとperl5がインストールしてあれば、
必ずあるんですか?

>>37
そです。


39 名前: ◆Chacha.PkA 投稿日: 03/05/16 21:22 ID:Ysz+WCxa
>>34
index.html内のものは、
BBS_THREAD_NUMBERで設定されている個数分のテーブルしかないですよね?
下のほうのスレが上がったときは、datからBBS_CONTENTS_NUMBER分のテーブルを作って、
一番古いテーブル削除→新しいテーブル追加
という風にすると?


40 名前: 名無しさん@お腹いっぱい。 投稿日: 03/05/16 21:23 ID:AxtM7wBZ
説明がへたくそでごめん(´・ω・`)

index.html 内にある各スレッドの表示部分をそのまま使えばいいんじゃないかと
/html は使わずに、代わりにindex.htmlを使う。

うまく説明できない。・゚・(ノД`)・゚・。


41 名前: ひろゆき ◆3SHRUNYAXA @どうやら管理人 ★ 投稿日: 03/05/16 21:27 ID:???
テーブルは削除してないです。
毎回、呼ばれるdatに対応したhtmlがよばれてはっつけられてます。
>>39

index.htmlは時々ぶっ壊れるんですが、
書きこみをすれば直るという方法で、
ほとんどのユーザーは気づいてないんです。
なので、index.htmlは参照するにはちょっと安定性にかけてたり、、、



42 名前: 名無しさん@お腹いっぱい。 投稿日: 03/05/16 21:27 ID:AxtM7wBZ
>>39
そうです〜
書き込みスレッド以外は、変化しないわけですか。

#難しいな説明するのって(´・ω・`)


43 名前: 名無しさん@お腹いっぱい。 投稿日: 03/05/16 21:30 ID:vuLVezHu
>>42
http://www.bq--3ayiomcfao4tbgzqq4.to/www/project/youjyo/hacker/hajihac/
の下の方にある「index.html高速化」ってことだね。


44 名前: ◆Chacha.PkA 投稿日: 03/05/16 21:33 ID:Ysz+WCxa
>>41
そうなんですよね、
一度壊れてしまうと、修正が自動に聞かないところが大変なんですよね…
>毎回、呼ばれるdatに対応したhtmlがよばれてはっつけられてます。
となると、BBS_THREAD_NUMBERが100とかの板で、回転が速いと、
物凄いI/Oになってますね。
例えば、sageのレスがされたときは、
**********.htmlを更新しないとかは付け焼刃でしょうか。


45 名前: ◆Chacha.PkA 投稿日: 03/05/16 21:34 ID:Ysz+WCxa
>44
ああ、これじゃだめですね。


46 名前: 名無しさん@お腹いっぱい。 投稿日: 03/05/16 21:35 ID:AxtM7wBZ
index.htmlが壊れた時は、</html>が消えるので検知できるとおもうです
その時は現状と同じように作り直せば?、、、ってだめかな(;・∀・)

>>43
ですね近いです。


47 名前: ◆MUMUMUkopk @むむむ ★ 投稿日: 03/05/16 21:35 ID:???
>>38
もちろん、システム側にBerkeley DBが入ってることが条件すね。
最近のLinuxディストリビューションならあるでしょう。
もちろんBerkeleyっていうぐらいで、*BSDなら必ず入ってる。

% perldoc DB_File

ってやってマニュアルが出力されれば、少なくともモジュールは入ってますね。


48 名前: BG ★ 投稿日: 03/05/16 21:39 ID:???
perldoc DB_File

DB_File(3) User Contributed Perl Documentation DB_File(3)



NAME
DB_File - Perl5 access to Berkeley DB version 1.x

SYNOPSIS
use DB_File;

[$X =] tie %hash, 'DB_File', [$filename, $flags, $mode, $DB_HASH] ;
[$X =] tie %hash, 'DB_File', $filename, $flags, $mode, $DB_BTREE ;


49 名前: ひろゆき ◆3SHRUNYAXA @どうやら管理人 ★ 投稿日: 03/05/16 21:41 ID:???
sageであっても、index.htmlに表示されてるので、
*.htmlは更新の必要があります。
そのかわり、sageの場合はsubject.txtは更新してませんが、、>>44

index.htmlを.htmlなしで再構成すると、
10個のdatを全部読みこんで構成しなおすので、壊れる頻度によると思います。
*.htmlの仕組みだと、読みこみの回数は増えますが、
index.htmlよりも読む量も処理量も少なくてすみます。
index.htmlを読みこんで、解析するよりも、
はっつけるだけのほうが処理量は少ないわけで、、

www.2chとかふるいのにもDB_Fileは入ってました。
いけそうな予感。。



50 名前: 名無しさん@お腹いっぱい。 投稿日: 03/05/16 21:49 ID:ImUOaroj
sageでもレス数があるからsubject.txt更新してない?。。


51 名前: 名無しさん@お腹いっぱい。 投稿日: 03/05/16 21:51 ID:AxtM7wBZ
http://katharsis.s20.xrea.com/bbs/ta/type_a/

説明があれなんで貼っちゃいます、勉強がてら造ってたものです
解析と言うより、分割ですね。。。
ソースを見てください、区切りを入れてあります。

で、内部処理よりもI/O処理の方が負荷が高いと思うんですが・・・

#素人が口を出すもんじゃない事がよくわかった(´・ω・`)



52 名前: 名無しさん@お腹いっぱい。 投稿日: 03/05/16 21:51 ID:HlsmlRX5
なんでどうやらさんが真面目なこと言ってるんだ?


53 名前: ◆MUMUMUkopk @むむむ ★ 投稿日: 03/05/16 21:51 ID:???
>>48 >>49
こんなサンプルプログラムがエラーなく動けば、たぶんいけるでしょう。
以下、http://www.itssg.ox.ac.uk/conference/2001/presentations/perl-itssg.html
から抜粋。

--- cut ---
#! /usr/local/bin/perl

use DB_File;

$db = '/tmp/userstats.db'; # where data is kept between runs

tie(%db, 'DB_File', $db) or die "Can't open DB_File $db : $!\n";

if (@ARGV) {
if ("@ARGV" eq "ALL") {
@ARGV = sort keys %db;
}
foreach $user (@ARGV) {
print "$user\t$db{$user}\n";
}
} else {
@who = `who`; # run who(1)
if ($?) {
die "Couldn't run who: $?\n"; # exited abnormally
}
# extract username (first thing on the line) and update
foreach $line (@who) {
$line =~ /^(\S+)/;
die "Bad line from who: $line\n" unless $1;
$db{$1}++;
}
}
untie %db;


54 名前: ひろゆき ◆3SHRUNYAXA @どうやら管理人 ★ 投稿日: 03/05/16 21:51 ID:???
昔はsageの場合は無視してたんですが、
最近は更新してるかも、、、というかここらへんは
誰がさわってたのかもよくわかってなかったり。


55 名前: ◆Chacha.PkA 投稿日: 03/05/16 21:53 ID:Ysz+WCxa
>>49
丁寧な解説ありがとうございます。
実は /html は現在使わせて頂いているので、
廃止になるとちょっと困った所だったんです。

ところで、*********.htmlは、追記で処理されていますか?
それともdatから作り直していますか?
以前bbs.cgiでhtmlを生成して、read.cgiの負担を減らすという試みがあったような気がしまして、
それなら、スレッド全体をhtml化というのも考えられなくはないかと…


56 名前: 7M. ◆dq7M./4Uw. 投稿日: 03/05/16 21:53 ID:PnvFRmAW
>>54
確かに昔は更新されてませんでしたねぇ。


57 名前: ひろゆき ◆3SHRUNYAXA @どうやら管理人 ★ 投稿日: 03/05/16 21:56 ID:???
datの書きなおしがあったときに、
.htmlはつくりなおしてます。

じつは、sports2で、read.cgiをつかわないで、
全部html表示にしちゃうという実験をしようかと思ってたりしてるんですが、
面倒なのでそのまんまになってます。。。



58 名前: サザン ◆IDaU21y6wI 投稿日: 03/05/16 21:57 ID:SinMu5EZ
おもしろそうだ。

>>57
やっちゃえー、


59 名前: ひろゆき ◆3SHRUNYAXA @どうやら管理人 ★ 投稿日: 03/05/16 21:57 ID:???
んじゃ、つくってください。。。>サザンさん


60 名前: 7M. ◆dq7M./4Uw. 投稿日: 03/05/16 21:59 ID:PnvFRmAW
ふむ。。。
書き込みがあったスレッドの吐き出し部分をdatからhtmlにするのか。
やってみていい?(おいらのスクリプトでだけど。


61 名前: サザン ◆IDaU21y6wI 投稿日: 03/05/16 21:59 ID:SinMu5EZ
お、そんなこと言われると本気になったり。。


62 名前: 7M. ◆dq7M./4Uw. 投稿日: 03/05/16 22:01 ID:PnvFRmAW
>>61
あ、そう?ぢゃ、任した…(逃


63 名前: ◆MUMUMUkopk @むむむ ★ 投稿日: 03/05/16 22:02 ID:???
実際のプログラミングは、たぶん >>60-61 の方々がサポートしたほうがよさそうすね。
私は「こんなモジュール使えばいいんじゃないの」とか
「こんなふうにすれば負荷下げられるんじゃないの」って言うのがせいぜい。


64 名前: サザン ◆IDaU21y6wI 投稿日: 03/05/16 22:04 ID:SinMu5EZ
>>62
いやいやいや、みなさんで一緒にやりましょーヽ(´ー`)ノ


65 名前: BG ★ 投稿日: 03/05/16 22:04 ID:???
結構懐疑的な私。。。
枝葉より思想の議論が先だと思うけど。

>>3 の 3) の話かな、この辺の議論は。

#じじぃがでしゃばってみました。


66 名前: ◆MUMUMUkopk @むむむ ★ 投稿日: 03/05/16 22:09 ID:???
>>65
じじぃその2も同意すね。

・要求条件と最終目標を明確にして
・実現するためにはどういう形にすればいいのかを考えて
・中身を詰めて
・合体させて
・動かす

っていうのは、やはり王道かと。


67 名前: ひろゆき ◆3SHRUNYAXA @どうやら管理人 ★ 投稿日: 03/05/16 22:10 ID:???
司会ががんばらないと、、、>BGさん


68 名前: BG ★ 投稿日: 03/05/16 22:11 ID:???
うっ


#歌でも歌いますか。


69 名前: ◆Chacha.PkA 投稿日: 03/05/16 22:12 ID:Ysz+WCxa
オープンソースでわいわいやるのがいいかもですねー >>64
私も微力ながらお手伝いできるかもしれませんし


70 名前: ひろゆき ◆3SHRUNYAXA @どうやら管理人 ★ 投稿日: 03/05/16 22:15 ID:???
個人的には、DBを使わないで、perlで検索をするアルゴリズムを誰かに書いてほしい。。。



71 名前: BG ★ 投稿日: 03/05/16 22:19 ID:???
まだ始まったばかりだから、当面わいわいがやがややるとして
現状の把握って言うのもきっと大切だろうから
どんどん管理人に聞いて見るのが良いのかな。

わたしも知っているところは答えられると思います。

現状の認識という点では、
live , ex 系を除いては、まぁまぁ資材の投入でカバーできているんだと思います
live , ex 系は突然の負荷上昇のある板が集まっています。
ピーク時に合わせて資材の投入はあまりにも無駄なので
なんとか別の方法でというのがこれら関連議論がスタートした動機です。


72 名前: ぼるじょあ ◆yEbBEcuFOU 投稿日: 03/05/16 22:19 ID:+JuP1QOr
(・3・) エェー 高速処理を要する部分をCで書いて、ライブラリ化しておいて、
     それをメインルーチンである Perl から関数としてコールするって事は
     できるんでしょうかNE?


73 名前: 名無しさん@お腹いっぱい。 投稿日: 03/05/16 22:21 ID:PgTNJfeY
>>70
現在のその部分のルーチン、公開できます?


74 名前: サザン ◆IDaU21y6wI 投稿日: 03/05/16 22:22 ID:SinMu5EZ
おいらも色々教えてもらったので、答えられる事には答えたいと思いますー、


75 名前: ひろゆき ◆3SHRUNYAXA @どうやら管理人 ★ 投稿日: 03/05/16 22:23 ID:???
>>73

open(PHOST,"<$pxck");
my @PIP = <PHOST>;
close(PHOST);
foreach(@PIP)
{
chomp($_);
if($HOST =~ /$_/i)
{
Error("ERROR!","公開PROXYを使っているかアクセス規制です!!");
}
}


76 名前: 名無しさん@お腹いっぱい。 投稿日: 03/05/16 22:23 ID:PgTNJfeY
>>72に関して、やっぱりperlの方がメンテナンスなどの面で良いですかね? >>70


77 名前: 名無しさん@お腹いっぱい。 投稿日: 03/05/16 22:23 ID:vuLVezHu
while(<串リスト>)
{
chomp;
if(書き込み野郎のホスト eq $_){ print "お前は書き込めネーヨ"; }
}

これで、ええんじゃないかい。



78 名前: BG ★ 投稿日: 03/05/16 22:24 ID:???
>>70
に関連して言えば、
現状、公開プロキシ規制とアクセス禁止を一本でやっているのが
負荷を増大させる原因だと思っています。

なぜなら、すべての投稿の 90%が普通のメジャーな ISP からなんですね、
一度ニュー速で調べてみたんですけど、
すべての投稿について、プロ串規制のテーブルを
なめまわすという動作です。ほとんどの場合やらなくてよい作業をしているですよ。

スキップすべきかと、


79 名前: ひろゆき ◆3SHRUNYAXA @どうやら管理人 ★ 投稿日: 03/05/16 22:24 ID:???
Cで速くなるんなら、それでもいいと思いますー。



80 名前: 7M. ◆dq7M./4Uw. 投稿日: 03/05/16 22:25 ID:DXmqbAjE
open(PHOST,"<$pxck");
foreach(<PHOST>)
{
chomp($_);
$HOST =~ /$_/i and Error("ERROR!","公開PROXYを使っているかアクセス規制です!!");
}
close(PHOST);
こっちのほうが若干早い…かもしれない。


81 名前: ひろゆき ◆3SHRUNYAXA @どうやら管理人 ★ 投稿日: 03/05/16 22:25 ID:???
どうやってスキップさせるか、、ってのが
なかなか難しいわけで、、、


82 名前: ◆Chacha.PkA 投稿日: 03/05/16 22:26 ID:Ysz+WCxa
>>77
eq だと、地域限定とかができないから、どうしても /$_/i になってしまうかと思います…


83 名前: 7M. ◆dq7M./4Uw. 投稿日: 03/05/16 22:27 ID:DXmqbAjE
>>81
めぢゃーなISPっぽい名前がホストに入ってたらすきっぷ…
とか?
でも串規制とアクセス規制が一緒なのか…


84 名前: BG ★ 投稿日: 03/05/16 22:27 ID:???
「C 読めますカー」と聞いたら

「右」と答えたのは・・・・・


85 名前: ひろゆき ◆3SHRUNYAXA @どうやら管理人 ★ 投稿日: 03/05/16 22:27 ID:???
うーんと、、書き方で微妙に速くなるのはわかるんですが、
foreach(<PHOST>) でリニアにやってる部分を
なんらかのソート手段でできるといいなぁ、、と。



86 名前: ◆Chacha.PkA 投稿日: 03/05/16 22:27 ID:Ysz+WCxa
>>75
この処理は、ポートチェックをクリアしたホストに適用されているのですか?


87 名前: BG ★ 投稿日: 03/05/16 22:27 ID:???
んで、分離すべきかと、 >>83



88 名前: 7M. ◆dq7M./4Uw. 投稿日: 03/05/16 22:28 ID:DXmqbAjE
>>85
んむ。
そうゆうことですか。。。


89 名前: サザン ◆IDaU21y6wI 投稿日: 03/05/16 22:28 ID:SinMu5EZ
>>84
ワラタ

bg3 が実験板になる予感。。
というかなります。


90 名前: ひろゆき ◆3SHRUNYAXA @どうやら管理人 ★ 投稿日: 03/05/16 22:28 ID:???
>めぢゃーなISPっぽい名前がホストに入ってたらすきっぷ
一応やってたり。。。


91 名前: ◆Chacha.PkA 投稿日: 03/05/16 22:28 ID:Ysz+WCxa
>>85
例えば、プロキシリストを、最初の頭文字で別ファイルにしてみるとかどうですか?


92 名前: BG ★ 投稿日: 03/05/16 22:29 ID:???
>>86
ポートチェックの方がコスト高いから
ポートチェックはそのあとかと、もう少し条件絞られているはず。


93 名前: ひろゆき ◆3SHRUNYAXA @どうやら管理人 ★ 投稿日: 03/05/16 22:29 ID:???
>>86
ポートチェックはそのあとです。
そこで引っかかれば、ポートチェックしないです。



94 名前: ◆MUMUMUkopk @むむむ ★ 投稿日: 03/05/16 22:30 ID:???
>>75
ひゃー、単純リニアサーチでexact matchってことかしら。

で、$pxckって今何行ぐらいすか?
ざっくりで100行以上あるようなら、間違いなく DB_File 使ったほうがいいです。


95 名前: ひろゆき ◆3SHRUNYAXA @どうやら管理人 ★ 投稿日: 03/05/16 22:30 ID:???
jpとjp以外で別ファイルにしてますです。>プロキシリスト


96 名前: ひろゆき ◆3SHRUNYAXA @どうやら管理人 ★ 投稿日: 03/05/16 22:31 ID:???
1000行ぐらい、、、>>94


97 名前: 名無しさん@お腹いっぱい。 投稿日: 03/05/16 22:31 ID:PgTNJfeY
>>95
もうちょっと細分化してみてはどうなの?


98 名前: 7M. ◆dq7M./4Uw. 投稿日: 03/05/16 22:32 ID:DXmqbAjE
>90
うーん。。。そうなのか。、


99 名前: ぼるじょあ ◆yEbBEcuFOU 投稿日: 03/05/16 22:32 ID:+JuP1QOr
(・3・) エェー ボクはCはわかるけど、Perlは和漢ないんですYO
     Cで作る部分は、汎用的で、将来に渡って仕様が変わらないと思われる処理部分を作るべきかと。
     正規表現のマッチング処理なんかも、Cの方が早ければCで書いたほうが
     いいかなと思ったんですYO
     


100 名前: BG ★ 投稿日: 03/05/16 22:32 ID:???
>>90
現状、そうでもないような気がしたけど、
最新の見てないので、分かりませんが。

ほとんどの書き込みが普通の書き込みだから
本当はなにもしない方が良い。

1) プロ串のリストとのマッチング
2) リモホのルックアップ(ちょっと微妙かな)
3) ポートチェック



101 名前: BG ★ 投稿日: 03/05/16 22:34 ID:???
わたしゃ
全部Cをたくらんでいたりして、
あわよくばmod_bbs.cgi


102 名前: ◆MUMUMUkopk @むむむ ★ 投稿日: 03/05/16 22:35 ID:???
とっても簡単にいうと、>>91 のようなことをシステム内でもっとうまくできるのが、
DB化ってことすね。
あるエントリが、あるでっかい(行単位とかの)ファイル中にあるかどうか探す
(とっても簡単に言ってしまえば、grepコマンドのようなことをする)
なんていう処理は、DB_Fileの最も得意とするところですね。

>>96
わーお。




103 名前: 名無しさん@お腹いっぱい。 投稿日: 03/05/16 22:43 ID:IpG1C8kR
あー、単純な検索の手法を流用すれば済むかと思ったら、
全部に正規表現でのパターンマッチングを行う必要があるわけですね…。


104 名前: 名無しさん@お腹いっぱい。 投稿日: 03/05/16 22:44 ID:PgTNJfeY
例えば、以下のようなリストがあるとして、
user.rb.il24.net
adsl.ppp.infoweb.ne.jp
dion.ne.jp
それぞれ、
u.dat user.rb.il24.net
a.dat adsl.ppp.infoweb.ne.jp
d.dat dion.ne.jp
とかに細分化すれば、線形比較の対象が激減すると思う。
あくまでDB使わない計画で。



105 名前: BG ★ 投稿日: 03/05/16 22:45 ID:???
むしろ管理人には思想的なことを聞いたほうが良いと思うのだが、

1) アクセス規制は今よりももっと増やしても良い。(ISP全体じゃなくてだけど)
2) 投稿内容によって弾くこともより増やしたほうがよい(宣伝URLとか)
3) 公開プロ串規制は、こんなもんだと思っている
4) 1)に関連して、アクセス規制は部隊まで作ってでももう少しやりたい
5) 今年の夏はサーフィンに挑戦したい。



106 名前: DDT ◆BDDDT/OREE 投稿日: 03/05/16 22:45 ID:zz8UOpTo
むむむのおっさんはスペインまで行ってこんな事やってるのはいかがなものか。


107 名前: 名無しさん@お腹いっぱい。 投稿日: 03/05/16 22:49 ID:PgTNJfeY
1) システムメンテナンスは出来るだけ自分でも出来るようにしておきたい
2) やれと言われれば、知らない言語でも習得する
3) 今年の夏はぜひとも月旅行


108 名前: ◆MUMUMUkopk @むむむ ★ 投稿日: 03/05/16 22:50 ID:???
>>106
こんなへんぴなとこまで、わざわざストーキングごくろうさん。
こんなことも息抜きのうち。
で、息抜きばかりの不良社員はそろそろ会議に戻るとしようか。


109 名前: サザン ★ 投稿日: 03/05/16 22:50 ID:???
どうやらさんはDBに興味をお持ちになったようです。


110 名前: ひろゆき ◆3SHRUNYAXA @どうやら管理人 ★ 投稿日: 03/05/16 22:50 ID:???
>1) アクセス規制は今よりももっと増やしても良い。(
アクセス規制を2段階に変えようかと思ってたりして、、、
wellknownホストに関しては、今までどおりで、
.mzとか変なところは、一律禁止にしてアカウント制にするのもありかなぁと。

>2) 投稿内容によって弾くこともより増やしたほうがよい
いたちごっこなのでホスト規制を増やして対応予定。

>4) 1)に関連して、アクセス規制は部隊まで作ってでももう少しやりたい
そうかも。



111 名前: ◆MUMUMUkopk @むむむ ★ 投稿日: 03/05/16 22:51 ID:???
ちなみに、ひとコマ出席しなきゃいけない会議があいたのよ(素)。
で、たまったメール処理しながら、たまにのぞいてるのだ。


112 名前: ひろゆき ◆3SHRUNYAXA @どうやら管理人 ★ 投稿日: 03/05/16 22:51 ID:???
>1) システムメンテナンスは出来るだけ自分でも出来るようにしておきたい
おいらが一切触らなくてもいいなら触りたくない。

>2) やれと言われれば、知らない言語でも習得する
微妙。。

>3) 今年の夏はぜひとも月旅行
まずは、ワイハーからですな。


113 名前: 名無しさん@お腹いっぱい。 投稿日: 03/05/16 22:53 ID:cJkcNrMP
>>104
んなことしなくても、
あらかじめソートしておいて、二分探査すればいい。


114 名前: 名無しさん@お腹いっぱい。 投稿日: 03/05/16 23:01 ID:HAw3kirX
>>113
規制リストがソートしてあっても HOST=aaa.xxx.ne.jpのとき、
xxx.ne.jpを探すのは困難では?

aaa.ne.jp
bbb.ne.jp
xxx.ne.jp


115 名前: あぼーん 投稿日: あぼーん
あぼーん


116 名前: 名無しさん@お腹いっぱい。 投稿日: 03/05/16 23:05 ID:s8S+J8Sf
新しいbbs.cgiでも???(ゔぐ〜)出来るようにして欲しいな…。


117 名前: 名無しさん@お腹いっぱい。 投稿日: 03/05/16 23:05 ID:Xno9LbtI
猛者がいるな


118 名前: 名無しさん@お腹いっぱい。 投稿日: 03/05/16 23:06 ID:s8S+J8Sf
出来なかった…。


119 名前: 名無しさん@お腹いっぱい。 投稿日: 03/05/16 23:06 ID:cJkcNrMP
>>114
文字列の後ろの方から逆方向にソートすればいいじゃん。


120 名前: 名無しさん@お腹いっぱい。 投稿日: 03/05/16 23:06 ID:iSiZoDch
単純一致やIPアドレス一致でいいならbinary searchがベストだと思うけど、
正規表現や部分一致が不可能だからねえ。


121 名前: ◆Chacha.PkA 投稿日: 03/05/16 23:09 ID:Ysz+WCxa
ドメインのレベルごとにリストを構築するのは大変でしょうか…?
いったん構築してしまえば、あとは追加、削除の繰り返しですし。


122 名前: 名無しさん@お腹いっぱい。 投稿日: 03/05/16 23:10 ID:iSiZoDch
>119
なるほど、それは面白いかも。
正規表現は使ってないのかな?使ってなければやれるかも。


123 名前: ◆cZfSunOs.U 投稿日: 03/05/16 23:14 ID:3p/pQnrG
PostgreSQL とか言ってみるテスト.

http://www.postgresql.jp/document/pg721doc/user/datatype-net-types.html
http://www.postgresql.jp/document/pg721doc/user/functions-net.html


124 名前: 仕様無しさん ◆ukNwLv.g/w 投稿日: 03/05/16 23:18 ID:jP9uEIkI
リストの内容によっては、perlに面倒なことを押し付けて、
以下のような感じでできないかな? かえって遅くなるかもしれないけど。

open(PHOST,"<$pxck");
my @PIP = <PHOST>;
close(PHOST);
$INH = '(' . join( ')|(', map {chomp} @PIP ) . ')';
if($HOST =~ /$INH/i)
{
Error("ERROR!","公開PROXYを使っているかアクセス規制です!!");
}



125 名前: 仕様無しさん ◆ukNwLv.g/w 投稿日: 03/05/16 23:20 ID:jP9uEIkI
訂正:
$INH = '(' . join( ')|(', map {chomp} @PIP ) . ')';

$INH = '(' . join( ')|(', map {chomp;$_} @PIP ) . ')';


126 名前: 名無しさん@お腹いっぱい。 投稿日: 03/05/17 00:03 ID:XY2PIC22
1)公開PROXY規制(引っかかったら終了)
2)本文規制(広告URLなど:引っかかったら終了)
3)その他特定ホスト等の規制(OPTION)
4)SETTING.TXT(R)
5)xxxxxxxx.dat log/xxxxxxxx.dat subject.txt subback.html index.html i/index.htmlをロック
6)dat追記
7)log/dat追記
8)subject.txt書き直し
9)subback.html書き直し
10)i/index.html書き直し
11)index.html書き直し
12)5のファイルをロック解除

とか無責任に書いてみる。


127 名前: ぼるじょあ ◆yEbBEcuFOU 投稿日: 03/05/17 00:40 ID:X7htdr1x
(・3・) エェー ファイルのロックはOSにまかせてるんじゃないかNAと言ってみるテスト


128 名前: 名無しさん@お腹いっぱい。 投稿日: 03/05/17 00:48 ID:BJ/UiKAP
>>127
複数のプロセスが同時に動いてる時に、ファイルが他のプロセスにより
ロックされてた場合、処理をスキップすることで負荷を低減するという
策なんじゃないかな?

だから、時間のかかる処理に入る前に、書き換える予定のファイルを
まとめてロックしちゃうと。


129 名前: 名無しさん@お腹いっぱい。 投稿日: 03/05/17 04:20 ID:Ag2GCfMt
2ちゃんってこんなふうにじたばたつくってるんだすげー。
ということがわかった記念ぐりこ


130 名前: いらいくん ★ 投稿日: 03/05/17 09:07 ID:???
>>108
ソーセージでも食いながら頑張って下さい。


131 名前: 特攻総長 ◆33aKImDcPg 投稿日: 03/05/17 16:19 ID:70Xfbway
私も参加してよろしいですか?
今からLOG読んでいろいろとやってみようと思うんですが。。。


132 名前: 名無しさん@お腹いっぱい。 投稿日: 03/05/17 16:25 ID:vxJfrmz7
プロキシリストをメモリ内に取り込んじゃえ。


133 名前: 名無しさん 投稿日: 03/05/17 16:31 ID:Fd3LpmGc
スレ順位がBBS_THREAD_NUMBERの数値より下にあるスレは /bbs/html/**********.html は触らないとか。
pageview.cgiが無い今、下位のスレは必要ないじゃん。



134 名前: 名無しさん 投稿日: 03/05/17 16:36 ID:Fd3LpmGc
〜数値より下にあるスレのsage書き込みは



135 名前: ずぶ ◆PHZUBUXUug 投稿日: 03/05/17 18:11 ID:Ddlgnzzu
規制リストって,ディスク内でいったん一つにまとめてメモリに読み出し,
ホスト名の後ろから照合する事は可能でしょうか?

例えば書き込まれたホストがXXXX.aaa.bbb..co.jpだとすると,
まず.jpを照合(.jp以外規制)し,ついで.co.jp(これはスルーできれば
良いですが),そして.bbb.co.jp(一括プロバイダ規制など)と言った具合に。
ホスト名の分割でどれくらい負荷が出るかにも寄りますが,
照合の手順が減るようにも思えるのですが…


136 名前: 名無しさん@お腹いっぱい。 投稿日: 03/05/17 18:48 ID:pi5MGGYm
規制リストが単純に後方一致でいいなら、
一つずつ照合しなくてもいいんだけどな。


137 名前: 名無しさん@お腹いっぱい。 投稿日: 03/05/17 18:53 ID:vxJfrmz7

電波発信者 → 規制リストチェック鯖 → 該当無し → bbs鯖に接触
  ↑           ↓
 「帰れ!!」 ← 限りなく黒


138 名前: ずぶ ◆PHZUBUXUug 投稿日: 03/05/17 19:09 ID:Ddlgnzzu
>>137
規制チェック用の鯖だと,かえって負荷が集中して落ちると
思うんすけど。。。



139 名前: ずぶ ◆PHZUBUXUug 投稿日: 03/05/17 20:51 ID:Ddlgnzzu
>>135
既出ですた。スマソ…


140 名前: 特攻総長 ◆33aKImDcPg 投稿日: 03/05/17 20:56 ID:70Xfbway
規制リストチェック鯖を二つ用意して分散させるとか・・・
一つだとやっぱり集中しますしね〜。


141 名前: ●゜、⊃゜) ◆13ThomasYo 投稿日: 03/05/17 22:17 ID:aG0TjYyT
なんでDB化しないんだろう。
deny listもレスもDB化しちまえばいいのに。


142 名前: 名無しさん@お腹いっぱい。 投稿日: 03/05/17 22:40 ID:990QnyRH
DB化って何ですか?


143 名前: 名無しさん@お腹いっぱい。 投稿日: 03/05/17 22:58 ID:Agm+uIJg
データベース


144 名前: 名無しさん@お腹いっぱい。 投稿日: 03/05/17 23:01 ID:QT+MuNh9
>142
星の入った珠を7つ集めて願いをかなえてもらうこと


145 名前: 名無しさん@お腹いっぱい。 投稿日: 03/05/17 23:19 ID:Ag2GCfMt
>>142
アイコラで巨乳にすること


146 名前: 名無しさん@お腹いっぱい。 投稿日: 03/05/17 23:42 ID:agjC5FTq
>>142
回を重ねるごとに戦闘力が無闇に上がっていくことです。


147 名前: 名無しさん@お腹いっぱい。 投稿日: 03/05/18 01:19 ID:tqhsQp56
>>119 文字列の後ろの方から逆順...てのにぐぐっときて...

規制リストの文字列を逆順化

aaa.ne.jp-> pj.en.aaa
bbb.ne.jp-> pj.en.bbb
xxx.ne.jp-> pj.en.xxx

これはPerlなら、

$反転文字列 = reverse $元の文字列;

な感じでできて、こいつを規制リストとしてとっておく。
(二分探索木とか難しいことはだれかおながいしまぁ〜す)
で、

open(PHOST,"<$pxck");
my @PIP = <PHOST>;
close(PHOST);
$HOST = reverse $HOST;
foreach(@PIP)
{
chomp($_);
if($HOST =~ /^$_/;)
{
Error(" ", ...);
}
}

正規表現のマッチを文字列先頭からに限定できるのでだいぶ良くなるはず。



148 名前: 名無しさん@お腹いっぱい。 投稿日: 03/05/18 01:25 ID:tqhsQp56
あ゛
if($HOST =~ /^$_/;)

if($HOST =~ /^$_/i)




149 名前: 名無しさん@お腹いっぱい。 投稿日: 03/05/18 01:31 ID:YztWOy56



150 名前: 名無しさん@お腹いっぱい。 投稿日: 03/05/18 01:32 ID:n3lDY8Qu
処理量のオーダーが変わってないだろ。
申し訳ないが、馬鹿じゃないの?


151 名前: 名無しさん@お腹いっぱい。 投稿日: 03/05/18 01:33 ID:n3lDY8Qu
ごめん、アルコール入ってて言い過ぎた。
普段思ってても書き込まないようなことを書いちゃった。
150は取り消しで…。


152 名前: ●゜、⊃゜) ◆13ThomasYo 投稿日: 03/05/18 01:35 ID:dpexnWxD
ていうか、

>(二分探索木とか難しいことはだれかおながいしまぁ〜す)

Bサーチが難しいこととか思ってるような人は黙ってる方が吉。


153 名前: 名無しさん@お腹いっぱい。 投稿日: 03/05/18 01:42 ID:YztWOy56
Bサーチていうな


154 名前: 名無しさん@お腹いっぱい。 投稿日: 03/05/18 02:36 ID:2hKGU/PH
ここのスクリプト、頼んで分けてもらったら?
ttp://kari.to/



155 名前: 名無しさん@お腹いっぱい。 投稿日: 03/05/18 04:42 ID:cW0UA6Xf
sourceforge化して開発者あつめるとか・・・


156 名前: 仕様無しさん ◆ukNwLv.g/w 投稿日: 03/05/18 11:18 ID:NzaSTo1K
>>75,80,124,147を実測してみた。
http://www.geocities.co.jp/SiliconValley-Bay/8921/kisei.tgz
どんぶりのせいくらべ状態...


157 名前: 名無しさん@お腹いっぱい。 投稿日: 03/05/18 11:23 ID:9lu5OUzj
>>155
おもしろそうですね。真剣に軽量化を目指して改良する人もいれば、
真剣に2chに深刻な打撃を与える研究をする人もでてくる(^^;;



158 名前: けんすう ◆mTj9hjLz9w 投稿日: 03/05/18 12:15 ID:l0BtGKVq
>>154
(仮)のスクリプトってrubyでしたっけ?

おもしろいことやってる掲示板だとは思うんですが、
今だに使い方がわからないです、、


159 名前: 名無しさん@お腹いっぱい。 投稿日: 03/05/18 15:30 ID:vuT4yR/Q
とりあえずデータは全部メモリに常駐させとこう。


160 名前: 7M. ◆dq7M./4Uw. 投稿日: 03/05/18 15:48 ID:BUGKpdvl
>>156
おちかれーしょん。
124cが一番早いのか…(まぁ確かにどんぶりの背比べ感も…


161 名前: ●゜、⊃゜) ◆13ThomasYo 投稿日: 03/05/18 15:55 ID:dpexnWxD
ドングリの背比べっつーか、124以外は全部O(N)じゃん。


162 名前: ◆cZfSunOs.U 投稿日: 03/05/18 15:58 ID:uRokzo32
規制IPリストをメモリ上に保持しておくような Apache モジュール作ってみるかな.
まぁ政治的(?)にはモジュール追加するのは難しいんだろうけど......


163 名前: ●゜、⊃゜) ◆13ThomasYo 投稿日: 03/05/18 16:07 ID:dpexnWxD
常にメモリに置いておけるならハッシュが最強だろな。


164 名前: ◆n3D69Zsbfg 投稿日: 03/05/18 16:18 ID:+DzCHWQW
>>163
そうか? パトラッシュもなかなかだぞ。


165 名前: 115.suba418.attnet.ne.jp ◆MUMUMUkopk 投稿日: 03/05/18 16:20 ID:a0mQO79e
>>164
くすくす。なんだか予想通りの発言で笑える。
# さきほど無事帰国しますた。ビジネスにうpできたyo。


166 名前: ◆n3D69Zsbfg 投稿日: 03/05/18 16:26 ID:+DzCHWQW
>>165
お疲れ様ー



167 名前: ●゜、⊃゜) ◆13ThomasYo 投稿日: 03/05/18 16:27 ID:dpexnWxD
>>164
フランダースの犬には後日談があってな。
凍死したネロの死肉を食って生き延びたパトラッシュが復讐を誓って魔犬となり、ネロを
虐げた人々を襲っては喰うのだ。


168 名前: 名無しさん@お腹いっぱい。 投稿日: 03/05/18 16:33 ID:4dQwQ6cG
>163
完全一致じゃないものからどうやって?
>164
俺はセブンラッシュがいい。コンチIII最強。


169 名前: ヽ(  ̄∀ ̄)ノ ◆SEED/jTl1k 投稿日: 03/05/18 16:37 ID:85msoj1L
>>167
((((゚Д゚;))))ガタガタブルブル


170 名前: ●゜、⊃゜) ◆13ThomasYo 投稿日: 03/05/18 16:41 ID:dpexnWxD
>>168
+-jp
| +-co
| | +-xxx
| | |
| | +-yyy
| +-or
|  +-zzz
+-to
|




171 名前: ●゜、⊃゜) ◆13ThomasYo 投稿日: 03/05/18 16:42 ID:dpexnWxD
>>169
SEEDこんなとこにも来てるのか(w


172 名前: 仕様無しさん ◆ukNwLv.g/w 投稿日: 03/05/18 16:43 ID:NzaSTo1K
>>160
IDがバグ持ち...


173 名前: 仕様無しさん ◆ukNwLv.g/w 投稿日: 03/05/18 16:45 ID:NzaSTo1K
>>170
ぽかーん
ハッシュって何かわかってる?


174 名前: 名無しさん@お腹いっぱい。 投稿日: 03/05/18 16:46 ID:4dQwQ6cG
>170
意味わかんね。ハッシュって知ってるよね?


175 名前: ●゜、⊃゜) ◆13ThomasYo 投稿日: 03/05/18 16:47 ID:dpexnWxD
>>173
>>170の図を見て各ノードでハッシュ生成するくらいのことはわからんか?


176 名前: 名無しさん@お腹いっぱい。 投稿日: 03/05/18 16:48 ID:4dQwQ6cG
つーかさ、どうやってハッシュ値生成すんの?
リクエストのリモホをドメインで区切って
すべてについて比較するっていうなら、わからないでもないけどさ。


177 名前: 名無しさん@お腹いっぱい。 投稿日: 03/05/18 16:48 ID:ruAGg1+6
bbs.cgi を機能ごとに分割して…



だめだな。


178 名前: ●゜、⊃゜) ◆13ThomasYo 投稿日: 03/05/18 16:52 ID:dpexnWxD
>>176
違うの?


179 名前: 名無しさん@お腹いっぱい。 投稿日: 03/05/18 16:53 ID:4dQwQ6cG
だって>170の図はどう見てもただの木じゃん。
全然ハッシュと関係あるように見えない。


180 名前: 名無しさん@お腹いっぱい。 投稿日: 03/05/18 16:54 ID:4dQwQ6cG
しかも区切ってるのは規制リストの方だし。


181 名前: 仕様無しさん ◆ukNwLv.g/w 投稿日: 03/05/18 16:56 ID:NzaSTo1K
http://qb.2ch.net/test/read.cgi/sec2ch/1004308075/l50
みたいなのもあるから、あかんのだよ。


182 名前: 名無しさん@お腹いっぱい。 投稿日: 03/05/18 17:00 ID:4dQwQ6cG
なるほど、場合によってはリモホの文字数分だけ比較しなきゃいけないか。
(規制リストには後半の一致部だけ入れといて)
だったら下手すると2分探索の方が速そう。


183 名前: ●゜、⊃゜) ◆13ThomasYo 投稿日: 03/05/18 18:37 ID:dpexnWxD
やっぱDB化して
SELECT * FROM T_DENY WHERE HOST LIKE '%xxx.ne.jp';
とかかの。


184 名前: 仕様無しさん ◆ukNwLv.g/w 投稿日: 03/05/18 19:12 ID:NzaSTo1K
>>183
偉そうな事言っといて結局リニアサーチかよ!
偉そうな事言っといて結局リニアサーチかよ!


185 名前: 名無しさん@お腹いっぱい。 投稿日: 03/05/18 19:12 ID:w3ef5Ze0
>>158
書き込み部がrubyで、表示部がC++らしいです。
ツリー表示云々の機能をバッサリ切れば、2ちゃんでも使えそう



186 名前: ●゜、⊃゜) ◆13ThomasYo 投稿日: 03/05/18 19:35 ID:dpexnWxD
>>184
SELECT 〜 LIKEってリニアサーチなの?


187 名前: ●゜、⊃゜) ◆13ThomasYo 投稿日: 03/05/18 19:38 ID:dpexnWxD
まあDBが中でどうやって探してようが、bbs.cgiが探さなくて済むならそれでいいと思うんだが。


188 名前: ◆n3D69Zsbfg 投稿日: 03/05/18 19:41 ID:+DzCHWQW
まぁ中の人ががんばっている訳だが、


189 名前: ●゜、⊃゜) ◆13ThomasYo 投稿日: 03/05/18 19:45 ID:dpexnWxD
bbs.cgiをどんなにいじくってもDBの中の人以上の信頼性と安定性を得るのは難しいわけで。


190 名前: ◆n3D69Zsbfg 投稿日: 03/05/18 19:46 ID:+DzCHWQW
高速性と自己満足は得られる可能性はあるかも、



191 名前: M249 ◆MInImi/RF2 投稿日: 03/05/18 19:46 ID:HH1ICRWy
DBにINDEXつけとけば検索早い、とかいう話?



192 名前: 名無しさん@お腹いっぱい。 投稿日: 03/05/18 20:00 ID:X1uk/rD/
>>186
like使ったんじゃインデックスが効かない
つーかいくらDBの中の人に興味がなくても
それぐらいわからないと説得力ないぞ


193 名前: 名無しさん@お腹いっぱい。 投稿日: 03/05/18 20:12 ID:ZCfCpxzS
そう言えば、この調子で言ったら、転送量限界達するまであと何日ぐらい?


194 名前: あぼーん 投稿日: あぼーん
あぼーん


195 名前: 名無しさん@お腹いっぱい。 投稿日: 03/05/18 20:53 ID:ZoWVW8hi
>>186-190
そろそろトーマスも限界か?


196 名前: ●゜、⊃゜) ◆13ThomasYo 投稿日: 03/05/18 21:11 ID:dpexnWxD
>>190
どっちが目的なの?

>>192
>>187


197 名前: 仕様無しさん ◆ukNwLv.g/w 投稿日: 03/05/18 21:18 ID:NzaSTo1K
つーかあれだ、実際に動くコード書いた上で言ってくれ。
テストデータは>>181の中にあるから。


198 名前: ●゜、⊃゜) ◆13ThomasYo 投稿日: 03/05/18 21:22 ID:dpexnWxD
・規制のやり方をおおざっぱにする

という選択肢は無しか?


199 名前: 名無しさん@お腹いっぱい。 投稿日: 03/05/18 21:56 ID:sDK+/dHs
>198
ひろゆきの基本思想から考えて、無理。


200 名前: ●゜、⊃゜) ◆13ThomasYo 投稿日: 03/05/18 22:00 ID:dpexnWxD
基本思想って「めんどくさいことは嫌」の他に何かあったっけ。


201 名前: 名無しさん@お腹いっぱい。 投稿日: 03/05/18 22:05 ID:LxaDjCgC
このスレの、
規制は部隊をつくってでもきっちりやりたい
ってやつでは?


202 名前: 名無しさん@お腹いっぱい。 投稿日: 03/05/18 22:06 ID:hZV0EVGe
仕事きっちり


203 名前: 名無しさん@お腹いっぱい。 投稿日: 03/05/18 22:09 ID:hZV0EVGe
>>110


204 名前: ●゜、⊃゜) ◆13ThomasYo 投稿日: 03/05/18 22:13 ID:dpexnWxD
「きっちり」ってのは、
1.規制対象を漏らさないようにする
2.道連れを最小限にするようにきめ細かく設定する
のどっちなんだろう。

1なら効率化は簡単。


205 名前: 名無しさん@お腹いっぱい。 投稿日: 03/05/18 22:17 ID:AA6ALSjm
つまりあれだ
鯖からケーブルを抜くんだ


206 名前: 名無しさん@お腹いっぱい。 投稿日: 03/05/18 23:29 ID:YztWOy56
つまりあれだ
どうせリストを全部読み込むならFastCGIにするんだ
整理されたファイルを途中まで探索するならファイル形式を練るんだ


207 名前: 名無しさん@お腹いっぱい。 投稿日: 03/05/19 09:06 ID:2Qojq86d
2だろ今の状態でも巻き添え食った奴の苦情が絶えんのだから


208 名前: ひろゆき ◆3SHRUNYAXA @どうやら管理人 ★ 投稿日: 03/05/19 13:48 ID:???
結局、0が一番早かったんすか?>156


209 名前: 名無しさん@お腹いっぱい。 投稿日: 03/05/19 14:29 ID:Jbs9N7wv
ひろゆきが、安定性やら高速性やら精密性やら
何を優先して欲しいか言わなきゃ方向が定まらないよ
とか思ってたけど、もしかすると、夜勤さんが勝手に言い始めただけでは?

んで、ひろゆきは、今のままでも特に問題無いし、再開発は特にはどうでもいい。
でも、何も口出さなくてもよくて、誰かが勝手にやってくれて、今よりいいものが出来るのなら
ラッキーだし皆頑張れ とか考えてないか? > ひろゆき


210 名前: 名無しさん@お腹いっぱい。 投稿日: 03/05/19 14:29 ID:Jbs9N7wv
>夜勤さんが勝手に言い始めただけでは?
bbs.cgi再開発計画


211 名前: ◆n3D69Zsbfg 投稿日: 03/05/19 14:39 ID:NcPIoy92
>>209
bbs.cgi は私たち素人は近づいちゃいけない

神の領域なんですよ。

わかっていますか?


212 名前: 名無しさん@お腹いっぱい。 投稿日: 03/05/19 15:03 ID:QVrN+NKn
           ∂
          l⌒ヽ
      ♪  i ; ; ''i
    ♪    |' : l
       ヽ(´Д`;)ノ )) キュウリキュウリ♪
        ノ 鯖. 丿
     (( (~ :; ;.ノ> ))
        ゛''' ''
     ズルズル

こんな感じで近づいてもだめ?>神の領域


213 名前: 名無しさん@お腹いっぱい。 投稿日: 03/05/19 15:08 ID:AKXygBqW
>211
ひろゆきの娘(bbs.cgi)と結婚(改造)して
2chをのっとるという夜勤の野望ここに潰えるか。
地道に鯖やread.cgiを改良するしか無いような気が


214 名前: ◆n3D69Zsbfg 投稿日: 03/05/19 15:11 ID:NcPIoy92
出来ることなら、見て見ぬ振りをしたい。

うひゃひゃ

でも、なんか楽しいじゃん。わいわいがやがや。


215 名前: 名無しさん@お腹いっぱい。 投稿日: 03/05/19 15:16 ID:Jbs9N7wv
これほんとにひ(略が作ったの?トオルタンだろ?
まさかな はっは〜

とりあえずおいらの希望としては、bbs.cgiでカレーがゆっくり煮込めるようにして下さい


216 名前: 名無しさん@お腹いっぱい。 投稿日: 03/05/19 15:39 ID:MSebs3kf
我々には産まれたままの姿は見せられない
とかいいながら、トオルや(^_^;)にはあんなとこやそんなとこまで
いじくらせてるんだよな、まあその結果が今の絶妙なバランスなんだが


217 名前: 名無しさん@お腹いっぱい。 投稿日: 03/05/19 19:22 ID:8Pi/9UWX
ひりゆきが作った訳じゃないし。。。



218 名前: 仕様無しさん ◆ukNwLv.g/w 投稿日: 03/05/19 20:43 ID:Aij+AdRO
>>208
0は比較用の何も処理しない(規制無し)状態です。
ですから、残りの(75等の)時間から0の約5秒を引いた時間を402(件数)で
割った時間が一回の規制処理にかかる平均的な時間になります。

で、ついでにもう少し高速化してみてうpしときました。


219 名前: 名無しさん@お腹いっぱい。 投稿日: 03/05/19 22:36 ID:8S6OlxE8
>>156 試験どもです
で、
147.plなんですが、

if($HOST =~ /$_/i)
だと文字列反転した意味が出てなくて、(コードが期待する通り)75.plと
同じ結果になってます。
ま、直してもどんぶり状態はあまり変らないかもですけど。



220 名前: 仕様無しさん ◆ukNwLv.g/w 投稿日: 03/05/19 23:15 ID:Aij+AdRO
>>219
ドメイン名は反転、IPはそのままで ^ を付けてやってみました。
約15秒で変わらないですねぇ。


221 名前: 7M. ◆dq7M./4Uw. 投稿日: 03/05/19 23:33 ID:66ACHsQl
今の2chのスクリプトの大元作ったのはドルバッキーさんでわ?


222 名前: 名無しさん@お腹いっぱい。 投稿日: 03/05/19 23:49 ID:foOIoNHf
たくさんの人に愛されてきたのですね。>bbs.cgi


223 名前: コナン ◆SJSEX69q3Q 投稿日: 03/05/20 00:00 ID:nF8WRY4x
bbs.cgiが20030519になってるわけだが・・・( ̄ー ̄)ニヤリッ


224 名前: 名無しさん@お腹いっぱい。 投稿日: 03/05/20 00:01 ID:NvpxrT0H
ひろゆきさんも、大事な一人娘を愛しているんですね


225 名前: 名無しさん@お腹いっぱい。 投稿日: 03/05/20 00:05 ID:FthSt6oi
NHK人形劇 ニチャンニチャン物語


226 名前: 名無しさん@お腹いっぱい。 投稿日: 03/05/20 00:13 ID:S/BnmfPi
>>223
アクセスプラス規制だと思われ


227 名前: 名無しさん@お腹いっぱい。 投稿日: 03/05/20 00:16 ID:96oJEnlM
>>69
(・∀・)ホホウ
http://www.domo2.net/system/ver.html
とりあえず何が変わったんだろう?
広告規制関連かしら。


228 名前: 名無しさん@お腹いっぱい。 投稿日: 03/05/20 00:19 ID:vZDlrKy4
perlは久々なんだけど、何とか2分探索を実装した。
正規表現は無理だけど、前方一致でいけます。
(規制リストに example.com があったら、
www.example.comとかmail.example.comを引っ掛ける)

>>156のテストだと、2倍強くらいしか速くなってない。
多分、コードがでかくなったせいで、スクリプトのparseに時間が
かかるようになったからと思われ。


229 名前: 名無しさん@お腹いっぱい。 投稿日: 03/05/20 00:20 ID:FthSt6oi
要するに、bbs.cgiに2ちゃんねるのロジックを詰め込みすぎているのか?


230 名前: 228 投稿日: 03/05/20 00:21 ID:vZDlrKy4
まずこいつで検索用データベースファイルを作る。規制リストを
更新したら1回実行すればよい。
proxy_list.dbというデータベースファイルができる。でかくてすまん。

#!/usr/bin/perl

$pxck="proxy_list";
$maxlen = 20;

open(PHOST,"<$pxck");
my @PIP = <PHOST>;
close(PHOST);

foreach (@PIP) {
chomp;
if (/^([0-9]+\.)*([0-9]+)$/) { # this is IPv4 address
@list = (@list, $_);
} else { # this is hostname
@t = split /\./;
@t = reverse @t;
@list = (@list, lc(join ("." , @t)));
}
}

@list = sort(@list);

foreach (@list) {
$l = length;
if ($l > $maxlen) {
$maxlen = $l;
$str = $_
}
}

$maxlen = 80; # max size of record is $maxlen !

open(DB, ">$pxck" . ".db") or die "can't open file!";

foreach (@list) {
$l = length($_);
if ($l <= $maxlen) {
print DB $_ . ( " " x ($maxlen - length($_)));
}
}



231 名前: 228 投稿日: 03/05/20 00:23 ID:vZDlrKy4
次は検索用スクリプト。でかくてすまん。

#!/usr/bin/perl

$pxck="proxy_list";
$maxlen = 80;

$host = $ARGV[0];
if ( ! ($host =~ /^([0-9]+\.)*([0-9]+)$/) ) { # not IP address
@t = split /\./, $host;
@t = reverse @t;
$host = join (".", @t);
}
$host = lc($host);

$dbfile = $pxck . ".db";

( $dev , $ino , $mode , $nlink , $uid , $gid , $rdev , $size , $atime , $mtime , $ctime , $blksize , $blocks ) = stat ($dbfile);

$nrec = $size / $maxlen; # number of record
$low = 0;
$high = $nrec - 1;
open(DB,"<$dbfile" );

while ($low <= $high) {
$mid = int(($high + $low) / 2);
seek(DB, $mid * $maxlen, 0);
read(DB, $rec, $maxlen);
$rec =~ s/ //g;
# print "$mid: $rec\n";
if ($host =~ /$rec\./ || $host eq $rec ) {
print "."; # found!!
break;
}
if ($host lt $rec) {
$high = $mid - 1;
} else {
$low = $mid + 1;
}
}
close(DB);



232 名前: 名無しさん@お腹いっぱい。 投稿日: 03/05/20 00:32 ID:2BSs0sVK
おいらこんなの作ってみた。
小さいけどHASH使うやつ。

#! /usr/bin/perl

$pxck="proxy_list";
$HOST=$ARGV[0];

open(PHOST,"<$pxck");
while (<PHOST>) {
chomp;
$PIP{$_} = 0;
}
close(PHOST);

chomp($HOST);
$lim = 3; # !!!!

@host = split /\./, $HOST;
for ($i = $#host;$i>=$lim; $i--) {
$H = join ".", @host;
if( exists $PIP{$H} )
{
print "matched\n";
}
shift @host;
}

---
$lim = 3てのでdomainのレベルを'4'に固定しちまっている
ところがちょっとちょっと。あ、3レベルしかないデータが
あるな...じゃ$lim = 2にしとかないと...とかエレガント
じゃないのがたまにきず。



233 名前: 名無しさん@お腹いっぱい。 投稿日: 03/05/20 01:02 ID:bdI3yMHP
そういえば WebProg板で

last modified 2001年 12月 19日 by ひろゆき

の bbs.cgi が流出してたことがあったなぁ・・・


234 名前: 名無しさん@お腹いっぱい。 投稿日: 03/05/20 01:58 ID:FthSt6oi
アラヤダ


235 名前: 228 投稿日: 03/05/20 02:28 ID:vZDlrKy4
>>232 カコイイ!!
DB_File使えばO(1)だな


236 名前: 228 投稿日: 03/05/20 02:30 ID:vZDlrKy4
厳密にはO(1)じゃないけど、ほとんどO(1)だね


237 名前: 名無しさん@お腹いっぱい。 投稿日: 03/05/20 02:35 ID:DKK3Skv6
処理時間が短くて済むのがハッシュの特徴だからね。
しかし、その反面メモリを大量に食うというデメリットがある。
呼び出されるたびに毎回メモリ上に大量のデータを展開するのは
呼び出しが集中するとマズい気がするが、
そこらへんはどうなるかやってみないとわからないだろうなぁ。


238 名前: ひろゆき ◆3SHRUNYAXA @どうやら管理人 ★ 投稿日: 03/05/20 02:55 ID:???
>>231
プロキシリストは、IPじゃなくて、リモホも入ってたりします。。。
***.com以下のアクセスを全て規制みたいな、、


239 名前: 名無しさん@お腹いっぱい。 投稿日: 03/05/20 02:59 ID:FthSt6oi
>>238
ちゃんと判別してるよーにみえるぞ↓

>if (/^([0-9]+\.)*([0-9]+)$/) { # this is IPv4 address
>@list = (@list, $_);
>} else { # this is hostname
>@t = split /\./;
>@t = reverse @t;
>@list = (@list, lc(join ("." , @t)));
>}


240 名前: ひろゆき ◆3SHRUNYAXA @どうやら管理人 ★ 投稿日: 03/05/20 03:03 ID:???
うわーい、、、アルゴリズムをよくわかってないおいらです。。
IPをみて、数字がでかいかどうかを判定してるんじゃないんすか?

while ($low <= $high) {
$mid = int(($high + $low) / 2);
seek(DB, $mid * $maxlen, 0);
read(DB, $rec, $maxlen);
$rec =~ s/ //g;
# print "$mid: $rec\n";
if ($host =~ /$rec\./ || $host eq $rec ) {
print "."; # found!!
break;
}



241 名前: 名無しさん@お腹いっぱい。 投稿日: 03/05/20 03:11 ID:FthSt6oi
ほんとだ。よくみたら数値比較してるっぽいな。
IPとホスト名まぜるのはもうちょっと工夫がいるな。


242 名前: 名無しさん@お腹いっぱい。 投稿日: 03/05/20 03:21 ID:CcL135Kb
アルゴリズム的には、2分探索ってのは
データを順番に並べておいて
真ん中と比較してどちら側にあるかを判定し
さらにその真ん中と比較して・・・を繰り返すだけ。

で、今回の場合は、リモホの部分一致じゃなくて末尾一致でいいから
規制リストを末尾の文字から代償を比較して、順番に並べておこうと。

IPアドレスも混じっているなら
逆引きできないアドレスも全部文字列にしてから比較するか
ファイルを分けるのがよろしいかと。


243 名前: 名無しさん@お腹いっぱい。 投稿日: 03/05/20 03:27 ID:siFXTzp9
リモホチェックにパスしたら昔テストしてたSPIDみたいなCookieを食わせて
以後ある程度の期間はCookieのチェックだけで済ませちゃいかんの?


244 名前: ひろゆき ◆3SHRUNYAXA @どうやら管理人 ★ 投稿日: 03/05/20 03:31 ID:???
いやぁ、、それを実装するはずだったんですが、
時間がたってしまいました、、、>>243



245 名前: 名無しさん@お腹いっぱい。 投稿日: 03/05/20 03:37 ID:siFXTzp9
>>244
( ´ー`)y-~~~


246 名前: 名無しさん@お腹いっぱい。 投稿日: 03/05/20 03:37 ID:FthSt6oi
で?>>232 >>235 のバークレーDB路線はどうなの?

DB_File使えばO(1)だな
って


247 名前: 名無しさん@お腹いっぱい。 投稿日: 03/05/20 03:37 ID:FthSt6oi
手がすべた、、で、どうなの?


248 名前: ひろゆき ◆3SHRUNYAXA @どうやら管理人 ★ 投稿日: 03/05/20 03:38 ID:???
DBでの実装も試験してみますかぁ、、


249 名前: あぼーん 投稿日: あぼーん
あぼーん


250 名前: Albert ◆0oQ5UKYDHU 投稿日: 03/05/20 03:47 ID:X6vfP9Cg
>>248職人様方の邪魔をしてしまいました。
本当にすみませんでした。


251 名前: 名無しさん@お腹いっぱい。 投稿日: 03/05/20 03:49 ID:FthSt6oi
>でも、友達は後で泣きながら「なんでHPの作り方なんか教えたの?○○(私の名前)のせいじゃん!
>と言ってきて、絶交状態です。
>2ちゃんねらーは、私たちの友情も引き裂きました!

ワラタ


252 名前: 名無しさん@お腹いっぱい。 投稿日: 03/05/20 03:52 ID:siFXTzp9
近頃は自動謝罪カキコ機能の付いたスクリプトがあるの?


253 名前: 228 投稿日: 03/05/20 04:33 ID:vZDlrKy4
>>230-231の改良版。
mkdb.plがデータベース作成用、bsearch.plが検索用。
http://www.geocities.co.jp/Playtown-Spade/7204/bsearch.tgz

>>238
proxy_listに
example.com
192.168
とあれば、www.example.com とか 192.168.3.5
を引っ掛けるように作ってます。
IPアドレスとホスト名でマッチングの仕方を変えてます。


DB_FileつかってO(1)にするのは…
Perlハカーに実装してもらいましょう。
わたしゃPerl苦手なので…


254 名前: 241 投稿日: 03/05/20 04:43 ID:FthSt6oi
>>238
やべ。。てっきり比較してるのIPの一部とかだと思ったら。。
混乱させて正直スマンカッタ


255 名前: 232 投稿日: 03/05/20 11:37 ID:2BSs0sVK
>>232 はIPアドレスのときネットワークアドレスの頭から削って
比較することになってしまい、仕様的にマズイのでちょっと訂正。
それに.com規制とか考えると$lim=0にしないといけない。
んで、それらを解決したものでテストしてみた。
http://www.geocities.co.jp/SilkRoad-Ocean/4452/kisei2.tgz
結果から言うと、
HASHを作るのに単にファイル読むだけより倍以上時間がかかってる。

試しにDB_Fileもやってみた。
なんか惨憺たる結果。
こーぢんぐが悪いかも。




256 名前: 名無しさん@お腹いっぱい。 投稿日: 03/05/20 12:51 ID:itSoBR7s
static void update_db(const char *proxy, const char *db)
{
FILE *src = fopen(proxy, "r");
FILE *dst = fopen(db, "w+");
char line[IP_LENGTH + 1];
char **list = NULL;
int i, list_length = 0;

while (fgets(line, IP_LENGTH, src) != NULL) {
char *reverse = (char *) malloc(IP_LENGTH);
int length = strlen(line);

memset(reverse, '\0', IP_LENGTH);
if (length > 1 && line[length - 1] == '\n')line[length - 1] = '\0';
strreverse(reverse, line);
list = realloc(list, (list_length + 1) * sizeof(char*));
list[list_length++] = reverse;
}

qsort(list, list_length, sizeof(char*),
(int (*)(const void *, const void *)) &qsort_strcmp);

for (i = 0; i < list_length; ++i) {
fwrite(list[i], 1, IP_LENGTH, dst);
free(list[i]);
}

fclose(src);fclose(dst);
free(list);
}

static void update_db_if_need(const char *proxy, const char *db)
{
struct stat st;
time_t update;

stat(proxy, &st);update = st.st_mtime;
if (stat(db, &st) < 0 || update > st.st_mtime)
update_db(proxy, db);
}

static __inline__ int stripcmp(const char *ip, const char *jp)
{
for (; *ip == *jp; ++ip, ++jp)
if (*ip == '\0')return 0;

return (*jp == '\0') ? 0 : ((*ip < *jp) ? -1 : 1);
}



257 名前: 名無しさん@お腹いっぱい。 投稿日: 03/05/20 12:52 ID:itSoBR7s
static int search_ip(const char *ip)
{
FILE *fp;
char line[IP_LENGTH];
char reverse[IP_LENGTH];
int min, max, length = strlen(ip);

update_db_if_need(PROXY_FILE, PROXY_FILE_DB);

fp = fopen(PROXY_FILE_DB, "r");
strreverse(reverse, ip);

fseek(fp, 0, SEEK_END);
min = 0;max = ftell(fp) / IP_LENGTH;
do {
int ret, i = (min + max) / 2;

fseek(fp, i * IP_LENGTH, SEEK_SET);
fread(line, 1, IP_LENGTH, fp);

/* ret = strncmp(reverse, line, strlen(line)); */
ret = stripcmp(reverse, line);
if (ret < 0)max = i - 1;
else if (ret > 0)min = i + 1;
else{ fclose(fp); return 1; }
} while (min <= max);

fclose(fp);
return 0;
}

int main(int argc, char **argv)
{
if (argc == 2) {
if (search_ip(argv[1]) != 0)printf("match: %s\n", argv[1]);
} else {
FILE* src = fopen(PROXY_FILE, "r");
char line[IP_LENGTH + 1];

while (fgets(line, IP_LENGTH, src) != NULL) {
int length = strlen(line);

if (length > 1 && line[length - 1] == '\n')
line[length - 1] = '\0';
if (search_ip(line) != 0)printf("match: %s\n", line);
}
fclose(src);
}

return 0;
}



258 名前: 名無しさん@お腹いっぱい。 投稿日: 03/05/20 12:56 ID:itSoBR7s
先頭が書き込めてなかった(´・ω・`)ショボーン


#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>

#definePROXY_FILE"./proxy_list"
#definePROXY_FILE_DB"./proxy_list.bsort"
#defineIP_LENGTH64

static __inline__ int isstrip(const char* ip)
{
for (; *ip != '\0'; ++ip)
if (!(*ip >= '0' && *ip <= '9') && *ip != '.')return 0;
return 1;
}

static void strreverse(char *dst, const char *src)
{
if (isstrip(src) != 0)strcpy(dst, src);
else {
const char *p = src + strlen(src);

while (p > src)*dst++ = tolower(*--p);
*dst = '\0';
}
}

static int qsort_strcmp(const char** x, const char** y)
{
return strcmp(*x, *y);
}



259 名前: 名無しさん@お腹いっぱい。 投稿日: 03/05/20 12:59 ID:itSoBR7s
#define の所のタブの空白が消えてやがる



260 名前: ひろゆき ◆3SHRUNYAXA @どうやら管理人 ★ 投稿日: 03/05/20 13:56 ID:???
IPアドレスを逆さにしたりする作業がありますけど、
IPアドレスやドメイン名がすでに逆さになってるリストがあるという前提
だとkisei | 33.79 33.82 33.72 33.78ってことですか?
>>255

おぉ、、Cだ、、、
DBを作るほうはなんとなくわかるんですが、
検索のほうのアルゴリズムがよくわかりません。。。



261 名前: rafale ★ 投稿日: 03/05/20 14:03 ID:???
>>260
見た感じだとIPv4だったらkisei.pl内で逆さにしてるっぽいですが…


262 名前: 232=255 投稿日: 03/05/20 15:49 ID:2BSs0sVK
>>260 説明足らなくてすんません
DBつくるmkdbf.plってのの中で、IPアドレスのデータだけ、'.'で区切られた
パートを反転させています。リモホはそのまま。
で、比較元が$HOSTに入りますが、それがIPアドレスだったときだけ
パート反転させています。
比較はIPもリモホも左側のパートを削りながら一致を探しています。
たとえばIPアドレスで
24.xxx.xxx.xxx
なんてのを規制する場合に規制DBには
'24'
というエントリがあって、$HOSTに24.123.223.111が来た場合の動きを
想像してみてください。
反転すると、
111.223.123.24
比較は
1st 111.223.123.24 X
2nd 223.123.24 X
3rd 123.24 X
4th 24 bingo !
みたいな感じです。

理屈はそうなんだけど、実際はしらせると重いのがなんとも...


263 名前: BG ★ 投稿日: 03/05/20 16:01 ID:???
チェックしなきゃならない規制っていくつあるのだろぅか。

1) スレ立て規制。 (うまく動いている?)
2) 連投規制。 (あまりうまく動いていない?)
3) 公開プロ串規制。 (結構うまくいっている?)
4) プロ串規制(ポートチェック)。 (結構うまくいっている?)
5) jp以外規制。(YBBとかの問題?)
6) 投稿内容のチェック? (文字数とか、行数)
7) 512K超えチェック
8) 1,000超えチェック
9) 血液さらさらチェック

処理の順番とか、スキップするとか・・・
それぞれのチェックを軽くすることも勿論必要だけど。
そこが 50% 軽くなって全体にはどれくらい寄与するのか?
「処理をしない」という選択肢もあると思うのだが。


264 名前: 名無しさん@お腹いっぱい。 投稿日: 03/05/20 16:03 ID:wJvFAC38
10) 毛髪チェック


265 名前: 名無しさん@お腹いっぱい。 投稿日: 03/05/20 16:10 ID:itSoBR7s
>257 max = ftell(fp) / IP_LENGTH;
max = ftell(fp) / IP_LENGTH - 1; だった(´・ω・`)ショボーン



266 名前: M249 ◆MInImi/RF2 投稿日: 03/05/20 16:17 ID:37mwjWxa
尿酸値もチェックしないと…。



267 名前: rafale ★ 投稿日: 03/05/20 16:29 ID:???
>>263
技術面の話は進んでるけど、全体的な設計をもっと詰めましょうってことですかね?


268 名前: 名無しさん@お腹いっぱい。 投稿日: 03/05/20 17:09 ID:W4e+giqD
負荷が高くなってきたら、
適当にチェックをさぼるようにすれば、
負荷を一定以下に保てる。


269 名前: ◆Kinen/LLFY 投稿日: 03/05/20 17:42 ID:g8FuBIfk
ここで言っちゃってもいいものやら。。
http://qb.2ch.net/operate/SETTING.TXT
なんですが、
timecount=
timeclose=
と無設定になってるんですが、>263の 2) 連投規制。
って昔と何か変わりました?
他の板でもいくつか見かけたんですが。


270 名前: 名無しさん@お腹いっぱい。 投稿日: 03/05/20 17:43 ID:FthSt6oi
処理の重みが見積もれないのか?


271 名前: サザン ★ 投稿日: 03/05/20 20:40 ID:???
>>269
何も設定されてないと、デフォルトが適応されるのだぁ、


272 名前: 名無しさん@お腹いっぱい。 投稿日: 03/05/20 21:00 ID:hfnPNouk
>>271デフォルトっていくつぐらいなんだろう、、、

>>263
まさかまさかと思うけど、将来ID制に移行して
(例えば)●ログイン(や2chspアド)が無かったら書き込めない、、、、
なんていう規制も想定内?


273 名前: ◆Kinen/LLFY 投稿日: 03/05/20 21:02 ID:gIvEpEyJ
>271
最近設定の無い板を幾つか目撃して、どうなってるのやらと思ってました。
今度はデフォ値が気になったり・・いやいや、初歩的な質問に回答ありがとうでした(汗


274 名前: サザン ★ 投稿日: 03/05/20 21:58 ID:???
デフォルトは荒らしとかもあるから、公開禁止かなぁ、、と。
もちろん他の設定にもデフォルトはあります、


275 名前: 名無しさん@お腹いっぱい。 投稿日: 03/05/20 22:55 ID:sFl2Cudh
>>272
> (例えば)●ログイン(や2chspアド)が無かったら書き込めない、、、、

http://oyster.2ch.net/maru/


276 名前: ひろゆき ◆3SHRUNYAXA @どうやら管理人 ★ 投稿日: 03/05/21 02:31 ID:???
メモ、、、

http://multix.jp/cgi-bin/cdiary2/2003-03-31.dml.html仮に「text.html」がコールされたとき、そのファイルがサーバになくて“MultiViews”が指定されていると「text.html.ja」とか「text.html.en」といった言語別のページが探されるようになります。このケースでは“AddEncoding”が追加されてるので「text.html.gz」という圧縮済のページデータが探されることが期待されています。




277 名前: 名無しさん@お腹いっぱい。 投稿日: 03/05/21 02:45 ID:moDenFLU
最初から圧縮しておけばデーモンたんが圧縮にかける処理を省けるんじゃないかという発想?
何がネックなのかよくわかってないけど、あんまり意味がないんじゃないかなぁ。


278 名前: 名無しさん@お腹いっぱい。 投稿日: 03/05/21 12:35 ID:qJuaIACU
>>260

#! /usr/bin/perl
use DB_File;

だけのスクリプトでやってみると、

hoge:kisei% time ./a.sh useDB_File

24.828u 6.891s 0:31.79 99.7% 880+617k 0+0io 0pf+0w
hoge:kisei% time ./a.sh useDB_File

24.965u 6.755s 0:31.79 99.7% 879+617k 0+0io 0pf+0w
hoge:kisei% time ./a.sh useDB_File

24.825u 6.891s 0:31.79 99.7% 877+617k 0+0io 0pf+0w
hoge:kisei% time ./a.sh useDB_File

25.278u 6.443s 0:31.80 99.7% 879+618k 0+0io 0pf+0w

な感じで(予想できたことだけど)これが殆どの時間喰ってやがる。
比較のため0.plの時間は以下
hoge:kisei% time ./a.sh 0

2.839u 2.285s 0:05.59 91.4% 849+311k 0+0io 0pf+0w
hoge:kisei% time ./a.sh 0

2.728u 2.393s 0:05.14 99.4% 851+313k 0+0io 0pf+0w
hoge:kisei% time ./a.sh 0

3.009u 2.112s 0:05.14 99.4% 845+312k 0+0io 0pf+0w

...つまり、比較処理は期待通りの速さを得られそうだが、前準備処理が重い。
...ということは前準備処理をなるだけ減らす...ってサーバ化する必要あり
ってことでしょうかね? 単純なRequest-Answer形式の鯖つくって、検索エンジン
としては>>256-258をつかうっと。



279 名前: 278 投稿日: 03/05/21 13:04 ID:qJuaIACU
鯖をたててそいつと通信させるにもやっぱ処理のオーバヘッドが
あって...
#! /usr/bin/perl
use Socket;

で測ってみると、
hoge:kisei% time ./a.sh useSocket

14.396u 4.171s 0:18.61 99.7% 874+473k 0+0io 0pf+0w
hoge:kisei% time ./a.sh useSocket

14.390u 4.183s 0:18.62 99.7% 876+474k 0+0io 0pf+0w
hoge:kisei% time ./a.sh useSocket

14.221u 4.349s 0:18.62 99.6% 872+472k 0+0io 0pf+0w
hoge:kisei% time ./a.sh useSocket

14.439u 4.132s 0:18.63 99.6% 874+473k 0+0io 0pf+0w

平均 18.62

Perlでやると結構うがーな模様




280 名前: ◆MUMUMUkopk @むむむ ★ 投稿日: 03/05/21 13:18 ID:???
>>278-279
これは、Perlの宿命ってやつですね。
Perlでやる以上、この部分(モジュールの初期化にかかる部分)はしかたない気がする。
最近自分の環境でSpamAssassinを立てた時もそう思った。

Perlの初期化部分の重い処理はデーモン化する方向で解決を図ることが多いですね。
Perlは起動と初期化が重いので。


281 名前: 名無しさん@お腹いっぱい。 投稿日: 03/05/21 14:09 ID:a9KTeKiJ
すなおに常駐させればいいのにって思う。FastCGIは駄目なの?


282 名前: ◆MUMUMUkopk @むむむ ★ 投稿日: 03/05/21 16:00 ID:???
>>281
これか、、。
http://www.fastcgi.com/

ここによくまとまってるみたいね。
http://snap.shot.cx/ZWiki/FastCGI

面白いかも。でもmod_fastcgiというぐらいで(以下略。


283 名前: 名無しさん@お腹いっぱい。 投稿日: 03/05/21 20:45 ID:TeTvj1yt
いっその事Perlに拘らないとか?(^_^;



284 名前: 名無しさん@お腹いっぱい。 投稿日: 03/05/21 20:59 ID:FlaWnQVN
鯖がタコなんだよ。


285 名前: 228 投稿日: 03/05/21 22:05 ID:855jjad1
DB使ったほうが速いと思ってたので、
あまりまじめにテストしてなかったけど、
2分探索(bsearch.tgz >>253 )は結構速いかもしれない。
Perlでクライアント/サーバする上で必須になると思われる
「use Socket;」*だけ* を書いたスクリプトよりも速い。
規制リストの数が数千行のレベルなら、Perlでやる限り
2分探索でよいかもしれない。

----
Celeron 1.1MHz, FreeBSD 4.5上の /usr/bin/perlで測定:

time ./a.sh bsearch
2.925u 2.288s 0:05.27 98.6%

time ./a.sh dohash2 # >>255
8.520u 2.416s 0:11.02 99.1%

time ./a.sh socket # use Socket; とだけ書いたスクリプト
17.898u 4.114s 0:22.06 99.7%

time ./a.sh loaddb # use DB_File; とだけ書いたスクリプト
23.374u 5.255s 0:28.78 99.4%


286 名前: 228 投稿日: 03/05/21 22:09 ID:855jjad1
>>285 Celeron 1.1GHzね。1.1MHzなんて俺が初めて触ったマイコンより遅いじゃねーか


287 名前: 228 投稿日: 03/05/21 22:23 ID:855jjad1
あと、純粋なPerlの起動オーバヘッド(プロセス起動+構文解析)を測定
するために、>>75 の先頭に "exit;"を
挿入したもの(null)についてテストしてみた。bsearchの実行時間の大半は、
実は最初からPerlに存在する起動オーバーヘッドの模様。

---
time ./a.sh 75 # ひろゆき氏オリジナル (>>75 )
11.365u 2.407s 0:14.19 96.9%

time ./a.sh null # >>75 の #/usr/bin/perlの直後に "exit;"を挿入したもの
1.995u 1.916s 0:03.91 99.7%



288 名前: ◆MUMUMUkopk @むむむ ★ 投稿日: 03/05/21 22:39 ID:???
228氏、おつかれです。
なるほど、bsearchは結構有望そうですね。
# 今日も徹夜かも。スペインから帰国してから、仕事でずっと徹夜だ、、、。


289 名前: 名無しさん@お腹いっぱい。 投稿日: 03/05/22 00:15 ID:hl9bRzNF
>>288
乙です。


290 名前: 名無しさん@お腹いっぱい。 投稿日: 03/05/22 07:33 ID:cZFsnS4Z
ところで、規制リストの性能ばかり注目してたけど、実際処理のネックってそこだけじゃないよね、多分。Perlなら-d:DProfとかつけて起動してprofilingデータ採ってみるといいかも。


291 名前: 名無しさん@お腹いっぱい。 投稿日: 03/05/22 07:37 ID:4fV8pz7P
そーいやポートスキャンのためにどのみちuse Socket;が必要なのに
use Socket;を省略した場合の性能を測っても意味ないな
むしろポートスキャンの処理も追い出せる分DB化のほうが
やっぱり有利かもしれん


292 名前: 228 投稿日: 03/05/22 21:31 ID:uX3vIszm
>>291
あ、そーか > どのみちuse Socket;が必要


293 名前: 名無しさん@お腹いっぱい。 投稿日: 03/05/23 21:07 ID:OT1u1hME
ポトスキャンイラネ


294 名前: 名無しさん@お腹いっぱい。 投稿日: 03/05/24 01:08 ID:9gP9daTy
>>291 そーす見てないおらが言うのも何だが、今のbbs.cgiって
use Socket;
してるんだろうか? なんかプリミティブなsocket()使ってる
と想像していたが...ホントのところは如何?
それが判ったところで、どうというものでも無いか。
個人的な趣味としては
Perlなのに軽い動作(どーやって作ったんだろうと思わせるような)
見かけは思いどおり動作してるが、たまにオチャメな振舞いもする。
(けど、一線を越えることはない; 鯖に侵入されるとか)




295 名前: サザン ★ 投稿日: 03/05/24 15:25 ID:???
>>294
必要な時はやってます、<use Socket;
もちろん、必要のない時はしないです、


296 名前: 名無しさん@お腹いっぱい。 投稿日: 03/05/24 20:49 ID:NKDnqI+C
useって存在するだけで問答無用にモジュールが取り込まれますが
↓エラーになる
-------------
exit;
use XXX;
-------------
↓大丈夫
-------------
exit;
require 'XXX.pl';
-------------
まあ2chの運営陣が素人ばかりなのは常識だからいまさら驚かないけど


297 名前: 名無しさん@お腹いっぱい。 投稿日: 03/05/24 21:39 ID:ASD3Nbhg
perl -w -e 'exit;' -e 'use Socket;'
でなにも文句いわれませんでしたが何か?


298 名前: ●゜、⊃゜) ◆13ThomasYo 投稿日: 03/05/24 22:14 ID:rfzeuaJD
>>297
>>296の意味が根本的にわかってないバカ。
実在するモジュールを指定すればエラーにならないのは当たり前。


299 名前: 名無しさん@お腹いっぱい。 投稿日: 03/05/25 21:02 ID:GSOZSVFo
なんか酔うわからんけど、がんばって


300 名前: ◆cZfSunOs.U 投稿日: 03/05/26 02:46 ID:LSGpvbOy
とりあえず>>162で言ってた Apache モジュール作ってみますた.
http://202.228.205.19/jikken/mod_authz_iplist.c
で,ディレクティブは

        IPList type file

        type: "Black"または"White"
        file: リストのファイル名

[使用例]
<Files bbs.cgi>
    IPList Black /path/to/proxylist
</Files>

という感じです.Black リストの場合はリスト上のホストの
アクセスを拒否しそれ以外許可,White リストの場合はその逆です.
あと,

<Location /authz-iplist>
    SetHandler authz-iplist
    Deny from all
    Allow from 127.0.0.1
</Location>

のようにした上で http://localhost/authz-iplist
アクセスするとメモリ上に取り込まれたリストが表示されます.
# ここの Deny / Allow の代わりに IPList 使ってもいいですが(w


301 名前: ◆cZfSunOs.U 投稿日: 03/05/26 03:06 ID:LSGpvbOy
>>300getしてた(w

それはともかくとして,名前空間の衝突を避けるため,
ディレクティブ名を変更して"AuthzIPList"にしますた.

        AuthzIPList type file

        type: "Black"または"White"
        file: リストのファイル名

[使用例]
<Files bbs.cgi>
    AuthzIPList Black /path/to/proxylist
</Files>

それ以外は>>300に同じ.


302 名前: 名無しさん@お腹いっぱい。 投稿日: 03/05/26 10:48 ID:GliwXA6c
>>300-301 おつかれ様です
このモジュールの評価としてはApacheにもともとある
Deny/Allow ディレクティブの動作との比較になるん
でしょうか。
あと、Errorページの出し方なんかもHTTPエラーコード
と含めて考える必要はあるですよね?



303 名前: 名無しさん@お腹いっぱい。 投稿日: 03/05/26 18:13 ID:AZkY9/Zp
ファイル構造(inode)というDBを使用するのはどうだろう?
アクセス禁止情報は、たとえば *.proxy.expample.comなら、
/forbidden/com/example/proxy
というフォルダとファイルを生成しとく。(DNSの逆引きみたいに)

ホストが host01.proxy.example.com だとしたら、
ひっくりかえして、com.example.prxy.host01だから、
/forbidden/com/example/proxy/host01をopenしてみる。
なければ、/host01を削って、と繰り返せば、数回のIOでカタがつく。
あるいは逆に、forbidden/comからopenが失敗するまで延ばしていってもいい。
メモリディスクなら、IOも問題にならないし
i-nodeはだいたいtree構造をしているはず。


304 名前: 名無しさん@お腹いっぱい。 投稿日: 03/05/26 18:21 ID:AZkY9/Zp
そして何より、
・perlのモジュールを読む必要はない
・制御ファイルを解釈してデータ構造を構築する必要はない
ので初期化コストがほぼかからないし、

・排他管理とか面倒なところはOSがやってくれる
・bbs.cgiを弄ったりしなくても、アクセス制御が変更できる。
・ファイル構造はどこにでもある
という利点がある。


305 名前: 名無しさん@お腹いっぱい。 投稿日: 03/05/26 18:36 ID:hmxoj0Ab
>>304
そのやり方だと、tky*.hoge.puni.net というように
部分文字列で絞ってアクセス規制をかけることが難しくなるよ。


306 名前: 名無しさん@お腹いっぱい。 投稿日: 03/05/26 18:49 ID:AZkY9/Zp
net/puni/hogeのファイル中に/tky/とか書けば解決する気もする
(そこからはリニア検索でもOKだと思う)


307 名前: ◆cZfSunOs.U 投稿日: 03/05/26 22:13 ID:LSGpvbOy
>>302 そうですね.アクセス拒否の場合は普通に"403 Forbidden"を
返すので,エラーページは ErrorDocument で指定できますね.


308 名前: 304 投稿日: 03/05/27 02:33 ID:bDKAl7Ph
とりあえず、ホストチェックの部分だけ提示しとく。
$PATH_ACCESS = "/access";

sub hostcheck()
{
my ($HOST) = @_;
my @host = split( /\./,$HOST);
for( $i = 0; $i <= $#host ; $i++){
my $path = $PATH_ACCESS;
for( $j = $#host; $j >= $i; $j -- ){
$path .= "/" ;
$path .= $host[$j];
}
#print $path,"\n";
open( ACCESS, $path) or next;
my $partial = "forbidden";
while( <ACCESS> ){
if( $_[0] == '/'){
chop;
$_ =~ s/\///;
$partial = "permit";
close( ACCESS );
return "forbidden" if( $HOST =~ $_ );
}
}
close( ACCESS );
return $partial;
}
return "permit";
}


print &hostcheck( $ARGV[0] );


309 名前: 名無しさん@お腹いっぱい。 投稿日: 03/05/31 18:57 ID:w3WUph25
なんでPerlなの?


310 名前: 名無しさん@お腹いっぱい。 投稿日: 03/05/31 19:00 ID:y1U3+SHz
>>309
ひろゆきでも弄れるから、かな?


311 名前: 名無しさん@お腹いっぱい。 投稿日: 03/06/01 10:13 ID:2FZYHTxD
だったらPerlにしないほうが(ry


312 名前: 名無しさん@お腹いっぱい。 投稿日: 03/06/01 11:41 ID:WWbCqkNx
Cプログラムのほうがはるかに鯖に優しいと思うし、夜勤もそれを望んでいるらしい。


313 名前: 名無しさん@お腹いっぱい。 投稿日: 03/06/01 11:53 ID:PJ7FhTFJ
PHPはどうだろう


314 名前: 名無しさん@お腹いっぱい。 投稿日: 03/06/03 23:06 ID:Bwf6RJnB
>>313
PHPよりはやはりCの方が鯖に優しいかと。
また、PerlだとPHPよりも読める人が多い。
こういった公開しながら作業する場所では、
なるべく可読性の高いもので作業したものを
最も負荷の低い言語で再コーディングするというのが効率的。


315 名前: 名無しさん@お腹いっぱい。 投稿日: 03/06/04 06:59 ID:rzXkCM/t
カーネルにhttpd組み込んじゃったりとかは?
なんか速いって聞いたけど。
あ、cgiは動かないんだっけ?


316 名前: 名無しさん@お腹いっぱい。 投稿日: 03/06/04 17:25 ID:8dd7ahqB
珍案ばっかりだな


317 名前: ひろゆき ◆3SHRUNYAXA @どうやら管理人 ★ 投稿日: 03/06/04 18:56 ID:???
うお、、ディレクトリつくるってすごいな。。。

とりあえず、既存のを改造する案↓


318 名前: サザン ★ 投稿日: 03/06/04 19:01 ID:???
とりあえず、PROXYリストの改造を。。
今は何千行ってループしてます。
それを一行にまとめちゃって、ホストごとにコンマで区切って。。
それで、$HOST =~ /$PIP/i;ってやってみる、、


319 名前: ひろゆき ◆3SHRUNYAXA @どうやら管理人 ★ 投稿日: 03/06/04 19:09 ID:???
というわけで、live5あたりで、実験しようかと、、
ラプターのproxy.cgiと形式が違うのでどうしたものかと。



320 名前: 名無しさん@お腹いっぱい。 投稿日: 03/06/04 19:32 ID:5QaPdPTL
>>313
ラウンジはPHPなのかな?
http://qb.2ch.net/test/read.cgi/sec2ch/1045495883/15


321 名前: 名無しさん@お腹いっぱい。 投稿日: 03/06/04 19:36 ID:Qb9Jq6/j
>>320
2chISP で見るときは read.php


322 名前: 名無しさん@お腹いっぱい。 投稿日: 03/06/04 20:16 ID:kd5WXe44
phpだと何かいいことあるの?


323 名前: 名無しさん@お腹いっぱい。 投稿日: 03/06/04 20:38 ID:kd5WXe44
↑だと分かりにくいね。
書き直し

2chISP で read.php で見ると普通に read.cgi で見るときと違って何かあるの?


324 名前: 名無しさん@お腹いっぱい。 投稿日: 03/06/04 20:41 ID:jR9RuF09
read.phpはdat落ちしたログを見られるですよ。
そしてread.phpを使うには2chISPに接続しないといけないというわけです。
ここはbbs.cgiスレなのであとは以下で…

2ch運用情報板質問スッドレ
http://qb.2ch.net/test/read.cgi/operate/1051602540/


325 名前: 名無しさん@お腹いっぱい。 投稿日: 03/06/04 22:13 ID:hZmbEVNq
ほう
http://qb.2ch.net/test/read.php/operate/1051602540/


326 名前: 7M. ◆dq7M./4Uw. 投稿日: 03/06/05 01:22 ID:65Lgd+SZ
ほんとだ。しらなかったのら。


327 名前: 304 投稿日: 03/06/05 12:11 ID:Zf40iR/Z
UNIXはディレクトリもopenすることができるから、
open( ACCESS, $path) or next;
の下に、
return "permit" if -d ACCESS;
が要るかな?

ファイルが存在しない->許可
ファイルが存在する
-> ファイルの中身に /regexp/がある
 ->hitする->禁止
 ->hitしない->許可
->ファイルは空->禁止

あんまし綺麗な動作とはいえないなぁ。


328 名前: 名無しさん@お腹いっぱい。 投稿日: 03/06/05 12:55 ID:v8tJTLPS
Perlはオープンしなくてもファイルタイプの検査ができるはずだと思ったが。


329 名前: 名無しさん@お腹いっぱい。 投稿日: 03/06/05 13:01 ID:J3t1nepf
うん


330 名前: ● ゚、⊃゚) ◆13ThomasYo 投稿日: 03/06/05 13:07 ID:z9+dENsL
>>328
だからどうした、としか言いようがありませんが。


331 名前: 名無しさん@お腹いっぱい。 投稿日: 03/06/05 13:54 ID:v8tJTLPS
>>330
327の判定分置く位置は不経済でないかい?


332 名前: ラプター ★ 投稿日: 03/06/05 15:20 ID:???
呼ばれているのカナ?


333 名前: ◆IamMelonpc 投稿日: 03/06/05 15:24 ID:YFRpl37U
(;´Д`)ハァハァヒサシブリ


334 名前: 名無しさん@お腹いっぱい。 投稿日: 03/06/05 15:26 ID:qSRfwK0u
ラプターたん(*´Д`)ハァハァハァハァ


335 名前: 名無しさん@お腹いっぱい。 投稿日: 03/06/05 21:37 ID:ZScoT3wN
>>328
というか
if -d ACCESS;
がまさにその検査だ


336 名前: 名無しさん@お腹いっぱい。 投稿日: 03/06/05 21:51 ID:ZScoT3wN
>>325
2chISPにダイヤルアップしないと使えません。
とか言われて見れねー。ちゃんと2chISPにダイヤルアップしてるのに。
http://isp.2ch.net/viewer/
からはちゃんと見える。


337 名前: 名無しさん@お腹いっぱい。 投稿日: 03/06/06 08:09 ID:MbELZ/ku
えーと、perlの-Xはファイルハンドルでもファイル名でもOKなんですね。
なので、ディレクトリだった場合にオープンする無駄を省くために
if -d $pathにしておけばいいわけで。
ちなみに、空かどうかも-sや-zで調べられるから、オープンするのは
・-dではなく、
・-s>0で、
・-rである
時だけで済むはず。


338 名前: 304 投稿日: 03/06/06 09:16 ID:YwUhdMdf
そうですね。確かに、事前にチェックした方が、
ファイルが存在しないときは、2割ほど速いみたいです。


339 名前: ● ゚、⊃゚) ◆13ThomasYo 投稿日: 03/06/06 11:36 ID:o7dKY63w
>>337-338
ワラタ



340 名前: 328 投稿日: 03/06/06 13:06 ID:fjgh3N/1
うむ、言いたいことが素直に伝わると気持ちいいね。
理解できていなかった>>330>>335は己の不明を恥じ速やかに首を吊るように。


341 名前: ● ゚、⊃゚) ◆13ThomasYo 投稿日: 03/06/06 13:24 ID:o7dKY63w
>>340
恥の上塗りをしに来ましたか?
>ファイルが存在しないときは、
だったら最初にやるのは
if !-e $path
だろ。


342 名前: 名無しさん@お腹いっぱい。 投稿日: 03/06/06 14:42 ID:ntpjKKK1
トーマス必死だなw


343 名前: 名無しさん@お腹いっぱい。 投稿日: 03/06/06 15:45 ID:9bo3UBbw
トーマスは他人に求める割りには、柔軟性がないからなぁ


344 名前: 328 投稿日: 03/06/06 17:24 ID:fjgh3N/1
>>341君は誰に言っているのかね?


345 名前: 328 投稿日: 03/06/06 17:31 ID:fjgh3N/1
まぁ説明くらいはしてやるか…。

私が書いたのは >>328>>331>>340>>344、そしてこのレスである。
昨日は理解力の人並みはずれて少ない者に対し、親切に説明するほど暇が無かったのだ。
つまり ● ゚、⊃゚) ◆13ThomasYo 君の揚げ足取りは
全く的外れであるといわざるを得ないのだ。
実に ● ゚、⊃゚) ◆13ThomasYo 君は愚者なり。

最後まで間違いを認めないのは愚者の特徴の一つ。
そして ● ゚、⊃゚) ◆13ThomasYo 君は愚者である。
ここから導かれる結論は一つだ。
いくら間違いを指摘しても ● ゚、⊃゚) ◆13ThomasYo 君は最後まで
屁理屈と揚げ足取りを狙い、自分の過ちを絶対に認めないであろう。
そしてそのような状態になった議論もどきを、俗に水掛け論という。

うむ。


346 名前: ● ゚、⊃゚) ◆13ThomasYo 投稿日: 03/06/06 17:44 ID:o7dKY63w
>>345
ヤレヤレ…わかってないのか…
「事前にファイルタイプのチェック」をして効果があるのは「ファイルが存在しないとき」
だけなので、>>328は「だからどうした」にしかならないの。
ファイルが存在しないかどうかを調べるならどんなチェックよりも-eを先に持ってくるので
ファイルタイプのチェックは「ファイルが存在する」という前提の元に行うことになる。



347 名前: ラプター ★ 投稿日: 03/06/06 18:31 ID:???
>>318
正規表現が使えなくなっちゃう…

>>319
F22のリスト更新だけ止めれば、手動で書き換えても大丈夫だと思いまつ。
詳しいことは、夜勤さんに聞いてくださいね。

それとも、F22で新しい形式を作るのカナ?


348 名前: 名無しさん@お腹いっぱい。 投稿日: 03/06/06 18:35 ID:RPloRwLf
ラプターたん(*´Д`)ハァハァハァハァ


349 名前: 328 投稿日: 03/06/06 19:06 ID:fjgh3N/1
>>346
-dによる検査は、ディレクトリでないときとファイルが存在しないときにfalseを返す。
逆に言えばディレクトリの場合を排除するときにはファイルの存在チェックを追加する必要がない。
一回ファイルハンドルを取得してディレクトリのチェックを行うことはそもそも不経済。
例として挙げられたものはファイルハンドルを先に取得しているから非常に不経済。

キャラ抜きで言うけどさ、なんでこんな簡単なことも分からないの…?
意地でも間違いを認めたくない気持ちは分からないでもないが、本当にあなたは頭が悪いと思うよ。
マジな話。


350 名前: 328 投稿日: 03/06/06 19:09 ID:fjgh3N/1
>>346
というか、あなたがそのレスで問題にしている部分はそもそも私とは関係ないわけ。
理解できる?
それ書いたのは私じゃないし。
ただ自分が理解できないことを330で無碍に却下しようと目論んだことについては
一言ぐらい謝ってくれてもいいんじゃないの?
非常にむかついたので。

これだけ言っても何も理解できないようだったら
固定ハンなのを幸いNGワードに入れよう…。
ごめん、あなたとの意思疎通に関しては、完全にお手上げです。


351 名前: 名無しさん@お腹いっぱい。 投稿日: 03/06/06 19:53 ID:CedJx496
きっとトマスはド忘れか勘違いしてたんだよ。
可哀相だからいじめないであげよ?


352 名前: 328 投稿日: 03/06/06 19:55 ID:fjgh3N/1
りょ、了解。
第三者に諌められちゃ引かざるを得ない。


353 名前: 304 投稿日: 03/06/06 19:57 ID:YwUhdMdf
チェック結果を再利用する_を$_と混同してますた、、

で、ベンチの結果なのです

t1                 |t2
for($i=0;$i<10000;$i++){     |for($i=0;$i<10000;$i++){
 open( A, 'test') or next;     | next unless -r 'test';
 if( -d A ){ close A; next; }  | next if -d _;
 close(A);             | open A,'test' ; close A;
}                    |}

not found.
t1: real 0m0.390s, user 0m0.150s, sys 0m0.240s
t2: real 0m0.244s, user 0m0.130s, sys 0m0.110s

dir exist
t1: real 0m0.841s, user 0m0.510s, sys 0m0.320s
t2: real 0m0.296s, user 0m0.150s, sys 0m0.150s

file exist
t1: real 0m0.850s, user 0m0.520s, sys 0m0.330s
t2: real 0m1.010s, user 0m0.350s, sys 0m0.640s


354 名前: 名無しさん@お腹いっぱい。 投稿日: 03/06/06 20:05 ID:VrnnoaBQ
>347
ハァハァハゥ
>350
トーマスはプログラミングに関する知識はあっても
日本語に関する知識が不足してるので
貴方の言ってることを理解するのも
自分のいわんとしてることを貴方に説明する事も
無理だと思うよ。


355 名前: 名無しさん@お腹いっぱい。 投稿日: 03/06/06 22:08 ID:R1rxezyN
粘着がいちゃあ、スレも伸びない分田


356 名前: 名無しさん@お腹いっぱい。 投稿日: 03/06/07 00:25 ID:adCNq9pE

トーマスよ。お前みたいな奴をみると、あの日のことを思い出すよ。
2001年8月25日。2ちゃんが本格的に閉鎖になりかけた日だよ。
転送量が多すぎて、費用が月700万もかかってるって発表されて、「数日中に閉鎖」って予告されてさ、
その日のうちにあっちこっちの板が封鎖されてた日だよ。
あのときのUNIX版の住人、カッコよかったんだぜ。「総力を結集」ってのはまさにああいう状態だよ。
転送量を1/3に削減しないと閉鎖、ってもんだから、新しいプログラム組んでさ、
そしたらほんの何時間かで完成したんだよ。それが聞いてくれよ、目標は1/3だったのに
1/16まで圧縮に成功しやがったんだよ。職人技なんてもんじゃねえよ、神技だよ。
でもよ、そうやって頑張る人がいた一方で、
「ボクの肛門も閉鎖されそうです」とか駄スレ立ててたバカもいたわけだよ。
ちょうど、今までのお前みたいにな。


357 名前: 名無しさん@お腹いっぱい。 投稿日: 03/06/07 07:53 ID:3YH1Nddv
もまいらとりあえず深呼吸でもしておちつけ


358 名前: 名無しさん@お腹いっぱい。 投稿日: 03/06/07 09:14 ID:Bh+Napgo
post
 allow_lis簡易評価(by IP) - ok - post反映
 |no
 deny_list評価(by HOST) - ok - allow_list更新 - post反映
 |no
すてすて


359 名前: やきん ★ 投稿日: 03/06/07 12:46 ID:???
スペシャルサーバ買うお金ないから
こっちに顔出してみる。

Perl の現 bbs.cgi は管理人にまかせるとして、
私は来年用の新しい bbs.cgi written in C でも作ろうかしら。

subject.txt subback.html をRAM ディスクにおくのをにらんで、
プロキシ規制のほかに .my とか .br とかを
はじめからはじける仕様にしようかな

各サブルーチンは容易に入れ替えれるようにしよう。
すたてぃくな変数は使わないでおこう。



360 名前: 名無しさん@お腹いっぱい。 投稿日: 03/06/07 12:47 ID:E27ag4nq
へー。


361 名前: 名無しさん@お腹いっぱい。 投稿日: 03/06/07 13:14 ID:aDQqftRi
>>359
マレーシアやブラジルから利用している人は排除ですか?


362 名前: やきん ★ 投稿日: 03/06/07 13:21 ID:???
>>361
bbs.cgi を作るのが目的で
それを使うかどうかは管理人次第だと思うのですが、
その機能も入れてということだす。


363 名前: 名無しさん@お腹いっぱい。 投稿日: 03/06/07 13:47 ID:txFOaoeD
>>359
>スペシャルサーバ買うお金ないから
(´Д`;)
がんばれ。超がんばれ。


364 名前: 名無しさん@お腹いっぱい。 投稿日: 03/06/07 13:56 ID:xuhOhVF1
>359
それより>347に関する
詳しい説明が聞きたいのだが


365 名前: ●゜、⊃゜) ◆13ThomasYo 投稿日: 03/06/07 14:02 ID:SFIeKdqT
>>350
>それ書いたのは私じゃないし。

誰が書いたかなんてどうでもいい事を気にするバカには配慮しません。

>ただ自分が理解できないことを330で無碍に却下しようと目論んだことについては

俺が理解できてないという妄想はどこから沸きましたか?


366 名前: ◆n3D69Zsbfg 投稿日: 03/06/07 14:05 ID:1GbXV2xS
ニヤニヤ