read.cgi再開発スレ Part2
■ このスレッドは過去ログ倉庫に格納されています
◆cZfSunOs.Uさん作成のmod_cgidsoにより、大きな負荷軽減が図られたread.cgi。
このスレでは、そんなread.cgiの(再)開発・実装すべき機能について取り扱います。
前スレより:
574 名前:FOX ★[sage] 投稿日:05/01/05 15:54:28 ID:???
全てのサーバ cobra/toger/banana で read.cgi の dso化が完了。
これから href の置き換え ime.nu 対応を行い
それが終了したら第一ステップは完。
第2ステップは
2-1) bug つぶし
2-2) 仕様の変なところは変更
2-3) 時代背景にあわせたデコレーション
こんなとこかと、
前スレ:
read.cgi再開発スレ
http://qb5.2ch.net/test/read.cgi/operate/1087199303/ 前100をクリックすると前101を表示します。前100・次100で移動するとずれるので不便です(´・ω・`)
書き込み数が1のスレッドを http://鯖/test/read.cgi/板/スレ/1-100 で開くと書き込みが表示されません。2ch検索が/1-100を使っているので、そこから新しく建ったスレを開いて表示されなくて(´・ω・`) 皇紀2665/04/01(金) っての関連は何処スレで決まったの?
専ブラが誤作動する…orz 2chの動作報告はここで。 パート16
http://qb5.2ch.net/test/read.cgi/operate/1103455176/758
758 名前:動け動けウゴウゴ2ちゃんねる[] 投稿日:2005/04/17(日) 22:25:31 ID:Gsk3CeB70
あと人大杉画面の「掲示板へ戻る」のリンクがhttp:///になってる
だそうです。
たしかに、そうなるみたい。 .│
\ │ /
\__..│__./
,:-‐'" ̄ \│ノヽ-、.
/ \
/ \
/ ヽ
/ ヽ
| ヽ
| ,,,,;;::''''' ヽ
| ,,,,;;::::::::::::::: __ │
| " __ :::: '"ゞ'-' │
| - '"-ゞ'-' ::::::... │
| ::::::: │
| ( ,-、 ,:‐、 │
| │
| __,-'ニニニヽ . │
. │ ヾニ二ン" │ <ブーン
│ │
丿 │ /⌒ヽ
⊂二二二( ^ω^)二⊃
| / ブーン
( ヽノ
ノ>ノ
三 レレ /⌒\
∩ / @∀@ \
| |__ / @∀@∀@ ヽ ___
|___( @∀@∀@∀@∀@)__ | コノスレオモスレー
| @∀@∀@∀@ / | |
(  ̄ヽ ノ ∪
ノ ̄\ ノ
三 |_/ |_/ /⌒ヽ ブーン
二( ^ω^)二⊃ /⌒ヽ ブーン
| / /⌒ヽ ブーン 二( ^ω^)二⊃
( ヽノ 二( ^ω^)/⌒ヽブーン /
ノ>ノ ⊂二二二( ^ω^)二⊃ ヽノ /⌒ヽ ブーン
レレ ( ヽノ| / ノ>ノ 二二( ^ω^)二⊃
ノ /⌒ヽ ブーン レレ | /
⊂二二二( ^ω^)二⊃ /⌒ヽ ブーン ( ヽノ
| / レ 二( ^ω^)二⊃ ノ>ノ
( ヽノ | / レレ
ノ>ノ ( ヽノ
三 レレ ノ>ノ ,.-''"¨ ̄¨`' ‐ 、
(,,(,,i,,,i,,,,,,,,i,,,,i,,),,)
) (
∧,.∧゚д゚ )
/・ ・`ヽと )
(。。ノ しヽ
/ヽ / ノ
( へ /|.|
ヽヽ| | U
| | パコパコ
U ∧_∧
⊂二二< `ш´>二⊃
| / ブーン
( ヽノ
ノ>ノ
三 レレ
/⌒ヽ ブーン
二( ^ω^)二⊃ /⌒ヽ ブーン
| / /⌒ヽ ブーン 二( ^ω^)二⊃
( ヽノ 二( ^ω^)/⌒ヽブーン /
ノ>ノ ⊂二二二( ^ω^)二⊃ ヽノ /⌒ヽ ブーン
レレ ( ヽノ| / ノ>ノ 二二( ^ω^)二⊃
ノ /⌒ヽ ブーン レレ | /
⊂二二二( ^ω^)二⊃ /⌒ヽ ブーン ( ヽノ
| / レ 二( ^ω^)二⊃ ノ>ノ
( ヽノ | / レレ
ノ>ノ ( ヽノ
三 レレ ノ>ノ
⊂二二(^ω^)二⊃ブーン
ブ━(^ω^≡^ω^)━ン!!
ブ━(n‘ω‘)η゚・*ン!!
ブ━(^ω^)(ω^*)━ン!!
⊂ つ⊂ つ
(( ⊂、/ \〜つ
ミ ∪ ≡ ∪′彡 ,.-''"¨ ̄¨`' ‐ 、
(,,(,,i,,,i,,,,,,,,i,,,,i,,),,)
) (
∧,.∧^ω^ )
/・ ・`ヽと )
(。。ノ しヽ
/ヽ / ノ
( へ /|.|
ヽヽ| | U
| | パコパコ
U
ちょwwwwwwwwwwwここはヤバスwwwwwwwwwwwwwwwww
/⌒ヽ ブーン
二( ^ω^)二⊃ /⌒ヽ ブーン
| / /⌒ヽ ブーン 二( ^ω^)二⊃
( ヽノ 二( ^ω^)/⌒ヽブーン /
ノ>ノ ⊂二二二( ^ω^)二⊃ ヽノ /⌒ヽ ブーン
レレ ( ヽノ| / ノ>ノ 二二( ^ω^)二⊃
ノ /⌒ヽ ブーン レレ | /
⊂二二二( ^ω^)二⊃ /⌒ヽ ブーン ( ヽノ
| / レ 二( ^ω^)二⊃ ノ>ノ
( ヽノ | / レレ
ノ>ノ ( ヽノ
三 レレ ノ>ノ
怒られちゃいます><
全部ラウンジの仕業なんです><
vipは関係ないです>< ファミレスでよくみかける、頭の弱いお子様のようだな。
店内をブンブン飛んでいるのもそっくり。 これを、あげよう。
read.cgi に、
・ex11 anime を tiger サーバとして、
・ex12 ex13 live21 を cobra サーバとして、
それぞれ登録しました。
これで、LAが banana 並みでも人大杉になってしまう現象は、なおりました。
今、サーバ名できめうちになっていますが、
これをうまく判定するのは、どうしたらよかんべか。
具体的には、CPUの種別(Pen4, Xeon, Opteron)あたりをCな言語からとれると、よかったり。 %sysctl -a | grep Xeon
hw.model: Intel(R) Xeon(TM) CPU 2.80GHz
これ、つかうかぁ。
%./sample
AMD Opteron(tm) Processor 242
とれた、とれた。
これを、組み込むか。
#include <stdio.h>
#include <sys/types.h>
#include <sys/sysctl.h>
int main(void)
{
int mib[2];
char model_name[BUFSIZ];
size_t len;
mib[0] = CTL_HW;
mib[1] = HW_MODEL;
len = sizeof(model_name);
sysctl(mib, 2, &model_name, &len, NULL, 0);
printf("%s\n", model_name);
return 0;
} read.cgi ver 05.0.1.1 2005/06/02
これで、今後新しいCPUがこない限り、埋め込みしなくて済むはず。
/****************************************************************/
/* GetHwModel */
/****************************************************************/
int GetHwModel(char *model_name, size_t len)
{
int mib[2];
mib[0] = CTL_HW;
mib[1] = HW_MODEL;
if (sysctl(mib, 2, model_name, &len, NULL, 0) == -1) return -1;
return 0;
}
/****************************************************************/
/* GetMaxLA */
/****************************************************************/
double GetMaxLA(CH2READ *ch2)
{
char model_name[BUFSIZ];
if(GetHwModel(model_name, sizeof(model_name)) == -1) return maxLAbanana ;
if(strstr(model_name,"Opteron")) return maxLAcobra ;
if(strstr(model_name,"Xeon")) return maxLAtiger ;
if(strstr(model_name,"Pentium")) return maxLAbanana ;
return maxLAbanana ;
} カキコ本文の行末に余計な半角スペースがついてしまっていて
コピペするときに邪魔なんですが。。
全ての行末についてくるので余計なバイトも食うし、なんとかなりませんか? >>254
>コピペするときに邪魔なんですが。。
これが一因 254じゃないけど
>>255
わざとってこと?何の意味があんの?わかんないんだけど。 おしまいの空白は、こわれたSJISを突っ込まれても大丈夫なようにするためですね。
とりあえず、やむを得ないと思われ。 >>258
dso化する前のread.cgiはちゃんとSJISの片割れまで考慮して空白を取ったり
取らなかったりしていました。
ただ、そこまでやると当然コストがかかるわけで(ry
という話は分かります。 不正バイトシーケンスが含まれていないかのチェックは,本来は read.cgi よりも
bbs.cgi がやるべきではあるんですよね.ただ,現状ではただでさえ重い bbs.cgi が
さらに(ryってことになるんで,雪だるま作戦が進展して bbs.cgi の処理が
フロントエンドとバックエンドに分散化され余力が出てきたら,そのチェック処理を
入れるのもいいのかも知れませんね. 心の中で応援してあげて下さい。私も応援しています。 スレッドキーが9桁の過去ログは、html が gzip 圧縮されていないと(key.html.gz がないと)
datが存在しません。削除されたかURL間違ってますよ。
と表示されるようです。
対応よろしくお願いします。 >>1-みたいにレスアンカーの直後にハイフンがつくとリンクが無効になる不具合
前は確か>>1の部分だけは生きてた http://anime.2ch.net/test/read.cgi/anime/11202299148/
2ちゃんねる error 2023
error 2023 番のメッセージはなににすればいい?
だそうです。 if(strlen(ch2->zz_key) > 10)return 2023;
>>274
ソースとdatを嫁、ってゆってるわけね、、、。はぁ。 いやー
単にkeyの桁が多いだけなんじゃないの?
つまり「そんな板orスレッドないよ。」かと、 >>276
ソースちょっと読んで、わかりました。
てへてへ。
て裕香、スレッドキーは10桁までだとゆうことですか。 で、なんでこんなことになったかというと、
機動種士ガンダムSEED DESTINY PHASE-561
http://anime.2ch.net/test/read.cgi/anime/1120319538/
このへんから、先週の盛り上がり加減(というか実況度合い?)はどうだったのかなぁと、
ちと覗いてみたら、1のテンプレのキーが、そうなっていたと。 で、このエラーメッセージは、
スレッドキーの指定が不正です。
あたりが、よさげ。 機動戦士ガンタムSEED DESTINY PHASE-558
http://anime.2ch.net/test/read.cgi/anime/1120299148/
ほんとはこれだったみたい。おさわがせしました。 こちらが適当ではない内容ならすみません、
Over1000したときに出る『Over 1000 Thread』
に、日付と時刻を入れるのがよいかと思ったのですが。
普通のレスと同じ様な要領でも結構ですし。 お手数かけて済みませんでした、ありがとうございます。。 #include "apr_buckets.h"
#include "apr_date.h"
#include "apr_errno.h"
#include "apr_strings.h"
#include "apr_tables.h"
#include "util_filter.h"
#include "http_request.h"
static apr_status_t rdat_filter(ap_filter_t *f, apr_bucket_brigade *b)
{
return ap_save_brigade(f, (apr_bucket_brigade **)&f->ctx, &b, f->r->pool);
}
static apr_status_t read_dat(CH2READ *ch2, request_rec *r)
{
int rv;
ap_filter_rec_t frec = {"READDAT", {rdat_filter}, NULL, AP_FTYPE_RESOURCE, NULL};
ap_filter_t f = {&frec, NULL, NULL, r, r->connection};
char *uri = apr_pstrcat(r->pool, "/", ch2->zz_bbs, "/dat/", ch2->zz_key, ".dat", NULL);
request_rec *rdat = ap_sub_req_lookup_uri(uri, r, &f);
if (!(rv = rdat->status == HTTP_OK ? ap_run_sub_req(rdat) : rdat->status)) {
apr_brigade_pflatten(f.ctx, &ch2->BigBuffer, &ch2->zz_fileSize, r->pool);
apr_brigade_destroy(f.ctx);
ch2->zz_fileLastmod = rdat->mtime ? rdat->mtime
: apr_date_parse_http(apr_table_get(rdat->headers_out, "Last-Modified"));
}
ap_destroy_sub_req(rdat);
return rv ? APR_ENOENT : APR_SUCCESS;
}
----------------------------------------------------------------------
雪だるま版 read.cgi での dat 読み込みは↑な感じかなぁ,というのを何となく.
普通の CGI だと localhost にソケットで接続して(ryってところでしょうけど,
DSO ではサブリクエストを使えばいいんでソケット不要ですね.
ただ,mod_rewrite ではサブリクエストで reverse proxy を使えないという
制限があるんで,ProxyPass ディレクティブで↓のように指定で.
ProxyPass /livejupiter/kako !
ProxyPass /livejupiter/_datArea !
ProxyPass /livejupiter/ http://live22priv.2ch.net/livejupiter/
ProxyPassReverse /livejupiter/ http://live22priv.2ch.net/livejupiter/
CacheDisable /livejupiter/kako
CacheDisable /livejupiter/_datArea
CacheEnable disk /livejupiter/
過去ログ・dat 落ちログに関しては
・ ライブな dat のように転送 (live22 -> live22x) の即時性は要求されない.
・ mod_disk_cache のキャッシュ領域を /md に確保するとして,
即時性が要求されないデータで /md を食い潰すのはもったいない.
ということで,それらは rsync でマターリ転送することにすれば,
offlaw.cgi は無修正で Ok でしょうかね. 既出だったらすまない。メールアドレス入力欄に「sage」って入力
しなくても下げられるようになりませんか?
あれだけでも、かなり転送量減ると思う。
<a href="mailto:sage">sage</a>
今、転送量がどれくらいの位置付けで問題になってるのかは別としても、
メール欄でのsage機能を変えるって事は様々な方面に影響が出ちゃうからなぁ・・・ aタグ外せば?って話かと思ったのだが。mailto:sageは意味無いよね?みたいな >>290
実際にメアド書く人はほとんどいなからaタグって不要だとは思うけど、
それだとメール欄の内容表示はどこで?ってことにならない?
sageつつもそれプラスなにか書いてることあるし。ネタバレとか。 今は転送量は問題になってないはず
改修するコストに見合うだけのメリットがあれば変えてもいいんだろうけど 今の所転送量は問題になっていないが、そのうち2ちゃんねるユーザが増えて来たら
また危なっかしい事になりかねない。
せめて、<a href="mailto:sage">sage</a>は止めた方が良いのでは?
せっかくread.cgiを最開発するならそこを改良すると良いと思う。
そしてスタイルシートを使って、外部ファイルにするってのはどうだい?
ほとんどのユーザはダウンロード時間を早くするためにキャッシュを有効に
してるだろうから、うまくすればCSSをキャッシュしてくれるかもしれない。
そうすれば次回はダウンロードする必要無いし、転送量も減るかも。。 外部ファイルはしないってひろゆきが書いてたのに
またそこへ戻すの? <a>タグを削ることで、何%の転送量が稼げる?
もちろん、gzip圧縮前提で メール欄はそれなりに色々と役立ってるから
仕様変更する必要ないでしょ
いつぞやみたいに転送量削減するか2ch閉鎖するかみたいな
事態にならない限り 何に役立ってるのか理解出来ない。sageる機能ならチェックボックスにチェック
いれるだけで十分かと。良くメール欄に「晒しage」って書いてるの見かけるが
全く<a>で括る必要が無いと思われ。
実際メールアドレス書く人少ないしね。 メール欄にネタバレや、IE使ってる初心者に読んで欲しくないコメントや、
あとアップローダのパスとか入れてる人が結構居るんだってば
板によってはそういう事例が無視できるところも多いだろうけど sageだけ削るのとメール欄を削るのとごっちゃになって噛み合ってない気が。
sageは書き込み時にスレを上げない、という機能だけだから
読み込み時に見せても意味ないかも、というのは同意。
ただ>>298の言う通りどの程度削れるか実測してみないと説得力ないかも デフォルトでsageにしたら
メール欄に何か書いてるレスが少数になって目立っちゃうでしょ
ああこりゃ何か意図があるなということになっちゃう 現状のデフォでageになってるよりsageにした方が
並び替えが発生しなくなる分鯖の負荷は減るしage荒らしも減るよね 数%レベルの転送量削減のために機能を変えるぐらいなら、デフォ名を短くした方がよほど
効果がある。
転送量に限らず、性能とかもそうだけど、小さいとこからこつこつとじゃなくって、実測で評価
して効果が大きいところからやるべき。
それにしても、スレッドフローティング型掲示板って何なんだろう・・・ <a>を削ったところに<font>ををつけるとなるとだめかも。
このスレをつかって実験してみた。
<a href="mailto:sage"> 〜 </a> を <font color=green> 〜 </font>
にしたら 101377 byte → 101165 byte
datの<>sage を省いてみたら 77176 byte → 75886 byte
(sageを消してない状態で)
htmlで名無しを?に変えたら 101377 byte → 96733 byte
datでやったら 77176 byte → 72532 byte いや結論でてるし。
投稿年が4桁に戻せる状況なんだよ。閉鎖騒動後と違って。
改善すべきところは他にあるのだ 「動け動けウゴウゴ2ちゃんねる」を「GoGoGirl」にしたら、何バイト減る? 「以下、名無しにかわりましてVIPがお送りします」も長いんじゃない?
VIPの。。。 てかもうその話終わっちゃったしね
そこまで転送量減らしたいなら、
datの中身だけ送ってJavaScriptに表示やらせたほうが早いんじゃない? ていうか専用ブラウザ以外で閲覧できなくすればいいし…w 今もある(暫定的に)
多分ここのスレ扱いじゃないと思うけど倉庫入りしたスレの
2chリンクにime.stがついている不具合
例 ここの>>3とか
http://qb5.2ch.net/operate/kako/1087/10871/1087199303.html >>318
うちの環境では、そのスレはime.nuついてるけど。 <dt>と<dl>にid付けて<dt id="dtレス番">、<dl id="dlレス番">みたいにして
例 <dt id="dt3">3 :<font color=green><b>名無し </b></font>:2005/08/06(土) 16:15:20 <dd id ="dd3"> ・・・・・・
IEで見たときにも>>レス番のポップアップするようにしてみたんだけどどうかな?
// レスポップアップ
function popAnchor() {
var evt = window.event.srcElement;
if ((evt.tagName == 'A') && (evt.title == "")) {
if (evt.innerText.search(/^>>(\d+)\-?(\d*)/) !=-1) { // ハイパーリンクなら
var st = RegExp.$1;
var ed = RegExp.$2;
if ((st > ed) || (ed == "")) {ed = st;} // 変なリンクチェック
if ((ed - st) > 5) {ed = eval(st) + 5;} // 5レス以上は5に
while (st <= ed) {
evt.title += document.getElementById('dt'+st).innerText + "\n" + document.getElementById('dd'+st).innerText + "\n\n"; // レス内容獲得
st ++;
}
}
}
}
document.onmouseover = popAnchor; // マウス監視
if ((evt.tagName == 'A') ← これかわいい(´∀`*) >1にレスアンカーのあるスレをトラックバックするとタグが表示される件について トラックバック先が連投規制で書き込みが反映されなかったときに
エラーメッセージが出ない件について
多分落ちてるスレに対してトラックバックかけても同様だと思う ■ このスレッドは過去ログ倉庫に格納されています