bbs.cgiの開発作業をすすめていくためのスレッドです。
FOXさんの努力によりSpeedyCGIへの対応が行われ、
パフォーマンスの向上が図られたbbs.cgi。
・さらなるカスタマイズ
・パフォーマンスの向上
・微妙な虫取り
・残された秘境エリアの開拓
あたりをターゲットに。
前スレ:
bbs.cgi再開発プロジェクト7
http://qb5.2ch.net/test/read.cgi/operate/1130918407/
探検
bbs.cgi再開発プロジェクト Part8
■ このスレッドは過去ログ倉庫に格納されています
1root▲ ★
NGNG789動け動けウゴウゴ2ちゃんねる
2007/02/14(水) 12:49:02ID:Hflr2cU60 >>788
うるせーばか
うるせーばか
790動け動けウゴウゴ2ちゃんねる
2007/02/14(水) 13:28:32ID:wyK9anet0791stream ◆PNstream2s
2007/02/14(水) 13:31:19ID:IUQlVW7b0792動け動けウゴウゴ2ちゃんねる
2007/02/14(水) 13:59:49ID:7P2oobe90 環境によってはスレが多い板だとレンダリングが重い。
やっぱりCSSを使わない旧バージョンを残してほしい。
bbs.cgiに2つのファイルを吐かせるのが負荷になるのであれば
とりあえずCSSを使わない旧バージョンのsubback.htmlを吐かせるようにして
subback2.htmlなどの名前でシンボリックリンクを置いて同じファイルを参照させ
ローカル側でJavaScriptでlocation.pathnameの値を見てsubback2.htmlなら
CSSを適用するという方式はどうだろうか?
subback3, subback4, subback5...と増やして複数のスタイルにも対応できるし
この方法ならcookieを使う必要がない。
やっぱりCSSを使わない旧バージョンを残してほしい。
bbs.cgiに2つのファイルを吐かせるのが負荷になるのであれば
とりあえずCSSを使わない旧バージョンのsubback.htmlを吐かせるようにして
subback2.htmlなどの名前でシンボリックリンクを置いて同じファイルを参照させ
ローカル側でJavaScriptでlocation.pathnameの値を見てsubback2.htmlなら
CSSを適用するという方式はどうだろうか?
subback3, subback4, subback5...と増やして複数のスタイルにも対応できるし
この方法ならcookieを使う必要がない。
793動け動けウゴウゴ2ちゃんねる
2007/02/14(水) 14:03:15ID:wyK9anet0 >>791
残ってないよ。
旧スタイルで、aタグの末尾にあんな空白あった?
しかも空白部分もリンクになってるせいでうっとうしいったらありゃしない。
でもまあ、わからないならもういいよ、
個々人で処理できないわけでもないから。
残ってないよ。
旧スタイルで、aタグの末尾にあんな空白あった?
しかも空白部分もリンクになってるせいでうっとうしいったらありゃしない。
でもまあ、わからないならもういいよ、
個々人で処理できないわけでもないから。
2007/02/14(水) 14:37:31ID:licKEnN30
表示切り替えで、旧スタイル→縦列表示→ブロック表示、と変わる。
2007/02/14(水) 15:01:35ID:5TZZgMAw0
http://qb5.2ch.net/test/read.cgi/operate/1171217094/828,830-832,834,836-837
からのお話です。
板飛びの復旧のための復帰というケースもあるので、
出来ましたら板復帰の呪文を唱えた時にはsaborinの影響無しでindex.htmlを生成するようにしてはいただけませんでしょうか。
ご検討をお願いします。
からのお話です。
板飛びの復旧のための復帰というケースもあるので、
出来ましたら板復帰の呪文を唱えた時にはsaborinの影響無しでindex.htmlを生成するようにしてはいただけませんでしょうか。
ご検討をお願いします。
>>795
さて、、、。
復帰の呪文の話なのでここも微妙に違う予感もしますが、
復帰の呪文って、subject.txt だけしか作成しないんでしたっけ。
# 通常復帰すればよかったような気もしますが(呪文系はよくわかっていなかったり)。
さて、、、。
復帰の呪文の話なのでここも微妙に違う予感もしますが、
復帰の呪文って、subject.txt だけしか作成しないんでしたっけ。
# 通常復帰すればよかったような気もしますが(呪文系はよくわかっていなかったり)。
2007/02/14(水) 15:17:44ID:BSdNJjoR0
旧式の呪文(おいちゃんが使ってるやつ)はindexを生成するけど
現行の呪文はindexは生成しないんだそうで
現行の呪文はindexは生成しないんだそうで
798stream ◆PNstream2s
2007/02/14(水) 15:19:57ID:JhJg4TPM0 前も同じことがなんでも実況のどこかで問題になったことありますよ
2007/02/14(水) 15:22:17ID:5TZZgMAw0
すみません、過去ログでsaborinの事を調べていたらここの過去ログに行き当たったもので。
もしかして自分の知らない復帰の呪文があるのかもしれませんが、
私の知っている呪文ではこれまでだとindex.html、subback.htmlも更新してくれてました。
今日の復帰で使用したのも通常復帰の方ですが、それでも30分以上生成されてませんでした。
書き込んでも復旧せず、最初の20分ほどはどちらの板も人大杉に飛ばされました。
その後index.htmlが元に戻るまではディレクトリ丸見え状態でした。
もしかして自分の知らない復帰の呪文があるのかもしれませんが、
私の知っている呪文ではこれまでだとindex.html、subback.htmlも更新してくれてました。
今日の復帰で使用したのも通常復帰の方ですが、それでも30分以上生成されてませんでした。
書き込んでも復旧せず、最初の20分ほどはどちらの板も人大杉に飛ばされました。
その後index.htmlが元に戻るまではディレクトリ丸見え状態でした。
800stream ◆PNstream2s
2007/02/14(水) 15:23:24ID:JhJg4TPM0 ex21のSaborinって新スレが立つ時しかsubbackとindexを生成していない ように見える
2007/02/14(水) 15:24:26ID:M18jBj2D0
まぁ,saborin は偶然の要素に左右される面がありますからね.
これも,いずれ bbsd を一般鯖でも利用する段階になれば,
秒数で生成のインターバル指定できますし.
これも,いずれ bbsd を一般鯖でも利用する段階になれば,
秒数で生成のインターバル指定できますし.
803動け動けウゴウゴ2ちゃんねる
2007/02/14(水) 20:34:58ID:pn4ItZR40 偶然の要素は求めていないんですけど?
求めているのなら相談なんてないorz
求めているのなら相談なんてないorz
2007/02/14(水) 20:38:38ID:UOYsD1RZ0
>>779
floatの描画はfirefoxでも縦や横と比べると重い感じ
floatの描画はfirefoxでも縦や横と比べると重い感じ
>>803 いや,saborin では index.html 等が生成されるかどうかは
偶然の要素で決定されるから,なかなか生成されないってこともありうると.
で,bbs.cgi 側では復帰直後かどうかってのはわからないですし,
また単一プロセスの bbsd と違って一定インターバルで生成ってのもできないですし.
偶然の要素で決定されるから,なかなか生成されないってこともありうると.
で,bbs.cgi 側では復帰直後かどうかってのはわからないですし,
また単一プロセスの bbsd と違って一定インターバルで生成ってのもできないですし.
でまぁ,bbsd 以外で考えられる方法としては
1. bbs.cgi 内部で index.html の存在をチェックするようにする.
2. 復帰呪文側で index.html 生成処理を追加する.
ってあたりですが,1. は毎回 stat() するのもどうかってところで,
2. は無難そうですが index.html 生成処理って結構面倒ですよね
(っていうか,呪文スクリプトを統括してるのはどなたなのかな,ってのも).
1. bbs.cgi 内部で index.html の存在をチェックするようにする.
2. 復帰呪文側で index.html 生成処理を追加する.
ってあたりですが,1. は毎回 stat() するのもどうかってところで,
2. は無難そうですが index.html 生成処理って結構面倒ですよね
(っていうか,呪文スクリプトを統括してるのはどなたなのかな,ってのも).
2007/02/14(水) 21:28:37ID:19kvJVqR0
bbs.cgiはサブルーチン化が進んでいると思うけど、
bbs.cgiをrequireして当該部分を呼ぶんじゃだめっすかね。
HTMLに変更がある時も安心。
bbs.cgiをrequireして当該部分を呼ぶんじゃだめっすかね。
HTMLに変更がある時も安心。
808stream ◆PNstream2s
2007/02/14(水) 21:29:29ID:IUQlVW7b0 復帰呪文側でスレを立てる
2007/02/14(水) 22:22:29ID:Uc7IlgTe0
■移転ですー
に対抗して
■復帰ですー
で立てる。
に対抗して
■復帰ですー
で立てる。
811動け動けウゴウゴ2ちゃんねる
2007/02/14(水) 22:30:44ID:Qtmb/rzV0 復帰するたんびにスレ立ててたらスレ立て荒らしになっちゃうよ
2007/02/14(水) 22:35:08ID:BdEREMKO0
既に立ってたらもう立てなくていいじゃん?
既存のスレにレスするだけとか
既存のスレにレスするだけとか
813動け動けウゴウゴ2ちゃんねる
2007/02/14(水) 23:37:21ID:+vqZDfnm0 例の特殊datか
あ......SpeedyCGI だから,船の出港時だけは生成するっていうのもありかな?
…ただ、同時に起動した時におもたくなるリスクは、あるのかもかも?
そのへんは、大福食ってみないと、なのかしら。
そのへんは、大福食ってみないと、なのかしら。
>>815 回数のカウントでなくても,単に初回かどうかのフラグでもいいかと.
>>817
なるほど、そですね。
なるほど、そですね。
>>816 起動時に必ず生成ではなく,まず存在確認してから生成ならいいかも?
なるほど。
そうすれば、stat() するのは初回だけで済むと。
そうすれば、stat() するのは初回だけで済むと。
821動け動けウゴウゴ2ちゃんねる
2007/02/15(木) 00:12:49ID:yY6LrhsA0 今度は何?
>>814-820 やりますた.単に bbs.cgi が初回かどうかじゃなく,板別に判定ってことで.
次bananaの件が一段落して、次なる興味深い内容を見つけたわけですが、
bbs.cgi の現状も saborin もわかならいのでしばらくROMってみます。
断片でも状況がわかるならにちゃんねるWikiにまとめてもいいんですけど
bbs.cgi の現状も saborin もわかならいのでしばらくROMってみます。
断片でも状況がわかるならにちゃんねるWikiにまとめてもいいんですけど
私が営業してるときの定型句
「ネットワークやシステムで面倒な作業、困ってること、手間になってることありませんか?」
削除人の仕事を楽にするためのベイズフィルタ用いたスパム(板違い、駄スレ、LR違反)判定する
スクリプトとか需要あったりするのかな?
「ネットワークやシステムで面倒な作業、困ってること、手間になってることありませんか?」
削除人の仕事を楽にするためのベイズフィルタ用いたスパム(板違い、駄スレ、LR違反)判定する
スクリプトとか需要あったりするのかな?
827どくどくさぼてん
2007/02/15(木) 20:27:50ID:w2Gva9Ua0 うーん、、削除が遅れ気味なのって、
実際に判定する人自体が足りてない?からなんじゃないですかねぇ。
人手である程度絞り込んで報告されるようなシステムである
削除整理板のやつですらもてあまし気味だから、、
削除整理板とかに報告されたのが実際にスパムであるかどうか
判定するスクリプトなら有用な可能性もあるかもしれないけど、
やっぱそういうのもトラブル起きそうな、、
自動的に削除しちゃうようなのはちょっとやばいですよね
管理人はちょっとは面白がりそうな気はしないでもないけど、、
主力で使えるかどうかは、、
実際に判定する人自体が足りてない?からなんじゃないですかねぇ。
人手である程度絞り込んで報告されるようなシステムである
削除整理板のやつですらもてあまし気味だから、、
削除整理板とかに報告されたのが実際にスパムであるかどうか
判定するスクリプトなら有用な可能性もあるかもしれないけど、
やっぱそういうのもトラブル起きそうな、、
自動的に削除しちゃうようなのはちょっとやばいですよね
管理人はちょっとは面白がりそうな気はしないでもないけど、、
主力で使えるかどうかは、、
2007/02/15(木) 20:29:23ID:CV42PsqZ0
★070214 医者・病院板 必殺連投沈め人報告
http://qb5.2ch.net/test/read.cgi/sec2chd/1171450708/33
より
必殺連投沈め人<>sage<>2007/02/13(火) 13:24:22 RDYXJnwt0<>まあ、こんな糞スレが200まで続・><>ntkyto051210.kyto.nt.adsl.ppp.infoweb.ne.jp<>220.147.189.210<><>Monazilla/1.00 MAKA/1.0b
なぜ<>が・>になっているのだろう?
http://qb5.2ch.net/test/read.cgi/sec2chd/1171450708/33
より
必殺連投沈め人<>sage<>2007/02/13(火) 13:24:22 RDYXJnwt0<>まあ、こんな糞スレが200まで続・><>ntkyto051210.kyto.nt.adsl.ppp.infoweb.ne.jp<>220.147.189.210<><>Monazilla/1.00 MAKA/1.0b
なぜ<>が・>になっているのだろう?
829どくどくさぼてん
2007/02/15(木) 20:35:45ID:w2Gva9Ua0 >>828
<>で区切られている領域で、本文の最初30バイトを表示しているみたいだけど、
ちょうど区切りのところが2バイト文字の上位1バイトの
ところで区切られちゃって、0x82になってる、と。
それで直後の < とくっついて0x823c になる。
でも、そのような文字はないのでそこの部分が・で表示されてるのかと。
(当てはまるのがないのは・ってなってるから)
こういうのがまずく当てはまると変な漢字が表示されたりするかも。
<>で区切られている領域で、本文の最初30バイトを表示しているみたいだけど、
ちょうど区切りのところが2バイト文字の上位1バイトの
ところで区切られちゃって、0x82になってる、と。
それで直後の < とくっついて0x823c になる。
でも、そのような文字はないのでそこの部分が・で表示されてるのかと。
(当てはまるのがないのは・ってなってるから)
こういうのがまずく当てはまると変な漢字が表示されたりするかも。
2007/02/15(木) 20:46:22ID:5rlZMeA00
スレッド削除に限って言えば、スレ立て規制値をあげればある程度の効果は期待できます。
現実的じゃないけど。
現実的じゃないけど。
2007/02/15(木) 20:48:03ID:HJL8rp+v0
2007/02/15(木) 20:51:03ID:x+ebRFvV0
>>827
こんなの持ってくるなよーっつうのが多いです。個人的には。
こんなの持ってくるなよーっつうのが多いです。個人的には。
削除系はどきがむねむねするです。
財宝はきっとたくさんあるはずなので、
じっくりゆっくりあせらずにってかんじが、いいのかもかも。
財宝はきっとたくさんあるはずなので、
じっくりゆっくりあせらずにってかんじが、いいのかもかも。
835どくどくさぼてん
2007/02/15(木) 20:54:30ID:w2Gva9Ua0 まぁ、削除依頼されたスレやらなにやらの
スパム度を判断するとか、どのような内容かなどの
自動推定とかだったらちょっとは面白いかもとは思いますねぇ、
ぼくはほとんどSVMばっかでやってたけど
まぁ、現状削除の処理が滞っていることへの
解決になるとはちょっと考えにくいけど、
スパム度を判断するとか、どのような内容かなどの
自動推定とかだったらちょっとは面白いかもとは思いますねぇ、
ぼくはほとんどSVMばっかでやってたけど
まぁ、現状削除の処理が滞っていることへの
解決になるとはちょっと考えにくいけど、
2007/02/15(木) 20:57:28ID:5rlZMeA00
削除されても同じスレを繰り返し立てる人もいるから、その辺からなんかアプローチできる部分がなくもないかもしれないとは思う。
2007/02/15(木) 21:00:30ID:HJL8rp+v0
そして規制報告へ〜って流れならワクテカ
削除人の作業コストが高いのが問題なのか、削除したことによるさらなる苦情なり板が荒れるのが問題なのか、
削除人がそもそも人手不足なのが問題なのか、といったような状況がそれぞれ板によって違うのが現状と思います。
処理が滞ってる原因の全ては無理だと思いますが、少しでも有効に機能するシステムを提案できるだけでも、
メリットはあると思います。失敗しても、それはそれでノウハウにはなりますし。
こんな感じで削除サポートでなくても、今問題となってそうなものがあれば、何か提案できそうな気はしてます。
削除人がそもそも人手不足なのが問題なのか、といったような状況がそれぞれ板によって違うのが現状と思います。
処理が滞ってる原因の全ては無理だと思いますが、少しでも有効に機能するシステムを提案できるだけでも、
メリットはあると思います。失敗しても、それはそれでノウハウにはなりますし。
こんな感じで削除サポートでなくても、今問題となってそうなものがあれば、何か提案できそうな気はしてます。
2007/02/15(木) 22:08:05ID:Gs6bbfnP0
レスに自動的に嵐or広告フラグを付けるっていいね。
削除人がやりやすくなりそう。
2chのレスにベイジリアンフィルタがどれだけ効果があるか興味がある。
学習効果を外部に公開して、2chブラウザでも使えるようになればかなり便利になるかも。
削除人がやりやすくなりそう。
2chのレスにベイジリアンフィルタがどれだけ効果があるか興味がある。
学習効果を外部に公開して、2chブラウザでも使えるようになればかなり便利になるかも。
2007/02/15(木) 22:14:23ID:MEvd0Lu50
取り敢えず、電番が書き込まれたら、削除。
>>828-829 芋掘りログに記録する際に,単純にバイト数で切ってるからですね.
技術的にはそういうのが起こらないようにすることは可能なんですが,
先日 <br> タグの空白パディングを一律にやらず文字コード見てから
やるようにしたら芋掘りに影響出ちゃって結局元に戻したぐらいなんで,
いじるのはちょっとコワいような......
技術的にはそういうのが起こらないようにすることは可能なんですが,
先日 <br> タグの空白パディングを一律にやらず文字コード見てから
やるようにしたら芋掘りに影響出ちゃって結局元に戻したぐらいなんで,
いじるのはちょっとコワいような......
Rockに引っかかったら印が付く。
って云うのはすぐに出来そうですね♪
って云うのはすぐに出来そうですね♪
2007/02/15(木) 22:18:51ID:jUwHitHq0
むむむさんの危惧はわかります。下手な実装はパンドラの箱を開けかねませんし。
そこで、実際に影響はしない実験の提案。
特定の板における「削除したもの」と「削除しなかったもの」の
適切に変換したテキストデータファイル1万件程度の山を2つつくって、
それをもとにbogofilterのデータベースを作ってみて、削除人たちに実験してもらうのはどうでしょうか。
なお、もっといい方法があればそれでもかまいません。
実際に実験に加わるのは運営ボランティアの方々ですし。
そこで、実際に影響はしない実験の提案。
特定の板における「削除したもの」と「削除しなかったもの」の
適切に変換したテキストデータファイル1万件程度の山を2つつくって、
それをもとにbogofilterのデータベースを作ってみて、削除人たちに実験してもらうのはどうでしょうか。
なお、もっといい方法があればそれでもかまいません。
実際に実験に加わるのは運営ボランティアの方々ですし。
専用ブラウザを考慮したら、bbs.cgi でできる事って限定されてしまうことに気付く。
スレ立て時に何か追加で処理を追加するのは、また別の案を考えて、関連キーワードスレに
遊びにいってみます。
現状の ex17,ex21 の投稿数をみると、軽量化は不要で高機能化に充分余裕がありますね。
規制関連や鯖落ちから復帰した時の処理に何かネタがありそうな気はしますね。
スレ立て時に何か追加で処理を追加するのは、また別の案を考えて、関連キーワードスレに
遊びにいってみます。
現状の ex17,ex21 の投稿数をみると、軽量化は不要で高機能化に充分余裕がありますね。
規制関連や鯖落ちから復帰した時の処理に何かネタがありそうな気はしますね。
2007/02/16(金) 02:49:33ID:5gMuPpJn0
表示スタイルの切り替えは一番上に「表示」させたほうがいいよ
(または、もうちょっと多少なりとも目立たせる)
じゃないと
知らない人は永久に気が付かないかも
ここに来る前は、てっきり白紙撤回されたと思ってたよ
(または、もうちょっと多少なりとも目立たせる)
じゃないと
知らない人は永久に気が付かないかも
ここに来る前は、てっきり白紙撤回されたと思ってたよ
2007/02/16(金) 02:51:22ID:5gMuPpJn0
つけたし
基本的に一番下のほうのスレはたいていの人は
無視して捨ててると思うから
基本的に一番下のほうのスレはたいていの人は
無視して捨ててると思うから
2007/02/16(金) 16:38:22ID:5gMuPpJn0
反応してくれて、ありがとう
でも
色のセンス最悪ですw
かんべんしてください、この色合いは
でも
色のセンス最悪ですw
かんべんしてください、この色合いは
2007/02/16(金) 16:56:26ID:5gMuPpJn0
でも、まあ
目立つっちゃ、目立つかな
他の人の反応がないとなんとも
目立つっちゃ、目立つかな
他の人の反応がないとなんとも
2007/02/16(金) 17:37:32ID:hgReDhGI0
ペパーミントグリーンはあんまり好きではないな。
2007/02/16(金) 20:29:19ID:s3BXWkgp0
2chにデザイン的センスが無いのは
デフォを超えて今や伝統だと思う。
デフォを超えて今や伝統だと思う。
852動け動けウゴウゴ2ちゃんねる
2007/02/16(金) 22:29:35ID:oYif/tQ70 >>847-850 まぁ,あくまでコードを書く人間であってデザイナーじゃないんで.
いい色見本とかあれば示してもらえれば.
いい色見本とかあれば示してもらえれば.
2007/02/18(日) 01:53:52ID:W3NlNiwz0
イチバン上に持ってくるというのは無しなのかな
告知っぽい期間だけでも
告知っぽい期間だけでも
見付けた人だけが使える機能がひっそりとたたずんでるってのも悪くないかなぁ,と......
(あと,上に置くとそれはそれでウザいって人も出てきそうな気も)
それはともかく,亀ですが
>>357-362 bbsd では BBS_BG_PICTURE が空なら url("") を出力しないようにしますた.
# bbs.cgi はとりあえず従来通り.
(あと,上に置くとそれはそれでウザいって人も出てきそうな気も)
それはともかく,亀ですが
>>357-362 bbsd では BBS_BG_PICTURE が空なら url("") を出力しないようにしますた.
# bbs.cgi はとりあえず従来通り.
SSL_X_ っていうのは、どういうあれなんでしたっけか。 > SunOSさん
>>856 suExec 有効だと arbitrary な環境変数を渡せないゆえの苦肉の策ですね.
SSL_* という環境変数は suExec 有効でも渡されますが,これは元々
mod_ssl によって SSL を使ってる場合だけにしか設定されませんし,
また SSL を使ってても SSL_X_* という名前にしておけばぶつからないってことで.
http://httpd.apache.org/docs/2.2/mod/mod_ssl.html
あと,SSL_X_BBSCGI_FUNCTIONS ってのは,CentiSec や Saborin 等を一時的に有効にしたい場合に
SetEnv SSL_X_BBSCGI_FUNCTIONS CentiSec,Saborin
とか .htaccess に入れればいいようにってことで.
SSL_* という環境変数は suExec 有効でも渡されますが,これは元々
mod_ssl によって SSL を使ってる場合だけにしか設定されませんし,
また SSL を使ってても SSL_X_* という名前にしておけばぶつからないってことで.
http://httpd.apache.org/docs/2.2/mod/mod_ssl.html
あと,SSL_X_BBSCGI_FUNCTIONS ってのは,CentiSec や Saborin 等を一時的に有効にしたい場合に
SetEnv SSL_X_BBSCGI_FUNCTIONS CentiSec,Saborin
とか .htaccess に入れればいいようにってことで.
なるほど、とても納得できました。>>857
そんなわけで。
subback.html とかを作っているところとかは、こんなことしているです。
@{$GB->{NEWSUB} に、subject.txt が行単位で配列に入っていると。
# subbackの中身部分
my $i = 0;
foreach(@{$GB->{NEWSUB}})
{
chomp($_);
++$i;
/^(\w+)\.dat<>(.*)/;
my ($key, $value) = ($1, $2);
&Put1Line(*HED, "<a href=\"$key/l50\">$i: $value</a>\n");
}
subback.html とかを作っているところとかは、こんなことしているです。
@{$GB->{NEWSUB} に、subject.txt が行単位で配列に入っていると。
# subbackの中身部分
my $i = 0;
foreach(@{$GB->{NEWSUB}})
{
chomp($_);
++$i;
/^(\w+)\.dat<>(.*)/;
my ($key, $value) = ($1, $2);
&Put1Line(*HED, "<a href=\"$key/l50\">$i: $value</a>\n");
}
subject.txt の処理だけなら単一文字列のまま扱うのもいいかなと思うんですが,
他の場所での再利用を考えると,結局配列やハッシュで扱った方がいいのかなとも思ったり.
# まぁ,Perl CGI の枠内でやってる限り限界はあるかな,とも思いますが.
他の場所での再利用を考えると,結局配列やハッシュで扱った方がいいのかなとも思ったり.
# まぁ,Perl CGI の枠内でやってる限り限界はあるかな,とも思いますが.
指摘もらった内容で flock 使わないダミーファイル&rename方式で作り直してみました。
http://choco.tank.jp/trac/wiki/subjectTxtFunc (説明)
http://choco.tank.jp/trac/browser/trunk/perlre/SUBJECT_TXT/func2.pl (ソース)
今回は subject.txt の更新だけなので、index.html subback.html の話は別に
http://choco.tank.jp/trac/wiki/subjectTxtFunc (説明)
http://choco.tank.jp/trac/browser/trunk/perlre/SUBJECT_TXT/func2.pl (ソース)
今回は subject.txt の更新だけなので、index.html subback.html の話は別に
http://qb5.2ch.net/test/read.cgi/operate/1171963749/906
にあるアトミックとは、ファイル更新時のデータの一時的な乱れや
http://ex20.2ch.net/test/read.cgi/nanmin/1170905254/732-740
で雑談で出たファイルの不整合のことだと思いますが、
私の認識では、プロセスの排他制御を行い同一リソースに対する
デッドロックさせない、同時に書き換えさせずに不整合を生まない
という意味での掲示板全体のアトミックを考えてました。
>>862の説明ページにも書いてありますが、プロセス間の排他制御を行わない
ダミーファイル方式の場合、bbs.cgi のプロセス切り替えが発生した場合、
実際の dat レス数と subject.txt の不整合が生じます。
(これも書いてありますが、同じスレで発言があれば治ります)
また、age 書き込みしたのにあがらない(saborin ではない)ことも発生します。
この程度は利用上の致命的問題とならないので現状でもOKなんだと思います。
このあたりの考え方は技術者的思考&嗜好ですみません
にあるアトミックとは、ファイル更新時のデータの一時的な乱れや
http://ex20.2ch.net/test/read.cgi/nanmin/1170905254/732-740
で雑談で出たファイルの不整合のことだと思いますが、
私の認識では、プロセスの排他制御を行い同一リソースに対する
デッドロックさせない、同時に書き換えさせずに不整合を生まない
という意味での掲示板全体のアトミックを考えてました。
>>862の説明ページにも書いてありますが、プロセス間の排他制御を行わない
ダミーファイル方式の場合、bbs.cgi のプロセス切り替えが発生した場合、
実際の dat レス数と subject.txt の不整合が生じます。
(これも書いてありますが、同じスレで発言があれば治ります)
また、age 書き込みしたのにあがらない(saborin ではない)ことも発生します。
この程度は利用上の致命的問題とならないので現状でもOKなんだと思います。
このあたりの考え方は技術者的思考&嗜好ですみません
864stream ◆PNstream2s
2007/02/23(金) 12:39:38ID:ezCNONMk0 datの破損
http://wwwww.2ch.net/test/read.cgi/news4vip/1172149686/738-739
(●持ってない人用) http://asnxload.dip.jp/files/ppfx00370.txt
738のレスを書き込み中に739の書き込みが割り込んだように見える
http://wwwww.2ch.net/test/read.cgi/news4vip/1172149686/738-739
(●持ってない人用) http://asnxload.dip.jp/files/ppfx00370.txt
738のレスを書き込み中に739の書き込みが割り込んだように見える
>>860
再利用となる index.html や subback.html 作成用の subject.txt データに関しては、
bbs.cgi で subject.txt を更新(func.pl の UpdateSubjectDat())した後に
open(SUBJECT, $subjectTxtPath)
binmode(SUBJECT);
flock(SUBJECT, 1);
@subjectTxt = <SUBJECT>;
close(SUBJECT);
chomp(@subjectTxt);
で改めて読み込んで処理すればいいかと。
@subjectTxt = <SUBJECT>; な読み込みは Perl 内部で特に最適化されてる部分なので
二重の読み込み処理に見えますが、そんなにコストは高くないです。
再利用となる index.html や subback.html 作成用の subject.txt データに関しては、
bbs.cgi で subject.txt を更新(func.pl の UpdateSubjectDat())した後に
open(SUBJECT, $subjectTxtPath)
binmode(SUBJECT);
flock(SUBJECT, 1);
@subjectTxt = <SUBJECT>;
close(SUBJECT);
chomp(@subjectTxt);
で改めて読み込んで処理すればいいかと。
@subjectTxt = <SUBJECT>; な読み込みは Perl 内部で特に最適化されてる部分なので
二重の読み込み処理に見えますが、そんなにコストは高くないです。
>>865 訂正
flock いらないですね
flock いらないですね
>>859
いろいろと制約事項(subject.txtの内容が破損してないなど)はありますが
# subback.html
$tmpl = qq[<a href="%s/l50">%d: %s</a>\n];
$cnt = 0;
for (@subjectTxt) {
printf($tmpl, substr($_, 0, 10), ++$cnt, substr($_, 15));
}
でよいかと
いろいろと制約事項(subject.txtの内容が破損してないなど)はありますが
# subback.html
$tmpl = qq[<a href="%s/l50">%d: %s</a>\n];
$cnt = 0;
for (@subjectTxt) {
printf($tmpl, substr($_, 0, 10), ++$cnt, substr($_, 15));
}
でよいかと
ついでに index.html 書き出し部分も
# index.html
$boradName = 'news4vip';
# 1..10
$tmpl = qq[<a href="../test/read.cgi/${boardName}/%s/l50" target="body">%d:</a> <a href="#%d">%s</a> ];
$cntLast = (@subjectTxt > 10) ? 10 : scalar(@subjectTxt) ;
for $cnt (1 .. $cntLast)
{
$_ = $subjectTxt[$cnt-1];
printf($tmpl, substr($_, 0, 10), $cnt, $cnt, substr($_, 15));
}
# 11..100
$tmpl = qq[<a href="../test/read.cgi/${boardName}/%s/l50" target="body">%d: %s</a> ];
$cntLast = (@subjectTxt > 100) ? 100 : scalar(@subjectTxt) ;
for $cnt (11 .. $cntLast)
{
$_ = $subjectTxt[$cnt-1];
printf($tmpl, substr($_, 0, 10), $cnt, substr($_, 15));
}
# 上位10スレの l10 のhtml化
$cntLast = (@subjectTxt > 10) ? 10 : scalar(@subjectTxt) ;
for $cnt (1 .. $cntLast)
{
# threadId 取得
$threadId = ($subjectTxt[$cnt-1], 0, 10)
# dat を読む (ここでもIOを減らす方法はいくつかある)
open(DAT, "${boardPath}/${threadId}.dat");
# 書く ( 1 と l10 部分)
}
# index.html
$boradName = 'news4vip';
# 1..10
$tmpl = qq[<a href="../test/read.cgi/${boardName}/%s/l50" target="body">%d:</a> <a href="#%d">%s</a> ];
$cntLast = (@subjectTxt > 10) ? 10 : scalar(@subjectTxt) ;
for $cnt (1 .. $cntLast)
{
$_ = $subjectTxt[$cnt-1];
printf($tmpl, substr($_, 0, 10), $cnt, $cnt, substr($_, 15));
}
# 11..100
$tmpl = qq[<a href="../test/read.cgi/${boardName}/%s/l50" target="body">%d: %s</a> ];
$cntLast = (@subjectTxt > 100) ? 100 : scalar(@subjectTxt) ;
for $cnt (11 .. $cntLast)
{
$_ = $subjectTxt[$cnt-1];
printf($tmpl, substr($_, 0, 10), $cnt, substr($_, 15));
}
# 上位10スレの l10 のhtml化
$cntLast = (@subjectTxt > 10) ? 10 : scalar(@subjectTxt) ;
for $cnt (1 .. $cntLast)
{
# threadId 取得
$threadId = ($subjectTxt[$cnt-1], 0, 10)
# dat を読む (ここでもIOを減らす方法はいくつかある)
open(DAT, "${boardPath}/${threadId}.dat");
# 書く ( 1 と l10 部分)
}
>>863
>(ryにあるアトミックとは、ファイル更新時のデータの一時的な乱れや
>(ryで雑談で出たファイルの不整合のことだと思いますが、
まぁそうですね.
>私の認識では、(ry掲示板全体のアトミックを考えてました。
一般論としてはそれも重要なことだとは思いますが,
2ch の特性を踏まえると普通のファイルロックの使い方では
先に述べたような不都合も出てくる,と.
# まぁ,そのあたりも乗り越えようと考えたのが bbsd なんですけどね.
>>864 デカいカキコのため,write() が複数になってその間に割り込んだ可能性もありますね.
>>865 なるほど......
>>868 少数とはいえ,まだ9桁スレキーも残ってるところあるかも?
>>869 html 部分は,別途こんなのを作ってます -> http://qb5.2ch.net/operate/html/
これを読み込んでつなげてる,と.
>(ryにあるアトミックとは、ファイル更新時のデータの一時的な乱れや
>(ryで雑談で出たファイルの不整合のことだと思いますが、
まぁそうですね.
>私の認識では、(ry掲示板全体のアトミックを考えてました。
一般論としてはそれも重要なことだとは思いますが,
2ch の特性を踏まえると普通のファイルロックの使い方では
先に述べたような不都合も出てくる,と.
# まぁ,そのあたりも乗り越えようと考えたのが bbsd なんですけどね.
>>864 デカいカキコのため,write() が複数になってその間に割り込んだ可能性もありますね.
>>865 なるほど......
>>868 少数とはいえ,まだ9桁スレキーも残ってるところあるかも?
>>869 html 部分は,別途こんなのを作ってます -> http://qb5.2ch.net/operate/html/
これを読み込んでつなげてる,と.
確かに、9桁のキーはまだ結構ありますね。
10桁決め打ちでやってますが、9桁対応させるなら10桁目が数字かそうでないかで
条件分岐を追加すればいいだけですね。正規表現でやれば \d{9,10} ですみますけど
Perlの正規表現は他の実装に比べて早いですが、index や substr などの文字列処理に
比べたら馬鹿にならないほどコスト大(数十倍)だったりします。
条件分岐を追加すればいいだけですね。正規表現でやれば \d{9,10} ですみますけど
Perlの正規表現は他の実装に比べて早いですが、index や substr などの文字列処理に
比べたら馬鹿にならないほどコスト大(数十倍)だったりします。
http://qb5.2ch.net/operate/html/ のアイデアはあるかなと思ってましたが、
ディスクをどの程度使用するかにも寄りますが、l10 だけでなく全てのレスを
HTML化しておけば、read.cgi でも使えますし、より効果的な負荷低減になると
思います。
バイナリの埋め込みになりますが、各レスのオフセット(seek の引数)も一緒に
インデクス化していれておけば、現実的可能な最速処理もできるかと
ディスクをどの程度使用するかにも寄りますが、l10 だけでなく全てのレスを
HTML化しておけば、read.cgi でも使えますし、より効果的な負荷低減になると
思います。
バイナリの埋め込みになりますが、各レスのオフセット(seek の引数)も一緒に
インデクス化していれておけば、現実的可能な最速処理もできるかと
>>874 9桁対応版
{
substr($_, 9, 1) eq '.'
? printf($tmpl, substr($_, 0, 10), $cnt, substr($_, 15));
: printf($tmpl, substr($_, 0, 9), $cnt, substr($_, 14));
}
{
substr($_, 9, 1) eq '.'
? printf($tmpl, substr($_, 0, 10), $cnt, substr($_, 15));
: printf($tmpl, substr($_, 0, 9), $cnt, substr($_, 14));
}
>>875
>全てのレスをHTML化しておけば、read.cgi でも使えますし
これは昔 dat2html 使ってやろうとしてたことあったような記憶もおぼろげながら......
まぁ,read.cgi 出力に mod_cache かますとかやった方が手っ取り早いと思いますけど.
>全てのレスをHTML化しておけば、read.cgi でも使えますし
これは昔 dat2html 使ってやろうとしてたことあったような記憶もおぼろげながら......
まぁ,read.cgi 出力に mod_cache かますとかやった方が手っ取り早いと思いますけど.
>>876 修正
substr($_, 9, 1) eq '.' # 10文字目がピリオドなら9桁
: printf($tmpl, substr($_, 0, 9), $cnt, substr($_, 14))
? printf($tmpl, substr($_, 0, 10), $cnt, substr($_, 15));
substr($_, 9, 1) eq '.' # 10文字目がピリオドなら9桁
: printf($tmpl, substr($_, 0, 9), $cnt, substr($_, 14))
? printf($tmpl, substr($_, 0, 10), $cnt, substr($_, 15));
>>877
今の read.cgi って対象の .dat を読み込んで、1,300 や 1-20 や l50 なんかの指定に従って
対象の行を取り出して整形して出力する処理ではないかと思ってるのですが、この dat の行を
html に変換するコストが無駄になってるのでは?と思ってます。
あと、mod_cache をかませても l50 や指定なしのものだけをキャッシュさせて、それ以外の
特殊な条件指定したもの(300-400)はキャッシュの意味は少ないと思いますし、そちらのコストも
考えると、全レスhtml化の恩恵は大きいと思います。こちらも時間があれば仕様案まとめてみます
今の read.cgi って対象の .dat を読み込んで、1,300 や 1-20 や l50 なんかの指定に従って
対象の行を取り出して整形して出力する処理ではないかと思ってるのですが、この dat の行を
html に変換するコストが無駄になってるのでは?と思ってます。
あと、mod_cache をかませても l50 や指定なしのものだけをキャッシュさせて、それ以外の
特殊な条件指定したもの(300-400)はキャッシュの意味は少ないと思いますし、そちらのコストも
考えると、全レスhtml化の恩恵は大きいと思います。こちらも時間があれば仕様案まとめてみます
そんなわけで、プロファイリングしてみた。
1行目を
#!/usr/local/bin/perl -d:DProf
に変えて、できたtmon.outを処理。
レスはこれ。
http://dso.2ch.net/test/read.cgi/myanmar/1153850369/530
html/ の下がないと作り直すので、2つ目のレスで計測。
トリップあり、sage、●なし、BEなし。
%Time ExclSec CumulS #Calls sec/call Csec/c Name
14.4 0.077 0.095 1 0.0775 0.0948 main::MakeIndex4PC
13.1 0.070 0.070 1 0.0703 0.0703 main::IsKoukoku
8.82 0.047 0.266 1 0.0468 0.2661 main::bbs_entryXXX
5.63 0.030 0.233 30 0.0010 0.0078 main::BEGIN
5.63 0.030 0.026 1 0.0304 0.0262 main::initFOX
4.32 0.023 0.045 10 0.0023 0.0045 Net::DNS::Resolver::Base::BEGIN
4.32 0.023 0.052 22 0.0010 0.0024 Jcode::BEGIN
3.00 0.016 0.016 1 0.0156 0.0156 main::mumumuGetNowTime
3.00 0.016 0.016 11 0.0014 0.0014 DynaLoader::dl_load_file
2.82 0.015 0.030 10 0.0015 0.0030 LWP::UserAgent::BEGIN
2.82 0.015 0.023 73 0.0002 0.0003 Exporter::import
1.50 0.008 0.008 1 0.0078 0.0078 jcode::init
1.50 0.008 0.008 1 0.0078 0.0078 main::checkDenyList
1.50 0.008 0.008 1 0.0078 0.0078 main::foxReadSettings
1.50 0.008 0.008 1 0.0078 0.0078 Net::DNS::RR::_get_subclass
1行目を
#!/usr/local/bin/perl -d:DProf
に変えて、できたtmon.outを処理。
レスはこれ。
http://dso.2ch.net/test/read.cgi/myanmar/1153850369/530
html/ の下がないと作り直すので、2つ目のレスで計測。
トリップあり、sage、●なし、BEなし。
%Time ExclSec CumulS #Calls sec/call Csec/c Name
14.4 0.077 0.095 1 0.0775 0.0948 main::MakeIndex4PC
13.1 0.070 0.070 1 0.0703 0.0703 main::IsKoukoku
8.82 0.047 0.266 1 0.0468 0.2661 main::bbs_entryXXX
5.63 0.030 0.233 30 0.0010 0.0078 main::BEGIN
5.63 0.030 0.026 1 0.0304 0.0262 main::initFOX
4.32 0.023 0.045 10 0.0023 0.0045 Net::DNS::Resolver::Base::BEGIN
4.32 0.023 0.052 22 0.0010 0.0024 Jcode::BEGIN
3.00 0.016 0.016 1 0.0156 0.0156 main::mumumuGetNowTime
3.00 0.016 0.016 11 0.0014 0.0014 DynaLoader::dl_load_file
2.82 0.015 0.030 10 0.0015 0.0030 LWP::UserAgent::BEGIN
2.82 0.015 0.023 73 0.0002 0.0003 Exporter::import
1.50 0.008 0.008 1 0.0078 0.0078 jcode::init
1.50 0.008 0.008 1 0.0078 0.0078 main::checkDenyList
1.50 0.008 0.008 1 0.0078 0.0078 main::foxReadSettings
1.50 0.008 0.008 1 0.0078 0.0078 Net::DNS::RR::_get_subclass
最初のは、index.html を作る処理ですね。
次のが広告かどうかのチェック。
3番目は各種初期化。
次のが広告かどうかのチェック。
3番目は各種初期化。
>>879 基本的に,mod_cache に任せておけば大局的には読み出しの多いレス番指定が
ヒット率が高くなるでしょうし,読み出しの多いものが重点的にキャッシュされ,
一方少ないものは on the fly に生成するという形に収斂していくかと.
全レスを HTML 化したものもスタティックファイルとして保持させると,
あぼーん用スクリプトとか dat 落ちスクリプトとかにも対応する処理を
入れることになって,手間と効果のバランスからどうかなぁ,とも.
ヒット率が高くなるでしょうし,読み出しの多いものが重点的にキャッシュされ,
一方少ないものは on the fly に生成するという形に収斂していくかと.
全レスを HTML 化したものもスタティックファイルとして保持させると,
あぼーん用スクリプトとか dat 落ちスクリプトとかにも対応する処理を
入れることになって,手間と効果のバランスからどうかなぁ,とも.
>>880,881
speedy でのキャッシュされた実行ではなさそうなので、BEGIN や Exporter::Import などのコストも入ってますね。
となると上ふたつのコストが、ファイル読み込み処理と、正規表現の文字列処理なので、この部分が一番わかりやすい
大きなコストになってるような感じですね。
他の部分は、上二つに比べたらまだ気を使うほどのところでもなさそうです。
speedy でのキャッシュされた実行ではなさそうなので、BEGIN や Exporter::Import などのコストも入ってますね。
となると上ふたつのコストが、ファイル読み込み処理と、正規表現の文字列処理なので、この部分が一番わかりやすい
大きなコストになってるような感じですね。
他の部分は、上二つに比べたらまだ気を使うほどのところでもなさそうです。
で、われわれがSaborinと呼んでいるのは、
MakeIndex4PC(とUpdateSubback)を呼ぶのをまばらにする、
というものですね。
MakeIndex4PC(とUpdateSubback)を呼ぶのをまばらにする、
というものですね。
私が今後どのような形で(&飽きずにいつまでw)お手伝いすることになるかわかりませんが、
FreeBSD の -stable と -current みたいに、現状の改善と安定を目指すものと、年末くらいに
完全にいちから再設計して作り直した(現状では雪だるまがそっち系なのかな?)システムという
形で現状ですべきこと、長期的に考えることを分けて考えてもいいような気がします。
現状では、>>880 のようなものとにらめっこして、LAを減らすことかな?
あるいは現状の利用者数、投稿数で年末まで持つと仮定して、新バージョンの開発かな?w
なんてことを考えるのははたから茶々いれるだけの技術者的の私個人としては楽しいのですが、
運営側としてはどうなんでしょ?
FreeBSD の -stable と -current みたいに、現状の改善と安定を目指すものと、年末くらいに
完全にいちから再設計して作り直した(現状では雪だるまがそっち系なのかな?)システムという
形で現状ですべきこと、長期的に考えることを分けて考えてもいいような気がします。
現状では、>>880 のようなものとにらめっこして、LAを減らすことかな?
あるいは現状の利用者数、投稿数で年末まで持つと仮定して、新バージョンの開発かな?w
なんてことを考えるのははたから茶々いれるだけの技術者的の私個人としては楽しいのですが、
運営側としてはどうなんでしょ?
きっと、、、「運営側」っていう言葉について、
「それって何だろう」って素で思うようになると、
なんとなくいいかんじになる、んじゃないのかなと。
ここって「あっち側」とか「こっち側」とかじゃなくて、
管理人を除いてみんな同じところにいる、
っていうあたりから、はじまっているような気がするんで。
なんというか、このへんにいる人たちは
みんなたんなる「お手伝い」に過ぎなくて、
単にそれぞれ、出来ることが違うだけというか。なんとゆうか。
「それって何だろう」って素で思うようになると、
なんとなくいいかんじになる、んじゃないのかなと。
ここって「あっち側」とか「こっち側」とかじゃなくて、
管理人を除いてみんな同じところにいる、
っていうあたりから、はじまっているような気がするんで。
なんというか、このへんにいる人たちは
みんなたんなる「お手伝い」に過ぎなくて、
単にそれぞれ、出来ることが違うだけというか。なんとゆうか。
で、>>886 みたいなものって、昔のインターネットには割とたくさんあったんですが、
今のインターネットには、もうなんか少なくなったというか、
ほとんど見当たらないようになりましたね。
「それいいっすね。いっちょやりますかぁ」「ごにょごにょ…」
「おい変だぞ、どうしたんだゴルァ」
「あちゃー、ごめんなさいー、戻しますー」みたいな、
アドホックというか、とりあえず試してみるというか。
そんなわけで私は2ちゃんねるに「昔からある、もともとのインターネットの姿」を、
ほんのちょっぴり、垣間見ていたりなんかして。
すれ違いすんませんです。
今のインターネットには、もうなんか少なくなったというか、
ほとんど見当たらないようになりましたね。
「それいいっすね。いっちょやりますかぁ」「ごにょごにょ…」
「おい変だぞ、どうしたんだゴルァ」
「あちゃー、ごめんなさいー、戻しますー」みたいな、
アドホックというか、とりあえず試してみるというか。
そんなわけで私は2ちゃんねるに「昔からある、もともとのインターネットの姿」を、
ほんのちょっぴり、垣間見ていたりなんかして。
すれ違いすんませんです。
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- USスチール買収で武藤経産相が「理解しがたい」…バイデン大統領の禁止命令にコメント発表 [香味焙煎★]
- あぼーん
- 【芸能】タイミー、中居正広が出演するCM動画を削除… TBSの2番組は放送中止、フジは未定、日テレ『仰天ニュース』のみ放送予定★2 [冬月記者★]
- 米バイデン大統領、日本製鉄のUSスチール買収阻止を決定 ワシントン・ポスト報道 ★3 [ぐれ★]
- あぼーん
- 【芸能】吉本退社直後の人気タレント 芸人仲間からの壮絶嫌がらせを告白 「相当キツかった」 [冬月記者★]
- 誇張しすぎた安倍晋三「イタァアキマアアアアス!!!!!(お箸グルグルグルグルンッッ!!!)」 [931522839]
- サバイバル系のゲームで他の人の拠点をめちゃくちゃにしてやったんだが
- 高学歴気づく「貧困なのは勉強してこなかった人達」 [963242833]
- 【年末年始暇な奴来い】安価で指定されたものを全力で探してうpするスレ
- VTuberの話題専用のお🏡
- 17まんこですー