peko鯖の稼動によりボトルネックの一つである事がより明らかになった
bbs.cgi作り直しプロジェクトです。
【開発環境の工事現場】
また挑戦。@2ch掲示板 http://dso.2ch.net/myanmar/
また挑戦2。@2ch掲示板 http://dso.2ch.net/yangon/
関連スレなどは >>2-5 くらい
探検
bbs.cgi再開発プロジェクト6
■ このスレッドは過去ログ倉庫に格納されています
2005/04/10(日) 16:15:47ID:a6rtBqIi0
2005/04/10(日) 16:16:36ID:a6rtBqIi0
【前スレ】
bbs.cgi 再開発プロジェクト
http://qb3.2ch.net/operate/kako/1053/10530/1053067870.html
bbs.cgi再開発プロジェクト2
http://qb3.2ch.net/operate/kako/1069/10691/1069144193.html
bbs.cgi再開発プロジェクト3
http://qb5.2ch.net/test/read.cgi/operate/1076666901/
bbs.cgi再開発プロジェクト4
http://qb5.2ch.net/test/read.cgi/operate/1101984763/
bbs.cgi再開発プロジェクト5
http://qb5.2ch.net/test/read.cgi/operate/1103495887/
bbs.cgi 再開発プロジェクト
http://qb3.2ch.net/operate/kako/1053/10530/1053067870.html
bbs.cgi再開発プロジェクト2
http://qb3.2ch.net/operate/kako/1069/10691/1069144193.html
bbs.cgi再開発プロジェクト3
http://qb5.2ch.net/test/read.cgi/operate/1076666901/
bbs.cgi再開発プロジェクト4
http://qb5.2ch.net/test/read.cgi/operate/1101984763/
bbs.cgi再開発プロジェクト5
http://qb5.2ch.net/test/read.cgi/operate/1103495887/
2005/04/10(日) 16:18:13ID:a6rtBqIi0
【関連スレ】
【Project peko】2ch特化型サーバ・ロケーション構築作戦 Part17
http://qb5.2ch.net/test/read.cgi/operate/1107376477/
read.cgi再開発スレ Part2
http://qb5.2ch.net/test/read.cgi/operate/1105909861/
◆ 全サーバトリップ統一作戦
http://qb3.2ch.net/test/read.cgi/operate/1067245837/
bby -- スレッド情報一元管理システム構築スレ2
http://qb5.2ch.net/test/read.cgi/operate/1086868799/
【広告・宣伝】Rock54【自動排除】 4
http://qb5.2ch.net/test/read.cgi/operate/1083063122/
【Project peko】2ch特化型サーバ・ロケーション構築作戦 Part17
http://qb5.2ch.net/test/read.cgi/operate/1107376477/
read.cgi再開発スレ Part2
http://qb5.2ch.net/test/read.cgi/operate/1105909861/
◆ 全サーバトリップ統一作戦
http://qb3.2ch.net/test/read.cgi/operate/1067245837/
bby -- スレッド情報一元管理システム構築スレ2
http://qb5.2ch.net/test/read.cgi/operate/1086868799/
【広告・宣伝】Rock54【自動排除】 4
http://qb5.2ch.net/test/read.cgi/operate/1083063122/
4讃岐 ◆IamaVIPdCI
NGNG >>1
ぼみょー
ぼみょー
5讃岐
2005/04/10(日) 16:53:50ID:affrfPZA0 >>1
ぼみょー
ぼみょー
2005/04/10(日) 19:34:26ID:RGQJw3jU0
> 名前がデフォルト名無しさんの場合はDATに書き込まず、
> 表示するときにSETTING.TXTから読んで付けるようにしたら?
> 結構削減されるような気がスルですが。
でも、名無しさんの名前が変更になった場合、古い発言でも名前が変わるわけですよね。なんかそれは嫌な気が。
> 表示するときにSETTING.TXTから読んで付けるようにしたら?
> 結構削減されるような気がスルですが。
でも、名無しさんの名前が変更になった場合、古い発言でも名前が変わるわけですよね。なんかそれは嫌な気が。
2005/04/10(日) 19:37:16ID:k8/TEzrI0
嫌モナにも、専ブラがSETTING.TXT読まなくちゃいけなくなるよそれ
NGNG
DATの削減ってそれほど優先度たかいの?
2005にしたのを考えてそうは思わないけど。
曜日を足したいなら2001年08月26日以前みたいに西暦を2桁にしてもよかったのに。
それなら、リンクつけないってのが最優先じゃない?
(read.cgiってSETTING.TXT読んでるんですか?)
2005にしたのを考えてそうは思わないけど。
曜日を足したいなら2001年08月26日以前みたいに西暦を2桁にしてもよかったのに。
それなら、リンクつけないってのが最優先じゃない?
(read.cgiってSETTING.TXT読んでるんですか?)
2005/04/10(日) 20:06:57ID:a6rtBqIi0
bbs.cgiの今後の方向性が示されてれば的外れな提案とかが無くていいと思うけど
そのへんはどうなんでしょ?
そのへんはどうなんでしょ?
2005/04/10(日) 20:47:33ID:bLJalbEm0
>>6
そんじゃ、DATの頭にデフォルト名無しを取り込んでおいて、それ展開するとか。
そんじゃ、DATの頭にデフォルト名無しを取り込んでおいて、それ展開するとか。
NGNG
2005/04/10(日) 21:31:55ID:bLJalbEm0
>>11
いや、DAT頭にある名無しとSETTING.TXTのとが違ったら、それはちゃんと名無しの名前を書き込むのよ。
で、次スレからはDAT頭の名無しも変わって省略とする。
bbs.cgiの負荷コストがかかりそうなので、却下されそうだな〜。
単純な思いつきで書いたので流して〜。
いや、DAT頭にある名無しとSETTING.TXTのとが違ったら、それはちゃんと名無しの名前を書き込むのよ。
で、次スレからはDAT頭の名無しも変わって省略とする。
bbs.cgiの負荷コストがかかりそうなので、却下されそうだな〜。
単純な思いつきで書いたので流して〜。
2005/04/10(日) 23:58:40ID:GvAuiQsq0
DATとかSETTING.TXTやるぐらいならSQL使ったほうがましだと思うが?
14FOX ★
NGNG 何のために?
NGNG
というか変にごちゃごちゃやると(ry
動いているものに手を入れたくな(ry
動いているものに手を入れたくな(ry
16FOX ★
NGNG 転送量をふやしたいから → 容量食うようにする
とか
人減らしたいから → ファイルopen数増やして全体にもっさりにする
とか
目的を書かなきゃ手段ばかりかかれても
混乱するばかりかな。
とか
人減らしたいから → ファイルopen数増やして全体にもっさりにする
とか
目的を書かなきゃ手段ばかりかかれても
混乱するばかりかな。
2005/04/11(月) 01:34:04ID:Aw1HHl/R0
>>16
手段が目的に決まってるだろーが。終了。
手段が目的に決まってるだろーが。終了。
2005/04/11(月) 08:20:15ID:1RHO3vpt0
本7だったら相手にするだけ時間の無駄。
2005/04/11(月) 12:46:51ID:p1SWkTi/0
>>16
さりげない揶揄にワロタ
さりげない揶揄にワロタ
2005/04/16(土) 22:12:28ID:FazSDHGa0
>を& amp;に変換するのって必要ある?
<側だけ処理すればタグは禁止できるような。
(ブラウザによっては駄目なのかな)
<側だけ処理すればタグは禁止できるような。
(ブラウザによっては駄目なのかな)
2005/04/16(土) 22:30:18ID:eAUBMe3V0
確かにブラウザの表示は問題ないかもしれないが、気持ち悪いな。
というか、URIの&は&に置換するべきだと思う。
というか、URIの&は&に置換するべきだと思う。
2005/04/17(日) 00:03:51ID:6o0jruEh0
http://なんとかかんとか?hoge=foo&amp=bar
とかなっているとアレだもんな
とかなっているとアレだもんな
2005/04/19(火) 00:22:23ID:xt+Ii/KI0
連投チェックに引っかかった時のメッセージ変わったんだね
24†正座会場 ◆jmq5OZqMNg
NGNG25root▲ ★
NGNG26root▲ ★
NGNG 今は時間とれないので、とりあえず餌だけまいておこう。
qb6でやってみた(単にtestというレスの投稿)。
うーん、IsKoukokuがこんなに重いとは。
あと、jcodeの処理も結構重いのね。
Total Elapsed Time = 0.801193 Seconds
User+System Time = 0.175342 Seconds
Exclusive Times
%Time ExclSec CumulS #Calls sec/call Csec/c Name
58.1 0.102 0.125 1 0.1016 0.1252 main::IsKoukoku
35.3 0.062 0.055 2853 0.0000 0.0000 jcode::convert
26.8 0.047 0.024 2853 0.0000 0.0000 jcode::euc2euc
22.2 0.039 0.225 1 0.0390 0.2251 main::bbs_entryXXX
13.1 0.023 0.008 2853 0.0000 0.0000 jcode::h2z_euc
13.1 0.023 0.023 10 0.0023 0.0023 LWP::UserAgent::BEGIN
9.12 0.016 0.016 3 0.0052 0.0052 Net::DNS::Packet::dn_comp
9.12 0.016 0.039 2853 0.0000 0.0000 jcode::to
9.12 0.016 0.024 2853 0.0000 0.0000 jcode::euc
8.55 0.015 0.113 14 0.0011 0.0080 main::BEGIN
8.55 0.015 0.153 1 0.0155 0.1531 main::bbs_main
8.55 0.015 0.037 10 0.0015 0.0037 Net::DNS::Resolver::Base::BEGIN
4.56 0.008 0.008 1 0.0078 0.0078 Carp::shortmess
4.56 0.008 0.008 9 0.0009 0.0009 Socket::inet_aton
4.56 0.008 0.008 15 0.0005 0.0005 HTTP::Message::_elem
qb6でやってみた(単にtestというレスの投稿)。
うーん、IsKoukokuがこんなに重いとは。
あと、jcodeの処理も結構重いのね。
Total Elapsed Time = 0.801193 Seconds
User+System Time = 0.175342 Seconds
Exclusive Times
%Time ExclSec CumulS #Calls sec/call Csec/c Name
58.1 0.102 0.125 1 0.1016 0.1252 main::IsKoukoku
35.3 0.062 0.055 2853 0.0000 0.0000 jcode::convert
26.8 0.047 0.024 2853 0.0000 0.0000 jcode::euc2euc
22.2 0.039 0.225 1 0.0390 0.2251 main::bbs_entryXXX
13.1 0.023 0.008 2853 0.0000 0.0000 jcode::h2z_euc
13.1 0.023 0.023 10 0.0023 0.0023 LWP::UserAgent::BEGIN
9.12 0.016 0.016 3 0.0052 0.0052 Net::DNS::Packet::dn_comp
9.12 0.016 0.039 2853 0.0000 0.0000 jcode::to
9.12 0.016 0.024 2853 0.0000 0.0000 jcode::euc
8.55 0.015 0.113 14 0.0011 0.0080 main::BEGIN
8.55 0.015 0.153 1 0.0155 0.1531 main::bbs_main
8.55 0.015 0.037 10 0.0015 0.0037 Net::DNS::Resolver::Base::BEGIN
4.56 0.008 0.008 1 0.0078 0.0078 Carp::shortmess
4.56 0.008 0.008 9 0.0009 0.0009 Socket::inet_aton
4.56 0.008 0.008 15 0.0005 0.0005 HTTP::Message::_elem
27FOX ★
NGNG ほぅ
29FOX ★
NGNG sub IsKoukoku
{
my ($GB) = @_;
my $In_Strings = $GB->{FORM}->{'MESSAGE'}; # shift or return ''; # 入力無しなら (・∀・) カエレ
# 読み込む。。。
my @Rock_word = @FOX_Ro54;
# EUC に変換して半角カナ→全角カナにしてして。
# まず対象となる文字列を変換。
$In_Strings = jcode::euc($In_Strings , 'sjis', 'z');
# NG ワードも変換。ついでに NG ワード、MD5値、フラグの 3 要素だけにしてリファレンスにしてして。
@Rock_word = map { [ (split /<>/)[5,6,7] ] } map { &jcode::euc($_, 'euc', 'z') } @Rock_word;
# では NG ワードのチェック。
foreach my $NG_word_ref (@Rock_word){
my $NG_word = $NG_word_ref->[0]; # リファレンスから NG ワードを取り出す。
eval { $In_Strings =~m<$NG_word> }; # NG ワード自体をチェック。以前の失敗を繰り返さないために。。。
return '' if $@; # 不正 NG ワードがあったときは OK とする。
if ($In_Strings =~m<$NG_word>) { # NG ワードをチェック。
$NG_word_ref->[0] = &jcode::sjis($&, 'euc'); # 該当すれば NG ワードを sjis に戻して。。。
return $NG_word_ref; # リファレンスを返す。
}
}
return '';
}
{
my ($GB) = @_;
my $In_Strings = $GB->{FORM}->{'MESSAGE'}; # shift or return ''; # 入力無しなら (・∀・) カエレ
# 読み込む。。。
my @Rock_word = @FOX_Ro54;
# EUC に変換して半角カナ→全角カナにしてして。
# まず対象となる文字列を変換。
$In_Strings = jcode::euc($In_Strings , 'sjis', 'z');
# NG ワードも変換。ついでに NG ワード、MD5値、フラグの 3 要素だけにしてリファレンスにしてして。
@Rock_word = map { [ (split /<>/)[5,6,7] ] } map { &jcode::euc($_, 'euc', 'z') } @Rock_word;
# では NG ワードのチェック。
foreach my $NG_word_ref (@Rock_word){
my $NG_word = $NG_word_ref->[0]; # リファレンスから NG ワードを取り出す。
eval { $In_Strings =~m<$NG_word> }; # NG ワード自体をチェック。以前の失敗を繰り返さないために。。。
return '' if $@; # 不正 NG ワードがあったときは OK とする。
if ($In_Strings =~m<$NG_word>) { # NG ワードをチェック。
$NG_word_ref->[0] = &jcode::sjis($&, 'euc'); # 該当すれば NG ワードを sjis に戻して。。。
return $NG_word_ref; # リファレンスを返す。
}
}
return '';
}
2005/04/22(金) 19:34:00ID:eRSH3+Ow0
jcodeを2853回も呼ぶのは妥当なの?みたいなw
31未承諾広告※ ◆TWARamEjuA
NGNG ではラムを飲みつつ待機していまつ♪
Shift_JIS のを丁稚どんにお渡しするようにすれば桶ですよね?
Shift_JIS のを丁稚どんにお渡しするようにすれば桶ですよね?
32FOX ★
NGNG 1) Shift Jis でリストを作る
2) リストには上限を作る (たとえば 200)
ですなぁ
ex10, live20 で Iskoukoku するーにしてみた
2) リストには上限を作る (たとえば 200)
ですなぁ
ex10, live20 で Iskoukoku するーにしてみた
2005/04/22(金) 21:09:44ID:EY6AyDui0
あれ?なんでsjisでリスト?気のせいかな。。。
2005/04/23(土) 00:11:59ID:8gV5d4mD0
リニアサーチしているからO(n)オーダになるのはしょうがないな……
Perlバインディング使ってcdbサーチにするとか、ハッシュサーチにするとか、
B-Treeサーチにするとか。
Perlバインディング使ってcdbサーチにするとか、ハッシュサーチにするとか、
B-Treeサーチにするとか。
2005/04/23(土) 00:14:04ID:8gV5d4mD0
ん、まてよ。
「書き込みの中にNGワードが有ればTrue」
というのと
「NGワード自体をリファレンスで返す」
という処理があるのね。
前者だけでも既存のモジュールで追い出せばO(log n)の速度になると思うけど。
「書き込みの中にNGワードが有ればTrue」
というのと
「NGワード自体をリファレンスで返す」
という処理があるのね。
前者だけでも既存のモジュールで追い出せばO(log n)の速度になると思うけど。
2005/04/23(土) 00:30:21ID:8gV5d4mD0
http://www.lr.pi.titech.ac.jp/~abekawa/perl/perl_bigdata.html#cdb
38root▲ ★
NGNG 今日のex10の様子を見る限り、
この部分のチューニングは、すんごい効果あるってことすね。
この部分のチューニングは、すんごい効果あるってことすね。
39未承諾酩酊※ ◆TWARamEjuA
NGNG NGワードが普通の文字列だったなら。。。
正規表現文字列だからちょと難儀かもかも。@「検索」に関してはむちむち♪
とりあえず、Jcodeを外したものを用意しておりますです。
正規表現文字列だからちょと難儀かもかも。@「検索」に関してはむちむち♪
とりあえず、Jcodeを外したものを用意しておりますです。
2005/04/23(土) 00:49:53ID:rE0tuwui0
軽くなったところで。
本文だけじゃなく名前欄やメール欄をIsKoukokuのチェック対象にするのは難しいでしょうか。
本文だけじゃなく名前欄やメール欄をIsKoukokuのチェック対象にするのは難しいでしょうか。
2005/04/23(土) 00:58:40ID:rE0tuwui0
名前欄・メール欄・本文を連結したバッファを作って一回でチェックならどうでしょう。
(連結による誤判定も起こる可能性はありますが)
(連結による誤判定も起こる可能性はありますが)
2005/04/23(土) 01:06:24ID:+E0bkwNw0
>>40
どんな目的でそれをやるか書かないと
どんな目的でそれをやるか書かないと
45▲ ◆cZfSunOs.U
2005/04/23(土) 01:13:32ID:P1wP/4lM0 まぁ Shift JIS でやるという方向ならどうでもいいかも知れませんが,
もし文字コード変換するとしたら,Text::Iconv モジュール使えば
ネイティブの iconv() 使う分 Perl で書いてある jcode よりは軽いかと.
もし文字コード変換するとしたら,Text::Iconv モジュール使えば
ネイティブの iconv() 使う分 Perl で書いてある jcode よりは軽いかと.
2005/04/23(土) 01:18:26ID:rE0tuwui0
47未承諾酩酊※ ◆TWARamEjuA
NGNG48未承諾酩酊※ ◆TWARamEjuA
NGNG ●改正IsKoukoku
sub IsKoukoku
{
my ($GB) = @_;
my $In_Strings = $GB->{FORM}->{'MESSAGE'}; # shift or return ''; # 入力無しなら (・∀・) カエレ
# 半角カナ→全角カナ変換テーブルの作成(むずかしいことはしない♪けれども直接書くと0x5Cが出てくるから16進文字列に)
# qw|。 「 」 、 ・ ヲ ァ ィ ゥ ェ ォ ャ ュ ョ ッ ー ア イ ウ エ オ カ キ ク ケ コ サ シ ス セ ソ タ チ ツ テ ト
# ナ ニ ヌ ネ ノ ハ ヒ フ ヘ ホ マ ミ ム メ モ ヤ ユ ヨ ラ リ ル レ ロ ワ ン ゛ ゜|;
my @Z_kana = (
'8142','8175','8176','8141','8145','8392','8340','8342','8344','8346','8348','8383','8385','8387','8362','815B',
'8341','8343','8345','8347','8349','834A','834C','834E','8350','8352','8354','8356','8358','835A','835C','835E',
'8360','8363','8365','8367','8369','836A','836B','836C','836D','836E','8371','8374','8377','837A','837D','837E',
'8380','8381','8382','8384','8386','8388','8389','838A','838B','838C','838D','838F','8393','814A','814B'
);
# ハシュにしてして。
my %Kana2Z = map +($_, pack("H4", $Z_kana[$_ - 0xA1])), (0xA1 .. 0xDF);
# 読み込む。。。
my @Rock_word = @FOX_Ro54;
# まず検索対象となる文字列を半角カナ→全角カナ変換。
$In_Strings =~ s/([0xA1-0xDF])/$Kana2Z[$1 - 0xA1]/g;
# NG ワード要素を NG ワード、MD5値、フラグの 3 要素だけにしてリファレンスにしてして。
@Rock_word = map( [ (split /<>/)[5,6,7] ] ), @Rock_word;
# では NG ワードのチェック。
foreach my $NG_word_ref (@Rock_word){
my $NG_word = $NG_word_ref->[0]; # リファレンスから NG ワードを取り出す。
$NG_word =~ s/([0xA1-0xDF])/$Kana2Z[$1 - 0xA1]/g; # 半角カナ→全角カナ変換。
eval { $In_Strings =~ m<$NG_word> }; # NG ワード自体をチェック。以前の失敗を繰り返さないために♪
if ($@){ return '' } # 不正 NG ワードがあったときは OK とする。
if ($In_Strings =~ m<$NG_word>) { # NG ワードをチェック。
return $NG_word_ref; # 合致したるらリファレンスを返す。
}
}
return '';
}
添削激しくキボンヌですm(_ _)m
ただし、リスト側もeuc→Shift_JISしなきゃなので、いきなり全鯖に導入しちゃうと気持ちよく叩かれるですです♪
sub IsKoukoku
{
my ($GB) = @_;
my $In_Strings = $GB->{FORM}->{'MESSAGE'}; # shift or return ''; # 入力無しなら (・∀・) カエレ
# 半角カナ→全角カナ変換テーブルの作成(むずかしいことはしない♪けれども直接書くと0x5Cが出てくるから16進文字列に)
# qw|。 「 」 、 ・ ヲ ァ ィ ゥ ェ ォ ャ ュ ョ ッ ー ア イ ウ エ オ カ キ ク ケ コ サ シ ス セ ソ タ チ ツ テ ト
# ナ ニ ヌ ネ ノ ハ ヒ フ ヘ ホ マ ミ ム メ モ ヤ ユ ヨ ラ リ ル レ ロ ワ ン ゛ ゜|;
my @Z_kana = (
'8142','8175','8176','8141','8145','8392','8340','8342','8344','8346','8348','8383','8385','8387','8362','815B',
'8341','8343','8345','8347','8349','834A','834C','834E','8350','8352','8354','8356','8358','835A','835C','835E',
'8360','8363','8365','8367','8369','836A','836B','836C','836D','836E','8371','8374','8377','837A','837D','837E',
'8380','8381','8382','8384','8386','8388','8389','838A','838B','838C','838D','838F','8393','814A','814B'
);
# ハシュにしてして。
my %Kana2Z = map +($_, pack("H4", $Z_kana[$_ - 0xA1])), (0xA1 .. 0xDF);
# 読み込む。。。
my @Rock_word = @FOX_Ro54;
# まず検索対象となる文字列を半角カナ→全角カナ変換。
$In_Strings =~ s/([0xA1-0xDF])/$Kana2Z[$1 - 0xA1]/g;
# NG ワード要素を NG ワード、MD5値、フラグの 3 要素だけにしてリファレンスにしてして。
@Rock_word = map( [ (split /<>/)[5,6,7] ] ), @Rock_word;
# では NG ワードのチェック。
foreach my $NG_word_ref (@Rock_word){
my $NG_word = $NG_word_ref->[0]; # リファレンスから NG ワードを取り出す。
$NG_word =~ s/([0xA1-0xDF])/$Kana2Z[$1 - 0xA1]/g; # 半角カナ→全角カナ変換。
eval { $In_Strings =~ m<$NG_word> }; # NG ワード自体をチェック。以前の失敗を繰り返さないために♪
if ($@){ return '' } # 不正 NG ワードがあったときは OK とする。
if ($In_Strings =~ m<$NG_word>) { # NG ワードをチェック。
return $NG_word_ref; # 合致したるらリファレンスを返す。
}
}
return '';
}
添削激しくキボンヌですm(_ _)m
ただし、リスト側もeuc→Shift_JISしなきゃなので、いきなり全鯖に導入しちゃうと気持ちよく叩かれるですです♪
51root▲ ★
NGNG あ、そっか。
つまり、ロックなシステムのほうも、いじる必要があるってことすね。
やはり同期とって、すすめるが吉かなと。
つまり、ロックなシステムのほうも、いじる必要があるってことすね。
やはり同期とって、すすめるが吉かなと。
52未承諾酩酊※ ◆TWARamEjuA
NGNG >>48
# NG ワード要素を NG ワード、MD5値、フラグの 3 要素だけにしてリファレンスにしてして。
@Rock_word = map( [ (split /<>/)[5,6,7] ] ), @Rock_word;
↓
@Rock_word = map( [ (split /<>/)[5,6,7] ], @Rock_word);
こうだよなぁ。。。
Text::Iconv って標準では入っていないのね(泪)
Encode.pmって使ってみようかなぁ@Rock54基地
# NG ワード要素を NG ワード、MD5値、フラグの 3 要素だけにしてリファレンスにしてして。
@Rock_word = map( [ (split /<>/)[5,6,7] ] ), @Rock_word;
↓
@Rock_word = map( [ (split /<>/)[5,6,7] ], @Rock_word);
こうだよなぁ。。。
Text::Iconv って標準では入っていないのね(泪)
Encode.pmって使ってみようかなぁ@Rock54基地
53root▲ ★
NGNG うわわ。banana238に入れればよい?
54未承諾酩酊※ ◆TWARamEjuA
NGNG2005/04/23(土) 01:45:43ID:wSlmOpQB0
プロファイリング見て効果を確認しながらやってみては。
釈迦に説法ですが
釈迦に説法ですが
57root▲ ★
NGNG2005/04/23(土) 01:52:48ID:wSlmOpQB0
>>57
あー手間がかかるんですね。失礼しました。こうゆうのワクワクしますよね
あー手間がかかるんですね。失礼しました。こうゆうのワクワクしますよね
60root▲ ★
NGNG >>59
するですね。でも私よりも、FOXさんがするんじゃないかな。
qb6でのプロファイリングの方法を書いておこう。
これで、おじさんもりっぱなプロファイラー。
1)bbs.cgiの1行目を、
#!/usr/local/bin/perl -d:DProf
に変える
(qb6のbbs.cgiの3行目に既に書いてあるので、それを1行目に移すだけ)
2)普通に書き込みやスレ立てをする(bbs.cgiを起動する)
3)同じディレクトリに tmon.out というファイルができるので、それに対して、
dprofpp tmon.out
を実行すると、プロファイリングの結果が画面に表示される
するですね。でも私よりも、FOXさんがするんじゃないかな。
qb6でのプロファイリングの方法を書いておこう。
これで、おじさんもりっぱなプロファイラー。
1)bbs.cgiの1行目を、
#!/usr/local/bin/perl -d:DProf
に変える
(qb6のbbs.cgiの3行目に既に書いてあるので、それを1行目に移すだけ)
2)普通に書き込みやスレ立てをする(bbs.cgiを起動する)
3)同じディレクトリに tmon.out というファイルができるので、それに対して、
dprofpp tmon.out
を実行すると、プロファイリングの結果が画面に表示される
2005/04/23(土) 02:39:40ID:q2W93/1G0
へぇ、数字で与えるとその数字にあたるキャラクタにマッチして
マッチしたキャラクタが数字になって出てくるのか。
初めて知った。よーし、パパ早速使っちゃうぞーっ!!
マッチしたキャラクタが数字になって出てくるのか。
初めて知った。よーし、パパ早速使っちゃうぞーっ!!
2005/04/23(土) 02:43:02ID:lDiLScJr0
処理が前とあんまり変わっていない上に半角カナ以外も変換しちゃってるけど
少しでも軽くなってればいいってことかな。
少しでも軽くなってればいいってことかな。
63▲ ◆cZfSunOs.U
2005/04/23(土) 02:44:23ID:P1wP/4lM0 >eval { $In_Strings =~ m<$NG_word> }; # NG ワード自体をチェック。以前の失敗を繰り返さないために♪
>if ($@) { return '' } # 不正 NG ワードがあったときは OK とする。
>if ($In_Strings =~ m<$NG_word>) { # NG ワードをチェック。
> return $NG_word_ref; # 合致したるらリファレンスを返す。
>}
この部分はこうすると regex match の実行1回だけで済むかな......
my $matched = eval { $In_Strings =~ m<$NG_word> }; # NG ワード自体をチェック。以前の失敗を繰り返さないために♪
if ($@) { return '' } # 不正 NG ワードがあったときは OK とする。
if ($matched) { # NG ワードをチェック。
return $NG_word_ref; # 合致したるらリファレンスを返す。
}
>if ($@) { return '' } # 不正 NG ワードがあったときは OK とする。
>if ($In_Strings =~ m<$NG_word>) { # NG ワードをチェック。
> return $NG_word_ref; # 合致したるらリファレンスを返す。
>}
この部分はこうすると regex match の実行1回だけで済むかな......
my $matched = eval { $In_Strings =~ m<$NG_word> }; # NG ワード自体をチェック。以前の失敗を繰り返さないために♪
if ($@) { return '' } # 不正 NG ワードがあったときは OK とする。
if ($matched) { # NG ワードをチェック。
return $NG_word_ref; # 合致したるらリファレンスを返す。
}
64FOX ★
2005/04/23(土) 04:37:10ID:???0 私もまたまた酩酊ってことで
あした読んでみます、、、
あした読んでみます、、、
65未承諾広告※ ◆TWARamEjuA
NGNG 読み返してみるとボロボロだったり、、、(汗)
●改訂IsKoukoku改訂1版
→変換テーブルを単純配列にした(ハシュにする必要はなかった)
→不正NGワードがあったとき、そのままOKとしていたところを次のNGワードを探索するようにした
→不正チェックと正式チェックをまとめて1回にした( >>63 )
sub IsKoukoku
{
my ($GB) = @_;
my $In_Strings = $GB->{FORM}->{'MESSAGE'}; # shift or return ''; # 入力無しなら (・∀・) カエレ
# 半角カナ→全角カナ変換テーブルの作成(むずかしいことはしない♪けれども直接書くと0x5Cが出てくるから16進文字列に)
# qw|。 「 」 、 ・ ヲ ァ ィ ゥ ェ ォ ャ ュ ョ ッ ー ア イ ウ エ オ カ キ ク ケ コ サ シ ス セ ソ タ チ ツ テ ト
# ナ ニ ヌ ネ ノ ハ ヒ フ ヘ ホ マ ミ ム メ モ ヤ ユ ヨ ラ リ ル レ ロ ワ ン ゛ ゜|;
my @Kana2Z = (
0x8142,0x8175,0x8176,0x8141,0x8145,0x8392,0x8340,0x8342,0x8344,0x8346,0x8348,0x8383,0x8385,0x8387,0x8362,0x815B,
0x8341,0x8343,0x8345,0x8347,0x8349,0x834A,0x834C,0x834E,0x8350,0x8352,0x8354,0x8356,0x8358,0x835A,0x835C,0x835E,
0x8360,0x8363,0x8365,0x8367,0x8369,0x836A,0x836B,0x836C,0x836D,0x836E,0x8371,0x8374,0x8377,0x837A,0x837D,0x837E,
0x8380,0x8381,0x8382,0x8384,0x8386,0x8388,0x8389,0x838A,0x838B,0x838C,0x838D,0x838F,0x8393,0x814A,0x814B
);
# 読み込む。。。
my @Rock_word = @FOX_Ro54;
# まず検索対象となる文字列を半角カナ→全角カナ変換。
$In_Strings =~ s/([\xA1-\xDF])/$Kana2Z[$1 - 0xA1]/g;
# NG ワード要素を NG ワード、MD5値、フラグの 3 要素だけにしてリファレンスにしてして。
@Rock_word = map [ (split /<>/)[5,6,7] ] , @Rock_word;
# では NG ワードのチェック。
foreach my $NG_word_ref (@Rock_word){
my $NG_word = $NG_word_ref->[0]; # リファレンスから NG ワードを取り出す。
$NG_word =~ s/([\xA1-\xDF])/$Kana2Z[$1 - 0xA1]/g; # 半角カナ→全角カナ変換。
if (my $matched = eval{$In_Strings =~ m<$NG_word>}) { return $NG_word_ref } # 合致したるらリファレンスを返す。
elsif ($@) { next } # 不正 NG ワードがあったときは次の NG ワードへ。
}
return '';
}
●改訂IsKoukoku改訂1版
→変換テーブルを単純配列にした(ハシュにする必要はなかった)
→不正NGワードがあったとき、そのままOKとしていたところを次のNGワードを探索するようにした
→不正チェックと正式チェックをまとめて1回にした( >>63 )
sub IsKoukoku
{
my ($GB) = @_;
my $In_Strings = $GB->{FORM}->{'MESSAGE'}; # shift or return ''; # 入力無しなら (・∀・) カエレ
# 半角カナ→全角カナ変換テーブルの作成(むずかしいことはしない♪けれども直接書くと0x5Cが出てくるから16進文字列に)
# qw|。 「 」 、 ・ ヲ ァ ィ ゥ ェ ォ ャ ュ ョ ッ ー ア イ ウ エ オ カ キ ク ケ コ サ シ ス セ ソ タ チ ツ テ ト
# ナ ニ ヌ ネ ノ ハ ヒ フ ヘ ホ マ ミ ム メ モ ヤ ユ ヨ ラ リ ル レ ロ ワ ン ゛ ゜|;
my @Kana2Z = (
0x8142,0x8175,0x8176,0x8141,0x8145,0x8392,0x8340,0x8342,0x8344,0x8346,0x8348,0x8383,0x8385,0x8387,0x8362,0x815B,
0x8341,0x8343,0x8345,0x8347,0x8349,0x834A,0x834C,0x834E,0x8350,0x8352,0x8354,0x8356,0x8358,0x835A,0x835C,0x835E,
0x8360,0x8363,0x8365,0x8367,0x8369,0x836A,0x836B,0x836C,0x836D,0x836E,0x8371,0x8374,0x8377,0x837A,0x837D,0x837E,
0x8380,0x8381,0x8382,0x8384,0x8386,0x8388,0x8389,0x838A,0x838B,0x838C,0x838D,0x838F,0x8393,0x814A,0x814B
);
# 読み込む。。。
my @Rock_word = @FOX_Ro54;
# まず検索対象となる文字列を半角カナ→全角カナ変換。
$In_Strings =~ s/([\xA1-\xDF])/$Kana2Z[$1 - 0xA1]/g;
# NG ワード要素を NG ワード、MD5値、フラグの 3 要素だけにしてリファレンスにしてして。
@Rock_word = map [ (split /<>/)[5,6,7] ] , @Rock_word;
# では NG ワードのチェック。
foreach my $NG_word_ref (@Rock_word){
my $NG_word = $NG_word_ref->[0]; # リファレンスから NG ワードを取り出す。
$NG_word =~ s/([\xA1-\xDF])/$Kana2Z[$1 - 0xA1]/g; # 半角カナ→全角カナ変換。
if (my $matched = eval{$In_Strings =~ m<$NG_word>}) { return $NG_word_ref } # 合致したるらリファレンスを返す。
elsif ($@) { next } # 不正 NG ワードがあったときは次の NG ワードへ。
}
return '';
}
66埼玉mikky ◆jM/TIxxEd.
NGNG ねえねえ、疑問なんですけど2chはなんでdat使ってるんですか?
頻繁にアクセスされるスレは、
データベース使って、全部メモリテーブルに入れちゃったらいいじゃないですか。
メモリに入れておくと、ディスクまで取りに行くより全然速いですよ。
それに、ファイルのオープンクローズばかりだと
ファイルディスプリプタの消費が凄いだろうし、非効率じゃないですかねぇ。
頻繁にアクセスされるスレは、
データベース使って、全部メモリテーブルに入れちゃったらいいじゃないですか。
メモリに入れておくと、ディスクまで取りに行くより全然速いですよ。
それに、ファイルのオープンクローズばかりだと
ファイルディスプリプタの消費が凄いだろうし、非効率じゃないですかねぇ。
2005/04/23(土) 10:51:38ID:q2W93/1G0
>>66
http://qb5.2ch.net/test/read.cgi/operate/1103495887/965 :動け動けウゴウゴ2ちゃんねる :sage :2005/04/08(金) 23:30:02 ID:OLl7UjV20
「bbs.cgiスレでXML化を言い出す奴=Java屋の会社に入った新入社員」
「bbs.cgiスレでMySQL化を言い出す奴=オープンソースWebASPを聞きかじった新入社員」
http://qb5.2ch.net/test/read.cgi/operate/1103495887/971 :ひろゆき@どうやら管理人 ★ :2005/04/09(土) 04:27:14 ID:???0 (p)?###
>>965
同意。
へー、マッチして出てきた文字列からそのまま数字を引けばその差の数値がでてくるのか。
初めて知った。よーし、ママも早速つかっちゃうぞー!!
http://qb5.2ch.net/test/read.cgi/operate/1103495887/965 :動け動けウゴウゴ2ちゃんねる :sage :2005/04/08(金) 23:30:02 ID:OLl7UjV20
「bbs.cgiスレでXML化を言い出す奴=Java屋の会社に入った新入社員」
「bbs.cgiスレでMySQL化を言い出す奴=オープンソースWebASPを聞きかじった新入社員」
http://qb5.2ch.net/test/read.cgi/operate/1103495887/971 :ひろゆき@どうやら管理人 ★ :2005/04/09(土) 04:27:14 ID:???0 (p)?###
>>965
同意。
へー、マッチして出てきた文字列からそのまま数字を引けばその差の数値がでてくるのか。
初めて知った。よーし、ママも早速つかっちゃうぞー!!
68埼玉mikky ◆jM/TIxxEd.
NGNG >>67
DB化といえばそうだけど、ただ単にDB使った掲示板みたいに
データをDBに入れるわけじゃないからねぇ。
メモリテーブルを使うメリットないとは思えないけど、
まあ、いろいろ考え方はあるからねぇ。
DB化といえばそうだけど、ただ単にDB使った掲示板みたいに
データをDBに入れるわけじゃないからねぇ。
メモリテーブルを使うメリットないとは思えないけど、
まあ、いろいろ考え方はあるからねぇ。
2005/04/23(土) 11:18:48ID:6bukU/2/0
70埼玉mikky ◆jM/TIxxEd.
NGNG せっかくアイデア出しても煽られるだけで終わったか、、、
なんというか寂しいね。
なんというか寂しいね。
71未承諾広告※ ◆TWARamEjuA
NGNG 劇的な結果が出るようならばやってみたいですよねぇ。
例えば、今ある50近い鯖がたった10台のTigerに収まっちゃうとかとか。
例えば、今ある50近い鯖がたった10台のTigerに収まっちゃうとかとか。
2005/04/23(土) 12:24:04ID:mRDogzLo0
2005/04/23(土) 14:48:09ID:TdJ7gg7q0
man perlcompile
man perlcc
/* perl を C に変換して */ コンパイルしてみては。
man perlcc
/* perl を C に変換して */ コンパイルしてみては。
2005/04/23(土) 23:02:23ID:f/pBGuZN0
>>73
すでにやってますがw
すでにやってますがw
2005/04/24(日) 02:02:27ID:FSwUijWd0
「完璧なアイデアを出すよりも、動くコードを出す奴が評価される」
プログラマ世界の鉄則。
プログラマ世界の鉄則。
2005/04/24(日) 02:11:08ID:evOCb0dX0
コンパイルしてある場合でも、evalの部分はやっぱりPerlで解釈しながら動くのかな。
forechループをevalにする例
http://x68000.q-e-d.net/~68user/webcgi/search-1.html
forechループをevalにする例
http://x68000.q-e-d.net/~68user/webcgi/search-1.html
79root▲ ★
NGNG 例えばIDN::Nameprepとかが使えるのかもしれないけど、UTF-8ベースだし。
で、そういった正規化が必要なのは、濁点・半濁点と、あと何かあるのかしら。
で、そういった正規化が必要なのは、濁点・半濁点と、あと何かあるのかしら。
全角カタカナと半角カタカナを区別なく処理したいときは、
全角カタカナを半角カタカナにして情報量減らすんだっけか。
ガ→ガ ガ→ガ カ゛→ガ カ゛→ガ
全角カタカナを半角カタカナにして情報量減らすんだっけか。
ガ→ガ ガ→ガ カ゛→ガ カ゛→ガ
2005/04/24(日) 12:47:15ID:Ff0eXWtu0
>> 74
perl がどんな C を吐くかわからないが、あんまりよくなさげだったら、
IsKoukoku や IsKoukoku の中の"半角カナ→全角カナ変換"だけでも C で書いて、
入れ換えてみるのは。
perl がどんな C を吐くかわからないが、あんまりよくなさげだったら、
IsKoukoku や IsKoukoku の中の"半角カナ→全角カナ変換"だけでも C で書いて、
入れ換えてみるのは。
2005/05/02(月) 03:17:41ID:68k7qPdk0
というか全部Cで書くのってだめなんすか?
2005/05/02(月) 16:43:11ID:6dv2zm420
1.言いだしっぺルール
2.メンテナンスコスト
3.perlはちゃんと書けば速い
2.メンテナンスコスト
3.perlはちゃんと書けば速い
2005/05/03(火) 05:40:58ID:9hjYG5x6O
で、ちゃんと書かれてるの?
2005/05/03(火) 07:38:42ID:4DLXOziK0
ちゃんと書いてある部分もあるだろうし、ちゃんとしていない部分もあるだろう。
2005/05/03(火) 14:03:33ID:oTGNOSTA0
bbs.cgiってフォーム処理とDAT出力くらいしかやってないように
見られるんだけど、めんどいことやってるのかな?
C+++FastCGIとかでわりと簡単に書き直せたりしたりとかしない?
・・・と思ってたけど、Perlで十分なら必要ないか。
見られるんだけど、めんどいことやってるのかな?
C+++FastCGIとかでわりと簡単に書き直せたりしたりとかしない?
・・・と思ってたけど、Perlで十分なら必要ないか。
2005/05/03(火) 17:36:51ID:2fo/jDCM0
2005/05/03(火) 23:10:32ID:oTGNOSTA0
>>87
>実はいちばんめんどいのが各種チェックや統計処理だったり。
各種チェックってアクセス禁止IPのチェックとかDATファイルの1000オーバチェック
とかですかね・・・?確かにめんどそうだなぁ。
>DNS化している部分もあるけど、
素でDomain Name Systemかと思ったw
Digital Nervous Systemって抽象的でなにを言っているのかわからんけど、
高速にアクセスできるシステムって解釈でいいのかな
スレ汚しすいません
>実はいちばんめんどいのが各種チェックや統計処理だったり。
各種チェックってアクセス禁止IPのチェックとかDATファイルの1000オーバチェック
とかですかね・・・?確かにめんどそうだなぁ。
>DNS化している部分もあるけど、
素でDomain Name Systemかと思ったw
Digital Nervous Systemって抽象的でなにを言っているのかわからんけど、
高速にアクセスできるシステムって解釈でいいのかな
スレ汚しすいません
2005/05/03(火) 23:23:50ID:Qj6XBp5n0
DNSはDomainNameSystemの意味だよ。
つまり、書き込みが規制対象かどうかをDNSのプロトコルでリクエストして
その結果で判定しているということ。
つまり、書き込みが規制対象かどうかをDNSのプロトコルでリクエストして
その結果で判定しているということ。
2005/05/03(火) 23:44:45ID:4DLXOziK0
・書き換えがあまり発生せず
・反映速度の要求もシビアで無い
・複数ホストから同一データを参照する
というようなデータの場合はDNSを転用するってことでしょ。
スパムフィルターとしてRBLという実績がある方法。
・反映速度の要求もシビアで無い
・複数ホストから同一データを参照する
というようなデータの場合はDNSを転用するってことでしょ。
スパムフィルターとしてRBLという実績がある方法。
2005/05/03(火) 23:51:15ID:Kx8XfPBE0
分散データベースである必要はあるのか?って気はするが、あるんだろうな
2005/05/04(水) 00:14:30ID:GM4RRXgJ0
2005/05/04(水) 00:38:12ID:zXm56+aF0
DNSを転用するのはキャッシュが効くから元サーバーの負荷が減るってのもある。
2005/05/04(水) 11:47:18ID:keskHAhd0
>>92
DNSBLでググってみて。
DNSBLでググってみて。
9592
2005/05/05(木) 00:40:22ID:uwCu+mh10 ググってみました。
2ch運用サーバの中に、禁止ホストのブラックリストを保持していて、
リクエストがある度にそのリストを参照している、
という解釈でよろしいのでしょうか?
2ch運用サーバの中に、禁止ホストのブラックリストを保持していて、
リクエストがある度にそのリストを参照している、
という解釈でよろしいのでしょうか?
2005/05/05(木) 01:01:33ID:Cycs06qd0
>リクエストがある度にそのリストを参照している、
このへんが細かい点で違うが、まぁ結果的にはそういうことになるからいいか。
このへんが細かい点で違うが、まぁ結果的にはそういうことになるからいいか。
2005/05/05(木) 12:49:13ID:lrCXGanj0
一番大きなコストなのはRockのチェックのはず。
ここをウィルスチェッカー級の早さでチェックできればいうことないんですがねー
シマンテックあたりに相談したらおもしろいかもと煽ってみる
ここをウィルスチェッカー級の早さでチェックできればいうことないんですがねー
シマンテックあたりに相談したらおもしろいかもと煽ってみる
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 【画像あり】「肛門に酒瓶を突っ込み…」「床には尿が水たまりに」 二所ノ関部屋の「問題動画」を入手…風紀崩壊の実態 [鉄チーズ烏★]
- 【文春】〈フジテレビ&中居正広問題〉フジ編成幹部A氏が語った“中居とX子さんの関係"「付き合えばいいのになぁと思っていた」★2 [Ailuropoda melanoleuca★]
- 川口で女性につきまとい性的暴行、トルコ国籍の男逮捕「何しているの」公園連れ込む 否認 [香味焙煎★]
- トランプ大統領「ロシアの対応はとても良かった」 ウクライナを激しく批判「戦闘を始めるべきではなかった」 ★5 [蚤の市★]
- 首都圏マンション発売44%減、1月で過去最少に [蚤の市★]
- 兵庫県斎藤知事「コメントは差し控える」パワハラ指摘おおむね事実「最終的には司法の判断」 [七波羅探題★]
- 【訃報】ニュースで議員を見ると怒りが止まらなくなる奇病にかかってる [943688309]
- お前ら一番好きな野菜書いてけ
- 【悲報】婚活女子「海外旅行好き女性にコンプレックス抱く弱者男性多過ぎてドン引き…仕事でも行くし一回2-30万円だし安い方の趣味じゃん [786648259]
- バカ無職の🏡
- 【悲報】斎藤元彦陣営のネット広報担当会社が投稿したnoteで騒然★464 [359965264]
- 【速報】ヤクルト・つば九郎の中の人死去 [765383483]