■スレッドリストへ戻る■ 全部 1- 101- 201- 301- 401- 501- 601- 701- 801- 901- 最新50

プログラマが2chを救う!?

1 :デフォルトの名無しさん :2001/08/25(土) 19:48
結局のところ資金面の調達が不可能なのなら、ここ(技術板)が
動かないと2ch縮小・停止の情勢・・・。

具体的には・・・
・P2Pシステムが代替案としては妥当なのか否か
・他の優良アイデアはあるのか
・言語は何を選ぶのか
・根本的な問題として、2ch(ひろゆき等々)を救う必要があるのか

を話し合っていただきたいと思います。
では、どうぞ・・・・

2 :デフォルトの名無しさん :2001/08/25(土) 20:09
http://cocoa.2ch.net/test/read.cgi?bbs=unix&key=998695422

ここでがんばってるようなので、応援してくらはいー

3 :デフォルトの名無しさん :2001/08/25(土) 20:16
がんばでぇ

4 :デフォルトの名無しさん :2001/08/25(土) 20:20
http://piza.2ch.net/read4.txt
あんま関係ないけどread.cgiのソース

5 :最適化セヨ :2001/08/25(土) 20:28
---
> #ifdef GZIP
> char *zz_http_encoding ;
> int gzip_flag;
> #endif
482a486,488
> #ifdef GZIP
> zz_http_encoding = getenv("HTTP_ACCEPT_ENCODING");
> #endif
507a514,519
> #ifdef GZIP
> gzip_flag = (strstr(zz_http_encoding,"gzip"));
> if(gzip_flag){
> printf("Content-Encoding: gzip\n");
> }
> #endif
509a522,525
> #ifdef GZIP
> if(gzip_flag) { stdout=popen("gzip -cfn3","w"); }
> #endif
>
510a527,529
> #ifdef GZIP
> if(gzip_flag) { pclose(stdout); }
> #endif

6 :デフォルトの名無しさん :2001/08/25(土) 20:34
BadAccess関数、アクセス数が多いと思われるWindows系のチェックを前にせいや。
DreamPassportのチェックなんて最後でいいだろ。
なんで最初にやってるんだよ。

printf使いすぎ。複数のprintfを1つにまとめろ。ついでにputsに置き換えろ。

7 :デフォルトの名無しさん :2001/08/25(土) 20:36
じゃぁこっちのスレでは最適化することにする?
別に張り合うわけじゃないけど、あっちは”緊急に”
gzip 化と Last-modified: チェックを導入したいみたいだし

8 :デフォルトの名無しさん :2001/08/25(土) 20:39
>>7
いいアイディア。
張り合っちゃおう。

9 :デフォルトの名無しさん :2001/08/25(土) 20:44
ではまたーり と >>6 のような問題点について語りましょう。

10 :デフォルトの名無しさん :2001/08/25(土) 20:44
http://teri.2ch.net/test/read.cgi?bbs=accuse&key=998734022&ls=100

11 :どうでも良い事 :2001/08/25(土) 20:44
100とかは半角数字を使う。cgiのバージョンを短く表記する。
>>6
printfまとめるのはコンパイラがやってくれるんじゃねーの?

12 :デフォルトの名無しさん :2001/08/25(土) 20:45
inthrefStop(char x)
はテーブル引いて一行に書き換えろ。

13 :デフォルトの名無しさん :2001/08/25(土) 20:45
いまさら野暮かもしれないけど
logOut(char *txt)
ってアクセス記録だよね....

14 :デフォルトの名無しさん :2001/08/25(土) 20:46
>printfまとめるのはコンパイラがやってくれるんじゃねーの?
んなこたない

15 :デフォルトの名無しさん :2001/08/25(土) 20:47
>>13
ホントだ!!

16 :デフォルトの名無しさん :2001/08/25(土) 20:48
全てのデータをバッファに読み込む必要性ってあるの?

17 :デフォルトの名無しさん :2001/08/25(土) 20:48
全体的にまるっきり速度考慮してね〜な

char*doReplace(char *des,char *str0,char *str1)
{
char*p,*ret= NULL;
chart[SIZE_BUF];
strcpy(t,des);
p = strstr(t,str0);
if(!p)returnret;
*p = '\0';
strcpy(des,t);
strcat(des,str1);
ret = des + strlen(des);
strcat(des,p+strlen(str0));
returnret;
}

18 :これは? :2001/08/25(土) 20:52
fprintf(fp,"(%15s)",zz_remote_addr);

19 :デフォルトの名無しさん :2001/08/25(土) 20:53
>>18
>>13でがいしゅつ 

20 :デフォルトの名無しさん :2001/08/25(土) 20:53
>>18
でもさ、書き込みログじゃなくて、読み込みログだから
いいんじゃないの?

でも、なんか、書き込み時もログとってそう、、、

21 :仕様書無し :2001/08/25(土) 20:53
>>18
アラ探しより先にする事があるだろう

22 :どうでも良い事 :2001/08/25(土) 20:55
セミコロンの前にtab入れてるんだけどなんか意味あるの?
http://piza.2ch.net/read4.txt read.cgiのソース

23 :デフォルトの名無しさん :2001/08/25(土) 20:59
みんながバラバラに最適化していくより、
関数毎にやっていったほうが効率よくない?

24 :デフォルトの名無しさん :2001/08/25(土) 20:59
とりあえず関数ごとに分けて機能表つくろうよ。
---
intBadAccess()

機能:ブラウザが正当かをチェックする
引き値:なし
返戻値:USER_AGENT が正当であれば1、不正であれば0
---

こんな感じでいいかなぁ?

25 :デフォルトの名無しさん :2001/08/25(土) 21:00
じゃ、まずdat_readからか?

26 :どうでも良い事 :2001/08/25(土) 21:00
zz_http_refererに関する行を全削除する。

27 :デフォルトの名無しさん :2001/08/25(土) 21:01
改良版hrefStop

const char s_pHrefTable[] = {
1,0,1,0,0,0,0,0,1,1,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1};

#define hrefStop(x) (isgraph(x) ? 1 : s_pHrefTable[(x)-0x20])

28 :デフォルトの名無しさん :2001/08/25(土) 21:02
みなさん、応援しています。がんばって下さい。

29 :どうでも良い事 :2001/08/25(土) 21:02
最適化する前にラフな仕様書を作るか、きちんとコメント書くかした方が良いんでない?

30 :27 :2001/08/25(土) 21:02
#define hrefStop(x) (isgraph(x) ? s_pHrefTable[(x)-0x20] : 0)
間違えた。

31 :デフォルトの名無しさん :2001/08/25(土) 21:02
問題は帯域幅だから、read.cgiが速くなっても別に意味ないんだよねえ..
まあ、いろいろと突っ込みたくなる codeだけどさ。

32 :デフォルトの名無しさん :2001/08/25(土) 21:03
データ転送量が問題なんじゃなかった?
それだと高速化しても無意味じゃ…

33 :デフォルトの名無しさん :2001/08/25(土) 21:03
intlogOut(char *txt)

機能:読み込みログの記録


引き値:用途不明
返戻値:ファイルエラーで0 、それ以外1
呼び出す関数:BadAccess()

34 :sage@sage.com :2001/08/25(土) 21:03
確かに今のままじゃ流れがちょっと見えにくいし、
簡単なフローとか作ったほうがいいのかも。

35 :27 :2001/08/25(土) 21:04
#define hrefStop(x) (isgraph(x) ? s_pHrefTable[(x)-0x20] : 1)
鬱死

36 :デフォルトの名無しさん :2001/08/25(土) 21:04
>>31
そっちは
http://cocoa.2ch.net/test/read.cgi?bbs=unix&key=998695422
にお任せということで...

>>7 >>8 参照

37 :デフォルトの名無しさん :2001/08/25(土) 21:04
>>31-32
既出です( >>7-9 )。

38 :デフォルトの名無しさん :2001/08/25(土) 21:05
>29
んなもんコード見りゃわかる。
わからなきゃ調べて関数仕様ageたら。

最適化前->後の変化は初学者には結構勉強になるかもね。

39 :デフォルトの名無しさん :2001/08/25(土) 21:08
linuxのstrstrって速いんか?

40 :デフォルトの名無しさん :2001/08/25(土) 21:08
名スレの予感

41 :デフォルトの名無しさん :2001/08/25(土) 21:08
inthtml_bannerNew()
inthtml_banner()

機能:バナーを標準出力に

返戻値:なし (っていうかreturnしてないし)
---------

ほんと役に立たなくてすまないが残りは頼んだ。ちょっと落ちる。

42 :デフォルトの名無しさん :2001/08/25(土) 21:09
>>39
つーか、使わないほうがいいやね。それ。

43 :デフォルトの名無しさん :2001/08/25(土) 21:09
doReplace()も激遅だな

44 :デフォルトの名無しさん :2001/08/25(土) 21:11
81 名前:夜勤 ★ 投稿日:2001/08/25(土) 20:10
あっ へっだ これです、すんません。

----
/**/
/**/
/*
#define CM_BBSPINK
#define LOGLOGOUT 1
*/
#define TYPE_TERI
#define Katjusha_Beta_kisei
----

read.2ch.h のヘッダの中身です。

45 :デフォルトの名無しさん :2001/08/25(土) 21:11
改良版html_bannerNew

inthtml_bannerNew()
{
 cosnt char *banner =
  "<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=1 WIDTH=100%%><TR><TD>\n"
  "<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0 WIDTH=100%%>\n"
  中略
  "</TD></TR></TABLE><P>\n";
 puts(banenr);
}

つーか、putsひとつだけだから関数にするまでもないな。

46 :デフォルトの名無しさん :2001/08/25(土) 21:13
できるだけ最適化して高速化しておけば、
gzip の圧縮レベルを上げることができる。

http://cocoa.2ch.net/test/read.cgi?bbs=unix&key=998695422
では、圧縮レベルをどうするか迷ってたみたいだからね。

ところで、gzip 採用でボトルネックになるのは
cgi なのかな。それとも、gzip エンジン?

47 :うーん :2001/08/25(土) 21:13
ストリームへの書き出し単位が小さいとパケットが分断化しやすいからね。
もっとも、printfストリーム関数使ってるからある程度まとまってるとは思うけど、ライブラリ依存だなぁ。
CGI内部でバッファ制御して吐き出せば多少変わるかもな。
ほとんど気休めな程度な気がするが・・・

48 :デフォルトの名無しさん :2001/08/25(土) 21:14
>>45
return 忘れてるYO!!

49 :デフォルトの名無しさん :2001/08/25(土) 21:16
>>27
isgraph()もテーブルに押し込めろ

50 :地道にやろう :2001/08/25(土) 21:17
とりあえず printfの中の \n を全て取っ払う。

51 :デフォルトの名無しさん :2001/08/25(土) 21:22
UNIX板の作業所に荒しが入った模様。
IRCへ移動するプランが提案されています。

52 :名無 :2001/08/25(土) 21:25
プログラマーはUNIX板へ集合して下さい。
対策を練ります。

53 :デフォルトの名無しさん :2001/08/25(土) 21:26
削除人が待機してるようだから大丈夫。
荒らしがしつこければ制限かけるだろう

54 :デフォルトの名無しさん :2001/08/25(土) 21:28
つーか、いっそのことサーブレットで書き直すと、かなり
よいんじゃない?CGIじゃ限界あるでしょ。

55 :デフォルトの名無しさん :2001/08/25(土) 21:31
共通仕様の鯖しか使えないからダメ。つーか転送量に関係無いし

56 :デフォルトの名無しさん :2001/08/25(土) 21:32
うーん、replace関係がやばそうだな。

doReplace って

*des のうち *str0がみつかったら消す。で、消したところの
始めのポインタを返す

でいいの?

*des ="abcdefg" *str0="cde"
なら

*des = "abfg"
戻り値: des + 2

ってこと?

でもstr1の意味って何?

57 :デフォルトの名無しさん :2001/08/25(土) 21:35
あ、すまん >>56 >>17

かわりににstr1が追加されるのね。

*des ="abcdefg" *str0="cde" *str1="kkkk"
なら

*des = "abkkkkfg"
戻り値: des + 2

なのかな?

58 :デフォルトの名無しさん :2001/08/25(土) 21:37
BadAccess()のuser agent検出ってstrstrの代わりにstrcmpの完全一致じゃ駄目なの?

59 :デフォルトの名無しさん :2001/08/25(土) 21:38
なんせHTTPという超曖昧プロトコルだからねえ

60 :デフォルトの名無しさん :2001/08/25(土) 21:38
1000超えたら表示がおかしくなる、っていうバグもこの
中にあるのかNA...

61 :デフォルトの名無しさん :2001/08/25(土) 21:39
>>58
strcmpのほうが速いの?

62 :デフォルトの名無しさん :2001/08/25(土) 21:39
マジで書きなおしたくなってくる

63 :58>61 :2001/08/25(土) 21:42
strcmpというか完全一致でいいなら
if(strstr(zz_http_user_agent,"DreamPassport"))return 0;
if(strstr(zz_http_user_agent,"DoCoMo"))return 0;
if(strstr(zz_http_user_agent,"J-PHONE"))return 0;

strstr(zz_http_user_agent, "Dreamcast\nDoComo\nJ-PHONE...") return 0
みたいに書き換えられる。かも

64 :デフォルトの名無しさん :2001/08/25(土) 21:43
>63
UAにはたいていバージョン番号が含まれてるし難しいと思われ
とりあえず仕様を変えないで最適化できる範囲で

65 :デフォルトの名無しさん :2001/08/25(土) 21:44
>63じゃなくて>58

66 :デフォルトの名無しさん :2001/08/25(土) 21:44
hlinkReplace、ExistHlink、ExistHlinkX、cutWordOff、someReplace、doReplaceが
協力してurlにリンクを張っているらしいね。
何度もバッファに書き出していて効率悪い。
全部総とっかえしたほうがよさそう。

67 :デフォルトの名無しさん :2001/08/25(土) 21:45
>>66

その関数の依存関係を簡単でいいからおしえてくれるとたすかる。

68 :デフォルトの名無しさん :2001/08/25(土) 21:45
つーかurlにリンク張る処理は全廃でいいんじゃない?
クライアントに任せろ。

69 :68 :2001/08/25(土) 21:47
もちろん仕様は変わるが、IOは確実に減る。

70 :デフォルトの名無しさん :2001/08/25(土) 21:47
かちゅとかだと勝手にリンク入れてくれるしね。

