1 :
名無し娘。 ◆vP.bOZFQ :
01/08/28 20:24 ID:vA2A8wXI
2 :
名無し娘。 ◆vP.bOZFQ :01/08/28 20:24 ID:vA2A8wXI
3 :
名無し娘。 ◆vP.bOZFQ :01/08/28 20:25 ID:vA2A8wXI
4 :
名無し娘。 ◆vP.bOZFQ :01/08/28 20:26 ID:vA2A8wXI
5 :
名無し娘。 ◆vP.bOZFQ :01/08/28 20:32 ID:vA2A8wXI
連絡事項は以上です。。。 みなさま、よろしくお願いします。。。
6 :
| - -) :01/08/28 20:43 ID:vBFldHfk
zlibを突っ込んだのでcvsを使っている方はcvs up -dしてください。 # コメントを空にしてしまった...
7 :
P2Pスレの266 :01/08/28 20:51 ID://bFJTXs
スマソ。P2Pcache スレの 266 っす。 差分転送対応の read.cgi の情報はどこへ行けば分かりますか? どういうパラメータを与えればよいのか調べたいので教えていただけると助かります。
8 :
♯6411 :01/08/28 20:53 ID:ft1AuJx2
10 :
♯6411 :01/08/28 20:55 ID:ft1AuJx2
>>8 あー仕様が述べられてないなあ。
cvsミラーから、最新のread2ch.h探して
それ読んでみてちょ。
i-MODE版だと1000越えててもFORMが出るみたい。 あと、スレ止めかかってるときもFORM要らない気がする。
>11のうち、i-MODEの方、修正済。
>8 現在のバージョンは /* raw=xxx.yyyを有効にする。 xxx=最終レス番号, yyy=そのときのサイズ。 * 一行目はステータス: * [+OK] の場合は差分のみを送信する。 * [-INCR] (Incorrect)の場合はすべてのデータを送信する。 * [-ERR (テキスト)]の場合はなんかエラーが起きた。 */ つまり 先頭行で -INCR が送られて来たら 全部の行の読み直しが送られて来る でなければ最終レスの次から送られるという仕様のようです
Content-Encoding: deflate で、Content-Lengthを吐ける(メモリ上で圧縮)ようにしたんですけど、 どこに出せばいいんでしょうか。
17 :
♯6411 :01/08/28 21:26 ID:ft1AuJx2
>>16 diff(-c or -u)取って済むレベルだったら
ここに貼ってもらえばcommitします。
さもなければ、/incomingに突っ込んでもらうか
直接cvs commitしてもらえれば…
>>16 あっもうやってたのね 自転車の再発明をするとこだった(w
なんか過去ログ見るのにパスワードが必要になってるみたいなので read.cgiに過去ログ見る機能をつけるのはまずいかも…。
>>20 そうらしいですね。
でもまあ、-DKAKO とかにしとけばよいので。。。。
>>16 前スレ238でこんな報告があるけど大丈夫?
>IEはヘッダにはAccept-Encoding: gzip, deflateと含めているにも
>関わらず、実際にdeflateでエンコードしたデータを喰わせても
>解釈できないです。
24 :
デフォルトの名無しさん :01/08/28 21:43 ID:Os46TJAs
>>23 うは、かなり古いソース元にした上でグローバルとか全部構造体に直したりしてるのね
25 :
♯6411 :01/08/28 21:49 ID:ft1AuJx2
手元では、ソースが-funsigned-charベースになってる んですが、マージしちゃっていいですか? 一通り試したかぎりでは、実害はありません。
26 :
23 :01/08/28 21:55 ID:un1LZ.0c
はい。著作権放棄(できないけど)なのでいくらでもどうぞ。
>>27 というか、zlibを呼んでるだけに見えるんだけど。
なんか勘違いしてません?
>>23
早速某所実況スレ(削除依頼済み)で 30秒リロード強制304 >>** リンク禁止 が貢献していると思われます。ありがとうございます。
>>29 やや関連して、いまさらかなり厨房な意見になってしまいますが、
ここはいったん、.datの直読みを禁止(chmod 600)してもらって、
FORTH_304_TIME と gzip 転送を強要してしまうのはどうでしょうか。
かちゅ〜しゃとか使えなくなりますが。
よろしければ、批判要望の方でお願いしてきます。
chmod 600だとread.cgiからも読めないとかbbs.cgiから更新 できないとかかなり不都合がありそうですが
>>31 "chmod u+s *.cgi"でダメかね?
CUTRESLINKって22時からでしたっけ?
>>30 あと、実況している板が未だにいくつかあるようですので、そういうところを
局地的に #define FORTH_304_TIME 120 とかにしてしまえるよう、
設定関連の SETTING_R.TXT への追い出しもお願いできませんでしょうか。
直接的ですが、転送量削減が至上命題ですから、やむを得ないかと。
つーか.dat直読みでかつ差分でなく全文取り繰り返してるような利用って どんぐらい多いものなのか。 統計チェックできないね。
Content-Length対応素材 char emergency_buf[8192]; /* for html_error */ char *outbuf; int outlen = 0; int outalloc = 0; int gzipped_fwrite(char *buf, int n, int m, void *dummy) { int l = n*m; if ( outlen+l > outalloc ) { outalloc = outlen+l+4096; /* 多めに */ if ( outlen == 0 ) { outbuf = malloc(outalloc); } else { outbuf = realloc(outbuf, outalloc); } } if ( outbuf != NULL ) { memcpy(outbuf+outlen, buf, l); } outlen += l; return m; }
main向け html_errorはどうにかしないとまずいことに。(メモリが取れないときだけ) if ( outlen != 0 && outbuf == NULL ) { outbuf = emergency_buf; outlen = 0; html_error("メモリの確保に失敗しました。"); } printf("Content-Length: %d\n",outlen); fwrite(outbuf,1,outlen,stdout);
全板FORTH_304_TIME設定でもとくに問題ないと思うけど。 開始時刻と終了時刻は22:00〜3:00に再調整されてるみたい。 昨日の〜6:00ってのはバグが直ってることを確認するため だけの設定だったのね。
38 :
VC++まだ箱のなか厨房(w :01/08/28 22:30 ID:BD3EkxyY
>>37 こことかunixとかaccuseが2分間リロード制限は不便かなと思ったので。
いや、それでもいいとは思います。
40 :
23 :01/08/28 22:45 ID:un1LZ.0c
>27, 28 失礼。古いほうのファイルあげてました。あげなおしました。
グローバル変数
int isbusytime = 0;
の下に、
int isimode = 0;
int isnofirst = 0;
をつけ、
strcmp(zz_im, "true")とstrcmp(zz_nf, "true")を
zz_GetEnv()の最後にまとめることをきぼー。
ツール作者に、read.cgiを呼ぶように呼びかけているけど、それは当分無理。
cgiの負荷が原因で規制がかかったりもしたんだし、
そもそもサーバー負荷の点でから、read.cgiを呼ばないように
呼びかけられているんだから。
夜勤さんが最初(でもないけど)に悲鳴をあげたこのスレッドの、
最初の方だけでも読んでよ。
http://green.jbbs.net/computer/bbs/read.cgi?BBS=479&KEY=989936380 圧縮効果がどれほどになるかはリクエストを分析しないとわからないけど、
NotModifiedや、あっても数行の追加レス(とくにチャット状態)
というリクエストの方が圧倒的に多いはずだから、
わざわざCGIを呼ぶように作る人は、
サーバーリソースを重視する人の中にはいないはず。
初読みの時だけ、あるいは前回のリクエストから一定時間以上経過していたら
CGIを呼んで圧縮して返してもらう、等にしてもらえばBestかも。
>>30 ちょっと極端すぎるんでない?
もともとDAT差分読みが基本でサーバにやさしい2ちゃんブラウザを全部排斥しちゃうの?
ブラウザ作ってる人が皆暇なわけじゃないわけだし、あまり無茶はどうかと思われ
ちゃんと効いてるみたいだよ>FORTH_304_TIME
617 名前:594 投稿日:01/08/28 22:49 ID:7Qjv2346
>>605 漏れはindex2.html見てたよ…
read.cgiは30秒制限かかってました…。
44 :
デフォルトの名無しさん :01/08/28 22:59 ID:qisK1mh.
>>33 設定の変更を行うであろう回数とread.cgiが呼ばれる回数の比を考えたら、
ここはハードコーディングで済ますべきだと思うが
chmod 600 じゃなくて、/dat/.htaccess でしばっても可ですね。
>>42 その通りで、作者の皆さんには失礼だとはわかっていますが、あと3日で
転送料を現状の3/4程にしないといけないわけですし、2ちゃんねる
そのものの存在がかかっていますから、今すぐとはいわずとも、選択肢に
入れておく必要はあると思います。
FORTHじゃなくてFORCE...
>>44 単純にその問題に限っていえば、read.cgiは/板名/以下にあるわけでは
ないですから、板毎に設定可能にするためには、板毎の FORTH_304_TIME を
.hあたりに記述することになりますね。
そのあたりの効率は、実行する方にお任せします。
こんな感じかい? #defineが足りないけど。 zz_GetEnv()の最後に readSettingFile(zz_bs); } void readSettingFile(const char *bbsname) { char fname[1024]; char buff[1024]; FILE *fp; sprintf(fname, "../%.256s/SETTING_R.TXT", bbsname); fp = foepn(fname, "r"); if (fp) { /* SETTING_R.TXTを読む */ while (fgets(buff, sizeof(buff), fp)) { if (*buff && *buff != '\n' && *buff != '#' && *buff != ';') { char *value = strchr(buff, '='); if (value) { *value = '\0'; if (strcmp(buff, "FORCE_304_TIME") == 0) { zz_FORCE_304_TIME = atoi(value); } } /*else if () {}*/ } } fclose(fp); return; } /* SETTING_R.TXTがない場合、デフォルト値を設定 */ zz_FORCE_304_TIME = FORCE_304_TIME_DEFAULT; }
だからアクセスログの解析しないと、その辺も決めきれないよ。 返って負荷増やす結果になりかねん。 夜勤さん来たら頼んどいてね
>>49 はい。そんな感じかと。
>>50 解析できれば簡単ですが、できない場合は「やってみて様子見」の覚悟も
必要でしょうね。極めて短期的な負荷増はこの際問題ではないですから。
ま、どちらにしても夜勤さんにおうかがいです(^^;
告白します 今日気付いたんですが、F5を3回連続で叩く癖がついていました 無意識に新しいのを読み込もうとしちゃいます どーしよー
55 :
49 :01/08/28 23:21 ID:V02xO5sc
じゃあ、少しまじめに atoi(value) -> atoi(value+1); #define FORCE_304_TIME_DEFAULT 30 グローバルに int zz_FORCE_304_TIME; 判定している部分で if (... FORCE_304_TIME ...) → if (... zz_FORCE_304_TIME ...) #ifdefで囲む必要もありそう 俺、mmap知らんのや。 (else ifのネストもおかしかった) でも、誰かがmergeしてくれるのを待つだったり。 動作確認してないし。
■提案■ 「最新レス100」の隣に、「このあと追加されたレス」ボタンを置く。 リンクは、そのページでたとえば113まで表示されていたら114からの範囲指定。 ない場合のエラーメッセージをゆるくする。 たとえば「指定されたレスはまだありません、ブラウザの戻るボタンで戻ってください」 リロード対策。
57 :
♯6411 :01/08/28 23:27 ID:ft1AuJx2
スマソ、今本業中なので(苦笑 アイディア山車だけ。 誰か、Expire実装しといてくれない? 漏れ的には、5秒程度でいいような気がしたーり。
58 :
名も無き :01/08/28 23:29 ID:7XRvfoXo
流れと関係無いけど 「レス1-100」を作れば スレが始まった直後を見るために レスを全部見る必要がなくなると思うのだが。
59 :
名も無き :01/08/28 23:32 ID:7XRvfoXo
60 :
♯6411 :01/08/28 23:32 ID:ft1AuJx2
>>51 どーでもよくないことなんだけど…
串ユーザの割合ってどれくらいだろう?
夜勤さんとか来たら、ちょっと測ってもらいたし。
キャッシュサーバにかなり有効な最適化
図れるんだけど…
62 :
デフォルトの名無しさん :01/08/28 23:36 ID:jC7qg.Nk
>>56 賛意。
現在はスレの一番下からは、どこにも飛べない設計になっているよね。
従ってインターフェィス的に100%ブラウザーのreload押されると思われ。
実装に手間かからないのも魅力的。(笑
63 :
てすと :01/08/28 23:37 ID:8Eh1e7h6
>>56 既にソースの中には実装されているはずです。
まだ動作確認や組み込みは行われていませんが・・・。
65 :
♯6411 :01/08/28 23:47 ID:ft1AuJx2
>>64 さんくす
いったん自宅に帰ろう…本業が煮詰まったでのう。鬱…
さっきUNIX板(cocoa)で"Internal Server Error"が一時的に出てたけど...... ひょっとすると"Couldn't spawn child process"のような気がする...... やっぱzlibの方がいいね
>63 -DRELOADLINK ?
68 :
デフォルトの名無しさん :01/08/28 23:58 ID:1vYPgdGY
>>66 bbs.cgiが吐いているんじゃないの?
bbs.cgiいじっているようだし。
DolBackyさん出動中かな?
69 :
てすと :01/08/28 23:59 ID:8Eh1e7h6
>>67 そうです。
置く場所や、HTMLの部分は適当に書き換えてください。
71 :
名も無き :01/08/29 00:04 ID:CYESa.LE
うーむ プログラム中での"line"は レス単位だったのか・・・・
72 :
名も無き :01/08/29 00:08 ID:CYESa.LE
>>61 read.cgiにも欲しいかなー・・と。
>>72 そうだね、read.cgiの出力に直行性がなくて
(したくもないのに)全部ロードするしかないことが多いね。
だれか強権的にインターフェイス揃えちゃえば?
74 :
Sherry ◆RKMbxbuc :01/08/29 00:16 ID:RKxEDv6s
>>前スレ800 access.log 公開って難ありなんでしたっけ? コードを渡して実行してもらう方式だと,夜勤さんに結構 手間かけちゃうのと,解析結果をみて更に詳しい解析を‥‥‥ とかがしにくくなっちゃうかと.(^^; 前スレ711,713あたりをみて公開できるものなのかと思ってましたが(^^; とりあえず,前スレ757-759使えばIPは隠せるので公開しても 大きな問題はなさそうなものですが・・・どうなのかな?
>>73 に補足
「この前の100」「この次の100」とかもありそうでなかったりするから、
結局全部ロードすることになる。
範囲指定したときかな?
index2.htmlにならんでるスレッドの「1-100」を選んだときに、
最下行に「次の100レス」がない。
76 :
デフォルトの名無しさん :01/08/29 00:20 ID:x5yXcrTI
lsを使った読み込みの場合、前10レスが短時間たとえば5分で消費されてる 場合専用ブラウザ使ってくださいというダイアログがでるのはどうでしょうか? JAVA切ってるとクッキーを作らないのでJAVA入れるしかなくしておいて まあProxomitron使われると終わりでしょうが
77 :
名も無き :01/08/29 00:28 ID:CYESa.LE
>>75 範囲を直接指定できるようにすれば?
フォームがかさばるかもしれんけど
ま、そういう機能がほしけりゃカチューシャ導入してるかな?
79 :
名も無き :01/08/29 00:30 ID:CYESa.LE
>>78 イイ!
100ごとのページ表示なんかなんで
今まできづかなかったんだろう
よさそうに見える 荒らしのきついスレとか、「多分この辺まで嵐だから飛ばそう」とか あたりをつけて見ることが、結局通信料の抑制につながることは多いだろうし
>>74 IP(と場合によってはリモートホスト)と、bbs.cgiへのアクセスの部分を
排除すれば、大きな問題はなさそうですが。。。うーん。
鯖のポリシー、サイトのポリシー次第でしょうから、気にかかるんですよね。
なんにせよ、おうかがいはたててみましょう。
CUTRESLINKされるおかげで、該当レス読むために50レスだのスレ全体だのが
リクエストされてるんではないか、という心配もあるし。
read.cgiの方は使い勝手よくしとかないと、 ストレスたまってindex2.htmlの消費量を増やすんじゃないかと思う、 憶測だが、自分の経験だと。
83 :
デフォルトの名無しさん :01/08/29 00:37 ID:x5yXcrTI
>>82 index.htmlを使いにくくすればいい(w
使いにくくしてもしかたないのでは? つまらなくするならわかるが (ネタだろうけど、戦略レベルでは結構示唆するところがあると思うのでマジレス)
>>49 >>55 のをmmap()化してみたり mmap()化で変わる部分だけ抜粋
int fd;
fd = open(fname, O_RDONLY);
if (fp >= 0) {
/* SETTING_R.TXTを読む */
char *cptr;
void *mmptr;
struct stat st;
fstat(fd, &st);
mmptr = mmap(NULL, st.st_size, PROT_READ, MAP_SHARED, fd, 0);
for (cptr = mmptr; cptr && *cptr; cptr = strchr(cptr, '\n'), cptr?cptr++:0) {
if (*cptr != '\n' && *cptr != '#' && *cptr != ';') {
if (!strncmp(cptr, "zz_FORCE_304_TIME=", 18)) {
zz_FORCE_304_TIME = atoi(cptr+18);
}
} /*else if () {}*/
}
munmap(mmptr, st.st_size);
close(fd);
}
# それにしても ここにそのままコード貼り付けると半角スペースがつぶれて
# インデントがなくなっちゃうから不便だぁ
86 :
Sherry ◆RKMbxbuc :01/08/29 00:42 ID:RKxEDv6s
>>81 bbs.cgi って POST だから投稿内容等は全部ログには出ないのでは...?
とりあえず,夜勤さんの反応待ちですね.(^^;
公開してもらうにしろ,スクリプト実行してもらうにしろ,
可能なのかまだわかりませんから...
>>83 -84
とにかく、全体の通信量の削減のためには、
通信量の割にユーザを拘束する時間が長いのがベストで、
そうならない改造はすべて改悪と言ってよいのだから……
ユーザを拘束するまっとうな手段は、
通信量の割に濃い内容を提供することだけど、
誰かがジョークで言ってた「sleepする」ってのも、
条件的にはありえない選択ではないのよね。
特にテレホタイム直後のみでも。
エキサイトメールとかは多分そうしてたんだろう。
まあ、BIG-Serverのポリシーに反するからここでは厳しいだろうけど。
最後の手段の一つということで。
>>78 いいですね。そうなるとむしろ「全部読む」が要らないかも。
>>85 今の状況だと、read.cgiは、考え得るすべての選択肢をすべて実装しておき、
夜勤さんが、手軽に&感覚的にいろいろ設定を変えて様子をみられる状態に
しておくべきかな、と思うので、よろしくです。。。
>>86 もちろんそうですが、POST に関しては一切情報を出さないくらいじゃないとなぁ、と。
IP消すんだから、別にいいような気もしますが。
もしかすると、あぼーんスクリプトのlogも消さないといけないのかも。
# あぼーんがhttpd経由かは確信がないです。
>>85 流出した SETTING.TXT は perl の CGI で、普通に呼び出されたら
設定を出力するようになっているんです。
それに沿うようにするなら SETTING_R.TXT も cgi にするべきかも。
コーディングに参加したいけど手元にUNIXとかwebサーバがない コンパイル通る程度でいいの?
>88 要らないというか使わせないという感じかな。 >91 Win なら cygwin をインストール。
>>78 の様なUIにするならインデックスを1つごと作るのではなく
1,101,201...901の位置にだけ作ってしまえばいいのでは
94 :
91 :01/08/29 01:13 ID:zFPSp17Q
>>92 入ってるけど、何の関係が?
gzip使ってるからかな?
今更ですが、sageの場合、メアドリンクしないことにしませんでしたっけ?
96 :
名無し :01/08/29 01:14 ID:rLkLso.k
ftp鯖ってどこにありますか?
97 :
♯6411 :01/08/29 01:17 ID:hO/EUIjQ
自宅に帰ってきたら、 cutreslinkが動くようになってきてしまった…鬱だ 手元で外せばいーんだけど。
98 :
名無し娘。 ◆vP.bOZFQ :01/08/29 01:18 ID:moOhcWuk
夜勤さんがいらっしゃるのですが、インストールできる状態の新バージョン ありますか? # 夜勤さんのお時間があるかどうかはわかりませんが。
99 :
名無し娘。 ◆vP.bOZFQ :01/08/29 01:20 ID:moOhcWuk
>>95 sageの場合、わかりやすい(?)ように、
boldを外してしまう、という仕様にしましょうか?
read.cgiに前100付けるなら、imode版の先頭にもつけて欲しいです imode-phsだとキャッシュを有効利用し、スレ開いて前前前前と読んで オフラインし、連続で読みが出来るのです ついでに1がデカイ事があるので、1だけ次のレスへのジャンプが出来ると さらに使い勝手が上がって助かります
いちおうコピペ 811 名前:夜勤 ★ 投稿日:01/08/29 01:16 ID:??? "Since it our general policy not to install modules within our existing apache, this needs to be done by hand and will take some time. Gary"
>>102 予想通りの結果になったなぁ。
とりあえず今のCVSバージョンは
・COOKIE処理はやっぱりJavaScript側でやらせるようにする(キャッシュされてキャップパスがばれる可能性があるから)
・RAWOUT, USE_PATH追加
・HTMLの更なる最適化
・zlibを含めるように
くらいかな?
このバージョンで一回tryしてみますか。
104 :
%95 :01/08/29 01:30 ID:uqhD7TfA
>>100 boldを外すと、fusianasanの見分けが付かなくなるので、
例えば名前のbold外に*をつける位でよろしいかとおもいます
"<a href="mailto:sage "><b>さげ名無し </b></a>" "<font color=green><b>あげ名無し </b></font>" "<font color="#660099">さげ名無し </font>" "sage "直後の空白は、「メール欄の最後がシフトJIS1バイト目以外なら」出力せずに済む。 名前欄も同様(見かけが変わるけど)
>>99 コロッケ台風の時のkabaは無いでしょうか?
祭りモードでピーク時の様子も見てみたいのですが
>>104 あっそうか、fusianasan忘れてた。
>>105 ちょっと考えてみたが、boldのblueってのはどうだろう?
(個人的にはstrike使ってみたい)(w
ごめん、今は、 "<a href="mailto:sage ">さげ名無し </a>" だね。 何にしろ、hrefを減らすとしても<font color=> </font>が入るから、 あんまり差が出ないか、逆効果かもしれないよ。 まあ、isbusytimeは強引に "<b>さげ名無し </b>" ってものありかも。
>>107 ためしに実装してみたら、
一瞬違和感感じてしまった(w
でも、これでいいかな、どうでしょう?
さらなる意見求む。
111 :
109 :01/08/29 01:40 ID:yQuoniQU
前半大間違い。
112 :
音楽侍 ◆NtVkSITE :01/08/29 01:43 ID:IJ0kRMgU
sageでの表示にまで話がいっているようですが、 必要充分以上の改変は、控えた方がよいと思いますよみなさん。
>>110 color=#0000c0 にしてみたら、
なんかいい感じな気もしないでもないが…
公開鯖でないので見せてあげられないのが残念
reload_link、stが存在しない範囲を指してるとレス#1だけ表示されるね。 これだとわかりにくくて使ってもらえない可能性大だね。 stが指してる場所が範囲外だったらすべてエラーにする? それともreload_link専用の属性(たとえばrl)を用意すべきだと思う?
>94 いや、apache もあるしcygwin環境でも十分試せると思って。 >114 st=lineMax+1 じゃなくて st=lineMax にすればいいと思う。
今はとにかく転送量を減らすのが目的なので出来るだけ圧縮が効くように 同じタグを配置したり無駄なものを排除した方がいいと思います。 # しかしread.cgiはもう限界近いような気が。index2.htmlの圧縮はどう # なっているんだー
>>114 st=(最後のカキコ) だと
ちょっとうまく逝くんじゃないかな。
それを使う人はたぶん、reload_linkをしばらく
リロード連打するだろうし。
>>116 sage変造のサンプルをcommitした
(ただし殺してある)ので、見てみてくだちい。
エンドユーザの串依存率が低くないのであれば、
とてもよく効く妙案があるんですが…
イッソノコト2ch用プロトコル(2ch://〜)ヲ開発スルトカ。 htmlムダ多スギ。
121 :
デフォルトの名無しさん :01/08/29 02:02 ID:npmpuEU2
>>115 (前)
ごめんちょっと意味わかんない。
説明めんどくさかったらほっといていいよ、
テキスト出力でどうにかするから。
>>115 >>117 しまった、もしかしてソースはそうなってるのかな?
グローバル変数が多くて名前が変でソース見ただけでよくわからなかった、
ちょっと迷惑かけた。
このコードはデバッガで追わないとダメなようだ、少し潜伏する。
123 :
- :01/08/29 02:07 ID:lLO5yHHU
imode=true のとき、先頭に [最新レス10] が出るけど、ls=10 は不要。 その変わりに、nofirst=true が付いてたほうが使いやすいと思うのだけど いかがですか?
124 :
デフォルトの名無しさん :01/08/29 02:11 ID:npmpuEU2
125 :
名無しさん@MZ-2000 ◆Ewz1Jtuw :01/08/29 02:13 ID:nZtnifzg
>>123 nofirst=true に激しく同意。
imode 時に 1 がデカイと後ろが見れなかったりするんで
1 いらないです。
126 :
- :01/08/29 02:15 ID:n8N3Cozs
mod_gzip が入ることはなくなったってことだと、 index2.html は cgi にして、gzip圧縮を組み込んだ方が 転送量削減になるだろうなぁ
127 :
素人考えですが :01/08/29 02:18 ID:f4hB04xU
Last-Modified は.datの更新日時を出力してるようですが、 表示される中の最新の書込み日時にしたら、 多少はキャッシュ効率上がるような気がしないでもないです 未来の日時だとどういう動作するんだろ?
>>127 実装はまだだけど検討中。
あぼーんされたときも「更新された」と見なさないと
いけないので、現仕様の dat だと難しいのだ。
>>125 いっそのこと、スレ一覧生成も、
read.cgiがやっちまおうか(w
スレ一覧の元データがどこにあるかは知らんけど。
>>130 復帰の時には /dat/...dat を更新日時順にリストアップする。
それ以外(通常)の時は、bbs.cgiがage,sageを一々判別して
リストを更新する。
。。。ということのはずです。
>>131 生datと違って元サイズを取得できる
わけじゃなし…(涙
こうなったらどこかに独自の
「あぼーん追跡スコアボード」を実装
しようかしら(w
>>132 う。bbs.cgiが握ってるのか…
もし独自に実装するとしたら、こんなんかな。
・indexのスコアボードを持つ。
・read.cgiが呼ばれたときに、最終not sage時刻を
取得し、スコアボードに挿入
・ときどき、/dat/のmtimeを取得し、リスト再生成。
135 :
369 ◆3XTuRnAc :01/08/29 02:29 ID:TkQkeuao
>>124 サーバーから消えてます>bbs.cgi
ところで今晩はもう、テストの機会はないのかな? 夜勤さん、忙しいみたいだし…
>>137 おそらく。明日(今日)は明日で、東京でひろゆきさんたちとお話し合いでしょうし。。。
あぼーんの特徴:日付欄に「あぼーん」がある
透明あぼーんの特徴:......行数が変わるだけ??
ソースよく見たら、.datをロックしてない… mmapにすると、あぼーんの瞬間などに 道を踏み外して氏んだりする事故が0じゃない予感。 bbs.cgi側でどんなロックを行ってるか 聞かないと、うかつに手を出せぬ。
140 :
デフォルトの名無しさん :01/08/29 02:36 ID:npmpuEU2
>>135 消えていますね。保存したのでアップできるけど、
bbs.cgiをアップするのはやめたほうがいい?
>135 いわゆる 17 スクリプトじゃないの? それ以外の bbs.cgi はないような。
142 :
デフォルトの名無しさん :01/08/29 02:41 ID:nZtnifzg
### bbs.cgi ver 2.31 (2001/08/22) ってやつだったよ。 17 スクリプトってなに? 解説きぼーん
143 :
デフォルトの名無しさん :01/08/29 02:43 ID:npmpuEU2
144 :
デフォルトの名無しさん :01/08/29 02:44 ID:e.DANeaQ
>>141 > いわゆる 17 スクリプトじゃないの?
そのようです。
145 :
デフォルトの名無しさん :01/08/29 02:46 ID:npmpuEU2
んと、今回の一連でもどこかであがった、5月くらいにもあがっていた、 そんなbbs.txtもってますけど、一時的にアップしましょうか?
147 :
デフォルトの名無しさん :01/08/29 02:47 ID:Tnne8bxg
今日は寝るす。鬱だ氏のう
>>146 よくよく思い出したら、どこかの掲示板にいつもうぷされてる感じだった、当時は。
>>148 おつかれさまです。
150 :
%95 :01/08/29 03:01 ID:uqhD7TfA
>>149 sageやってくださったようですね。お疲れ様でした。
アンカー外してバイト数減らすことを考えていたのですが、
fontタグをつけなくてはだめなのですね(^^;
mod_gzipがなくなったら、きついですね・・・。
152 :
%95 :01/08/29 03:05 ID:uqhD7TfA
明日、必要な人がいたらbbs.txt一時的にあげます。
たぶん本物だと思うので。かなーり古いけど。
フローは把握できると思われ。
# 誰か他の人もうぷできると思うけど、いちおう(^^;
>>150 たぶん(絶対)他の方(^^;
>>152 不可視スレは、立てるときにスレリストに載せず、その後はageてもsageても
スレリストにのらない。ただし、いったん復帰すると普通のスレと一緒。
#これがなぜだか、むしろ疑問。
sage専スレは、立てるときは不可視と一緒。ただし、その後必ず強制的にsageが
代入される。復帰時にはあがるけど、その後はまた下がり続ける。
作業中断中...。 正直、どの改良が一番転送量を抑えられることができるのかが分からなくなってきた...。
155 :
Sherry ◆RKMbxbuc :01/08/29 03:16 ID:RKxEDv6s
>>153 bbs.txt って,Perl ですか?
>>155 ええ。キャ○プ情報とかもずらずら書いてあるやつです。
157 :
Sherry ◆RKMbxbuc :01/08/29 03:25 ID:RKxEDv6s
>>156 なるほど,どうもです.
Perl なら色々お手伝いできそうな気が.
bbs.cgi のスレも読んでみます.
とりあえずは,ログの解析が先でしょうね.(^^;
手探りで変えまくるとユーザーが混乱して転送量増える気もしますし...
>>154 10080あたりで、mod_gzipいれたApache走らせるのは、反則なんでしょうなぁ。
read.cgiだけでできることといったら。。。うぅ
>>157 連続スマソ
ログの解析して分析して…ってのも正論だと思うのですが、
もしや、今の状況はそんなこと言っている場合ではなく、強権的に
ユーザーを選んでしまうべき時なのかな、とも思われ。。。
# ユーザーが混乱しても、reloadと実況だけ徹底排除すれば何とかなりそう。。。
いや、それを思い切り提案するだけの自信は、ないんですけどね。
とりあえず てすとさんの-DRELOADLINK はやった方がいいと思う。 read.cの800行目あたりの html_reload(lineLast+1); を html_reload(lineLast); にすれば問題ないでしょう。 デザインはr2chhtml.hのR2CH_RELOAD、 個人的には線やらcenterやらは要らないと思う。
> 強権的にユーザーを選んでしまう 言いたいことは分かるような気がするけど、 強権的に選ぶにしても(どうやって選ぶのかわからないけど)、 多少は調査しないととんちんかんな選び方してしまうと思うけど…… ログの分析ってそんな時間かかる? かかるならまあヤマカンでやるよりしょうがないね。
164 :
デフォルトの名無しさん :01/08/29 03:52 ID:xabQXNSU
転送量を多くしてサーバーに負担かけるニダ! チョパーリにIT先進国の力を見せ付けるニダ! __ ________________ .∨ カタカタ____ ∧_∧ ....||\ LG\ <丶`∀´> || | ̄ ̄ | ┌( つ/ ̄||/  ̄ ̄/ |└ ヽ |二二二」二二二二二二二二」  ̄]|__7_7 .| || | || / ̄\ / . || / || ◎ ◎..[____|| .[__||
>>123 >>162 入れました。
「最新レス」の時は常にnofirst=trueでいいと思うのだけど、どうでしょう。
>>163 ログはあった方がもちろん良いですが、ログが提供されるかどうかがまず問題で。
次に、提供されたとしても、分析してできることは、既存のニーズには対応
することが主で、おそらくそれだけでは、2ちゃんねるの存続に充分ではない。
つまり、既存のニーズをぶちこわして何かをやることも必要になる。
その時は、何よりプロパガンダ(?)が必要かなと。
「これしか2ちゃんを残す道はないんだよ」って。
>>165 賛成です。
>>xxx-yyy のときも nofirst=true がいいと思います。
168 :
:01/08/29 04:04 ID:52nNYnD.
ここではIDの生成方法を変更することはできないんでしょうか? 間接的に投稿者のIPがわかってしまう事があるんですけど。
>>166 強権的な選択って、もう管理サイドで行われている。
板すでに半分くらい閉鎖してるわけだから。
はっきりいってもう潮時だけど、
まだねばりたいんなら、やっぱり技術サイドとしては
科学的なアプローチをとるべきと思う。
そうすれば、その経験が縮小2ch、もしくは
2chの次の何かで生きてくるかもよ。
>168 どんな方法にしても brute force されたら同じ。 桁数を今より増やせばより安全になるが。
>>167 >>xxx-yyy形式のリンクはbbs.cgi担当だからこっちでは簡単にいじれないです...。
(まだ-DCUTRESLINKのソースをまともに読んでいない)
>>168 IDもbbs.cgi担当です。あと日付欄も。
172 :
デフォルトの名無しさん :01/08/29 04:10 ID:5V.Ejvn.
>>169 はい。ごもっともです。
ログ分析という科学的なアプローチがとれない場合、ログ無しでもユーザー行動を
分析して次善の科学的アプローチを、って程度のことです。
>>171 -DCUTRESLINKの要領で、最後の &nofirst=true をとっぱらっちまおうと。
>>172 あれ、
>>78 へのリンク先が真っ白。。。串通しても。。。うちだけかな。
175 :
デフォルトの名無しさん :01/08/29 04:18 ID:5V.Ejvn.
>>173 レスを100番ごとに分けて、それぞれにリンクを貼るという奴です。
>173,174 "711個のスレッドがあります"っていうスレ一覧が、表示されます。 ブラウザ(ネスケ)のjavascript onにすると、さらに別窓が生成されて広告がでました。 いちお、報告まで。
>178 で、スレをクリックすればどういう UI か分かるはず。 広告は virtualave だから仕方ない。
>180 批判要望あたりを見ていると、 トップページから順に降りて見ている人が多いみたい。 常連よりも一見さんの方が多いのかね。 常連なら板にブックマークするだろうということからの推測だが。
>181ブックマークしてたところが消滅したんで上から順に…
>182 ああ、なるほど。批判要望でも見ないと閉鎖の事実すら気付かない。 URLが変わったのかとトップに行ってみる。ありえる行動だ。 いっそのこと2chのトップページを閉じればだいぶ転送量減りそうだな(w
184 :
:01/08/29 04:46 ID:ku662J4.
>>183 そうだな。ドラクエもメモリなくてオープニングがなかった奴があったよね。
>>183 index2.htm[l]の自動選択CGIをはやく採用して欲しいです(涙
>181 1年ぐらい2ch使ってるけど、top pageから降りてました。 だから bbsmenu復活は嬉しかったのに... で、100番ごとanchor案だと、anchorがならぶ分だけでかくなるけど いいのかしらん? 全体的な trafficはヘルと信じたいけど.. <a href="../test/read.cgi?...">1-</a> <a href="..">101-</a> みたいに。 # でも PATH_INFOが使えると <a href="st=1&to=100">1-</a> <a href="st=101&to=200">101-</a> でいいのか。
>>186 その辺はどっちみちログ解析しようが何しようが
いいか悪いかわかりっこないから、
思い切ってやりなよ。多分減ると思うよ、俺も。
188 :
こぴぺ :01/08/29 04:52 ID:lWwEqNwY
398 名前:夜勤 ◆D69Zsbfg 投稿日:01/08/29 04:27 ID:BK1gE7f2 うげっ、bbsmenu.html もどしたら、それだけで 2.5Mbps 位増えた。 明日のピーク前に、また小さいやつにもどさなきゃ。。。
190 :
考える素人 :01/08/29 05:05 ID:f4hB04xU
<a href="../test/read.cgi?..."> って <a href=?...> とかにしちゃうとまずいんですか?
名前欄とメール欄の末尾の空白は、そのまま取り去っちゃ駄目。 妙な文字列を書きこめば表示が乱れるから、空白を入れてあるはず。 荒らされたログとか、まだまだ残っているはずだし、 「最後の文字がシフトJIS1バイト目であるか」の判定は絶対必要。 r2chhtml.hの #define R2CH_HTML_RES_MAIL \ "<dt>%d 名前:<a href=\"mailto:%s\"><b>%s</b></a> 投稿日:%s<dd>%s<br><br>" → "<dt>%d 名前:<a href=\"mailto:%s \"><b>%s </b></a> 投稿日:%s<dd>%s<br><br>" #define R2CH_HTML_RES_NOMAIL \ "<dt>%d 名前:<font color=green><b>%s</b></font> 投稿日:%s<dd>%s<br><br>" → "<dt>%d 名前:<font color=green><b>%s </b></font> 投稿日:%s<dd>%s<br><br>"
>190-191 試してみました・・・IEだと ? 以降置換だけどNN4だとダメなんですね。 UA判別して振り分ける・・・ほどの事でも無いか、すいません。 ところで、metaタグのShift_JISってヘッダで吐く事に決定ですか? 圧縮効かないヘッダを太らせるのも善し悪しな気も・・・
194 :
191 :01/08/29 07:34 ID:5V.Ejvn.
ヽ(`Д´)ノ せっかく改造したのに、どこにソース置けばいいのかわかんないよ ウワァァン!!
195 :
191 :01/08/29 08:06 ID:5V.Ejvn.
196 :
 ̄ー ̄)ノ :01/08/29 09:11 ID:c40YJ4Sg
197 :
デフォルトの名無しさん :01/08/29 09:28 ID:an2iF6go
read.cgiじゃなく別のcgiでやった方がいいかもしれないけど
日付と時間を指定したら それ以後の書込みだけ返すか
書込みへのリンク(read.cgiを呼ぶ)を返すのはどうかな?
で、クッキーを食べさせて前に見た時間以後のだけが見えるようにするの
ttp://piza2.2ch.net/tech/subject.txt を上から順に開いて該当レスがないか20スレ検索したら中止って感じで
これなら何か変わってないかなって見る為に subback.htmlやindex2.htmlを
覗く頻度が減ると思うんだけど
199 :
Sherry ◆RKMbxbuc :01/08/29 09:35 ID:oahd3UTQ
>>159 スマソ,書き込んだ後寝ちゃいました(^^;
>>160 強権的に選ぶとしても,現状を正確に把握することは必要ではないかと.
何を切り捨てれば目的の帯域に近づけられるのかは
ログ等解析してみなければなんともいえないような.
色々なバージョンを作って手当たり次第に試すのは非効率というか‥‥‥^^;
>>163 ログがゲットできれば1日以内にある程度の解析は出来ると思いますが‥‥‥.
200 :
デフォルトの名無しさん :01/08/29 09:50 ID:0hRF7fDs
ログは無いことになってるんですが。…
201 :
Sherry ◆RKMbxbuc :01/08/29 09:51 ID:oahd3UTQ
>>159 bbs.cgi って,現状でも公開したくないものなんですか?
なら,メールとかでやりとりした方が良いと思うのですが‥‥‥.
必要ならメアド晒すので.(^^;
202 :
191 :01/08/29 09:56 ID:ESd7BW2o
ヽ(`Д´)ノ
>>198 ありがとよ! ウワァァン!!
read2ch.hを見ればどんな設定ができるかうすうすわかると
思うけど、CHUNK_NUMごとに区切ったレスに飛ぶ anchorを
ずらずらつけるよ。それとは独立に「全部読む」「最新nレス」
を on/offできる。imodeのほうはどういう設計に
したらいいかわかんなかったんで触ってないよ!! ウワァァン!!
203 :
Sherry ◆RKMbxbuc :01/08/29 09:57 ID:oahd3UTQ
>>200 ・・・そうなんですか?(汗)
read.cgi にログ出力機能を組み込む方が早い?
IP隠して(でも同じIPは識別できるレベルで)バイナリで出力とか?(^^;
read.cgi と dat直読み の比率は出ませんが...
>>203 ソース見ればわかるけどread.cgiにログ出力の部分が元からあったみたい
205 :
Sherry ◆RKMbxbuc :01/08/29 10:17 ID:oahd3UTQ
>>204 ソース確認しましたが,zz_query_string はコメントアウトされてますね.
となると,例えば全ログ読みの負荷とかは一切わからないのではないかと.(^^;
もう少し詳しい情報を出力しないと解析には役に立ちそうにないですね.
206 :
デフォルトの名無しさん :01/08/29 10:28 ID:5fCBnuag
mod_gzipが否決されたときのために: 1.2chブラウザ用にgzip.cgiかなんかをつくる 2.要するに、引数のファイルを圧縮して送信するcgi。 3.2chブラウザ作者にdat初取得時にはこのcgi介するようにしてもらう、 とかはどうよ?
207 :
名無しさん@揚げ足 :01/08/29 10:41 ID:lTYEA056
このアクセス数ではロックもかけずにログ取りをする現状のlogOut はまともに使えないかと。 ロックをかけたらかけたでまたえらいことになりそうだし...
>>206 そのCGIなら、ずいぶん前に
ftp://210.170.170.131/incoming/perler/ にアップロードしたはずです。
index2.c.1というのがそれです。
現在は、index2.html専用ですが、PATH_INFOか何か引っ張ってくるようにすれば
汎用化は可能でしょう。
こいつは、If-Modified-Sinceもみますので、index2.htmlに適用すれば
かなりのトラフィックうが削減できるはずです。
現在、index2.htmlはリロードしたらリロードした回数だけContent全体を
送りなおしますからね。。。
210 :
デフォルトの名無しさん :01/08/29 10:53 ID:6wtO5bLA
211 :
デフォルトの名無しさん :01/08/29 11:08 ID:5WgxEf6Y
がいしゅつだったら、ごめん。 で、いま、index2 って、手つかずなの? 一番使用頻度高いと思うんだけど。
subback.html もそれ以上に高いらしいから バランス的には index2.html と subback.html に手をつけないといけない感じ。 >209の index2.c.1 で圧縮しちゃえば半分になりそうなんだけどなあ・・・・ もっと効果の大きい方法はないかなあ
>>212 この2つが急務だと思います。
read.cgiやbbs.cgiで削れる量は限界に近づいていますので、45%→66%削減は
難しいかもしれません。
2ch側の協力が必要なのがネックといえばネックですが。。。
この辺、昨日は夜勤さんが忙しくて手が回らなかったんでしたっけ?
index2.htmlとsubback.htmlの2つを圧縮+If-Modified-Since対応すれば、
全体で66%削減も可能だと思います。
私の環境で圧縮してみた限り、ファイルサイズとして、gzipで70%〜80%くらい
削れますね。
If-Modified-Sinceとの併せ技で、この2ファイルについて80%のトラフィックの
削減は達成できると思うのですが、いかがでしょうか?
214 :
デフォルトの名無しさん :01/08/29 12:03 ID:j/vYHKaU
>>213 板ごと閉鎖とあわせれば、とりあえず9月いっぱいで50Mbpsの維持は出来そうですね。
とりあえず、夜まで運営側=ひろゆきさん、の答えはなにもないでしょう。
いまさら遅いと思いますが、read.cgiにおいて 10秒以内のリロードを禁ずる場合、 Last-Modifiedの最後の秒数の1桁目を全て0にするだけで 簡単に実現できましたね。。。 1分以内なら、秒を全部00に統一すればいいだけ。 Last-Modifled文字列を生成する段階で、 #define RELOAD_FREQ 15 // 15秒おき更新 time_t last_mod; last_mod -= (last_mod % RELOAD_FREQ); ってしてやれば、任意の秒でも設定できますし。
>>215 すみません、これ私です。
昨日、出かけてたため、夜勤さんに頼むタイミングを逸したのですが、
誰か夜勤さんを見かけたら、この話(index2.htmlとsubback.html圧縮&リロード禁止案)
を持ちかけてみてもらえませんか?
217 :
デフォルトの名無しさん :01/08/29 12:16 ID:ixxpOU.2
>>216 夜勤さんは今日夕方話し合いのために上京されるそうなので、その会談で存続が決まった場合
にどうするかということになると思います。
219 :
191 :01/08/29 13:57 ID:ESd7BW2o
bbs.cgi改良スレで言ったほうがいいのかも >index2.cgi # ただ、perlの方がいいのかもしれない..
220 :
191 :01/08/29 13:58 ID:ESd7BW2o
ああ、もう向こうに書いてあるジャン。 鬱。
ちと忙しいので簡単なレスだけですが。
>>201 bbs.cgiを今の運営側が公開しない以上、一応その意向は尊重したいので、
ずっと鯖にあげっぱなしは嫌だなぁ、と。
メールでなくちゃいけないって程ではありません。私の気持ちとしては。
適当に声掛けてくださいませ。
>>216 お疲れさまです。index2.cの件も含めてちゃんと把握してますのでご安心を(^^
今日は夜勤さんお忙しいでしょうから、時機はなかなか得られないと思いますが、
機会があればまとめて懸案をお願いするつもりです。
index2の下の発言表示って必要ないと思われ。 実際、その人の興味ないスレが表示されて無駄がおおいし。 index2.htmlを「看板と注意とスレリストの初めのほう」にして軽くすれば、 bbsmenuからたどってきている人も多いみたいだし、効果ありそう。 subbackの尻の方が必要ない人も取り込めるだろうから、 subbackのアクセスも減らせるかと。 index2の下みたいなのが必要な人向けにはindex3でも用意すればなお可。 あと、ここの担当でないけど、書き込み後にindex2にもどるもの無駄。 大抵の人はその後、再び目的のスレに飛びなおすと思われ。 下がってるスレにsageレスすると超意味無しだし。 index2軽くすればこいつもある程度改善。
>>221 ややスレ違いですが。。。
index2.cの件、作業過程もすべてまとめて、批判要望にスレ立ててしまいましょうか。
subback.cも同様にできるなら、合わせて。
bbs.cgiと復帰スクリプトが吐くindexファイルを index3.htm と index3.html に
指定しなおして、index2.c.1 -> コンパイル -> index2.html とすればいいのかな。
bbs.cgiとかを書き直すのが面倒 && rewrite module 入っているなら、index2.htm[l]
へのリクエストを index2.cgi へ rewrite してもいいでしょうが。。。
どなたか、スレを立てる場合に >1 に書くべき完璧な手順を練って、
できれば批判要望でスレ立てちゃってくださいませんか。。。
225 :
音楽侍 ◆NtVkSITE :01/08/29 15:05 ID:j/vYHKaU
>>224 いちおう、マァヴさんがDolBackyさんにICQでメッセージ入れてくださってます。
ただし、Backyさん、cのコンパイルできないんじゃないかとマァヴさん、おっしゃってます。
perlの方が良さそうに思います。
226 :
音楽侍 ◆NtVkSITE :01/08/29 15:06 ID:j/vYHKaU
>>224 Backyさんはじめ、みなさんこの板も見にいらしてるようなので、批判要望よりここの方がいいと思います。
ギャラリーも少なそうですので。
>>225 だとすると、誰かindex2.cをPerlで書き直せますか?
ちょっと忙しいので。。。
>>224 .htmlをCGIと見なすのが面倒そうですね。
<META>のrefresh使って、強制的にindex2.htm(l)から、index2.cgiへジャンプさせる方が
良いように思います。
228 :
カラムーちょ :01/08/29 15:15 ID:0KsHrNg6
問題 @アフリエーションプログラムを具体的に考える。どのようなサイトと連携をとればよいか? AハイブリッドECモデルを考えるとすると,どのような既存店舗と連携してマーケティング展開をしたらよいか?
229 :
Sherry ◆RKMbxbuc :01/08/29 15:27 ID:oahd3UTQ
>>221 とりあえず今からしばらくはスレを見るようにします.
あげていただければすぐにダウンします.
----
ところで,.cgi 以外の拡張子を cgi として動かすことは
できるのでしょうか?
(<FIles "dat"> SetHandler cgi-script とか可能?)
可能なら,dat 以下のディレクトリを cgi 経由にするだけで
かちゅ〜しゃ等のアクセスのgzip可が可能じゃないかと
思うのですが‥‥‥.どうでしょう?
あのぉ...... #ifdef RAWOUT else pPrintf(pStdout, "Content-type: application/octet-stream\n"); #endif っちゅうのですが datを直接表示させた時のMIMEは"text/plain"になってるんで これに合わせておいた方がいいんじゃないでしょうか......
>>229 では、いまから210.170.170.118/incoming/ のほうに。。。
>>227 >>229 AddHandler cgi-script .html
AddHandler cgi-script .dat
みたいなこと?
>>225 -226
了解です。皆さんお疲れさまです。
>>227 >>229 AddHandler cgi-script html
とか、RewriteEngine ON できるなら楽そう。。。
どのApache moduleがはいっているかによりけり
236 :
Sherry ◆RKMbxbuc :01/08/29 15:35 ID:oahd3UTQ
>>231 -232
取得しました.
$ md5sum bbs.txt
b598242a0e6fdab3c46604903c274f4f bbs.txt
でOkですよね.
どうもありがとうございます.
全部CGI経由にするの? 懐疑的な意見も出てたみたいだけど。
>>236 はい(^^
消しましたが、また需要があるときにはうぷしますです。
239 :
Sherry ◆RKMbxbuc :01/08/29 15:39 ID:oahd3UTQ
>>233 そんなイメージですが,
AddHandler cgi-script .dat
だけだと,ApacheのDirectoryIndex(ファイル一覧)は
圧縮されないので,
dat というファイルを cgi と見なしてしまい,
2ch.net/tech/dat/xxxxxxxx.dat
のリクエストを,PATH_INFO に '/xxxxxxxx.dat' が
セットされるイメージで呼び出せればいいな,ということです.
Files と,SetHandler 使えば,任意のファイルを
CGIとして実行できますので‥‥‥.
(これはAllowOverride権限さえあれば現在のモジュール構成で
使えるはず(^^;)
>>234 はい。それで良いと思います。
>>235 とりあえず今は「できない」が前提に話を進めた方が良いと思います。
241 :
音楽侍 ◆NtVkSITE :01/08/29 15:41 ID:j/vYHKaU
>>239 .htaccess効いているんですかね?
httpd_confいじらせてくれないんでしょ?ハリケーンさん。誤認ですかね?
>>240 そうですねぇ。
>>241 /kako/ が認証性になったのは、(何らかの意味で).htaccess が利用可能って
ことに見えますが、どこまで使えるかは。。。なんとも。
>>241 .htaccess前提に話を進めると、また後で使えないと分かって開発が
振り出しに戻る可能性があるので、最初から「出来ない」ものとして
開発したほうが良いと思います。
mod_gzip導入も、週末って話が随分と難航してますしね。。。
246 :
デフォルトの名無しさん :01/08/29 15:51 ID:C22Ccgng
247 :
音楽侍 ◆NtVkSITE :01/08/29 15:55 ID:j/vYHKaU
というわけで、index2.html最適化、というか転送効率化についてはこの板がいいでしょう。
批判要望に立てると
>>246 みたいのに埋められちゃいますので。
今の所 index2.html は圧縮されてないけど index2.htm は圧縮されてるわけで cgiを使ってもこれを自動でするだけの効果しかありませんよね? cgiを無理に導入しても PROXYを使ってる人や無形キャッシュが効かない 場合が増えるだけのような気がするんですが?
249 :
音楽侍 ◆NtVkSITE :01/08/29 15:59 ID:j/vYHKaU
名無し娘。さんスレ立てられますでしょうか? 変わりに立てましょうか?
>>249 あ、この板に立てるんですね。
少々お待ち下さい。。。
>>248 圧縮対応のブラウザには圧縮で送り、そうでないブラウザには非圧縮で送る、と。
今は、圧縮対応の人も、ほとんど.htmlの方を見ちゃっていると思いますので、
効果は大きいかと。
>>249 -250
read.cgiだけでいきますか?
subback.html も考えるなら、汎用型の .htm .html 振り分けプログラム
ということにしましょうか。
252 :
音楽侍 ◆NtVkSITE :01/08/29 16:10 ID:j/vYHKaU
index&subbackでいいんでないでしょうか?
253 :
名無し娘。 ◆vP.bOZFQ :01/08/29 16:12 ID:xeUGWGbY
>>252 bbsmenu.html とか(^^;
ま、元々がほとんど汎用型CGIみたいなもんですから、大きな違いはないでしょうね。
あとちょっとでスレ立ちます。
254 :
デフォルトの名無しさん :01/08/29 16:16 ID:mpzRuOK2
255 :
名無し娘。 ◆vP.bOZFQ :01/08/29 16:18 ID:xeUGWGbY
なんとなく、スレ立てるまでもないような気がしてきた(^^;
256 :
音楽侍 ◆NtVkSITE :01/08/29 16:26 ID:j/vYHKaU
DolBackyさん誘致スレじゃないんですか?(笑)
257 :
- :01/08/29 16:32 ID:7PMZ2b7Y
mod_negotiationを使うとVary:ヘッダが入るので事実上Last-Modified が効かなくなるという問題があります。
>>254 -my($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst) = gmtime(time);
+my($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst) = gmtime(stat($fname));
に思えるのですが、、、勘違いでしょうか。
>>259 ...ごめん、かなりいい加減だった。
statが返す形式覚えてない。。。
夜組のみなさん、index組のみなさん おつかれさます。 お待たせしました。 PATH_INFO対応がほぼ完了しました。 /read.cgi/tech/99899784/?ls=10 のように使える。 出力されるソースの可愛さをほめてあげてくれ♪ そろそろindex組に参戦しようかな(藁
実効性の程はよくわかりませんが、read.c でいう if (zz_http_encoding && strstr(zz_http_encoding, "x-gzip")) { gzip_flag = 1; pPrintf(pStdout, "Content-Encoding: x-gzip\n"); } の部分はどうしましょう。 if($http_encoding =~ /x-gzip/){ $gzip_flag = 1; $fname = $GZIPED_HTML; print "Content-Encoding: x-gzip\n"; }elsif($http_encoding =~ /gzip/){ $gzip_flag = 1; $fname = $GZIPED_HTML; print "Content-Encoding: gzip\n"; }else となるでしょうか。
ついでに&MAIL問題もなんとかなりませんかね? &を&に変換するだけなんでHTML4.01的にも問題ないはずですが、 余計なバグ埋め込む事になっちゃうでしょうか?
>>263 error関数の投稿日は実時間を埋め込むんでは?
>>256 >1 に書くべききっちりした文面がかたまりません。
・bbs.cgiが出力するファイル名index2.htm[l]をindex3.htm[l]あたりにする
・復帰スクリプトが出力するファイル名も、同様に変える
・index2.htm[l]はmetaでindex2.cgiにとばす
・index2.cgiからindex2.htm[l]を吐き出す(これはindex2.cgiリリース時にこっちでやる)
・subback.htmlやbbsmenu.htmlもやるときは、その手順
で、漏れはないでしょうか。。。皆さんのご意見をお待ちします。
>>266 名前欄の&だけは&に変換すると。。。
&MAILが"楽しい"か"楽しくないか"の問題かも(笑
>>269 &の置換までするのはやりすぎと思われ…
どのみちindex2.htmlには手が出せないし。
-------------------------------------------------- #!/bin/sh echo 'Content-Type: text/html Content-Encoding: bzip2 ' /usr/bin/bzip2 -c hoge.html -------------------------------------------------- なんていうCGIを使ってちょっと実験してみました IEやネスケは案の定ちゃんと表示できませんでしたが Lynx2.8.4rel.1aは何も手を加えずにそのまま見られてしまいました "Content-Encoding: x-bzip2"でもOKでした ただ 元のままのLynxでは"Accept-Encoding"にbzip2が入っていないので -------------------------------------------------- --- lynx2.8.4rel.1a/WWW/Library/Implementation/HTTP.c.org Sun Jul 15 11:06:16 2001 +++ lynx2.8.4rel.1a/WWW/Library/Implementation/HTTP.c Wed Aug 29 17:12:35 2001 @@ -675,8 +675,8 @@ first_Accept = FALSE; len = 0; - HTSprintf(&command, "Accept-Encoding: %s, %s%c%c", - "gzip", "compress", CR, LF); + HTSprintf(&command, "Accept-Encoding: %s, %s, %s%c%c", + "bzip2", "gzip", "compress", CR, LF); if (language && *language) { HTSprintf(&command, "Accept-Language: %s%c%c", language, CR, LF); -------------------------------------------------- っていう変更をしてやればOKかな? # しかし"Accept-Encoding"がハードコーディングになっていたとは......
272 :
191 :01/08/29 17:36 ID:THYp8YGg
>>269 index.2.cgi みたけど、
・&error って、Content-Encoding: gzip が出たあと平文で出ることがある
もっと error checkを早く、headerだすまえにやるべき
・最初の statのあとの -s $fname とかは -s _ の方が軽いと思われ
・gzippedなやつが "index?.htm" っていう命名規則は変えられない?
やはり素直に index2.html.gz とかのほうが分かりやすくていいと思う
273 :
デフォルトの名無しさん :01/08/29 17:44 ID:NuzxCJ3M
>>269 # index2.cgi.2
Location もしくは refresh タグでふり分けるだけじゃ駄目なんすかね。
>>268 <index2>
・bbs.cgiをとめる
・mv index2.htm index3.htm; mv index2.html index3.html;
・bbs.cgiが出力するファイル名 index2.htm[l] を index3.htm[l] にする
・復帰スクリプトが出力するファイル名も、同様に変える
・index2.htm[l]は
>>244 のように記述する
・index2.cgi の $GZIPED_HTML $PLAIN_HTML を指定する
<subback>
・bbs.cgi をとめる
・mv subback.html subback2.html;
・bbs.cgi が出力するファイル名 subback.html を subback2.html にする
・bbs.cgi が subback2.htm(gzip圧縮) を作るようにする
・復帰スクリプトが出力するファイル名も、同様に変える
・subback.htmlは
>>244 のように記述する
・subback.cgi の $GZIPED_HTML $PLAIN_HTML を指定する
<bbsmenu.html/bbstable.html>
・mv bbsmenu.html bbsmenu2.html; mv bbstable.html bbstable2.html
・それぞれを gzip 圧縮したファイルを作る
・bbs[menu/table].html は
>>244 のように記述する
・bbs[menu/table].cgi の $GZIPED_HTML $PLAIN_HTML を指定する
>>257 MacのIEはgzipに対応してません。
276 :
名無しさん@揚げ足 :01/08/29 17:56 ID:lTYEA056
index.htmを圧縮サイズで比較すると、限界ぎりぎりサイズのレスで荒らされるので サイズは常にindex2.htmlを対象ということでどうでしょう? -if(-s $fname > $MAX_FILESIZE){&error("このindex2.htm大きすぎます。")} +if(-s $PLAIN_HTML > $MAX_FILESIZE){&error("このindex2.htm大きすぎます。")}
277 :
- :01/08/29 18:03 ID:7PMZ2b7Y
>275 そうでしたか。じゃ、index2.cgi が Accept-Encoding: を認識すれば平気ですね # read.cgi でも gzip 化けが起きてるのかと勘違いしたす
278 :
aborn ◆OonrVZq6 :01/08/29 18:06 ID:1pRiIT.2
>>277 一応、MacのIEは対応もしてないAccept-Encodingにgzipを入れるほどヴァカではないですので、大丈夫だと思いますが、
串なんか使ってるところで、串がgzipエンコードされたデータをキャッシュしてたりするとダメですね。
# って、Pragma: no-cache吐いてないけど大丈夫なんだろうか
>>278 "Pragma: no-cache"しちゃったらひょっとして"Last-Modified"の
効果がなくなっちゃったりしない? 記憶が確かじゃないけどProxy向けの
制御用ヘッダがあったような......
>>279 あれ?そうでしたっけ…調べてみます。
試したところ一応効果はなくなってないみたいですが…
>>279 あー、Pragma ではなく Cache-Control ですね。どうも。
Cache-Control: no-cache, no-store
でも入れてくれればproxyが非対応ブラウザにキャッシュされたgzipデータを吐くのを防げますね。
# 自分の所も修正しなきゃ^^;
>207 IE 6.0.2600.0000 / Win2k index2.htm、 read.cgi 特に問題なし。 HTTP_ACCEPT_ENCODING = gzip, deflate HTTP_USER_AGENT = Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)
285 :
UNIX板とマルチレスで二重カキコと判定された :01/08/29 19:34 ID:pswH38Zg
ZLIB使用の時にContent-Length吐くようにするのがほぼでき上がったけど 圧縮しないときは、吐かないでいいの?
read.cgi の障害報告。対処法は未考。
一度"Internal Server Error"や"Can't Exec"が返ってきた場合も、
それ以降に書き込みがなければ、同じリクエストに対して304を返すため、
リロードのたびにブラウザは何度も真っ白な画面を表示し続けます。
リクエストをちょっと変えれば問題ないのですが、zlibの動作いかんによっては、
CPU負荷、DISK負荷をもっと減少させないと、苦情が続出するかもしれません。
まして、dat吐き出しをすべてread.cgiが負うとなると。。。
ところで、
>>274 はこれでいいですかねぇ。。。
DolBackyさんに連絡とれる方いらっしゃったら、一度読んでいただきたく。
>>287 zlibがなかったんで今はfork()してgzipを呼び出してるんですよね?
zlibにすればfork()しない分"Couldn't spawn child process"には
なりにくいと思いますけど
290 :
音楽侍 ◆NtVkSITE :01/08/29 19:56 ID:EqArAK56
やっぱスレ立てた方がいいですよ。
1で内容説明。
2で概要説明
3に各ファイルのリンク、
>>274 を4、以降で、
>>274 の詳細を解説
位にしておいてあげないと、わかりにくいですよ。
292 :
音楽侍 ◆NtVkSITE :01/08/29 19:58 ID:EqArAK56
ここまでのスレッドの流れを追って理解し、作業をよろしく、Backyさん、っていうのは、ちょっと・・・ って思います。しつこくてすいません。
>>289 おっしゃるとおりです。zlibにしてももしや…ってことで。
>>290 そうですね。ただ、如何せん自信がなくて。
まだ若干の案が実装されないままのようですし。。。
どなたも作業されていないなら、がんばって実装しますが。。。
>>292 いえいえ(^^;
単刀直入にいうと
・
>>274 の方向性は正しいか、漏れはないか
・index2.cgi.1 はこれで完成か
の決断が欲しいんです。
スレ立ててから話が混線するのは、どうしても避けたいので、後手になっています。
index2.cgi とは違う路線で、 subback.html を吐き出す機能を read.cgi に実装しました。 すでに commit してあるので、 cvs 参照できる方は追試きぼんぬ。 read.cgi/tech/ で、スレ一覧が取れます。
>>47 read.cgiが多重起動されてる度合いに応じて リロード強制304の時間を調整してはどうだろうか?
299 :
音楽侍 ◆NtVkSITE :01/08/29 20:26 ID:EqArAK56
>>299 んと、metaのrefreshが効かない場合に備えて、だと思います。
また、content="0; にすることも考えたのですが、ブラウザの
バックボタン連打で戻ることが不能になってしまうため、保留しました。
履歴を直接たどれば戻れますが…どちらがいいでしょうか。
>>299 refreshを実装してないブラウザ対策です。
あとrefreshを0にすると、ブラウザによって「戻る」ボタンが効かなかったり、不具合が結構出ますよ。
1秒でもいいから、refreshにインターバルを設けるのを提案します。
304 :
音楽侍 ◆NtVkSITE :01/08/29 20:30 ID:EqArAK56
index2.cgi.2のとばし先のファイル名が my $GZIPED_HTML = "index2.htm"; my $PLAIN_HTML = "index2.html"; になってます。 index3.htm[l]では?
306 :
298 :01/08/29 20:31 ID:ps40cZfg
Content-Length吐くなら、2048byteの空白出さないでいいんですよね。 gzputcで空白出すとこ削ってくださいな。
>>303 index2.cgi.2 の方、作業中でしょうか。
あまり自信がないのでやってくださるならお願いしたいのですが。
308 :
音楽侍 ◆NtVkSITE :01/08/29 20:34 ID:EqArAK56
>>301 >>303 なるほど。reflesh=1は同意です。
リフレッシュ効かないブラウザ用の対応・・・ですか。
了解です。
見た目の問題(一瞬文字が見えるのはあまり好ましくない)ですので。
>>307 ちょっと忙しいので作業できないです。。すみません。
310 :
音楽侍 ◆NtVkSITE :01/08/29 20:36 ID:EqArAK56
あと、subback.cgiでしたか?も作成しておいてあげた方が親切だと思います。 DolBackyさんも消耗なさっておられるでしょうから。
>>309 了解です。お疲れさまです。
>>267 ですが、現コードでは実時間をとっていないようなので、エラーのために
わざわざ実時間取るのももったいなく、保留しておきます。
313 :
音楽侍 ◆NtVkSITE :01/08/29 20:39 ID:EqArAK56
314 :
302 :01/08/29 20:41 ID:ps40cZfg
libzがオリジナルじゃなくなったこと。あとは、 >新しいのをコンパイルする前に、zlib/libz.aを一度削除すること。
315 :
302 :01/08/29 20:42 ID:ps40cZfg
おっと、gzputc削るのは、ZLIBの時だけでした。スマソ
316 :
320 :01/08/29 20:44 ID:ps40cZfg
あほや、gzputcってZLIBの時しかつかわんじゃん。逝ってきま〜す。
>>315 うまくやると、直接deflate呼び出せるようにならないかなあ?
318 :
音楽侍 ◆NtVkSITE :01/08/29 20:48 ID:EqArAK56
作業概要 転送の帯域を抑えるため、各htmlコンテンツをgzipで提供するに当たり、 gzip対応しているブラウザにはgzip版を、非対応ブラウザにはテキスト版を送信するcgiを挟みます。 このことにより、ブラウザのトラブルを回避し、圧縮された各コンテンツを配給できます。 実装は以下の通り(index2.htmlの場合) index2.cgi導入 → cgi内部でgzip対応を判断 → 適切な内容を表示
319 :
302 :01/08/29 20:49 ID:ps40cZfg
あほ++、さらに320とか入れてるし。
>>317 >IEはヘッダにはAccept-Encoding: gzip, deflateと含めているにも
>関わらず、実際にdeflateでエンコードしたデータを喰わせても
>解釈できないです。
これって確認されてる?
321 :
音楽侍 ◆NtVkSITE :01/08/29 20:54 ID:EqArAK56
作業手順
<index2>
1)bbs.cgiをとめる
2)各ファイル名を変更する
mv index2.htm index3.htm; mv index2.html index3.html;
3)bbs.cgiが出力するファイル名 index2.htm index2.html を index3.htm index3.html にする
4)復帰スクリプトが出力するファイル名も、同様に変える
5)index2.htm index2.htmlは、以下のようにreflashでジャンプするよう記述する
<HTML><HEAD>
<META HTTP-EQUIV="refresh" content="1;URL=
http://xx.2ch.net/xxxx/index2.cgi ">
</HEAD><BODY>
<A HREF="
http://xx.2ch.net/xxxx/index2.cgi ">クリック</A>
</BODY></HTML>
322 :
音楽侍 ◆NtVkSITE :01/08/29 20:55 ID:EqArAK56
訂正。というか、細かすぎるかもしれませんが
作業手順
<index2>
1)bbs.cgiをとめる
2)各ファイル名を変更する
mv index2.htm index3.htm; mv index2.html index3.html;
3)bbs.cgiが出力するファイル名 index2.htm index2.html を index3.htm index3.html にする
4)復帰スクリプトが出力するファイル名も、同様に変える
5)index2.htm index2.htmlは、以下のようにreflashでジャンプするよう記述する
<HTML><HEAD>
<META HTTP-EQUIV="refresh" content="1;URL=
http://xx.2ch.net/xxxx/index2.cgi ">
</HEAD><BODY>
<A HREF="
http://xx.2ch.net/xxxx/index2.cgi ">クリック</A>
</BODY></HTML>
6)bbs.cgi を稼働状態に戻す
323 :
音楽侍 ◆NtVkSITE :01/08/29 20:56 ID:EqArAK56
<subback>
1)bbs.cgi をとめる
2)各ファイル名を変更する
mv subback.html subback2.html;
3)bbs.cgi が出力するファイル名 subback.html を subback2.html にする
4)bbs.cgi が subback2.htm(gzip圧縮) を作るようにする
5)復帰スクリプトが出力するファイル名も、同様に変える
5)index2.htm index2.htmlは、以下のようにreflashでジャンプするよう記述する
<HTML><HEAD>
<META HTTP-EQUIV="refresh" content="1;URL=
http://xx.2ch.net/xxxx/subback.cgi ">
</HEAD><BODY>
<A HREF="
http://xx.2ch.net/xxxx/subback.cgi ">クリック</A>
</BODY></HTML>
6)bbs.cgi を稼働状態に戻す
324 :
319 :01/08/29 20:58 ID:ps40cZfg
俺は,302じゃなかった。マジで鬱。 302さんcommitありがとう。そして、ゴメソ。
325 :
音楽侍 ◆NtVkSITE :01/08/29 20:59 ID:EqArAK56
>>319 このスレか過去スレに、
deflate対応してみた、
ってカキコがあったような気がしたので、
もしかして、うまく逝ったのかなあと
思いこんでたんだけど、
自身で追試はしていないす。
ためしにIISなサイトをたたいてみたけど、
Encodingしてくれなかった。してくれるって噂だったのに。
で、deflateじゃなくてinflateのような気がした…
タグは小文字にしませんか? いや、別にどうでもいい部分なんですが。
今CVSに入ってるのって"Content-Length"対応なんですか? gzipped_fwrite()が実行されないのに終了処理のところで if ( gzip_flag == 2 ) { fprintf(stdout,"Content-Encoding: x-gzip\n"); } else { fprintf(stdout,"Content-Encoding: gzip\n"); } fprintf(stdout,"Content-Length: %d\n\n",outlen); fflush(stdout); fwrite(outbuf,1,outlen,stdout); を実行するようなコードになってるっぽいですが......
gzipped_fwriteは、zlib/gzio.cが呼びます。
できれば、gzipされてないときも Content-Length吐いてもらえる ようにできませんか? squidにキャッシュされない原因は、これか?
333 :
329 :01/08/29 21:28 ID:iU.Fd0UU
334 :
音楽侍 ◆NtVkSITE :01/08/29 21:29 ID:EqArAK56
...そういえば、動作確認していない。
負荷はかからないので、どなたかperlのあるweb鯖で実験して
いただけませんか?
(あと、じつは /usr/local/bin/perl だったりしないか心配)
>>334 お疲れさまです。もうしばらくお待ち下さい。
ためしにExpiresを実装してみたものの、 どうも芳しい結果が得られない。 つぎcommitする際に殺したまま入れとくので どなたか追試きぼーーーんぬ
337 :
anony ◆3XTuRnAc :01/08/29 21:41 ID:2kMI.7hA
>娘。さん
午前0時回ると思いますが、家に帰れれば実験台になれるかも。
もしよろしければ、「実験に必要なファイル」をまとめて、
「実験に必要な手順」を簡単にでも良いですから書いてftp鯖に叩き込んでおいてくれれば。
・・・って、必要な手順は
>>320 -326ってことなら今から少しずつ予習しておきます。
#いまは会社にいないといけないんですよ・・・自分が直接絡んだところじゃないけど
#間接的に問題がでてて・・・・鬱。
338 :
音楽侍 ◆NtVkSITE :01/08/29 21:42 ID:EqArAK56
>>337 -338
音楽侍 ◆NtVkSITE さんの書いてくださったのをもとに、コピペ直前まで
編集してみたので、読んでみてください。
>>339 -341
340 :
名無し娘。 ◆vP.bOZFQ :01/08/29 21:55 ID:hNInjuxs
1.
index2.html など転送量削減案
転送の帯域を抑えるため、各htmlコンテンツをgzipで提供するに当たり、
gzip対応しているブラウザにはgzip版を、非対応ブラウザにはテキスト版を
送信するcgiを挟みます。
このことにより、ブラウザのトラブルを回避し、圧縮された各コンテンツを
配給できます。
実装は以下の通り(index2.htmlの場合)
index2.cgi導入 → cgi内部でgzip対応を判断 → 適切な内容を表示 → (゚д゚)ウマー
>>2 に必要なファイル一覧と概要
>>3 にインストール方法
341 :
名無し娘。 ◆vP.bOZFQ :01/08/29 21:55 ID:hNInjuxs
342 :
名無し娘。 ◆vP.bOZFQ :01/08/29 21:55 ID:hNInjuxs
簡単な実験方法は、 ・同一ディレクトリに xxxxx.cgi xxxxx_r.html xxxxx_r.html.gz を置く。 (xxxxx_r.html.gz は xxxxx_r.html を gzip compress したもの) ・ブラウザで xxxxx.cgi にアクセス。
>>343 あ、xxxxx_r.html は、適当な html ファイルでいいです。
よろしくお願いします。
345 :
音楽侍 ◆NtVkSITE :01/08/29 22:02 ID:EqArAK56
sub time2lastmod{ my($time) = shift; my($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst) = gmtime($time); $wday = qw(Sun Mon Tue Wed Thu Fri Sat)[$wday]; $mon = qw(Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec)[$mon]; sprintf("%s, %02d %s %d %02d:%02d:%02d GMT", $wday, $mday, $mon, $year+1900, $hour, $min, $sec); } ここでエラー出ます。 Can't use subscript on split at test.cgi line 77, near "$wday]" Can't use subscript on split at test.cgi line 78, near "$mon]" Execution of test.cgi aborted due to compilation errors.
>>345 Perlのバージョンによる違いかな。。。
$wday = ('Sun','Mon','Tue','Wed','Thu','Fri','Sat')[$wday];
$mon = ('Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec)[$mon];
で試してみてください。
$mon = ('Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec')[$mon]; Decの直後の記号が抜けてました。
348 :
デフォルトの名無しさん :01/08/29 22:21 ID:NuzxCJ3M
use
HTTP::Date qw(time2str);
time2str($time);
でいいのでは。
351 :
音楽侍 ◆NtVkSITE :01/08/29 22:27 ID:EqArAK56
うちでは
sub time2lastmod{
use
HTTP::Date qw(time2str);
time2str(my($time));
}
でいきましたです
352 :
音楽侍 ◆NtVkSITE :01/08/29 22:29 ID:EqArAK56
HTTP1.1でやると、 hoge.cgiがダウンロードされてしまうです。
354 :
デフォルトの名無しさん :01/08/29 22:35 ID:6wtO5bLA
356 :
音楽侍 ◆NtVkSITE :01/08/29 22:39 ID:EqArAK56
んと、 HTTP1.0 == htmlファイルの転送成功。リトライのキャッシュについては未調査 HTTP1.1 == gzipファイルが生で送られてくる という状況です。
357 :
191 :01/08/29 22:40 ID:THYp8YGg
>>342 番のだと、 Content-Encodingが 2回出てしまうことがあります。
ということでなおしました。
だけじゃなくてほかにもちょと変えました。
・ソースの整理
・gzipped じゃなくて生のもので存在、サイズをチェック
・/bin/perl をつかうようにした (/usr/bin/perl じゃないすよね?)
・FreeBSD 4.3 + 5.005_03 で動作確認
ftp://210.170.170.118/incoming/191/xxxxx.cgi にあります。
>>356 それは、Transfer-Encodeを指定していないのにgzipファイルが送られてくるんでしょうか?
それともヘッダがないとか?
すみません、もうちょっと具体的に。。。。
>>357 うちは/usr/local/bin/perlに入ってたりしますが。。。。
Linuxだと/bin/perlがデフォルトなのかな。
>>341 |さらに bbspink2 のときは"2ch.com"を"bbspink.net"に置換して、/板名/に置きます。
"2ch.net"を"bbspink.com"でないですか?
ソース見てないので、見当違いだったらスマソ
なお、"(www.)2ch.com"は存在してるようです。
360 :
音楽侍 ◆NtVkSITE :01/08/29 22:48 ID:EqArAK56
>>357 リロード確認・text/gzip確認
HTTP 1.0 / 1.1 ともに確認しました。OKです。
361 :
音楽侍 ◆NtVkSITE :01/08/29 22:50 ID:EqArAK56
>>358 設定次第なので何ともいえませんが、Linuxの場合、localあってもなくても、どっちでも動くかと・・・
363 :
デフォルトの名無しさん :01/08/29 22:57 ID:NuzxCJ3M
perl のパスが分からない時は #!/usr/bin/env perl でしてみましょう。
364 :
191 :01/08/29 23:02 ID:THYp8YGg
それから、meta-refresh って現在の URL相対の指定できないんでしょうか? どうせ index2.htmlとかは各板の directoryにおくものだから <head><meta http-equiv="refresh" content="url=index2.cgi"></head> <a href="index2.cgi">click!</a> とかやれば index2.htmlをいちいち書き換えなくてすむのでは。 すくなくとも w3mでは相対指定効くようです。 xxxxx.cgi のほうも $0 をみるようにすれば、なかをいじらずに ファイル名を変えるだけでどのファイルを送るかきめられるような。
366 :
デフォルトの名無しさん :01/08/29 23:13 ID:NuzxCJ3M
>>362 # refresh する html の文法
html のバージョンにもよるが、4.x の場合には
a 要素を div, p , h[1-6] などのブロック要素に入れる必要あり。
h1 なんかでいいんでは。大きくて。
367 :
音楽侍 ◆NtVkSITE :01/08/29 23:15 ID:EqArAK56
名無し娘。さん。 一応、マァヴさんには、完成したら娘。さんが一報入れますって伝言してあります。 BackyさんにもQで伝達済みですので、よろしくです。 前にもお知らせしましたっけ?
>>364 そもそもRefreshってHTMLの仕様外の実装なので(もちろんHTTP/1.1にRefreshというヘッダが
あるわけでもない)、「てきとうでいい」というのが実際でしょう。
ですので、動作確認がとれれば相対URIでも良いのではないでしょうか。
あ、ただし、秒数は多くのクライアントで必須だったと思います。
そもそもHTML4.0には「Refreshは使うな」ってかかれてますし。緊急避難的に利用させてもらうことにしましたが。
370 :
191 :01/08/29 23:19 ID:THYp8YGg
>>365 よろしくおねがいします。
でも本業がちっともすすまないよう。ヽ(`Д´)ノ ウワァァン!!
372 :
191 :01/08/29 23:23 ID:THYp8YGg
>>369 げに。ということで実際問題としてどの程度の
clientが対応しているのかな。と。
Web作製とかの人の方が詳しいんだろうな。ヽ(`Д´)ノ ウワァァン!!
>>371 HTML4.01だと、文法違反として、まず<TITLE>〜</TITLE>がないですね。
って私が最初に省略したようです。すみません。
あとは、<A>〜</A>が裸なのも違反になりますね。
実際閲覧時に問題になることは皆無だと思われますが。
フレームにするのは除外ですか? 二重になってしまうけど。
>>373 ありがとうございます。直しておきます。
>>375 ...でも、<a>が裸なのは、read.cgiも同じだった(^^;
<title>だけつけて、かわりに"\n"けずっときます。
<a>のまえに<p>だけつけておけばよいと思うです。>裸
>>374 それも考えましたが、リロード時に余計なトラフィックを喰うので止めました。
>>376 世に出回ってるHTMLドキュメントの多分95%くらいが違反だらけなので、
この際、クライアント依存の可能性がなければ細かい事は気にしなくて良いかと。
いまダイジェストページ(index2.html相当)を つくってんだけど、 …中規模の改造を施さないと いけない…鴨。 鬱だ氏のう
...やっぱ<title>タグ入れませんか? ムダ?
>>382 ちょっと欲しい気もするので、入れてみます。
良いと思います。 そもそも Content-Encoding: gzip を有無も言わさず送出している現状に比べれば、障害は少ないと思います。 もしある程度苦情が集まるようなら、その時点での対策で遅くないと思います。
既にread.cgiのスレじゃないな。 gzipしないときにContent-Length吐くのってどの程度効果があるんでしょう? HTTP/1.1な奴ならgzip使うだろうし、HTTP/1.0じゃchunkしないだろうし。 proxyがchacheする可能性が増えるだけ?
>>385 派外道。
いま見てみたんだけど、Length求めるの
ちょっとメンドくさいですね。
余力があったらしてみます。
ただいまdat_read() dat_out() 変造ちう
387 :
385 :01/08/29 23:58 ID:ps40cZfg
Content-Lengthを出す分の転送量増加以上の効果が見込めるなら やろうかと思って。
いってきました。
>>385 read.cgi のスレに復活です(^^;
390 :
音楽侍 ◆NtVkSITE :01/08/30 00:07 ID:Sij0XJg6
>>369 さんくす〜〜
次からは(次があればだけど(笑))、思いついたらなるべくはやくスレ分けないと、混乱してモチベーション下がるです。
>>385 実際のところ、たいていのSquidは
.cgi ? が出てくるURLをキャッシュしない
設定になってることがない、ようだ…うーむ。
キャッシュを無効にするため、わざわざ index.html? なんてアクセスする奴も 居るんだから、Content-Length吐いたぐらいじゃだめでしょうね。
393 :
音楽侍 ◆NtVkSITE :01/08/30 00:25 ID:Sij0XJg6
>>392 リフレッシュで飛ぶURL一緒なので、効くんじゃないんですか?
ついにやりました(藁 トップページのダイジェストと同じ機能のものを 表示するモジュール …の土台、つくりました。 あとは表示系をごてごていじり回れば、 index2.htmlに変わるものになる、はず。 すでにcommitしてあるので、 怖いもの見たさに覗いてみてくだちい。
395 :
392 :01/08/30 00:31 ID:xfLG9NB.
ブラウザは効くでしょうけど、proxyに効くのかしら? うーむ、squidのソースを展開してみたが、squid.confのサンプルが見つからないぞ。
>>395 逆に言えば、
.cgi という名前を隠して(どうやって?)
?を使わずにパラメータを渡せば(どうやって?)
Squidごとき騙せる…はず。
400 :
- :01/08/30 00:36 ID:Ck0sz4AU
板トップで使われてる pageview.cgi のソースを 夜勤さんか誰かが公開してくれたらな・・・ きっと無理だろうが
>>400 やはりむかしむかーしのなら、もっていたりします。
あっぷしますか?
402 :
395 :01/08/30 00:38 ID:xfLG9NB.
>>398 PATHINFO使えば、?は隠せます。
.cgiはhttp.conf触って、.x とかにしちゃえばOK。
>>402 PATH_INFO...使ってます。
?を使わずにパラメータを渡すのは、どうにかなります(w
httpd.conf...いじれないんじゃないかなあ。
.htaccessまでいじれるんだったらいいんだけど。
404 :
- :01/08/30 00:43 ID:Ck0sz4AU
>401 page=1 のときって、つまり index2.html と同じですよね? 何か違うのかな・・・機能停止されてるから確認できないや
>>404 こんなんでましたけどー
#==================================================
# もしページが1ならトップに戻す
#==================================================
if($FORM{'PAGE'}==1){
$PATH .= "index2.html";
print "Location: $PATH \n\n";
}
406 :
395 :01/08/30 00:47 ID:xfLG9NB.
.htaccessはいじれるはず。 でも、AUTHのみ許可かも。
407 :
- :01/08/30 00:51 ID:Ck0sz4AU
ニガワラ
408 :
395 :01/08/30 00:56 ID:xfLG9NB.
squidちょっと調べてみた。 >hierarchy_stoplist cgi-bin ? >acl QUERY urlpath_regex cgi-bin \? cgi関係はこれしかないから、?さえはずせば、普通のsquidはキャッシュしそう。
>>408 いろんなサイトで
使用されているやつの
設定が(おそらく)
そんなふうになってるのが
問題なのですね…
410 :
名無し :01/08/30 01:08 ID:qReivzgw
411 :
おや? :01/08/30 01:12 ID:FI3EZUgU
>>410 あとremake.txtなんてのもありましたね。現行システムにあるかは知りませんが。
414 :
395 :01/08/30 01:31 ID:xfLG9NB.
>>409 設定ファイル中で強く推奨されてるので普通は変えないでしょう。
で、squid入れて試してみました。
Content-Lengthなくてもちゃんとキャッシュします。
?だけの問題ですね。
gzipしない時にContent-Length出すのは意味なさそう。
>>414 いま自宅に帰ってきた。
Expireを見てくれない(?)のは、
IE5.5も。
どこかのカキコで、「IE5からは、Expireしてない
オブジェクトは要求すら出さない」って
書いてあったんだけど…read.cgiには
すぐ要求が出されてしまう。
もちろんread.cgiがそくざに304を返すけどね。
416 :
Sherry ◆RKMbxbuc :01/08/30 01:38 ID:RowGKKaA
>>414 わたしは,
>hierarchy_stoplist cgi-bin ? cgi
>acl QUERY urlpath_regex cgi-bin \? cgi
に書き換えてます.いつも...
最近だと,/cgi-bin/ 以外にCGIを置く人が多いので‥‥‥(^^;
417 :
395 :01/08/30 01:47 ID:xfLG9NB.
>>416 変えないってのは、削らないって意味で、追加する人がいても不思議じゃありません。
>>415 squid.confの最後にそれ関係のものが書いてあるみたい。
5.5SP1より前のはどうこうで、ie_refreshなんてのが追加されてる。
なんどもあれですが、CUTRESLINK は逆効果のように思います。 dat読み込み時 st=xxx&to=xxx&nofirst=true -> o=xxx 強制変換を実装して、 o=xxx を解釈できるように実装した方がよいかと。。。 PATH_INFO ならもっとスマートに実現できそうなので、可能でしたら PATH_INFO ででも、お願いします。
419 :
Sherry ◆RKMbxbuc :01/08/30 02:31 ID:RowGKKaA
>>397 >read.cgi なこと。
> Content-Length
本質的には関係ないという結論が出たナリ
> expire
サーバ側でcgiの設定変更ができた時点で
あらためて考え直すとするよ
> PATH_INFO
> subback
> TopPage作成(index2)
板ダイジェスト(index2相当)以外は
落ち着いた
> >>のリンク
path仕様ではカナーリ最適化される
ものと思われ。
> bzip
たぶん後回しになるでしょう…
> deflate
gzipのみ受け付けるNetscape系を考えると、
キャッシュ効率も鑑みて、当面サポート
しないことになるでしょう…
> LastMod(ls,st,to)
板ダイジェストをやっつけたら、
本格的にサポートします。
dat indexも一緒にね♪
> mmap(lock)
現在のmmap実装では、
PRIVATE(CoW)にしてあるので、
致命的な問題にはならないんでは
ないかなと楽観視したい、ところなんだけど、
これだけ大規模なサイトのこと、
どんな問題が起こるか、わかったもんじゃない。
> NAME,MAIL欄の" "
>>192 手元の実装では、問題なくなってるように見える
> スレスト時FORM
未実装のようだ(だよね?)
> r2chhtml.h
chunk化は実装済み。
最終発言リロード猿対策も実装済み。
スレスト時FORM非表示と、ressplitter_split()の最適化(前スレ754/756) 実装しました。 が、防火壁のせいでCVS等使えないので、差分つけときます。 begin 664 read.diff.gz M'XL("%2CC3L``W)E860N9&EF9@#=5FUOXD80_DQ^Q<!)P39+8QOGB*%4NEQ( M#QV<3X9(;;G((F:!5<"V;%,E.>5#E!]Q?_=FUS8OB9-62>FIM1*\.SO,VS// ML(JB0$A'XY\N1I>%P6P)[Y93J*F@UANZUC`,T%55VZM6JXF6NZFCJ0W#;&AF MHJ-L/WP/FG9(-/TM"`%`H6W;ENUTK5^MLP%!P6T3/_[TV1AF\6+NT##T0XEZ MR\7&WHE!O%U_3.7F7G%#?^+[L<,6$O-B>=O2#(.5W-DH!"5F\9P20!V8,X\* M1;X):>1$P9S%J9X2$4A6P=I8Y"^H38/YR*6)FNM[40Q*%+J9]IAF7\S.XE!] M)-$V`L0P+K>,<G,YJ4F/8I[2N(O[WNA*XJHK>2<Z7D;7NCO;%J/Z*9O3/KO9 MCGZ"0E3BJ&8(X;JZ6X3(_QVE58+_/%)YW*J9;XFAJ2MNX7.;OB^0JY?-9... M(@KE_7(#`^=G;`+2@B[<12`%!$K[HT50(F#(T&J!*L/7U(304Z0`*ORLV()R MLRQG9P44M\``;)_F4Z[?L(DWIA,8_/ZY[0S:=B?Q+\)1KXZT!APH`$KI[EL) ME(/TVRCB?HN#&8NJO[!H0$.&,7&%W.COOMWU<J-W9X`ADW(67F[$O/^S*F;] M_X(J5C2,)"EC[4>643K2S+K\PF**)+Y<F751T,=Y_*V"YK6IJ=>(J1\E;<HK M+@0U+:LX)LCSL]M=Z]U)M_/I([>64:H[0A*TQ!*9).I!O3&;[%42G7C&?Y7Z ML1\$=-Q2FUR><G6HJ^?K?3#L=_YH.\=GI^<B7/X_\4.0N>H#:%$_AYY4LL M*I6L!'SWR4]C032U?%*:AQHQ#^MK4HHQ$=*YCY,NRTAN<FS@>!G'OM<`6YRF MN-VN<T20UD,F#4L,#*X7TG@9>A@WG]%)70\-8M;U=2>_RG76=^_/!G:[+W#! M>'!$>FYPS;EWS*9\P`W3P*K:.<$+@6Z("5D(AGS-N^.<]\T7M2S$HA]Q<HL& M3%/0Q,EZSN.<#H21-W0>4>&5RV/F31W71^=<(=]_A./3GTB!C(YU57[&)0C[ M69G91`)LF/-B2X7]?<`L\2\1(2ON?[N?WE_<!W?#$LCR@YY+HG^$$]E6>P*V MW"N363>)9AZ960\=**]\#H21PH=!KPNGEH5#))D^Z<&KK3]];4'[@CT<`Q;A M/0`O")*\!<76+2']Y4]12PC9PM'0=^SV2<+$55]:UL=.NR"(7`@^A^@3@>_' M8W\9$[#U]Q\<GK!S:MD]`C<WSD4D7I?7))WHRS"D7CQ@B]55R#0-@E=9(Z/0 M?[?RR44J2IH/7H0#B5:MFX\'9THQ4]HE-@_2YGN.E<FQJN^0)1*K]JR3MKQ3 MR-++\09?GNO^ORRGT^$A/R@J;-<S'?7/F^(%2(RE[-!5C;-#UW?(CG^]XEL\ 2>:[\F\T./Q2+[T!Y=)6Q#P`` ` end
428 :
デフォルトの名無しさん :01/08/30 11:21 ID:avybgQxQ
1. textファイルにコピペ 2. 行頭に余分なスペースがあれば除去 3. ファイルを保存(ここではread.diff.uuとしておく) 4. uudecode read.diff.uu 5. gzip -d read.diff.gz 6. patch < read.diff
430 :
デフォルトの名無しさん :01/08/30 11:35 ID:avybgQxQ
>>429 行末の空白全部消しても途中から化けたものが出てくる…
431 :
428 :01/08/30 11:37 ID:avybgQxQ
gzip -dまではうまく行きました? # これがうまくいってたらファイルは壊れていない可能性が高いです。
433 :
428 :01/08/30 11:39 ID:avybgQxQ
>>432 gzip: read.diff.gz: invalid compressed data--crc error
>431 全角にしてその行載せてみますね ML1¥$=−Q2FUR><G6HJ^?K?3#L=_YH.¥=GI^<B7/X_¥4.0N&GTH#:%$_AYY4LL #ブラウザとかちゅ〜しゃの違いとかなのかな???
435 :
428 :01/08/30 11:46 ID:avybgQxQ
>>434 ">"が > になってた! (笑)
436 :
428 :01/08/30 11:47 ID:avybgQxQ
437 :
428 :01/08/30 11:50 ID:avybgQxQ
>>427 つーこってcommitしました(makeのみ確認、動作は確認してない)
>437 ありがとうございます。 # しかしuuencodeにこんな落とし穴があったとは...
隊長★さんの話のニュアンスは Big-Server以外のところでホスティングできる ような方向で動いてるということかな? となると mod_* の組み込みなんかの 自由度も高くなる可能性もあるということか......
スマソ 昨夜分離したモジュール index.[ch] は、命名ミスの予感。 晩酌しながらの作業はアプナイアプナイ 誰か、あのモジュールのもっといい 命名してくれないかしら? 思い浮かばん(鬱
441 :
仕様無しさん ◆NwLv.g/w :01/08/30 16:48 ID:nL9JLCPA
>>441 誰かが言っていた"Cache-Control"ヘッダを入れるべきか......
今から現状を追います。。。
>>441 あぼーんでもdatのmtimeは変化するので、304返すってことはないですよね。
とすると、FORCE_304_TIMEかな?
path仕様がほぼ完成したことを 関係者各位にお知らせします。 commitしてありますので、ビクビークしながらご賞味ください。 最後にちょっと仕様変更 /test/read.cgi/tech/ 板ダイジェスト(index2.html相当) /test/read.cgi/tech/- 全スレ一覧(subback.html相当) 今のところ、リンク遷移において、 現仕様と新仕様は互いに干渉しないようになっています。 あと、板ダイジェスト、スレ一覧のhtmlを検証、 打ち直してくださる方、ご協力を。
修正もう1つ忘れてた。 splitting_copy()の中の || rawmode); になってるところを、 || rawmode || is_imode()); にすると、imodeの時にリンクが出なくなります(-DCUTRESLINK時)
448 :
ヒロユキ@ギコナビ :01/08/30 19:37 ID:AEjMWcrI
ギコナビという2ちゃんねる閲覧ソフトを作成しているものです。 read.cgiがdatを吐く仕様(パラメタなど)は、どこのスレにあるのでしょうか。
>>446 お疲れさまです。
-DCUTRESLINK と連動せずに、imode 時は CUTRESLINK するようにしていただけると
ありがたいです。
>>449 あれ、今のread.cgiでは、まだ有効になっていないかもしれません。。。
>>445 マージしてるんだけど、
なんか手元で一部機能が動かなく
なってしまったので、格闘ちう。
>>445 >>452 えーと。dat_read()中の
getFileSize()を外すと、
ダイジェスト作成の2周目以降が氏ぬので
復活させときました。
ただいまマージ完了
>>453 NEWBAの方はforループになってるからcase文にできるのかどうか......
っていうか そもそも文字列に対してswitch-caseって使えたっけ?
あえて言えば User-Agentの一番最初に来る文字列だったら
strstr()よりstrncmp()の方が早くできるかな ってぐらいか
456 :
445 :01/08/30 20:46 ID:IyBl8mjA
>454 ありがとうございます。&ご迷惑をおかけしました<エンバグ >449 -DCUTRESLINKしないと通らない部分で、カットしてるので・・・。 でも、read2ch.h内の #define CUTRESLINK の下にdefineしてあるLINKTAGCUTを0にするか、 SETTING_R.TXTに LINKTAGCUT=0 の行があれば、カットしないはずです。 あと、結構繰り返されるループなので、 4文字のmemcmpやmemcpyはlong値にすると速いと思います。それも、 if (*(long *)p == *(long *)"<br>") ではなく、 if (*(long *)p == '>rb<') が一番速いような。 可読性と移植性を一気に失いますが。
ドルバッキーさん来てるよ?
459 :
デフォルトの名無しさん :01/08/30 21:19 ID:Np0La3X.
462 :
音楽侍 ◆NtVkSITE :01/08/30 21:22 ID:KsueBNwE
DolBackyさん、来てますよー>index.cgiスレッド プロセス起動数が半端じゃなくなりそうだっておっしゃってます。
また勘違いした。 謝罪しる>自分 >459 専用プロトコルがほしいね。 ABORN 99899784 2CH/0.1 12 23 45
>458 IE6 でも同様。ヘッダ内で宣言していたJavaScriptを消したせいかと。 HEAD が閉じタグだけあるのは何故?
IEだと、特に問題なく動いている感じ。
read.cgi は 1- が 1-50 じゃなくて 1 だけになってます。
>>464 JavaScriptは、「あ、えら〜出てるなあ」と。
そのうち治るかな?
HEAD漏れは、漏れの掻き漏れ。スマソ
gzdopenで、dup(1)は要りません。gzio.c内で1を特別扱いしてます。 atexitfunc() から呼ばれるhtml_errorでexit()呼ばれるのはまずいっす。 あっ、どなたか直してくれてますね。 -/* dup()しないとgzclose()でstdoutを閉じてしまうので */ -pStdout = gzdopen(dup(1), "wb9"); +/* 引数1はzlib/gzio.cで特別扱い 仮にstdoutを設定し、closeしない */ +pStdout = gzdopen(1,"wb9"); gzipped_fwriteをこんな風にすると汎用性と混乱度があがっていいかも。 /****************************************************************/ /* receive gzipped data from zlib/gzio.c */ /****************************************************************/ int gzipped_fwrite(char *buf, int n, int m, FILE *fp) { int l = n*m; if ( fp != stdout ) return fwrite(buf,n,m,fp); if ( outlen+l > outalloc ) {
atexitfunc()に /* あちこちに散らばってたのでまとめてみた */ とかあるんですが、gzip_flag!=0のときしかatexitfunc()は設定されてません。
>>466 夕方行われた nofirst 対策の
副作用と思われ。
471 :
音楽侍 ◆NtVkSITE :01/08/30 21:42 ID:KsueBNwE
474 :
デフォルトの名無しさん :01/08/30 21:57 ID:Np0La3X.
>463 うん、HTTP自体を捨てられれば色々と楽なんだけど・・・・・ ってのは置いといて、>460見てきました、俺が考えてるのより遥かに高度だった。 ただログ形式から弄るとbbs.cgiを大幅に書き直す必要があるんで、時間が掛かりそう。 今すぐ実装しようと思うとread.cgiの対応だけでなんとかしたいんだけど、「あぼーん」 されるとdat上はどうなるんでしょう? もし「あぼーん」をdat上で判別可能なら、read.cgiが単独で「あぼーん」されたレス番号 を検索してクライアントに送り返す事ができるんですが・・・・・ どっちみちレス番号1から全部クライアントに送信するのなら、CPU不可自体はそれほ ど変化しないような気がするんですけど、どうでしょう?
>>474 read.cgi単体での
あぼーん検出は
ただいま実装検討中す。
>>474 あぼーんはread.cgiで検出できるとして、透明あぼーんはどうするの...?
>>476 今は全部のデータを読んで頭から改行の数を数えているから
透明あぽーんの方がどっちかいうと処理し易いんじゃない
479 :
デフォルトの名無しさん :01/08/30 22:20 ID:Np0La3X.
>475 了解です、既に検討中だったんですね、ちと恥ずかしい(´д`;) read.cの1027行にあぼーん検索関数を割り込ませて、あぼーんレス 番号を表示させればいいのかな? >476 透明あぼーんってクライアント側で実装してるんだと思ってたんだけど read.cgiと関係あるの? 何か基本的なところで、俺は間違ってるのかも?(´д`;) ふと気付いたんですが、cgi経由でdatを読むのなら、サイズとレス番号 が不一致でも問題ないような・・・・・
>>479 透明あぼーんは、
.datからエントリがごっそり消え失せるものと
認識してます。
>>479 -480
ええ、そのはずです>透明
専用ブラウザはdatの差分を採ります。
しかし、すでに専用ブラウザが取得済の部分であぼーんがおこった場合は、
差分だけ採ってもあぼーんがわからずじまいになりますし、透明あぼーん
だともっと悲しいことになるかも。
それを回避するために、サイズとレス番号。
>>468 done.
>>469 とりあえずどんな場合でもatexit(atexitfunc());されるようにしてみました。
>>479 多分透明あぼーんはそのデータ1行が丸ごと削除されるものと思われ。
>>482 1537行目のとこ、
fflush(stdout); close(1); っているのかしら?
waitpid()は if (gzip_flag) で括るべき。
if (gzip_flag) waitpid(pid, NULL, 0);
後始末無視さんせー。 readSettingFile()の最初を ・・・ char *endp; struct stat st; #ifdef USE_MMAP void *mmptr; fstat(fd, &st); mmptr = mmap(NULL, st.st_size, PROT_READ, MAP_SHARED, fd, 0); #else char mmptr[8192]; st.st_size = read(fd, mmptr, sizeof(mmptr)); #endif にして、 最後の #ifdef-#endif は、ばっさりカットしましょ。 それと、 zz_GetEnv()の localtime_r(&t_now, &tm_now); を勝手にlocaltime()にしちゃってました。ごめんなさい(家で動かないんで)。
486 :
さくーしゃ@マカー用。 :01/08/30 22:39 ID:i89NKQig
現在,RAWOUT って有効になってますか?
>>450 のURLでためしてみたんですけど,text/html でかえってきてるみたいなんです。。。?
>480-483 かちゅーしゃの透明あぼーんとゴッチャになってました。ご教授感謝です。 エントリごと消え去るんですね、ってことはスレ番号もズレるのか・・・・ read.cgi単独での検出は難しそう(汗 >481 問題を理解できました。 透明あぼーんが挟まると発言を取り漏らすってことですね。
>>484 gzipが終了するためには入力ストリームを閉じないといけません。
gzip_flagで囲むようにはしました。
>>485 done.
>>450 ?raw だとだめです。
?raw=0.0 ならうまくいきます。
(仕様です)
事故レス
>>489 入力ストリーム → gzipの入力ストリーム
つまりread.cgi側の出力ストリームです
>>490 了解。確かにcloseせないけませんね。
493 :
test :01/08/30 23:19 ID:HEIfwNwk
test
>>494 ls=1のときはnofirst=true強制ですね。
それでいいと思います。
>>496 元の仕様でもよろしくなかったような
気がするんですが…救済した方がいいかしら?
日付変わったせいで ID も変わってるけど 496=498。
>>498 いろいろ試されると、
解析アルゴリズムがバレちゃうね。
とはいってもソース公開されてるし(w
今の状況じゃ、転送量にやさしければ、なんでもいいでしょ。
新仕様 >>数字 のレスリンクの、リンクさせ方を変更。 chunk単位で取りにいくようになります。 キャッシュ効率の向上が期待…できるといいな。
>>489 >
>>450 > ?raw だとだめです。
> ?raw=0.0 ならうまくいきます。
試してみたんですがうまくいきませんです…
URLの自動リンクを無効にするというのは既出ですか?
505 :
デフォルトの名無しさん :01/08/31 01:54 ID:HfubHdvY
read.cgiが吐き出すデータの先頭2kbがスペースというのは既出ですか?
506 :
デフォルトの名無しさん :01/08/31 01:56 ID:6a8y9j3k
>>505 gzip転送の定説です。
つーかIE4が悪いのか IE5以上でも起きるの?
>>504 がいしゅつなんだけど、結論は
どうなったか忘れた。条件に応じて
削る(というよりはリンクしない)ことは、
やろうとおもえばすぐできるけど。
>>505 稼働中のバージョンではやむを得ず
そうなってる。実際のところ、転送量は
10数バイトしか増えてない。
最新バージョンではすでにスペースを吐かなく
なっている。
>>506 IE5.5でも起きる。
バグなのか正しい仕様なのかつかみ切れていないけど、
Transfer-Encoding: chunked
Content-Encoding: gzip
Content-Length: ナシ
のときに、展開したストリームの頭2048バイトを
きっかり無視する…
>>509 う、漏れの手元で見たヘッダ欠けは
幻だったのか…鬱だ
index2.cgiがあったら、掲示板に戻るをindex2.cgiを呼ぶようにする。 html_head()で、 char fname[1024]; sprintf(fname, "../%.256s/index2.cgi", zz_bs); if ( access(fname,S_IXUSR) == -1 ) pPrintf(pStdout, R2CH_HTML_HEADER_1("%s", "/%s/index2.htm%s"), title, zz_bs, gzip_flag ? "" : "l"); else pPrintf(pStdout, R2CH_HTML_HEADER_1("%s", "/%s/index2.cgi"), title, zz_bs); あと、1758行目 dat_out(); だけど dat_out(0); じゃない?
513 :
506 :01/08/31 02:16 ID:6a8y9j3k
>>510 mod_gzipはどうやってるのかのう。
ちょっと調べてみよう。
>>513 T-E: chunkedを吐かない、のが大きな違いのようだ
ちょこっと書いておきますと 2ちゃん専用ツール側での削除は「あぼ〜ん」で 2ちゃんねる上での削除は「あぼーん」です。 この2つを使い分けるといいかもしれません、、です
>>509 -511 M$ですから、夢も幻もいっぱいあるでしょう(^^;
>>514 ソース読んだ限りでは、特別なことはそれしかやっていないようで。
>>515 知らなかった。。。
517 :
506 :01/08/31 02:31 ID:6a8y9j3k
>>514 mod_gzip.cみました。
そのようです。
失礼しますた。
>>511 幻じゃないかも。
動的生成gifをgzipで送ってたら、表示できないWIN2000上のIE5とIE5.5が
あった。
最初は表示されていたが、なにかの拍子で駄目になり、IE5→IE5.5で直らず
OSインストールしなおして直ったが、また駄目になったとか聞いた。
ftp://210.170.170.118/incoming/bmem/bmem.c っていうのでちょっと実験してみたんだけど(IA Solaris8)
bmem@test:~/tmp[479]% time bmem mmap
0.35u 1.78s 0:02.10 101.4%
bmem@test:~/tmp[480]% time bmem mmap.pri
0.37u 1.81s 0:02.15 101.3%
bmem@test:~/tmp[481]% time bmem mmap.pri.wri
0.52u 5.73s 0:06.21 100.6%
bmem@test:~/tmp[482]% time bmem read
0.23u 3.80s 0:03.99 101.0%
bmem@test:~/tmp[483]% time bmem fread
3.20u 4.09s 0:07.26 100.4%
確か.datをmmap()で読む時はMAP_PRIVATEにして BigBufferに書き込み
してたよね? これだと上記の"mmap.pri.wri"のケースに該当するんだけど
......どうしましょ? プラットフォームによっては違う結果になる?
bash-2.03$ uname -sr Linux 2.4.9 bash-2.03$ for i in mmap mmap.pri mmap.pri.wri read fread ; do echo -n $i; time ./a.out $i; echo; done mmap real 0m1.272s user 0m0.230s sys 0m1.020s mmap.pri real 0m1.237s user 0m0.220s sys 0m1.020s mmap.pri.wri real 0m2.454s user 0m0.250s sys 0m1.960s read real 0m6.346s user 0m0.340s sys 0m6.000s fread real 0m10.448s user 0m1.950s sys 0m8.490s
...というわけでたぶんプラットフォーム依存かと。
>>519 検証せずにしゃべってるので突っ込み大歓迎♪
MAP_PRIVATEのときは、commitも
含むんだとおもう。なので mmap.pri の結果は順当かと。
で、そこに書き殴ったときは、カーネル内部で
・ページフォルト
・ページのコピー
がページ境界をまたぐたびに発生するんで、
オーバーヘッドはまぬがれない。
以上はイパーン論。
今回のケースでは、以下の前提があると思われ。
・ターゲットファイルはページキャッシュにある
ことが多いと期待される。
・実際書き殴ってるのは、ケツの1ページだけ。
なので、read()でバッファに読み込むより
いくぶんか効率的なのでは…と思ったら、
dat_read()以外の部分でBigBuffer書き殴って
たりしないっけ? あれ? あれれ? あれれのれ?
書かないという前提があれば、readonly, sharedで
いいんだよねー。
レポートさんくすです。
ちなみにターゲットはLinux.
無意味だけど一応 FreeBSD4.2 time ./bmem mmap 0.148u 2.207s 0:02.35 99.5% 10+191k 0+0io 0pf+0w time ./bmem mmap.pri 0.257u 1.979s 0:02.23 99.5% 10+191k 0+0io 0pf+0w time ./bmem mmap.pri.wri 0.351u 3.841s 0:04.29 97.6% 10+192k 0+0io 0pf+0w time ./bmem read 0.357u 2.525s 0:02.90 98.9% 12+210k 0+0io 0pf+0w time ./bmem fread 1.531u 4.327s 0:05.91 98.9% 10+215k 0+0io 0pf+0w
>>520 早速レポートいただけるとはさすが。
参考になるす。tnx.
そういえば、ターゲットのカーネルのバージョンはいくつかな。 サーバー導入時期で違ってたりして。
527 :
506 :01/08/31 03:21 ID:6a8y9j3k
>>518 う gifを生成しとるので夢の話という事ですよね。
content encoding gzip RFCひっくり返して見たが
やはりMSのヒトリヨガリの仕様のようだちなみにMSDNにも
ロクな事は乗ってなかった
糞MSのトップページみたらMSIE6が出てて鬱になった。
528 :
518 :01/08/31 03:28 ID:PS9zdCQg
いえ、無圧縮GIFをgzip通して送出してたら、表示できないIE5があったんです。
ところで、2048 バイト欠ける理由は分かったの?
530 :
506 :01/08/31 03:36 ID:6a8y9j3k
>>529 2048欠けるのはMSIEの単純なバグ。
もしそうなら IE6 でも直ってないのだけれど。やる気ないな。 どこかにこの件に関するバグレポートないのか。
>>518 のような例があるので、単純なバグじゃないのかも。
533 :
506 :01/08/31 03:54 ID:6a8y9j3k
他にも Windows2000 とかでも
accept encoding "gzip" が 「無い」 MSIEがあるようです。
OSごと入れなおすと直ったらしい 藁
>>531 MSあさりました RFC詠んだ mod_gzip.c読んだ 吐き気がする程に。結論は無かった
けどgzipで2048の空白なんざ数バイトになるので、あまり問題に
しないほうがいい。
なので 消防の自分は寝るよ。
>>533 OS入れなおさないと直らないってところが(藁
IE再インストやverUPでなぜか直んないんだよね〜。
>533 お疲れ様です… 自分も google しまくったけど手かがりなし。 原因が解明できないのは精神衛生的に良くないが、時間の無駄みたいだ。
536 :
デフォルトの名無しさん :01/08/31 04:03 ID:PS9zdCQg
537 :
音楽侍 ◆NtVkSITE :01/08/31 04:12 ID:Ha76ETsk
いま、どこかにmake一発で動くread.cgiって保存されていますでしょうか? 公開版は一ヶ所別に置くとか、gzipになってるとか。。。
538 :
名無し娘。 ◆vP.bOZFQ :01/08/31 04:16 ID:s8ksSf.2
539 :
音楽侍 ◆NtVkSITE :01/08/31 04:24 ID:Ha76ETsk
541 :
音楽侍 ◆NtVkSITE :01/08/31 04:40 ID:Ha76ETsk
>>538 出来ました〜ありがとです。
>>540 ビルドごとにアーカイブして隔離していただいた方が安全です〜
>>541 そのへんは cvs の tag に活躍させてもいいのでは?
543 :
音楽侍 ◆NtVkSITE :01/08/31 04:59 ID:Ha76ETsk
>>542 私はコーディングには参加しない(動作確認とチェックだけ)ですので、CVSだと状況を追い切れません。
スレを追っての現状認識では、どれがカレントで、どれが評価版で、どれが最新か、という判断するのに時間がかかりすぎますです・・・
>>543 だからこそ cvs の tag や branch を利用してみてはってことなのですが…。
>>543 ブランチ切ってないので、
最新版 == current と捉えてくだちい。
機能評価などは、ヘッダなどでcondition outしてから
cvsのcommit logに書く、というのが一般的。
なので、何が行われたかは、cvs logで見るべし。
(どこかにcvswebのURL書いてあるでしょ?)
546 :
デフォルトの名無しさん :01/08/31 05:11 ID:6a8y9j3k
#6411はもう寝たのかな。
掲示板に戻るはindex2.cgiがあったら呼ぶようにしました。 MakefileにSRCSとdistターゲットを加えました。
548 :
aki :01/08/31 07:14 ID:N9m3H/y.
>>547 gedoh.org のミラーで cvs up したタイミングで
make dist するように仕掛けてみました。
でもって、tag とか branch は自由にきっちゃってください。
夜勤さんや$さんが取り込んだ版にtag切っておくといいかも。
549 :
aki :01/08/31 07:17 ID:N9m3H/y.
遅いかもしれないが…
>>533 -535
インターネットオプションの詳細設定で「(プロキシ接続で)HTTP 1.1を使用する」にチェックを入れないと、
Accept-Encoding に gzip は出てきません。それのことでは。
distのやり方間違ってて、毎回read.tgz作ってました。 直しました。
あれ?まだ、毎回作ってる。 どおして〜?
553 :
デフォルトの名無しさん :01/08/31 16:47 ID:vhMKUI7c
ネタでしょう。 本気で売るなら、ネットオークションなんかには出品しませんよ。 荒らされるの必至。つか、もう荒らされてるし(w
結局オークションはひろゆきのジサクジエンデシタ でもこういうことされたから bzip2実装してやろうと思ってきた(w
なんかcvs重いな
アタック受けて氏んだかと思った(w
どこまでがネタなのかわからんな…。 そんな状況で発言するのもなんか馬鹿馬鹿しいのだが… ページ最下部に、リロード用のリンクつくるってのはどうだろう。 st=(最新の番号-10)とかそんな感じので。 ls=100とかのままリロードしてる人間が結構いると思うので、 これって転送量結構減らせるような気がするんだけど。 って、これ、スレ違いかな? ガイシュツだったらスマソ。
>>559 -DRELOADLINKですな。実装済みです。
ごめん。
>>561 ときどきPremature end of scriptが
出るっぽいんだけど、漏れが連打した限りでは
なかなか出ない。
スレダイジェストのアンカーが不完全なのは、
まだ実装してないからです…
あ、全て-DCUTRESLINK時のみ有効です。 mmap()をREADONLYにはしていません。
567 :
565 :01/08/31 23:26 ID:PuIIKuzw
名前とメールを間違えた・・
そういえばいつの間にかかちゅ〜しゃ規制が外れてるらしいですが、 gzip対応なわけでもないのに規制を外して大丈夫なんでしょうか?
>>563 これだと確実に出ますねえ。
ちょっと追っかけてみるっす。
>>568 恥ずかしながら、オークションの実況をROMってしまった身から言うと、
ハマりまくってるときのリロードは1−5スレずつダウンロードすることになるね。
かちゅーしゃだとあまり関係ないと思うな。
圧縮するにこしたことはないけど。
>>569 Content-Encoding: gzipのとき氏ぬ。
落ちちゃってるわけではなく、バッファを
フラッシュしきれてない??
gzipがない状態では、正常に処理されてる模様。
>>571 ** デバッグ協力お願い **
サイケダンスドットコムの、
/tech/dat/998997848.datを
持ってってみてください。
たぶん、動かない予感。
bash$ (export HTTP_ACCEPT_ENCODING=gzip;
export PATH_INFO='/tech/998997848/';
export QUERY_STRING='raw=0.0';
export HTTP_USER_AGENT=console;
./read.cgi )>file
さいしょは、Linux(開発に使ってる)と
FreeBSD-2.2.x(公開に使ってる)の差かとオモタよ…
TODOより >現在の実装では、/board/subject.txt のmtimeを返しているが、subject.txt >はsage進行の時は更新されないと思われるので、上位n個スレでsage進行が行 >われているとき、正しいものが取れなくなる可能性はある。 新スクリプト(要するに今使っているbbs.cgi)では、 sageレスも必ずレス数にカウントされるので、 並べ替えは起きないものの、subject.txtの更新は行われていると思われます。
>>573 tnx, 信じてみるよ。
ちょっと前(?)、subback.htmlとかのレス数が
sageで増えてなかったような気がして、
subject.txtも同じなのかな? と邪推
してたのであります…
dat_readのところの、mmapした後の盲目的strlenで問題が発生している。 本来、このコードはdatが破損してデータの一部が\0で埋められたときにそれを できるだけ修復するためにあるコードかと思われ。 memchr(BigBuffer, '\0', zz_fileSize);を使えば問題は起きなくなるでしょう。 (その後のwhile()ループも同様に修正)
>>575 strlenは、read版だと末尾に'\0'を入れてあり、正常に動いてました。
で、
>>565 のコードだと、strlen使わなくなってます。
getLineMax()の内部も変更済み。 でも、要-DCUTRESLINK。 ※-DCUTRESLINKでもLINKTAGCUTが0なら、リンクのカットはしません
ってゆーか、read()版でも、いつの間にか消えてた。 dat_read() ・・・ /* XXX ところどころに 0 が現れるの? */ { char *end = BigBuffer + zz_fileSize; char *p = BigBuffer; while ((p = memchr(p, '\0', end - p)) != NULL) { *p = '*'; } } ブロックが汚いけど、こうすれば、OKかな
-DCUTRESLINK だとむしろ転送量が増えるかもしれない問題について、
妥協的な提案ですが、その窓内で表示されている部分だけは CUTRESKINK して、
表示されていない部分については RESLINK をはるというのはどうでしょう。
&st=50&to=100 なら、
>>58 ははらないけど
>>14 ははる、というふうに。
それとも、PATH_INFO 使い出すと同時に -DCUTRESLINK はやめる方向でしょうか。
dat_read()内で、 if (zz_fileSize > MAX_FILESIZE) html_error(ERROR_TOO_HUGE); の次に、 if (zz_fileSize < 10) html_error(ERROR_NOT_FOUND); ぐらい、入れておいたほうがいいかもしれない。 (エラー種別は別にした方がいいかも) 実際、過去にサイズ0のファイルがあったことがある。 各フィールドの区切りや投稿日があるので 正常なdatが10バイトを下回ることは無いはず。
ちょっと雑用が入ってしまい、 マージ作業とかできぬ、ゴメソ 今から帰らなきゃ…
>-DCUTRESLINK だとむしろ転送量が増えるかもしれない問題について、
読みなおしされる回数と、全体の約2割の削減(非圧縮UAのみ)で、
どちらが効果があるのか、調べないと実際にはわかりません。
で、1から「関連スレは
>>2 -5のどこか」とリンクされる場合は
明らかに逆効果なので、
レス1の場合はリンクするよう、とりあえず変更しました。
(
>>578 と
>>580 も加えた)
ftp://210.170.170.118/incoming/2ch-read-current/read14.2.9.c.1 書いてあるレスとリンク先のレス番号の差をみたり、
さらに、st=やls=を見て判断するのは、
単純にカットするのと比べて、閉じタグの時も判断しなければならず、
変更が大きく、
やってはみますが、それなりに重い処理になりそうです。
あと、しつこいようですけど、-DCUTRESLINKだけでカットされるわけではなく、
read2ch.h内で #define LINKTAGCUT 0
にすれば、カット機能は働きません。
>>581 お疲れ様です。頼りきっていてすみません。
>>582 いれときました。
500 Internal Server Error問題は
解決しちゃったかな?
rawwrite_href()をちょっと見た感じ、
st=やls=によってリンクする/しないを区別する場合には
この中でやった方がよさそうですね。
>>0 や
>>9999 (lineMaxより大きい数字)を判断したりも、
ここで行ったほうが効率が良さそうです。
ただ、BigBufferを書き換えなくすると、
'\0'が含まれないので(逆に最後が'\n'であることが保証されている)、
n = strcspn(*sp, ">");
if (n == 0)
return 0;
は、
n = strcspn(*sp, ">\n");
if (*(*sp + n) == '\n')
return 0;
という感じになおし、
s = strstr(s, "</a>");
if (!s)
return 0;
は、
s = strcspn(s, "<\n");
if (*s == '\n' || strncmp(s, "</a>", 4) != 0)
return 0;
等の修正が要りそうです。
(他にもあるかも)
>>582 お疲れさまです。要はどっちにも対応できることですよね。
レス1からのリンクも明らかに逆効果かどうかわからないくらいです(^^;
リンク先を実際に参照してもらった回数のうち、リンクがなければ飛ぶのをやめた
人と、リンクがなくてもきちんと ls,st,to などを指定した人の分を除いた量が、
「約2割の削減」よりも大きいか小さいか。。。
ところで、そうすると -DCUTRESLINK しない場合というのは、どういう
事態が想定されているのでしょうか。
# ソース読んだだけではわからなかった(^^;
>>586 path仕様では、リンクの長さが
短くなるため、あえてカットせずにいます。
で、転送総量削減を期待して、
必ずchunk単位になるようにリンクを張り直します。
詳細は、サイケダンスドットコムで遊んでみてくだちい。
いまは、L-Mをchunk毎に求められるように
最適化を施してる最中です。
rewrite_hrefなんですけど、 if (sscanf( "<a href=\"../test/read.cgi?bbs=%20[a-zA-Z0-9_]&key=%12[0-9]" "&st=%u&to=%u&nofirst=true\" target=\"_blank\">>>%u</a%c" , ...) == 6 && 最後の%c == '>') { /* >>nn の場合 */ ・・・ 2つ目の'>'までカット } else if (sscanf( "<a href="../test/read.cgi?bbs=%20[a-zA-Z0-9_]&key=%12[0-9]" "&st=%u&to=%u\" target=\"_blank\">>>%u-%u</a%c" , ...) == 7 && 最後の%c == '>') { /* >>nn-nn の場合 */ ・・・ 2つ目の'>'までカット } なんてのは駄目ですか? 重くなるかもしれないけど。 あ、sscanfの%[]のフォーマットに'-'を入れる場合、どうやったか忘れた。
>>589 さいしょはhrefから抜こうと
思ってたんだけど、それよりも
エレメント抜き出した方が確実だと
考えたのだ。
っていうか、余所に公開するコードに
scanfを使うのは漏れの趣味じゃない。
自作一発ツールでは多用するけど(w
とりあえず1つデバッグ
dat_out_raw()の最後、のfor内、
pPrintf(pStdout, "%s\n", BigLine[i]);
を
#ifndef CUTRESLINK
pPrintf(pStdout, "%s\n", BigLine[i]);
#else
pPrintf(pStdout, "%.*s\n", BigLine[i+1] - BigLine[i], BigLine[i]);
#endif
に直さないとまずい。(BigLineを'\n'-terminateに変更したため)
が、
>>563 のエラーは、BigLineの形式を変える前から起きていたので、
これが原因ではない。
>>563 までの原因は
>>575 で、
>>585 の原因がこれ(↑)であれば、
解決している(かもしれない)。
あと、
http://www.psychedance.com/test/read.cgi/tech/998921988/10-20 等の時、「続きを読む」が欲しいような。
全レス表示や最新レス表示だと「新レスの表示」が出るけど。
>>593 そのへんの仕様を知らなかったので、
あーゆー形で仮実装してたんですが、
使える設定があるのなら、喜んで
流用させてもらうです。
いずれにせよ、htmlを読んで再走査するよりは、
datから作り出した方が速い、んじゃないかなと
いうのが今の考えです。
ヘッドラインとか 広告とかの テンプレートは あるんだろうか? いずれにせよこの機能は使われずじまいになる 可能性も大きいし(鬱
cvsweb 氏んでる? あっそうだ、今日はAir H"買いに逝こう♪
>>563 > 500 Internal Server Error
のバグ判明。
getLineMax() の最後の方に、
BigLine[line+1] = BigBuffer + zz_fileSize;
があるんだけど、結果的にこれがsentinelの
役割を果たしてない。結果、dat_out_raw()で、
最後の行を踏むと、NULLポインタを手繰って氏ぬ。
BigLine[line] = BigBuffer + zz_fileSize;
が妥当ではないかと思うのだが、現在手元の
read.cはマージしたくないので、どなたか
追試・修正求む。
それにしても、つくづくemacs gdbは便利やのう。
>>598 これは直接関係のない潜在バグだった(鬱
最終行で、NULL - &BigBuffer[n] を計算
した結果、十分大きな値(21億超えてるかも)に
なっちゃうんだけど、BigLine[lineMax-1]は
たいていNULL terminateされているので(藁
結果オーライ、と。
>>599 BigLine[line]が未記入なのは気持ち悪いのでcommitしてみた。
なんとなくわかった。 問題は、397がけっこうサイズ大きくて、 printf("%.*s") の * が耐えきれなくなってる ものと見た。 というわけで、これをwrite/gzwriteを用いた ものに変更すると、問題は解決 すると思うっす。 ところで、linux-2.4だと、mmap(MAP_PRIVATE)の 挙動が変わってます? 今のところ、 ファイルサイズを超えた割り当ては、 0で埋められた名無しさんメモリが割り当てられる、 という前提でコード書いてんですが… > | - -)
もひとつ修正お願い。
>>591 と同じところで、改行が2つ出ちゃってます。
× pPrintf(pStdout, "%.*s\n", BigLine[i+1] - BigLine[i], BigLine[i]);
○ pPrintf(pStdout, "%.*s", BigLine[i+1] - BigLine[i], BigLine[i]);
>>563 って、getLineMaxやdat_out_rawのprintf()の変更を加える前からです・・・
>>575 が原因であればいいんだけど。
>>601 多分、gzprintf()が、
char buf[4096];
vsnprintf(buf,4096,format,va);か
vsprintf(buf,format,va);のどちらかになる。
下なら当然バグる。
上でバグるならライブラリの問題だが、どっちにしろ正しい結果にならない。
割り込みですいません、 動作報告にあったやつなんですが、read.cgi 5.10 で imode経由の時、「レスを最初から読む」のリンク先が 「st=1&to=10」のためとんだページで11以降のレスを読み出すリンク が表示されないようですが、 最新版ではこれ、「&to=11」とかなるようには対処済みでしょうか?
607 :
605 :01/09/01 17:10 ID:D.BYJFUs
>>601 gzwrite使うようにした。
ところで、他のところで本文を一括でpPrintf()に渡しているような
ところはないかな。
608 :
605 :01/09/01 17:36 ID:D.BYJFUs
8000文字程度のを作って食わせたら、駄目だたーョ。 zlibの方をいじった方がよさげなんだが、 スタック上に10Kぐらいとるのと、vasprintf()使うのとどっちがいい? vasprintf()使っちゃっていいかな?
>>608 vasprintf()ってどんな関数なの? Solaris上では見当たらないんだけど...
zlibのgzprintf()もどうせ小さな関数だから 文字列長の制限のないor制限の緩い
関数を自作しちゃってもいいかもね
610 :
605 :01/09/01 17:55 ID:D.BYJFUs
sprintf内でmallocする。 パフォーマンス的にうれしくないが、最も安全。 printf系の関数を自作するのは、つらいっす。
>>609 vasprintfってのは、第一引数をポインタのポインタで渡して
そこにメモリ確保して内容も書いてアドレス書き込んでくれる関数みたい
612 :
デフォルトの名無しさん :01/09/01 18:12 ID:bCko6D0s
ちょっと提案なんですが、めがびーのように 「書き込み後もこのスレッドに留まる」機能を導入するというのは いかがでしょうか?主にチャット対策ですね。 上記の機能のチェックボタンをONにして書き込みした場合、 再び最新の数十件を表示し、チェックボタンは再びONに なっているという具合に。 脳内シミュレーションでは転送量も削減され、使用者にとっても メリットがあり、結構いい感じなんですが・・ がいしゅつだったら申し訳ありません。
613 :
605 :01/09/01 20:27 ID:D.BYJFUs
>>609 2ちゃんなら最大8kぐらいだから、とりあえず10kにしときました。
gzipped_fwriteは、zlibの方に移しました。
614 :
609 :01/09/01 20:43 ID:Oz0a82Qk
>>613 とりあえずそれが妥当なところですね
vsnprintf()って確か戻り値が「バッファ長が十分あったと仮定した場合の
結果文字列長」だと思ったので それチェックして10kより長かったら
malloc()でもっとデカいバッファ作って呼び直す ってのもいいのかも......
でも vsnprintf()の実装がbrokenだと戻り値が当てにならないこともあるのかな?
現在の最新を、サイケドットコムに 反映しときました。 それにしても、Air H"さいこー。
616 :
605 :01/09/01 20:58 ID:D.BYJFUs
>>614 たしかに、
if the return value is greater than or equal
とかあります。
ただね、「zlibってvsnprintf()使ってんのにどうして落ちる」と悩んだんですわ。
良く見るとconfigure使うくせに STDC とか HAS_vsnprintfとかを自分で定義して
やらんといけなかった様ですな。
configureがなければ、最初っから手で調整したのにィ〜。
617 :
609 :01/09/01 21:18 ID:Oz0a82Qk
>>616 うひゃ〜 このconfigureホントに手抜きもいいとこだな
しかし そうなると......世の中のgzprintf()使ったプログラムには
buffer overflowの脆弱性が潜んでる可能性がかなり高い......
618 :
605 :01/09/01 21:57 ID:D.BYJFUs
>>614 この方式も組み込みました。
10kのままにしたので、おそらくread.cgiでは使わないでしょう。
>>617 FreeBSD標準のlibzだとsnprintf()が使われるように見える。
vsnprintf()の方を使って欲しいなあ。
とりあえず、最新のものを追っかけてます。
dat_out_raw()で、 /* 全部を送信するように変更 */ raw_lastnum = 0; となっているのは、else以下に入れるのが正しいのでは? &raw=5.123等の適当な数字を入れると、 -INCRと共に全体が返ってくる
>>620 いや、それが正しい動作なのですが...
(正しいレス番号とそのときまでのファイルサイズを指定したときのみ差分が返ってくる)
あ、+OKが差分で、-INCRはあぼーん等なんですね。 raw=0.0で返ってくる+OKと内容が同じだったので、 全体を返すときは+OKだと勘違いしてました。
変更点。
>>nnと>>nn-nnについて
・表示範囲外の時にはリンクを貼る
・正しいレス番号でなかったらリンクは貼らない
・リンクを貼る時、USE_PATHだったら、PATH形式に(CHUNKは未使用)
・テレホタイムは、表示範囲に含まれている場合のみリンクしない
・強引に4バイト比較にした(警告が出る)
urlcopy()とressplitter_split()を取り去り、
変わりにこれを入れてください。
ftp://210.170.170.118/incoming/buggy/read.part.1.c また、お暇な時にお願いします。
手元の環境の都合で、相変わらず GZIP,ZLIB,USE_MMAP,PREVENTRELOAD
での動作確認はしていませんが、
今回は他に影響する部分は無いと思います。
625 :
名無し :01/09/02 02:23 ID:Lim.QX.U
夜勤さんが批判要望に出現してます。 インストール頼むなら今ですよ。
627 :
名無し :01/09/02 02:33 ID:Lim.QX.U
764 名前:夜勤 ◆D69Zsbfg @夜勤 ★ :01/09/02 02:31 ID:??? ちと 話の流れと違うけど、すまそ 今 www2.bbspink のサーバに mod_gzip が入っています。 ちゃんと動いているようなので(効果もかなりあるし)、 来週は全サーバに入れる予定ですー。 過去ログの圧縮もやる予定です。
ホントやねぇ zlib関連のコーディングは結局お蔵入りになっちゃうけど まぁ めでたしめでたしということか % telnet www2.bbspink.com 80 GET / HTTP/1.0 Host: www2.bbspink.com Connection: close HTTP/1.1 200 OK Date: Sat, 01 Sep 2001 17:35:09 GMT Server: Apache/1.3.6 (Unix) PHP/4.0.3pl1 mod_gzip/1.3.19.1a mod_ssl/2.3.6 OpenSSL/0.9.3a Connection: close Content-Type: text/html
790 名前:夜勤 ◆D69Zsbfg @夜勤 ★ 投稿日:01/09/02 02:38 ID:???
>>779 1/3 になると思う、ほぼ達成です。
unix板、プログラム板、web 関係の板の皆様方には
本当に感謝しています。
ありがとう。
>>628 どーでもいーけど、
なんでL-M吐かないんだろ??
>>631 例の"server-parsed"のためと思われ
>>628 無駄になるのは、index2.htmlスレ関連の方。
read.cgiでは、意味がある。
>>631 mod_gzipだと、そのあたりがいまいち。
304でのリロード拒否も考えると、cgi挟みたくなるよね。
mod_gzipでcgiの出力も圧縮できるんでしたっけ? そこら辺まで見てないんだけど。
>>635 できる。
サイケドットコムにはmod_gzip入ってるが、
意図的に www.psychedance.com だけ
mod_gzipしない設定になっていて、
あのサーバが抱えている他のコンテンツは
gzip効かされるようになってる。
漏れも目で確認してみた。
637 :
- :01/09/02 03:03 ID:SJhkwM6g
http://www2.bbspink.com/test/check.cgi HTTP/1.1 200 OK
Date: Sat, 01 Sep 2001 18:00:46 GMT
Server: Apache/1.3.6 (Unix) PHP/4.0.3pl1 mod_gzip/1.3.19.1a mod_ssl/2.3.6 OpenSSL/0.9.3a
Connection: close
Content-Type: text/html
Content-Encoding: gzip
Content-Length: 684
gzipもlengthも使われてますね
>>636 できるのかあ。じゃあ、うちのは設定の問題か、勘違いかな。
細かいとこまで見ないで入れちゃったからなあ。
ところで、
>>623 のコードどうします?
そのまま取りこむのは、少し抵抗あるんだけど。
639 :
ひろゆき :01/09/02 04:59 ID:Y47cJeS2
どうもお世話になってます。 いろいろとありがとうございます。 ノートPCが手元にないもので、インストールができないおいらです。。。
641 :
デフォルトの名無しさん :01/09/02 06:49 ID:OGRZcBVM
index2とかread.cgiのhtmlにはform書かずに、「書きこみ」に リンクして別窓開かせるというのか、もしかして激しくガイシュツ?
642 :
名無し :01/09/02 06:50 ID:kg0l2cpY
age
>>641 フォームがあそこに付いてるってのが
2chの活性化につながってると思われ。
フォームを外すと、禿げしく活性化が
損なわれること必至なので、熟考が必要。
現に、スレ立ては、昔は表に出てたけど、今は
引っ込んでるでしょ?
もちろん、運営側が脱活性化を狙ってるのなら、
フォームを引っ込めてしまうというのも…鬱
>>639 こっちこそ、大変楽しんでますです。
本業そっちのけで(w
たまにここをのぞいてるもんですが。
>>623 のアイディアをさらに進めて、各レスに <a name="nn"> ってつけて
表示範囲内へのリンクは <a href="#nn"> にするのはどうでしょ。
転送量削減というより便利になるだけだけど。
>>623 これcvsにあてちゃっていいんでしょーか
>>647 未評価なんだけど、
評価可能なように、conditionつけてお願いしまーす
>>648 それにしてもconditionだらけになってきたので
いじるのもつらくなりつつあるような(^^;
>>623 ・強引に4バイト比較にした(警告が出る)
アライン無視で *(long *)化して比較してるんですか。
これはやめたほうがいいと思われ。
環境変わると死ぬので将来サーバ環境変更したときに危険
>>649 仕様確定している新機能は、
そろそろcondition外してもいいんだけどねー。
これはみんなのコンセンサス必要。
いちお、古い分はリポジトリに残ってるわけだし。
おお、できてますな。便利ですなり
>>646 そういう仕様のすり合わせはちゃんと読んでないのでもぐります...
>>650 サイケドットコムに反映した。
rewrite_href()に限らず、漏れが書き下ろした
モジュールは、どなたでも手を着けて
くださって結構。(そのためのcvsでしょ?)
rewrite_href2()は、葬れると思われ。
(本人もそういってるし)
zz_GetStringリファインしてみた。 あと'=' がない場合が想定されていなかったので、無い場合は無視するようにしたっす。 あ、commitのcomment入れ失敗。日本語文字が消えてる(^^;
>>624 で入れたやつ、rawmodeでもURLがタグ化されてるけどいいの?
>>631 -634 Last-Modifiedの件だけど オレのところのApacheで確認してみた
ところ mod_gzip使ってもserver-parsedになってない静的コンテンツは
ちゃんとLast-Modified吐いてます ということでserver-parsedを外しても
問題がないのなら外してもらった方がいいですね
あとExpiresヘッダがらみの部分が現在
#if 1
get_lastmod_str(expires_str, zz_fileLastmod + 5);
#else
:
#endif
とかなってるけど まぁ実際には EXPIRES が定義されてなければExpiresヘッダは
吐かれないけど もしこのままExpiresヘッダを吐いたとすると mtimeの
5秒後にexpireされてしまう......ということは事実上"Pragma: no-cache"と
ほとんど等価になってしまってブラウザでキャッシュされなくなってしまうような
気がするんだけど......
657 :
656 :01/09/02 20:56 ID:nSC2NXko
server-parsedの場合これどうかね? Apache module mod_include XBitHack directive Syntax: XBitHack on|off|full Default: XBitHack off Context: server config, virtual host, directory, .htaccess Override: Options Status: Base Module: mod_include The XBitHack directives controls the parsing of ordinary html documents. This directive only affects files associated with the MIME type text/html. XBitHack can take on the following values: : full As for on but also test the group-execute bit. If it is set, then set the Last-modified date of the returned file to be the last modified time of the file. If it is not set, then no last-modified date is sent. Setting this bit allows clients and proxies to cache the result of the request.
>>657 そもそも、server-parsedにしてる
理由って、adとか差し込むため?
>>656 Expires: の件に関しては、
途中で投げちゃったので、
深く追求しないで…鬱
660 :
655 :01/09/02 21:33 ID:McpMRzTs
661 :
655 :01/09/02 21:37 ID:McpMRzTs
どちらにせよ個々のPCの時間がそんなに精度良くサーバと 合ってるはずないんで Expires ヘッダ使うのは無理だと思われ
>>662 Expiresに関しては、どちらかとゆーと
キャッシュサーバに対する妥当性を与える
手段としてあれこれ研究してたす。
ウチの会社で使ってるのはSquid-2
>>662 Expiresの時刻はDateヘッダの時刻との差を出して
有効期間を割り出すものじゃないかと思うけど。
RFC2616
>13.2.4 Expiration Calculations
> freshness_lifetime = expires_value - date_value
>>663 とするとCache-Controlでわ?
>>665 IE5では、Expires:で保障されてる
オブジェクトに対しては、サーバに問い合わせすら
しない、という噂を聞いて、いろいろ試してた
んですわ。たとえば、過去ログとかは有効期限を
長めに設定しても生きていける可能性が
あるわけでしょ?
/* ためしに廃棄期限をちょっと30秒先に設定してみる */
という部分が、その実験の名残。
先日出た結論
>>336 >>391 以降 では
.cgi ? などという文字がURLに含まれていると、
キャッシュサーバだけでなく、UAもExpiresを信用しなく
なるのでは? ということだった。これに関しての
実験は、後ほどしてみる。
667 :
662 :01/09/02 22:45 ID:df.8HYUw
>>666 なるほど......ただ問題は有効期限切れでexpireされると キャッシュから
捨てられてしまうため 今度は逆にコンテンツが変化していなくても取得しに行って
しまうことになるので そのあたりのトレードオフを検討する必要がありますね
まぁおっしゃる通り過去ログなら有効期限を1年ぐらいにしておけばいいのかも
知れませんけど
>>668 詳しく実験してないんだけど、
大筋では、expiredなオブジェクトに対しても、
I-M-S付きで取りに逝ってくれるようなので、
無駄ではない、かもしれん。
今は別の作業やってるので、Expires:の検証ができぬ。
>>670 いつのまにか消えてますな(w
いま調べたら、リポジトリには
ハナっからかちゅーしゃ規制定義が
入ってないっぽ。
漏れも、なんであちこちに
Katjusha_Beta_kisei
入ってんだろー? とギモンにはなってた
んだが…まーいっか。
そろそろ寝るか… 要望: だれか、現行版(5.10?)とほぼ同じもの(?)に、 タグつけといてもらえませんか? 漏れはどの時点が取り込まれたか、いまいち 覚えてませんです。
Ver5.10の導入報告は前スレ608 CVSの導入が前スレ739(commitが764) というわけで、Ver5.10は残ってない 5.10以前に導入され、苦情や問題の無いcondition NEWBA DEBUG GSTR2 こいつらはOK GZIPは、プロセス数問題があるので保留 PREVENTRELOADは、削除依頼板に若干気になる発言があるので保留 ZLIBは、導入時にzlibがなく、入っていない
674 :
デフォルトの名無しさん :01/09/03 13:38 ID:nLIVOBVk
「掲示板に戻る」をindex2.html→index.htmlに。 潜在的なバグ readSettingFile() if (cptr[len] == '=' cptr + len < endp を確認してからにしないとまずい。 dat_out_raw() pPrintf(pStdout, "%.*s", BigLine[i+1] - BigLine[i], BigLine[i]); datに'\0'が含まれていた場合に、期待した動作をしない。 (最近はbbs.cgiで'\0'をはじいている気がするし、 mod_gzipが.datも圧縮するようになれば、あまり問題ではない)
>>673 そうだったのか、tnx.
リポジトリの最初の方が、5.10にやや近い、
ということにしとけば、いいのかな?
>>674 /index.html より / にしたほうが明らかにバイト数が少なくてすむ。
>677 とりあえず #defineで設定して後ですぐに変えられるようにしとくのが吉かと。
ちょっと Expiresヘッダを吐いた場合のIE5.01とネスケ4.72の
振る舞いを観察してみました
IE5.01 -> Expiresは無視されている模様(Expiresを吐かなかった場合との差が見られない)
ネスケ4.72 -> 当該ページを表示させてから「戻る」ボタン等で前のページに戻ってから
「次」ボタン等で当該ページに戻った際に次のような振る舞いになる
Expire日時前 -> そのままキャッシュの内容が表示される
Expire日時後 -> If-Modified-Since付きでコンテンツを取りに行く
Statusが304ならキャッシュの内容を表示
このケース以外(URLを直打ちした場合,リンクからジャンプした場合,
リロードボタンを押した場合等)ではExpiresなしの場合と振る舞いの違いがない模様
ってな感じでした なお
>>664 で指摘されているRFCの規定にもかかわらず
ネスケはコンテンツをexpireさせる日時はPC側の内部時計のものを使ってしまっている模様
ところで ネスケ4.72で次のような問題があるようです
gzip圧縮されたコンテンツでContent-Lengthヘッダが指定されていると
Last-Modifiedによる指定が無効になってしまう
これはネスケ側のバグではないかと思います 現在2chサーバで稼動中のread.cgiでは
Content-Lengthヘッダがありませんが これが指定されるようになると
ネスケでは(少なくとも4.72では)If-Modified-Since付きのリクエストを
行わなくなって毎回コンテンツを取りに行くようになってしまうと思います
mod_gzipではdechunkを行うとContent-Lengthヘッダを生成させるので
(そうでなくともスタティックなコンテンツではそうですが)これは
頭の痛い問題ですねぇ......
cvs追いかけてる人は知ってると思うけど、 いま、インデクスの実装を行っており、 設計はほぼ固まりました。 概要・特長は以下の通り。 ・インデクスのサイズは 4096 bytes ・/board/dat/idx/XXXXXXXXXX.idx ・ディレクトリ idx がなかったら、インデクスは作成されない ・bbs.cgiの改造はたぶん不要 ・完璧な排他制御(w ・スピンロック不使用 ・SMP safe(まじかよ) 仕様はほぼ決まっているが未実装な機能は以下の通り。 ・あぼーん時のインデクス再構築 …っていっても、いまからmainに組み込むことを 考えると、もちっと道のりあるかな?
>>681 ここのカレントじゃなく、
zlib使うようにしたバージョンかな?
ありゃ、生DATのgzip圧縮転送って結局まだ有効になってないの? >新read.cgi
なんかindex.htmに戻るようにしただけな気がする。
685 :
デフォルトの名無しさん :01/09/04 00:45 ID:ydrizmO6
そうかな?
あまりアグレッシヴな改造やると 嫌われるかなあ? (鬱
早く「>>」規制を解除してほしいなぁ。 いちいちst=&to=打ち込めば済むんだろうけど、 ほとんどの人は「レス全部」押すだろうし。 「前100レスを読む」ボタンつけるのととどっちがいいんだろ。
「掲示板にもどる」を修正。 index2.cgiチェックは標準からはずした。 index2.htm[l]は使われなくなるようなので、index.htm[l]に変えた。 SERVER_SOFTWAREにmod_gzipがあったら、index.htm[l]も出さないようにした。
-DUSE_PATHや-DGZIPって、外すとコンパイルすらできないね。
>>689 外してコンパイルの
テストはほとんどしてなかったろで(スマソ
ただ、自分が掻いた部分に関しては、
path_depth == 0 のときは
従来の動作を行うように
心がけてたんだけど…ここ2日くらいの
変更についてってない(鬱
USE_PATH未定義でコンパイルできるようにして rewrite_href2をrewrite_hrefに取り込んでみた。
>>692 新バージョン見まスた。
お手数おかけしまスた。
やっぱりそろそろ不要な#ifdefを整理したほうがいいような。
>>694 ちなみにウチのプロジェクトだったら、
ひととおりチェックして機能的に採用されそうなものは
条件を取り払ってしまう、というポリシーっす。
今回は誰がプロジェクトマスターというわけでも
ないからねえ(w
index仕様をcommitした。 殺してあるので、実験したい場合は以下に。 ・#define USE_INDEX ・mkdir board/dat/idx これ主体に書き換えることができれば、 BigBuffer, BigLineを置き換えていくことになろう。
>>696 linuxでは動いているが
freebsdでは動いてないっぽ…鬱
>>696 read.c
> /* XXX これはウソ、Expires: は、
> 現在時間を基準にすべきである */
ローカル時計じゃなくてDateヘッダ(サーバ時間)基準だってば。
>>698 ってread.cgiはそのサーバで実行してるから同じことか (鬱
>>697 単にサイケどっと混むのパーミションの
問題だった(鬱
>>698 おいしいつっこみありがとう。
これで二人とも鬱だ氏のう
CFLAGSに"-march=i686"って入れても大丈夫かな? あと実運用のではLDFLAGSに"-s"って入れた方がバイナリサイズが小さくなる ので その分CGI呼び出しでの負荷が軽くなる......かな?
>>701 ld -s でやってるわけじゃないけど
make strip ってのが用意されてる。
703 :
:01/09/05 21:26 ID:ZOwDxD/w
read.cgi ver5.12 (01/9/5)
>>703 まだまだだねー
漏れは別の仕事が入ったので、休憩中。
>>703 これってcvsのソース持ってってくれてるのかなあ?
ここの成果を参考にしつつ、夜勤さんが管理しているソースを夜勤さん自身が メンテしているのだろうね。トラブルも怖いし転送量削減に関係ない部分の アグレッシブな変更はやはりちょっと手を出しづらいのであろう。
708 :
名無し :01/09/06 00:31 ID:4dWQq6IU
sage でやってると夜勤さんは気付かないらしい。 みんなから、もう忘れ去られてるし。
709 :
辛口 :01/09/06 00:56 ID:TLbpbvsU
俺だけかもしれないけど、新しいおもちゃを買ってもらった子供の気分だったね。 read.cgiに新機能なんか要るわけない。 何か別な機能が必要になれば、別途用意すればいい。 余計な機能は邪魔。 便利になるようにするのはいい。 ただ、それがピーク転送量や負荷に影響する可能性があれば 簡単に時間帯制限を設けたり、機能を外したりできるようにしておくべき。 (ほとんど影響しないならば、是非取り入れるべき) とは言っても、決めるのはここにいる誰かではなく、 夜勤さんであり、ひろゆきである。 特にread.cgiには夜勤さんの決定が最重視されるだろう。 もちろん好き嫌いで決めるのではなく、いろいろ試し、 転送量や負荷を調べ、結果を見て判断するだろう。 ただ、現状のシステムを変化させる必要があるような機能は 夜勤さんはおそらく取り入れない(変更できない)。 現状に合わせて、その中で最善な機能を選択すると思われる。 read.cgiに求められるのは、ピーク時の転送量と負荷の削減。 忘れられかけているが、転送量問題が表面化するまでは、 サーバー負荷が最大の懸案だった。 特殊機能があっても使わなければ同じとは言っても、 ここ(2ch)は、他の人や組織から悪意を持って攻撃される事もある(あった)。 負荷が増える可能性も全て消しておかなければならない。 復帰作業が、スクリプト名を公開せず、 サーバーや時間帯によって厳しく決め事を設けているのを考えればわかるだろう。 便利な機能でも、負荷がかかるようならおそらく外される。 index.htm[l]から"投稿日"が消え、レスから曜日も省かれているのに、 read.cgiは投稿日を非表示にするオプションも(まだ)ない。 文字通り「1バイトを削る」という作業を行っているのに、 常時全レスにアンカーを設定する事に、夜勤さんは同意するだろうか。 natto等に導入されていたread.cgi Ver4.23には、 読みこみdatの最大値を時間帯によって変動させていた。 (もちろん、サーバーの負荷を考慮して。実際、bbspinkの最大値が変更された) こんなオプションも(まだ)ない。 こういった基本的な点をもう一度重視して、 安定化を図るべきではなかろうか。 で、良さそうと思えるバージョンが安定したら、 そこで簡単なオプション説明でもつけて夜勤さんに推薦するといいのでは? ここでずっと続けているから、夜勤さんも安定していないと考えて 取り入れないのかもしれない。
711 :
:01/09/06 04:01 ID:IAYQ/SXs
楽しげな新機能を思いつきました。 新規ログ10件表示にして、表示順を逆にして新しいレスを上に表示する 書き込み後再び、この10件表示にすれば、チャットモードの完成。 実況スレがさらに活発化!(あかんやん・・。) このモードでは、無駄な部分は徹底的に削って超簡易表示モード 日付も時間も表示する必要は無い。 一行レスが乱れ飛ぶ事必死!(笑)
>>709 同意
「こんなん作ってみました」じゃなくって、「ここをこう変更するだけで
○○の低下は××程度に抑えたまま転送量をここまで削減することができます」
という具体的な数字を挙げながら説明をして、変更のリスクに見合うだけの効果が
確実と説得できないと採用されないと思うよ。
#リーマンなら当然分かると思うが。
だからここで30個アイディアが出てそれをこのスレのバージョンですべて採用しても
本番環境では29個ボツになるかもしれない。
それを分かった上でいろいろ試すのはいいんじゃないかと思うけど。
このスレももはや直接的な実装よりも、そういう斬新なアイデアが
出てこないかという部分で期待されてるんだろうし。
更新日:とか年の上2桁、曜日の削除って、圧縮かからないときにしか ほとんど効果ないよな。 圧縮かけられないリクエストって全体のどれぐらいなのかな。
714 :
デフォルトの名無しさん :01/09/06 12:57 ID:iopuCCXI
現在がサーバ負荷よりも転送量に重大な問題があるなら、 指定した板の指定したレスの生データを吐き出すCGIを 用意してくれないかな。 monazillaで利用されて少しは転送量軽減の足しになるのではあるまいか。
正直、採用されない(採用されたがらない?)コードを いじくりまわしてるのは、モチベーションが下がる一方で。 いろいろ問題提起もあったんで、もしこの プロジェクトを続けるんなら、仕切り直しもしたい。 「誰でも気楽に改造を施すことができる」 「評価とかレビューのプロセスが欠落している」 などが、漏れ的には大きな問題になってると 考える。後者は、モチベーションが上がんないと 誰もレビュー買って出ない、というのもあるけど。 また、プロジェクトマスターに相当する人間が いなかったので、実装の方向性が固まってなかった とゆーのもある。漏れが突っ走りすぎたのも、 単に歯止めが利かなかっただけ(w 漏れ的には、「バイト数低減と転送量低減のバランス」 「ローカルキャッシュおよびキャッシュサーバへの キャッシング効率」「実装の軽量化」「潜在バグの追放」 を睨んであれこれ手を出してた。 あ、あと、「オナーニ」「換骨奪胎」もだな(w ちうわけで、もうしばらくは、唯一コテハン晒して 生き残ってる漏れが、取りまとめ役に回っても 構わんのだが、どーよ? 実際の実装にまつわるギロンはまた後ほど。
>>709 一点だけ。
> index.htm[l]から"投稿日"が消え、レスから曜日も省かれているのに、
> read.cgiは投稿日を非表示にするオプションも(まだ)ない。
> 文字通り「1バイトを削る」という作業を行っているのに、
> 常時全レスにアンカーを設定する事に、夜勤さんは同意するだろうか。
夜勤さんが同意するかどうかは置いといて。
投稿日を非表示にするか否かに関して、
ここでは「全部削れ」という意見は出なかったので
誰もその方面に手を着けなかった、と考えるべき。
むしろ、「曜日は復活させてほしい」という意見の
方が多かったと感じてる。(俺もそう思う)
ちなみに、現在の仕様だと、内部で投稿日を
解釈してるので、(曜日の表示を含め)日付フォーマットを
自在にいじるのは簡単。
あ、「投稿日」という文字列を削る話?
ぞぬで見てたから気づかなかった。
あと、アンカーの件は俺の改造を指してると思われ。
俺的な考えでは、局所的に見たらバイト数の増加に
繋がれど、大局的に見たらリクエスト数の軽減に
繋がるのでは? と考えて試験的に導入。
この手の仕様に関しては、いくら思考実験を繰り返しても
結局のところ実地テストなしには最終的な評価が
出せないと思うが、いかが?
path仕様でない箇所で<A name=x>を出してるのは
俺の手落ち。機会があったら禁止しとくっす。
個人的な意見では、1バイトでも削る作業より
他にすることはまだある。
最終的に判断するのは夜勤さんであり、ひろゆきさんで
あるという事実には同意。ただ、キャップが誰も
意見を言ってくれない(放置?)以上、その手前の
レベルでとりまとめを行う人間は必要。
>>712 今後検討する仕様に関しては、
効果予測の文と一緒に提案することにするっす。
ただ、リーマン稼業と違い、
「とりあえず実装してみた、評価頼む」は
大いにありなのだと考える。
以前ウニクース板見てた連中に、ここがなんて言われてたか
覚えてる? 「理論ばかりで実装が遅れてる」(←揚げ足歓迎)
なので、漏れはまず実装して、それをたたき台にしたい
と考えた。結果的には、安定版がつくれないので、
ちょっとマズい方針だったんだが。
というわけで、「新機能実装ブランチ」を「バグ取り安定」から
分けないと、作業がしにくいなあ、と昨夜思った。
ちなみに漏れも、いわゆるリーサラだけど、
クライアントに提案して尻込みされた例は数知れず。
説得して採用させたことも多いけどね。
718 :
デフォルトの名無しさん :01/09/06 19:19 ID:nYC88wV.
自己満足でやりたいなら、勝手にやってれば?
>>716 おそらく「投稿日」という語句そのものを削る話だと思います。
>>717 >「とりあえず実装してみた、評価頼む」は
>大いにありなのだと考える。
それは同感なのですが、評価対象がふくらみすぎて、しかも、どこで
defineなりをすればどこがどう変わるのか、途中からさっぱり不明に
なってしまったと感じています。#ifdef の字面と内容が噛み合わない
部分さえ出てきた始末で。
評価してもらうのに最良の方法は、私は結局、全設定を外部ファイルによって
動的変更可能にすることだと思います。
そのこと自体が負荷増を伴うのは確かですが、それなら評価が終わって正式
採用の決まった設定から順に、再び内部定義に切り替えればいいのですし。
もし今後も続けるのでしたら、現行read.cgi(ver5.12/ver5.0x)に対し、
新たな選択肢を提起する形で、もう一度実装をし直す必要があるように
感じます。
火急的な課題がなくなったんだったら、そして、今後も改良作業を続けるのだったら、read.cの変更を出来る人を決めるだけでだいぶ違うと思うです。 read.cn変更権にパーミッションかけるだけで、だいぶ作業が効率化すると思います。 今までは時間に追われてましたけど、これからは効率化だけ見ていくべきだと思います。 あと、「こういう機能はいかがですか?」と、夜勤さんなどに確認をとるというのがもっとも効率的だと思います。 これまでの経緯から、私は名無し娘。さんがリーダーになるのが良いのでは?と思います。
>>720 私は、いわゆる「プログラムは読めるけど書けない」人種ですので、ご勘弁を。
#6411さんのようなしっかりとしたコーディングをなされる方が仕切らないと
何もできないlevelに達していると感じます。
? u ?
はじめましてー
詳しく read.c のソースは読んでないのですが
/* SJIS1バイト目=<br>タグ直前の空白が削除可かを適当に判定 */
IE等では
>>722 のようなことになるので,
datファイルの<br>前の空白だけでなく,
datファイルの各行末にある<>前の空白も
削除可能かどうか判定されると完璧ではないかと思います.
>>720 > 今までは時間に追われてましたけど、これからは効率化だけ見ていくべきだと思います。
同意。内部的には、効率化・安全化を進める
べきなんでは〜と。
漏れのコードは安全化より重要な「自己満足化」が多いのだが(w
> あと、「こういう機能はいかがですか?」と、夜勤さんなどに確認をとるというのがもっとも効率的だと思います。
漏れは夜勤さんハァハァではないので追いかけ切れんす。
どなたか、この点のフォローをしていただければ。
>>721 「読める」人間こそ、取りまとめに必要ではないかな?
漏れは「掻けるけど嫁ない」人間なので(w
さしあたっては、ブランチを設けることを提案。
反論は煽り系のキャラで逝ってみる
>>716 >あ、「投稿日」という文字列を削る話?
>ぞぬで見てたから気づかなかった。
関連スレや意見を読んだりすれば、
どういう状態になっているか、板を開いてみる程度はするのが普通。
現状を認識しようとする意志が全くないわけね。
現状を把握せずに機能を提案できるなんて、すばらしい。
>俺的な考えでは、局所的に見たらバイト数の増加に
>繋がれど、大局的に見たらリクエスト数の軽減に
>繋がるのでは? と考えて試験的に導入。
試験的に導入した割に、完全に書き換えてしまうわけね。
戻せるとはいえ。「俺的な考え」を基に。
で、コンパイルが通らなくなったりしても、
尻拭いは後回しにして、結局他の人がすることになるわけだ。
>この手の仕様に関しては、いくら思考実験を繰り返しても
>結局のところ実地テストなしには最終的な評価が
>出せないと思うが、いかが?
その通り。だから?
簡単にテストができるようにしておけばいいものを、
まるで仕様が確定したかのように扱うのはどうかと思うが、いかが?
>>717 >個人的な意見では、1バイトでも削る作業より
>他にすることはまだある。
個人的な意見なんでしょ。他人に押し付けないでよね。
ま、ある程度は同意するけど。
そもそも「1バイトを削る」自体が夜勤さんの言葉からの引用だけど、
それも読んでないんだろうね。
>「とりあえず実装してみた、評価頼む」は
>大いにありなのだと考える。
その通りだね。
普通は評価前に仕様確定するようなやり方はしないけどね。
あ、俺はリーダーに最も適任なのは夜勤さんだけど、忙しいだろうし
それ以外では名無し娘。 ◆vP.bOZFQさんが適任だと思うね。
関連スレのチェックもしているし、重視すべき事項を一番わかっていると思う。
直接コーディングなんかできなくても、
機能追加の方向性やスケジュール等を把握して示してくれれば充分。
以前から、要望やらをまとめたりしてくれてたしね。
既に実装済みの機能や不具合の修正もいくつもあるのに、
(zlib等の他にも、ぱっと見で
>>687 とか
>>559 とか。
>>606 は未?)
fix版が出せないのは悲しいからね。
>>724 >>726 ボランティアの作業で、仕切る人間が口だけじゃまずいと思いますです。
あくまでコーディングをする人にすべての権利があり、それを承知の上で
周りの人もそれぞれの意見をいう。。。という共通意識が何より大切かと。
ですから私が仕切るわけにはいきませんです。
夜勤さんがread.cgiにどれくらいの時間を割けるのかは、わかりません。
ですがやはり、いくらソースが長くなっても、オリジナルのソースと改良案は
(部分毎に)並行して提示しないと、採用には抵抗があると思います。
そろそろ、replace系の関数を最適化する方が先なのかもしれませんね。
マターリと逝くよ… > 現状を認識しようとする意志が全くないわけね。 > 現状を把握せずに機能を提案できるなんて、すばらしい。 オナーニだったんだよ、所詮。 > 試験的に導入した割に、完全に書き換えてしまうわけね。 > 戻せるとはいえ。「俺的な考え」を基に。 > で、コンパイルが通らなくなったりしても、 > 尻拭いは後回しにして、結局他の人がすることになるわけだ。 同意。自分じゃ条件外すことはめったにしないしのー。 > 簡単にテストができるようにしておけばいいものを、 > まるで仕様が確定したかのように扱うのはどうかと思うが、いかが? 放置されてて誰も構ってくれないので、 (うん、外せといわれたら即座に外せはするんだけど) 外す方法を吟味せずにcommitした漏れはダメダメだ。 > 個人的な意見なんでしょ。他人に押し付けないでよね。 オナーニなんだ、言わせてくれよう。 > そもそも「1バイトを削る」自体が夜勤さんの言葉からの引用だけど、 > それも読んでないんだろうね。 読んだ記憶はあるんだが、俺解釈してた。 字面通りに受け取らないとダメねー > 普通は評価前に仕様確定するようなやり方はしないけどね。 <a name=>の件は、正直、すまなかった。 …漏れはもともと煽りキャラ持ってないんだが、 マターリキャラも持ってないので、疲れた… (引用ばかりすると、十分煽りになりうるんだが) …疲れたので、今晩はもう逝くよ…探さないでくれ…鬱だ氏のう
729 :
音楽侍 ◆NtVkSITE :01/09/07 01:28
>>727 >ボランティアの作業で、仕切る人間が口だけじゃまずいと思いますです。
ちょっと違うです。むしろ、全体を見られる人はコーディングしない方がいいです。
どうしても自分が動くと、いろいろ出ます。読めるけどかけない人の方が適任かと。
いろんなプロジェクト見てくださいです。
リーダーやマネジャーがコーディングを始めたプロジェクトは大抵納期間に合いませんです。
品質管理もままなりませんです。
>>728 相談と報告のキモチが良薬かと・・・
とりあえず、既出の不具合で未修正のもの。
キャッシュであぼーんされたレスが見える?(詳細不明)
>>441 PATH_INFO時に間違えるとレス1しか表示されない
>>624 かちゅ〜しゃ規制
>>670 設定ファイル読みこみ時のオーバーフロー
>>674 行末の空白削除
>>723 それ以前は
>>397 だけど、どれだけ残ってるかな・・
その他、今気がついたもの。
批判要望板で最近よく出てくる
「このスレッド大きすぎます」への暫定対処として、
datファイルの大きさがある程度(最大値-16K位)を超えたら、
「もうすぐ読めなくなります。新スレの準備を。」の警告があれば親切かも。
あと、できるだけ設定ファイルから読みこめるようにして、
リメイクは不要にした方がよさそうだね。
改めてソースを見たら、既に
>>674 は修正されてた。氏にます。
他にも修正済みがあるかも。
これまで行った変更点をすべて列挙して、それぞれの目的と変更量とそのリスク、 転送量削減に対する効果、その他の効果などを一覧にまとめてテストケース作って すべて再評価した上で改めて内容を吟味したらいかが? テストサーバに置いてここの住人にテスト手伝ってもらうとかはできるっしょ。 仕様書はソースコード、って状況はやっぱりPGの自己満足モードで終わっちゃうよう。
read.cgiに加えられている変更点は単純に2つに分類できる。 A)転送量・負荷低減のために行われるもの B)機能を追加してより使いやすくするもの そして、それぞれの変更点について、 1)導入する 2)導入しない 3)時間帯によって導入する の3つの選択肢がある。 この3つのうち、1)か2)かを選択するようにしておくのは #ifdefで切り分けるだけなので比較的簡単だが、 3)の形式は#defineで導入し、さらに時刻によって 処理を変化させなければいけないので、1)2)よりは面倒になる。 しかし、転送量や負荷の少ない時間帯に比較テストできるため、 「試しにやってみて結果を知りたい」場合に有効になる。 試した結果が、時間制限付にするか完全導入するかの判断材料になる。 というわけで、「この機能は時間制限つきで導入してみよう」という指針が 示されれば、必要な変更を施して仮導入してもよさそうな気がする。 さらに、外部ファイルで変更可能にしておけばさらに良かも。
ブランチを設けるのは大賛成。 Linuxみたく、安定版と開発版とで仕切る人が別になるのも手だろう。 従事するメンバーを分けるほど人数が多いわけじゃないが。 当面、安定版は現行のVer5.12と同等の機能部を抽出し 不具合を修正したものをベースに、ある程度の機能追加をしたものになると思う。 「ある程度」がどの程度なのかは、まとめ役の人の裁量に従いたいが、 -DZLIBは以前から作ってある -DCHECK_MOD_GZIPはあった方がいい -DUSE_SETTING_FILEは柔軟性のために必要 等々、結構難しそう。 さらに、-DZLIB,-DUSE_MMAP等の「見栄えは変わらないが負荷低減を狙う機能」は、 早目に安定版にいれて、確定させてしまいたいところだ。 また、増えすぎた#ifdefの中で、Ver5.10以前の導入で問題出ていないものは 条件をはずしてしまっていいと思う。 個人的には-DLASTMOD,-DNEWBA,-DGSTR2は全然問題なし、 -DPREVENTRELOADも#ifdef無しで構わないと思うが、 意志決定はまとめ役の人の判断に任せるのが一番。 BadAccessの旧版にあるAccept-UAのリストなどは、 コメントとして残しておくのがいいかもしれない。 (気分的には、BadAccess中のReadOnlyなローカル配列はstaticにしたいなー) あ、娘。さんは「オリジナルも残したほうが」と言ってるな。 だったら、採用をほぼ決定したものに対しては、 同じ1種類の#ifdefにしてしまったら、少しはわかりやすくなるかも。
以下は名無し娘。さんのお手伝い・・・のつもり。
>#ifdef の字面と内容が噛み合わない部分
-DCUTRESLINKは、本当に#define名と内容が一致していない。
変更部のメインは最適化で、リンクの削除はオマケ程度な感じ。
方向としては、
・mmapがSHARED & READONLYで使えるようにBigBufferを読みこみだけに
・ファイル全体やレス全体を走査する回数を極力減らす
・そのために変換や空白削除、
http://のリンク等を全て同時に行う といったところ。
ただ、そのことにより内部で保持するデータ形式が変わってしまい、
他の部分への影響も出ている。
名目通りのCUTRESLINKに相当するのは大きなswitch文の一箇所だけで
全体のdefine名は、つけ直すならBUFFER_READONLYとか
NO_RES_NUL_TERMINATEとか、そんな感じに近いと思う。
>replace系の関数を最適化する方が
上とも関連するけど、現在、-DCUTRESLINKを指定すると
replace系は全く使われない。
現行のVer5.12等では、hlinkReplaceの中でdoReplaceが使われているが、
これもressplitter_splitの内部に吸収されている。
ソース中ではTYPE_TERIが定義されていない場合にsomeReplaceが呼ばれるが、
同等の変換は既にressplitter_split内部で為されているので、本来必要ない。
というわけで、-DCUTRESLINK(内容は違う)を採用する方針でいくなら、
replace系には目を向けなくてもいいと思う。
あえて不安材料を挙げれば、Ver5.1xでの稼動実績があるのが基本部だけで、
保持データ系式の変更や
http://リンク 、mmapとの併用、
これらでの実績が乏しい点があるが、今のところ
まともなdatを低負荷時に読んでいる範囲では、問題は出ていない。
逆に、-DCUTRESLINKを採用しない/条件等によっては機能をoffにしたい、
となる可能性があるなら、replace系の最適化には意味がある。
その辺の判断と指示はまとめ役の人にお任せしたい。
737 :
♯6411 :01/09/07 12:17
>>734 細分してみた。
> A)転送量・負荷低減のために行われるもの
* 外部的に機能がほぼ変わらないもの
A0) 安全性の向上のみを目的としたもの(いわゆるバグフィクス)
A1) 転送量の低減を狙っているもの
A2) 転送量以外の負荷低減
A3) 単なる設計・構造・インタフェイス変更
> B)機能を追加してより使いやすくするもの
B0) 従来仕様と相反しない、独立した機能
B1) 従来仕様の不備を補完するもの
B2) 従来仕様の不備を再定義するもの
B3) 従来仕様と置き換わるもの
フォローきぼんぬ
>>735 PREVENTRELOADは、まだなんとなく
潜在的な問題をはらんでるような気もしない
でもないんだか、杞憂だろうか?
>>736 CUTRESLINKを再評価するのであれば、
名前付けなおしてさらに細分化するのがよろしかと。
あと、従来とまったく置き換わってしまうものに
関しては、モジュールを切り分けることを
前向きに検討した方がいい。
>>730 おつかれ。
ところで、提案していた
>批判要望板で最近よく出てくる
>「このスレッド大きすぎます」への暫定対処として、
>datファイルの大きさがある程度(最大値-16K位)を超えたら、
>「もうすぐ読めなくなります。新スレの準備を。」の警告があれば親切かも。
はたしかに良いな。
是非搭載してほしいところだが、夜勤さんは嫌がるだろうか?
(read.cgiの負荷増大につながるため)
今CHUNKが強制になってる感じ? #ifdefでCHUNKにならない従来型UIにする選択肢なくなってない?
743 :
♯6411 :01/09/07 15:34
ブランチ案 ○リリースには明示的にリビジョンを設ける ex) 5.12 今回は、どの辺から始まってるか微妙なので、 -r4.99あたりで始めるといいのでは。 夜勤さんから、本番に適用したバージョンを もらい受けて、-r5.xx などとしてcommit 以降、Revision 4.99 が存在するとして説明。 ○リリース候補(4.9.x.x) プロジェクトマスター (あるいはマスターから委任された人間) のみがcommitできるブランチ。 cvs tag -b RC-4-99 のようにつくっておく。 ○ワーキングブランチ(4.9.x.x.y.y) 今までheadでやってたものは、みなブランチの中で 作業を行う。 cvs co -r RC4-99 bbs で取り出したブランチに、 cvs tag -b HEAD-4-99 のようにつくっておく。 ○プロジェクトマスターの役目 ・適宜ワーキングを吟味し、RCに取り込み、commit ・夜勤さんの作業に追従 ・新しいリリースが出たら、ブランチを作成。 ○検討事項 ワーキングブランチは、 改造系統毎に分ける、あるいは 担当毎に分ける方がいいかもしれない。 ブランチの作成は、サーバ持ってる aki さん あたりにやってもらえると早いんだけど、 さしあたっては名無し娘。さんがやってもらえれば。 (ローカルで念入りに実験した方がいいかも) 漏れがやってもいいです。
>>743 最新リリースの入手に手間取るようだったら、
さしあたっては8/28 4:00(GMT)あたりのものを
「仮リリース」として据えるといいかも
745 :
音楽侍 ◆NtVkSITE :01/09/07 15:54
検証班の作業も工程に入れて置いてください(^_^;)
ver5.12(夜勤さん版)のひとつ前に実動してたのって、verいくつでしたっけ。。。
昨日ちょっとだけ、試しにteriに入ってるread.cgiをいじめてみたら、zz_xx の
size制限がかなり厳しくなってるようで。zz_xx[20]になってるのかな。
たとえば
http://piza2.2ch.net/test/read.cgi?bbs= "></a> みたいなこと
やられると気持ち悪いからかもしれません。
こんな感じで、いろいろちょこちょこと夜勤さんが手直ししてくださってるのかも。
なんにせよ、一度夜勤さんにお出まし願った方がよさそうですね。
どのソースを元に、どういうとこから手をつけてくのがいいか。
などなど。
747 :
デフォルトの名無しさん :01/09/07 17:56
>>746 > なんにせよ、一度夜勤さんにお出まし願った方がよさそうですね。
さんせい
>>746 -747 そうですよね とにかく運営サイドの誰かに度々ここに来てもらって
意思疎通ができないと こちら側だけで突っ走ってもタダの骨折り損になりそうな
気がしますし
752 :
◆D69Zsbfg @夜勤 ★ :01/09/08 20:33
どうも、お世話になっています。 > みなさん。 明日の未明(今晩)あたりに、登場しまーす。 で、最新版を組み込もうかなぁと目論んでいます。 よろしくお願いします。
753 :
音楽侍 ◆NtVkSITE :01/09/08 20:57
おつかれさまです。
754 :
デフォルトの名無しさん :01/09/08 21:04
ヤター
......となると どれを組み込んでもらうのか整理しておかないと
#defineを消すだけでは外せない機能がありすぎ。やばいって。
全然コード考えてないけど、この程度の条件分けは必要だろ。 /* "投稿日"を(時間帯によって)非表示にする */ #define CUT_DATE_STRING /* テレホタイムに読みこめるdatの最大値 */ #define MAX_FILESIZE_BUSY /* 大きすぎて読みこめなくなります */ #define CAUTION_FILESIZE /* <a name=...> */ #define CREATE_NAME_ANCHOR /* '<'や'&'の直前に、必要ならば空白をいれる */ #define CHARCHECK_STRICT USE_PATHのサブに #define OUTPUT_SUBBUCK #define OUTPUT_INDEX
大きな問題は2点。 1.<a name=>が外せない →単純にサイズが増える(総リクエストが減る可能性はある) 2.CHUNK_ANCHORが外せない →>>nnnでリンクされる範囲が不要に大きくなる 2は、REWRITE_HREF2で一応回避可能。
761 :
デフォルトの名無しさん :01/09/08 22:32
>>757 さっさとやろうかと思うんだけど、
/* "投稿日"を(時間帯によって)非表示にする */
#define CUT_DATE_STRING
これ時間帯判定いるのかな? いらないんでないかと思うがどうかな。
いらないのならr2chhtml.hだけで完結するんだが。
>で、最新版を組み込もうかなぁと目論んでいます。 何が何やらぐちゃぐちゃなのでマズいんではないかと..
>>752 それまでに現状をまとめとかにゃいかんなぁ。
とはいっても、最新版の状況は私もさっぱり(汗
>>758 bbs.cgiがtimeを見ているのですが、これもちょっと心配(w
知りうる資料では、if(time > xx)な比較の仕方をしていないのでだいじょぶそう。
正直、最新版を組みこむのはもう一日待ってもらったほうが無難。 それより、夜勤さんに質問しておいたほうがいいと思う。 ・datの最大サイズは、時間帯によって可変にした方がいいのか ・「大きすぎます」に近付いたら警告を出していいか ・ツールの差分取得(の圧縮)は、.htaccessで対応してもらえるのか ・○○な機能は必要なのか ・○○な機能を組みこんで良いか 等々。
夜勤さんの多忙なので、今日しかチャンスは無いのだと思う。
とりあえず時刻判定なしで /* "投稿日:"を非表示にする */ #define CUT_DATE_STRING commitしたっす
>>763 >知りうる資料では、if(time > xx)な比較の仕方をしていないのでだいじょぶそう。
数値レベルで処理してるものは今回は関係ないよ。
文字列化するときに長さを9桁(以下)固定前提に処理しているものがあると
まずいってだけ。
rewrite_href中、} else { をぶった切って、 #ifdef CHUNK_ANCHOR /* chunk仕様を生かすためのkludgeは以下に。 */ mst = (st - 1) / CHUNK_NUM; mto = (to - 1) / CHUNK_NUM; if (mst == mto) { /* chunk範囲 */ mst = 1 + CHUNK_NUM * mst; mto = CHUNK_NUM * (mto + 1); } else #endif { /* chunkをまたぎそうなので、最小単位を。*/ mst = st; mto = to; } にすれば、CHUNK_ANCHORがdefineされていなくてもコンパイルは通るようになる
mod_gzip使うのなら mod_gzip_item_include mime "text/.*" でいいのではないかな? あとserver-parsedの問題は XBitHack full とした上で .htmlファイルのパーミッションを"g+x"にしてもらえば Last-Modified吐くようになるし
771 :
デフォルトの名無しさん :01/09/08 23:22
CREATE_NAME_ANCHORの変更点を捜索中・・・ r2chhtml.h内で #ifdef CREATE_NAME_ANCHOR ・・・ #else それぞれ、パラメータのlはそのまま無視するようにして、書きなおす CUT_DATE_STRINGとの関係で、さらにややこしいか? #define R2CH_HTML_RES_MAIL(n, l, m, nm, d, t) #define R2CH_HTML_RES_NOMAIL(n, l, nm, d, t) #define R2CH_HTML_RES_SAGE(n, l, nm, d, t) #endif rewrite_href()内の /* 新しい表現をブチ込む */ if (isprinted(st) && isprinted(to)) { d += sprintf(d, "<a href=#%u>", st); } else を、 #ifdef CREATE_NAME_ANCHORで囲む 同、後半の #ifdef USE_PATH を #ifdef CREATE_NAME_ANCHOR に変える 必要なら、rewrite_href2()内の #ifdef USE_PATH で囲まれたif文の、 else までを #ifdef CREATE_NAME_ANCHORで囲む out_html()内の、 pPrintfでフォーマットに R2CH_HTML_RES_MAIL,R2CH_HTML_RES_NOMAIL,R2CH_HTML_RES_SAGEを用いている部分の、 全体を #ifdef CREATE_NAME_ANCHOR で囲み、 #else以下に、同じ内容でパラメータに2つあるlineNoを1つだけにしたものをつける #endif こんなもんだと思う。ただし、未検証(ごめん)
>>768 それくらいは知ってますよん(^^
ちょっと知り得ないところからもtimeと比較する値が提供されているようだから、
念のためのお話。
774 :
デフォルトの名無しさん :01/09/08 23:41
>>772 あててみた。
動作確認も軽くしてみたけど、厳重なチェックとかよろしく
何を考えるべきか混乱中。 まずはソースの整理&可読性の回復かな。 まず zlib を試してみて、うまくいったら正式実装。ただし念のため、 簡単に強制的に gzip_flag = 0 できるようしておいたほうがいいかも。 そして、GZIP/ZLIB関連の#ifdefを整理。 bzip/deflateは考えないことにしてよいかな? expire/cache-controlも考えなくていい? CUTRESLINK関連は、imodeの使い勝手や関数の使用不使用と一部連動しているが、 これらを切り離した上で、1つの-DCUTRESLINK(CUTRESLINKするかしないかの 単純なもの)にまとめる。実装はしておいて、いつでも切り替えられるように しておけばよい(設定外部ファイル化も実装できているのでいつでも移行できるし)。
操作ミスごめん。
>>776 >bzip/deflateは考えないことにしてよいかな?
bzipは考えなくて良いと思う。
deflateはzlibネイティブだし、HTTP/1.1に言及があるので将来的にはアリかな。
>expire/cache-controlも考えなくていい?
当面考えなくていいんじゃないかな。
read.h に追い出されているものと追い出されていないものって、 何か戦略的な区別あります? 一度このあたり整理した方がよいかも。 # ソース読んできます
780 :
デフォルトの名無しさん :01/09/09 00:26
外部的に変化のないcondition消さない? REWRITE_HREF2とかNEWBAとか。
>>778 よくみたらexpiresって実装されているんですね。どうしましょう。。。
すぐに正式作用できそうならしちゃってもいいかと。
>>780 GSTR2 も消してよさそう。従来型との互換はあるので。
COOKIE もとりあえず消しちゃって、お蔵入りじゃダメでしょうか。
condition多すぎて読むのがつらいです。
>>781 了解です。
>>782 Expiresについては
>>679 参照 少なくとも転送量を増やすことはあっても
減らすことはないと思われ
あと、replace系はすべて破棄して、その分、CUTRESLINKする/しない場合の >>xxx へのリンク設定部分を最適化ってことでよさそうですね。 …なんてことを考えていたら、むしろ絶対URI表記にリンク設定(<A>タグ) しないことの方も考えていいような気がしてきた。この部分は.datに<A>タグ ないものをread.cgiでわざわざはっているのだけど、絶対URI表記はコピペ すればそのまま飛べるんだし。どうでしょう?
>>780 USE_INDEX2CGIは、いまさら不要です。
>>775 CREATE_NAME_ANCHORなしでテストしたら、
>>60 が、
read.cgi?bbs=tech&key=998695422&st=51&to=100&nofirst=true
read.cgi/tech/998695422/51-100
になるんですが、これでいいの?
従来仕様(st=60&to=60&nofirst=true)は考えないでいいの?
CHUNK_ANCHORで、"&n=t"ってなっているけど、nofirst=trueと混じっちゃって
キャッシュが効きません。
bbs.cgiとのからみがあるから、n=tとnofirst=trueを簡単に統一できる手段が
欲しいな。
>>785 それはread2ch.hにコメントで書いたけど、CHUNK_ANCHORもコメントアウトすれば目的の番号だけの
参照になるんだよな。
CREATE_NAME_ANCHORなしでCHUNK_ANCHORありってのはそもそも矛盾してるよね?
頭で条件つぶしかけるべき?
>>785 >CHUNK_ANCHORで、"&n=t"ってなっているけど、nofirst=trueと混じっちゃって
>キャッシュが効きません。
この点単純に修正してcommitしてみた。
>>783 了解です。expires部分もいったんソースから消してしまいましょうか。
>>784 補足。read.cgiでの動作を以下のようにしてはどうかなという提案です。
LIMIT_PM - LIMIT_AM:>>xxx のリンク削る。
LIMIT_AM - LIMIT_PM:
http://... ftp://... のリンクはる。
read.cの最後4つの関数 cutWordOff,ExistHlinkX,ExistHlink,hlinkReplaceは
#ifndef CUTRESLINK してしまってよいようです。
>>775 お疲れさま。
rewrite_hrefの後半の書き換え、
>>772 に書いた通りじゃまずいって後で気がついたんだけど、
直してくれたんですね。どうもです。
今、夜勤さん向けにread2ch.hよりちょっとだけ詳しい機能説明書いてます。
勝手にON/OFF推奨してるんで、そのへんの判断がおかしかったらツッコミお願い。
もうちょっと時間くださいな。
>>782 >>783 >>788 EXPIRESは氏んでるってば
まあ役に立つものではないので
ソースから削るのを止めはしないけど
(これって6411氏が入れたんだっけ?)
ひとつひとつ。
>>788 >read.cの最後4つの関数 cutWordOff,ExistHlinkX,ExistHlink,hlinkReplaceは
>#ifndef CUTRESLINK してしまってよいようです。
これ当てました。
>>790 ええ、氏んでるかどうかではなく、ソースから削っちゃうかどうかを。
REWRITE_HREF2削除した。
imodeの時に、最初から(st=1&to=10)の時だけ[次の10レス]が出ません。 なんか、nofirst=true相当になっている感じ。
有効なオプションの説明
◎Ver5.1xで導入済み
○Ver5.1xで導入済みだが、変更あり
△新機能・大きな変更ではない等で、ON推奨
▲新機能・変更が大きいので、とりあえずOFF推奨
×新機能・テスト中等の理由で、開発版でもOFFになっているもの
○CUTRESLINK
ファイルのreadとsplitを最適化する
(define名がおかしい)
○LINKTAGCUT
混雑時間帯に
>>000 形式のレスへのリンクを削除。
「レスを全部読む」の増加への対策として、
表示範囲外のリンクは削除しないように変更。
(CUTRESLINKが有効な時のみ機能する。0/1で指定)
△RELOADLINK
一番最後に、「更新したレスを表示」のリンクを表示する
連打されてもNotModifiedが返るので、大きな負荷にはならないはず。
◎LASTMOD
導入済み。ほぼ必須。
×EXPIRES
proxy用に、キャッシュの保持期限を出力する。
◎NEWBA
BadAccessの新しいバージョンを使う。
稼動中。今のところ問題なし。かちゅ〜しゃ規制に注意。
◎GSTR2
nofirst → n など、短縮形で指示できるようにする
稼動中。今のところ問題なし。
▲USE_PATH
PATH_INFOを処理することにより、
http:://piza2.2ch.net/test/read.cgi/tech/998997848/10-20 のリクエストを処理できるようになる。
CHUNK_ANCHORとの併用で効果を発揮する。
http:://piza2.2ch.net/test/read.cgi/tech/ 時に、板のスレ一覧を表示するため、負荷が増える可能性あり。
×COOKIE
Cookie による名前、E-mail フィールドの初期値の埋め込みを CGI 側で行う
Last-Modified付加により、proxyでキャッシュされた場合に各種の不都合
(最悪の場合、キャップ・トリップのパス漏れ)が発生するため使用不可に
◎PREVENTRELOAD
書き込み直後のリロードを防止する
FORCE_304_TIMEで指定された時間の間、304 Not Modifiedを返す
稼動中。
◎GZIP
△ZLIB
出力を圧縮する。
ZLIBを指定すると圧縮にgzipを使わなくなるため、
プロセス数が減り、負荷低減につながる。
△RAWOUT
datの(差分)取得をread.cgiで処理する。
生datも圧縮して転送量を減らすことができる。
CGIへのリクエストが増加する可能性があるので、負荷が大きくなる可能性あり。
mod_gzipの設定次第では、不要になる場合も。
△USE_MMAP
fread(read)の代わりにmmapを使用する。
負荷の低減が期待できる。
×EXPLICIT_RELEASE
明示的に資源を解放する。
CGIプロセスが終了すれば、資源は解放されるので明示的な解放は不要。
逆に、解放処理が負荷を増加させる危険があるので、OFF推奨。
×USE_INDEX
read.cgi側によるindexの実装(experimental)
/board/dat/idx/ディレクトリがあれば、各レスのindexを作成する。
×ALL_ANCHOR
▲CHUNK_ANCHOR
トップに「全部読む」/CHUNK_NUM毎に区切ったレスへのanchorをつける
どちらかはあった方がよさそうだけど、
CHUNK_ANCHORには、現在、副作用があるので。
※表示範囲外への
>>000 形式のリンクを、1レス分であっても
CHUNK_NUMレス分へのリンクに変更してしまう。
△LATEST_ANCHOR
「最新レス LATEST_NUM」をつける
▲SAGE_IS_PLAIN
sageレスのとき、名前を太字にしない
(<a href="mailto:sage">の代わりに<font color=>をつける)
若干転送量が減るが、見た目が変化する。
×USE_INDEX2CGI
index2.cgiがあったら、「掲示板に戻る」のリンク先をindex2.cgiにする
もはや不要?
△CHECK_MOD_GZIP
mod_gzipが導入されていたら、「掲示板に戻る」のリンク先を
/板名/ にする。
(OFFにすると、戻り先はaccept-encodingによって、/index.htmか/index.htmlになる)
△CUT_DATE_STRING
"投稿日:"を非表示にする
▲CREATE_NAME_ANCHOR
各レスにアンカーをつける。
CHUNK_ANCHORとの併用でキャッシュ効果が上がる可能性があるが、
転送量を増やす結果になる可能性もある。
これをOFFにした場合でも、CHUNK_ANCHORをOFFにしないと、
>>000 形式のリンク先が広範囲となるため、
転送量を増やす可能性がある。
△USE_SETTING_FILE
板毎に設定が書いてあるファイルを使用する。
板のディレクトリにSETTING_FILE_NAMEのファイルがあり(SETTING.TXTと同じ場所)、
有効なエントリがあれば、デフォルト値を置き換える。
SETTING_R.TXTは
---
FORCE_304_TIME=30
LIMIT_PM=23
RES_NORMAL=50
MAX_FILESIZE=512
LINKTAGCUT=0
---
など。空行可。'='前後の空白不可。'='がなかったり、マッチしなかったりしたら無視
最後の行に改行が入ってなかったら、その行も無視
現在設定可能な値は、
RES_YELLOW
RES_REDZONE
RES_IMODE
RES_NORMAL
MAX_FILESIZE (Kbyte単位で設定)
LIMIT_PM
LIMIT_AM
FORCE_304_TIME (PREVENTRELOAD有効時のみ)
LATEST_NUM (LATEST_ANCHOR有効時のみ)
LINKTAGCUT (CUTRESLINK有効時のみ)
あ、>793 は私。名前書き間違えた
説明がき書いている間に、すでになくなってしまったものがいくつか・・・ ON推奨/OFF推奨は俺の主観なので、他の人の意見も聞いて、 合意のうえで夜勤さんに提案したいな。
△CUT_DATE_STRING "投稿日:"を非表示にする えーと、今現在のbbs.cgiでは":"のようですが、 そのあたりの対応は大丈夫でしょうか?
>>801 その通りになってるつもりですがどうでしょうか(^^;
×なやつ全部消していいすかね? バッサリと。 ×EXPIRES ×COOKIE ×EXPLICIT_RELEASE ; これは…残す? (^^; ×USE_INDEX ; これは残す? ×ALL_ANCHOR ×USE_INDEX2CGI
>>802 datには"投稿日"なんて文字は元からないのか。
今バージョンでは、":"が表示されてません。
>>803 NEWBA,GSTR2 の旧部分も削っちゃってよいと思います。
>>796 NEWBA のかちゅ〜しゃ規制部分も、おそらく大丈夫そうですし。
とりあえず以下のものをバッサリ削除した。 NEWBAの旧部分 EXPIRES USE_INDEX2CGI COOKIE
LASTMODはON固定ってことでcondition消しますか? GSTR2はすでに昔のコードは無いみたい。1文字か完全一致かの 条件分けになってますね。
imodeのむりやり修正。 なんか根本的に間違っている気がするが、ないと困るので。 いんちきでごめん。 dat_out()中に一行追加。 if (out_html(level, line, lineNo)) break; + if (lineNo==1 && is_imode() && nn_st==1) ++out_resN;
どんなもんでしょ? 全ファイル(makefile含む)を どこかに上げていただけると とっても嬉しいです。 で、kaba とかでテストしてみたいです。 まだのようでしたら、また明日 お伺いしますが、、、
本当に、みなさんすみませんねぇ、 感謝 感謝 です。
>>813 あぎゃ。
× ご苦労さまです
○ お疲れ様です
細かいかな(^^;
各設定の説明は
>>796 -798
でなされていますが、
現時点の状態で出しちゃっていいんでしょうかね(笑)
他の皆はどうしたんだろう。寝た?
>>815 ソース追いきれずにコメント不能状態です(氏
一度どこかに導入してもらって仕切り直せれば、それが一番楽かもしれませんね。
>>784 (
>>788 で補足)に書いてあることは、
ressplitter_split()内の
#if 1
#else
#endif
を
#ifndef シンボル名(NO_LINK_URL_BUSY,etc)
#else
#endif
にすれば、ほぼ実現するんじゃなかろうか?
(レス1の時の動作とi-mode対応がどうかな)
まず、全部ダウンロードして、サーバにアップして make しました。 このように言われました。 gcc -c read.c -DHAVE_READ2CH_H -Izlib -g -O2 -Wall -funsigned-char -o read.o read.c: In function `dat_read': read.c:1254: `MAP_FAILED' undeclared (first use this function) read.c:1254: (Each undeclared identifier is reported only once read.c:1254: for each function it appears in.) make: *** [read.o] Error 1
>>818 USE_MMAP時のOS側の定義が足りないようですね。
read2ch.hで#define USE_MMAPをコメントアウトするといかがでしょうか。
USE_MMAP コメントアウチおしました。 こんどは、 gcc -c datindex.c -DHAVE_READ2CH_H -Izlib -g -O2 -Wall -funsigned-char -o datind ex.o datindex.c: In function `create_index': datindex.c:372: `MAP_FAILED' undeclared (first use this function) datindex.c:372: (Each undeclared identifier is reported only once datindex.c:372: for each function it appears in.) datindex.c: In function `open_dat': datindex.c:412: `MAP_FAILED' undeclared (first use this function) datindex.c: In function `datindex_open': datindex.c:457: `MAP_FAILED' undeclared (first use this function) make: *** [datindex.o] Error 1
ってゆーか、Linuxでmmapが失敗したら返す値(シンボル)って何だろ?
現バージョンでの範囲外へのリンクがますいです。 PATHで呼ばれた時は大丈夫だけど、現行形式で呼ばれたときに read.cgi?bbs=tech&key=998997848101-150#145 なんてことになってしまいます。 転送量削減が主なら、PATHで呼ばれたかをチェックしてリンク先を変えることになるのかな。
× コメントアウチおしました。 ○ コメントアウトしました。
>>820 ぐえ。datindex.cって、USE_INDEX時にしか使わないモジュールですね。
これ外しましょう(笑)
Makefileの 9行目、 OBJS = の行で、"datindex.o"を削除してください。
USE_INDEXとか、USE_PATHが#defineされたままだったりして
827 :
◆D69Zsbfg @夜勤 ★ :01/09/09 03:09
>>824 さんに言われた通り
datindex.o を削除したら、できましたー。
>>827 おお! 動いてる!
read2ch.hはどのように変更しましたか? >夜勤さん
それを元に一旦CVS側で区切り(タグ)を付けたいですね。
次のバージョンでは #ifndef MAP_FAILED #define MAP_FAILED (void *)(-1) #endif をread2ch.hに入れたほうが良さそうやね
>>830 read2ch.h は、まだ何も変更してないですー。
>>832 あっまだ、read.cgi にはしてないです。
read5x.cgi です、
CREATE_NAME_ANCHORとか、有効になってる。
夜勤さん、暇な時にでも
>>796 -798にある説明を見て、
何をON(define)にして何をOFFにするか決めちゃうと良いと思うです。
ああなるほど、リンクをクリックするとread.cgiのほうに 飛んじゃうのか。自分の名前を取得するようにできる?
>>818 おつかれさまです。
んっと、暇あったら、
$ fgrep -n MAP_FAILED /usr/include/*.h /usr/include/sys/*.h
の実行結果を教えていただけませんか?
何のディストロなんだろ??
>>834 夜勤さんへ。
暫らくread5x.cgiでテストするのでしたら、read2ch.hで
#define CGINAME "read5x.cgi"
にしていただけないでしょうか。
>>838 rewrite_href内でCGINAME使ってない(涙
なにもでないです
>>837 fgrep -n MAP_FAILED /usr/include/*.h /usr/include/sys/*.h
じゃあ、一度ここで判明したりしたいくつかの修正を加えて cvsに上げますかね? それをまた夜勤さんにdownloadしてもらう形とか。 夜勤さん、時間どれぐらいとれますか?
>>843 あせりは禁物かと、、、
また、明日の今ごろ登場予定。。。
>>848 おお。>847 とかも出てるし、明日の夜までに直す形がイイ感じ?
>♯6411氏 digest.[ch]いらなくなったのなら、MakefileのSRCSから消してちょうだい。 あと、datindex.cの中身全部を#ifdef USE_INDEXで括っておくように。(w
夜勤さん&みなさまお疲れさまですー。
MAP_FAILED
>>831 でよろしそう。
gzipぱっと見問題なさそう。zlib使えてるってことかな?
確認しましたです。>5x HTTP1.0と1.1で「掲示板に戻る」のindex.htm(l)の切り替え確認しました。 51- 101-ですが、頭に「1」の書き込み表示がないのは仕様でしょうか? もしかするとちょっと不便かもしれません。
n=tはキャッシュが効かないからnofirst=trueにしたんじゃ なかったっけ?
USE_PATHで旧形式を指定されたときはリダイレクトするか BASEを吐いて常に新形式でリンクするというのはどうします?
いまのところはGSTR2と一緒で隠し機能にしたほうがいいかな
とりあえずtag打っときなさいな。
あれ、仕様でしたか?582あたりの。
>>857 って、何かリンクする条件が逆のような気がする
表示範囲内→リンクしない(タグを削除)
表示範囲外→リンクする
とりあえず、今出ている不具合は、↑と
MAP_FAILEDの再定義
>>831 リンク先(rewrite_hrefの#)
>>847 CHUNK_ANCHORで1-が無い
>>852 ぐらいか?
>>860 YAKIN0909 とか
ReleaseVersionになるのは、一日一回がせいぜいでしょ。
>>864 YAKIN20010909でtag打っときました
バージョンを実際の5.XXに合わせるべきだと思います。
今回は、仮リリースだからね。ver14だし。 正式にインストールされた時は、実際のバージョンにすべきだけど。
>>831 read2ch.hだとincludeのタイミングが速かったりするので、read.hに入れた
>>863 えーと、st=xx&to=xxの形式なのに、↓で無条件に xx-xx を付けてるのが問題ではないかと。
わかりづらかったらゴメン
#ifdef USE_PATH
d += sprintf(d,
"<a href=\"%s%d-%d",
depth_expr,
mst, mto);
#else
d += sprintf(d,
"<a href=\"%s&st=%d&to=%d&nofirst=true",
depth_expr,
mst, mto);
#endif
>>850 >あと、datindex.cの中身全部を#ifdef USE_INDEXで括っておくように。(w
括った(笑)
やっぱ ネスケ4.72ではgzip圧縮した場合にContent-Lengthが入ってると
Last-Modifiedが無効になるみたい
HTTP/1.1 200 OK
Date: Sat, 08 Sep 2001 20:00:12 GMT
Server: Apache/1.3.6 (Unix) PHP/4.0.3pl1 mod_ssl/2.3.6 OpenSSL/0.9.3a
Content-Encoding: gzip
Last-Modified: Sat, 08 Sep 2001 19:33:13 GMT
Content-Length: 974
Connection: close
Content-Type: text/html
場所:
http://kaba.2ch.net/test/read.cgi?bbs=news&key=999920210 ファイルMIMEタイプ: text/html
ソース: 現在、ディスクキャッシュに入っています
ローカル キャッシュ ファイル: MUOF7EA1
最終更新日時: 09/09/01 04:33:13 地方標準時
最終更新日時: 09/08/01 19:33:13 世界標準時(GMT)
内容サイズ: 41675
有効期限: 日付なし
文字セット: Shift_JIS
セキュリティ: このドキュメントでは暗号化によるセキュリティ保護は行われていません。
>>869 PATHではなく旧形式で呼ばれたときに、USE_PATH時でも旧形式で >> のリンクを
生成するようにしてみた。
んじゃ寝るー。
/dat/が見れない状態が続くならdat制限サイズ警告は 優先度高いですね
>>793 でREWRITE_HREF2は削除したって書いてますけど
まだソースに残ってませんか?
lockに関しては やるとしたらread.cgiではshared lock(F_RDLCK) bbs.cgi等の書き込み側ではexclusive lock(F_WRLCK)になるんだろうけど どっちにしろbbs.cgi等の書き込み側の協力がないと......
#ifdef Katjusha_Beta_kisei "Kathusha", #endif つづりが間違っています。 "Katjusha",
>>883 直した。
>>875 リンクを貼ってくれない場合や、#95などが出る原因を修正。
if (!*zz_http_user_agent && !*zz_http_language)
というのがあるんだが、*が付いてるのは理由があるのか?
NULLチェックのつもりだと思うんだが。
>>884 if (!zz_http_user_agent)
zz_http_user_agent = KARA;
if (!zz_http_language)
zz_http_language = KARA;
ってのが別にあるからな。とはいえ
if ( zz_http_user_agent == KARA || zz_http_language == KARA )
とか
if ( zz_http_user_agent[0] == '\0' || zz_http_language[0] == '\0' )
って感じで分かりやすくして欲しい気はするが..
fcntl()でのshared/exclusive lockだと read.cgiがひっきりなしに呼ばれていると bbs.cgi等の書き込み側がexclusive lockを取得できなくなってしまう可能性もあるな... となると 書き込み側では 1. まず別のファイル名でオープンして(例えば"987654321.new")そこに書き込む 2. 書き込みが終わったら rename("987654321.new", "987654321.dat") を実行 って感じでやってもらう方がいいのかも これならread.cgi側でのlockは 考えなくてもいいんだな bbs.cgi等の書き込み側の排他制御は必要だろうけど
CUTRESLINK関係の話が、 -DCUTRESLINKで加えられた変更全体を指すのか、 レスのリンクをカットする機能のみを指すのか、若干わかりにくい。 CUTRESLINKの名前をOPTIMIZE_SPLIT等に変更して、 本来のリンクをカットする部分のみを#ifdef CUTRESLINKで囲うことを希望。
>>886 REWRITE_HREF2削除に漏れあったのか。修正さんくす
CUTRESLINKはONの状態で採用ってことでOFF時のコード消さない? CUTRESLINKまわりの二重状態がいちばんソース見難く、でかくしてる感じだし。
とりあえずの行末の空白削除(タグ消し)対策
ressplitter_split()の、case ' ':
- if (bufp == *This->buffers) /* 名前欄が半角空白の場合 */
- *bufp++ = ' ';
+ if (bufp == *This->buffers /* 名前欄が半角空白の場合は最低1文字必要 */
+ || (resnumber && isSJIS1(*bufp-1))) /* 行末の文字化け対応 */
+ *bufp++ = ' ';
/*
resnumberのチェックを外せば名前・メール欄の
直後の空白もある程度消せるようになるが、
厳密に判定しないと(名前欄が)でこぼこに
なってしまうので、もう少し待ち。
*/
転送量的には、"名無しさん"の"ん"の直後の空白が(今のままでは)
削除できないのが痛い(3byte前から調べれば削除できる)ので、
空白が必要かを完全に判定する厳密なルーチン
(末尾から調べ、長くても数文字で終わるはず)を作成予定。
名前とメールの直後の空白が消せるし、
<br>前の空白もまだ結構残っているので、
処理を少し複雑にしてでもやる価値はあると見る。
もう一点。
index.htmlに合わせる場合、
メール欄が"0"の場合は""として扱うほうが良いのかな、と。
その場合、
splitting_copy()の最後に、
+ if (s[1][0] == '0' && s[1][1] == '\0')
+ s[1][0] = '\0';
つければOK。
以上は、
http://teri.2ch.net/test/read.cgi?bbs=accuse&key=994071363&st=448&to=449 の問題は、dat内に'&','<',"
http:// "が現れるたびに直前の文字をチェックして
' 'を入れるか判定する必要がある割には、実際に壊れている割合は非常に少なく、
費用対効果の点で疑問が残るので、OFF推奨のconditionとして実装予定。
>>890 個人的には賛成。
Ver5.12でも使われているし、ON前提で書かれている機能もけっこうある。
他にも同意する人がいて、反対する人が現れなかったら、
必要なのは「決断」?
>>894 ということでCUTRESLINKをON固定として条件削除しました。
>賛成多数につき(笑) 笑った。
そういえば、LASTMODもまだON固定にしてなかったよね? ネスケ関係の問題ってLastModifiedを吐く側には対処できそうにないし、 ON固定にして、万一不具合が出てもその都度対処すればよいのではないかと。
批判要望板では、曜日は表示して〜〜〜とのことです。 会社行く日なのか判断出来なくなっちゃうよ〜〜〜。
>>900 LASTMOD ON固定にした。
>>891 + || (resnumber && isSJIS1(*bufp-1))) /* 行末の文字化け対応 */
これってSJISの1バイト目でも2バイト目でもつかえるコードがたまたまそこにあると
誤動作するよね?
「投稿日:」は削っていいから、「(日)」を・・・。
>>902 でも曜日ってread.cgiで消してるんじゃないんだよね(笑)
私も曜日賛成。でも曜日はbbs.cgiなんですよねぇ。 read.cgiで現在時刻/日付でも表示しますか?
905 :
デフォルトの名無しさん :01/09/09 17:26
もうちょっとこのスレで粘って、
>>875 -877 でやりやすいとこから実装して
削っちゃって下さい。
>.hからいろいろなくなってるけど?
がちょっと気になります。。。
>>901 誤動作(余分に不要な空白を吐く)けど、html上では無視されるので
大丈夫ではないかと。
というか、<br>の直前でも同じアルゴリズム(超単純な判定)で空白をカットしているはず。
>>878 に賛成。
今のところめいめいにdatをチェックして警告、スレ移行を行っているようだが、
dat/が見られないとそれもままならなくなり、混乱を招く可能性が高いのでは?
>>875 >PATH_INFO
具体的にどんな問題だっけ。最初のやつは
>>873 で解決してるはずだけど
"
>>1 "があるときにnofirst=trueでリンクしてしまって結局飛べないってのはあるか。
>CHUNK_ANCHORで1-が無い
無い? あるようにも見えるけど
>CUTRESLINK, replace系関数
CUTRESLINK削除済み
><a name>をつけるかつけないかをconditionによらせる
CREATE_NAME_ANCHORになってる
>スレスト時FORM
>
>>11 なんか「ストッパー」があるかどうか判定するコードは入ってるみたい。
>>877 >condition一覧(更新しなくちゃ)
cvsのconfig.txtでメンテしてる
>>909 >>PATH_INFO
>具体的にどんな問題だっけ。最初のやつは
>>873 で解決してるはずだけど
>"
>>1 "があるときにnofirst=trueでリンクしてしまって結局飛べないってのはあるか。
"
>>1 "のときに限りst=1&to=1&nofirst=trueにして一つだけ見られるようにした。
範囲指定時は1は除外されるままだけど。
r2chhtml.h内のRELOADLINK関係でCGI_NAMEが使われてないっす。 CUTRESLINKがON固定になったので、res_split,findSplitterは消し。 doReplace, someReplaceも消し。 (out_htmlx内でsomeReplaceを読んでいる部分は全て不要) 警告出ししてみた。 read2ch.h /* 「大きすぎます」の警告を出すまでのサイズ(KB単位) MAX_FILESIZE - CAUTION_FILESIZE*1024 を超えたら警告 これが未定義なら、警告は出さない */ #define CAUTION_FILESIZE 16 /* デバッグ用 #define MAX_FILESIZE_BUSY (MAX_FILESIZE - 64 * 1024) */ r2chhtml.h /* ファイルサイズやばい: %d=超えた大きさ %d=表示できない大きさ %s=付加文字列 */ #define R2CH_HTML_HEADER_SIZE_REDZONE \ "<p><table><tr><td bgcolor=red>\n" \ "<font color=white>サイズが%dKBを超えています。%dKBを超えると%s表\示できなくなるよ。</font>" \ "</td></tr></table>" read.c html_head内の、最後のif(is_imode())の直前あたりに、 #ifdef CAUTION_FILESIZE if (zz_fileSize > MAX_FILESIZE - CAUTION_FILESIZE * 1024) { pPrintf(pStdout, R2CH_HTML_HEADER_SIZE_REDZONE, MAX_FILESIZE/1024 - CAUTION_FILESIZE, MAX_FILESIZE/1024, ""); } #ifdef MAX_FILESIZE_BUSY else if (zz_fileSize > MAX_FILESIZE_BUSY - CAUTION_FILESIZE * 1024) { pPrintf(pStdout, R2CH_HTML_HEADER_SIZE_REDZONE, MAX_FILESIZE_BUSY/1024 - CAUTION_FILESIZE, MAX_FILESIZE_BUSY/1024, "時間帯によっては"); } #endif #endif
>>914 とりあえず
r2chhtml.hのRELOADんとこでCGINAMEを使うようにして、
read.cでres_split, findSplitterは削除した。
916 :
デフォルトの名無し :01/09/09 19:07
そろそろ次のスレッドの準備を 名無し娘。よろしく!
あ、警告文字列はコピペだし、 #ifdefで判断する部分と実際の数値を同じdefineで扱ってしまっているので、 その辺は適宜変更お願いします。
>>918 774って買いてしまった。775ね
>>914 >doReplace, someReplaceも消し。
>(out_htmlx内でsomeReplaceを読んでいる部分は全て不要)
これイマイチ不安なんだけど、どうなのかな。
/* findSplitterの代わり これも削除しましょう。関数がなくなったのにコメントだけ 残ってると混乱の元
>>919 someReplaceは !TYPE_TERI のconditionの中にしかありません。
不安ならdoReplace, someReplaceを
#ifndef TYPE_TERI
#endif
で括っては。
ストッパー・1000オーバーのRELOADLINK非表示 dat_out後半の#ifdef RELOADLINK - #endif を 最後の if (strstr("ストッパー")・・・ と html_foot() の間に移動。 if 文内の条件を if (!level && lineMax == lineLast) { →if (!level && lineMax == lineLast && lineMax <= RES_RED && !threadStopped) { に変更。
最近のストッパーは投稿日が「停止」になってるので それの対応も必要ではないかと。
if( s[2]!=0 && strstr( s[2], "ストッパー" )) threadStopped=1; ↓ if( s[2]!=0 && (strstr( s[2], "ストッパー" ) || strstr( s[2], "停止" )) threadStopped=1; でいいかな?
閉じ括弧が1個足りなかった。 if( s[2]!=0 && (strstr( s[2], "ストッパー" ) || strstr( s[2], "停止" )) ) threadStopped=1;
「停止」になってるスレひとつ教えて(笑) datとってきて確認したかったり
>>930 さんくす。確認したのでcommitした
932 :
名無し娘。 ◆vP.bOZFQ :01/09/09 20:41
秘密というか、今の状態は暫定です。 dat とかその辺は、全面改修の可能性あり。 たぶん、dat 直読みはできなくなるでしょう。。。(多分だけどね、まだ決まっていない)
こんな早い時間?から、お疲れさまですー。
936 :
名無し娘。 ◆vP.bOZFQ :01/09/10 00:29
>>914 を確認したいんだけど、現在kaba鯖上に450KBとか、そういうでかいdat
が見当たらない……
どのように動作確認すべきだろうか?
>>937 MAX_FILESIZEを小さく書けばいいんでは
>>937 確認のために巨大なコピペを貼りまくる
↓
アクセス制限を喰らう
↓
(゚д゚)ウマー
ってかkaba鯖バージョンは警告未対応では?
>938 ……おれはなにをボケているんだろうか。 多謝。 >939 アクセス制限は勘弁願いたいが、警告未対応というのはマジですか? テストされていないということ?
恥の上塗りだ…… >940の発言は忘れてください……
とにかく、この2日間は、大車輪の活躍をしてくれた、 775さん、 名無し娘。 ◆vP.bOZFQさん 884さん、 886さん、 等に感謝したい。 本筋に関係ないので前スレで。
[r2chhtml.h] //*********************************************** ・追加 #define R2CH_HTML_TAIL_SIMPLE \ " (%02d:00PM - %02d:00AM の間一気に全部は読めません)<br>\n" /* テストなので使っていないけど */ #define CHUNKED_ANCHOR_SELECT_HEAD(bbs,key) \ "<form><select onchange='" \ "var st=parseInt(this[selectedIndex].text);" \ "location=\""CGINAME"?bbs="bbs"&key="key"&st=\"+st+\"&to=\"+(st+49)+\"&"NO_FIRST"\";"\ "'>" #define CHUNKED_ANCHOR_SELECT_STARTNUM(num) \ "<option>"num"-" #define CHUNKED_ANCHOR_SELECT_TAIL \ "</select></form>" [read2ch.h] //*********************************************** ・ALL_ANCHORとLATEST_ANCHORをなくしたいので LATEST_NUMの扱いをRES_NORMAL等と同様にしてほしい。 //*********************************************** ・追加 /* select form形式で CHUNKED_ANCHORを表示する */ /*#define CHUNKED_ANCHOR_WITH_FORM 「掲示板に戻る」「レスを全部」「最新レス」との統一が取れていない */
[read.c] //*********************************************** ・前半にある#ifdef LATEST_ANCHOR - #endif を 全て条件を外し、中身を生きに。(全部 #ifdef USE_SETTING_FILE の中) //*********************************************** ・out_html()の後半、/* imode */ の手前、 if (isbusytime && out_resN > RES_NORMAL) { ・・・ return 1; } の部分を、 if (isbusytime && out_resN > RES_NORMAL) { #ifdef CHUNK_ANCHOR pPrintf(pStdout, R2CH_HTML_TAIL_SIMPLE, LIMIT_PM - 12, LIMIT_AM); #else ・・・ #endif return 1; } に。
//*********************************************** ・html_head() #ifdef CHUNK_ANCHOR int i; #endif 警告が出るので削除。 //*********************************************** ・同、html_head()の真中辺りから、 } else { の手前(その下がimode)まで、 #ifdef ALL_ANCHOR ・・・ #endif #ifdef CHUNK_ANCHOR ・・・ #endif #ifdef LATEST_ANCHOR ・・・ #endif を、 /* ALL_ANCHOR は常に生きにする ただし、CHUNK_ANCHORが生きで、かつisbusytimeには表示しない */ #ifdef CHUNK_ANCHOR if (!isbusytime) #endif { #ifdef USE_PATH if (path_depth) pPrintf(pStdout, R2CH_HTML_PATH_ALL_ANCHOR); else #endif pPrintf(pStdout, R2CH_HTML_ALL_ANCHOR, zz_bs, zz_ky); } html_thread_anchor(1, first_line()-1); に。
//*********************************************** ・html_foot() 最初から、 if (line <= RES_RED && !stopped) { の手前までを、 static void html_foot(int level, int line, int stopped) { #if 0 /* 初期化した数値を再び使うのはダイジェスト関係だけのはず */ out_resN = 0; /* ここで初期化するといいらしい? */ #endif if (is_imode()) { html_foot_im(line,stopped); return; } if (last_line() < lineMax) { /* RELOADLINKの表示条件の逆なんだけど */ html_thread_anchor(last_line() + 1, lineMax - LATEST_NUM); #ifndef CHUNK_ANCHOR /* 最新レスnnがかぶるので苦肉の策 LATEST_ANCHORを生きにして、なおかつ末尾に持ってきているので out_html内の R2CH_HTML_TAILを修正するほうが 処理の流れとしては望ましいが、 「混雑時にCHUNK_ANCHORを非表示にする」等の場合には 再修正が必要なので保留 */ if (!(isbusytime && out_resN > RES_NORMAL)) #endif { /* LATEST_ANCHORも常に生きにする */ #ifdef USE_PATH if (path_depth) pPrintf(pStdout, R2CH_HTML_PATH_LATEST_ANCHOR, LATEST_NUM, LATEST_NUM); else #endif pPrintf(pStdout, R2CH_HTML_LATEST_ANCHOR, zz_bs, zz_ky, LATEST_NUM, LATEST_NUM); } } に。
//*********************************************** html_head()の手前あたりに、以下・・・最後までを追加 #ifdef CHUNK_ANCHOR /* first-lastまでのCHUNKED anchorを表示 firstとlastはレス番号。firstに0は渡すなー */ static void html_thread_anchor(int first, int last) { int line = ((first - 1)/ CHUNK_NUM) * CHUNK_NUM + 1; if (first <= last) { #ifdef CHUNKED_ANCHOR_WITH_FORM pPrintf(pStdout, CHUNKED_ANCHOR_SELECT_HEAD("%s", "%s"), zz_bs, zz_ky); for ( ; line <= last; line += CHUNK_NUM) { pPrintf(pStdout, CHUNKED_ANCHOR_SELECT_STARTNUM("%d"), line); } pPrintf(pStdout, CHUNKED_ANCHOR_SELECT_TAIL); #else for ( ; line <= last; line += CHUNK_NUM) { #ifdef USE_PATH if (path_depth) pPrintf(pStdout, R2CH_HTML_PATH_CHUNK_ANCHOR, line, line + CHUNK_NUM - 1, line); else #endif pPrintf(pStdout, R2CH_HTML_CHUNK_ANCHOR, zz_bs, zz_ky, line, line + CHUNK_NUM - 1, (line == 1 ? "" : NO_FIRST), line); } #endif } } #else #define html_thread_anchor(first, last) /* (void)0 nothing */ #endif /* CHUNK_ANCHOR */
/* 最初と最後に表示されるレス番号を返す(レス1を除く) imode未対応, isprintedと同じ動作を。 */ static int first_line() { if (nn_st) return nn_st; if (nn_ls) return lineMax - nn_ls + 1; return 1; } static int last_line() { /* html_footを呼ぶ時に最終表示行を渡すようにすれば要らないんだけど */ int line = lineMax; if (nn_to && nn_to < lineMax) line = nn_to; if (isbusytime) { int busy_last = first_line() + RES_NORMAL - 1 - is_nofirst(); /* 細かい計算間違ってるかも */ if (busy_last < line) line = busy_last; } return line; }
これは何ですか? (^^;
H4sICBbKnTsAA2RpZnMudHh0ANVa/2sbyRX/eQP5H0Y+LkjWKtGuZFuqLr3TOUosIslGUi7X byw+ax2LcyQjrU3vgn7wGNpLzl/SOl8o9O4Hc5Q2d20oR+4OyhVa4vQM9kEhtJTeDymFloQW fFBa6E99Mzuzs7uaVaTYaVMFx9rZmXnvfd6b9208PDyMWuZ07fjM8WbrwtEjsViMPR89Muz5 0GekjY6q2ph+9AhCz9Vna+YsmirnXsmVquVcYTJ7iowr9YaFTjdbM6aRiCeNav2imaHzzUat Pgsk2EqlkK3mKlUjWxqfmCw7KwvTltm2jNLiRc8q/rbeeL06fWF80crYzNoMaShGPgdhS06+ myhCHVQxLaveuNBGJ9GlIJxSwFbSS6B/uWM95e5mAWaVcxXja7lCYfK8ypEZI6oSyDw9BPzk pYikNFVLjblw6FbR6cnyeM5mLl/MqX1aDRspnSuqPnEK+dLZavbM+Lkqx2QsDUwk/dYyGCvd JL2EAJ9MEAYJIJ/u0yo8RGKBctnkEGpbrcUZi6iDSpqKA6kRl/YPLJGbhEw6PZ5UdS3eE9ZL ypCXjyFVOcaN6bjXOFWl068JwLZCAM+Wwpr927FljpzeZY7B01UEUT0eV/X4SB+2cxAhBxSm fxGCrVKPj4Le9D6tsn/uYk8ENbe15xYbhAHhV7gWNNDCqMuun2G0pVJIVaCPqXoi4VrhFYm+ gOF6w/S9UQIk7e/gMGICADchMapIMPEQIIrRQTG6SzFPQZCDM8yWOzoMUEcCjnpitNc5OBAj MYlELpZcGzmjisTSBDTKiWHlXCVnVHLVar50xjidL+SU4RNcMwnQTMqlmacI5yHyLtNMWh9R 0wkaYxT4zAOhUjNiJypKx/5Vn0Xhevu1xfYbFtgPOnYMNRcto2W2S+iriJzE0mS5mC1E7MyF 5YuEg6lsdYLtTPZYmLbmjJq5YM1FOL2FqRakQ7PhhYpVg01ZZEhrYyow5vJJh8FalLNWyU1l y6ALY3ziXOmsY4NRJGEIlfXxCWOiWiwY1Wy+YFTyxalCTkWFfDFfNaaKCDIDnT9mi4Q9oGPO t81DwEKqsCRgM6LzRYoQUu051oNhOqNlWoutBtI8+HYQkQRdUsCmUP1is2YixE9BOqmr6WTK q6TDYCfqjiYDMiYPx/ERCHEaM3K2X7s1Y+/InsMLKIo0Gw5K48TwAT8n7F0UYjxoIpc9lStT 0RX+5uD7szSKRPAxjyb6EzKKxKlQAk8FvKdeqWvcbLWaLfk61DDNWht1L7EV6/lmk/dPBb3O 1lttKzY/3bbwF3gb79IpuVNoujEz12zh/evfXP8RmQofOhXfo3P3VlZXXr12f+07yy/bwztx vLfZwB/jz5a/Qa0kCon3tFWfQUvNeg3NWRfnDWuOVOmGvXWYlGh0rYrIV7JthCyjXoQWcMQb Qa0WDtNpxIojJ5i44N8jaFg8EMgz9kI4+Pb8F07am7r9ksLkYyAY5/PVCQNietF2TV2eyTe9 kivkxqsGMbTw0PPtIRWR/yMqc2xvvmm81lYR/Hr9DfuUKcpss4XCKGMLw1hiT9GTbmkuBXlH OQ+VarZchYXAR01wQPbllDsDyUQ8r8ezDs58lyeOSj1xNMATR5knc4IB2cRj8WISYcH7BBYg rAFMRUWe1xwUhQsnDoeMG1dIkjPgVvUTshW27fsk0tCLaGgIfQWVJiGRKFeqEVXKe8fHN33u eFTG8xjJeWNnjR4J6tLD5GRG4nCyG01rDlIddm6dDEcexNks5j/Wtjcu43tr26t/xjvEV+AP 8SP8kHsH8B/38cdh8oin8P7GD/FPI8yb0IByY+t7n19+FxxAe4Hgb9bwvc3b+KPNn639De8v v0ymenyJ4zMMgkvY7S/AyhoNg/kQxznToYx7xnzbO4NsVJz+NuiGvhSOxBUTGcouJgiKXTwA HBT32WbTwvurd/H99XfxDiCUJ8istfE+9ZB/we/hHfj9CH9+cwn/FX+Gt/CX+Jf4Nv4Nk9bt /Rh/HhmsJsnC7C8v8BlMLLaMvhSLRP7mOBpCgwwaRBZY4cYVUBAJBTFb+Km3jUaTTgpzgyT6 /z3+Cd5aXVr/+pX7b/0J/wrfxQ9h5AGXhFIXZGxuuRNgvDqvM8Ks3eoRGvh/yRm8AzxF0kgv RksdnhAitM7BQacRdd5cMudVNDM33UIzzQZAPmzVrXmTBVkbfEQbbtxfe7OCmG19dV9D1+6q gi4pAVaGBNUWJFMCUVMJkS49AwIPIISXtNMpJEKNpJ38mtGhoSDi70oTMw5xiLOFggNwqDtO hpAkTIZkyQAb9gdJsX8kg+w5TnnkzvO7t0O+7cROXJealiCdNt1XhPQhPPEPYj+E9zb+jneu foTfp+7vIZ0CkQB/Cs7vznLWbYf4Fp23vZwFZ/Jr4b1g5R4NM3eI26ROJiTPbjmmIZfr83Mp r6Xlyh8h9c3oaDdiMgUgiQL61KdHAfZLb1pJ9Ss2lR7iEM/d6uBetQyq0+SNuFL42pW5HUo/ AewkReyk+57Cyxp6jF5CgXo5eF0PCkySMi5xCPuH+slW2aS666ssIeTvnEaB9PAOkKTaCtF1 opBU1zXj4YosMf0++Q9S0hiJkynNcTXBuIQGxCUkTd4H0xI5UwE5u1+PHcEryZW7smhHI75O LVMfeBwtkfA3fwZHX46SRJ8S39PtfIRgPXsaZJqkCgEk3YlmjDZKAsxgjJhB0pG8B/B+Q+kI HykFPhQAfMARkZ+QID+op0FvSS1Qbx6UUW+UQ49BOTQAyiFeJgYv4qVExhtjGB+KXVzWwh7U IqQWCfFXUj4jB0ZWbiFp4ijSkpjsYdBB2Xfs7UHXHTIS370IuJqh8ozR5XHyxclTOcMuKwyN k3FnS+5fwAittOgq/oIbUhIOgDbicwBPSUiSq3k2ZA7qvyy4VM/aCMksRhOHV0d0tSZJye4u J3jtYH9rW82FBbMmCgnFuQE5ieIZgh3+Ofzb3rh85d+Xf0GSW3wPqvotqO7v4K0XGZZO+QGl NG1/hCMR/qcPOkip6ro7zX4WRBWd6eALHZCeyX0Hf3r12vfn8f7aXfzb9Qv4PbyL91aMlfGV 8yunV15duXDld6vnaacDxvEn3MSeCEx3aeoV27Ea4odHk8+evp3QSLiAN7QRqHKiGccgUsQg vPl0L1Wg/40qorIuwaASyzVIsnVtNN3HenEfYz90RKnPWtfE2ZRzp2iw4gt7FD/ewEQSj0SE K0YHtvQRz9XpoMw9/kbIZl60GV2NPt7BA/XYf8BDbq3xLqmLN/ZXN/Du2xZUx76Woiziu7eP IhH/IeP1RgneyAv1dREs7jJog/jqK6T/22jgW1DL3wcT2sXbbz/a/BfeXfsHm4eQN/jgfdYm uIPvLmdBmB+TNsCNG9f+iXfW36FdxvfhZ8veTGxC+CFybj7Au8svea+V8f7G+NUPqQ3/AY7D LbFq462b7+Ddmx/gR2DdQBHv3fgW/oJYOL61nBXzlhfXPlg/Q3q6nlbF/rUvaUuCNjWWlzZ/ gHc3Hq19l7QqxNq1u5T6retnby6BPMD19T/evM2V4w+++IG3VcIPmuyCRX6/EnS94isf/DlE 9DHpQhQF3KA8np6clPQepTf9jugSu/8K9LDP+n8A6D+NSmYsAAA=
952 :
外出ですか? :01/09/11 22:40
スレ違い。
スレを埋めに来ました ______ __________ ∨ ------------- 、____ /  ̄ ̄ ̄.// ̄ ̄|| |___/\○ ○ / // .|| | \\○○○○ [/______. //[ ] || | \\○○ ○ .|| |_| ̄ ̄ .|.| |___\\○○○○ .lO|--- |O゜.|______ |.|_|ニニニニニニl.|○○○○ |_∈口∋ ̄_l______l⌒ l.|_____| l⌒l_|| ○○○○ ──`--'───`ー'─── `--' `ー' ┐ ○○○○ │ ○○○○ │ ○○○○ │ ミ ○○ ○○ 〃 │ ;:○○ ○○; ’〃、、.. | ミ ミ\○ ○゙○ ○/ミ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~〜〜〜〜~~~~~~~~~~~~~~~~~~~
不゜
958 :
デフォルトの名無しさん :01/12/16 03:31
>>951 何それ?BASE64方式エンコードしたもの?
たしか次スレであぷ先がなくて前スレにBASE64エンコードして 貼ったものじゃなかったかな