71 :デフォルトの名無しさん :2001/08/25(土) 21:47
最新レスの数を減らせば……(^^;

72 :デフォルトの名無しさん :2001/08/25(土) 21:48
>69
I/O減らすだけが目的ならこのスレで話し合ってる最適化自体
ほとんど無意味です

73 :69>72 :2001/08/25(土) 21:50
処理だってかな〜り高速化されるよ。
2chブラウザとの連携を視野に入れつつ最適化。

74 :デフォルトの名無しさん :2001/08/25(土) 21:50
リンク張りはhttp://探して見つかったら、その手前まで出力してタグを開く
URLの終端まで一文字ごとに出力、URLの終端に来たらタグを閉じて
次のURLを探す。
ってやった方が良いんでない?

75 :デフォルトの名無しさん :2001/08/25(土) 21:51
>73
それならread.cgiは全面的に止めたほうがいいかと

76 :66 :2001/08/25(土) 21:52
hlinkReplaceはリンクリプレースのメイン。
ExistHlinkを呼び出して、対象となるソースの中からurlを抜き出し、同時にリンク済みのタグつきurlを出力してもらい、
それをdoReplaceでhtmlに埋め込んでいる。

ExistHlinkは、http://とftp://とでExistHlinkXを呼び出していて、実際にurlを抜き出しているのはこちら。
ExistHlinkではhttp://があるかどうかを調べて、あるならそこからurlを抜き出し、
そこからcutWordOffで"""を省いて、タグつきurlをsprintfで出力している。
これを直すのはたいへんだな。

77 :デフォルトの名無しさん :2001/08/25(土) 21:53
(いろんな意味でw)自主的に
ttp://〜
ってする板も多いので、いっそ廃止でも……。>http〜

78 :67 :2001/08/25(土) 21:54
>>66 サンクス

79 :デフォルトの名無しさん :2001/08/25(土) 21:54
もっといい方法ありそうだけどね。

int BadAccess()
{
char *agent_accept[] = {
"DreamPassport",
"DoCoMo",
"J-PHONE",
"ASTEL",
"[ja]",
"iCab",
"iBOX",
"WannaBe",
"Macintosh; I;",
"Mozilla/3.0N",
"CBBoard",
"PersonaWare",
"Sharp",
"95",
"NT 4.0",
"WinNT",
};
char *agent_kick[] = {
"WebFetch",
"origin",
"Nozilla",
"WWWD",
};

int i;

if(!*zz_http_user_agent && !*zz_http_language) {
return 1;
}

for (i=0; i<sizeof(agent_accept)/sizeof(char*); i++) {
if (strstr(zz_http_user_agent, agent_accept[i])) {
return 0;
}
}

for (i=0; i<sizeof(agent_kick)/sizeof(char*); i++) {
if (strstr(zz_http_user_agent, agent_kick[i])) {
return 1;
}
}

return 0;
}

80 :デフォルトの名無しさん :2001/08/25(土) 21:54
>75
それだと通常のブラウザから一切見えなくなっちゃうじゃん。

81 :ペイント聖矢 :2001/08/25(土) 21:55
ぷうぷぷぷぷぷぷぷぷプログラマー板がっつつつつつつt!!!!!!??jfだjふぉ@あえああひゃはやはやはやはあはやあはやごふっ

82 :sage@sage.com :2001/08/25(土) 21:57
PGer板停止中?

今、全体のフローらしきものを作ってます。
ところで、dat_readはレス1つ指定でも必ずファイル全部読み出して
処理しているのかな?

83 :デフォルトの名無しさん :2001/08/25(土) 21:59
>>79
すっきりしたね。
でもkickだけあればいいのではないかという気もする。

84 :デフォルトの名無しさん :2001/08/25(土) 22:01
改良版BadAccess

int BadAccess()
{
 char *agent_kick[] = {
  "WebFetch",
  "origin",
  "Nozilla",
  "WWWD",
 };

 int i;

 if(!*zz_http_user_agent && !*zz_http_language)
  return 1;

 for (i=0; i<sizeof(agent_kick)/sizeof(char*); i++) {
  if (strstr(zz_http_user_agent, agent_kick[i]))
   return 1;

 return 0;
}

85 :デフォルトの名無しさん :2001/08/25(土) 22:02
抜本的に見直す為、クラサバから検討しするスレも要るのかも・・・?

86 :79 :2001/08/25(土) 22:04
>>83
確かにそうでした、accept のチェックは要らないですね。

87 :デフォルトの名無しさん :2001/08/25(土) 22:04
ここが止まった場合は↓に行くことにしとく?
http://www.shitaraba.com/bbs/programtech/index.html
どっかもっと良いとこある?

88 :デフォルトの名無しさん :2001/08/25(土) 22:05
>>85
そういう構想だけは前からある。
「2chのような掲示板システムってP2Pで」
http://piza2.2ch.net/test/read.cgi?bbs=tech&key=990334284

89 :デフォルトの名無しさん :2001/08/25(土) 22:10
>>86
改良版の問題は、ドリキャスがブラウザのシェアを独占したら
かえって重くなるということだな(笑)。

90 :sage@sage.com :2001/08/25(土) 22:10
いまさらって感じはするけど流れを簡単にまとめてみました。
間違いとかあったら訂正してくださひ。

1.zz_GetEnv(HTTP各環境変数の取得)
2.logOut(アクセスログ保存)
3.dat_read(datファイルの読み込み)
ファイルサイズの取得
環境変数から読み出し位置等の解析
メモリの確保
ファイルの読み出し
最大表示可能レス数の解析?(getLineMax)
4.dat_out(HTTPD出力要求(表示))
・forループの中身
(st,ls,to等の表示ログ番号制御処理(zz_nfがよくわからない)
指定ログ番号データ表示(out_html))
最終ライン処理(out_html1)
書き込み用フォーム表示処理(html_foot)
5.メモリ開放

out_html関数辺りが結構重要かも、引き続き細かいところ解析していきます。

91 :デフォルトの名無しさん :2001/08/25(土) 22:20
2ch閉鎖の危機なんだと
http://cocoa.2ch.net/test/read.cgi?bbs=unix&key=998695422
の 291 も加えてください。

92 :デフォルトの名無しさん :2001/08/25(土) 22:22
out_html と似た名前の関数があってわかりずらいですよね。
out_html1() だって、、、
コメントもコピペなのかあてにならんし

93 :デフォルトの名無しさん :2001/08/25(土) 22:34
zz_GetStringが何をやりたい関数なのかわからん……

94 :sage@sage.com :2001/08/25(土) 22:39
>>93
zz_GetStringはHTTPの環境変数を取得します。
ブラウザから要求をかけたときに付帯するプロトコル情報です。
あと、http://**.com/read.cgi?st=8%ls=5
のようなcgiに変数を引き渡すときに使用されます。

解析続き

各バッファの相関関係
・BigBuffer datファイルから読み出したデータ格納バッファ
・BigLine BigBufferの各レス先頭位置を示すポインタが格納されている配列

getLineMaxでBigBufferを全てスキャンして、
\nならそのポインタ位置を記憶、NULLに置き換える。
最大転送量・\nが見つからない場合(ファイルの最後?)で処理終了
取得したライン(ログ数)を返す

95 :仕様無しさん ◆NwLv.g/w :2001/08/25(土) 22:40
>93 関数を呼んでるところを見て御覧。

96 :sage@sage.com :2001/08/25(土) 22:42
>>94
ごめん read.cgi?st=3%ls=5
の?以下が環境変数となります。
HTTPDのAPIでこの値を取得できます。

ただ、折れの知っている情報って組み込み用HTTPDについてなので
汎用的なサーバのHTTPDだと違うかもしんない・・・。

97 :93 :2001/08/25(土) 22:45
>>94-95
ありがとう。

98 :sage@sage.com :2001/08/25(土) 22:47
環境変数って表現はちょっと違ってたかもしれませんね。
どちらかっていうとget_envでとってくるのが環境変数ですね。

99 :デフォルトの名無しさん :2001/08/25(土) 23:10
UNIX 板でも同時進行してるんだがmerge しなくていいのか?

100 :デフォルトの名無しさん :2001/08/25(土) 23:11
http://cocoa.2ch.net/test/read.cgi?bbs=unix&key=998695422
でも対策スレが立っています。夜勤さんも来ています。

101 :265 :2001/08/25(土) 23:12
>>7-9

ってことにしたんだけど.. あっちどうなってるんだろう..

102 :デフォルトの名無しさん :2001/08/25(土) 23:15
これってうわさのリファクタリング??

103 :デフォルトの名無しさん :2001/08/25(土) 23:16
>>99
当面問題なのは転送量だからUNIX板の方には
先に走ってもらって転送量削減のめどかついた時点で

圧縮により増えた負荷を下げるようにこちらの結果を
反映していけばよいのではないでしょうか

104 :デフォルトの名無しさん :2001/08/25(土) 23:16
>>102
いいえ、Cプログラミング診断室です。

105 :デフォルトの名無しさん :2001/08/25(土) 23:18
なんか向こうでどんどこ新しいの作っちゃってんだけど
こっちの意見も言っといた方がよくない?

106 :265 :2001/08/25(土) 23:20
>>104
ワラタ

107 :デフォルトの名無しさん :2001/08/25(土) 23:20
main()のdat_read(); dat_out(); は見直したほうが良くない?
全レスbufに溜める方式で良いのか?

108 :デフォルトの名無しさん :2001/08/25(土) 23:21
とりあえず>>84あたりはmergeされてもいいと思うんだけど

109 :デフォルトの名無しさん :2001/08/25(土) 23:21
>>105
とりあえず期日は今月末だから、結果が出るものを
先に作ったほうがよい。というか作り終えたみたいだが
(これからテスト)

110 :デフォルトの名無しさん :2001/08/25(土) 23:21
>>107
そうそう、それ良くないよ。

111 :デフォルトの名無しさん :2001/08/25(土) 23:21
>>103
 それがいいと思う。
ただそうする場合、向こうにその方針伝えて置いた方がよさげ。

112 :デフォルトの名無しさん :2001/08/25(土) 23:21
むこうで作ってるのはgzip対応版でしょ?
向こうはデータの入出力に手を入れている。
こっちはデータの解析・加工に手を入れている。
違うところを修正しているのだから問題ないと思うけど。

113 :デフォルトの名無しさん :2001/08/25(土) 23:22
http://5ch.tanuq.net/
5chへ移動

114 :デフォルトの名無しさん :2001/08/25(土) 23:22
むこうは間に合わせの quick hackだから、
こっちはちゃんと書き直すのがよいと思われ。

っていうか、mmapして行数数えたほうがよくねえか?

115 :UNIX板より :2001/08/25(土) 23:23
read.cgi ver5
419 名前:夜勤 ★ 投稿日:2001/08/25(土) 23:20
piza2 に入りました。
私は 転送量と load average を観察中。。。

116 :デフォルトの名無しさん :2001/08/25(土) 23:25
>>112
今必要とされてる課題は転送量の削減だから、
それ以外の改良を同時に施してもわけわからなく
なるか。
あっちがリリースされてからのほうがいいよ

117 :デフォルトの名無しさん :2001/08/25(土) 23:26
とりあえず、サーバへの負荷よりも、トラフィックが問題らしい。

118 :デフォルトの名無しさん :2001/08/25(土) 23:27
いま read4.c と read5.c compare したけど
gzip関連以外は特に変えてないみたいだよ

119 :デフォルトの名無しさん :2001/08/25(土) 23:27
レス1件ごとに処理する方式にしない?
とゆーかそれなら、練習の為に書いたコードが手元にある。

120 :デフォルトの名無しさん :2001/08/25(土) 23:31
ここは緊急的なスクリプトの改変をするスレじゃない。
とりあえずはgzipの部分と直行性のありそうな、htmlの生成の部分を
最適化しときましょうってスレ。

121 :  :2001/08/25(土) 23:33
なんかunixスレが荒されてる

122 :265 :2001/08/25(土) 23:35
>>119
アップきぼんぬ。

http://server2047.virtualave.net/gorogorogoro/2chresque/



ftp://210.170.209.10/incoming
↑UNIX板で提供されたんだけどたぶん大丈夫でしょう

123 :デフォルトの名無しさん :2001/08/25(土) 23:42
read.cgi 5.00 gzip対応版がとりあえずは動作している模様
読み込みの早さから、圧縮は成功している・・と思われる

2ch閉鎖の危機なんだと
http://cocoa.2ch.net/test/read.cgi?bbs=unix&key=998695422

124 :デフォルトの名無しさん :2001/08/25(土) 23:43
ここの鯖、圧縮対応したの?妙に早い気がするんだが

125 :sage@sage.com :2001/08/25(土) 23:43
やっぱりout_htmlとその周りの関数の最適化が一番よいのかな。

あとバッファに全部読み込まず適時fseekして読み出す場合、
fseekのオーバーヘッドはどうなのかな?

126 :デフォルトの名無しさん :2001/08/25(土) 23:44
左下の表示 readcgi が ver5 になってる。
うまくいったのか?
圧縮に対応してないクライアントだとどうなるんだ?

127 :デフォルトの名無しさん :2001/08/25(土) 23:45
>>126
BadAccessではじかれるんじゃない?

128 :UNIX板より :2001/08/25(土) 23:45
>>126
切り捨て

129 :デフォルトの名無しさん :2001/08/25(土) 23:45
ダウンロードになるんじゃない?

130 :デフォルトの名無しさん :2001/08/25(土) 23:46
あら、切り捨てか

131 :デフォルトの名無しさん :2001/08/25(土) 23:47
やったみたい ↓のバージョン参照

132 :デフォルトの名無しさん :2001/08/25(土) 23:50
プログラム板住人じゃないけど
Win2kSP2+NN3.03Gold[ja]で問題なく表示されるよ

HTTP1.1でmod_gzip が対応らしい、HTTP1.1に対応していない
クライアントの場合は圧縮せずに転送する模様

133 :デフォルトの名無しさん :2001/08/25(土) 23:52
>>132
ありがと

134 :デフォルトの名無しさん :2001/08/25(土) 23:54
>>126 単に生でだらだら出されるだけだよ
wwwoffleで確認

135 : :2001/08/25(土) 23:54
微妙に軽い気がする

136 :しんがり :2001/08/25(土) 23:57
i-mode(D503i)でモナー板の表示確認しました。
手動でls=5にしましたが(^_^;)
http://piza2.2ch.net/test/read.cgi?bbs=mona&key=998714496&ls=5&imode=true

137 :デフォルトの名無しさん :2001/08/25(土) 23:57
はえー。凄いな皆。

138 :79 :2001/08/26(日) 00:07
/*
doReplace

文字列 des の中で最初に現れた str0 を str1 に書き換える。
des が十分大きく無いと、どうなるかはわからない。

例えば des が [A][str0][B] であれば str0 を str1 に置き換え [A][str1][B] になる。
このとき戻り値は B のポインタになる(B に対して doReplace を行うため)
*/
char * doReplace( char * des, char * str0, char * str1 )
{
char *p;
char t[SIZE_BUF];

int str0_length;
int str1_length;

/* 置き換えるべき文字列の位置を取得 */
p = strstr(des, str0);
if (p == NULL) {
return NULL;
}

str0_length = strlen(str0);
str1_length = strlen(str1);

/* 部分文字列以後の文字列を一時保存 */
strcpy(t, p + str0_length);

/* des に書き戻す */
strcat(p, str1);
strcat(p + str1_length, c);

/* 部分文字列以後の文字列の位置を返す */
return p + str1_length;
}

doReplace の無駄を少し無くしました。
一応テストしましたが、もしかしたらバグがあるかも知れないです。

139 :デフォルトの名無しさん :2001/08/26(日) 00:08
[2ちゃんねる閉鎖騒動関連リンク集]
http://members.home.ne.jp/f-line/2ch.htm
主な経緯は批判要望板を参照のこと。

現在、piza2鯖にread.cgi 5.00 gzip対応版が入った模様。
とりあえず動作していて、読み込みの早さからみると、
圧縮は成功している・・と思われる。
これが、8月危機の救世主になるか?

…実況に懲りないモー板がやり玉に挙がらないことを願う…。

140 :VBPG :2001/08/26(日) 00:09
よし!俺も手伝うぞ!

141 :w3m :2001/08/26(日) 00:12
test
deb2.2

142 :デフォルトの名無しさん :2001/08/26(日) 00:13
どうだろう。

143 :デフォルトの名無しさん :2001/08/26(日) 00:16


144 :del厨(新規) :2001/08/26(日) 00:18
僕に出来る事があったら言ってください!

145 :デフォルトの名無しさん :2001/08/26(日) 00:20
>>138
someReplace込みで高速化したほうが良いかも

146 :デフォルトの名無しさん :2001/08/26(日) 00:21
とりあえずgzip改造はほぼ上手くいった模様。
Last-Modified問題はどっちのスレで片付けるのかな?

147 :デフォルトの名無しさん :2001/08/26(日) 00:23
その前に、 gzip -> zlib 改造が必要?

148 :sage@sage.com :2001/08/26(日) 00:28
dat_readのgetLineMax周りに手を加えてみました。

if(!BigBuffer)
{
html_error("メモリの確保に失敗しました。");
lineMax = -8;
}

fp = fopen(fname,"r");
if(!fp)
{
html_error("そんな板orスレッドないです。");
return0;
}
fread(BigBuffer,zz_fileSize,1,fp);
fclose(fp);
BigBuffer[zz_fileSize] = '\0';

for(i=0;i<zz_fileSize;i++)
{
if(BigBuffer[i] == '\0')BigBuffer[i] = '*';

if(BigBuffer[i] == '\n')
{
BigLine[i] = (char *)&BigBuffer[i];
BigBuffer[i] = '\0';
if(lineMax <= RES_RED)
lineMax++;
}
}

return 0;

これでgetMaxLine関数を使用する必要がなくなるかと思います。

149 :デフォルトの名無しさん :2001/08/26(日) 00:29
最新のread.cgiのソースクレクレ

150 :デフォルトの名無しさん :2001/08/26(日) 00:32
UNIX板繋がらないんですけど??
サーバ大丈夫かおい

151 :デフォルトの名無しさん :2001/08/26(日) 00:34
ここがウニ板の避難所ですか(´Д`;)

152 :デフォルトの名無しさん :2001/08/26(日) 00:35
ftp://210.170.209.10/incoming/

153 :デフォルトの名無しさん :2001/08/26(日) 00:35
>>150
荒らされる模様

154 :デフォルトの名無しさん :2001/08/26(日) 00:35
ROMが異様に多いのとキチガイが猛烈な荒らしをかけてスレが機能してません…>Unix板スレ

155 :デフォルトの名無しさん :2001/08/26(日) 00:35
最新版はここだってよ
ftp://210.170.209.10/incoming/new_ver

156 :デフォルトの名無しさん :2001/08/26(日) 00:36
向こうは気違いが発狂中だなあ。

157 :153 :2001/08/26(日) 00:36
○荒らされてる
×荒らされる

158 :1時間程ROMしてるけど :2001/08/26(日) 00:37
ここ10分ぐらいで猛烈にパフォーマンス悪くなったね>UNIX板

159 :デフォルトの名無しさん :2001/08/26(日) 00:37
UNIX板が「無駄」ヴァカに荒らされてて、カキコめない。
だれか、奴を殺せるやついないか?

それから、 >>155 の場所は、あの 369 さんのところなんだから、
用のないパケットは絶対に飛ばさないように。

160 :デフォルトの名無しさん :2001/08/26(日) 00:39
gzip改造の成果のお陰でmod_gzipの導入が検討されているらしい。
このスレッドではひとまず Ver4.21の改造を考えるべきかも。

161 :デフォルトの名無しさん :2001/08/26(日) 00:39
荒らしてる奴のIP抜きたい所だが、ああいうのに限って
串とか通してそうだからなあ。

162 :デフォルトの名無しさん :2001/08/26(日) 00:40
ウザいよ>Unix板住民
雑談・マ板避難所スレでやれ

163 :デフォルトの名無しさん :2001/08/26(日) 00:41
>>162
omaegana-

164 :デフォルトの名無しさん :2001/08/26(日) 00:41
つーか、今まで出てきた改造案をいったんまとめんか?
ある程度まとめて試験とかやったほうが効率よさそうだし

165 :デフォルトの名無しさん :2001/08/26(日) 01:05
改造手伝っていいけど、何すりゃいい?

166 :>165 :2001/08/26(日) 01:06
好きにやって、結果をageてくれ。

167 :sage@sage.com :2001/08/26(日) 01:10
すまん、ちょっと訂正>>148

if(!fp)
{
html_error("そんな板orスレッドないです。") ;
lineMax = 0; ←追加
return 0 ;
}

ファイルエラー時にlineMaxが-8のままになるのを修正。

168 :79 :2001/08/26(日) 01:13
someReplace と doReplace をまとめました。
>>145 さん。指摘どうもです。

/*
someReplace

src の中の str0 をすべて str1 に置き換えた文字列を des に入れて返す。
des は呼び出し側で十分なメモリ取っといてな
*/
int someReplace(char * src, char * des, char * str0, char * str1 )
{
char temp[SIZE_BUF];
int str0_length = strlen(str0);
int str1_length = strlen(str1);

/* 置き換える文字列を取っとく */
strcpy( des, src );

/* まだ文字列が残っていればループ */
while (des) {

/* 置き換えるべき文字列の位置を取得 */
des = strstr( des, str0 );
if (des == NULL) {
break;
}

/* 部分文字列以後の文字列を一時保存 */
strcpy(temp, des + str0_length);

/* des に書き戻す */
strcpy(des, str1);
strcat(des + str1_length, temp);

/* 部分文字列以後の文字列の位置を返す */
des += str1_length;
}

return 1;
}

169 :UNIX板のスレ氏んj :2001/08/26(日) 01:13
If-Modified-Since関係いついては、この辺もちょと読んでみてくれ。
ブラウザの挙動や、一番の問題点である、
「同じリクエストに返すHTMLが二種類ある」点も触れている。
http://green.jbbs.net/computer/bbs/read.cgi?BBS=479&KEY=989936380&START=28

といっても、緊急なので、キャッシュされた時間なんか無視して
とりあえずIf-Modified-Sinceに反応するのが良いかもしれん。

あと、大抵のブラウザは、Last-Modifiedを付加しなくても
レスポンスのDate:を元にIf-Modified-Sinceを付けてくれそうだが、
proxy等を考えると付加したほうがよさそうな気もする。

170 :デフォルトの名無しさん :2001/08/26(日) 01:22
UNIX板より転載age

ソース見たけど、無駄なprintfが多いな…。

printf("\
2ちゃんねるだいすき<br>\
おれもおうえんするよ<br>\
");

な感じで書けば、わずかだけど早くなんない?

171 :デフォルトの名無しさん :2001/08/26(日) 01:27
今時のコンパイラなんだから、
printf(
 "2ちゃんねるだいすき<br>"
 "おれもおうえんするよ<br>"
);
にしろよ。読みやすさも違うし。

172 :デフォルトの名無しさん :2001/08/26(日) 01:27
トリッキーの1こいこい

173 :デフォルトの名無しさん :2001/08/26(日) 01:27
コンパイラが最適化するからおんなじと見た。
それより\nがいらね。

174 :デフォルトの名無しさん :2001/08/26(日) 01:28
index2.html を削る方法を考えてみた。

1. age / sage しかいれないので 名前に mailto: は不要
2. スレッドの最後の
>レスを全部読む 最新レス50 レス1−100 掲示板のトップへ リロード
レスを全部読む 最新レス50 レス1−100 の3つでいいのでは?
3.ラジ@ のバナーがすべての板に張ってあるが必要なの?

175 :デフォルトの名無しさん :2001/08/26(日) 01:28
>>170
10年前じゃあるまいし、毎回zip圧縮してるようなソフトで
そんなみみっちい最適化したところで何がどう変わるというのだ。

176 :デフォルトの名無しさん :2001/08/26(日) 01:30
ところで、サーバー負荷の点では、明らかにCGIは劣るわけだが、
read.cgiの仕様を元にread.phpを作るとかは、
現状では無駄なのかな?
・・・俺には無理だけど

177 :デフォルトの名無しさん :2001/08/26(日) 01:31
なぁんかオープンソースな感じでカッコいいね。
ついでにCのCGIも全部サーブレットにすればいいのに。
やっぱ、サーバの設定がかえれないとかで駄目なのかな?

178 :デフォルトの名無しさん :2001/08/26(日) 01:31
http://server2047.virtualave.net/gorogorogoro/readres.cgi?bo=2chresque&vi=998756363
以前練習に書いたコードの一部です。レス1件ごとに読んで処理してく方式です。
ローカルで実行することを前提にしてるんで、>>半角のタグの書き換え等
無駄な処理もやってます。
デミリタが<>に変った際にやっつけ仕事で拡張したので、その部分は
カッコ悪くなってます。

179 :デフォルトの名無しさん :2001/08/26(日) 01:33
read5.c はどこ?
つーか sourceforge かなんか使わない?

180 :170 :2001/08/26(日) 01:34
さらにネタ出し。
INPUTタグのTYPE=textは省略可能だったと思うが。

181 :デフォルトの名無しさん :2001/08/26(日) 01:36
>>173
>コンパイラが最適化するからおんなじと見た。
確認したのか?コンパイラがprintfを特別扱いするとはとても思えん。

>175
一日100万以上のヒットがあるから
ちょっとでも高速化することでそれなりに負荷が減る。

182 :デフォルトの名無しさん :2001/08/26(日) 01:38
「名前:」「投稿日:」がいらない。
そんなの説明されなくてもわかるし。

183 :名無し :2001/08/26(日) 01:39
>>182 zipが削るでしょ

184 :デフォルトの名無しさん :2001/08/26(日) 01:39
細かいとこやる前に、大きな流れをまず確定させないか?
関数単位にやってもその関数が無くなるかもしれんし。

185 :180 :2001/08/26(日) 01:39
・属性に不要な¥”が多すぎる。
・大文字と小文字の混在は圧縮率の低下を招く。
・<FONT FACE=***>は要らん。
・SCRIPTの LANGUAGE=JavaScript も要らん。
・TABLEの BORDER=1 は、単に BORDER でいいはず。

gzipうんぬんも大切だが、HTML自体がスリムアップできてない。
たとえ1バイトでも馬鹿にすることなかれ。

186 :デフォルトの名無しさん :2001/08/26(日) 01:40
>184
トップダウン・ボトムアップの両方からやりましょ。

187 :デフォルトの名無しさん :2001/08/26(日) 01:41
phpはだめなの?

188 :デフォルトの名無しさん :2001/08/26(日) 01:41
>>184
プロファイリングが大事だよね

189 :デフォルトの名無しさん :2001/08/26(日) 01:41
htmlのタグやレイアウトの話はweb系の板でやらないか?

190 :デフォルトの名無しさん :2001/08/26(日) 01:42
>>189
そうしましょう

191 :デフォルトの名無しさん :2001/08/26(日) 01:43
まだ、ざっと見だが、
・freadはmmapで置き換え(既出)
・zlib使えるなら、popenでgzipに渡すよりzlib使ったほうがプロセス起動がいらない。
と思った。
手元にLinuxないからやりづらい。

192 :デフォルトの名無しさん :2001/08/26(日) 01:44
gzip入るなら恐らく無意味だけど
サーバ側で<html>内圧縮して JavaScriptで展開ってできんかな?

193 :デフォルトの名無しさん :2001/08/26(日) 01:44
まずは、スレ全部をbufに読み込んで処理してる部分の是非を考えましょう。

194 :340 :2001/08/26(日) 01:44
とりあえずprintfはなんとかしないとな。
ちょっと辞書でしらべてみる。

195 :デフォルトの名無しさん :2001/08/26(日) 01:44
>>189
どこのスレでやってるの?

196 :デフォルトの名無しさん :2001/08/26(日) 01:45
あと、ソースを見つけられない人のためにソースの位置も欲しい。

197 :デフォルトの名無しさん :2001/08/26(日) 01:46
スキルの高い方知恵を貸してください
http://natto.2ch.net/test/read.cgi?bbs=hp&key=998741961
htmlのタグ、レイアウトは↑に行きましょう。

198 :デフォルトの名無しさん :2001/08/26(日) 01:47
>192
いっそのことCSVだかdat渡してクライアントで全部展開するとか

199 :デフォルトの名無しさん :2001/08/26(日) 01:48
>>152のftp鯖っておちたのか?
それともただたんにアノニにパーミッションがないだけか?

200 :デフォルトの名無しさん :2001/08/26(日) 01:48
index2.html育成するとき、改行コードいれるのやめ。
ソースみずらくなってもかまわんやろ?

201 :_ :2001/08/26(日) 01:49
>>192
ジャバスクリプト自体(セキュリティーの関係上)嫌ってる人がいるらしいから無理っぽいかな

202 :デフォルトの名無しさん :2001/08/26(日) 01:49
>>200
それは別の話。とりあえずはread.cgiに絞る。

203 :デフォルトの名無しさん :2001/08/26(日) 01:51
>>189
これ以上乱立するのはイヤだからここでいいよ。
つーかまぁ全体的にWEBプロ板の話題なんだけどな(w

204 :デフォルトの名無しさん :2001/08/26(日) 01:51
>>199
サーバのアドレスが変わってます。
新しいアドレスはここ。

ftp://210.170.134.228/incoming/

205 :デフォルトの名無しさん :2001/08/26(日) 01:51
>193
mmap使えば、それを考える必要はないです。(仮想メモリ消費は増えるけどたいしたことないでしょう)
mmapでファイルを仮想メモリに割り当てれば、メモリ間コピーもないし、ディスクからの
実際の読み込みも、オンデマンドで行われます。

206 :デフォルトの名無しさん :2001/08/26(日) 01:51
JAVAScriptは全部頭に埋め込んであるが
外部ファイルにしてやれば、少しはましになると思ふ

207 :デフォルトの名無しさん :2001/08/26(日) 01:52
>>202
失敬

208 :206 :2001/08/26(日) 01:52
スレ違いだった・・・スマソ

209 :180 :2001/08/26(日) 01:52
>>189
分かったが、ネタ切れ。
一応漏れはプログラマーだからC言語の話にする。
ボトムアップでな。

read4.cのint hrefStop(char x)、
テーブル使えば若干早くなるんじゃない?
転送量的にはどうでもいいが。

210 :デフォルトの名無しさん :2001/08/26(日) 01:54
とりあえず過去ログの改造ネタとかまとめておかない?
改造する箇所がいろいろかぶりまくったらアレだし。

211 :ななし :2001/08/26(日) 01:54
曜日表示をなくそうぜ。
一番いらない。
転送量の削減幅も小さいけれど・・・。

212 :デフォルトの名無しさん :2001/08/26(日) 01:54
技術的には改良できても、ここまで2ちゃんが巨大化してしまった以上
やはり管理者への負担はあまり変わらないような気がする。
最終的には何らの制度や規制を掛けるしかないのかもしれないが、
それだと、2ちゃん発足当時の基本的意義がなくなってしまうし。
ネットが一般化してしまった今となっては、どうすることもできないの
かもしれんね。横レスすんまそ

213 :sage :2001/08/26(日) 01:54
関数の呼び出しツリーを作るプログラムが今手元に無い…
どなたかアップしてくれませんか…

214 :デフォルトの名無しさん :2001/08/26(日) 01:55
css + <H3>タグとか使えばテーブルタグなくしても見栄えは確保できるね

215 :デフォルトの名無しさん :2001/08/26(日) 01:56
>>204
ソースか。サンクス。
んで、HTMLは動作すれば文法的には正しくなくてもOKという方針で行くの?
例えば、HEIGHT="1" ではなくて HEIGHT=1 で行く?

216 :デフォルトの名無しさん :2001/08/26(日) 01:56
>>214
CSSは転送量が増えますんで、できればやめて欲しいんですが。

217 :デフォルトの名無しさん :2001/08/26(日) 01:56
cssのスタイル定義ファイルを呼び出す負荷ってのは、
どのくらいなのでしょうか。
Webページを表示させる毎にジワジワリソースを
食い潰すのでしょうか?

218 :デフォルトの名無しさん :2001/08/26(日) 01:57
http://www.goice.co.jp/member/mo/amuse/javascript/expert/

219 :デフォルトの名無しさん :2001/08/26(日) 01:58
根本的にはcgiを使用しなければいい

220 :名無しさん || die :2001/08/26(日) 01:58
HTMLデザインはこっちに移動した方が良いと思う。
こっちは read.cgi の処理の最適化に専念。

スキルの高い方知恵を貸してください
http://natto.2ch.net/test/read.cgi?bbs=hp&key=998741961

221 :MiM :2001/08/26(日) 01:59
>>215
それで良いと思います。

結局、「"」にしても1バイト食ってるわけです。
そんな感じで全ての無駄を省きますと、
かなり軽くなるわけです。
それは、転送量も減りますしユーザーのDLも早いわけですね。
ですから、そういった無駄を省きましょう。

222 :デフォルトの名無しさん :2001/08/26(日) 01:59
いまHTMLのソース見たら改行削除されてるみたい
全体で10行になってた

223 :デフォルトの名無しさん :2001/08/26(日) 02:00
ソースを見たのだけど、無駄多すぎ。
無駄な処理が多い事で結果的に待ちパケットを増やす結果になっていると思う。

access logはapacheにまかせようね(w

224 :デフォルトの名無しさん :2001/08/26(日) 02:00
最新版のread.cgiのソースはどっかにミラーしときませんか?
持ってる人お願いします。

スキルの高い方知恵を貸してください
http://natto.2ch.net/test/read.cgi?bbs=hp&key=998741961
htmlはこっち。

225 :デフォルトの名無しさん :2001/08/26(日) 02:02
>>221
了解しました。あと、IEとNNで動作するものがデフォルトでいいですか?
例として、<TH>タグで囲むと太字にして中心寄せとなる、とか。

引っ越すんですか?

226 :ヨー :2001/08/26(日) 02:03
書き込むのフォームを別ウィンドウにする。

外部JavaScriptにて新しいウィンドウのHTMLを生成。

どうでしょうか?

227 :デフォルトの名無しさん :2001/08/26(日) 02:04
ちこっとみたけど、全部読み込んだ bigbufferをいじくってるねえ。
0を '*' に変えたり。
ここら辺は knowhowから出たものっぽいから変えたくなさそげ。
そんなん片付けられれば、mmap対応なんて簡単そうだが>>205

228 :デフォルトの名無しさん :2001/08/26(日) 02:11
>201
もともとJavaScript使ってるんだから、JavaScriptは問題ないんじゃない?
デフォルトの名前の展開、日時・曜日の算出、リンク貼りなんかは任せてもいいと思う。

JavaScript, CSSは外部ファイル化してサーバに置いて
ブラウザにキャッシュさせるってのは無理なの?

229 :デフォルトの名無しさん :2001/08/26(日) 02:20
FastCGI化は無理?
サーバーにモジュール組み込む必要はあるけど,リクエスト毎の
プロセス起動が無くなるので負荷軽減には貢献しそう.
http://www.fastcgi.com/

230 :デフォルトの名無しさん :2001/08/26(日) 02:21
みんなで力を合わせれ!

gzip 圧縮や Last-Modified 対応など
マクロレベルでの高速化については↓でお願いします。
2ch閉鎖の危機なんだと(Part2.1) @UNIX板
http://cocoa.2ch.net/test/read.cgi?bbs=unix&key=998754174

CGI の無駄なコードの省略など
ミクロなレベルの話題は↓こちらでお願いします。
プログラマが2chを救う!? @プログラム板
http://piza2.2ch.net/test/read.cgi?bbs=tech&key=998736516

無駄なタグの消去やHTMLの修正などは↓こちらでどうぞ。
スキルの高い方知恵を貸してください @web制作管理板
http://natto.2ch.net/test/read.cgi?bbs=hp&key=998741961

応援・グチは↓こちらでどうぞ。
UNIX板で2chのプログラムを開発中 パート2 @批判要望板
http://teri.2ch.net/test/read.cgi?bbs=accuse&key=99875716
上記の意味が解らんやつは首突っ込まずに回線切ってその首吊れ。


他の板の住人へ

ここのURLを張らないで応援板のURLを張ってください。
馬鹿が多く来て話になりません。

231 :デフォルトの名無しさん :2001/08/26(日) 02:23
>>230
ここに応援スレへの誘導はいらんだろ。
あとマクロ・ミクロじゃ訳わからん。


現在このスレでは read.cgi の無駄なコードの省略や高速化など
関数毎の最適化について検討しています。

gzip 圧縮や Last-Modified 対応など
転送量軽減に関する話題は↓こちらでお願いします。
 2ch閉鎖の危機なんだと(Part2.1)
 http://cocoa.2ch.net/test/read.cgi?bbs=unix&key=998754174

無駄なタグの消去やHTMLの修正などは↓こちらでどうぞ。
 スキルの高い方知恵を貸してください @web制作管理板
 http://natto.2ch.net/test/read.cgi?bbs=hp&key=998741961


でいいかと。

232 :デフォルトの名無しさん :2001/08/26(日) 02:23
>227
\0を*に置き換えてるのは、out_htmlが\0で終了判定してるからっぽい。
流れとしては、
1. dat_readでファイルをBigBufferに読み込み、BigBuffer中の\0を*に置き換え。
2. getLineMaxで行数のカウントと、行の先頭のポインタをBigLineにセット
3. dat_outで出力ループを回す。行ごとの出力はout_html。

3のout_htmlでの終了判定を別のもの(行の長さのテーブル作るとか)に置き換えれば
BigBufferはreadonlyでよさそう。

233 :デフォルトの名無しさん :2001/08/26(日) 02:24
>>229
apachのカスタマイズは出来ないって言ってたから無理でしょ。

234 :デフォルトの名無しさん :2001/08/26(日) 02:24
あまりハードコーディングな領域に踏み込むのはアレかと思うのねん。
今のところ問題は転送量で、CGIの負荷ではないのだから
趣味でリファクタリングするにしても、
コードを最適化するのではなく、アルゴリズムを最適化するのら。

HTMLのちまちました最適化とかも、
zip圧縮という大戦略の結果が出てからでも遅くないと思うけど、どうよ?

235 :デフォルトの名無しさん :2001/08/26(日) 02:27
>234
そういう人的リソースの無駄を気にしないでいられるのが
2ch&オープンソースのいいところ(藁

236 :デフォルトの名無しさん :2001/08/26(日) 02:29
つーかzip圧縮しても負荷的にはOKみたいね。
・・俺らのしてる事って無駄かも(w

237 :デフォルトの名無しさん :2001/08/26(日) 02:31
それでも最適化しちゃう漏れ

238 :デフォルトの名無しさん :2001/08/26(日) 02:32
無駄じゃないさ

239 :デフォルトの名無しさん :2001/08/26(日) 02:34
なぜコードを最適化するのですか?

「……そこにコードがあるから。」

240 :デフォルトの名無しさん :2001/08/26(日) 02:34
速くて困る事は無いし。

241 :デフォルトの名無しさん :2001/08/26(日) 02:34
速報板等のアクセス数の多いところでは効果がある…でしょう。

242 :a :2001/08/26(日) 02:35
クライアント環境の均一化を図るためにも、かちゅーしゃのgzip対応を図るとかしないとダメかな・・・

243 :デフォルトの名無しさん :2001/08/26(日) 02:36
read.cgi ver5.0xのソース
ftp://210.170.217.177/incoming/2ch-read-current/read5.c

244 :デフォルトの名無しさん :2001/08/26(日) 02:36
BigBufferは必要なの?

245 :デフォルトの名無しさん :2001/08/26(日) 02:37
みんなで力を合わせれ!

このスレは
read.cgi の無駄なコードの省略や高速化など
関数毎の最適化についてのスレです。

gzip 圧縮や Last-Modified 対応など
転送量軽減に関する話題は↓こちらでお願いします。
2ch閉鎖の危機なんだと(Part2.1) @UNIX板
http://cocoa.2ch.net/test/read.cgi?bbs=unix&key=998754174

無駄なタグの消去やHTMLの修正などは↓こちらでどうぞ。
スキルの高い方知恵を貸してください @web制作管理板
http://natto.2ch.net/test/read.cgi?bbs=hp&key=998741961

応援・グチは↓こちらでどうぞ。
UNIX板で2chのプログラムを開発中 パート2 @批判要望板
http://teri.2ch.net/test/read.cgi?bbs=accuse&key=99875716


他の板の住人へ

ここのURLを張らないで応援板のURLを張ってください。
馬鹿が多く来て話になりません。

246 :デフォルトの名無しさん :2001/08/26(日) 02:37
Server: Apache/1.3.6 (Unix) PHP/4.0.3pl1 mod_ssl/2.3.6 OpenSSL/0.9.3a
何気にPHP入ってるんで、導入検討中のmod_gzipと併用できればかなりよさげだ。

247 :デフォルトの名無しさん :2001/08/26(日) 02:52
read.cgiが起動してる間のファイルに書き込みとかは問題になるよね?<mmap
結構長い時間ロックしなきゃならん気がするけど大丈夫?

248 :デフォルトの名無しさん :2001/08/26(日) 02:54
>>242
http://yasai.2ch.net/test/read.cgi?bbs=win&key=994101139&st=784&to=784&nofirst=true
どう?

249 :デフォルトの名無しさん :2001/08/26(日) 02:54
現在同一サーバにあるCSSとロゴ・バナー・スクリプトを別の少量無料サーバに置くってのはどう?
オーバーヘッドは増えるけど転送量は確実に減る。

250 :デフォルトの名無しさん :2001/08/26(日) 03:02
何だか今日は、ひろゆきに
抱かれてもいいと思ったよ

251 :デフォルトの名無しさん :2001/08/26(日) 03:05
ここのプログラマ思ってたより頭悪いな。

252 :369 ◆3XTuRnAc :2001/08/26(日) 03:06
動作テストさせてください

253 :369 ◆3XTuRnAc :2001/08/26(日) 03:07
もうひとつ書き込みテストです。

254 :デフォルトの名無しさん :2001/08/26(日) 03:07
モナ板めちゃ早いです。

255 :デフォルトの名無しさん :2001/08/26(日) 03:07
read.cgi が ver5.01 になってる

256 :デフォルトの名無しさん :2001/08/26(日) 03:09
うおっ、リロード超速ぇ…

257 :デフォルトの名無しさん :2001/08/26(日) 03:10
>>251
今回はUNIX板に敗北を認めます。

258 :369 ◆3XTuRnAc :2001/08/26(日) 03:11
>256
ていうか、新しい書き込みがないときはReloadはネットワークではなく
キャッシュから読みこむ改造になっていますでしょうか?
書き込みやリロードなどのテストお願いします。

259 :デフォルトの名無しさん :2001/08/26(日) 03:11
スキルのレベルで

gzip 圧縮や Last-Modified 対応の話題

CGI の無駄なコードの省略など の話題

無駄なタグの消去やHTMLの修正などの話題

批判要望板の転送量スレ

応援・グチ

260 :デフォルトの名無しさん :2001/08/26(日) 03:12
まあ、全部のブラウザがgzipに対応しているわけじゃないしね。
read.cgi Ver4.22や4.23で導入された地道な転送量削減も、
Encoding:gzipに対応していないUAの事を考えれば、無駄ではないはず。

261 :デフォルトの名無しさん :2001/08/26(日) 03:13
つーか職人ほとんど向こうに取られてるしな・・
Web板の方にレス数追い抜かれてるし・・

262 :デフォルトの名無しさん :2001/08/26(日) 03:14
みんなで力を合わせれ!

gzip 圧縮や Last-Modified 対応など
転送量軽減に関する話題は↓こちらでお願いします。
2ch閉鎖の危機なんだと(Part2.1) @UNIX板
http://cocoa.2ch.net/test/read.cgi?bbs=unix&key=998754174

read.cgi の無駄なコードの省略や高速化など
関数毎の最適化については↓こちらでお願いします。
プログラマが2chを救う!? @プログラム板(このスレです)
http://piza2.2ch.net/test/read.cgi?bbs=tech&key=998736516

無駄なタグの消去やHTMLの修正などは↓こちらでどうぞ。
スキルの高い方知恵を貸してください @web制作管理板
http://natto.2ch.net/test/read.cgi?bbs=hp&key=998741961

応援やグチ、今後の2chはどうなるか、
何故この事態が起こったかなどの議論は↓こちらでどうぞ。
UNIX板で2chのプログラムを開発中 パート2 @批判要望板
http://teri.2ch.net/test/read.cgi?bbs=accuse&key=998757160


他の板の住人へ

ここのURLを張らないで応援板のURLを張ってください。
馬鹿が多く来て話になりません。
(事態は収束に向かいつつあるよ。みんなすごすぎだyo!)

263 :デフォルトの名無しさん :2001/08/26(日) 03:14
>>258
キャッシュ読んでますね。ちゃんと304返してきてますYO!

264 :デフォルトの名無しさん :2001/08/26(日) 03:14
ま、議論はすれども実際の改造・最適化はあんまししてなかったからね。

265 :デフォルトの名無しさん :2001/08/26(日) 03:14
>>258
あい、キャッシュちゃんと効いとります。
書き込みあったら再読み込みされるのも確認。
Win2kSP2&IE5.5SP2でし。

266 :デフォルトの名無しさん :2001/08/26(日) 03:15
テスト

267 :デフォルトの名無しさん :2001/08/26(日) 03:20
とりあえず、今まででたアイデアをまとめてみた。

>>17 doReplace関数の最適化
>>24 BadAccess関数のヘッダ
>>27 >>30 >>35 hrefStopマクロ化
>>33 logOut関数のヘッダ
>>45 html_banner_New関数の最適化
>>79 >>84 BadAccess関数の最適化
>>90 プログラム全体のフロー
>>138 >>168 doReplace関数の最適化(someReplace関数との統合化)
>>148 >>167 dat_read関数の最適化

いまのところ、こんなもん?
こいつらをうまくまとめればいいのか?

268 :デフォルトの名無しさん :2001/08/26(日) 03:21
とりあえず当面の問題は、圧縮とLast-Modifiedで回避できたと見て
良いのかな。

269 :デフォルトの名無しさん :2001/08/26(日) 03:22
なんかweb板でjavascriptんとこはこっちでやるみたいな事
言ってんだけどどうする?

270 :デフォルトの名無しさん :2001/08/26(日) 03:23
>>269
えー・・

271 :mahm :2001/08/26(日) 03:24
someReplaceは
こっちのほうがよくない?
一応動作確認済み。

int someReplace(char * src, char * des, char * str0, char * str1 )
{
char temp[SIZE_BUF];
char *temp_end = temp;
char *temp_start = temp;
int str0_length = strlen(str0);
int str1_length = strlen(str1);

/* 置き換える文字列を取っとく */
strcpy( temp, src );

*des = '\0';

/* まだ文字列が残っていればループ */
while (*temp_end) {

/* 置き換えるべき文字列の位置を取得 */
temp_end = strstr( temp_end, str0 );
if (temp_end == NULL) {
break;
}
*temp_end = '\0';

strcpy(des, temp_start);
des += (temp_end - temp_start);

strcpy(des, str1);
des += str1_length;

/* 部分文字列以後の文字列の位置を返す */
temp_end += str0_length;
temp_start = temp_end;
}
strcpy(des, temp_start);
return 1;
}

272 :79 :2001/08/26(日) 03:28
>>267
someReplace 関数と doReplace 関数が統合できたと思ったんですが、
someReplace 以外にも doReplace をコールしているところが
あるので、doReplace は消せません。
結局2つの関数を用意する必要があるみたいです。

273 :デフォルトの名無しさん :2001/08/26(日) 03:28
とりあえず、外から呼ばれない関数、特に一回しか呼ばれない奴はstaticにして、コンパイラにインラインさせる。
ちゃんとオプティマイズしてコンパイルする。出来たバイナリはstripする。

あと、read.cgiではないが、書きこんだときトップページにジャンプするが、
それをやめて、「書きこみました。掲示板に戻るにはここをクリック」程度のメッセージを
表示するにとどめて、index2.htmlの読み込みを減らす。

274 :デフォルトの名無しさん :2001/08/26(日) 03:29
doReplaceと改良版someReplace両方残せばいいのでは

275 :デフォルトの名無しさん :2001/08/26(日) 03:29
>>251
酷いいわれようだ、
でもこれじゃあしょうがないか>>148
というわけで修正しとく
lineMax = 0;
for(i=j=0;i<zz_fileSize;i++)
{
if(BigBuffer[i] == '\0') BigBuffer[i] = '*' ;

if(BigBuffer[i] == '\n')
{
if(lineMax <= RES_RED) BigLine[lineMax++] = (char *)&BigBuffer[j];
BigBuffer[i] = '\0'; j = i + 1;
}
}
これでも元のプログラムと等価じゃないっす

276 :デフォルトの名無しさん :2001/08/26(日) 03:30
>>274
両方改良すれば?

277 :デフォルトの名無しさん :2001/08/26(日) 03:34
「最新レス100を表示」を押したときの挙動が変?
レスが全部表示されないときがあるんだけど、どう?
「レスを全部表示」と比べてみて

278 :デフォルトの名無しさん :2001/08/26(日) 03:35
今ボトルネックになってるとこはどこ?
以前公開した時はファイルの読み書きだったけど。

279 :277 :2001/08/26(日) 03:37
ゴメン、他の擦れに解決法出てた。


IE だったら、キャッシュを強く優先する設定になってるからじゃないかな。
[ツール] - [インターネット オプション] - [インターネット一時ファイル]
の [設定...] ボタンを押して、 [保存されたページの新しいバージョンの
確認] のチェックを「ページを表示するたびに確認する」にしてみて
ください

280 :>278 :2001/08/26(日) 03:37
転送バイトあたりにかかる「お金」。
なのでできるだけデータ量を抑えたい。
CPU、メモリなどのリソースの問題ではないみたい。

281 :デフォルトの名無しさん :2001/08/26(日) 03:40
>>170
そもそもprintf系って標準関数の中では激重な部類に入るので、
可変引数ないところはputsにするとか。

ま、それでもzip圧縮とか平気でやってしまってるCGIでは
違いはまったく分からん思います。せいぜい0.1%くらい?(w

282 :デフォルトの名無しさん :2001/08/26(日) 03:41
2chが潰れなっかたのはUNIX板の在日同朋のおかげニダ
2chネラーは感謝汁

283 :デフォルトの名無しさん :2001/08/26(日) 03:42
>>280
ここは圧縮にかかるコストが新たに加わったから、サーバの負荷を
減らすためにread.cgiの最適化をするスレでしょ。
それを踏まえて聞いたんだけど。

284 :デフォルトの名無しさん :2001/08/26(日) 03:44
CGIの改良ではないが、転送量を減らす方法としてこういう方法は使えないか?

index2.htmlをindex.cgiというCGIに飛ばすページに変更する。
昔通りのindex2.htmlを作らずに、index.gz等の名前でGZIPしたデータを作る。
index.cgiはindex.gzをGZIP圧縮プロトコルで転送する。
こうすれば、apacheはそのままで、転送毎の圧縮を避けつつ、indexを圧縮転送できる。

285 :>283 :2001/08/26(日) 03:45
文字列・バッファ処理全般。ちょっとみればわかるけどとにかくコードの質が低い。

286 :デフォルトの名無しさん :2001/08/26(日) 03:46
向こうは一段落着いたみたいですね。

287 :デフォルトの名無しさん :2001/08/26(日) 03:47
>ここは圧縮にかかるコストが新たに加わったから、サーバの負荷を
>減らすためにread.cgiの最適化をするスレでしょ。

そ、そうだったのか。

288 :デフォルトの名無しさん :2001/08/26(日) 03:52
こちらに移ってまいりました

289 :デフォルトの名無しさん :2001/08/26(日) 03:53
つーかread.cgiというネタをみんなで弄るスレです。

290 :デフォルトの名無しさん :2001/08/26(日) 03:53
画面仕様は据え置きで全面書き換え目指した方が良くね?
今のソースはどうかしらんが、大本の時のread4.cなんて
意味のわからんヘッダ付いてたし、
セミコロンの前に何故かタブ入ってるし。

291 :デフォルトの名無しさん :2001/08/26(日) 03:53
>>267にまとまってるみたいですね。

292 :デフォルトの名無しさん :2001/08/26(日) 03:53
そろそろ、こっちに移動するみたいだよ

293 :デフォルトの名無しさん :2001/08/26(日) 03:55
とりあえず、今の課題は「セキュリティホールだけつぶしてしまおう」ということで、こちらに移ってきました@UNIX板
よろしくお願いします。

294 :デフォルトの名無しさん :2001/08/26(日) 03:55
リロードの回数を減らす仕組み。
1回のリロードで流れるデータの量を減らす方法。
について考えた方が良くない?

もちろんコードの最適化も必要だけど

295 :デフォルトの名無しさん :2001/08/26(日) 03:56
状況によって(将来転送量が大きくなったら)制限かけられる仕様が欲しくない?

296 :デフォルトの名無しさん :2001/08/26(日) 03:57
スレ分けない?
ネタ系、セキュリティホール系、最適化系とか。

297 :デフォルトの名無しさん :2001/08/26(日) 03:57
かぶったしかも上げてしまった。ごめん。

298 :デフォルトの名無しさん :2001/08/26(日) 03:57
あ、こっちに移動なん?
ls=付いてないとデフォルトで最新50のみ表示、とかはどーなったの?
転送量減ると思うんだけど・・

299 :デフォルトの名無しさん :2001/08/26(日) 03:57
他のCGIも見直したいんだが、大昔のソースしか持ってないからな〜

300 :デフォルトの名無しさん :2001/08/26(日) 03:58
じゃあdatファイルの構造から変えたほうが
いいかもね。

301 :デフォルトの名無しさん :2001/08/26(日) 03:59
49 名前:名無し 投稿日:2001/08/26(日) 03:58
 read.cgi を全面書き換えという案が浮上してます。
 いそいでプログラム板に結集して下さい。

おいおいすごい重責になってきたぞ(w

302 :デフォルトの名無しさん :2001/08/26(日) 03:59
最新版
ftp://210.170.217.35/incoming/perler/read4.c.5

303 :デフォルトの名無しさん :2001/08/26(日) 03:59
とりあえず<>使うのやめない? tabで良いじゃん。

304 :デフォルトの名無しさん :2001/08/26(日) 03:59
read.cgi以外のソースはUpされてないのでしょうか。
ほかのCGIが無いと2ちゃんねる全体の機構が把握できないので。

305 :デフォルトの名無しさん :2001/08/26(日) 04:00
大元のプログラムとデザインは分離しません?
そのほうが効率的だと思います

306 :デフォルトの名無しさん :2001/08/26(日) 04:01
>>302
こっち
ftp://210.170.217.35/incoming/perler/read4-blank.c.25

307 :302 :2001/08/26(日) 04:01
>>306
ごめんなさい&ありがとう

308 :デフォルトの名無しさん :2001/08/26(日) 04:02
みんなで力を合わせれ!

gzip 圧縮や Last-Modified 対応など
転送量軽減に関する話題は↓こちらでお願いします。
2ch閉鎖の危機なんだと(Part2.1) @UNIX板
http://cocoa.2ch.net/test/read.cgi?bbs=unix&key=998754174

read.cgi の無駄なコードの省略や高速化など
関数毎の最適化については↓こちらでお願いします。
プログラマが2chを救う!? @プログラム板(このスレです)
http://piza2.2ch.net/test/read.cgi?bbs=tech&key=998736516

無駄なタグの消去やHTMLの修正などは↓こちらでどうぞ。
スキルの高い方知恵を貸してください @web制作管理板
http://natto.2ch.net/test/read.cgi?bbs=hp&key=998741961

応援やグチ、今後の2chはどうなるか、
何故この事態が起こったかなどの議論は↓こちらでどうぞ。
UNIX板で2chのプログラムを開発中 パート2 @批判要望板
http://teri.2ch.net/test/read.cgi?bbs=accuse&key=998757160


他の板の住人へ

ここのURLを張らないで応援板のURLを張ってください。
馬鹿が多く来て話になりません。
(事態は収束に向かいつつあるよ。みんなすごすぎだyo!)

309 :デフォルトの名無しさん :2001/08/26(日) 04:02
>>305
やっぱformのからみとかでjavascriptんとこはweb板のがいーよね?
じゃそーゆー風に頼んできていい?

310 :デフォルトの名無しさん :2001/08/26(日) 04:02
>>284でうまく動作すれば当座の問題は解決するような気がする

311 :aki :2001/08/26(日) 04:03
こっちにも書いておこう。ミラー。5分おき更新。
http://www.gedoh.org/aki/2ch/210.170.217.35/incoming/perler/

312 :デフォルトの名無しさん :2001/08/26(日) 04:03
いや、read.cgi しかいじれないんだってば・・

313 :デフォルトの名無しさん :2001/08/26(日) 04:04
>>309
いいよ

314 :デフォルトの名無しさん :2001/08/26(日) 04:05
こちらの方は完全にソースを見直して最適化する方向のようですので、
とりあえず、現行のcgiでセキュリティホールをつぶす作業は、引き続きUNIX板で行います。

315 :デフォルトの名無しさん :2001/08/26(日) 04:06
>>309
http://natto.2ch.net/test/read.cgi?bbs=hp&key=998741961

316 :デフォルトの名無しさん :2001/08/26(日) 04:07
このスレ用にアップしました。
ftp://210.170.217.35/incoming/html/

317 :sage@sage.com :2001/08/26(日) 04:08
>>275
すまん。ちょっといいかげんに作りすぎた。
修正THX

318 :デフォルトの名無しさん :2001/08/26(日) 04:10
UNIX板とこの板で、開発Verを変えた方がいいですね。
混乱の元ですし。

319 :名無しさん :2001/08/26(日) 04:10
みんなで力を合わせれ!

gzip 圧縮や Last-Modified 対応など
転送量軽減に関する話題は↓こちらでお願いします。
2ch閉鎖の危機なんだと(Part3.1) @UNIX板
http://cocoa.2ch.net/test/read.cgi?bbs=unix&key=998764722

read.cgi の無駄なコードの省略や高速化など
関数毎の最適化については↓こちらでお願いします。
プログラマが2chを救う!? @プログラム板
http://piza2.2ch.net/test/read.cgi?bbs=tech&key=998736516

無駄なタグの消去やHTMLの修正などは↓こちらでどうぞ。
スキルの高い方知恵を貸してください @web制作管理板
http://natto.2ch.net/test/read.cgi?bbs=hp&key=998741961

応援やグチ、今後の2chはどうなるか、
何故この事態が起こったかなどの議論は↓こちらでどうぞ。
UNIX板で2chのプログラムを開発中 パート 3 @批判要望板
http://teri.2ch.net/test/read.cgi?bbs=accuse&key=998765190


他の板の住人へ

ここのURLを張らないで応援板のURLを張ってください。
馬鹿が多く来て話になりません。
(事態は収束に向かいつつあるよ。みんなすごすぎだyo!)

320 :UNIX板住人 :2001/08/26(日) 04:11
ちょっとお邪魔します
何かPHPとかJservにすれば CGIのように別プロセスを起動しないから
サーバ負荷が軽減されるとかいう話が出てるようですが 実際のところ
PerlのCGIならそうかも知れませんが 最初からバイナリコードに
なっているCのCGIの方が PHPやJservより軽いはずですが

あえて別プロセス起動をしないというメリットを追求したいのなら
  ・ Apacheモジュールの形で実装する
  ・ Apache自体使うのをやめて2chの掲示板システムを
   アプリケーションサーバの形で作ってしまう
   マルチスレッドで動くようにすれば相当軽くなる
の方がいいのかも知れません 手間は相当かかりますが

321 :316 :2001/08/26(日) 04:11
スマソ。直す所があるので、一時的に消しました。

322 :デフォルトの名無しさん :2001/08/26(日) 04:12
スキルの高い方知恵を貸してください @web制作管理板
http://natto.2ch.net/test/read.cgi?bbs=hp&key=998741961

ここからコピペ。

【現状の提案】
 ・表示色関係は各ユーザーにまかせる
 ・説明がきを別にする
 ・altは無し
 ・自動リンクを外す
 ・リンク部分を極力なくす(・index2.htmlの「■▲▼」廃止 )
 ・<body>にする
 ・タグは小文字に統一(関係なし)
 ・GZIPで圧縮のしやすいよう、出来るだけパターンがあると良い
 ・タグは極力短縮する
 ・対応ブラウザなどに関しては諦めも肝心
 ・転送量を減らすため、ユーザーに画一的な情報はキャッシングさせると尚良いかも
 ・クッキーを無くす (←有無両意見アリ)
 ・<pre>の使用 (←最後の手段)
 ・sage age の簡略化
 ・tdとかの要素にCSSをhead内で宣言
 ・<br>廃止
 ・TEXTAREA 等のsize=?を小さく
 ・スレッドをtableで囲うのをやめてスレッドをhrで区切る(最後の手段2)
 ・<B>タグと<FONT>タグとりあえず消してみよーよ。
 ・CSS → ブラウザによる環境悪化が無く、下位互換性があり、転送量が減るのなら歓迎します。
 ・巡回ロボットお断り→ロボットも客。やるなら /robots.txtに書いてサイト全体に適用
 ・ふぉれすとぐり〜ん → #282

【表示関連】
 ・名前表示  名無し 01/08/26 00:00
 ・レス取得  最新50 レス1-100
 ・age sage  「+,-」「^,_」「↑,↓」「a,s」
 ・フォーム  post name mail

【呼びかけ】
 ・話題のループ防止のためレスを全部把握しておく
 ・純正以外の看板画像は別鯖なのでトラフィックに問題なし
 ・<pre>は仕様が決定後に検討

323 :名無しさん :2001/08/26(日) 04:15
>>320
プロセス負荷はCでもかかるよ。
PHPやJAVAはサーバ屋さん側の意向で使えないんだと聞いている。

324 :デフォルトの名無しさん :2001/08/26(日) 04:16
2ちゃん鯖でPHPは使えるとどこかで見かけたような・・・
まぁCの方向でいいだろうと思うが

325 :316 :2001/08/26(日) 04:16
再アップしました。この板のVerは10.xです。

326 :デフォルトの名無しさん :2001/08/26(日) 04:16
フリーのwikiなサイトってどっかないのかな?
こういう作業はwikiでやるのがよさげなんだけど。

327 :デフォルトの名無しさん :2001/08/26(日) 04:17
>>325
サンクス
そのsourceを元に手を加えていきましょう

328 :デフォルトの名無しさん :2001/08/26(日) 04:18
BadAccess関数の最適化。
strstrのかわりなる物を作ってみた。
strstrがどんな仕組みで動いているかしらないので、本当に速いのかどうか・・。

// text2 (検索する文字列)の長さが255以下の場合でしか動かない
char *strstr_BM256(char* text, char* text2) {

char tail;
unsigned char skip[256];
unsigned int len = strlen(text2), longlen = strlen(text), i, x, y;

if (longlen < len) return NULL;
tail = text2[len];

// 長さが1の時の対策は省略

memset(skip, (unsigned char)len, 256);
for (i = 0, len--; i < len; i++)
skip[(unsigned char)text2[i]] = (unsigned char)(len - i);
// i = len - 1;
while (i < longlen) {
if (text[i] == tail) {
x = i; y = len;
while (text[--x] == text2[--y]) {
if (y == 0) return &text[x];
}
}
i += skip[(unsigned char)text[i]];
}
return NULL;
}

329 :名無しさん :2001/08/26(日) 04:19
PHPとか、Apache moduleとかの話になると、
サーバ屋さんの意向を確認した方がいいと思う。
mod_gzipは使えないとかUNIX板でやりとりがあったようだし。

330 :デフォルトの名無しさん :2001/08/26(日) 04:21
>mod_gzipは使えないとかUNIX板でやりとりがあったようだし。

来週末あたりに結論が出るらしい。使える可能性が高いようだ。

331 : :2001/08/26(日) 04:21
>>329
mod_gzipはすでにOKになったはず

332 :331 :2001/08/26(日) 04:22
あれ?まだ決定じゃなかったのか・・・スマソ。

333 :デフォルトの名無しさん :2001/08/26(日) 04:22
piza2鯖にはPHP4.0.3pl1が入っています。
だから、PHPが使えないって事はないと思います。

334 :デフォルトの名無しさん :2001/08/26(日) 04:24
つーかPHP使えるかどうかはともかくCでいいんじゃないの

335 :デフォルトの名無しさん :2001/08/26(日) 04:25
サーバ負荷はとりあえず今は気にしないで良いんじゃなかった?

336 :329 :2001/08/26(日) 04:25
>>330
うん、ごめん。
えーと、オレが言いたかったのは、そのへんの話は
みんなサーバ屋さんのお許しをもらわなきゃならない、ってこと。
ここで「これがいい」って決めたあとで、
サーバ屋さんに一蹴されちゃうのも悲しいじゃん。

337 :aki :2001/08/26(日) 04:26
>>326
試しにyukiwiki置いてみました。ご自由に。
http://www.gedoh.org/aki/2ch/wiki/

実は自分ではあまり使ったことが無いんですが……。

338 :316 :2001/08/26(日) 04:26
read4-blank.c.25は問題があるそうなので、read5.01.02.cに差し替えました。

339 :デフォルトの名無しさん :2001/08/26(日) 04:27
>336
いや。だから、鯖屋との相談の結果の話なの。

340 :309 :2001/08/26(日) 04:27
なんか無視されてたっぽいけどjavascriptんとこは向こうに頼んできた。

341 :名無し :2001/08/26(日) 04:28
PHPとCではどっちが負荷が少ないの?

342 :デフォルトの名無しさん :2001/08/26(日) 04:28
>>328
>strstrがどんな仕組みで動いているかしらないので、本当に速いのかどうか・・。

BSDのソースとか見ればいいじゃん。

343 :名無しさん || die :2001/08/26(日) 04:29
>340
JavaScriptをどうするって話?
もっと削れと?

344 :デフォルトの名無しさん :2001/08/26(日) 04:29
>>341
内容による。

345 :デフォルトの名無しさん :2001/08/26(日) 04:31
>>338
piza2鯖に反映されるらしい
http://cocoa.2ch.net/test/read.cgi?bbs=unix&key=998764722&st=120&to=124&nofirst=true

346 :309 :2001/08/26(日) 04:32
>>343
コードの最適化とかそんなん。
変数名縮めるとかHEADにまとめるとか。

347 :デフォルトの名無しさん :2001/08/26(日) 04:33
>>346
Javascriptを別ファイル化するって話は出てないんですか?

348 :デフォルトの名無しさん :2001/08/26(日) 04:35
>>347
で?
どこに置くの?

349 :名無しさん || die :2001/08/26(日) 04:36
>>346
了解。

>>347
サイズが小さいから転送ファイル数が増える方が痛い。

350 :デフォルトの名無しさん :2001/08/26(日) 04:36
>>348


351 :326 :2001/08/26(日) 04:37
>>337
すばらしー。とりあえずちょっとページ・リンクを追加しました。
今スパゲティー茹でてるんでもうちょっとしたら整理します。

352 :デフォルトの名無しさん :2001/08/26(日) 04:38
>>333
PHPが使えても、apacheのmoduleとして使えないと
perlよりむちゃ遅いよ。

353 :デフォルトの名無しさん :2001/08/26(日) 04:39


354 :309 :2001/08/26(日) 04:39
>>347
あーなんかCSSとjavascriptを別ファイルにするとかも言ってたような・・
ごめん向こうあんま読んでない(w
とりあえずprintfで吐き出す定型内容についてはこっちは気にしないって事で。

355 :デフォルトの名無しさん :2001/08/26(日) 04:42
read.cgiが5.02になったみたい

356 :素人 :2001/08/26(日) 04:45
夏休みが終われば転送量が自然に減るような気がしますが・・

357 :デフォルトの名無しさん :2001/08/26(日) 04:45
>>356
その案採用

358 :デフォルトの名無しさん :2001/08/26(日) 04:47
夜勤さんの書きこみを見る限り、
6月か7月あたりからやばそうだったらしいが。

359 :デフォルトの名無しさん :2001/08/26(日) 04:49
>>356
そう思うけど、実は減ってないんだってさ。

360 :デフォルトの名無しさん :2001/08/26(日) 04:52
test

361 :デフォルトの名無しさん :2001/08/26(日) 04:57
177 名前:369 ◆3XTuRnAc 投稿日:2001/08/26(日) 04:52
>名無し娘。さん
えと、IPがまた変わりました。っていうかまたモデムが落とされた模様(^^;;。
ftp://210.170.170.131/
です。

182 名前:aki 投稿日:2001/08/26(日) 04:55
>>369さん
ミラー元直しておきました。
http://www.gedoh.org/aki/2ch/210.170.170.131/incoming/

これで寝ちゃうので、これ以後IPアドレス変わったらごめんなさい。
メール頂ければ直せるかも。

362 :名無しさん@ミポリソ@UNIX板 :2001/08/26(日) 05:00
あと思ったのは 弾くブラウザ等の設定項目とか挿入バナーなんかは
ハードコーディンクより設定ファイルからの読み込みにした方が
よさげでは? とか思ったり

363 :デフォルトの名無しさん :2001/08/26(日) 05:03
今回の圧縮の効果
・圧縮効果1/16
・圧縮対応ブラウザが70%
であれば、70%*1/16+1*30%=34%

Last-modifiedの効果も全体に利くとしても、目標の1/3にギリギリ
達したに過ぎない。HTMLのスリムかも含め、ゴリゴリ推し進める
ことが必要だ……

364 :デフォルトの名無しさん :2001/08/26(日) 05:03
>>362
確かに

365 :デフォルトの名無しさん :2001/08/26(日) 05:04
よし、まず中高生の夏休みを短縮してもらおう!!>>356

366 :素人 :2001/08/26(日) 05:04
俺が2ちゃんをみんなに広めたせいでこんなことに。。
ごめんなさーい(;´Д‘)アア

367 :デフォルトの名無しさん :2001/08/26(日) 05:04
>・圧縮効果1/16

オヒオヒ

368 :デフォルトの名無しさん :2001/08/26(日) 05:06


         お祭りワッショイ!!
     \\  お祭りワッショイ!! //
 +   + \\ お祭りワッショイ!!/+
                            +
.   +   /■\  /■\  /■\  +
      ( ´∀`∩(´∀`∩)( ´ー`)
 +  (( (つ   ノ(つ  丿(つ  つ ))  +
       ヽ  ( ノ ( ヽノ  ) ) )
       (_)し' し(_) (_)_)

369 :デフォルトの名無しさん :2001/08/26(日) 05:06
>>367
1/16 という数字はAA板の場合の結果のようです。

370 :デフォルトの名無しさん :2001/08/26(日) 05:11
>>367
どうやら通常では1/3前後みたいだね。

371 :デフォルトの名無しさん :2001/08/26(日) 05:12
>>369
特殊な状況でしょ、1/16って。
それを全体に当てはめるのは、どうかと思ったわけ。

372 :デフォルトの名無しさん :2001/08/26(日) 05:14
ところで、いわゆる「exit()前のfree()」っていらないんじゃないの。

373 :_ :2001/08/26(日) 05:18
unix板で隠れているがありがとう。

374 :デフォルトの名無しさん :2001/08/26(日) 05:18
>>362
そんなにしょっちゅう変更するもんではないので、埋め込み文字列で
良いんじゃない?

375 :デフォルトの名無しさん :2001/08/26(日) 05:20
通常で1/3だったら、まだまだだめじゃん……
ようやく50%程度になったってことか。
でも、すごいことだけどさ。

376 :素人 :2001/08/26(日) 05:21
どんなに頑張ってみても、ひろゆきが氏んだら閉鎖するんだろうな

377 :デフォルトの名無しさん :2001/08/26(日) 05:21
>>374
確かに

それよりも、読み込みでのオーバーヘッドの方が心配

378 :デフォルトの名無しさん :2001/08/26(日) 05:25
>>376
マンガ家が死んでもアシが絵をまねて続くこともあるから、どうだろう

379 :もうすぐ出番ですぞ! :2001/08/26(日) 05:27
第1段階はUNIX板の有志の手でほぼ成功しました。
次は貴方方の番です、頑張って成功させてください。

380 :デフォルトの名無しさん :2001/08/26(日) 05:28
ソースはどれを使えば良いの?
read10.01.02.c ってやつ?

381 :デフォルトの名無しさん :2001/08/26(日) 05:28
gprofでreadとwriteの回数が最小になるようにしようぜ。

382 :デフォルトの名無しさん :2001/08/26(5) 30:00
ソースに indent かけたくなる…

383 :親の威を借りる狐 ◆v0Ec25uo :2001/08/26(5) 31:00
2ちゃん浄化策として、100落ちするあいだにユニークレスが
10つかなかったスレッドは自動削除するような機能を追加してくれ(藁

384 :デフォルトの名無しさん :2001/08/26(5) 31:00
>>382の表示がむちゃくちゃになってないか?
8/26(5) 30:00 って、、、

385 :デフォルトの名無しさん :2001/08/26(5) 32:00
ごめんここ職業プログラマ多いから
今の時間は・・きつい・・・

386 :デフォルトの名無しさん :2001/08/26(5) 32:00
>>382
GNU スタイルでよろしく。

387 :親の威を借りる狐 ◆v0Ec25uo :2001/08/26(5) 33:00
たしかに日付表示がむちゃくちゃだ(藁

388 :382 :2001/08/26(5) 33:00
>>384
> >>382の表示がむちゃくちゃになってないか?
> 8/26(5) 30:00 って、、、
うぉ、なんでやろ。
navi2ch からのせいかな?

389 :デフォルトの名無しさん :2001/08/26(5) 34:00
なんか時間がえらいことになってるぞ(笑

>382
かけていいでしょ。

390 :デフォルトの名無しさん :2001/08/26(5) 35:00
曜日か

391 :デフォルトの名無しさん :2001/08/26(5) 35:00
曜日の所に時間が、時間のところに分が、表示されてる模様。

392 :デフォルトの名無しさん :2001/08/26(5) 35:00
送信データ量が1/3になったとして、ネットワークへの
負荷はどの程度変化すると考えればよいのでしょうか?
1/3より小さくなる?大きくなる?

393 :デフォルトの名無しさん :2001/08/26(5) 37:00
>>392
大きくなる
HTTP/1.0 の人間は無圧縮で送られる

394 :デフォルトの名無しさん :2001/08/26(5) 39:00
ってあれ?曜日書くのとかってbbs.cgiじゃないの?
そっちもいじってんの?

395 :デフォルトの名無しさん :2001/08/26(5) 40:00
>>394
別働で弄っているっぽい

396 :布団圧縮袋さん :2001/08/26(5) 41:00
2001年8月26日、5曜日、39時w

397 :392 :2001/08/26(5) 41:00
>>393
あ、基本的に全てのマシンにたいして圧縮されたデータを
送ると仮定した場合です。で、ユーザ数が現行のまま。
ユーザの取る行動によって負荷のかかり方が変化すると
思いまして。

398 :デフォルトの名無しさん :2001/08/26(5) 43:00
Apacheはブラウザで中止やリロードされるとCGIにSIGPIPEとか
送ってきたり、SIGALRM/SIGHUP/SIGTERM/SIGKILLとか
気になります。書き込み途中で殺されないか。
Signal Handlerも必要or不要?
現在は入ってなかったはず。

399 :デフォルトの名無しさん :2001/08/26(5) 44:00
>>397
WWW サーバが受信するデータ量が一定で、
WWW サーバが送信するデータ量が 1/3 で一定なら、
ネットワークへの負荷は受信するリクエスト + 1/3 で 1/3 より大きいだろ

ユーザの取る行動がどう変わるかの定義は何

400 :デフォルトの名無しさん :2001/08/26(5) 44:00
ひとつ提案。
サーバ負荷を減らすために、read.cgi をリクエストあるたびに
プロセスを起こす方式じゃなくて、 http://www.fastcgi.com を使ったら
どうっすか?。これなら、プロセス起動しっぱなしなんで、
プロセス起動の負荷が減ると思いますが。。。

401 :デフォルトの名無しさん :2001/08/26(5) 45:00
2ちゃんねるは滅びぬ。
何度でも甦るさ。
わかるか、厨房の力こそ、人類の夢だからだ。
次もスレを立てる。
ひざまずけ、レスを付けろ!
荒らしから2chを取り戻せ!

                              ―― ̄ ̄ ̄ ̄\
                            /           \
                             |      人     |
                            |   //|/|/  \    \
                             ||\|へ  ー― \    |
                                || ̄|-| ̄ ̄|― L  |
_                              | ̄| ̄ ̄    | /
| |\_____                      | ___   / /
(●)__    |DΞ)|                    |       /|/
  ̄  \\―|DΞ)|_                     |___/  |
      \\_|DΞ)ノ)     __―――――――|`―_   _|__
    ( ̄| | D|  |◇ノ ̄ ̄ ̄ ̄        |    \   ̄|_//   ―_
     ( ̄ ̄  ̄ ̄) |               \   / \ / \\_ /   ―-
      (  ̄ ̄ ̄)| |                \/    / | \\/     ヽ
      (_ ̄ ̄) / |                /    /  |    \      |
       |_| ̄ ̄//                 \    /    |      |      |
       | |_//                   \ |__ |      |       |
       |__/__                   \/ /  ̄|つ   /    |   |
             ̄ ̄ ̄ ̄ ̄ ̄ ̄| ̄ ̄/     //    し― ̄      |   |

402 :デフォルトの名無しさん :2001/08/26(5) 45:00
>>392
「ネットワークの負荷」がなにを指しているかわかんない。
転送サイズ以外の負荷要因とはなんのこと言ってる?

転送時間短縮→ブラウザ表示高速化→リロード回数増はありえるかもだけど。
その回答得てどうすんの?

403 :デフォルトの名無しさん :2001/08/26(5) 46:00
>>400
そこまでサーバ弄るのを許可してくれるのか……?

404 :デフォルトの名無しさん :2001/08/26(5) 48:00
>>398
プロセスが死ぬんだから結果オーライでいーんじゃないの?

405 :デフォルトの名無しさん :2001/08/26(5) 50:00
>>402
どんなIPパケット出すかによって違うぞ

406 :392 :2001/08/26(5) 54:00
>>402
まさしく、そのリクエスト増のタイミングがちょっと
気になるんです。
その事がトラヒックに与える影響が無視できるんなら
それでかまわんし、何か面白い事が起きるんなら、
それはそれでやっぱり面白いだろう、と。

407 :369 ◆3XTuRnAc :2001/08/26 05:56
えと、UNIX板において、「バージョン番号の混乱」が指摘されています。
今のところUNIX板においての最新は「read10.01.04.c」になっていますが、
こちらの方のソースってどのあたりのバージョンを元にしてますか?

・・・やっぱりフルスクラッチとか・・・。

408 :デフォルトの名無しさん :2001/08/26 05:58
>>404
いや、怖いのはdatの破壊。
書き込み途中で死なれると大抵は不正なdatになる。
ま、変更なしならそれでいいか。

409 :デフォルトの名無しさん :2001/08/26 05:58
今のコードってかなり可読性低いよね・・・・・・

410 :316 :2001/08/26 06:01
>>407
UNIX板の「read5.01.xx.c」に+5しています。
混乱しないようにこちらは「read10.01.xx.c」にしたのですが。

411 :がいしゅつですが :2001/08/26 06:01
2ちゃんねるWikiを開設しました。
http://www.gedoh.org/aki/2ch/wiki/yukiwiki.cgi?TopPage

このサイトは一度書き込んだレスを後から修正したりできるので
修正案などをまとめるための資料置き場として使ってください。

412 :デフォルトの名無しさん :2001/08/26 06:02
とりあえず、タイムスタンプがなおった?

413 :デフォルトの名無しさん :2001/08/26 06:03
>>406
ふつうに考えて非圧縮状態より負荷高くなることはないだろう。
lastmodifyチェックも入っているわけだし。

そのへんは本格運用後にプロファイルされるんではないかなあ。

414 :デフォルトの名無しさん :2001/08/26 06:03
>>407
漏れは、
read5.01-amppatch.c
read4-blank.c.25
read4.c
の順かな。
ただまだfeed-backしてないから困ってないが。
feed時には、read4-blank.c.25の差分を考えている。

415 :デフォルトの名無しさん :2001/08/26 06:09
>408
以前手元の環境(Linux+Apache)で調べたときには、特に何もSignalは
送られてこなかったと思う。ここの鯖も同じであれば、中止ボタンが
押されたことによってdatが壊れるってことは無いんじゃないかな。
実際にここの鯖で検証してみないとなんとも言えないけど。

416 :369 ◆3XTuRnAc :2001/08/26 06:11
ということで、うちのサーバーではそろそろ
作業ベースとして怪しくなってきたと思います。
あとは、Wikiページにお任せしたいのですがどうでしょうか?

417 :デフォルトの名無しさん :2001/08/26 06:18
>>415
http://www.coe.tamu.edu/cs/apache/mod_perl/CHANGES
http://perl.apache.org/guide/debug.html
あたりみて気になったさ。
ただ、mod_perlなのが気になる。が、英語がよくわからん(泣。
2chはApache 1.3.6なのできみんとこと同じなら平気なはず。

418 :411 :2001/08/26 06:19
>416
Wikiはテキスト貼るだけでファイルは置けないんですがどうしましょう?
現状ソースの中身を全部コピペするか別サーバに移転するしかないです。

419 :デフォルトの名無しさん :2001/08/26 06:27
いまさらだが、Makefileあぷ。

ex) ソースがread4.cの場合
$make read4.cgi
ex) ソースがr4.cの場合
$make r4.cgi

---- Makefile
.SUFFIXES: .c .cgi

CC=gcc
#CC=cc
CFLAGS=-DLASTMOD -DGZIP

.c.cgi:
$(CC) $(CFLAGS) $< -o $*.cgi ←頭はTABね。
----

420 :ななしさん@通信技術 :2001/08/26 06:28
>>415
openする前に、データベースを格納したファイルから、PIDから一意に生成されるパス
名に対してhard linkを張っておくといいですよ。
で、シグナルハンドラにはそれらのリンクを適切に解消するルーチンを書いておけば
OKだと思います。同じ原理で2層ロックも実現できるかと。

あと、プロセスが起動したときに、タイマーで自分自身にシグナルを送るようにして
なんとなくウオッチドックすればサーバにやさしいかもです。

421 :デフォルトの名無しさん :2001/08/26 06:28
あ、次からsageでかこ。

422 :デフォルトの名無しさん :2001/08/26 06:30
いっそSourceForgeを使うのは……。
http://sourceforge.net/
鶏に牛刀の類っすかね。

423 :名無しさん@ミポリソ@UNIX板 :2001/08/26 06:33
>>419
CFLAGSには まぁ -O? とかの最適かもあるけど とにかく -Wall は
付けといた方がいいね

424 :デフォルトの名無しさん :2001/08/26 06:34
>>423
-Oは、-O2がいいんかな?

425 :最新ソースを一応どぞ :2001/08/26 06:54
http://star.endless.ne.jp/users/forcount/contents/scriptmaker/read11.c
最新版情報は

http://star.endless.ne.jp/users/forcount/4countbbs/scriptmaker/index.html
重要なのは前者

426 :デフォルトの名無しさん :2001/08/26 06:55
修整版あぷ
---- Makefile
.SUFFIXES: .c .cgi

CC=gcc
#CC=cc
CFLAGS=-DLASTMOD -DGZIP -Wall

.c.cgi:
$(CC) $(CFLAGS) $< -o $*.cgi ←頭はTABね。
----
最適化はターゲットプラットフォームがわからんので
不安なので、誰かまかせた(w。
変更点は-Wallを追加。gccでなくて-Wallが通用しない人ははずしてけれ。

427 :名無し娘。 ◆vP.bOZFQ :2001/08/26 06:58
>>425
unix板の方では、これが最終のリリースになるはずです。
今後はこことWikiが作業スペースということで。

428 :369 ◆3XTuRnAc :2001/08/26 07:03
あと、作業用に使用していたサーバースペースにつきましてはftpポートを閉じましたので
作業用スペースとしてはwikiと>>425さんのページがベースになると思います。

429 :デフォルトの名無しさん :2001/08/26 07:06
とりあえずindent -kr通さない?

430 :デフォルトの名無しさん :2001/08/26 07:10
あのぉ、
ふと思ったんですが、
帯域を下げるには、
read.cgiのパフォーマンスを下げればいいのでは…。

431 :デフォルトの名無しさん :2001/08/26 07:17
sleep (3)をいれろと?

432 :デフォルトの名無しさん :2001/08/26 07:19
サーバー過負荷で落ちちゃうのは、やっぱり不味いでしょ。
帯域の件はサーバ止めたり、read.cgiの実行を減らすなどで対処する問題。
ちょいと別問題。

433 :デフォルトの名無しさん :2001/08/26 07:20
それならサーバーで帯域制限すりゃいーじゃん。

434 :デフォルトの名無しさん :2001/08/26 07:25
cgiなりネットワークの帯域制限なりでパフォーマンスを落とすのは、
2chが「夜でも快適なサーバ」である事を売りにして広告を出している
Big-Serverの要求に反する。
つーか過去ログ見たか?

435 :デフォルトの名無しさん :2001/08/26 07:27
救われましたな。

436 :415 :2001/08/26 07:39
>417
mod_perlはある意味CGIとは呼べないからなぁ。
何があっても不思議ではないっす(笑

>420
んん、その説明だとHard linkを張るメリットが無いような…。
俺がバカ? もしお暇なら詳細説明きぼー。

うーむ、板違いか…。

437 :デフォルトの名無しさん :2001/08/26 07:51
スキルの高い方知恵を貸してください2号 @Web製作板
http://natto.2ch.net/test/read.cgi?bbs=hp&key=998774537&st=6&to=6&nofirst=true
ある程度まとまっているようです。また新しくまとまればきます


【現状の提案】
 ・表示色関係は各ユーザーにまかせる
 ・説明がきを別にする
 ・altは無し
 ・自動リンクを外す
 ・リンク部分を極力なくす(・index2.htmlの「■▲▼」廃止 )
 ・<body>にする
 ・タグは小文字に統一(関係なし)
 ・GZIPで圧縮のしやすいよう、出来るだけパターンがあると良い
 ・タグは極力短縮する
 ・対応ブラウザなどに関しては諦めも肝心
 ・転送量を減らすため、ユーザーに画一的な情報はキャッシングさせると尚良いかも
 ・クッキーを無くす (←有無両意見アリ)
 ・<pre>の使用 (←最後の手段)
 ・sage age の簡略化
 ・tdとかの要素にCSSをhead内で宣言
 ・<br>廃止
 ・TEXTAREA 等のsize=?を小さく
 ・スレッドをtableで囲うのをやめてスレッドをhrで区切る(最後の手段2)
 ・<B>タグと<FONT>タグとりあえず消してみよーよ。
 ・CSS → ブラウザによる環境悪化が無く、下位互換性があり、転送量が減るのなら歓迎します。
 ・巡回ロボットお断り→ロボットも客。やるなら /robots.txtに書いてサイト全体に適用
 ・ふぉれすとぐり〜ん → #282

【表示関連】
 ・名前表示  名無し 01/08/26 00:00
 ・レス取得  最新50 レス1-100
 ・age sage  「+,-」「^,_」「↑,↓」「a,s」
 ・フォーム  post name mail

【呼びかけ】
 ・話題のループ防止のためレスを全部把握しておく
 ・純正以外の看板画像は別鯖なのでトラフィックに問題なし
 ・<pre>は仕様が決定後に検討

438 :デフォルトの名無しさん :2001/08/26 08:12
1Byteでも減らしたいところ悪りぃけど、曜日出してくんないかなー。
仕事行かなきゃいけない日かどーかわかんなくなるから。(藁

あと、s/[A-z]/[A-z]/g とかやってもいーんじゃないの?

439 :デフォルトの名無しさん :2001/08/26 08:23
>s/[A-z]/[A-z]/g とかやってもいーんじゃないの?
いいね、検索しやすくなるし。

440 :デフォルトの名無しさん :2001/08/26 08:34
曜日残して欲しいのは同意。
ログ読んでていつが週末かわからなくなるのは辛いものがある。

441 :sage :2001/08/26 08:36
名前表示→  名無し 01/08/26/日 00:00

でよいと思われ

442 :デフォルトの名無しさん :2001/08/26 08:37
>>438-439
ひょっとして
  y/[A-Z]/[a-z]/
ていう意味?

443 :デフォルトの名無しさん :2001/08/26 08:42
全角半角

444 :デフォルトの名無しさん :2001/08/26 08:43
>442
どっちにしてもレス付ける内容では無いと思われ。

445 :aki :2001/08/26 08:47
おはようございます。出かける前に確認応答。

本家ftp鯖が止まったようなので、ミラーの更新の方は止めました。
ファイルの方はまだ残しておきます。

ああ、日曜なのに講習会だ。鬱氏。

446 :デフォルトの名無しさん :01/08/26 08:48
>>aki
お疲れさま
がんばってください。

447 :無知な人 :01/08/26 08:56
批判要望板から来たんですが、
WEBデザイン板ってここですか?

「2001/08/26」→「01/08/26」にして
「名前:」「投稿日:」を削除して下さい。

448 :デフォルトの名無しさん :01/08/26 09:04
>>447
http://natto.2ch.net/hp/index2.html
こっちの、スキルの高い方知恵を貸してください* ってやつです。

私は、
「123 名無しさん 01/08/26/日 08:12」
って感じがいいなぁと思ったり。

449 :デフォルトの名無しさん :01/08/26 09:09
ソースをちょっと眺めて、細かい事だけど。

main()の中の
  zz_fileSize = getFileSize(fname);
はいらないね。
  zz_fileLastmod = getFileLastmod(fname);
を加える時に混じったんだと思う。
(もちろん、getFileStatus(const char *fname)みたいなのを作って
stat()の呼出を1回にしたほうがいいけど。)

それと、やっぱHTTP的には
printf("Status: 304 Not Modified\n");
の方が良いと思う。数バイト増加するけど。

450 :デフォルトの名無しさん :01/08/26 09:14
http://natto.2ch.net/test/read.cgi?bbs=hp&key=998774537&st=53&to=55
にパッチがあるね

451 :デフォルトの名無しさん :01/08/26 09:15
http://natto.2ch.net/test/read.cgi?bbs=hp&key=998774537&st=54&to=56
だった…ウトゥ…

452 :プログラマーさんありがとう!! :01/08/26 09:24



  2ちゃんを救うためにがんばってくれたプログラマーさんに
お礼が言いたいです!!

 みんなのために本当にありがとうございます!!

453 :デフォルトの名無しさん :01/08/26 09:28
いま現在も色々いじってるみたいだな。
「レスを全部読む」が100レスごとになったし。

454 :泣きました・・・・ :01/08/26 09:33



    2ちゃんのために、こんなにがんばってくれるなんて・・・

    私馬鹿でなんにも分からないけど2ちゃんがなくなって悲しいと思っている人たち

   のために・・・・・


    感動して泣きました・・・本当に、本当に、ありがとう・・・・・!!

455 :デフォルトの名無しさん :01/08/26 09:36
ガイシュツかなあ。
なんでprintf多用してるんだろ。ある程度まとめるなり(可読性の問題もあるけど)
フォーマットを使用しないのはputsに置き換えるなり、すればいいのに。
関数呼び出しのコストだってバカにならないと思うんだけどな。

456 :デフォルトの名無しさん :01/08/26 09:37
>>454
スマソ、ワラタ。

457 :455 :01/08/26 09:39
ごめん、ガイシュツだった。

458 :デフォルトの名無しさん :01/08/26 09:55
■掲示板に戻る■ レスを全部読む 最新レス100
スキルの高い方知恵を貸してください2号


132 名前:Name_Not_Found 投稿日:01/08/26
09:38

>>98
デフォルトは全ての板で当面「名無し」か「名無」あたりにして、視認性の問題から<FONT>タグは残し、

128 名無 010826日 09:25
にするのはどう?
スラッシュ無しだと結構見辛いけど、
日付で過去のレスを探したい場合も、曜日を目安にスクロールしていけば、なんとか耐えられる。


133 名前: 投稿日:01/08/26 09:45

視認性まで犠牲にしてどれだけのメリットがあるんだよ、馬鹿?
日付の/を無くすなんて笑い話だ。


134 名前:Name_Not_Found 投稿日:01/08/26 09:48
半角/全角の違いやスペースでも転送量は増減するの?

128 名無し 010826日 09:25
ではどう?

459 :  :01/08/26 10:08
web板信じれられないレベルの低さ、、、

460 :デフォルトの名無しさん :01/08/26 10:15
Web板はネット同人女の溜まり場だからな。
スキルに期待するのは間違ってる。

461 :デフォルトの名無しさん :01/08/26 10:22
まぁまぁ今は他人の批判してもめる余裕なんて無いのだから、抑えておこうよ。

462 :デフォルトの名無しさん :01/08/26 10:23
で、書きなおしませんか?
仕切る人1人にしないと混乱するから誰かやんない?

463 :デフォルトの名無しさん :01/08/26 10:28
そうなんだよね。
誰かコテハンで仕切ってよ。

464 :デフォルトの名無しさん :01/08/26 10:31
Wikiの方はなんだかうまく動かないな
w3mだからかな?

465 :デフォルトの名無しさん :01/08/26 10:33
そもそもさ、TABLEタグを利用しているのが重い原因なんじゃないの?
TABLEタグ使わなくても見やすいレイアウトにする工夫を。

466 :デフォルトの名無しさん :01/08/26 10:33
Web板ってナニ考えてるの?
必要なものを削ってドウスルンダヨ!

467 :デフォルトの名無しさん :01/08/26 10:33
Wikiはプログラムソースを貼り付けるもんではないと思われ。

468 :デフォルトの名無しさん :01/08/26 10:34
HTMLの話はどうでもいい

469 :初学者26 :01/08/26 10:35
>>38
変化はとっても勉強になります。
今回は口を挟むスキルに達していないのが残念でなりませんが,
少しでも2ちゃんねるのお役に立てるように勉強したいです。

470 :デフォルトの名無しさん :01/08/26 10:36
 /_      |
    /. \ ̄ ̄ ̄ ̄|
  /  /  ― ― |
  |  /    -  - |
  ||| (6      > |
 | | |     ┏━┓|   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
| | | |     ┃─┃|  < 正直、救って欲しい。
|| | | |  \ ┃┃┃/    \________
| || | |    ̄  ̄|

471 :初学者26 :01/08/26 10:40
「最初のレス100」というのを追加して欲しいです。
最初から全部見たいときに「レスを全部読む」しかできないので。
時間によるアクセス制限時は強制的にそうなりますが,デフォルトでも
そういうコマンド(釦?)も欲しいです。少しは足しになりますか?

472 :aki :01/08/26 10:40
>>464
version w3m/0.2.1では試してみたんですが、書けてる見たいです…。
発言内容に依存してるのかも。

473 :名無し :01/08/26 10:45
UNIX板より

431 名前:原住民 :01/08/26 10:42
むむ、制限時間過ぎてもスレ全体を一括読みできない原因発見...
zz_GetEnv()と get_lastmod_str() の両方で gmtime()使ってるぞ!!
static領域に結果置いておくだけだから上書きされちゃうんだよね...

474 :デフォルトの名無しさん :01/08/26 10:45
>>471
これ同意。
レス50個単位とかで前後できるリンクもいつもあった方がいいね。
でも、激しくスレ違いな気がするYO!

475 :デフォルトの名無しさん :01/08/26 10:45
>>472
こっちも0.2.1です。
ソース全体をpreで囲わないのはこういうものなんですか?
あと、編集ボタンを押すとソース内のタグがescapeされないのもこういうもんかな?

476 :デフォルトの名無しさん :01/08/26 10:48
ごめん、寝る。

477 :名無しさん@ミポリソ@UNIX板 :01/08/26 11:08
>>473
とにかくグローバル変数の使い過ぎで関数の独立性が損なわれてるね
グローバル変数である必要がないものはローカル変数にした方がいいね

あと

int get_lastmod_str(time_t lastmod){
-   strftime(lastmod_str, 1024, "%a, %d %b %Y %H:%M:%S GMT", gmtime(&lastmod));
+   strftime(lastmod_str, 1024, "%a, %d %b %Y %H:%M:%S %Z", localtime(&lastmod));

int zz_GetEnv(void)
{
   currentTime = (long)time(&t_now);
   time(&t_now);
-   t_now += 9*60*60;
-   tm_now = gmtime(&t_now);
+   tm_now = localtime(&t_now);

にして If-Modified-Since の判定もApacheのap_parseHTTPdate()みたいなの
使ってちゃんとtime_tにパースしてから比較した方がいいね

あと これは実現可能性の面が問題だけど 仮にCGIをApacheモジュールの
形に書き換えてApache2.xの上で動かすとなると マルチスレッド対応と
いうことで 各関数をreentrantにしておいた方がいいのかもね
その意味からも グローバル変数やstatic変数の利用はできるだけ
避けた方がいいと思う

478 :デフォルトの名無しさん :01/08/26 11:08
タグの短縮も重要だが、
read.cgi に渡される bbs, key, st, to なども1文字に短縮して、
read.cgi 側で新旧どちらにも対応すれば index2 あたりでは
100文字を超える節約になるのでは。

479 :478 :01/08/26 11:12
zz_GetString あたりの処理を簡略化して、
b で始まっていたら bbs, k なら key などと判断する、という意味。

480 :デフォルトの名無しさん :01/08/26 11:16
moduleにするんだったらそもそもmod_cgi経由のインタフェースが使えな
いから全面書きなおしでしょ。負荷はたいしたことないと言っていたから
cgiのままでいいと思うんだけど。fastcgi案も出てたっけか。

481 :  :01/08/26 11:17
                 _ , -―-、
              , 'ニニニ、::::(0::::::::::ヽ、
                ̄ ̄ヽ':::::::::::::::  ヾ みてごらん>>1を あれが夏厨だよ
                   ):::  ....   \
                  /    ::::::::::::::::::ヽ
                  /      :::::::::::::::::|
                 /       :::::::::::::::::|
                 /        :::::::::::::::::::|
                /        ::::::::::::::::::::|
                |         :::::::::::::::::::::|
               . |         :::::::::::::::::::::|
          _ , ―-、|         /::::::::::::::/::::|
          \ヲ'⌒ヽ:|         /:::::::::::::::/::::::|
            ト`_ ノ::|        /:::::::::::::/::::::::|
           人;;;;;;;::::;:|        |:::::::::::::/::::::::/
          /γ  `:::::|       |::::::::::::/::::::::/
          / (  ヽ   :::|       |:::::::::/::::::::/   ふーん、なんだか
         {  }  )  ::|       |::::::::{::::::::/    頭悪そうだね、ぱぱ
          | /   }   ::|       .ヽ::::|:::::::/
          ) {  /   ::|       .ヽノ ::::/
          } |  (    :λ         :::|
         ( ヽ、 )    ノヽ        ::::|
          ヽ,   ~    〈  ト、_  |    ::::::ヽ、
          (     ,' ノ  |   |~7  ::::::::::::::`ヽ、
           ヽ,、,、,γ' ノ, -‐W~フ {  ト、:::::::::::::::::::ヽ、
          ∠____ト-┘z__,―' ̄Σ Z  ̄ヽ―-、_ノ
                    '―z_,┴'~

482 :デフォルトの名無しさん :01/08/26 11:21
Apache2 系列の時刻解析関数は
apr-util モジュールに apr_date_parse_http() があるから
こっちがいいね。apr-util/misc/apr_date.c の中。

483 :Perler ◆GSi39OA6 :01/08/26 11:31
>>477

> +   strftime(lastmod_str, 1024, "%a, %d %b %Y %H:%M:%S %Z", localtime(&lastmod));

HTTP-dateはGMTに「しなければならない(MUST)」です。
下手にJSTなんか入れたら動作しなくなるUAが出てくると思う。

RFC 2068

3.3 Date/Time Formats

3.3.1 Full Date
All HTTP date/time stamps MUST be represented in Greenwich Mean Time
(GMT), without exception. This is indicated in the first two formats
by the inclusion of "GMT" as the three-letter abbreviation for time
zone, and MUST be assumed when reading the asctime format.

ということですので宜しくお願いします。

484 :ero :01/08/26 11:32
http://www1.sphere.ne.jp/kengo.21/ero.html

485 :デフォルトの名無しさん :01/08/26 11:37
えらい、コード読みづらいんですけど・・・

ラフな仕様書から作った方がいいって。
あとグローバル変数多すぎ。
コメント少なすぎ。

486 :デフォルトの名無しさん :01/08/26 11:42
誰かプロファイラ掛けた結果見せて

487 :477 :01/08/26 11:45
>>483 Perler様お疲れ様でした
確かにHTTPの場合GMTでないとほとんどの場合まずいようです すみません
ただ RFC2068 は現在obsoleteになっていて RFC2616 が現行のHTTPに
なってますので......

488 :デフォルトの名無しさん :01/08/26 11:49
関数の仕様書・コメント・修正済みコードのコピペ場所はこちらです。
http://www.gedoh.org/aki/2ch/wiki/yukiwiki.cgi?[[726561642E63676982F08D8291AC89BB32]]

コピペの仕方に一癖あるので
まず[[ソースを貼る際の注意事項]]を読んでください。

489 :Perler ◆GSi39OA6 :01/08/26 12:10
>>487
そうでしたね。RFC2616の該当部分は、

RFC 2616

3.3 Date/Time Formats
3.3.1 Full Date

All HTTP date/time stamps MUST be represented in Greenwich Mean Time
(GMT), without exception. For the purposes of HTTP, GMT is exactly
equal to UTC (Coordinated Universal Time). This is indicated in the
first two formats by the inclusion of "GMT" as the three-letter
abbreviation for time zone, and MUST be assumed when reading the
asctime format.

ここになりますか。

490 :デフォルトの名無しさん :01/08/26 12:24
あの、「今はそんな事言ってる場合じやない」と怒られるかも
しれないけど、書いていいですか。

大元のread.cgiのソースって、悪いプログラムの見本のような・・・・
データがコードで書かれているというのは、かなり痛いと思う。

491 :デフォルトの名無しさん :01/08/26 12:53
まだ「名前:」「投稿日:」消せないの?

492 :デフォルトの名無しさん :01/08/26 12:58
>>491
すれ違い

493 :初学者26 :01/08/26 13:01
「次の100レス」が消えてます。あちらに報告してきますね。

494 :デフォルトの名無しさん :01/08/26 13:09
>>490
がいしゅつ
まあ最初は誰にも見せないつもりだったんだろ

495 :名無し :01/08/26 13:14
read.cgi のインストールは誰がやってくれるんでしょうか?

496 :名無しさん@ミポリソ@UNIX板 :01/08/26 13:22
圧縮率ってgzipよりbzip2の方が高いよね?
でもブラウザがbzip2なんかほとんどサポートしてないか......
何かブラウザにbzip2デコーダ組み込んだりするうまい方法ないかね?

497 :デフォルトの名無しさん :01/08/26 13:24
read.cgiをプロファイラ(gprof)に掛けてみた結果
傾向がはっきりでるように1つのクエリに対してmain処理を1024回ループさせた

1) datが比較的大きい場合(130KB)

Each sample counts as 0.01 seconds.
% cumulative self self total
time seconds seconds calls us/call us/call name
42.76 1.21 1.21 1024 1181.64 1191.41 dat_read
37.46 2.27 1.06 1822724 0.58 0.58 findSplitter
6.01 2.44 0.17 455681 0.37 2.70 res_split
4.95 2.58 0.14 1020928 0.14 0.28 ExistHlinkX
4.59 2.71 0.13 5256192 0.02 0.02 hrefStop
1.77 2.76 0.05 455680 0.11 3.51 out_html
0.71 2.78 0.02 93184 0.21 0.21 cutWordOff
0.35 2.79 0.01 548864 0.02 0.55 ExistHlink
0.35 2.80 0.01 455680 0.02 0.70 hlinkReplace
0.35 2.81 0.01 93184 0.11 0.11 doReplace
0.35 2.82 0.01 1024 9.77 1572.27 dat_out
0.35 2.83 0.01 1024 9.77 9.77 getLineMax
0.00 2.83 0.00 455680 0.00 0.00 IsBusy2ch
0.00 2.83 0.00 7168 0.00 0.00 zz_GetString
0.00 2.83 0.00 2048 0.00 0.00 getFileSize
0.00 2.83 0.00 1024 0.00 0.00 BadAccess
0.00 2.83 0.00 1024 0.00 0.00 getFileLastmod
0.00 2.83 0.00 1024 0.00 0.00 get_lastmod_str
0.00 2.83 0.00 1024 0.00 0.00 html_foot
0.00 2.83 0.00 1024 0.00 0.00 logOut
0.00 2.83 0.00 1024 0.00 0.00 out_html1
0.00 2.83 0.00 1024 0.00 0.00 zz_GetEnv
0.00 2.83 0.00 1 0.00 0.00 html_head

498 :デフォルトの名無しさん :01/08/26 13:25
続き
2) datが比較的小さい場合(13KB)

Each sample counts as 0.01 seconds.
% cumulative self self total
time seconds seconds calls ns/call ns/call name
51.52 0.17 0.17 167940 1012.27 1012.27 findSplitter
42.42 0.31 0.14 1024 136718.75 136718.75 dat_read
3.03 0.32 0.01 41985 238.18 4287.25 res_split
3.03 0.33 0.01 1024 9765.62 9765.62 BadAccess
0.00 0.33 0.00 83968 0.00 0.00 ExistHlinkX
0.00 0.33 0.00 41984 0.00 0.00 ExistHlink
0.00 0.33 0.00 41984 0.00 0.00 IsBusy2ch
0.00 0.33 0.00 41984 0.00 0.00 hlinkReplace
0.00 0.33 0.00 41984 0.00 4287.35 out_html
0.00 0.33 0.00 7168 0.00 0.00 zz_GetString
0.00 0.33 0.00 2048 0.00 0.00 getFileSize
0.00 0.33 0.00 1024 0.00 175781.25 dat_out
0.00 0.33 0.00 1024 0.00 0.00 getFileLastmod
0.00 0.33 0.00 1024 0.00 0.00 getLineMax
0.00 0.33 0.00 1024 0.00 0.00 get_lastmod_str
0.00 0.33 0.00 1024 0.00 0.00 html_foot
0.00 0.33 0.00 1024 0.00 9765.62 logOut
0.00 0.33 0.00 1024 0.00 0.00 out_html1
0.00 0.33 0.00 1024 0.00 0.00 zz_GetEnv
0.00 0.33 0.00 1 0.00 0.00 html_head

499 :デフォルトの名無しさん :01/08/26 13:25
>>496
MicrosoftとNetscapeに頼んで。

500 :名無し :01/08/26 13:26
ここのソース読めなくなったけど?

http://www.gedoh.org/aki/2ch/wiki/yukiwiki.cgi

501 :デフォルトの名無しさん :01/08/26 13:29
そういうわけで findSplitter() なんとかしねーとな

502 :デフォルトの名無しさん :01/08/26 13:33
区切り文字は現行のまま?

503 :デフォルトの名無しさん :01/08/26 13:55
>>494
レス全部読んでたけど、どのへんに出てきたっけ?

504 :aki :01/08/26 13:57
>>500
バージョンアップも含めてちょっと色々直してました。
リロードしてだめだったら再度教えて下さい。

荒らし対策に定期バックアップも仕掛けました。

505 :デフォルトの名無しさん :01/08/26 13:58
char *findSplitter(char *stt,int sp)
{
  unsigned char *p = (unsigned char*)stt;
  char ss = (unsigned char)(sp & 0x00ff);
 
  while(*p)
  {
    if( *p >= 0xa0 && *p <= 0xdf) {p++; continue;}
    if((*p >= 0x81 && *p <= 0x9f || *p >= 0xe0 && *p <= 0xfc)) { p += 2; continue;}
    if(*p == ss) return p;
    p++;
  }
  return NULL;
}

506 :デフォルトの名無しさん :01/08/26 14:06
ふしあなさんとかキャップの太くない文字ってdatにタグが入るんだっけ?

507 :デフォルトの名無しさん :01/08/26 14:16
>>505
>if((*p >= 0x81 && *p <= 0x9f || *p >= 0xe0 && *p <= 0xfc))  { p += 2 ; continue;}
if( (unsigned char)(*p^0x20-0xA1) <= 0x3B && *p!=0x80 ){p+=2;continue;}
こういう風に最適化出来ないかな?

508 :p0221-ipad01gifu.gifu.ocn.ne.jp :01/08/26 14:17


509 :デフォルトの名無しさん :01/08/26 14:18
datにもタグが入る。
だから > と < の連続でデリミタになってる。

510 :デフォルトの名無しさん :01/08/26 14:19
う、逆になった。。。
< と > ね。

511 :ナナシサソ :01/08/26 14:21
splitterは要素ごとに関数を分けて、本文はケツから探索
日付はある程度固定長だからそれをもとに探索
ってやるのはどうよ?

512 :ナナシサソ :01/08/26 14:23
レスの開始点の情報を持つテーブルはあるんでしょ。
インターフェースを大幅に変えなきゃならんのかな?

513 :デフォルトの名無しさん :01/08/26 14:24
>505
それ旧タイプね。今は全部新タイプ(TYPE_TERI)だったと思う。
TYPE_TERIのfindSplitter内はほとんど改良の余地はない。
コードをうまく書くかインラインアセンブラでCMPS(x86と仮定して)を
使うようにすることぐらいかな?

514 :名無しさん@ミポリソ@UNIX板 :01/08/26 14:25
>>497-498
ご苦労さん とりあえず負荷が大きいのはdat_read()とfindSplitter()と考えていいのか...

dat_read() -> mmap()を使う
findSplitter() -> if (*p >= 0xa0 && *p <= 0xdf) {p++; continue;} がムダ

ってとこかな とりあえず...... しかし全面的に改めた方がって気も

515 :デフォルトの名無しさん :01/08/26 14:28
とりあえず、gmtime()の重複をなんとかしないといけないから、
//先頭のほう
- struct tm *tm_now;
+ struct tm tm_now;
//zz_GetEnv()
- tm_now = gmtime(&t_now);
+ tm_now = *gmtime(&t_now);
あと、
html_error999()とlogOut()とIsBusy2ch()の
tm_now->をtm_now.に直すべ。

実際には、IsBusy2ch()しか呼ばれてないから、
tm_nowの代入はそこでも良いかもしれない(コンパイルエラーだけど)。

516 :デフォルトの名無しさん :01/08/26 14:29
UNIX知らなくてごめん。
mmap()って、排他制御はどうなってるん?

あ、でも読みこみだけだから大丈夫なのかな?

517 :デフォルトの名無しさん :01/08/26 14:34
gmtime()は... from http://cocoa.2ch.net/test/read.cgi?bbs=unix&key=998764722&st=447&to=450&nofirst=true

447 名前:名無しさん@お腹いっぱい。 投稿日:01/08/26 12:52
   .htaccessに
     SetEnv TZ "JST-9"
   って書いとくか コード中で
     putenv("TZ=JST-9"); tzset();
   ってしとけばlocaltime()使うのもありかと
   むしろ 9*60*60 のハードコーディングはコードの見通しが悪くなるような

450 名前:447 投稿日:01/08/26 12:58
   つうかオススメは
     gmtime_r(), localtime_r()
   なんだけどね

518 :514 :01/08/26 14:58
>>516 するんならmlock()か...

あとfindSplitter()のssも unsigned char にした方が何気によさげかも

519 :デフォルトの名無しさん :01/08/26 15:09
>514
>findSplitter() -> if (*p >= 0xa0 && *p <= 0xdf) {p++; continue;} がムダ
テーブルすべきだろうけど、そもそも、そのコードはTYPE_TERIの時
はコメントアウトされてるので関係ないです

>516
>mmap()って、排他制御はどうなってるん?
ない。他プロセスがファイルを書き換えると、mmapで得られたバッファの中身も同時に
書き換わる。
>518
mlockって、メモリブロックがページアウトされないようにロックするだけで、
書き換え不可ってできたっけ?

520 :497 :01/08/26 15:10
環境書き忘れたけど read11.c を RedHat6.2/gcc2.91.66 でコンパイルしてます。
コンパイルオプションは -pg -DLASTMOD -DGZIP で、read2ch.h内で TYPE_TERI, Katjusha_Beta_kisei をdefine済み。

で、dat_read() が遅いのは実際のI/Oではなくて
壊れたDATファイルへの対処と思われる
for(i=0;i<zz_fileSize;i++)
{
if(BigBuffer[i] == '\0')BigBuffer[i] = '*';
}
この部分が大半の時間を食ってる。

findSplitterに関しては、、DATファイルの先頭のエレメントは固定長区切りに
するとかしないとどうにもならんかもね。インライン展開してもあんまり芳しくなかった。

521 :デフォルトの名無しさん :01/08/26 15:22
全般的に\0終端文字列ではなく、長さを別に保持したほうが
良いように思う。
現状だと、BigBufferのデータをgetLineMaxで行単位に、res_splitでフィールド単位に
\0終端させてるが、そのたびに、BigBufferの全スキャンになるので、
一括で、行とフィールドに分割したほうが良いように思う。

522 :VB厨房 :01/08/26 15:25
曜日必要だぞゴルァ。あれも立派なインデックスだ。
あと自動リンク削除などあまりにも製作者・管理者側に偏りすぎ。

一回の投稿行数1行減らしてでももう少しユーザーフレンドリーなものにしてくれよ
(厨房排斥が目的なら知らんけど)

523 :デフォルトの名無しさん :01/08/26 15:32
>>522
行数は、減らしても複数回に分けて書き込まれるだけ。
>(厨房排斥が目的なら知らんけど)
転送量を減らすのが目的なのだから、それもアリかもしれない。

524 :デフォルトの名無しさん :01/08/26 15:33
>>521
長さデータには、くずはの壊れにくさレベルを導入してな

525 :デフォルトの名無しさん :01/08/26 15:34
私も素人ですが、曜日の表示は復活して欲しいですね。
「名前」表示は無くても良いような気はしますが・・・。

526 :デフォルトの名無しさん :01/08/26 15:37
2001年8月25日。2チャンが本格的に閉鎖になりかけた日だよ。
転送量が多すぎて、費用が¥7,000,000/月もかかってるって発表されて、
「数日中に閉鎖」って予告されてさ、 その日のうちにあっちこっちの板が封鎖されてた日だよ。
一時HTTPブラウザの表示が極少化されちまった。あのときのUNIX板の住人、カッコよかったんだぜ。
「総力を結集」ってのは まさにああいう状態だよ。
HTTP転送量を1/3に削減しないと閉鎖、ってもんだから、新しいプログラム組んでさ、
そしたらほんの何時間かで完成したんだよ。
それが聞いてくれよ、
目標は「1/3」だったのに、「1/16」まで圧縮に成功しやがったんだよ。
職人技なんてもんじゃねえよ、神技だよ


     |          |
     |          |
     十          十
     (`  ∧_∧     (`  ∧_∧             UNIX板・プログラマー板
  ()lll()\(´∀` ) ()lll()\(´∀` )                マンセー
  / ・ \ヾUnixと)  / ・ \ヾ PG と)          \___ ____ ___/
 (_人   \ ノ ) (_人   \ ノ )   ,,,,,.           ∨     .∨         オツカレサマー
    人 ノ  (_)~⌒`ヾ人 ノ  (_)~⌒`ヾ^lll.         ∧_∧   ∧∧      ∧ ∧__.
    ( < | ソ    /   ( < | ソ    /   ,)|||.       ∩´∀` ∩∩゚Д゚∩   /(゚ー゚*∩ /\
    \ l ノーー''''/ ' ノ''|\ l ノーー''''/ ' ノ''|          ヾ    ソ ヾ |  |ノ  /| ̄∪ ̄ ̄|\/
      |_|.フ   ヾ、く.`l_|  |_|.フ   ヾ、く.`l_|            | | |    |  |,,〜  |____|/
      /_|。。 。  キ/ /_|.。/_|。。 。  キ/ /_|.。。 。 。   (__(____)   ∪∪      ∪∪

527 :518 :01/08/26 15:44
>>519
mlock()じゃダメだね スマソ......
Solaris上のlockf()だとできるみたいだけど... Linuxとか*BSDだと
flock()なのか? こちらでできるかは不明

528 :ナナシサソ :01/08/26 15:47
ロックするとマズイんじゃない?
ロックする時間を短くする為にBigbufferを使ってるんでは?

529 :デフォルトの名無しさん :01/08/26 15:48
もう面倒だからイチから書き直しちゃえば?

530 :デフォルトの名無しさん :01/08/26 15:50
>>520
> for(i=0;i<zz_fileSize;i++) {
> if(BigBuffer[i] == '\0') BigBuffer[i] = '*' ;
> }

for (i = zz_fileSize; --i >= 0; ) {
if(BigBuffer[i] == '\0') BigBuffer[i] = '*' ;
}

これで少し速くならない?(せこいけど…)

531 :デフォルトの名無しさん :01/08/26 15:53
>>530
C++に書き直してます、なんとなく。
そこの部分は後続の行数を数える関数とまとめて

env.lineMax = 0;
// TODO
char* p = env.BigBuffer;
char* pline = env.BigBuffer;
const char* const p1 = env.BigBuffer+env.fileSize;
for(; p!=p1; ++p0) {
switch(*p) {
case '\0':
*p='*';
break;
case '\n':
if(env.lineMax>RES_RED) {
goto exit_getenv;
}
env.BigLine[env.lineMax++] = pline;
pline = p+1;
*p = '\0';
break;
}
}
exit_getenv:
return 0;

としたほうが速いと思います。

532 :531 :01/08/26 15:54
C++固有コードとミスがあるけど愛嬌ってことで。

533 :デフォルトの名無しさん :01/08/26 15:57
>>526
神業では無いと思うけど・・・元の CGI が御タコ過ぎただけ。
でも、元の CGI が神業レベルで最適化されていたら、2CHは終わっていたな。。

しかし、焼け石に水か、、、あとは営業努力に期待しよう。

534 :名無し :01/08/26 15:58
今日モーニング娘の新メンバー決定があるので、
負荷テストが出来ると思います。

535 :デフォルトの名無しさん :01/08/26 16:00
>>526
ただでさえ「転送量が……」って言っているんだから、
何回も同じ文章を、しかもAA付きでコピペするのは
止めようや。

536 :デフォルトの名無しさん :01/08/26 16:20
Web製作版のほうで、
レスの表示数にFORMを使ってはどうかって意見が出てるよ。

537 :デフォルトの名無しさん :01/08/26 16:21
>>530
本気で高速化を考えているなら、その部分コメントアウトしちゃえ。
つか、dat_readとdat_outはまとめた方が速くなるような。

538 :デフォルトの名無しさん :01/08/26 16:23
43kのファイルの読み込み、内容の全スキャンを20000回ループさせた結果。
(gprofだと、カーネルで費やされた時間が出なかったので、bash-builtinのtimeで計測)

fread版:
real 1m3.433s
user 0m23.230s
sys 0m6.480s

mmap版:
real 0m50.591s
user 0m23.090s
sys 0m0.780s

この差を大きいとみるか、小さいとみるか。

539 :デフォルトの名無しさん :01/08/26 16:24
つまらない質問だったらごめん。

>530
'\0' を'*'に変換する処理って何の意味があるの?

540 :デフォルトの名無しさん :01/08/26 16:27
>>539
>>520を参照。壊れちゃってる物、仕方ないと思うけどなあ。
datファイルを直すのは、別スクリプトにしたら?

541 :デフォルトの名無しさん :01/08/26 16:28
>>538
systemでかなり差が出ているのでmmapを使うべきでしょう
ただでさえforkにgzipのexecとsystem酷使してますし…

542 :デフォルトの名無しさん :01/08/26 16:28
datファイルは\nで行を区切っているけど、
これをgetLineMaxで\n→\0に置換して行単位に、
res_splitで<>→\0\0に置換してフィールド単位に
ばらして、それぞれ\0終端文字列(いわゆるC形式の文字列)として
扱ってる。
なので、壊れたdatファイルで途中に\0が入ってると処理がおかしくなるので、
最初の段階で\0をつぶしてるらしい。

543 :デフォルトの名無しさん :01/08/26 16:33
>540 >542
にゃるほど、サンクス。

544 :デフォルトの名無しさん :01/08/26 16:34
>541
ただ、mmapにすると、バッファを書き換えられなくなるので、
現在のようにBigBufferを扱いやすいように修正しながら\0終端ベースの
処理ってのはできず、全体的に行、フィールドの先頭ポインタとその長さを保持して
それを使いながらの処理になる。
すろと、コストのかかる部分が移動するかもしれない。
あと、readの動作中にあぼーんが発生すると、mmapで得たバッファの内容がずれる
リスクがある(普通の書き込みなら追加なので問題ないと思う)。

545 :デフォルトの名無しさん :01/08/26 16:36
>539
いや、実はよく分かっていません。
元ソースのdat_read()にそういう処理があるっていうだけで…

推測ですが、datの読み込み後、何らかの理由でバッファに'\0'が入ってきた場合
他の関数の処理に不都合をもたらすので、
とりあえず'*'に変換しとけ、っていうだけかも知れません。
(実際はあり得ない?)

546 :デフォルトの名無しさん :01/08/26 16:37
とりあえずこんなんでもかなり効くよ
if (strlen(BigBuffer) != zz_fileSize) {
 for(i=0;i<zz_fileSize;i++)
 {
 if (BigBuffer[i] == '\0') BigBuffer[i] = '*';
 }
}

標準関数侮れず

547 :datについて知ってること :01/08/26 16:38
誰かdatのきちんとした仕様を知ってる人いる?
サーバによってあぼーんされた時の挙動が違ったりする。
一番最後のデミリタがなくなる事がある。
あぼーんのスクリプトによっても違うみたい。入り混じってる。
デミリタが減るのは1があぼーんされる時にしか出ない気がする。

あとバイナリ貼り付けたりすると、本文中に<>が出現することもある。
レス1件にデミリタが10個とかって事もあった。

'\0'はエレメントの頭かケツにしか付かないと思う。
10000個くらい調べたけど、要素の途中に挟まってるのは見つからんかった。

この手の話は多分みみずんが一番詳しいと思う。

548 :545 :01/08/26 16:38
げ、考えてる間に正確なレスが。バカ丸出しで逝ってきます。(w

549 :デフォルトの名無しさん :01/08/26 16:40
>>546
結局BigBufferを最後まで一文字ずつ調べるわけで、
まあ、BigBuffer[i]='*';が無いだけ速いか。

550 :デフォルトの名無しさん :01/08/26 16:42
>546
すばらしい。strlenみたいな多用されるやつは、アセンブラレベルで、
カリカリにチューンされてるはずだからね。

551 :デフォルトの名無しさん :01/08/26 16:43
あとres_split()内でfindSplitter()も使うのやめちゃって
p0 = strstr(s[i-1],"<>");
の方が速いよ

まあ546の変更とあわせて実時間10.89秒が9.93秒になるくらいなのだけども

552 :549 :01/08/26 16:43
>>549
自己レス。
if(BigBuffer[i]=='\0')が成立しなければ一緒だ。逆に遅いか?
ライブラリ内部がアセンブラででも最適化されてりゃ速い、
かもしれない。

553 :550 :01/08/26 16:43
いや、よく考えたら、strlenの結果使えば、'\0'の位置なんて
既にわかっていることに気づいた。

554 :デフォルトの名無しさん :01/08/26 16:45
>>553
'\0'が複数含まれていた場合を忘れてる。

555 :550 :01/08/26 16:46
int pos;
while ((pos = strnlen(BigBuffer, zz_fileSize)) != zz_fileSize)
  BigBuffer[pos] = '*';
か。

556 :554 :01/08/26 16:47
>>555
失礼、忘れて無かった。

557 :デフォルトの名無しさん :01/08/26 16:49
>>553
これでいけるってこと?

int BufferLen = strlen(BigBuffer);
if (BufferLen != zz_fileSize) {
 if (BigBuffer[BufferLen] == '\0') BigBuffer[i] = '*';
}

558 :デフォルトの名無しさん :01/08/26 16:50
int pos;
char *p = BigBuffer;
int rest = zz_fileSize;
while ((pos = strnlen(p, rest)) != rest)
{
p[pos] = '*';
p += pos + 1;
rest -= pos + 1;
}

559 :554 :01/08/26 16:51
>>558
それなら複数'\0'があったときもコストが高くならなくていいね。

560 :デフォルトの名無しさん :01/08/26 16:51
strnlenも早いの?

561 :デフォルトの名無しさん :01/08/26 16:52
>>552
少なくともLinuxのglibcの環境においては-O2つけたとしてもライブラリ使ったほうが速いようだ

562 :デフォルトの名無しさん :01/08/26 16:53
http://piza2.2ch.net/jisaku/dat/980503747.dat
↑の2001/05/09(水) 12:41のすぐ上のレスみたいなのでも行ける?

563 :デフォルトの名無しさん :01/08/26 16:54
みんなで力を合わせれ!

gzip 圧縮や Last-Modified 対応など
転送量軽減に関する話題は↓こちらでお願いします。
2ch閉鎖の危機なんだと @UNIX板
Part2.1
http://cocoa.2ch.net/test/read.cgi?bbs=unix&key=998754174
Part3.1
http://cocoa.2ch.net/test/read.cgi?bbs=unix&key=998764722
↑作業がほぼまとまったためプログラム板の
プログラマが2chを救う!?に移動したようです。

read.cgi の無駄なコードの省略や高速化など
関数毎の最適化については↓こちらでお願いします。
プログラマが2chを救う!? @プログラム板
http://piza2.2ch.net/test/read.cgi?bbs=tech&key=998736516
2号
http://natto.2ch.net/test/read.cgi?bbs=hp&key=998774537

無駄なタグの消去やHTMLの修正などは↓こちらでお願いします。
スキルの高い方知恵を貸してください @web制作管理板
http://natto.2ch.net/test/read.cgi?bbs=hp&key=998741961

新CGIが導入された板の動作報告は↓こちらにどうぞ。
2chの動作報告はここで。 @批判要望板
http://teri.2ch.net/test/read.cgi?bbs=accuse&key=998808733

応援やグチ、今後の2chはどうなるか、
何故この事態が起こったかなどの議論は↓こちらでどうぞ。
UNIX板で2chのプログラムを開発中 @批判要望板
パート2
http://teri.2ch.net/test/read.cgi?bbs=accuse&key=998757160
パート3
http://teri.2ch.net/test/read.cgi?bbs=accuse&key=998765190


なおUNIX板では
・板の統廃合についてのスレ
・浩之氏の公式発言についてのスレ
・それぞれの板の問題点をあげるスレ
などが立っています。


他の板の住人へ

ここのURLを張らないで応援板のURLを張ってください。

564 :デフォルトの名無しさん :01/08/26 16:56
>'\0' を'*'に変換する処理
これって、いかにも付け焼刃的に「バグを見つけたのであとから付けました」って
感じがするんだよね。
というのは、直後で行数を数えるために全体をスキャンしているのに
同時に行っていないから。

全体をスキャンするのは1回にして、
ただし、全てを同時に行う。
やることは、
・行区切りの検索と位置保存
・'\0'の'*'への変換
・&amp -> & への 変換 … ただし、&amp; は変換しない
(・@+`の変換 … そのレスは前に詰めなければいけない)
(・&quot; ??)

つーかさ、Splitした結果をBigLineに持たせるべき。
struct lines {
  char *name;
  char *mail;
  char *date;
  char *text;
};

それと、機能追加?になるけどあった方が良いと思うのがさ、
オプションでのtext内部にある<br>以外のタグの削除ね。
要は>>nnがえらく転送量をふやしちゃうんだから、
<a href=...> と </a>のタグを無条件に削除するオプションがあってもいい。
ただ、BigBuffer内部で前詰めになるから、面倒くさいし、
各レスの先頭にタグが入っている場合が多いから、
実質memmoveの繰り返しになっちゃいそう。

それなるくらいなら、BigBufferの他にもう一つバッファを作って、
コピーしながら置換したほうがいいかもしれないけどね。
これなら、mmapとも併用できるでしょ。

565 :がいしゅつ? :01/08/26 16:59
一つ分かったことは、
「ひろゆきがプログラマとしてタコである」
ということだ。

566 :  :01/08/26 17:00
>>565
ここまでの負荷を想定してはじめから作っていたのならそうかもな。
でもソレはありえないだろ。

567 :デフォルトの名無しさん :01/08/26 17:02
>>564
>オプションでのtext内部にある<br>以外のタグの削除ね。
コストが高いと思うなあ。それはbbbs.cgiでやった方が良いのでは?

568 :デフォルトの名無しさん :01/08/26 17:03
今までスクリプトって博之がつくってたの?

569 :デフォルトの名無しさん :01/08/26 17:05
今のスクリプトはひろゆきじゃないはず。C言語出来ないって言ってた。

570 :名無し ◆NtVkSITE :01/08/26 17:05
>>568
トオルさんや削除忍さんのようですが。

571 :G :01/08/26 17:05
**********************************

あのさ、もうUNIX板でのZIP関係の手入れは一段落したんだから、
つぎはこのスレでのコード最適化結果をどんどん実際に反映していこう。
生きてるFTPサーバか何かを提供してくれる人と、トランクソースに
ここで出てきた差し替えコードを反映する、意欲あるプログラマの人は
手を上げてくれよ。
俺?すまそ、力不足だ。

*********************************

572 :名無し :01/08/26 17:07
暫定版をリリースして、
デザインを含めて1からプログラムを
作り直したほうがよいと思う。

新しいプロジェクトを立ち上げましょうよ。

573 :G  :01/08/26 17:08
ちなみに571をカキコしようとして、書き込むボタンを押したら
一面文字化けのページが帰ってきたぞ。
read.cgi ver5.02には、チューニング以前のバグもまだあるのか?

574 :デフォルトの名無しさん :01/08/26 17:09
ひろゆきって専攻何?
大学4年の夏に米国に心理学の留学行っている。
プログラマーじゃないのかな?

575 :G  :01/08/26 17:09
ていうか
http://piza2.2ch.net/tech/index2.htm
をまともに読めるヤツいる?

576 :デフォルトの名無しさん :01/08/26 17:10
>>575
読めてるよ。

577 :デフォルトの名無しさん :01/08/26 17:11
>>575
IEでhttp/1.1チェック入れてないとか?

578 :G  :01/08/26 17:12
分かった。
カキコすると自動的に飛んでいく
http://piza2.2ch.net/tech/index2.htm
は今明らかにバグってて、
正しいのは
http://piza2.2ch.net/tech/index2.html
だよ。これはすぐ直せるだろうけど、
どうすりゃいいんだよ。

579 :名無し娘。 ◆vP.bOZFQ :01/08/26 17:13
Unix板の方で、最新版が
http://star.endless.ne.jp/users/forcount/contents/scriptmaker/read11.c
から
http://star.endless.ne.jp/users/forcount/contents/scriptmaker/read11.rev1.c
に更新されました。
変更点は、613行目
- if(pid=fork() == 0){
+ if((pid=fork()) == 0){

580 :デフォルトの名無しさん :01/08/26 17:13
>>572
それをやるなら、datのフォーマットから見直したいな。
ls=10でもdatを全部読み込むってのは、ちょっとなあ。

581 :デフォルトの名無しさん :01/08/26 17:15
1にも書いてあるが、今のところ道は3つだと思ってる。

1)発想はそのままでCode書き直しなど全面書き換え最適化を行う
2)P2Pで頑張る
3)その他のアイデアでやってみる

現状動いているのは2だけだけど、1に手を付けるのもいいかもしれない。
3はまだ未知数。

582 :デフォルトの名無しさん :01/08/26 17:16
datフォーマットを見直さなくても
レスの位置を記録したインデックス作るだけで
かなり効果無い?

583 :デフォルトの名無しさん :01/08/26 17:17
>580
だよねぇ。
ファイルにインデックスでもつけたほうがいいよね。
既存のデータをどうするかが問題だけど。

584 :デフォルトの名無しさん :01/08/26 17:19
インデックスは付けたいね。
でもそれをやるとすると、bbs.cgiの方に手を入れなくてはならない。
bbs.cgiのソースは公開されてた?

585 :デフォルトの名無しさん :01/08/26 17:20
>>578
バグではありません、仕様です(w
負荷低減のため、htm側はzip圧縮ページなのな。
mod_gzip入るまで待ちんしゃい。

586 :デフォルトの名無しさん :01/08/26 17:20
>>584
されてない。read.cgiのみ。

587 :デフォルトの名無しさん :01/08/26 17:22
そういうの突き詰めていくとバックエンドのデータはRDBで管理して、クライアント処理は
Servletで、とかなってくんだけどサーバ側の事情でアーキテクチャを大きく変えるのは難しそう。

俺的には read.cgi の mod_2ch (Apache module) 化のが一つのゴールかなあ、って思うが。

588 :デフォルトの名無しちん :01/08/26 17:23
>>585
mod_gzipになるまでまだ1週間以上あるみたいだから
とりあえず今は「.html」に飛ぶようにしておいた方がいいんじゃないの?

589 :デフォルトの名無しさん :01/08/26 17:25
すこし前に11REV1を落とされた方
修正ミスでした
今は修正完了です
アドレスは同じです

590 :564 :01/08/26 17:26
よーく考えたら、Splitや置換って全体に対しては必要なかったね。
実際のls=??等のリクエストがどんな割合で来てるのかわからんけど。

つーことは逆に、
getLineMax()にFileSizeを与えて、memchrで行を数えて、
'\0'->'*'への置換をout_html()で行うようにするほうがいいかな?
レスを全部読む場合は、全体を一括スキャンしたほうが効率的だろうけど、
トータルではどうなるか。

で、もし全体をスキャンするなら、特殊文字('\0','\n','<','&'等)をテーブルにして
if (teble[*p] & flag) {
  switch (*p)
    ...
}
みたいな感じが良さそう。
else if の繰り返しや全体をswitchにしてしまうよりまともだと思う。
(負荷的には、キャッシュの関係があるから、試してみないとわからないけど)

テーブルは8bitあるから、日本語文字やURLの終端判別にも使える。
これも、スタートアップでテーブルを作るほうがソース的には楽だけど、
負荷を考えると自力で作った方が良いかもね。

なんか俺も良くわかってないから、素直に推移を見守りますわ。

591 :デフォルトの名無しさん :01/08/26 17:27
インデックス付けると、bbs.cgi以外にも、あぼ〜ん処理とかも
全部対応させなくちゃならない。それこそ大作業になるよ。

592 :デフォルトの名無しさん :01/08/26 17:28
>>587
mod_gzip付けるだけでも汎用のサーバーがどうのもめていたらしいからmod_2chというのも厳しいのではないかな?
現状のデザインに不満を漏らしつつも何とか地道な改善を施すのはPGの宿命だよ。

593 :563 :01/08/26 17:33
あ、間違ってた・・・
プログラマが2chを救う!? @プログラム板
の2号は
スキルの高い方知恵を貸してください @web制作管理板
の方の2号だ。

594 :デフォルトの名無しさん :01/08/26 17:55
だからさーーーーー、早く実際の作業始めよーよー。

595 :名無し娘。 ◆vP.bOZFQ :01/08/26 17:55
お邪魔かもしれませんが、ちとまとめてみます。(作業中)

596 :デフォルトの名無しさん :01/08/26 17:55
/*行区切りの検索、'\0'の変換、&->&の変換を一度にやるソース案*/

char* pin = BigBuffer;
char* linepin = BigBuffer;
int line = 0;

while(pin < &BigBuffer[zz_fileSize]){
  switch(*pin){
    case '\n':
      BigLine[line] = linepin;
      *pin = '\0';
      pin++;
      linepin = pin;
      line++;
      if(line > RES_RED){
        goto wend;
      }
      break;

    case '\0':
      *pin = '*';
      pin++;
      break;

    case '&':
      if(strncmp(pin, "&", 5) == 0){
        pin += 5;
      }else if(strncmp(pin, "&", 4) == 0){
        /*・・・・(^^;*/
        pin += 4;
      }
      break;

    default:
      pin++;
      break;
  }

}

wend:
/*続き*/;

597 :デフォルトの名無しさん :01/08/26 17:57
JavaやDelphiのような優れた言語を使わず、
Cなんていう時代遅れの処理系を使っているのはなぜなんでしょう。
それとも、ドキュンしかいないのでしょうか。

598 :名無し娘。 ◆vP.bOZFQ :01/08/26 18:00
(あ、お話はどんどん続けておいてください)

599 :sage :01/08/26 18:01
速いからじゃないの?

600 :デフォルトの名無しさん :01/08/26 18:01
>>597
おまえいつからプログラムはじめた?

601 :デフォルトの名無しさん :01/08/26 18:01
Delphiて・・・2ちゃんってNTサーバーだっけ?

602 :デフォルトの名無しさん :01/08/26 18:02
あおりはほーちちまちょー

603 :デフォルトの名無しさん :01/08/26 18:02
>>597
はいはい中学生は学校の宿題でもしてて

604 :デフォルトの名無しさん :01/08/26 18:03
597 はいつもの厨房なので無視という方向で。

605 :デフォルトの名無しさん :01/08/26 18:05
ところでこれまでに出た改良案をすべて
取り込んだものはどれくらい早くなるの?
誰か試して。

#俺もやりたいけど今手元にwinしかない、、。

606 :デフォルトの名無しさん :01/08/26 18:07
>605
ダッシュでCygwin落とせ。apacheも動くぞ。
http://sources.redhat.com/cygwin/

607 :デフォルトの名無しさん :01/08/26 18:10
>>597
実際軽く動くのはどっち?

608 :デフォルトの名無しさん :01/08/26 18:11
bbs.cgiのソースは何故公開されない?

609 :デフォルトの名無しさん :01/08/26 18:13
>608
実はばっちりログを保存していて、
それがばれるのがいやだから。

だったりして。

610 :デフォルトの名無しさん :01/08/26 18:14
>>608
ソース見ていたずらを思いつく人が出てくるからでは?

611 :デフォルトの名無しさん :01/08/26 18:21
>>607
言語の種類だけで決まる話では無い

612 :デフォルトの名無しさん :01/08/26 18:21
本気で2chのシステムを最適化したいんなら
bbs.cgiとか、他のモジュールも公開するべきだな。
さらに俺を2週間ほど雇えば負荷総合的な負荷は5%程度まで縮小するかもな。
まあ人月300くらいはもらうけど。

613 :デフォルトの名無しさん :01/08/26 18:22
安直にパスが全てべた書きされてるのではないか?
いろいろな管理用コマンドとかもいっしょに。

614 :名無しさん :01/08/26 18:23
一晩で軽くなるなら、いままで何やってたんだ?

615 : :01/08/26 18:24
>>612 現状を把握せずに、成果を約束できるのか?(w

616 :デフォルトの名無しさん :01/08/26 18:26 ID:14u64k9s
短期的には、既存のスクリプトの改良/高速化の方向ですが、
結局は最初の議論に戻って、2ch全体のシステム設計から
やり直さないといけないと思います。

そちらのシステムデザインのスレを立てて始めたらどうでしょう?
スレを建てる前に、まず、
 ・マスター(現在の2ch開発スタッフが望ましい)
  準マスター
 ・仕様、ソースなど現時点での決定事項がアップロードされる場所
   http://www.gedoh.org/aki/2ch/wiki/yukiwiki.cgi?TopPage で良いでしょう
これらを決めて、スレのトップに明記する。
・・・でないと、スレ全体読み直すだけでかなりの労力です。

read.cgiだけではなく、データフォーマットから全てやり直さないと
駄目でしょう。。。オープンソースで常に改良していった方が。

617 :デフォルトの名無しさん :01/08/26 18:26 ID:Y5ufE4Do
>>615
「こんな外注先は害虫」の見本だよなぁ…

618 :名無し :01/08/26 18:28 ID:cNxfOPbY
read.cgi 更新してみてよ。
サーバー管理者いないんですか?

619 :デフォルトの名無しさん :01/08/26 18:28 ID:K3x70GYg
>>614
あの…一晩48時間なんだけど・・・

620 :デフォルトの名無しさん :01/08/26 18:29 ID:goYJpq5c
>478-479 修正案
char *zz_GetString2(char *dst,char tgt)
{
int i, len;
int ch = (int)'&'; int ch2 = (int)'=';
char *kk = zz_query_string;
char *kk0, *kk1;
for(i=0;i<200;i++)
{
if(kk[0] == tgt)
{
kk0 = strchr(kk,ch); /* & */
if(!kk0) kk0 = strchr(kk,(int)'\0');
kk1 = strchr(kk,ch2); /* = */
len = kk0 - kk1 - 1;
if(len > 0)
{
if(kk0) *kk0 = '\0';
strncpy(dst,kk1+1,20);
dst[20-1] = '\0';
if(kk0) *kk0 = '&';
return dst;
}
}
kk = strchr(kk,ch);
if(!kk) break;
kk++;
}
}
機能は >94 参照。zz_GetEnv から、
zz_GetString2(zz_bs ,'b');
などのように呼んでください。

該当部分(
bbs=unix&key=998764722&st=23&to=34&nofirst=true&imode=true
のような文字列を zz_query_string としての、連続7回の呼び出し)
の100万回の処理時間は、手元の環境で
修正前 51.3s → 修正後 6.1s 。

>497-498 によれば処理時間への影響は小さいけれど、
リンク部分の文字列を短くできます。

621 :デフォルトの名無しさん :01/08/26 18:29 ID:K3x70GYg
>>618
しばらくは各自localhostでテスト運用だな。

622 : :01/08/26 18:29 ID:C1Z3lpu.
>>616
http://www.gedoh.org/aki/2ch/wiki/yukiwiki.cgi?TopPage
そこ、CGIのリンクで保存しにくい。
普通にリンク貼れって漢字?

623 :名無しさん :01/08/26 18:29 ID:rVzqRC42
ん?アイデー?

624 :名無し娘。 ◆vP.bOZFQ :01/08/26 18:32 ID:7Eg.mvRo
あの、抜本的見直しもいいとは思いますが。。。
抜本的なのと、そうでないのはわけた方がいいと思います。
とりあえずは、既存の関数の機能は変えない範囲で、最適化を
行うべきかと。
#抜本的見直しを運営が望んでいるかもよくわからないですし。

625 :デフォルトの名無しさん :01/08/26 18:33 ID:goYJpq5c
>608-615
サーバごとなどに異なる規制部分は非公開としても、
全体に共通の部分は公開された状態で、気づいた人が
欠点を指摘していった方が安全性は高くなるかと。
(その意味で、 read.cgi と違いすぐ入れて様子を見るのは危険)

管理側にも検討して欲しい。

626 :デフォルトの名無しさん :01/08/26 18:36 ID:1sXjF0HU
こういう前提があるから、やはりCGIレベルでどこまで最適化できるか?
しか当面ありえないでしょ。

>39 名前:夜勤 ★ 投稿日:2001/08/25(土) 19:34
>Apache に手を加える(パラメータ)を変更する というのはできないです。
>なぜなら、このサーバと同じサーバという売りでレンタルサーバ業を
>営んでいるもので、汎用的なサーバじゃなきゃだめなんです、すんません。

627 :デフォルトの名無しさん :01/08/26 18:38 ID:aVwVHBUM
この板にも強制IDが出てるな・・・何故か。
微々たるもんだが、ID:???の場合に出力を止めれば、
数百バイト程度は得するぞ。
・・・Non-Accept-Encoding: gzip なら。

628 :デフォルトの名無しさん :01/08/26 18:39 ID:mpESCVMc
>>624
書き直しはほとんど行われず、
P2Pは来週末にも終らず忘れ去られ、
とりあえず当面を乗り切っただけで
次の危機の時にまた盛りあがるが、果たせずに一票。

629 :デフォルトの名無しさん :01/08/26 18:40 ID:ph4Tm7AM
>627
全板強制IDっぽい。人減らし作戦の一環でしょう。

630 :デフォルトの名無しさん :01/08/26 18:45 ID:A3jnb8oE
全板だね。「材料物性板」とかまでID表示になってる。(w

631 :名無し :01/08/26 18:51 ID:cNxfOPbY
負荷が増える前に、プログラムを更新した方が
いいと思われます。

632 :デフォルトの名無しさん :01/08/26 18:52 ID:cvrtcctM
モー娘メンバー発表まであと2時間。

633 :名無し娘。 ◆vP.bOZFQ :01/08/26 18:55 ID:7Eg.mvRo
>>632
ああ、それまでにまとめ作業終えたい(笑
現在 1/3 ほど終了

634 :デフォルトの名無しさん :01/08/26 18:57 ID:56vmLS/g
人を減らしたいのなら、書き込みだけじゃなくてread.cgi起動する度に
ログを取ってる事も周知させれば?

635 :デフォルトの名無しさん :01/08/26 19:01 ID:IO6XhCZY
>>634
いまだに2chは匿名性だから来たのにとか
ニュー速の厨坊がほざいてるからねw

636 :デフォルトの名無しさん :01/08/26 19:04 ID:PGbsVVuc
でも int logOut(char *txt) は削るべきでは?
匿名とかそういうのじゃなくて負荷の問題で。
ログはApacheのログが別にあるからいいでしょ。

637 :デフォルトの名無しさん :01/08/26 19:08 ID:PbVG8tb2
>人を減らしたいのなら、書き込みだけじゃなくてread.cgi起動する度に
>ログを取ってる事も周知させれば?

あんたソース読んでないでしょ?
read.cgi内でやってるのは不正なUserAgentの記録
だいたいApacheがアクセスログ取ってるだろが

638 :636 :01/08/26 19:12 ID:bQ7eOgW2
あぁ、Apache側 でUAまで記録してるとは限らないのか。
個人的にいつもCombineなログを取っているので早とちり。

#っていうか私のIDかっこ悪い。 PGだってさ。

639 :636 = 638 :01/08/26 19:13 ID:bQ7eOgW2
ID変わった。なぜ?

640 :デフォルトの名無しさん :01/08/26 19:14 ID:UBBPE9x.
実はID出てること自体がバグとか

641 :デフォルトの名無しさん :01/08/26 19:17 ID:tdpKykIg
hour もID算出に使ってるんだろうね。

642 :デフォルトの名無しさん :01/08/26 19:18 ID:HihBi4VA
IDは、投稿日の文字列も元にしてるからね。
で、20や曜日を削ったから、おなじみのエンバ(以下略

643 :デフォルトの名無しさん :01/08/26 19:18 ID:nq7nF8XA
minの一桁目とIPアドレス?

644 :643 :01/08/26 19:19 ID:nq7nF8XA
test

645 :デフォルトの名無しさん :01/08/26 19:19 ID:HihBi4VA
リンクの出力を減らすのは賛成だけど、
一番食ってるのはスレへのリンクではなく、
>>999のリンクだからねぇ。
ご丁寧にst=nn&to=nn&nofirst=trueまで付いてるから。
nofirst=true や imode=true を nofirst=1 や n=1 等に対応して、
なおかつ最も重要なのは、bbs.cgiがdatに書きこむ内容を変更しないと。

646 :643 :01/08/26 19:20 ID:nq7nF8XA
再test

647 :名無し :01/08/26 19:20 ID:GLhprhn.
ID変わるバグか。IDの意味無し?

648 :デフォルトの名無しさん :01/08/26 19:21 ID:tdpKykIg
>645
st -> s
to -> t
nofirst -> nf
でいいんじゃない?それに =true 付けるのも無駄。

649 :636 :01/08/26 19:21 ID:bQ7eOgW2
IDは従来はdateとIPアドレスの一部から算出していたはず。
もし新たにhourも加わったとしても 636 と 638 で変わったのは説明できないような...

650 :名無し :01/08/26 19:21 ID:GLhprhn.
ID変わらないから大丈夫だ。

651 :デフォルトの名無しさん :01/08/26 19:23 ID:NGu5IyHk
ID変わるかな(1

652 :デフォルトの名無しさん :01/08/26 19:23 ID:NGu5IyHk
IDが変わるかな(2

653 :643 :01/08/26 19:25 ID:Y.ZOSOn2
ID→IP
http://www35.tok2.com/home/testsan/search.cgi

654 :デフォルトの名無しさん :01/08/26 19:26 ID:tdpKykIg
19時何分かに salt が変わった?
http://teri.2ch.net/test/read.cgi?bbs=accuse&key=998818852&st=132&to=132

655 :636 :01/08/26 19:27 ID:bQ7eOgW2
一週間ぐらい前に作ったID逆変換スクリプトで試したら今のIDは正しく逆変換
出来るけど>>636のは結果が出なかった。何か間違ってあわてて直したのかな?

656 :名無し娘。 ◆vP.bOZFQ :01/08/26 19:28 ID:E1hp.8JQ
ふぅ、おわりました。このスレッドにあがった点は網羅したつもりです。
ここに貼っていくつもりです。
手を付けやすい所から1つ1つmergeしていくことになるでしょうか。

657 :名無し娘。 ◆vP.bOZFQ :01/08/26 19:29 ID:E1hp.8JQ
(参照情報)

▲現在の最新版
 http://star.endless.ne.jp/users/forcount/contents/scriptmaker/read11.rev1.c

▲read.cgiの概観
 >>90 >>94 >>96

▲ハイパーリンク設定関連
 >>76

▲read.cgiをプロファイラ(gprof)に掛けてみた結果
 >>497 >>498

658 :デフォルトの名無しさん :01/08/26 19:29 ID:i045ysP2
>>656
お疲れさまです。

659 :名無し娘。 ◆vP.bOZFQ :01/08/26 19:29 ID:E1hp.8JQ
(自作された関数に関する情報、アルファベット順)

●char *doReplace(char *des,char *str0,char *str1)
 引き値:
 返戻値:*des のうち *str0 末尾の次のポインタ
 機能:返戻値&*des のうち *str0 がみつかったら *str1 に置き換え
 ※案 >>138 >>168 >>271 >>272

●char *findSplitter(char *stt,int sp)
 ※案 >>505 >>507 >>513 >>514 >>518 >>519 >>520

●char *zz_GetString(char *dst,char *tgt)
 ※案 >>620 >>645 >>648

●int BadAccess()
 引き値:なし
 返戻値:USER_AGENT が正当であれば1、不正であれば0
 呼関数:int logOut(char *txt)
 ※char *zz_http_user_agent の判別順の最適化
 ※案 >>79 >>84

●int hrefStop(char x)
 ※テーブル化
 ※案 >>27 >>30 >>35 >>49

●int html_banner()
 引き値:なし
 返戻値:なし(returnせず)
 機能:バナー部分を標準出力に
 呼関数:int html_error999(char *mes)
     int html_foot_im(void),int html_foot(int line) 内でコメントアウト
 ※#ifdef CM_BBSPINK によって2種類存在

●int html_bannerNew()
 引き値:なし
 返戻値:なし(returnせず)
 機能:バナー部分を標準出力に
 呼関数:int html_error(char *mes)
 ※案 >>45 >>48

●int logOut(char *txt)
 引き値:用途不明
 返戻値:ファイルエラーで0、それ以外1
 呼関数:int BadAccess()

660 :デフォルトの名無しさん :01/08/26 19:29 ID:UBBPE9x.
Wikiの内容はmergeしてるんかな?

661 :名無し娘。 ◆vP.bOZFQ :01/08/26 19:30 ID:E1hp.8JQ
(その他、全体に関する技術的情報)

◆dat_read(); dat_out();
 全レスbufに溜める方式で良いのか?
 ※案 >>148 >>167 >>275 >>520 >>530

◆fread(); BigBufferの取り扱い
 mmap() に置き換え(\0 を * に置き換えていることを踏まえつつ)
 ※案 >>205 >>227 >>232 >>247 >>521 >>542 >>544 >>546 >>549 >>552 >>558 >>564 >>590 >>596

◆printf()
 呼び出し回数削減
 puts()で可能なところは代用
 "\n"を削除

◆strstr()
 自作関数で代用
 案 >>328

◆Makefile
 >>426

◆&(amp)問題
 >>596

◆時刻の解析
 >>473 >>477 >>482 >>489 >>515 >>517

◆グローバル変数をできるだけローカル変数にする

◆その他、HTMLとかJavaScriptとか(このスレでは議論しないでください)
 >>437

662 :名無し娘。 ◆vP.bOZFQ :01/08/26 19:32 ID:E1hp.8JQ
>>660
Wikiをmergeしたものもあるのですが、あちらは、こちらで話がそこそこ
かたまったものを載せているようですから、ここには含めませんでした。

今後、関数毎に作業を進めるようでしたら、関数毎の引き値などの一覧も
作りますが、どうしましょうか。

663 :名無し :01/08/26 19:46 ID:GLhprhn.
モーニング娘の負荷危機まで1時間ちょっと

664 :デフォルトの名無しさん :01/08/26 19:49 ID:1UQ.S61Y
Wikiで draft なページ作ったら?

665 :616 :01/08/26 19:56 ID:.7OZ9ZNw
名無し娘。さんお疲れ様です。分かりやすくなりました(^^

>>624

そうなのですよね。運営側が付け焼き刃で当面を乗り切れば良いと
考えているのか。でなければ、昨夜の状況になる前に手を打てたのに。
(頻繁にマイナーチェンジしていましたが)

ver5.02って?

666 :♯6411 :01/08/26 19:57 ID:vqaeONJ.
>>496 >>499
bzip2のアルゴリズムは、圧縮・伸張とも
ストリーミングに向いてないのだ。
そもそも高速化しにくいし。

667 :♯6411 :01/08/26 19:58 ID:vqaeONJ.
>>560 >>561 っていうかgccだったら
__builtin_strlen()と同義じゃないかしら?
(未確認)

668 :デフォルトの名無しさん :01/08/26 19:58 ID:EDp.9ERA
モー板関連にも早く新しいread.cgiを導入しないと
意味が無いんじゃないかと思うのですが、
運営側の人何しているのでしょう・・・・

669 :デフォルトの名無しさん :01/08/26 20:00 ID:MV3zKzJ.
>>662
>Wikiをmergeしたものもあるのですが、あちらは、こちらで話がそこそこ
>かたまったものを載せているようですから、ここには含めませんでした。
結果を載せるだけじゃなくって
議論の場としては2chスレよりwikiのがやりやすいんじゃない。

[[read.cgiを高速化2]]はプログラム板で占拠して
ある程度自由に使ってしまっていいと思う。

670 : ◆T/5GEU6k :01/08/26 20:01 ID:T8m3jVH2
トリップ廃止?

671 : ◆T/5GEU6k :01/08/26 20:02 ID:T8m3jVH2
>>666-667
#全角かぁ。スマソ

672 :名無し娘。 ◆vP.bOZFQ :01/08/26 20:05 ID:E1hp.8JQ
>>669
議論をどちらでやるのか、私にはよくわからなかったので、
経緯をまとめるだけにしちゃいました(^^;

堅実なところはさっさと実装していって、議論の的を絞るのもいいかな
と思います。indentだけでもやって、どこかにUPしましょうか。。。
# これやっとけ、ってのがあればやっときます(笑

673 :デフォルトの名無しさん :01/08/26 20:19 ID:lmB6Nfnc
>>659
>●int BadAccess()
>返戻値:USER_AGENT が正当であれば1、不正であれば0

返戻値が逆っぽいです。

674 :名無し :01/08/26 20:26 ID:GLhprhn.
読み込み途中で止まったようになる。
その後読み込みまた止まったようになる。
最期にまた読みこむ。

なんでだろう?

675 :デフォルトの名無しさん :01/08/26 20:48 ID:UUVa.jxU
書き込みが終わりましたって表示はいるの?

676 :デフォルトの名無しさん :01/08/26 20:48 ID:xL7OsRZc
http://bbs_cgi.tripod.com/
globalを通してみました。全行にアンカー振ってあります。
また、-krでindent通したものもおいてあります。

677 :676 :01/08/26 20:55 ID:xL7OsRZc
今気づいた。
read.cgiを弄っているのに、アカウント名がbbs_cgiだ(汗

678 :名無し娘。 ◆vP.bOZFQ :01/08/26 20:59 ID:E1hp.8JQ
>>673
そうですね(^^;
>>676
お疲れさまです。

ところで、ざっと復習してみると、amp問題と、BadAccess()あたりは
ソースに組み込んでもよさそうですね。
# BadAccess() は"#ifdef NEWBADA"とかなんとかにしておく。

2時間ほど新メンバー見てきます(爆死

679 :デフォルトの名無しさん :01/08/26 21:06 ID:PbVG8tb2
>>674
gzip圧縮してるからでしょ

680 :デフォルトの名無しさん :01/08/26 21:07 ID:8728MBZU
書き込み時に、それがTOPPAGEに変更が入る場合は、TOPPAGEを
生成して保存。
TOPPAGEの読み込みはread.cgiでなく、静的なページを送り返す
ようにしたらどうだろう。

681 :デフォルトの名無しさん :01/08/26 21:09 ID:t/kABhdw
最新レス100 → 最新レス100

3バイト節約(ワラ

682 :デフォルトの名無しさん :01/08/26 21:22 ID:r9kv7gys
>>680
負荷は劇的に減るが、gzip圧縮の恩恵がうけられなくなって転送量がふえてしまうかも

683 :デフォルトの名無しさん :01/08/26 21:25 ID:SBklp.1k
こうしてプログラマが頑張ってる横で、モー娘がどうしただので
板が落ちそうになってるのを見ると、複雑な気持ち。

684 :半角数字派 :01/08/26 21:38 ID:T95KUHcw
>>681
それは今すぐにでも採用希望(w

685 :デフォルトの名無しさん :01/08/26 21:40 ID:xL7OsRZc
>>684
ついでに、コロンが全角半角入り乱れているので整理しよう(笑

686 :デフォルトの名無しさん :01/08/26 21:42 ID:iy09H5/E
>>682
mod_gzip の導入は決定しているようなので、その辺は考えなくても良いかと。

687 :デフォルトの名無しさん :01/08/26 21:43 ID:NGu5IyHk
トップをindex2.html.gzとして、gzip形式でページを出力するのはどうよ?
拡張子をhtmlにしたままgzipで圧縮するばあいはApacheの設定が必要になると思う。
今までのindex2.htmlはindex2.html.gzに転送するページにするのが無難だと
個人的には思うけど。

688 :デフォルトの名無しさん :01/08/26 21:46 ID:PbVG8tb2
>>687
だからmod_gzip入れるんだってば

689 :369 ◆3XTuRnAc :01/08/26 21:50 ID:iecZaXF2
みなさん、お疲れ様です。
いま外出から帰ってきました。すごいことになってますね。
娘。さんとかPerlerさんとかもがんばっておられるようで、自分一人
遊んでて申し訳ない感じ。

・・・で、ftpサーバがいるなら今日から明日の朝までなら
提供する用意があります。たまにADSLモデム落とされますが(汗、
それでも良ければ。

690 :デフォルトの名無しさん :01/08/26 21:51 ID:JmrVikf2
>659 zz_GetString について、 >645 >648 は >620 でほぼ実現してます。

これまでに貼られたリンクとの互換性を考えると、
zz_nf, zz_im については
if(strcmp(zz_im,"true")) などを
if(zz_im[0] == 't') などに変更すれば、今後は
nofirst=true → n=t
imode=true → i=t
のように短縮できますね。

read.cgi という8文字も無駄に思える。
もっと短い名前でも呼べるようにしては?

691 :名無しさん :01/08/26 21:51 ID:Re1f5wmg
今日になってからここのwebページが普通に保存ができなくなったのは
何かいろいろ変更したからか?
たまに出来たりもして何が何だか・・・
不正な行為か・・・言われてもしょうがないけど・・・(藁

692 :名無し :01/08/26 21:52 ID:GLhprhn.
夜勤さんが居ないと意味無いな。

693 :687 :01/08/26 21:52 ID:NGu5IyHk
>>688
そりゃどうもすみません、なんかやけに好戦的に見えるなぁ。

694 :デフォルトの名無しさん :01/08/26 21:53 ID:JmrVikf2
>687
index2 が更新される回数≪読まれる回数
だから、 mod_gzip で毎回圧縮するより更新の際に圧縮しよう、という議論?

>691 何が不正なのですか?

695 :デフォルトの名無しさん :01/08/26 21:55 ID:RDsCkPFA
>>693
だって、 index2.html.gz はすでにきのうやってたんだもの。
いまでも index2.htm は gzip で出してる。
ようするにがいしゅつ。

696 :名無し娘。 ◆vP.bOZFQ :01/08/26 21:58 ID:qavO62ww
お疲れさまです。あと1時間ほどで戻ります(^^;
>>692
夜勤さんも、モ板祭の終わる頃にいらっしゃるようなことを昨晩おっしゃってました。

よろしければ、仕様変更を伴わない堅いところから、ソースに組み込んでいこうと
思いますが、どこから手を付けるべきでしょうか。
>>678 は組み込んでみました。追加がすぐに出ないようであれば、アップします。

697 :名無し :01/08/26 22:02 ID:GLhprhn.
▲現在の最新版はこれみたいです。
 http://star.endless.ne.jp/users/forcount/contents/scriptmaker/read11.rev1.c

698 :687 :01/08/26 22:02 ID:NGu5IyHk
>>695
あぁ、なるほど、最初からそういってくれたらよかったのに。

699 :名無しさんの声 :01/08/26 22:04 ID:SBklp.1k
68 名前:ふぁん 投稿日:01/08/26 20:01 ID:u/WGbLww
うちで転送量削減のソースを書いたプログラマーを
月200万くらいで雇いたいのですが、どうすれば良いですか?

2ch終わりか?東京kittyひろゆき討伐を決定!
http://yasai.2ch.net/test/read.cgi?bbs=venture&key=998735207


だってよ。

700 :名無し :01/08/26 22:04 ID:GLhprhn.
2ちゃんねるWiki に改造コード貼ってあります。
http://www.gedoh.org/aki/2ch/wiki/yukiwiki.cgi?TopPage

701 :デフォルトの名無しさん :01/08/26 22:04 ID:pAfX386E
盛り上がってまいりました。

702 :デフォルトの名無しさん :01/08/26 22:05 ID:MF2k8Nc2
モー娘の件もあちこちに個人で実況スレッドを作ったおかげで
2ちゃんねる本体にはそれほど負荷かかってないみたいですね。
羊と狼はやばそうですけど。(汗

703 :名無し娘。 ◆vP.bOZFQ :01/08/26 22:24 ID:x6eG9iGA
http://star.endless.ne.jp/users/forcount/contents/scriptmaker/read11.rev1.c
に #ifdef NEWBA 部分を組み込んだものを
http://nichrdcgi.hoops.ne.jp/read11.rev2.c
にアップしました。

その他の変更点は、関数毎に3行のコメント行を入れたこと、
いちおうindentしたことです。
検証できるかたいらっしゃいましたらよろしくです。

704 :デフォルトの名無しさん :01/08/26 22:29 ID:ggkSbIno
ていうか狼とかついに落ちた?

705 :デフォルトの名無しさん :01/08/26 22:29 ID:vtjT3i/c
NEWBAがdefineされてるとBadAccess()の定義がダブるんでないかい?

706 :デフォルトの名無しさん :01/08/26 22:33 ID:1UQ.S61Y
確かにダブるなあ。
read2ch.h って今どこにあるの?

707 :名無し娘。 ◆vP.bOZFQ :01/08/26 22:35 ID:kimvJHK2
>>705
。。。(泣
http://nichrdcgi.hoops.ne.jp/read11.rev3.c
に修正しました。

708 :名無し :01/08/26 22:35 ID:GLhprhn.
これじゃない。

>http://bbs_cgi.tripod.com/
>globalを通してみました。全行にアンカー振ってあります。
>また、-krでindent通したものもおいてあります。

709 :デフォルトの名無しさん :01/08/26 22:38 ID:1UQ.S61Y
さんくす。

710 :名無し :01/08/26 22:38 ID:GLhprhn.
稲垣会見とモー娘新メンバーで
アクセス急増。

711 :デフォルトの名無しさん :01/08/26 22:44 ID:ggkSbIno
>>708
そのURL見れないんだけどみんな見れてる?

712 :デフォルトの名無しさん :01/08/26 22:46 ID:1UQ.S61Y
見れてますよ

713 :デフォルトの名無しさん :01/08/26 22:46 ID:UBBPE9x.
URLに'_'があるとsquid proxyに蹴られるね。%5Fにしても駄目だ。

714 :名無し娘。 ◆vP.bOZFQ :01/08/26 22:48 ID:kimvJHK2
新メンバー決定♪しかし羊も狼も…(悲
>>711
うちでは見えていますが、念のため
http://nichrdcgi.hoops.ne.jp/read2ch.h
にもおいておきました。

715 :デフォルトの名無しさん :01/08/26 22:48 ID:ggkSbIno
>>713
はう。ビンゴ。ありがとう。
ローカルsquidに蹴られてた。

716 :711 :01/08/26 22:50 ID:ggkSbIno
715=711。
>>714もありがとう。

717 :名無しさん :01/08/26 23:01 ID:jZdNU1oQ
>>708には

http://members.tripod.com/bbs_cgi/

だったら行くことができる。

718 :デフォルトの名無しさん :01/08/26 23:04 ID:/FZALAjc
>>699
そのスレ読んでみたけど、「匿名でヤバイ情報が覗ける」って
どこのこと言ってんだか・・・。なんつー認識だよ

719 :デフォルトの名無しさん :01/08/26 23:06 ID:xL7OsRZc
あ、スマン
すっかり忘れてたよ
./configure --enable-underscores
でsquid作り直してつかぁさい(マテ

720 :デフォルトの名無しさん :01/08/26 23:08 ID:j42oaHOQ
ところで,bbs.cgi って非公開?
それとも他のスレに話題があるのかな

721 :デフォルトの名無しさん :01/08/26 23:16 ID:/FZALAjc
>>708
日本語化けてない?もしかして俺だけかな

722 :デフォルトの名無しさん :01/08/26 23:20 ID:xL7OsRZc
>>721
ファイルは全てeuc-jpです。

723 :デフォルトの名無しさん :01/08/26 23:23 ID:9O51.yx2
>>661
>◆printf()
> 呼び出し回数削減
> puts()で可能なところは代用
> "\n"を削除
文字列長が分かっている場合は fwrite() のほうがいいんじゃない?

724 :デフォルトの名無しさん :01/08/26 23:27 ID:/FZALAjc
Shift_JISに見えるのは気のせい・・・?

725 :名無し娘。 ◆vP.bOZFQ :01/08/26 23:30 ID:clgr6qnI
>>724
気のせいじゃないかも

726 :722つか、bbs_cgiの馬鹿です :01/08/26 23:35 ID:xL7OsRZc
くわ...こんなのばっかだ...鬱だ寝ます…

727 :sage@sage.com :01/08/26 23:43 ID:paiaYiuM
すまん >>148 で恥ずかしいプログラム書きっぱなしだから
ちょっと補足いれさせてくれ。

要はdat_read関数上で'\0'から'*'に置き換えるのに
バッファを全部サーチしたのちに、再度getMaxLineで
各書き込みの先頭位置を検索するためにバッファを全部サーチしているので
一回のバッファサーチで両方の作業を行えばよいのではと
思ったわけです。即興でコードかいたんで無茶苦茶になっちまったけど、
できればこのコンセプトで誰か最適化してくれればうれしいっす。

728 :デフォルトの名無しさん :01/08/26 23:53 ID:/FZALAjc
>>720
古すぎて役に立たないかな。ちなみにBase64(ナゼ

aHR0cDovL21hbmtvbWFua29tYW5rby52aXJ0dWFsYXZlLm5ldC9iYnMudHh0

729 :369 ◆3XTuRnAc :01/08/26 23:56 ID:iecZaXF2
えと、read11rev1をベースにread.cgi改造しました。
どんな改造かというと、

「gzip 1.2.4を強引に組み込んでみました」というものです。
逆にいうと、gzip 1.2.4に、強引にread.cgiの機能を入れてみた
ってところなのですが。

・・・・ソースいります?でかいですが。
なにしろgzip 1.2.4フルセットです。

730 :爆♪ :01/08/26 23:57 ID:jt9kAY8E
>>729
>なにしろgzip 1.2.4フルセットです。
パッチにして(藁

731 :369 ◆3XTuRnAc :01/08/26 23:58 ID:iecZaXF2
あ、フルセットじゃないです。
gzip.cとgzip.hだけで良いんですね良く考えたら。
gzip 1.2.4のフルセットは皆さんで落としてもらうとして(笑。

メリットは・・・プロセス数を浮かせられることかな(^^;;。
デメリットは、実行コードサイズがgzipと同等になっちゃうこと。

732 :デフォルトの名無しさん :01/08/26 23:59 ID:Kg2ClUug
>>729
どっかにあぷしないと無理でしょう。
いや、確かにそういう話はあったし、間違っちゃいないと
思うけど、君素敵すぎ。

733 :369 ◆3XTuRnAc :01/08/27 00:01 ID:xXHglqmc
あ、すんません、まだでした。まだまともに動いてないす。
動いたというのは自分の勘違い。ごめんなさい・・・・。

734 :デフォルトの名無しさん :01/08/27 00:01 ID:407N8DOw
すいません。
夜勤さんや削除委員長さんとは連絡取れないのでしょうか?
UNIX板が駄スレたちまくりなので対処してほしいのですが

735 :デフォルトの名無しさん :01/08/27 00:06 ID:9Ji20W0U
使うのはzlibにしたらどうでしょう。
ところでbbs.cgiの方が着実にアップデートされていってますね。
真の精鋭はそっちに携わってる?

736 :デフォルトの名無しさん :01/08/27 00:07 ID:oz/9pnnY
いま批判要望板で見かけたでし。
でもお手を煩わせていいものかどうか。

737 :名無し娘。 ◆vP.bOZFQ :01/08/27 00:07 ID:Km.fZ5BI
夜勤さんは縁の下でがんばりちゅうのようです。

738 :デフォルトの名無しさん :01/08/27 00:07 ID:5zQpe5GQ
>>735
どこで?

739 :デフォルトの名無しさん :01/08/27 00:12 ID:tF8/p42I
この辺に夜勤さんがいましたよ。
ttp://teri.2ch.net/test/read.cgi?bbs=accuse&key=998806470&ls=30

740 :夜勤 ★ :01/08/27 00:13 ID:/VYvqKxI
呼ばれて、来ました。

741 :名無し娘。 ◆vP.bOZFQ :01/08/27 00:13 ID:Km.fZ5BI
>>740
お疲れさまです。
あの、まだread.cgi開発中なのですが、これ以上改善を施して、
採用される見通しはありますか?

742 :夜勤 ★ :01/08/27 00:16 ID:/VYvqKxI
もちろん!

743 :デフォルトの名無しさん :01/08/27 00:17 ID:ZT1fe3Xg
sure

744 :名無し娘。 ◆vP.bOZFQ :01/08/27 00:17 ID:Km.fZ5BI
確定ではありませんが、作業方針としては、
まず、現行プログラム各部の性格や機能を変えない範囲での最適化をする。
その後、可能なのであれば、包括的・抜本的な最適化(作り直し)をする。
といった感じです。

745 :名無し :01/08/27 00:17 ID:N77k73Ds
夜勤さん bbs.cgi は公開できないんですか?

746 :720 :01/08/27 00:18 ID:P7yLS.2Q
>>728
わざわざありがとうございます〜。
いただいてきます。

% こっちはCではないのですね。

747 :名無し娘。 ◆vP.bOZFQ :01/08/27 00:19 ID:Km.fZ5BI
>>742
わーい(泣
では、お手が空き次第、
http://nichrdcgi.hoops.ne.jp/read11.rev2.c
をpiza2にでも導入していただけますか。
インストールオプションは・・・あれ、調べておきます。

748 :夜勤 ★ :01/08/27 00:20 ID:/VYvqKxI
プログラムは完成することはありませんと思うので、、、
どこか区切りがついたら、呼んでください。実際にサーバに上げますので。

今の目的は、「転送量の軽減」です。

たぶん批判要望あたりをうろうろしてますので。

749 :夜勤 ★ :01/08/27 00:22 ID:/VYvqKxI
bbs.cgi を公開するのは、私には無理ですよー。

750 :名無し娘。 ◆vP.bOZFQ :01/08/27 00:23 ID:Km.fZ5BI
>>748
>今の目的は、「転送量の軽減」です。
では、今のうちに「最新レス100」->「最新レス100」とかの対処を
しちゃいましょうか。。。

751 :369 ◆3XTuRnAc :01/08/27 00:24 ID:xXHglqmc
ごめんなさい、gzip組み込みで難航中です。

gzipのstdin -> stdoutなモードを使用して

ログ出力→gzip stdin -> gzip stdout -> read.cgi stdout

ってーな方向で持っていこうと思ったのですが、
stdioのファイルディスクプリタをどうにかしないと
行けないことに気づきました。

・・・うーむ。こんなこと最初から気づけ俺。

752 :デフォルトの名無しさん :01/08/27 00:25 ID:6kfMn/mA
>>747
http://nichrdcgi.hoops.ne.jp/read11.rev3.c
ですよ。

753 :デフォルトの名無しさん :01/08/27 00:25 ID:469/dUs6
>>750
web制作の方でHTML軽減はやってるみたいですよ。

スキルの高い方知恵を貸してください2号
http://natto.2ch.net/test/read.cgi?bbs=hp&key=998774537

754 :名無し娘。 ◆vP.bOZFQ :01/08/27 00:26 ID:Km.fZ5BI
>>753
では、mergeしちゃいましょう。

755 :名無し :01/08/27 00:26 ID:N77k73Ds
>>747
これ見れますか?
ファイルが無いようですが、、
read11.rev3.c ならある。

756 :デフォルトの名無しさん :01/08/27 00:28 ID:284T.QVo
転送量の削減となると、やはりDATから変換したHTMLのサイズを減らすことを
優先すべきということでしょうか。

そもそもサーバのCPUパワーにはまだ余裕があるんですよね?>夜勤さん

757 :名無し :01/08/27 00:31 ID:N77k73Ds
ソースが最適化コードに置き換わっていないようですが。

http://www.gedoh.org/aki/2ch/wiki/yukiwiki.cgi?mycmd=read&mypage=%5B%5Bread%2Ecgi%82%F0%8D%82%91%AC%89%BB2%5D%5D

758 :名無しさん || die :01/08/27 00:32 ID:YgC5b35I
web制作の方に書いた、「新しいレスだけ表示」はどうなんでしょ。
スレをROMってリロードしまくりの人が多いなら効果あると思うのだけど。

759 :名無し娘。 ◆vP.bOZFQ :01/08/27 00:32 ID:Km.fZ5BI
>>753
すいませんが、フォローしきれる自信がないので、read.cgiで変更すべき
点だけどなたか列挙してくださいませんか?
複数の方がやって下さっても、この際よいと思います。
# それだけ抜け落ちが少なくなるし…

760 :デフォルトの名無しさん :01/08/27 00:32 ID:IuzteUCY
saladのread.cgiが、この時間帯でも全レス表示可能なようなのですが、
これは正常なのでしょうか?

761 :名無し娘。 ◆vP.bOZFQ :01/08/27 00:35 ID:Km.fZ5BI
(2時間くらいの目途で作業します)

762 :技術とかでなく :01/08/27 00:40 ID:1NVzBQO2
プリペイド買った人のみスレを立てる権利を付ける
(日当たり回数制限付き)
プロキシーは一切制限する所から初めて、許可申請
で開ける様にする
(プロキシー潰して行く方向でやる方が面倒)
各板共に3分間は更新された内容が読み込めない様
にする
(同一IPからのリクエストは3分間はkickってのも在る?)

これで安泰

763 :Web制作から転載です。 :01/08/27 00:43 ID:nQB5Vf12
477 名前:351 投稿日:01/08/26 23:58 ID:IvN6phxo
index2.html用
http://isweb31.infoseek.co.jp/photo/photo_d/test.html
index2.html用CSSバージョン
http://isweb31.infoseek.co.jp/photo/photo_d/test_css.html
read.cgi用
http://isweb31.infoseek.co.jp/photo/photo_d/read_test.htm
read.cgi用<pre>使用
http://isweb31.infoseek.co.jp/photo/photo_d/read_079.htm
上の4ファイルの圧縮
http://isweb31.infoseek.co.jp/photo/photo_d/2ch_html.zip

です。Script関係他よろしくです。
とりあえずタグレベルでは減量させたつもり。

764 :デフォルトの名無しさん :01/08/27 00:45 ID:2MpScvZw
web製作板は転送量を減らしに躍起になって、
肝心なのを見失ってるって感じ。
せっかくのいい機会なのに……。

765 :デフォルトの名無しさん :01/08/27 00:46 ID:9mNBJEMM
read.cgiで削れるところは少ないな。
とりあえず 最新レス100の100を半角にするか?(笑
あと「名前:」「投稿日:」削る、っていきなりやっていいんだろうか。

766 :デフォルトの名無しさん :01/08/27 00:46 ID:NsFeEjCc
GetString (>690) が変わればすぐにもリンクの文字列が短くなり始めるのでは。
>620 (どのくらい検証されてる? さらなる改善は?)のように
dst を 20バイトしか使わないなら、char zz_im[1024] などとなっているのも [20] でいい。

767 :名無し娘。 ◆vP.bOZFQ :01/08/27 00:47 ID:Km.fZ5BI
まずは見た目に尽きにくい所から削っています。
HTML内の"\n"とか。

768 :デフォルトの名無しさん :01/08/27 00:47 ID:yw5i/z86
HTTP_ACCEPT_ENCODING: x-gzip にも対応しとかないの?
今時、ほとんどないだろうけどね。
x-gzipにgzipを返しちゃいけません。

#ifdef GZIP
if(zz_http_encoding && strstr(zz_http_encoding,"x-gzip")){
gzip_flag = 1;
printf("Content-Encoding: x-gzip\n");
}else if(zz_http_encoding && strstr(zz_http_encoding,"gzip")){
gzip_flag = 1;
printf("Content-Encoding: gzip\n");
}else{
gzip_flag = 0;
}
#endif

769 :名無し :01/08/27 00:48 ID:N77k73Ds
レスの表示形式
312 名無し 01/08/26/日 15:40
に意見がまとまりました。

770 :デフォルトの名無しさん :01/08/27 00:49 ID:NsFeEjCc
>765 ファイル名を r.g か何かにして、.g を .cgi と同じに扱う(笑

771 :名無し娘。 ◆vP.bOZFQ :01/08/27 00:49 ID:Km.fZ5BI
>>766
そうですね。GetString関係は、まずread.cgiで(現在との互換性を
保ちつつ)実装しておきましょうか。
検証お願いします。できたら、最終版へのリンクもあるとありがたいです。

772 :デフォルトの名無しさん :01/08/27 00:49 ID:pckFEAaY
HTTPヘッダ出力したところで

fflush(stdout);
gzdopen(1);
func_type *pFunc = gzip_flag ? gz_printf : fprintf;

して、printf を関数ポインタに置き換えるだけじゃだめなん?
gzip.c 組み込みって何してんの?

773 :名無し娘。 ◆vP.bOZFQ :01/08/27 00:50 ID:Km.fZ5BI
>>769
それ、やっていいんですかね(笑
夜勤★さんなりの確認いただけないでしょうか

774 :デフォルトの名無しさん :01/08/27 00:52 ID:oFtR0rYM
■掲示板に戻る■
はなくても使い勝手が変わらないかと思います。

775 :デフォルトの名無しさん :01/08/27 00:52 ID:eF1BPT8s
既出かもしれないけど。

>>000
のリンクで対象レス番号が既にブラウザで表示されている
範囲内にある時は<a name=〜>で移動するように
処理したら少しはread.cgiの呼び出し回数&転送量が減るかも。

776 :デフォルトの名無しさん :01/08/27 00:53 ID:9mNBJEMM
日付形式はbbs.cgiに任せたほうがいいんじゃないか?
現状datのそのまま出力してるだけだし。

777 :デフォルトの名無しさん :01/08/27 00:53 ID:vN9r/JlA
gzip 組み込むと GPL 適用だぞ。

778 :デフォルトの名無しさん :01/08/27 00:54 ID:3lNlqFsM
>>774
他の板のスレッドから飛んだとき、「ここはどこだ?」となることがあったりする。
個人的には残して欲しい。

779 :デフォルトの名無しさん :01/08/27 00:54 ID:nQB5Vf12
確かに今やってることって
『今の2ちゃんねる』の転送量を軽減することですよね。
あまり見た目は変えない方が良いかと。

780 :369 ◆3XTuRnAc :01/08/27 00:56 ID:xXHglqmc
>>772
えと、正確には「gzipにread.cgiを強引にマージしよう」っていう話です。

gzdopen()っていう名前から聞くと、gzlibとかそう言うのがあるのでしょうか。
man page見ても見つからないから、ひょっとしたら後から追加しないと
行けないのかな・・・>FreeBSD

情報お願いします。

781 :デフォルトの名無しさん :01/08/27 00:56 ID:oFtR0rYM
>778
スレに用はあっても、板に用はないんじゃないですかね?
どんなもんでしょ?

782 :デフォルトの名無しさん :01/08/27 00:57 ID:9mNBJEMM
とりあえず今日は見た目はあまり変えないって方針で。
でも名前:、投稿日:、は消してもよさそうだけどな。

783 :デフォルトの名無しさん :01/08/27 00:58 ID:2MpScvZw
>>782
UIはまだ議論の余地があると思うので、
今回はあまりいじらない方がいいですね。

784 :デフォルトの名無しさん :01/08/27 00:58 ID:pckFEAaY
>>780
zlib なんすけど、FreeBSD-4 なら /usr/include/zlib.h のコメント読んで

785 :782 :01/08/27 00:58 ID:9mNBJEMM
あら、index2.htmに「投稿日:」が消えてますね。
こりゃread.cgiも消しちゃってOKじゃねーかな。

786 :369 ◆3XTuRnAc :01/08/27 00:59 ID:xXHglqmc
>>777
ええ、その辺は承知してます。
もしgzip組み込みがうまく行って、かつ、read.cgiのGPL適用が
問題なく、かつ、組み込む価値があるなら採用、どれかひとつでも
欠ければ不採用ってので今は組み込みやってるところです。

まあ、今は単純な興味を満たす自己満足みたいなものですかね。
それでうまく行けば儲け物っていう。

787 :369 ◆3XTuRnAc :01/08/27 00:59 ID:xXHglqmc
あ、zlibでしたか。了解です。

788 :デフォルトの名無しさん :01/08/27 01:00 ID:iuwjXswY
mod_gzipって確定なのかな?
確定ならgzip組み込みって無い方がシンプルでいいと思う。

789 :名無し娘。 ◆vP.bOZFQ :01/08/27 01:03 ID:Km.fZ5BI
>>768
実装しました。まだ作業は続く。。。

790 :デフォルトの名無しさん :01/08/27 01:05 ID:DhF2Uz5c
入力フォームは必要でしょうか?
フォーム出力専用のCGIのリンクをつけるのは駄目ですか?

791 :名無し娘。 ◆vP.bOZFQ :01/08/27 01:05 ID:Km.fZ5BI
えと、
>◆時刻の解析
> >>473 >>477 >>482 >>489 >>515 >>517
について、要するにどうすればいいのか、どなたかまとめていただけますか?

792 :デフォルトの名無しさん :01/08/27 01:06 ID:284T.QVo
zlib組み込みならGPLに感染しないで済むぞ↓
http://www.gzip.org/zlib/zlib_license.html

とはいえ788に同意

793 :デフォルトの名無しさん :01/08/27 01:08 ID:2Ic51Mxc
760の「この時間帯でも全レス表示可能」な問題って、
515、517の修正は入らないんでしょうか?

piza2(ここ)でも、全レス表示可能になってますが。
read.cgi Ver5.xxのとこは全部そうかな?

794 :nanasi :01/08/27 01:09 ID:MWcmzrwU
age

795 :デフォルトの名無しさん :01/08/27 01:09 ID:DhF2Uz5c
517で良いと。

mod_gzipはすぐにできないのでしょう?

796 :デフォルトの名無しさん :01/08/27 01:12 ID:3lNlqFsM
取りあえず、改良をお願いします。

<BODY TEXT=black BGCOLOR=#EFEFEF link=blue alink=red vlink=#660099>

<body>

797 :デフォルトの名無しさん :01/08/27 01:14 ID:2MpScvZw
>>796
<BODY TEXT=black BGCOLOR=#EFEFEF link=blue alink=red vlink=#660099>
↑相当をCSSで実現するということですよね?

798 :デフォルトの名無しさん :01/08/27 01:14 ID:ReF.V//c
むしろブラウザの設定任せにしてしまうということでは。

799 :名無し娘。 ◆vP.bOZFQ :01/08/27 01:15 ID:Km.fZ5BI
>>796-797
それは、管理のみなさんの了解はあるのでしょうか?

800 :デフォルトの名無しさん :01/08/27 01:15 ID:YgC5b35I
>797
ちなみに index2 では既に body の属性消されてますよ。

801 :デフォルトの名無しさん :01/08/27 01:16 ID:CbLq.TAQ
えー、これもガイシュツかもしれないのですが、
x-sjis を Shift_JIS にはまだできないのでしょうか?

802 :デフォルトの名無しさん :01/08/27 01:16 ID:DhF2Uz5c
body削りOKなら、HEAD内全部削除は駄目ですか?(^^;

803 :デフォルトの名無しさん :01/08/27 01:17 ID:284T.QVo
>>795
515じゃない?

804 :デフォルトの名無しさん :01/08/27 01:17 ID:2MpScvZw
>>801
賛成です。

805 :デフォルトの名無しさん :01/08/27 01:18 ID:oVJMiQ2Y
つか、encodingはmetaで指定するんじゃなくて、モノホンの
HTTPレスポンスで出した方が良くない?

806 :デフォルトの名無しさん :01/08/27 01:18 ID:2MpScvZw
>>802
title要素は必要です。

807 :名無し娘。 ◆vP.bOZFQ :01/08/27 01:19 ID:Km.fZ5BI
んと、bodyとかheadの部分は後回しにしておきますから、夜勤さんに
お出で願えないかなぁ。

808 :デフォルトの名無しさん :01/08/27 01:19 ID:oVJMiQ2Y
<body>とか<head>とかは省略可能タグじゃなかった?

809 :348 :01/08/27 01:20 ID:ynZt.qo6
あ、またバージョンアップしてますね
http://star.endless.ne.jp/users/forcount/contents/scriptmaker/read11.rev3.c
こんな感じでage

810 :名無し :01/08/27 01:20 ID:N77k73Ds
夜勤さん、どこにいるんでしょうね。

811 :デフォルトの名無しさん :01/08/27 01:21 ID:2MpScvZw
>>808
時代と逆行してる気がする

812 :デフォルトの名無しさん :01/08/27 01:21 ID:cn52pBwI
>>810
お呼び出しはしておきました。

813 :nanasi :01/08/27 01:23 ID:MWcmzrwU
すんません、ここを巡回できるようにしたいのですが、
どのカテゴリで探せばよいでしょ?

814 :デフォルトの名無しさん :01/08/27 01:23 ID:DhF2Uz5c
>>803

そうでした。>>515です

>>806

ブックマーク用ですか?
では、bodyのスレタイトルを消します?

815 :デフォルトの名無しさん :01/08/27 01:23 ID:pckFEAaY
>>791
cvs.apache.org から apr-util と apr を checkout。
apr-util を make すると misc/ の中に apr_date.o てのがある。
少々関数が不足しているので apr の方から cut&paste して追加。
ヘッダは apr/include apr-util/include を両方使えばいいでしょう。

といっても面倒くさいな。どうしよう。
Apache Software Licence ってライブラリの一部切り出して(Copyright 残して)
使っていいの?

816 :デフォルトの名無しさん :01/08/27 01:23 ID:tF8/p42I
>>813
ここはプログラム技術板です。

817 :デフォルトの名無しさん :01/08/27 01:24 ID:oVJMiQ2Y
とりあえず、
-printf("Content-type: text/html\n");
+printf("Content-type: text/html; charset=Shift_JIS\n");
にして、meta削るってのは?
#かちゅ〜しゃが書き込み時にエラー判定ミスってて大変やわ

818 :ニュース速報板のタグが間違えている :01/08/27 01:25 ID:X..P9zvs
ニュース速報板のタグが間違えている
わさと?ガイシュツ?

<a href="../news/./index2.htm">リロード</a>

これって index2.htm ではなく index2.html じゃないの?
このリンク先をクリックすると画面が狂って表示されない。

819 :nanasi :01/08/27 01:25 ID:MWcmzrwU
>>816
ギコナビ使ってるんですが、プログラム技術のカテゴリが
見つかりません(涙

820 :デフォルトの名無しさん :01/08/27 01:27 ID:284T.QVo
>>819
「プログラム」じゃないかな?

821 :デフォルトの名無しさん :01/08/27 01:28 ID:tF8/p42I
>>819
http://210.150.210.150/sage/bbstable.html
ギコナビ使ったこと無いからわかんないんだけど
bbstable見てみたらどうでしょう?

822 :nanasi :01/08/27 01:29 ID:MWcmzrwU
>>820
出てこないです・・・・。

823 :デフォルトの名無しさん :01/08/27 01:30 ID:GRBfg3.A
>>822
カテゴリはPC等だよ

824 :ニュース速報板のタグが間違えている :01/08/27 01:30 ID:X..P9zvs
ニュース速報板のリロードのタグが間違えている
わさと?ガイシュツ?

<a href="../news/./index2.htm">リロード</a>

これって index2.htm ではなく index2.html じゃないの?
このリンク先をクリックすると画面が狂って表示されない。

それとここのスレに書き込むとエラーが出る by かちゅーしゃ

825 :824 :01/08/27 01:32 ID:X..P9zvs
test

826 :デフォルトの名無しさん :01/08/27 01:32 ID:GRBfg3.A
>>824
ホットゾヌだとエラーがでるが書き込めてるみたい。

827 :名無し :01/08/27 01:33 ID:N77k73Ds
345 名前:夜勤 ★ 投稿日:01/08/26 23:48 ID:H8NM1U/A
read.cgi の改良で、25% くらいの改善の見込みが付いたところでしょうか、
で index2.html とか若干のインターフェイスの修正でさらに 20% くらいの
改善を目論んでいる(やってみなきゃ分からない)というのが、今の状況
です。さらにいくつかのサーバを停止すれば、目標である 50Mbps以下
にはなると思います。

じゃー これが何を意味するのか?ということですが、

2ちゃんねるが黒字の経営(言葉のつっこみは勘弁)であれば、60% 以上の
経営効率化に成功したとうことでしょうが、、、
残念ながら、今の2ちゃんねるにおいては、若干の延命措置を施した
だけだったりします。このへんのことは弁茶板の方々が詳しいと思います。

828 :デフォルトの名無しさん :01/08/27 01:33 ID:cn52pBwI
>>824>>826
スレ違い
2chの動作報告はここで。
http://teri.2ch.net/test/read.cgi?bbs=accuse&key=998808733
君たちの行き先はこっち

829 :デフォルトの名無しさん :01/08/27 01:33 ID:BRbcVi3o
>>824
批判要望板へどうぞ。

830 :348 :01/08/27 01:33 ID:ynZt.qo6
かちゅ〜しゃもなんかエラーが出ますね
でも一応書き込めてるようですが・・・

831 :デフォルトの名無しさん :01/08/27 01:34 ID:pckFEAaY
Apache 1.3.20 の util_date.c なら単独ファイルだけで使えそうだ
からこっちにしますかね・・・

832 :nanasi :01/08/27 01:34 ID:MWcmzrwU
>>821
bbstable上手く開かないです・・・。
>>822
PC等は確認済みですが、プログラム技術カテゴリ無いです・・・。

833 :名無し娘。 ◆vP.bOZFQ :01/08/27 01:35 ID:Km.fZ5BI
>>817
これってどうなのでしょう?
# RFC読み読み中

834 :デフォルトの名無しさん :01/08/27 01:36 ID:cn52pBwI
>>832
http://piza2.2ch.net/tech/index2.html

835 :デフォルトの名無しさん :01/08/27 01:36 ID:8q2NINpg
ところで今現在の進捗はどうなってるの?

836 :名無し娘。 ◆vP.bOZFQ :01/08/27 01:36 ID:Km.fZ5BI
>>803 >>814
>>515 実装しました。

837 :デフォルトの名無しさん :01/08/27 01:37 ID:QEEMLonQ
>>832 だから板違いだ。作業の邪魔だから帰れ。

838 :デフォルトの名無しさん :01/08/27 01:37 ID:IuzteUCY
>>833
古いネスケで文字化けする
ネスケ切り捨てるならそれでもいいかも

839 :デフォルトの名無しさん :01/08/27 01:37 ID:DhF2Uz5c
夜勤さん待ち

840 :348 :01/08/27 01:38 ID:ynZt.qo6
ところで今実際に稼働しているのはどのバージョンなんです?
まだ、read11とか動いてませんよね?

http://star.endless.ne.jp/users/forcount/contents/scriptmaker/read11.rev3.c
一応、最新版

841 :デフォルトの名無しさん :01/08/27 01:38 ID:oVJMiQ2Y
>>833
RFC的には、
http://www.fxis.co.jp/DMS/sgml/xml/saloon/html_correct_charset.html
ここいら見れ。

842 :nanasi :01/08/27 01:39 ID:MWcmzrwU
>>837
後学のため、ログ読みたかったのですが・・・・。
堕ちます・・・。

843 :デフォルトの名無しさん :01/08/27 01:40 ID:DhF2Uz5c
>>838

SHIFT-JISなので、ほとんど化けない。

844 :デフォルトの名無しさん :01/08/27 01:40 ID:pckFEAaY
>>842
マジレスしとくと後学のためになるような作業ではない
数学の勉強でもしてろ

845 :デフォルトの名無しさん :01/08/27 01:40 ID:ReF.V//c
Web制作板の守備範囲かもしらんけど、
<HTML></HTML>も消しちゃっていいことないスか?

846 :名無し :01/08/27 01:41 ID:N77k73Ds
鯖6台止める案が有力だって。

847 :名無し娘。 ◆vP.bOZFQ :01/08/27 01:41 ID:Km.fZ5BI
"charset=x-sjis" -> "charset=Shift_JIS" だけにしときます

848 :デフォルトの名無しさん :01/08/27 01:41 ID:IuzteUCY
>>843
100%化けるんだよ。欧文文字コードと勘違いして。
まあネスケがタコと言えばそのとおりなんだが。

849 :デフォルトの名無しさん :01/08/27 01:41 ID:2MpScvZw
>>845
時代に逆行しているような気がする

850 :デフォルトの名無しさん :01/08/27 01:42 ID:IuzteUCY
>>849
xhtmlとかにして無駄に転送量増やすくらいなら
逆行してても仕方ない

851 :デフォルトの名無しさん :01/08/27 01:42 ID:oVJMiQ2Y
>>838
とりあえず、そーすみしてくれ。

852 :デフォルトの名無しさん :01/08/27 01:42 ID:BRbcVi3o
517 名前:夜勤 ★ 投稿日:01/08/27 01:40 ID:???
read.cgi 5.xx の採用の結果(速報)

ピーク時の転送量はだいたい 45% 減。
CPU 負荷は、ほとんど導入前と変わらないようです。

すごい効果がでていると思います。
UNIX 板の方々に感謝!

あとは mod_gzip がどうなるかが楽しみです。
まだ、導入できると決まったわけじゃありませんが、

853 :801 :01/08/27 01:43 ID:CbLq.TAQ
バイト数を減らすという目的でいろいろ出てますが、
そのためにといってCGIにはかせるHTMLを
最低限のヘッダ要件をも満たしてないものにするのは
いかがなものかと思うわけです。

854 :デフォルトの名無しさん :01/08/27 01:44 ID:tF8/p42I
コピペです


517 名前:夜勤 ★ 投稿日:01/08/27 01:40 ID:???
read.cgi 5.xx の採用の結果(速報)

ピーク時の転送量はだいたい 45% 減。
CPU 負荷は、ほとんど導入前と変わらないようです。

すごい効果がでていると思います。
UNIX 板の方々に感謝!

あとは mod_gzip がどうなるかが楽しみです。
まだ、導入できると決まったわけじゃありませんが、

855 :デフォルトの名無しさん :01/08/27 01:44 ID:IuzteUCY
>>851
「ネスケ 文字化け」とかでGoogleしてみてくれ
結構有名だからWeb板の住人なら誰でも知ってそうだが

856 :名無し娘。 ◆vP.bOZFQ :01/08/27 01:45 ID:Km.fZ5BI
>>853
個人的に同感です。
ところで、そろそろ新スレ?
あと、GetString関係、>>620をもとに実装してみます。
それが終わったらコンパイルテスト後にソースアップします。

857 :デフォルトの名無しさん :01/08/27 01:45 ID:YgC5b35I
文字化け多発→リロードしまくり&あちこちで質問される→転送量増加

858 :デフォルトの名無しさん :01/08/27 01:46 ID:cn52pBwI
新スレの1はこんな感じでいかがでしょう?

2chの読み出し[read.cgi]の最適化、効率化を中心に検討・開発しています。
このスレッドへのご感想・不具合報告の投稿はお控えください。

読み出しがうまくいかない・エラーなどの不具合報告はこちら
・2chの動作報告はここで。
http://teri.2ch.net/test/read.cgi?bbs=accuse&key=998808733

現状へのご意見ご感想はこちら
・転送量(料)の増加で2ch閉鎖の危機!5
http://teri.2ch.net/test/read.cgi?bbs=accuse&key=998806470

緊急対策コーディングはこちら
・UNIX板で2chのプログラムを開発中 パート 3
http://teri.2ch.net/test/read.cgi?bbs=accuse&key=998765190

859 :デフォルトの名無しさん :01/08/27 01:46 ID:IuzteUCY
x-sjisにする必要がないというならx-gzipにも配慮する必要ないと思う

860 :デフォルトの名無しさん :01/08/27 01:46 ID:QEEMLonQ
<HTML>削るのは最後の最後の最後の手段だね。

861 :Web制作板 :01/08/27 01:47 ID:3lNlqFsM
改良をお願いします。見かけとかは変わりません。

<div align=center><a href="http://www.2ch.net/info.html" border=0><img src="title.gif" border=0></a></div>

<p align=center><a href="http://www.2ch.net/info.html"><img src="title.gif" border=0></a></p>

提案はまとめて出した方がいいでしょうか?それとも決定次第出した方がいいでしょうか?

862 :デフォルトの名無しさん :01/08/27 01:48 ID:IuzteUCY
<HTML>削ってもHTMLの仕様に違反するわけではないよ
分かってるとは思うけど
http://www.ne.jp/asahi/minazuki/bakera/html/reference/basic#html

863 :名無し :01/08/27 01:49 ID:N77k73Ds
新スレにこれも載せてください。

http://www.gedoh.org/aki/2ch/wiki/yukiwiki.cgi?TopPage

864 :デフォルトの名無しさん :01/08/27 01:49 ID:YgC5b35I
htmlやbody削ると見れなくなるブラウザってある?
仕様よりも実装優先で。

865 :デフォルトの名無しさん :01/08/27 01:50 ID:2MpScvZw
>>862
http://www.w3.org/TR/xhtml11/

866 :デフォルトの名無しさん :01/08/27 01:49 ID:jRMpTCc6
<meta>タグは削らなくていいけど、
-printf("Content-type: text/html\n") ;
+printf("Content-type: text/html; charset=Shift_JIS\n") ;
は入れたほうがいいんじゃない? レスポンスヘッダ中にcharset指定がないと、
2ch以外のShiftJISじゃないページからread.cgiにリンクが張られたとき
<meta>タグ無視してNC4.xが判別に失敗するときあるし。

867 :デフォルトの名無しさん :01/08/27 01:50 ID:oVJMiQ2Y
>>860
DTD書いてない時点で、「ブラウザが解釈できる限界まで削る」という
方針でもいいんじゃ無いかと思うけどな。

>>855
httpのヘッダでなく、metaに入れないと化けるって事なら、みつけられん
charsetがShift_JISだから(x-sjisでないから)、ってことなら、了解。

868 :名無し :01/08/27 01:51 ID:N77k73Ds
夜勤さん、どこへ行っちゃったんだろうか?

869 :デフォルトの名無しさん :01/08/27 01:51 ID:IuzteUCY
>>865
2chのhtmlはxhtmlじゃないでしょ
もしそうならすでに違反しまくり
今さら<HTML>を残したって同じこと
そもそもxhtmlでは<html>と小文字でなくちゃ駄目

870 :デフォルトの名無しさん :01/08/27 01:52 ID:cn52pBwI
>>863
これでよろしいですか?

2chの読み出し[read.cgi]の最適化、効率化を中心に検討・開発しています。
このスレッドへのご感想・不具合報告の投稿はお控えください。

読み出しがうまくいかない・エラーなどの不具合報告はこちら
・2chの動作報告はここで。
http://teri.2ch.net/test/read.cgi?bbs=accuse&key=998808733

現状へのご意見ご感想はこちら
・転送量(料)の増加で2ch閉鎖の危機!5
http://teri.2ch.net/test/read.cgi?bbs=accuse&key=998806470

緊急対策コーディングはこちら
・UNIX板で2chのプログラムを開発中 パート 3
http://teri.2ch.net/test/read.cgi?bbs=accuse&key=998765190

・開発用wiki(read.cgiソースなどの掲載があります)
http://www.gedoh.org/aki/2ch/wiki/yukiwiki.cgi?TopPage

871 :デフォルトの名無しさん :01/08/27 01:52 ID:pckFEAaY
>娘。
日付関数動いた。
compile するのに apache の tarball 要る(configure のため)と思う
んだけどどうすればいいかな?
夜勤さんの方でコンパイルするのにそれは辛いでしょ?
# ちょっと今から configure 抜きで必要そうなファイルだけで試してみますが

872 :デフォルトの名無しさん :01/08/27 01:52 ID:YgC5b35I
タグ関連はここにどんどん書いてもらって、後で取捨選択しては?
http://www.gedoh.org/aki/2ch/wiki/yukiwiki.cgi?mycmd=read&mypage=%5B%5Bhtml%82%CC%8Ed%97l%5D%5D

873 :デフォルトの名無しさん :01/08/27 01:53 ID:IuzteUCY
>>867
詳しいことは忘れたけどmetaに入れた場合とHTTPヘッダに
入れた場合でもネスケ3はなぜか動作が違う
まあ苦情が来なければいいかも

874 :845 :01/08/27 01:53 ID:zjmRlAwo
すんません。やっぱこのスレで出すべき話じゃなかったかも。

875 :デフォルトの名無しさん :01/08/27 01:55 ID:DhF2Uz5c
>>848

>>838で古いネスケって書いてあったので、Ver1や2の頃かと思っていました(^^;
Ver4台で起きているのですね(^^;
では、METAタグがよろしいかと。。。
古いバージョンは逆にcharset=Shift_JISはOKなのかな。
(スレ違いすみません)

876 :デフォルトの名無しさん :01/08/27 01:56 ID:6kfMn/mA
147 名前:夜勤 ★ :01/08/27 01:54 ID:???
これから、全サーバに read.cgi 5.xx を入れに行ってきます。
たくさんサーバあるので、ぼちぼち入れます。

コピペです。

877 :デフォルトの名無しさん :01/08/27 01:56 ID:3lNlqFsM
>>872
後で取捨選択、をやろうとして現在Web制作の方が結構大変なことになってるんですが…。

878 :名無し :01/08/27 01:56 ID:N77k73Ds
>147 名前:夜勤 ★ :01/08/27 01:54 ID:???
>これから、全サーバに read.cgi 5.xx を入れに行ってきます。
>たくさんサーバあるので、ぼちぼち入れます。

だそうです。最終版のプログラムを提示して下さい。

879 :スレ違いスマソ :01/08/27 01:57 ID:IuzteUCY
>>875
ネスケ1や2や4は大丈夫。だめなのはネスケ3のみ。
ネスケ3だとcharset=Shift_JISもHTTPヘッダ使うのもだめ。

880 :名無し娘。 ◆vP.bOZFQ :01/08/27 01:57 ID:Km.fZ5BI
んと、hoopsもう入れなくなってます(汗
アップできないのでしばらくお待ち下さい。。。
# あぷろだにでもあげようか…

881 :デフォルトの名無しさん :01/08/27 01:59 ID:ZIaMkoUw
ウダウダレスしてねーで、はやく実行しろよ。

やっぱここはUNIX板とは違うオナ〜ニ板でしかなかったのか・・・

882 :デフォルトの名無しさん :01/08/27 01:59 ID:yw5i/z86
>>859
文字コードはブラウザで強制的に切り替えできるけど、
x-gzipにgzipで返されるとどうにもならない。

883 :348 :01/08/27 01:59 ID:ynZt.qo6
こっちであげますよ

forcount@star.endless.ne.jp
宛に
id:2chread
pass:readcgi
という内容で添付して送っていただければ
自動的にアップされます

884 :デフォルトの名無しさん :01/08/27 02:00 ID:pckFEAaY
>>881
メンバーほとんど同じだと思うけど

885 :369 ◆3XTuRnAc :01/08/27 02:01 ID:xXHglqmc
>娘。さん
うちのftpつかってくれて良いですよ。ftpポート開いてます。
210.170.170.131

886 :デフォルトの名無しさん :01/08/27 02:01 ID:IuzteUCY
>>882
ネスケ3もHTTPヘッダやhtmlで指示された文字コードは切り替えられない

887 :369 ◆3XTuRnAc :01/08/27 02:01 ID:xXHglqmc
あ、そっちのほうがいいですね>>883さん

888 :デフォルトの名無しさん :01/08/27 02:02 ID:QEEMLonQ
>>861
っと、それはbbs.cgiの部分だな。
とりあえずWeb製作のスレで「決定事項」としてまとめとけば、
必要になったらこっちから見に行くんじゃないかな。

889 :デフォルトの名無しさん :01/08/27 02:02 ID:ZIaMkoUw
こっちも見ろや
http://natto.2ch.net/test/read.cgi?bbs=hp&key=998774537&ls=50

890 :デフォルトの名無しさん :01/08/27 02:03 ID:BrafyimQ
ところで、最新ソースのレポジトリはどこさ?

891 :デフォルトの名無しさん :01/08/27 02:03 ID:3lNlqFsM
>>888
了解しました。

892 :348 :01/08/27 02:05 ID:ynZt.qo6
>>883の手順でアップしたら
一応
http://star.endless.ne.jp/users/forcount/4countbbs/scriptmaker/index.html
に告知しておいて下さい
5分ごとにチェックしてます

893 :デフォルトの名無しさん :01/08/27 02:06 ID:cn52pBwI
新スレ建てておきました。

894 :名無し娘。 ◆vP.bOZFQ :01/08/27 02:08 ID:Km.fZ5BI
>>883
使わせていただきました。ありがとうございます。
ftp://210.170.170.131/incoming/2ch-read-current/read12.c
ftp://210.170.170.131/incoming/2ch-read-current/Makefile
コンパイルまでは確認済です。

895 :デフォルトの名無しさん :01/08/27 02:10 ID:cn52pBwI
失礼。
新スレのリンクし忘れました。
http://piza2.2ch.net/test/read.cgi?bbs=tech&key=998845501
です。

896 :369 ◆3XTuRnAc :01/08/27 02:11 ID:xXHglqmc
うーん、zlib対応がなんかいまいちうまく行かない。
gzprintfが、printfじゃなくてfprintf相当というのが結構面倒(^^;;。

なんか、話を混乱させてしまいそうですし、できる見こみも少ないので
「gzipマージ/zlib利用」はおいらのところでは断念することにします。

みなさま、混乱させてごめんなさい。

# 悔しい・・・。なにより、実現できると思ったことが実現できないことが。

897 :名無し娘。 ◆vP.bOZFQ :01/08/27 02:11 ID:Km.fZ5BI
新スレあるけど、報告だけこちらに。

HTML吐き出し部分での改造は、"100"を"100"にしたこと、
JavaScriptにエラーが出ない範囲で"\n"を省略したこと。
read.cgiバージョン表示部分を短くしたこと。

大きなことは、#ifdef GSTR2。

その他は、x-gzipのこと、tm_nowのこと、x-sjisのこと。

898 :デフォルトの名無しさん :01/08/27 02:13 ID:pckFEAaY
>>896
printf 全置き換えでだめだったの?

899 :369 ◆3XTuRnAc :01/08/27 02:22 ID:xXHglqmc
>>898
あ、それやってないです。
ちょうどread12が公開された見たいだし、もう一度やってみようかな・・・。

900 :デフォルトの名無しさん :01/08/27 02:23 ID:KshZOEYc
>>896
やったところまで Wiki にでも上げといたらどう?
誰か跡継いでくれるかもよ。

901 :デフォルトの名無しさん :01/08/27 02:24 ID:yw5i/z86
>>886
x-sjisは変わらんが、Shift-Jisは変えられる様だ。
3.01jaを引っ張り出して来て試してみた。

902 :369 ◆3XTuRnAc :01/08/27 02:26 ID:xXHglqmc
>娘。さん
read12.c、バグがあります。

850行目
char *zz_GetString(char *dst,char tgt)

char *zz_GetString(char *dst,char *tgt)

861行目
if(kk[0] == tgt)

if(kk[0] == tgt[0])

じゃないですか?

903 :369 ◆3XTuRnAc :01/08/27 02:28 ID:xXHglqmc
てことで、その修正入れたのを

ftp://210.170.170.131/incoming/2ch-read-current/read12.1.c

としてコピーしておきました。

904 :デフォルトの名無しさん :01/08/27 02:30 ID:2NFCZnYc
新スレに移行された方がよいのでは?
プログラマが2chを救う!?2
http://piza2.2ch.net/test/read.cgi?bbs=tech&key=998845501

905 :772じゃないけど :01/08/27 02:34 ID:0cm50H8s
もうちょっと詳しく書くとこんな感じになるかな?
----------------------------------------------------------------------
#include <stdarg.h>
#include <zlib.h>
  :
/* 本当はグローバル変数を増やさない方がいいんだけど...
  printf()があちこちにあるので許してちょ */
typedef int (*zz_printf_t)(gzFile *, cont char *, ...);
static gzFile *zz_fptr = (gzFile *)stdout;
static zz_printf_t zz_printf = (zz_printf_t)fprintf;
  :
  :
if (gzip_flag) {
   :
 fflush(stdout);
 zz_fptr = gzdopen(1, "w");
 zz_printf = gzprintf;
 gzsetparams(zz_fptr, Z_BEST_COMRESSION, Z_DEFAULT_STRATEGY);
   :
}
  :
if (gzip_flag) {
   :
 gzclose(zz_gzfile);
}
----------------------------------------------------------------------
で ソース中の printf("fmt", ...) を (*zz_printf)(zz_fptr, "fmt", ...) に
書き換えて Makefileで
  LDFLAGS = -s -lz
を追加 あっ"-s"ってのは個人的な趣味なんで気に入らなければ外してもいいです

906 :デフォルトの名無しさん :01/08/27 02:35 ID:yw5i/z86
>>886 >>901
ごめん、Shift_JISだった。
表示コードを変えられなかったが、sjisだと認識するんならOKだし、
不明なコードなら変更できるんだからかまわないんでは。

907 :デフォルトの名無しさん :01/08/27 02:36 ID:pckFEAaY
>>905
そうそう、そんな感じで。

908 :デフォルトの名無しさん :01/08/27 02:38 ID:IuzteUCY
>>906
確か変えられなくて困った記憶があるんだが…記憶違いかも。
確かめてみる。

909 :デフォルトの名無しさん :01/08/27 02:45 ID:vN9r/JlA
>>905
 (*zz_printf)(zz_fptr, "fmt", ...)

 zz_printf(zz_fptr,"fmt", ...)
の方が良いと思われ。(ANSI C には反しない。)
後で元に戻すとき楽だと思う。

910 :デフォルトの名無しさん :01/08/27 02:48 ID:pckFEAaY
てか、cpp では

#define printf(str, ...) zz_printf(zz_fptr, str, ...)

みたいに可変引数できるんだっけ?

911 :デフォルトの名無しさん :01/08/27 02:51 ID:oVJMiQ2Y
#define printf(format, args...) zz_printf(zz_fptr, format, ## args)
ってのでGNU Cの拡張で「だけ」OKだったはず。

912 :デフォルトの名無しさん :01/08/27 02:51 ID:yw5i/z86
>>908
EUCなのに、x-sjisとかShift_JISとか書いてあって困ったんではないの。
間違ってShift-Jisってやったら変えられたからね。

913 :デフォルトの名無しさん :01/08/27 02:52 ID:oVJMiQ2Y
http://www.asahi-net.or.jp/~wg5k-ickw/html/online/gcc-2.8.1/gcc_3.html
詳しくはここいらの「可変個の引数をもつマクロ」を見れ

914 :デフォルトの名無しさん :01/08/27 02:53 ID:pckFEAaY
ま、んなことせんでも引数1〜10個まで#defineすればいっか

915 :908 :01/08/27 02:54 ID:IuzteUCY
すまん完全に勘違いしてた。
文字化けするのはネスケ2だった。

916 :デフォルトの名無しさん :01/08/27 02:55 ID:IuzteUCY
ネスケ2でShift_JISを指定してもEncodingがWesternに固定されて
変えられない。もちろん文書はシフトJIS。
2.02で確認。

917 :デフォルトの名無しさん :01/08/27 02:58 ID:yw5i/z86
>>915
さすがに、ネスケ2はそこらに残してない。

918 :デフォルトの名無しさん :01/08/27 03:00 ID:5VdVXYrU
いまベンチャー板にひろゆき(本物)いた。
http://yasai.2ch.net/test/read.cgi?bbs=venture&key=998402480

919 :デフォルトの名無しさん :01/08/27 03:04 ID:pckFEAaY
ひろゆきが助けてくださいと言って
西さん一晩考えるって・・・

920 :- :01/08/27 03:29 ID:q7WWiv5M
全鯖に read.cgi ver5.02 入ってますな。夜勤さん、おつかれさま・・・

921 :デフォルトの名無しさん :01/08/27 04:01 ID:vN9r/JlA
実況防止機能(素早い reload を無視)
http://cocoa.2ch.net/test/read.cgi?bbs=unix&key=998764722&st=490

922 :らいがー。 :01/08/27 04:30 ID:R/rjVC1g
あなた達かっこいいよ・・・。

923 :デフォルトの名無しさん :01/08/27 23:40 ID:bJ23bC3M
/*<ctype.h>等とかぶってたら、要置換*/
#definefalse(0)
#definetrue(!false)
#define_C_(1<<0)/*datチェック用区切り文字等*/
#define_U_(1<<1)/*URLに使う文字*/
#define_S_(1<<2)/*SJIS1バイト目=<br>タグ直前の空白が削除可かを適当に判定*/

//#defineisCheck(c)(flagtable[(unsigned char)(c)] & _C_)
#defineisCheck(c)(flagtable[/*(unsigned char)*/(c)] & _C_)
#defineisSJIS1(c)(flagtable[(unsigned char)(c)] & _S_)
#definehrefStop(c)(!(flagtable[(unsigned char)(c)] & _U_))

#define_0____(1<<0)
#define__1___(1<<1)
#define___2__(1<<2)
#define____3_(1<<3)
#define_____4(1<<4)

#define______(0)
#define_01___(_0____|__1___|0)
#define__1_3_(__1___|____3_|0)
#define___23_(___2__|____3_|0)
#define_0_23_(_0____|___2__|____3_|0)


char flagtable[256] = {
_0____,______,______,______,______,______,______,______,//00-07
______,______,______,______,______,______,______,______,//08-0F
______,______,______,______,______,______,______,______,//10-17
______,______,______,______,______,______,______,______,//18-1F
_0____,__1___,______,__1___,__1___,__1___,_01___,______,//20-27 !"#$%&'
______,______,__1___,__1___,_01___,__1___,__1___,__1___,//28-2F()*+,-./
__1___,__1___,__1___,__1___,__1___,__1___,__1___,__1___,//30-3701234567
__1___,__1___,__1___,__1___,_0____,__1___,______,__1___,//38-3F89:;<=>?
__1_3_,__1_3_,__1_3_,__1_3_,__1_3_,__1_3_,__1_3_,__1_3_,//40-47@ABCDEFG
__1_3_,__1_3_,__1_3_,__1_3_,__1_3_,__1_3_,__1_3_,__1_3_,//48-4FHIJKLMNO
__1_3_,__1_3_,__1_3_,__1_3_,__1_3_,__1_3_,__1_3_,__1_3_,//50-57PQRSTUVW
__1_3_,__1_3_,__1_3_,__1_3_,__1_3_,__1_3_,__1_3_,__1_3_,//58-5FXYZ[\]^_
__1_3_,__1_3_,__1_3_,__1_3_,__1_3_,__1_3_,__1_3_,__1_3_,//60-67`abcdefg
__1_3_,__1_3_,__1_3_,__1_3_,__1_3_,__1_3_,__1_3_,__1_3_,//68-6Fhijklmno
__1_3_,__1_3_,__1_3_,__1_3_,__1_3_,__1_3_,__1_3_,__1_3_,//70-77pqrstuvw
__1_3_,__1_3_,__1_3_,__1_3_,__1_3_,__1_3_,__1_3_,______,//78-7Fxyz{|}~
____3_,_0_23_,___23_,___23_,___23_,___23_,___23_,___23_,//80-87
___23_,___23_,___23_,___23_,___23_,___23_,___23_,___23_,//88-8F
___23_,___23_,___23_,___23_,___23_,___23_,___23_,___23_,//90-97
___23_,___23_,___23_,___23_,___23_,___23_,___23_,___23_,//98-9F
____3_,____3_,____3_,____3_,____3_,____3_,____3_,____3_,//A0-A7
____3_,____3_,____3_,____3_,____3_,____3_,____3_,____3_,//A8-AF
____3_,____3_,____3_,____3_,____3_,____3_,____3_,____3_,//B0-B7
____3_,____3_,____3_,____3_,____3_,____3_,____3_,____3_,//B8-BF
____3_,____3_,____3_,____3_,____3_,____3_,____3_,____3_,//C0-C7
____3_,____3_,____3_,____3_,____3_,____3_,____3_,____3_,//C8-CF
____3_,____3_,____3_,____3_,____3_,____3_,____3_,____3_,//D0-D7
____3_,____3_,____3_,____3_,____3_,____3_,____3_,____3_,//D8-DF
____3_,___23_,___23_,___23_,___23_,___23_,___23_,___23_,//E0-E7
___23_,___23_,___23_,___23_,___23_,___23_,___23_,___23_,//E8-EF
___23_,___23_,___23_,___23_,___23_,___23_,___23_,___23_,//F0-F7
___23_,___23_,___23_,___23_,___23_,______,______,______,//F8-FF
};

924 :デフォルトの名無しさん :01/08/27 23:41 ID:bJ23bC3M
typedef struct {//class...
char **buffers;//csvの要素
int rest;//残りのバッファサイズ・・厳密には判定してないので、数バイトは余裕が欲しい
int isTeri;//
} ressplitter;

/*
初期化
toparrayポインタ配列のアドレス
buffコピー先のバッファの先頭
bufsize厳密には判定してないので、数バイトは余裕が欲しい
*/
void ressplitter_init(ressplitter *This, char **toparray, char *buff, int bufsize/*, bool isteri*/)
{
This->buffers = toparray;
This->rest = bufsize;
This->isTeri = true;//レス1をstrstr("<>")した結果を設定すべき
*This->buffers = buff;
}

/*
findSplitterの代わり
レスを全走査するが、コピーと変換(と削除)を同時に行う
pコピー前のレス(BigBuffer内の1レス)
istagcut<a href=...>と</a>をcutするか
Return次のpの先頭
non-TYPE_TERIなdatには,"<>"は含まれないはずなので、#ifdef TYPE_TERI は略
*/
const char *ressplitter_split(ressplitter *This, const char *p, int istagcut)
{
char *bufp = *This->buffers;
int bufrest = This->rest;
while (--bufrest > 0) {
int ch = *(unsigned char *)p;
if (isCheck(ch)) {
switch (ch) {
case ' ':
//無意味な空白は1つだけにする
while (*(p+1) == ' ')
p++;
if (*(p+1) != '<')
break;
if (*(p+2) == '>') {
if (bufp == *This->buffers)//名前欄が半角空白の場合
*bufp++ = ' ';
p += 3;
goto Teri_Break;
}

if (memcmp(p, " <br> ", 6) == 0) {
if (bufp != *This->buffers && isSJIS1(*(bufp-1))) {
*bufp++ = ' ';
}
memcpy(bufp, "<br>", 4);
p += 6;
bufp += 4;
continue;
}
break;

925 :デフォルトの名無しさん :01/08/27 23:42 ID:bJ23bC3M
case '<'://醜いが
if (*(p+1) == '>') {
//This->isTeri = true;
p += 2;
goto Teri_Break;
}
if (istagcut) {
//if (*(p+1) != 'b' || *(p+2) != 'r') {
if ((*(p+1) == 'a' && *(p+2) == ' ') || (*(p+1) == '/' && *(p+2) == 'a')) {
while (*p != '>') {//strchr(p, '>')
if (*p == '\0')
goto Break;
++p;
}
++p;
continue;
}
}
break;
case '&':
if (memcmp(p, "&", 4) == 0) {
if (*(p + 4) != ';')
p += 4 - 1;
}
break;
#ifndefTYPE_TERI
case 0x81://*"@"
//if (!This->isTeri) {
if (memcmp(p, "@`", 4) == 0) {
ch = ',';
p += 4 - 1;
}
//}
break;
case ',':
//if (!This->isTeri) {
p++;
goto Break;
//}
//break;
#endif
case '\0':
goto Break;
//break;
default:
break;
}
}
*bufp++ = ch;
p++;
}

926 :デフォルトの名無しさん :01/08/27 23:43 ID:bJ23bC3M
Teri_Break:
//名前欄に','が入っている時にsplitをミスるので、見誤る可能性があるので、
//This->isTeri = true;
Break:
*bufp++ = '\0';
This->rest -= bufp - *This->buffers;
*++This->buffers = bufp;

//区切り末の空白を削除
if (*p == ' ')
++p;
return p;
}

void splitting_copy(char **s, char *bufp, const char *p, int size)
{
ressplitter res;
ressplitter_init(&res, s, bufp, size);

p = ressplitter_split(&res, p, false);//name
p = ressplitter_split(&res, p, false);//mail
p = ressplitter_split(&res, p, false);//date
p = ressplitter_split(&res, p, LINKTAGCUT && IsBusy2ch());//text
p = ressplitter_split(&res, p, false);//title
//IsBusy2ch()を何度も呼ぶのは大きな無駄
}

927 :デフォルトの名無しさん :01/08/27 23:43 ID:bJ23bC3M
その他に直す部分は、
先頭のほうに、
#definefalse(0)
#definetrue(!false)
#defineLINKTAGCUTtrue

out_html1()(369-)
- strncpy(p, BigLine[0], 1024);
- p[1024 - 1] = '\0';
- if (!*p)
- return 1;
- res_split(s, p);
+ splitting_copy(s, p, BigLine[0], sizeof(p) - 20);
+ if (!*p)
+ return 1;

out_html()(404-)
- strncpy(p, BigLine[0], 1024);
- p[1024 - 1] = '\0';
- if (!*p)
- return 1;
- res_split(s, p);
+ splitting_copy(s, p, BigLine[0], sizeof(p) - 20);
+ if (!*p)
+ return 1;

out_html()(421-)
- strncpy(p, BigLine[line], 1024);
- p[1024 - 1] = '\0';
- if (!*p)
- return 1;
- res_split(s, p);
+ splitting_copy(s, p, BigLine[line], sizeof(p) - 20);
+ if (!*p)
+ return 1;

hrefStop()
マクロで定義しなおしているので、
#if0
#endif
ででもはさんでくれ(コンパイルエラーが出る)。
res_split()とfindSplitter()も必要なくなるが、エラーにはならないので。

928 :デフォルトの名無しさん :01/08/28 00:19 ID:gWXKzR9.
わかると思うけど、
>>925
 case '&':
の下は、当然、
  if (memcmp(p, "&amp", 4) == 0) {
ね。

929 :デフォルトの名無しさん :01/08/29 22:04 ID:eQiT7HbI
BadAccessってさ、なんでif文を切ってるの?
コンパイルした時にダイナミックステップが多くなるじゃん。
caseにしろよ。その方が高速化するぞ。

930 :デフォルトの名無しさん :01/08/29 22:38 ID:6wtO5bLA
>>929
文字列比較にcase?

231KB
新着レスの表示

スレッドリストへ戻る 全部 前100 次100 最新50

0ch BBS 2004-10-30