トップページ⇒tech
930コメント307KB

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

レス数が900を超えています。1000を超えると表示できなくなるよ。
0001デフォルトの名無しさんNGNG
結局のところ資金面の調達が不可能なのなら、ここ(技術板)が
動かないと2ch縮小・停止の情勢・・・。

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

を話し合っていただきたいと思います。
では、どうぞ・・・・
0002デフォルトの名無しさんNGNG
http://cocoa.2ch.net/test/read.cgi?bbs=unix&key=998695422

ここでがんばってるようなので、応援してくらはいー
0003デフォルトの名無しさんNGNG
がんばでぇ
0004デフォルトの名無しさんNGNG
http://piza.2ch.net/read4.txt
あんま関係ないけどread.cgiのソース
0005最適化セヨNGNG
---
> #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
0006デフォルトの名無しさんNGNG
BadAccess関数、アクセス数が多いと思われるWindows系のチェックを前にせいや。
DreamPassportのチェックなんて最後でいいだろ。
なんで最初にやってるんだよ。

printf使いすぎ。複数のprintfを1つにまとめろ。ついでにputsに置き換えろ。
0007デフォルトの名無しさんNGNG
じゃぁこっちのスレでは最適化することにする?
別に張り合うわけじゃないけど、あっちは”緊急に”
gzip 化と Last-modified: チェックを導入したいみたいだし
0008デフォルトの名無しさんNGNG
>>7
いいアイディア。
張り合っちゃおう。
0009デフォルトの名無しさんNGNG
ではまたーり と >>6 のような問題点について語りましょう。
0010デフォルトの名無しさんNGNG
http://teri.2ch.net/test/read.cgi?bbs=accuse&key=998734022&ls=100
0011どうでも良い事NGNG
100とかは半角数字を使う。cgiのバージョンを短く表記する。
>>6
printfまとめるのはコンパイラがやってくれるんじゃねーの?
0012デフォルトの名無しさんNGNG
int hrefStop(char x)
はテーブル引いて一行に書き換えろ。
0013デフォルトの名無しさんNGNG
いまさら野暮かもしれないけど
logOut(char *txt)
ってアクセス記録だよね....
0014デフォルトの名無しさんNGNG
>printfまとめるのはコンパイラがやってくれるんじゃねーの?
んなこたない
0015デフォルトの名無しさんNGNG
>>13
ホントだ!!
0016デフォルトの名無しさんNGNG
全てのデータをバッファに読み込む必要性ってあるの?
0017デフォルトの名無しさんNGNG
全体的にまるっきり速度考慮してね〜な

char *doReplace(char *des,char *str0,char *str1)
{
char *p,*ret = NULL ;
char t[SIZE_BUF] ;
strcpy(t,des) ;
p = strstr(t,str0) ;
if(!p) return ret ;
*p = '\0' ;
strcpy(des,t) ;
strcat(des,str1) ;
ret = des + strlen(des) ;
strcat(des,p+strlen(str0)) ;
return ret ;
}
0018これは?NGNG
fprintf(fp,"(%15s)",zz_remote_addr) ;
0019デフォルトの名無しさんNGNG
>>18
>>13でがいしゅつ 
0020デフォルトの名無しさんNGNG
>>18
でもさ、書き込みログじゃなくて、読み込みログだから
いいんじゃないの?

でも、なんか、書き込み時もログとってそう、、、
0021仕様書無しNGNG
>>18
アラ探しより先にする事があるだろう
0022どうでも良い事NGNG
セミコロンの前にtab入れてるんだけどなんか意味あるの?
http://piza.2ch.net/read4.txt read.cgiのソース
0023デフォルトの名無しさんNGNG
みんながバラバラに最適化していくより、
関数毎にやっていったほうが効率よくない?
0024デフォルトの名無しさんNGNG
とりあえず関数ごとに分けて機能表つくろうよ。
---
int BadAccess()

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

こんな感じでいいかなぁ?
0025デフォルトの名無しさんNGNG
じゃ、まずdat_readからか?
0026どうでも良い事NGNG
zz_http_refererに関する行を全削除する。
0027デフォルトの名無しさんNGNG
改良版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])
0028デフォルトの名無しさんNGNG
みなさん、応援しています。がんばって下さい。
0029どうでも良い事NGNG
最適化する前にラフな仕様書を作るか、きちんとコメント書くかした方が良いんでない?
003027NGNG
#define hrefStop(x) (isgraph(x) ? s_pHrefTable[(x)-0x20] : 0)
間違えた。
0031デフォルトの名無しさんNGNG
問題は帯域幅だから、read.cgiが速くなっても別に意味ないんだよねえ..
まあ、いろいろと突っ込みたくなる codeだけどさ。
0032デフォルトの名無しさんNGNG
データ転送量が問題なんじゃなかった?
それだと高速化しても無意味じゃ…
0033デフォルトの名無しさんNGNG
int logOut(char *txt)

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


引き値:用途不明
返戻値:ファイルエラーで0 、それ以外1
呼び出す関数:BadAccess()
0034[email protected]NGNG
確かに今のままじゃ流れがちょっと見えにくいし、
簡単なフローとか作ったほうがいいのかも。
003527NGNG
#define hrefStop(x) (isgraph(x) ? s_pHrefTable[(x)-0x20] : 1)
鬱死
0036デフォルトの名無しさんNGNG
>>31
そっちは
http://cocoa.2ch.net/test/read.cgi?bbs=unix&key=998695422
にお任せということで...

>>7 >>8 参照
0037デフォルトの名無しさんNGNG
>>31-32
既出です( >>7-9 )。
0038デフォルトの名無しさんNGNG
>29
んなもんコード見りゃわかる。
わからなきゃ調べて関数仕様ageたら。

最適化前->後の変化は初学者には結構勉強になるかもね。
0039デフォルトの名無しさんNGNG
linuxのstrstrって速いんか?
0040デフォルトの名無しさんNGNG
名スレの予感
0041デフォルトの名無しさんNGNG
int html_bannerNew()
int html_banner()

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

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

ほんと役に立たなくてすまないが残りは頼んだ。ちょっと落ちる。
0042デフォルトの名無しさんNGNG
>>39
つーか、使わないほうがいいやね。それ。
0043デフォルトの名無しさんNGNG
doReplace()も激遅だな
0044デフォルトの名無しさんNGNG
81 名前:夜勤 ★ 投稿日:2001/08/25(土) 20:10
あっ へっだ これです、すんません。

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

read.2ch.h のヘッダの中身です。
0045デフォルトの名無しさんNGNG
改良版html_bannerNew

int html_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ひとつだけだから関数にするまでもないな。
0046デフォルトの名無しさん NGNG
できるだけ最適化して高速化しておけば、
gzip の圧縮レベルを上げることができる。

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

ところで、gzip 採用でボトルネックになるのは
cgi なのかな。それとも、gzip エンジン?
0047うーんNGNG
ストリームへの書き出し単位が小さいとパケットが分断化しやすいからね。
もっとも、printfストリーム関数使ってるからある程度まとまってるとは思うけど、ライブラリ依存だなぁ。
CGI内部でバッファ制御して吐き出せば多少変わるかもな。
ほとんど気休めな程度な気がするが・・・
0048デフォルトの名無しさんNGNG
>>45
return 忘れてるYO!!
0049デフォルトの名無しさんNGNG
>>27
isgraph()もテーブルに押し込めろ
0050地道にやろうNGNG
とりあえず printfの中の \n を全て取っ払う。
0051デフォルトの名無しさんNGNG
UNIX板の作業所に荒しが入った模様。
IRCへ移動するプランが提案されています。
0052名無NGNG
プログラマーはUNIX板へ集合して下さい。
対策を練ります。
0053デフォルトの名無しさんNGNG
削除人が待機してるようだから大丈夫。
荒らしがしつこければ制限かけるだろう
0054デフォルトの名無しさんNGNG
つーか、いっそのことサーブレットで書き直すと、かなり
よいんじゃない?CGIじゃ限界あるでしょ。
0055デフォルトの名無しさんNGNG
共通仕様の鯖しか使えないからダメ。つーか転送量に関係無いし
0056デフォルトの名無しさんNGNG
うーん、replace関係がやばそうだな。

doReplace って

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

でいいの?

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

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

ってこと?

でもstr1の意味って何?
0057デフォルトの名無しさんNGNG
あ、すまん >>56 >>17

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

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

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

なのかな?
0058デフォルトの名無しさんNGNG
BadAccess()のuser agent検出ってstrstrの代わりにstrcmpの完全一致じゃ駄目なの?
0059デフォルトの名無しさんNGNG
なんせHTTPという超曖昧プロトコルだからねえ
0060デフォルトの名無しさんNGNG
1000超えたら表示がおかしくなる、っていうバグもこの
中にあるのかNA...
0061デフォルトの名無しさんNGNG
>>58
strcmpのほうが速いの?
0062デフォルトの名無しさんNGNG
マジで書きなおしたくなってくる
006358>61NGNG
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
みたいに書き換えられる。かも
0064デフォルトの名無しさんNGNG
>63
UAにはたいていバージョン番号が含まれてるし難しいと思われ
とりあえず仕様を変えないで最適化できる範囲で
0065デフォルトの名無しさんNGNG
>63じゃなくて>58
0066デフォルトの名無しさんNGNG
hlinkReplace、ExistHlink、ExistHlinkX、cutWordOff、someReplace、doReplaceが
協力してurlにリンクを張っているらしいね。
何度もバッファに書き出していて効率悪い。
全部総とっかえしたほうがよさそう。
0067デフォルトの名無しさんNGNG
>>66

その関数の依存関係を簡単でいいからおしえてくれるとたすかる。
0068デフォルトの名無しさんNGNG
つーかurlにリンク張る処理は全廃でいいんじゃない?
クライアントに任せろ。
006968NGNG
もちろん仕様は変わるが、IOは確実に減る。
0070デフォルトの名無しさんNGNG
かちゅとかだと勝手にリンク入れてくれるしね。
0071デフォルトの名無しさんNGNG
最新レスの数を減らせば……(^^;
0072デフォルトの名無しさんNGNG
>69
I/O減らすだけが目的ならこのスレで話し合ってる最適化自体
ほとんど無意味です
007369>72NGNG
処理だってかな〜り高速化されるよ。
2chブラウザとの連携を視野に入れつつ最適化。
0074デフォルトの名無しさんNGNG
リンク張りはhttp://探して見つかったら、その手前まで出力してタグを開く
URLの終端まで一文字ごとに出力、URLの終端に来たらタグを閉じて
次のURLを探す。
ってやった方が良いんでない?
0075デフォルトの名無しさんNGNG
>73
それならread.cgiは全面的に止めたほうがいいかと
007666NGNG
hlinkReplaceはリンクリプレースのメイン。
ExistHlinkを呼び出して、対象となるソースの中からurlを抜き出し、同時にリンク済みのタグつきurlを出力してもらい、
それをdoReplaceでhtmlに埋め込んでいる。

ExistHlinkは、http://とftp://とでExistHlinkXを呼び出していて、実際にurlを抜き出しているのはこちら。
ExistHlinkではhttp://があるかどうかを調べて、あるならそこからurlを抜き出し、
そこからcutWordOffで"""を省いて、タグつきurlをsprintfで出力している。
これを直すのはたいへんだな。
0077デフォルトの名無しさんNGNG
(いろんな意味でw)自主的に
ttp://〜
ってする板も多いので、いっそ廃止でも……。>http〜
007867NGNG
>>66 サンクス
0079デフォルトの名無しさんNGNG
もっといい方法ありそうだけどね。

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;
}
0080デフォルトの名無しさんNGNG
>75
それだと通常のブラウザから一切見えなくなっちゃうじゃん。
0081ペイント聖矢NGNG
ぷうぷぷぷぷぷぷぷぷプログラマー板がっつつつつつつt!!!!!!??jfだjふぉ@あえああひゃはやはやはやはあはやあはやごふっ
0082[email protected]NGNG
PGer板停止中?

今、全体のフローらしきものを作ってます。
ところで、dat_readはレス1つ指定でも必ずファイル全部読み出して
処理しているのかな?
0083デフォルトの名無しさんNGNG
>>79
すっきりしたね。
でもkickだけあればいいのではないかという気もする。
0084デフォルトの名無しさんNGNG
改良版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;
}
0085デフォルトの名無しさんNGNG
抜本的に見直す為、クラサバから検討しするスレも要るのかも・・・?
008679NGNG
>>83
確かにそうでした、accept のチェックは要らないですね。
0087デフォルトの名無しさんNGNG
ここが止まった場合は↓に行くことにしとく?
http://www.shitaraba.com/bbs/programtech/index.html
どっかもっと良いとこある?
0088デフォルトの名無しさんNGNG
>>85
そういう構想だけは前からある。
「2chのような掲示板システムってP2Pで」
http://piza2.2ch.net/test/read.cgi?bbs=tech&key=990334284
0089デフォルトの名無しさんNGNG
>>86
改良版の問題は、ドリキャスがブラウザのシェアを独占したら
かえって重くなるということだな(笑)。
0090[email protected]NGNG
いまさらって感じはするけど流れを簡単にまとめてみました。
間違いとかあったら訂正してくださひ。

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関数辺りが結構重要かも、引き続き細かいところ解析していきます。
0091デフォルトの名無しさんNGNG
2ch閉鎖の危機なんだと
http://cocoa.2ch.net/test/read.cgi?bbs=unix&key=998695422
の 291 も加えてください。
0092デフォルトの名無しさんNGNG
out_html と似た名前の関数があってわかりずらいですよね。
out_html1() だって、、、
コメントもコピペなのかあてにならんし
0093デフォルトの名無しさんNGNG
zz_GetStringが何をやりたい関数なのかわからん……
0094[email protected]NGNG
>>93
zz_GetStringはHTTPの環境変数を取得します。
ブラウザから要求をかけたときに付帯するプロトコル情報です。
あと、http://**.com/read.cgi?st=8%ls=5
のようなcgiに変数を引き渡すときに使用されます。

解析続き

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

getLineMaxでBigBufferを全てスキャンして、
\nならそのポインタ位置を記憶、NULLに置き換える。
最大転送量・\nが見つからない場合(ファイルの最後?)で処理終了
取得したライン(ログ数)を返す
0095仕様無しさん ◆NwLv.g/w NGNG
>93 関数を呼んでるところを見て御覧。
0096[email protected]NGNG
>>94
ごめん read.cgi?st=3%ls=5
の?以下が環境変数となります。
HTTPDのAPIでこの値を取得できます。

ただ、折れの知っている情報って組み込み用HTTPDについてなので
汎用的なサーバのHTTPDだと違うかもしんない・・・。
009793NGNG
>>94-95
ありがとう。
0098[email protected]NGNG
環境変数って表現はちょっと違ってたかもしれませんね。
どちらかっていうとget_envでとってくるのが環境変数ですね。
0099デフォルトの名無しさんNGNG
UNIX 板でも同時進行してるんだがmerge しなくていいのか?
0100デフォルトの名無しさんNGNG
http://cocoa.2ch.net/test/read.cgi?bbs=unix&key=998695422
でも対策スレが立っています。夜勤さんも来ています。
0101265NGNG
>>7-9

ってことにしたんだけど.. あっちどうなってるんだろう..
0102デフォルトの名無しさんNGNG
これってうわさのリファクタリング??
0103デフォルトの名無しさんNGNG
>>99
当面問題なのは転送量だからUNIX板の方には
先に走ってもらって転送量削減のめどかついた時点で

圧縮により増えた負荷を下げるようにこちらの結果を
反映していけばよいのではないでしょうか
0104デフォルトの名無しさんNGNG
>>102
いいえ、Cプログラミング診断室です。
0105デフォルトの名無しさんNGNG
なんか向こうでどんどこ新しいの作っちゃってんだけど
こっちの意見も言っといた方がよくない?
0106265NGNG
>>104
ワラタ
0107デフォルトの名無しさんNGNG
main()のdat_read(); dat_out(); は見直したほうが良くない?
全レスbufに溜める方式で良いのか?
0108デフォルトの名無しさんNGNG
とりあえず>>84あたりはmergeされてもいいと思うんだけど
0109デフォルトの名無しさんNGNG
>>105
とりあえず期日は今月末だから、結果が出るものを
先に作ったほうがよい。というか作り終えたみたいだが
(これからテスト)
0110デフォルトの名無しさんNGNG
>>107
そうそう、それ良くないよ。
0111デフォルトの名無しさんNGNG
>>103
 それがいいと思う。
ただそうする場合、向こうにその方針伝えて置いた方がよさげ。
0112デフォルトの名無しさんNGNG
むこうで作ってるのはgzip対応版でしょ?
向こうはデータの入出力に手を入れている。
こっちはデータの解析・加工に手を入れている。
違うところを修正しているのだから問題ないと思うけど。
0113デフォルトの名無しさんNGNG
http://5ch.tanuq.net/
5chへ移動
0114デフォルトの名無しさんNGNG
むこうは間に合わせの quick hackだから、
こっちはちゃんと書き直すのがよいと思われ。

っていうか、mmapして行数数えたほうがよくねえか?
0115UNIX板よりNGNG
read.cgi ver5
419 名前:夜勤 ★ 投稿日:2001/08/25(土) 23:20
piza2 に入りました。
私は 転送量と load average を観察中。。。
0116デフォルトの名無しさんNGNG
>>112
今必要とされてる課題は転送量の削減だから、
それ以外の改良を同時に施してもわけわからなく
なるか。
あっちがリリースされてからのほうがいいよ
0117デフォルトの名無しさんNGNG
とりあえず、サーバへの負荷よりも、トラフィックが問題らしい。
0118デフォルトの名無しさんNGNG
いま read4.c と read5.c compare したけど
gzip関連以外は特に変えてないみたいだよ
0119デフォルトの名無しさんNGNG
レス1件ごとに処理する方式にしない?
とゆーかそれなら、練習の為に書いたコードが手元にある。
0120デフォルトの名無しさんNGNG
ここは緊急的なスクリプトの改変をするスレじゃない。
とりあえずはgzipの部分と直行性のありそうな、htmlの生成の部分を
最適化しときましょうってスレ。
0121 NGNG
なんかunixスレが荒されてる
0122265NGNG
>>119
アップきぼんぬ。

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

か

ftp://210.170.209.10/incoming
↑UNIX板で提供されたんだけどたぶん大丈夫でしょう
0123デフォルトの名無しさんNGNG
read.cgi 5.00 gzip対応版がとりあえずは動作している模様
読み込みの早さから、圧縮は成功している・・と思われる

2ch閉鎖の危機なんだと
http://cocoa.2ch.net/test/read.cgi?bbs=unix&key=998695422
0124デフォルトの名無しさんNGNG
ここの鯖、圧縮対応したの?妙に早い気がするんだが
0125[email protected]NGNG
やっぱりout_htmlとその周りの関数の最適化が一番よいのかな。

あとバッファに全部読み込まず適時fseekして読み出す場合、
fseekのオーバーヘッドはどうなのかな?
0126デフォルトの名無しさんNGNG
左下の表示 readcgi が ver5 になってる。
うまくいったのか?
圧縮に対応してないクライアントだとどうなるんだ?
0127デフォルトの名無しさんNGNG
>>126
BadAccessではじかれるんじゃない?
0128UNIX板よりNGNG
>>126
切り捨て
0129デフォルトの名無しさんNGNG
ダウンロードになるんじゃない?
0130デフォルトの名無しさんNGNG
あら、切り捨てか
0131デフォルトの名無しさんNGNG
やったみたい ↓のバージョン参照
0132デフォルトの名無しさんNGNG
プログラム板住人じゃないけど
Win2kSP2+NN3.03Gold[ja]で問題なく表示されるよ

HTTP1.1でmod_gzip が対応らしい、HTTP1.1に対応していない
クライアントの場合は圧縮せずに転送する模様
0133デフォルトの名無しさんNGNG
>>132
ありがと
0134デフォルトの名無しさんNGNG
>>126 単に生でだらだら出されるだけだよ
wwwoffleで確認
0135 NGNG
微妙に軽い気がする
0136しんがりNGNG
i-mode(D503i)でモナー板の表示確認しました。
手動でls=5にしましたが(^_^;)
http://piza2.2ch.net/test/read.cgi?bbs=mona&key=998714496&ls=5&imode=true
0137デフォルトの名無しさんNGNG
はえー。凄いな皆。
013879NGNG
/*
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 の無駄を少し無くしました。
一応テストしましたが、もしかしたらバグがあるかも知れないです。
0139デフォルトの名無しさんNGNG
[2ちゃんねる閉鎖騒動関連リンク集]
http://members.home.ne.jp/f-line/2ch.htm
主な経緯は批判要望板を参照のこと。

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

…実況に懲りないモー板がやり玉に挙がらないことを願う…。
0140VBPGNGNG
よし!俺も手伝うぞ!
0141w3mNGNG
test
deb2.2
0142デフォルトの名無しさんNGNG
どうだろう。
0143デフォルトの名無しさんNGNG
0144del厨(新規)NGNG
僕に出来る事があったら言ってください!
0145デフォルトの名無しさんNGNG
>>138
someReplace込みで高速化したほうが良いかも
0146デフォルトの名無しさんNGNG
とりあえずgzip改造はほぼ上手くいった模様。
Last-Modified問題はどっちのスレで片付けるのかな?
0147デフォルトの名無しさんNGNG
その前に、 gzip -> zlib 改造が必要?
0148[email protected]NGNG
dat_readのgetLineMax周りに手を加えてみました。

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

fp = fopen(fname,"r") ;
if(!fp)
{
html_error("そんな板orスレッドないです。") ;
return 0 ;
}
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関数を使用する必要がなくなるかと思います。
0149デフォルトの名無しさんNGNG
最新のread.cgiのソースクレクレ
0150デフォルトの名無しさんNGNG
UNIX板繋がらないんですけど??
サーバ大丈夫かおい
0151デフォルトの名無しさんNGNG
ここがウニ板の避難所ですか(´Д`;)
0152デフォルトの名無しさんNGNG
ftp://210.170.209.10/incoming/
0153デフォルトの名無しさんNGNG
>>150
荒らされる模様
0154デフォルトの名無しさんNGNG
ROMが異様に多いのとキチガイが猛烈な荒らしをかけてスレが機能してません…>Unix板スレ
0155デフォルトの名無しさんNGNG
最新版はここだってよ
ftp://210.170.209.10/incoming/new_ver
0156デフォルトの名無しさんNGNG
向こうは気違いが発狂中だなあ。
0157153NGNG
○荒らされてる
×荒らされる
01581時間程ROMしてるけどNGNG
ここ10分ぐらいで猛烈にパフォーマンス悪くなったね>UNIX板
0159デフォルトの名無しさんNGNG
UNIX板が「無駄」ヴァカに荒らされてて、カキコめない。
だれか、奴を殺せるやついないか?

それから、 >>155 の場所は、あの 369 さんのところなんだから、
用のないパケットは絶対に飛ばさないように。
0160デフォルトの名無しさんNGNG
gzip改造の成果のお陰でmod_gzipの導入が検討されているらしい。
このスレッドではひとまず Ver4.21の改造を考えるべきかも。
0161デフォルトの名無しさんNGNG
荒らしてる奴のIP抜きたい所だが、ああいうのに限って
串とか通してそうだからなあ。
0162デフォルトの名無しさんNGNG
ウザいよ>Unix板住民
雑談・マ板避難所スレでやれ
0163デフォルトの名無しさんNGNG
>>162
omaegana-
0164デフォルトの名無しさんNGNG
つーか、今まで出てきた改造案をいったんまとめんか?
ある程度まとめて試験とかやったほうが効率よさそうだし
0165デフォルトの名無しさんNGNG
改造手伝っていいけど、何すりゃいい?
0166>165NGNG
好きにやって、結果をageてくれ。
0167[email protected]NGNG
すまん、ちょっと訂正>>148

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

ファイルエラー時にlineMaxが-8のままになるのを修正。
016879NGNG
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;
}
0169UNIX板のスレ氏ん�jNGNG
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等を考えると付加したほうがよさそうな気もする。
0170デフォルトの名無しさんNGNG
UNIX板より転載age

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

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

な感じで書けば、わずかだけど早くなんない?
0171デフォルトの名無しさんNGNG
今時のコンパイラなんだから、
printf(
 "2ちゃんねるだいすき<br>"
 "おれもおうえんするよ<br>"
);
にしろよ。読みやすさも違うし。
0172デフォルトの名無しさんNGNG
トリッキーの1こいこい
0173デフォルトの名無しさんNGNG
コンパイラが最適化するからおんなじと見た。
それより\nがいらね。
0174デフォルトの名無しさんNGNG
index2.html を削る方法を考えてみた。

1. age / sage しかいれないので 名前に mailto: は不要
2. スレッドの最後の
>レスを全部読む 最新レス50 レス1−100 掲示板のトップへ リロード
レスを全部読む 最新レス50 レス1−100 の3つでいいのでは?
3.ラジ@ のバナーがすべての板に張ってあるが必要なの?
0175デフォルトの名無しさんNGNG
>>170
10年前じゃあるまいし、毎回zip圧縮してるようなソフトで
そんなみみっちい最適化したところで何がどう変わるというのだ。
0176デフォルトの名無しさんNGNG
ところで、サーバー負荷の点では、明らかにCGIは劣るわけだが、
read.cgiの仕様を元にread.phpを作るとかは、
現状では無駄なのかな?
・・・俺には無理だけど
0177デフォルトの名無しさんNGNG
なぁんかオープンソースな感じでカッコいいね。
ついでにCのCGIも全部サーブレットにすればいいのに。
やっぱ、サーバの設定がかえれないとかで駄目なのかな?
0178デフォルトの名無しさんNGNG
http://server2047.virtualave.net/gorogorogoro/readres.cgi?bo=2chresque&vi=998756363
以前練習に書いたコードの一部です。レス1件ごとに読んで処理してく方式です。
ローカルで実行することを前提にしてるんで、>>半角のタグの書き換え等
無駄な処理もやってます。
デミリタが<>に変った際にやっつけ仕事で拡張したので、その部分は
カッコ悪くなってます。
0179デフォルトの名無しさんNGNG
read5.c はどこ?
つーか sourceforge かなんか使わない?
0180170NGNG
さらにネタ出し。
INPUTタグのTYPE=textは省略可能だったと思うが。
0181デフォルトの名無しさんNGNG
>>173
>コンパイラが最適化するからおんなじと見た。
確認したのか?コンパイラがprintfを特別扱いするとはとても思えん。

>175
一日100万以上のヒットがあるから
ちょっとでも高速化することでそれなりに負荷が減る。
0182デフォルトの名無しさん NGNG
「名前:」「投稿日:」がいらない。
そんなの説明されなくてもわかるし。
0183名無しNGNG
>>182 zipが削るでしょ
0184デフォルトの名無しさんNGNG
細かいとこやる前に、大きな流れをまず確定させないか?
関数単位にやってもその関数が無くなるかもしれんし。
0185180NGNG
・属性に不要な¥”が多すぎる。
・大文字と小文字の混在は圧縮率の低下を招く。
・<FONT FACE=***>は要らん。
・SCRIPTの LANGUAGE=JavaScript も要らん。
・TABLEの BORDER=1 は、単に BORDER でいいはず。

gzipうんぬんも大切だが、HTML自体がスリムアップできてない。
たとえ1バイトでも馬鹿にすることなかれ。
0186デフォルトの名無しさんNGNG
>184
トップダウン・ボトムアップの両方からやりましょ。
0187デフォルトの名無しさんNGNG
phpはだめなの?
0188デフォルトの名無しさん NGNG
>>184
プロファイリングが大事だよね
0189デフォルトの名無しさんNGNG
htmlのタグやレイアウトの話はweb系の板でやらないか?
0190デフォルトの名無しさんNGNG
>>189
そうしましょう
0191デフォルトの名無しさんNGNG
まだ、ざっと見だが、
・freadはmmapで置き換え(既出)
・zlib使えるなら、popenでgzipに渡すよりzlib使ったほうがプロセス起動がいらない。
と思った。
手元にLinuxないからやりづらい。
0192デフォルトの名無しさんNGNG
gzip入るなら恐らく無意味だけど
サーバ側で<html>内圧縮して JavaScriptで展開ってできんかな?
0193デフォルトの名無しさんNGNG
まずは、スレ全部をbufに読み込んで処理してる部分の是非を考えましょう。
0194340NGNG
とりあえずprintfはなんとかしないとな。
ちょっと辞書でしらべてみる。
0195デフォルトの名無しさんNGNG
>>189
どこのスレでやってるの?
0196デフォルトの名無しさんNGNG
あと、ソースを見つけられない人のためにソースの位置も欲しい。
0197デフォルトの名無しさんNGNG
スキルの高い方知恵を貸してください
http://natto.2ch.net/test/read.cgi?bbs=hp&key=998741961
htmlのタグ、レイアウトは↑に行きましょう。
0198デフォルトの名無しさんNGNG
>192
いっそのことCSVだかdat渡してクライアントで全部展開するとか
0199デフォルトの名無しさんNGNG
>>152のftp鯖っておちたのか?
それともただたんにアノニにパーミッションがないだけか?
0200デフォルトの名無しさんNGNG
index2.html育成するとき、改行コードいれるのやめ。
ソースみずらくなってもかまわんやろ?
0201_NGNG
>>192
ジャバスクリプト自体(セキュリティーの関係上)嫌ってる人がいるらしいから無理っぽいかな
0202デフォルトの名無しさんNGNG
>>200
それは別の話。とりあえずはread.cgiに絞る。
0203デフォルトの名無しさんNGNG
>>189
これ以上乱立するのはイヤだからここでいいよ。
つーかまぁ全体的にWEBプロ板の話題なんだけどな(w
0204デフォルトの名無しさんNGNG
>>199
サーバのアドレスが変わってます。
新しいアドレスはここ。

ftp://210.170.134.228/incoming/
0205デフォルトの名無しさんNGNG
>193
mmap使えば、それを考える必要はないです。(仮想メモリ消費は増えるけどたいしたことないでしょう)
mmapでファイルを仮想メモリに割り当てれば、メモリ間コピーもないし、ディスクからの
実際の読み込みも、オンデマンドで行われます。
0206デフォルトの名無しさんNGNG
JAVAScriptは全部頭に埋め込んであるが
外部ファイルにしてやれば、少しはましになると思ふ
0207デフォルトの名無しさんNGNG
>>202
失敬
0208206NGNG
スレ違いだった・・・スマソ
0209180NGNG
>>189
分かったが、ネタ切れ。
一応漏れはプログラマーだからC言語の話にする。
ボトムアップでな。

read4.cのint hrefStop(char x)、
テーブル使えば若干早くなるんじゃない?
転送量的にはどうでもいいが。
0210デフォルトの名無しさんNGNG
とりあえず過去ログの改造ネタとかまとめておかない?
改造する箇所がいろいろかぶりまくったらアレだし。
0211ななしNGNG
曜日表示をなくそうぜ。
一番いらない。
転送量の削減幅も小さいけれど・・・。
0212デフォルトの名無しさん NGNG
技術的には改良できても、ここまで2ちゃんが巨大化してしまった以上
やはり管理者への負担はあまり変わらないような気がする。
最終的には何らの制度や規制を掛けるしかないのかもしれないが、
それだと、2ちゃん発足当時の基本的意義がなくなってしまうし。
ネットが一般化してしまった今となっては、どうすることもできないの
かもしれんね。横レスすんまそ
0213sageNGNG
関数の呼び出しツリーを作るプログラムが今手元に無い…
どなたかアップしてくれませんか…
0214デフォルトの名無しさんNGNG
css + <H3>タグとか使えばテーブルタグなくしても見栄えは確保できるね
0215デフォルトの名無しさんNGNG
>>204
ソースか。サンクス。
んで、HTMLは動作すれば文法的には正しくなくてもOKという方針で行くの?
例えば、HEIGHT="1" ではなくて HEIGHT=1 で行く?
0216デフォルトの名無しさんNGNG
>>214
CSSは転送量が増えますんで、できればやめて欲しいんですが。
0217デフォルトの名無しさんNGNG
cssのスタイル定義ファイルを呼び出す負荷ってのは、
どのくらいなのでしょうか。
Webページを表示させる毎にジワジワリソースを
食い潰すのでしょうか?
0218デフォルトの名無しさん NGNG
http://www.goice.co.jp/member/mo/amuse/javascript/expert/
0219デフォルトの名無しさんNGNG
根本的にはcgiを使用しなければいい
0220名無しさん || dieNGNG
HTMLデザインはこっちに移動した方が良いと思う。
こっちは read.cgi の処理の最適化に専念。

スキルの高い方知恵を貸してください
http://natto.2ch.net/test/read.cgi?bbs=hp&key=998741961
0221MiMNGNG
>>215
それで良いと思います。

結局、「"」にしても1バイト食ってるわけです。
そんな感じで全ての無駄を省きますと、
かなり軽くなるわけです。
それは、転送量も減りますしユーザーのDLも早いわけですね。
ですから、そういった無駄を省きましょう。
0222デフォルトの名無しさんNGNG
いまHTMLのソース見たら改行削除されてるみたい
全体で10行になってた
0223デフォルトの名無しさんNGNG
ソースを見たのだけど、無駄多すぎ。
無駄な処理が多い事で結果的に待ちパケットを増やす結果になっていると思う。

access logはapacheにまかせようね(w
0224デフォルトの名無しさんNGNG
最新版のread.cgiのソースはどっかにミラーしときませんか?
持ってる人お願いします。

スキルの高い方知恵を貸してください
http://natto.2ch.net/test/read.cgi?bbs=hp&key=998741961
htmlはこっち。
0225デフォルトの名無しさんNGNG
>>221
了解しました。あと、IEとNNで動作するものがデフォルトでいいですか?
例として、<TH>タグで囲むと太字にして中心寄せとなる、とか。

引っ越すんですか?
0226ヨーNGNG
書き込むのフォームを別ウィンドウにする。

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

どうでしょうか?
0227デフォルトの名無しさんNGNG
ちこっとみたけど、全部読み込んだ bigbufferをいじくってるねえ。
0を '*' に変えたり。
ここら辺は knowhowから出たものっぽいから変えたくなさそげ。
そんなん片付けられれば、mmap対応なんて簡単そうだが>>205
0228デフォルトの名無しさんNGNG
>201
もともとJavaScript使ってるんだから、JavaScriptは問題ないんじゃない?
デフォルトの名前の展開、日時・曜日の算出、リンク貼りなんかは任せてもいいと思う。

JavaScript, CSSは外部ファイル化してサーバに置いて
ブラウザにキャッシュさせるってのは無理なの?
0229デフォルトの名無しさんNGNG
FastCGI化は無理?
サーバーにモジュール組み込む必要はあるけど,リクエスト毎の
プロセス起動が無くなるので負荷軽減には貢献しそう.
http://www.fastcgi.com/
0230デフォルトの名無しさんNGNG
みんなで力を合わせれ!

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を張ってください。
馬鹿が多く来て話になりません。
0231デフォルトの名無しさんNGNG
>>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


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

3のout_htmlでの終了判定を別のもの(行の長さのテーブル作るとか)に置き換えれば
BigBufferはreadonlyでよさそう。
0233デフォルトの名無しさんNGNG
>>229
apachのカスタマイズは出来ないって言ってたから無理でしょ。
0234デフォルトの名無しさんNGNG
あまりハードコーディングな領域に踏み込むのはアレかと思うのねん。
今のところ問題は転送量で、CGIの負荷ではないのだから
趣味でリファクタリングするにしても、
コードを最適化するのではなく、アルゴリズムを最適化するのら。

HTMLのちまちました最適化とかも、
zip圧縮という大戦略の結果が出てからでも遅くないと思うけど、どうよ?
0235デフォルトの名無しさんNGNG
>234
そういう人的リソースの無駄を気にしないでいられるのが
2ch&オープンソースのいいところ(藁
0236デフォルトの名無しさんNGNG
つーかzip圧縮しても負荷的にはOKみたいね。
・・俺らのしてる事って無駄かも(w
0237デフォルトの名無しさんNGNG
それでも最適化しちゃう漏れ
0238デフォルトの名無しさんNGNG
無駄じゃないさ
0239デフォルトの名無しさんNGNG
なぜコードを最適化するのですか?

「……そこにコードがあるから。」
0240デフォルトの名無しさんNGNG
速くて困る事は無いし。
0241デフォルトの名無しさんNGNG
速報板等のアクセス数の多いところでは効果がある…でしょう。
0242aNGNG
クライアント環境の均一化を図るためにも、かちゅーしゃのgzip対応を図るとかしないとダメかな・・・
0243デフォルトの名無しさんNGNG
read.cgi ver5.0xのソース
ftp://210.170.217.177/incoming/2ch-read-current/read5.c
0244デフォルトの名無しさんNGNG
BigBufferは必要なの?
0245デフォルトの名無しさんNGNG
みんなで力を合わせれ!

このスレは
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を張ってください。
馬鹿が多く来て話になりません。
0246デフォルトの名無しさんNGNG
Server: Apache/1.3.6 (Unix) PHP/4.0.3pl1 mod_ssl/2.3.6 OpenSSL/0.9.3a
何気にPHP入ってるんで、導入検討中のmod_gzipと併用できればかなりよさげだ。
0247デフォルトの名無しさんNGNG
read.cgiが起動してる間のファイルに書き込みとかは問題になるよね?<mmap
結構長い時間ロックしなきゃならん気がするけど大丈夫?
0248デフォルトの名無しさんNGNG
>>242
http://yasai.2ch.net/test/read.cgi?bbs=win&key=994101139&st=784&to=784&nofirst=true
どう?
0249デフォルトの名無しさんNGNG
現在同一サーバにあるCSSとロゴ・バナー・スクリプトを別の少量無料サーバに置くってのはどう?
オーバーヘッドは増えるけど転送量は確実に減る。
0250デフォルトの名無しさんNGNG
何だか今日は、ひろゆきに
抱かれてもいいと思ったよ
0251デフォルトの名無しさんNGNG
ここのプログラマ思ってたより頭悪いな。
0252369 ◆3XTuRnAc NGNG
動作テストさせてください
0253369 ◆3XTuRnAc NGNG
もうひとつ書き込みテストです。
0254デフォルトの名無しさんNGNG
モナ板めちゃ早いです。
0255デフォルトの名無しさんNGNG
read.cgi が ver5.01 になってる
0256デフォルトの名無しさんNGNG
うおっ、リロード超速ぇ…
0257デフォルトの名無しさんNGNG
>>251
今回はUNIX板に敗北を認めます。
0258369 ◆3XTuRnAc NGNG
>256
ていうか、新しい書き込みがないときはReloadはネットワークではなく
キャッシュから読みこむ改造になっていますでしょうか?
書き込みやリロードなどのテストお願いします。
0259デフォルトの名無しさんNGNG
スキルのレベルで

gzip 圧縮や Last-Modified 対応の話題
↓
CGI の無駄なコードの省略など の話題
↓
無駄なタグの消去やHTMLの修正などの話題
↓
批判要望板の転送量スレ
↓
応援・グチ
0260デフォルトの名無しさんNGNG
まあ、全部のブラウザがgzipに対応しているわけじゃないしね。
read.cgi Ver4.22や4.23で導入された地道な転送量削減も、
Encoding:gzipに対応していないUAの事を考えれば、無駄ではないはず。
0261デフォルトの名無しさんNGNG
つーか職人ほとんど向こうに取られてるしな・・
Web板の方にレス数追い抜かれてるし・・
0262デフォルトの名無しさんNGNG
みんなで力を合わせれ!

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!)
0263デフォルトの名無しさんNGNG
>>258
キャッシュ読んでますね。ちゃんと304返してきてますYO!
0264デフォルトの名無しさんNGNG
ま、議論はすれども実際の改造・最適化はあんまししてなかったからね。
0265デフォルトの名無しさんNGNG
>>258
あい、キャッシュちゃんと効いとります。
書き込みあったら再読み込みされるのも確認。
Win2kSP2&IE5.5SP2でし。
0266デフォルトの名無しさんNGNG
テスト
0267デフォルトの名無しさんNGNG
とりあえず、今まででたアイデアをまとめてみた。

>>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関数の最適化

いまのところ、こんなもん?
こいつらをうまくまとめればいいのか?
0268デフォルトの名無しさんNGNG
とりあえず当面の問題は、圧縮とLast-Modifiedで回避できたと見て
良いのかな。
0269デフォルトの名無しさんNGNG
なんかweb板でjavascriptんとこはこっちでやるみたいな事
言ってんだけどどうする?
0270デフォルトの名無しさんNGNG
>>269
えー・・
0271mahmNGNG
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;
}
027279NGNG
>>267
someReplace 関数と doReplace 関数が統合できたと思ったんですが、
someReplace 以外にも doReplace をコールしているところが
あるので、doReplace は消せません。
結局2つの関数を用意する必要があるみたいです。
0273デフォルトの名無しさんNGNG
とりあえず、外から呼ばれない関数、特に一回しか呼ばれない奴はstaticにして、コンパイラにインラインさせる。
ちゃんとオプティマイズしてコンパイルする。出来たバイナリはstripする。

あと、read.cgiではないが、書きこんだときトップページにジャンプするが、
それをやめて、「書きこみました。掲示板に戻るにはここをクリック」程度のメッセージを
表示するにとどめて、index2.htmlの読み込みを減らす。
0274デフォルトの名無しさんNGNG
doReplaceと改良版someReplace両方残せばいいのでは
0275デフォルトの名無しさんNGNG
>>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;
}
}
これでも元のプログラムと等価じゃないっす
0276デフォルトの名無しさんNGNG
>>274
両方改良すれば?
0277デフォルトの名無しさんNGNG
「最新レス100を表示」を押したときの挙動が変?
レスが全部表示されないときがあるんだけど、どう?
「レスを全部表示」と比べてみて
0278デフォルトの名無しさんNGNG
今ボトルネックになってるとこはどこ?
以前公開した時はファイルの読み書きだったけど。
0279277NGNG
ゴメン、他の擦れに解決法出てた。


IE だったら、キャッシュを強く優先する設定になってるからじゃないかな。
[ツール] - [インターネット オプション] - [インターネット一時ファイル]
の [設定...] ボタンを押して、 [保存されたページの新しいバージョンの
確認] のチェックを「ページを表示するたびに確認する」にしてみて
ください
0280>278NGNG
転送バイトあたりにかかる「お金」。
なのでできるだけデータ量を抑えたい。
CPU、メモリなどのリソースの問題ではないみたい。
0281デフォルトの名無しさんNGNG
>>170
そもそもprintf系って標準関数の中では激重な部類に入るので、
可変引数ないところはputsにするとか。

ま、それでもzip圧縮とか平気でやってしまってるCGIでは
違いはまったく分からん思います。せいぜい0.1%くらい?(w
0282デフォルトの名無しさんNGNG
2chが潰れなっかたのはUNIX板の在日同朋のおかげニダ
2chネラーは感謝汁
0283デフォルトの名無しさんNGNG
>>280
ここは圧縮にかかるコストが新たに加わったから、サーバの負荷を
減らすためにread.cgiの最適化をするスレでしょ。
それを踏まえて聞いたんだけど。
0284デフォルトの名無しさんNGNG
CGIの改良ではないが、転送量を減らす方法としてこういう方法は使えないか?

index2.htmlをindex.cgiというCGIに飛ばすページに変更する。
昔通りのindex2.htmlを作らずに、index.gz等の名前でGZIPしたデータを作る。
index.cgiはindex.gzをGZIP圧縮プロトコルで転送する。
こうすれば、apacheはそのままで、転送毎の圧縮を避けつつ、indexを圧縮転送できる。
0285>283NGNG
文字列・バッファ処理全般。ちょっとみればわかるけどとにかくコードの質が低い。
0286デフォルトの名無しさんNGNG
向こうは一段落着いたみたいですね。
0287デフォルトの名無しさんNGNG
>ここは圧縮にかかるコストが新たに加わったから、サーバの負荷を
>減らすためにread.cgiの最適化をするスレでしょ。

そ、そうだったのか。
0288デフォルトの名無しさんNGNG
こちらに移ってまいりました
0289デフォルトの名無しさんNGNG
つーかread.cgiというネタをみんなで弄るスレです。
0290デフォルトの名無しさんNGNG
画面仕様は据え置きで全面書き換え目指した方が良くね?
今のソースはどうかしらんが、大本の時のread4.cなんて
意味のわからんヘッダ付いてたし、
セミコロンの前に何故かタブ入ってるし。
0291デフォルトの名無しさんNGNG
>>267にまとまってるみたいですね。
0292デフォルトの名無しさんNGNG
そろそろ、こっちに移動するみたいだよ
0293デフォルトの名無しさんNGNG
とりあえず、今の課題は「セキュリティホールだけつぶしてしまおう」ということで、こちらに移ってきました@UNIX板
よろしくお願いします。
0294デフォルトの名無しさんNGNG
リロードの回数を減らす仕組み。
1回のリロードで流れるデータの量を減らす方法。
について考えた方が良くない?

もちろんコードの最適化も必要だけど
0295デフォルトの名無しさんNGNG
状況によって(将来転送量が大きくなったら)制限かけられる仕様が欲しくない?
0296デフォルトの名無しさんNGNG
スレ分けない?
ネタ系、セキュリティホール系、最適化系とか。
0297デフォルトの名無しさんNGNG
かぶったしかも上げてしまった。ごめん。
0298デフォルトの名無しさんNGNG
あ、こっちに移動なん?
ls=付いてないとデフォルトで最新50のみ表示、とかはどーなったの?
転送量減ると思うんだけど・・
0299デフォルトの名無しさんNGNG
他のCGIも見直したいんだが、大昔のソースしか持ってないからな〜
0300デフォルトの名無しさんNGNG
じゃあdatファイルの構造から変えたほうが
いいかもね。
0301デフォルトの名無しさんNGNG
49 名前:名無し 投稿日:2001/08/26(日) 03:58
 read.cgi を全面書き換えという案が浮上してます。
 いそいでプログラム板に結集して下さい。

おいおいすごい重責になってきたぞ(w
0302デフォルトの名無しさんNGNG
最新版
ftp://210.170.217.35/incoming/perler/read4.c.5
0303デフォルトの名無しさんNGNG
とりあえず<>使うのやめない? tabで良いじゃん。
0304デフォルトの名無しさんNGNG
read.cgi以外のソースはUpされてないのでしょうか。
ほかのCGIが無いと2ちゃんねる全体の機構が把握できないので。
0305デフォルトの名無しさんNGNG
大元のプログラムとデザインは分離しません?
そのほうが効率的だと思います
0306デフォルトの名無しさんNGNG
>>302
こっち
ftp://210.170.217.35/incoming/perler/read4-blank.c.25
0307302NGNG
>>306
ごめんなさい&ありがとう
0308デフォルトの名無しさんNGNG
みんなで力を合わせれ!

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!)
0309デフォルトの名無しさんNGNG
>>305
やっぱformのからみとかでjavascriptんとこはweb板のがいーよね?
じゃそーゆー風に頼んできていい?
0310デフォルトの名無しさんNGNG
>>284でうまく動作すれば当座の問題は解決するような気がする
0311akiNGNG
こっちにも書いておこう。ミラー。5分おき更新。
http://www.gedoh.org/aki/2ch/210.170.217.35/incoming/perler/
0312デフォルトの名無しさんNGNG
いや、read.cgi しかいじれないんだってば・・
0313デフォルトの名無しさんNGNG
>>309
いいよ
0314デフォルトの名無しさんNGNG
こちらの方は完全にソースを見直して最適化する方向のようですので、
とりあえず、現行のcgiでセキュリティホールをつぶす作業は、引き続きUNIX板で行います。
0315デフォルトの名無しさんNGNG
>>309
http://natto.2ch.net/test/read.cgi?bbs=hp&key=998741961
0316デフォルトの名無しさんNGNG
このスレ用にアップしました。
ftp://210.170.217.35/incoming/html/
0317[email protected]NGNG
>>275
すまん。ちょっといいかげんに作りすぎた。
修正THX
0318デフォルトの名無しさんNGNG
UNIX板とこの板で、開発Verを変えた方がいいですね。
混乱の元ですし。
0319名無しさんNGNG
みんなで力を合わせれ!

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!)
0320UNIX板住人NGNG
ちょっとお邪魔します
何かPHPとかJservにすれば CGIのように別プロセスを起動しないから
サーバ負荷が軽減されるとかいう話が出てるようですが 実際のところ
PerlのCGIならそうかも知れませんが 最初からバイナリコードに
なっているCのCGIの方が PHPやJservより軽いはずですが

あえて別プロセス起動をしないというメリットを追求したいのなら
  ・ Apacheモジュールの形で実装する
  ・ Apache自体使うのをやめて2chの掲示板システムを
   アプリケーションサーバの形で作ってしまう
   マルチスレッドで動くようにすれば相当軽くなる
の方がいいのかも知れません 手間は相当かかりますが
0321316NGNG
スマソ。直す所があるので、一時的に消しました。
0322デフォルトの名無しさんNGNG
スキルの高い方知恵を貸してください @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>は仕様が決定後に検討
0323名無しさんNGNG
>>320
プロセス負荷はCでもかかるよ。
PHPやJAVAはサーバ屋さん側の意向で使えないんだと聞いている。
0324デフォルトの名無しさんNGNG
2ちゃん鯖でPHPは使えるとどこかで見かけたような・・・
まぁCの方向でいいだろうと思うが
0325316NGNG
再アップしました。この板のVerは10.xです。
0326デフォルトの名無しさんNGNG
フリーのwikiなサイトってどっかないのかな?
こういう作業はwikiでやるのがよさげなんだけど。
0327デフォルトの名無しさんNGNG
>>325
サンクス
そのsourceを元に手を加えていきましょう
0328デフォルトの名無しさんNGNG
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;
}
0329名無しさんNGNG
PHPとか、Apache moduleとかの話になると、
サーバ屋さんの意向を確認した方がいいと思う。
mod_gzipは使えないとかUNIX板でやりとりがあったようだし。
0330デフォルトの名無しさんNGNG
>mod_gzipは使えないとかUNIX板でやりとりがあったようだし。

来週末あたりに結論が出るらしい。使える可能性が高いようだ。
0331 NGNG
>>329
mod_gzipはすでにOKになったはず
0332331NGNG
あれ?まだ決定じゃなかったのか・・・スマソ。
0333デフォルトの名無しさんNGNG
piza2鯖にはPHP4.0.3pl1が入っています。
だから、PHPが使えないって事はないと思います。
0334デフォルトの名無しさんNGNG
つーかPHP使えるかどうかはともかくCでいいんじゃないの
0335デフォルトの名無しさんNGNG
サーバ負荷はとりあえず今は気にしないで良いんじゃなかった?
0336329 NGNG
>>330
うん、ごめん。
えーと、オレが言いたかったのは、そのへんの話は
みんなサーバ屋さんのお許しをもらわなきゃならない、ってこと。
ここで「これがいい」って決めたあとで、
サーバ屋さんに一蹴されちゃうのも悲しいじゃん。
0337akiNGNG
>>326
試しにyukiwiki置いてみました。ご自由に。
http://www.gedoh.org/aki/2ch/wiki/

実は自分ではあまり使ったことが無いんですが……。
0338316NGNG
read4-blank.c.25は問題があるそうなので、read5.01.02.cに差し替えました。
0339デフォルトの名無しさんNGNG
>336
いや。だから、鯖屋との相談の結果の話なの。
0340309NGNG
なんか無視されてたっぽいけどjavascriptんとこは向こうに頼んできた。
0341名無しNGNG
PHPとCではどっちが負荷が少ないの?
0342デフォルトの名無しさんNGNG
>>328
>strstrがどんな仕組みで動いているかしらないので、本当に速いのかどうか・・。

BSDのソースとか見ればいいじゃん。
0343名無しさん || dieNGNG
>340
JavaScriptをどうするって話?
もっと削れと?
0344デフォルトの名無しさんNGNG
>>341
内容による。
0345デフォルトの名無しさんNGNG
>>338
piza2鯖に反映されるらしい
http://cocoa.2ch.net/test/read.cgi?bbs=unix&key=998764722&st=120&to=124&nofirst=true
0346309NGNG
>>343
コードの最適化とかそんなん。
変数名縮めるとかHEADにまとめるとか。
0347デフォルトの名無しさんNGNG
>>346
Javascriptを別ファイル化するって話は出てないんですか?
0348デフォルトの名無しさんNGNG
>>347
で?
どこに置くの?
0349名無しさん || dieNGNG
>>346
了解。

>>347
サイズが小さいから転送ファイル数が増える方が痛い。
0350デフォルトの名無しさんNGNG
>>348
鯖
0351326NGNG
>>337
すばらしー。とりあえずちょっとページ・リンクを追加しました。
今スパゲティー茹でてるんでもうちょっとしたら整理します。
0352デフォルトの名無しさんNGNG
>>333
PHPが使えても、apacheのmoduleとして使えないと
perlよりむちゃ遅いよ。
0353デフォルトの名無しさん NGNG
0354309NGNG
>>347
あーなんかCSSとjavascriptを別ファイルにするとかも言ってたような・・
ごめん向こうあんま読んでない(w
とりあえずprintfで吐き出す定型内容についてはこっちは気にしないって事で。
0355デフォルトの名無しさんNGNG
read.cgiが5.02になったみたい
0356素人NGNG
夏休みが終われば転送量が自然に減るような気がしますが・・
0357デフォルトの名無しさんNGNG
>>356
その案採用
0358デフォルトの名無しさんNGNG
夜勤さんの書きこみを見る限り、
6月か7月あたりからやばそうだったらしいが。
0359デフォルトの名無しさんNGNG
>>356
そう思うけど、実は減ってないんだってさ。
0360デフォルトの名無しさんNGNG
test
0361デフォルトの名無しさんNGNG
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アドレス変わったらごめんなさい。
メール頂ければ直せるかも。
0362名無しさん@ミポリソ@UNIX板NGNG
あと思ったのは 弾くブラウザ等の設定項目とか挿入バナーなんかは
ハードコーディンクより設定ファイルからの読み込みにした方が
よさげでは? とか思ったり
0363デフォルトの名無しさんNGNG
今回の圧縮の効果
・圧縮効果1/16
・圧縮対応ブラウザが70%
であれば、70%*1/16+1*30%=34%

Last-modifiedの効果も全体に利くとしても、目標の1/3にギリギリ
達したに過ぎない。HTMLのスリムかも含め、ゴリゴリ推し進める
ことが必要だ……
0364デフォルトの名無しさんNGNG
>>362
確かに
0365デフォルトの名無しさんNGNG
よし、まず中高生の夏休みを短縮してもらおう!!>>356
0366素人NGNG
俺が2ちゃんをみんなに広めたせいでこんなことに。。
ごめんなさーい(;´Д‘)アア
0367デフォルトの名無しさんNGNG
>・圧縮効果1/16

オヒオヒ
0368デフォルトの名無しさんNGNG


         お祭りワッショイ!!
     \\  お祭りワッショイ!! //
 +   + \\ お祭りワッショイ!!/+
                            +
.   +   /■\  /■\  /■\  +
      ( ´∀`∩(´∀`∩)( ´ー`)
 +  (( (つ   ノ(つ  丿(つ  つ ))  +
       ヽ  ( ノ ( ヽノ  ) ) )
       (_)し' し(_) (_)_)
0369デフォルトの名無しさんNGNG
>>367
1/16 という数字はAA板の場合の結果のようです。
0370デフォルトの名無しさんNGNG
>>367
どうやら通常では1/3前後みたいだね。
0371デフォルトの名無しさんNGNG
>>369
特殊な状況でしょ、1/16って。
それを全体に当てはめるのは、どうかと思ったわけ。
0372デフォルトの名無しさんNGNG
ところで、いわゆる「exit()前のfree()」っていらないんじゃないの。
0373_NGNG
unix板で隠れているがありがとう。
0374デフォルトの名無しさんNGNG
>>362
そんなにしょっちゅう変更するもんではないので、埋め込み文字列で
良いんじゃない?
0375デフォルトの名無しさんNGNG
通常で1/3だったら、まだまだだめじゃん……
ようやく50%程度になったってことか。
でも、すごいことだけどさ。
0376素人NGNG
どんなに頑張ってみても、ひろゆきが氏んだら閉鎖するんだろうな
0377デフォルトの名無しさんNGNG
>>374
確かに

それよりも、読み込みでのオーバーヘッドの方が心配
0378デフォルトの名無しさんNGNG
>>376
マンガ家が死んでもアシが絵をまねて続くこともあるから、どうだろう
0379もうすぐ出番ですぞ!NGNG
第1段階はUNIX板の有志の手でほぼ成功しました。
次は貴方方の番です、頑張って成功させてください。
0380デフォルトの名無しさんNGNG
ソースはどれを使えば良いの?
read10.01.02.c ってやつ?
0381デフォルトの名無しさんNGNG
gprofでreadとwriteの回数が最小になるようにしようぜ。
0382デフォルトの名無しさんNGNG
ソースに indent かけたくなる…
0383親の威を借りる狐 ◆v0Ec25uo NGNG
2ちゃん浄化策として、100落ちするあいだにユニークレスが
10つかなかったスレッドは自動削除するような機能を追加してくれ(藁
0384デフォルトの名無しさんNGNG
>>382の表示がむちゃくちゃになってないか?
8/26(5) 30:00 って、、、
0385デフォルトの名無しさんNGNG
ごめんここ職業プログラマ多いから
今の時間は・・きつい・・・
0386デフォルトの名無しさんNGNG
>>382
GNU スタイルでよろしく。
0387親の威を借りる狐 ◆v0Ec25uo NGNG
たしかに日付表示がむちゃくちゃだ(藁
0388382NGNG
>>384
> >>382の表示がむちゃくちゃになってないか?
> 8/26(5) 30:00 って、、、
うぉ、なんでやろ。
navi2ch からのせいかな?
0389デフォルトの名無しさんNGNG
なんか時間がえらいことになってるぞ(笑

>382
かけていいでしょ。
0390デフォルトの名無しさんNGNG
曜日か
0391デフォルトの名無しさんNGNG
曜日の所に時間が、時間のところに分が、表示されてる模様。
0392デフォルトの名無しさんNGNG
送信データ量が1/3になったとして、ネットワークへの
負荷はどの程度変化すると考えればよいのでしょうか?
1/3より小さくなる?大きくなる?
0393デフォルトの名無しさんNGNG
>>392
大きくなる
HTTP/1.0 の人間は無圧縮で送られる
0394デフォルトの名無しさんNGNG
ってあれ?曜日書くのとかってbbs.cgiじゃないの?
そっちもいじってんの?
0395デフォルトの名無しさんNGNG
>>394
別働で弄っているっぽい
0396布団圧縮袋さんNGNG
2001年8月26日、5曜日、39時w
0397392NGNG
>>393
あ、基本的に全てのマシンにたいして圧縮されたデータを
送ると仮定した場合です。で、ユーザ数が現行のまま。
ユーザの取る行動によって負荷のかかり方が変化すると
思いまして。
0398デフォルトの名無しさんNGNG
Apacheはブラウザで中止やリロードされるとCGIにSIGPIPEとか
送ってきたり、SIGALRM/SIGHUP/SIGTERM/SIGKILLとか
気になります。書き込み途中で殺されないか。
Signal Handlerも必要or不要?
現在は入ってなかったはず。
0399デフォルトの名無しさんNGNG
>>397
WWW サーバが受信するデータ量が一定で、
WWW サーバが送信するデータ量が 1/3 で一定なら、
ネットワークへの負荷は受信するリクエスト + 1/3 で 1/3 より大きいだろ

ユーザの取る行動がどう変わるかの定義は何
0400デフォルトの名無しさんNGNG
ひとつ提案。
サーバ負荷を減らすために、read.cgi をリクエストあるたびに
プロセスを起こす方式じゃなくて、 http://www.fastcgi.com を使ったら
どうっすか?。これなら、プロセス起動しっぱなしなんで、
プロセス起動の負荷が減ると思いますが。。。
0401デフォルトの名無しさんNGNG
2ちゃんねるは滅びぬ。
何度でも甦るさ。
わかるか、厨房の力こそ、人類の夢だからだ。
次もスレを立てる。
ひざまずけ、レスを付けろ!
荒らしから2chを取り戻せ!

                              ―― ̄ ̄ ̄ ̄\
                            /           \
                             |      人     |
                            |   //|/|/  \    \
                             ||\|へ  ー― \    |
                                || ̄|-| ̄ ̄|― L  |
_                              | ̄| ̄ ̄    | /
| |\_____                      | ___   / /
(●)__    |DΞ)|                    |       /|/
  ̄  \\―|DΞ)|_                     |___/  |
      \\_|DΞ)ノ)     __―――――――|`―_   _|__
    ( ̄| | D|  |◇ノ ̄ ̄ ̄ ̄        |    \   ̄|_//   ―_
     ( ̄ ̄  ̄ ̄) |               \   / \ / \\_ /   ―-
      (  ̄ ̄ ̄)| |                \/    / | \\/     ヽ
      (_ ̄ ̄) / |                /    /  |    \      |
       |_| ̄ ̄//                 \    /    |      |      |
       | |_//                   \ |__ |      |       |
       |__/__                   \/ /  ̄|つ   /    |   |
             ̄ ̄ ̄ ̄ ̄ ̄ ̄| ̄ ̄/     //    し― ̄      |   |
0402デフォルトの名無しさんNGNG
>>392
「ネットワークの負荷」がなにを指しているかわかんない。
転送サイズ以外の負荷要因とはなんのこと言ってる?

転送時間短縮→ブラウザ表示高速化→リロード回数増はありえるかもだけど。
その回答得てどうすんの?
0403デフォルトの名無しさんNGNG
>>400
そこまでサーバ弄るのを許可してくれるのか……?
0404デフォルトの名無しさんNGNG
>>398
プロセスが死ぬんだから結果オーライでいーんじゃないの?
0405デフォルトの名無しさんNGNG
>>402
どんなIPパケット出すかによって違うぞ
0406392NGNG
>>402
まさしく、そのリクエスト増のタイミングがちょっと
気になるんです。
その事がトラヒックに与える影響が無視できるんなら
それでかまわんし、何か面白い事が起きるんなら、
それはそれでやっぱり面白いだろう、と。
0407369 ◆3XTuRnAc NGNG
えと、UNIX板において、「バージョン番号の混乱」が指摘されています。
今のところUNIX板においての最新は「read10.01.04.c」になっていますが、
こちらの方のソースってどのあたりのバージョンを元にしてますか?

・・・やっぱりフルスクラッチとか・・・。
0408デフォルトの名無しさんNGNG
>>404
いや、怖いのはdatの破壊。
書き込み途中で死なれると大抵は不正なdatになる。
ま、変更なしならそれでいいか。
0409デフォルトの名無しさんNGNG
今のコードってかなり可読性低いよね・・・・・・
0410316NGNG
>>407
UNIX板の「read5.01.xx.c」に+5しています。
混乱しないようにこちらは「read10.01.xx.c」にしたのですが。
0411がいしゅつですがNGNG
2ちゃんねるWikiを開設しました。
http://www.gedoh.org/aki/2ch/wiki/yukiwiki.cgi?TopPage

このサイトは一度書き込んだレスを後から修正したりできるので
修正案などをまとめるための資料置き場として使ってください。
0412デフォルトの名無しさんNGNG
とりあえず、タイムスタンプがなおった?
0413デフォルトの名無しさんNGNG
>>406
ふつうに考えて非圧縮状態より負荷高くなることはないだろう。
lastmodifyチェックも入っているわけだし。

そのへんは本格運用後にプロファイルされるんではないかなあ。
0414デフォルトの名無しさんNGNG
>>407
漏れは、
read5.01-amppatch.c
read4-blank.c.25
read4.c
の順かな。
ただまだfeed-backしてないから困ってないが。
feed時には、read4-blank.c.25の差分を考えている。
0415デフォルトの名無しさんNGNG
>408
以前手元の環境(Linux+Apache)で調べたときには、特に何もSignalは
送られてこなかったと思う。ここの鯖も同じであれば、中止ボタンが
押されたことによってdatが壊れるってことは無いんじゃないかな。
実際にここの鯖で検証してみないとなんとも言えないけど。
0416369 ◆3XTuRnAc NGNG
ということで、うちのサーバーではそろそろ
作業ベースとして怪しくなってきたと思います。
あとは、Wikiページにお任せしたいのですがどうでしょうか?
0417デフォルトの名無しさんNGNG
>>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なのできみんとこと同じなら平気なはず。
0418411NGNG
>416
Wikiはテキスト貼るだけでファイルは置けないんですがどうしましょう?
現状ソースの中身を全部コピペするか別サーバに移転するしかないです。
0419デフォルトの名無しさんNGNG
いまさらだが、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ね。
----
0420ななしさん@通信技術NGNG
>>415
openする前に、データベースを格納したファイルから、PIDから一意に生成されるパス
名に対してhard linkを張っておくといいですよ。
で、シグナルハンドラにはそれらのリンクを適切に解消するルーチンを書いておけば
OKだと思います。同じ原理で2層ロックも実現できるかと。

あと、プロセスが起動したときに、タイマーで自分自身にシグナルを送るようにして
なんとなくウオッチドックすればサーバにやさしいかもです。
0421デフォルトの名無しさんNGNG
あ、次からsageでかこ。
0422デフォルトの名無しさんNGNG
いっそSourceForgeを使うのは……。
http://sourceforge.net/
鶏に牛刀の類っすかね。
0423名無しさん@ミポリソ@UNIX板NGNG
>>419
CFLAGSには まぁ -O? とかの最適かもあるけど とにかく -Wall は
付けといた方がいいね
0424デフォルトの名無しさんNGNG
>>423
-Oは、-O2がいいんかな?
0425最新ソースを一応どぞNGNG
http://star.endless.ne.jp/users/forcount/contents/scriptmaker/read11.c
最新版情報は

http://star.endless.ne.jp/users/forcount/4countbbs/scriptmaker/index.html
重要なのは前者
0426デフォルトの名無しさんNGNG
修整版あぷ
---- Makefile
.SUFFIXES: .c .cgi

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

.c.cgi:
$(CC) $(CFLAGS) $< -o $*.cgi ←頭はTABね。
----
最適化はターゲットプラットフォームがわからんので
不安なので、誰かまかせた(w。
変更点は-Wallを追加。gccでなくて-Wallが通用しない人ははずしてけれ。
0427名無し娘。 ◆vP.bOZFQ NGNG
>>425
unix板の方では、これが最終のリリースになるはずです。
今後はこことWikiが作業スペースということで。
0428369 ◆3XTuRnAc NGNG
あと、作業用に使用していたサーバースペースにつきましてはftpポートを閉じましたので
作業用スペースとしてはwikiと>>425さんのページがベースになると思います。
0429デフォルトの名無しさんNGNG
とりあえずindent -kr通さない?
0430デフォルトの名無しさんNGNG
あのぉ、
ふと思ったんですが、
帯域を下げるには、
read.cgiのパフォーマンスを下げればいいのでは…。
0431デフォルトの名無しさんNGNG
sleep (3)をいれろと?
0432デフォルトの名無しさんNGNG
サーバー過負荷で落ちちゃうのは、やっぱり不味いでしょ。
帯域の件はサーバ止めたり、read.cgiの実行を減らすなどで対処する問題。
ちょいと別問題。
0433デフォルトの名無しさんNGNG
それならサーバーで帯域制限すりゃいーじゃん。
0434デフォルトの名無しさんNGNG
cgiなりネットワークの帯域制限なりでパフォーマンスを落とすのは、
2chが「夜でも快適なサーバ」である事を売りにして広告を出している
Big-Serverの要求に反する。
つーか過去ログ見たか?
0435デフォルトの名無しさんNGNG
救われましたな。
0436415NGNG
>417
mod_perlはある意味CGIとは呼べないからなぁ。
何があっても不思議ではないっす(笑

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

うーむ、板違いか…。
0437デフォルトの名無しさんNGNG
スキルの高い方知恵を貸してください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>は仕様が決定後に検討
0438デフォルトの名無しさんNGNG
1Byteでも減らしたいところ悪りぃけど、曜日出してくんないかなー。
仕事行かなきゃいけない日かどーかわかんなくなるから。(藁

あと、s/[A-z]/[A-z]/g とかやってもいーんじゃないの?
0439デフォルトの名無しさんNGNG
>s/[A-z]/[A-z]/g とかやってもいーんじゃないの?
いいね、検索しやすくなるし。
0440デフォルトの名無しさんNGNG
曜日残して欲しいのは同意。
ログ読んでていつが週末かわからなくなるのは辛いものがある。
0441sageNGNG
名前表示→  名無し 01/08/26/日 00:00

でよいと思われ
0442デフォルトの名無しさんNGNG
>>438-439
ひょっとして
  y/[A-Z]/[a-z]/
ていう意味?
0443デフォルトの名無しさんNGNG
全角半角
0444デフォルトの名無しさんNGNG
>442
どっちにしてもレス付ける内容では無いと思われ。
0445akiNGNG
おはようございます。出かける前に確認応答。

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

ああ、日曜なのに講習会だ。鬱氏。
0446デフォルトの名無しさんNGNG
>>aki
お疲れさま
がんばってください。
0447無知な人NGNG
批判要望板から来たんですが、
WEBデザイン板ってここですか?

「2001/08/26」→「01/08/26」にして
「名前:」「投稿日:」を削除して下さい。
0448デフォルトの名無しさんNGNG
>>447
http://natto.2ch.net/hp/index2.html
こっちの、スキルの高い方知恵を貸してください* ってやつです。

私は、
「123 名無しさん 01/08/26/日 08:12」
って感じがいいなぁと思ったり。
0449デフォルトの名無しさんNGNG
ソースをちょっと眺めて、細かい事だけど。

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

それと、やっぱHTTP的には
printf("Status: 304 Not Modified\n");
の方が良いと思う。数バイト増加するけど。
0450デフォルトの名無しさんNGNG
http://natto.2ch.net/test/read.cgi?bbs=hp&key=998774537&st=53&to=55
にパッチがあるね
0451デフォルトの名無しさんNGNG
http://natto.2ch.net/test/read.cgi?bbs=hp&key=998774537&st=54&to=56
だった…ウトゥ…
0452プログラマーさんありがとう!!NGNG



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

 みんなのために本当にありがとうございます!!
0453デフォルトの名無しさんNGNG
いま現在も色々いじってるみたいだな。
「レスを全部読む」が100レスごとになったし。
0454泣きました・・・・NGNG



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

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

   のために・・・・・


    感動して泣きました・・・本当に、本当に、ありがとう・・・・・!!
0455デフォルトの名無しさんNGNG
ガイシュツかなあ。
なんでprintf多用してるんだろ。ある程度まとめるなり(可読性の問題もあるけど)
フォーマットを使用しないのはputsに置き換えるなり、すればいいのに。
関数呼び出しのコストだってバカにならないと思うんだけどな。
0456デフォルトの名無しさんNGNG
>>454
スマソ、ワラタ。
0457455NGNG
ごめん、ガイシュツだった。
0458デフォルトの名無しさんNGNG
■掲示板に戻る■ レスを全部読む 最新レス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
ではどう?
0459 NGNG
web板信じれられないレベルの低さ、、、
0460デフォルトの名無しさんNGNG
Web板はネット同人女の溜まり場だからな。
スキルに期待するのは間違ってる。
0461デフォルトの名無しさんNGNG
まぁまぁ今は他人の批判してもめる余裕なんて無いのだから、抑えておこうよ。
0462デフォルトの名無しさんNGNG
で、書きなおしませんか?
仕切る人1人にしないと混乱するから誰かやんない?
0463デフォルトの名無しさんNGNG
そうなんだよね。
誰かコテハンで仕切ってよ。
0464デフォルトの名無しさんNGNG
Wikiの方はなんだかうまく動かないな
w3mだからかな?
0465デフォルトの名無しさんNGNG
そもそもさ、TABLEタグを利用しているのが重い原因なんじゃないの?
TABLEタグ使わなくても見やすいレイアウトにする工夫を。
0466デフォルトの名無しさんNGNG
Web板ってナニ考えてるの?
必要なものを削ってドウスルンダヨ!
0467デフォルトの名無しさんNGNG
Wikiはプログラムソースを貼り付けるもんではないと思われ。
0468デフォルトの名無しさんNGNG
HTMLの話はどうでもいい
0469初学者26NGNG
>>38
変化はとっても勉強になります。
今回は口を挟むスキルに達していないのが残念でなりませんが,
少しでも2ちゃんねるのお役に立てるように勉強したいです。
0470デフォルトの名無しさんNGNG
 /_      |
    /. \ ̄ ̄ ̄ ̄|
  /  /  ― ― |
  |  /    -  - |
  ||| (6      > |
 | | |     ┏━┓|   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
| | | |     ┃─┃|  < 正直、救って欲しい。
|| | | |  \ ┃┃┃/    \________
| || | |    ̄  ̄|
0471初学者26NGNG
「最初のレス100」というのを追加して欲しいです。
最初から全部見たいときに「レスを全部読む」しかできないので。
時間によるアクセス制限時は強制的にそうなりますが,デフォルトでも
そういうコマンド(釦?)も欲しいです。少しは足しになりますか?
0472akiNGNG
>>464
version w3m/0.2.1では試してみたんですが、書けてる見たいです…。
発言内容に依存してるのかも。
0473名無しNGNG
UNIX板より

431 名前:原住民 :01/08/26 10:42
むむ、制限時間過ぎてもスレ全体を一括読みできない原因発見...
zz_GetEnv()と get_lastmod_str() の両方で gmtime()使ってるぞ!!
static領域に結果置いておくだけだから上書きされちゃうんだよね...
0474デフォルトの名無しさんNGNG
>>471
これ同意。
レス50個単位とかで前後できるリンクもいつもあった方がいいね。
でも、激しくスレ違いな気がするYO!
0475デフォルトの名無しさんNGNG
>>472
こっちも0.2.1です。
ソース全体をpreで囲わないのはこういうものなんですか?
あと、編集ボタンを押すとソース内のタグがescapeされないのもこういうもんかな?
0476デフォルトの名無しさんNGNG
ごめん、寝る。
0477名無しさん@ミポリソ@UNIX板NGNG
>>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変数の利用はできるだけ
避けた方がいいと思う
0478デフォルトの名無しさんNGNG
タグの短縮も重要だが、
read.cgi に渡される bbs, key, st, to なども1文字に短縮して、
read.cgi 側で新旧どちらにも対応すれば index2 あたりでは
100文字を超える節約になるのでは。
0479478NGNG
zz_GetString あたりの処理を簡略化して、
b で始まっていたら bbs, k なら key などと判断する、という意味。
0480デフォルトの名無しさんNGNG
moduleにするんだったらそもそもmod_cgi経由のインタフェースが使えな
いから全面書きなおしでしょ。負荷はたいしたことないと言っていたから
cgiのままでいいと思うんだけど。fastcgi案も出てたっけか。
0481 NGNG
                 _ , -―-、
              , 'ニニニ、::::(0::::::::::ヽ、
                ̄ ̄ヽ':::::::::::::::  ヾ みてごらん>>1を あれが夏厨だよ
                   ):::  ....   \
                  /    ::::::::::::::::::ヽ
                  /      :::::::::::::::::|
                 /       :::::::::::::::::|
                 /        :::::::::::::::::::|
                /        ::::::::::::::::::::|
                |         :::::::::::::::::::::|
               . |         :::::::::::::::::::::|
          _ , ―-、|         /::::::::::::::/::::|
          \ヲ'⌒ヽ:|         /:::::::::::::::/::::::|
            ト`_ ノ::|        /:::::::::::::/::::::::|
           人;;;;;;;::::;:|        |:::::::::::::/::::::::/
          /γ  `:::::|       |::::::::::::/::::::::/
          / (  ヽ   :::|       |:::::::::/::::::::/   ふーん、なんだか
         {  }  )  ::|       |::::::::{::::::::/    頭悪そうだね、ぱぱ
          | /   }   ::|       .ヽ::::|:::::::/
          ) {  /   ::|       .ヽノ ::::/
          } |  (    :λ         :::|
         ( ヽ、 )    ノヽ        ::::|
          ヽ,   ~    〈  ト、_  |    ::::::ヽ、
          (     ,' ノ  |   |~7  ::::::::::::::`ヽ、
           ヽ,、,、,γ' ノ, -‐W~フ {  ト、:::::::::::::::::::ヽ、
          ∠____ト-┘z__,―' ̄Σ Z  ̄ヽ―-、_ノ
                    '―z_,┴'~
0482デフォルトの名無しさんNGNG
Apache2 系列の時刻解析関数は
apr-util モジュールに apr_date_parse_http() があるから
こっちがいいね。apr-util/misc/apr_date.c の中。
0483Perler ◆GSi39OA6 NGNG
>>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.

ということですので宜しくお願いします。
0484eroNGNG
http://www1.sphere.ne.jp/kengo.21/ero.html
0485デフォルトの名無しさんNGNG
えらい、コード読みづらいんですけど・・・

ラフな仕様書から作った方がいいって。
あとグローバル変数多すぎ。
コメント少なすぎ。
0486デフォルトの名無しさんNGNG
誰かプロファイラ掛けた結果見せて
0487477NGNG
>>483 Perler様お疲れ様でした
確かにHTTPの場合GMTでないとほとんどの場合まずいようです すみません
ただ RFC2068 は現在obsoleteになっていて RFC2616 が現行のHTTPに
なってますので......
0488デフォルトの名無しさんNGNG
関数の仕様書・コメント・修正済みコードのコピペ場所はこちらです。
http://www.gedoh.org/aki/2ch/wiki/yukiwiki.cgi?[[726561642E63676982F08D8291AC89BB32]]

コピペの仕方に一癖あるので
まず[[ソースを貼る際の注意事項]]を読んでください。
0489Perler ◆GSi39OA6 NGNG
>>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.

ここになりますか。
0490デフォルトの名無しさんNGNG
あの、「今はそんな事言ってる場合じやない」と怒られるかも
しれないけど、書いていいですか。

大元のread.cgiのソースって、悪いプログラムの見本のような・・・・
データがコードで書かれているというのは、かなり痛いと思う。
0491デフォルトの名無しさんNGNG
まだ「名前:」「投稿日:」消せないの?
0492デフォルトの名無しさんNGNG
>>491
すれ違い
0493初学者26NGNG
「次の100レス」が消えてます。あちらに報告してきますね。
0494デフォルトの名無しさんNGNG
>>490
がいしゅつ
まあ最初は誰にも見せないつもりだったんだろ
0495名無しNGNG
read.cgi のインストールは誰がやってくれるんでしょうか?
0496名無しさん@ミポリソ@UNIX板NGNG
圧縮率ってgzipよりbzip2の方が高いよね?
でもブラウザがbzip2なんかほとんどサポートしてないか......
何かブラウザにbzip2デコーダ組み込んだりするうまい方法ないかね?
0497デフォルトの名無しさんNGNG
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
0498デフォルトの名無しさんNGNG
続き
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
0499デフォルトの名無しさんNGNG
>>496
MicrosoftとNetscapeに頼んで。
0500名無しNGNG
ここのソース読めなくなったけど?

http://www.gedoh.org/aki/2ch/wiki/yukiwiki.cgi
0501デフォルトの名無しさんNGNG
そういうわけで findSplitter() なんとかしねーとな
0502デフォルトの名無しさんNGNG
区切り文字は現行のまま?
0503デフォルトの名無しさんNGNG
>>494
レス全部読んでたけど、どのへんに出てきたっけ?
0504akiNGNG
>>500
バージョンアップも含めてちょっと色々直してました。
リロードしてだめだったら再度教えて下さい。

荒らし対策に定期バックアップも仕掛けました。
0505デフォルトの名無しさんNGNG
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 ;
}
0506デフォルトの名無しさんNGNG
ふしあなさんとかキャップの太くない文字ってdatにタグが入るんだっけ?
0507デフォルトの名無しさんNGNG
>>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;}
こういう風に最適化出来ないかな?
0508p0221-ipad01gifu.gifu.ocn.ne.jpNGNG
0509デフォルトの名無しさんNGNG
datにもタグが入る。
だから > と < の連続でデリミタになってる。
0510デフォルトの名無しさんNGNG
う、逆になった。。。
< と > ね。
0511ナナシサソNGNG
splitterは要素ごとに関数を分けて、本文はケツから探索
日付はある程度固定長だからそれをもとに探索
ってやるのはどうよ?
0512ナナシサソNGNG
レスの開始点の情報を持つテーブルはあるんでしょ。
インターフェースを大幅に変えなきゃならんのかな?
0513デフォルトの名無しさんNGNG
>505
それ旧タイプね。今は全部新タイプ(TYPE_TERI)だったと思う。
TYPE_TERIのfindSplitter内はほとんど改良の余地はない。
コードをうまく書くかインラインアセンブラでCMPS(x86と仮定して)を
使うようにすることぐらいかな?
0514名無しさん@ミポリソ@UNIX板NGNG
>>497-498
ご苦労さん とりあえず負荷が大きいのはdat_read()とfindSplitter()と考えていいのか...

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

ってとこかな とりあえず...... しかし全面的に改めた方がって気も
0515デフォルトの名無しさんNGNG
とりあえず、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の代入はそこでも良いかもしれない(コンパイルエラーだけど)。
0516デフォルトの名無しさんNGNG
UNIX知らなくてごめん。
mmap()って、排他制御はどうなってるん?

あ、でも読みこみだけだから大丈夫なのかな?
0517デフォルトの名無しさんNGNG
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()
   なんだけどね
0518514NGNG
>>516 するんならmlock()か...

あとfindSplitter()のssも unsigned char にした方が何気によさげかも
0519デフォルトの名無しさんNGNG
>514
>findSplitter() -> if (*p >= 0xa0 && *p <= 0xdf) {p++; continue;} がムダ
テーブルすべきだろうけど、そもそも、そのコードはTYPE_TERIの時
はコメントアウトされてるので関係ないです

>516
>mmap()って、排他制御はどうなってるん?
ない。他プロセスがファイルを書き換えると、mmapで得られたバッファの中身も同時に
書き換わる。
>518
mlockって、メモリブロックがページアウトされないようにロックするだけで、
書き換え不可ってできたっけ?
0520497NGNG
環境書き忘れたけど 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ファイルの先頭のエレメントは固定長区切りに
するとかしないとどうにもならんかもね。インライン展開してもあんまり芳しくなかった。
0521デフォルトの名無しさんNGNG
全般的に\0終端文字列ではなく、長さを別に保持したほうが
良いように思う。
現状だと、BigBufferのデータをgetLineMaxで行単位に、res_splitでフィールド単位に
\0終端させてるが、そのたびに、BigBufferの全スキャンになるので、
一括で、行とフィールドに分割したほうが良いように思う。
0522VB厨房NGNG
曜日必要だぞゴルァ。あれも立派なインデックスだ。
あと自動リンク削除などあまりにも製作者・管理者側に偏りすぎ。

一回の投稿行数1行減らしてでももう少しユーザーフレンドリーなものにしてくれよ
(厨房排斥が目的なら知らんけど)
0523デフォルトの名無しさんNGNG
>>522
行数は、減らしても複数回に分けて書き込まれるだけ。
>(厨房排斥が目的なら知らんけど)
転送量を減らすのが目的なのだから、それもアリかもしれない。
0524デフォルトの名無しさんNGNG
>>521
長さデータには、くずはの壊れにくさレベルを導入してな
0525デフォルトの名無しさんNGNG
私も素人ですが、曜日の表示は復活して欲しいですね。
「名前」表示は無くても良いような気はしますが・・・。
0526デフォルトの名無しさんNGNG
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_|            | | |    |  |,,〜  |____|/
      /_|。。 。  キ/ /_|.。/_|。。 。  キ/ /_|.。。 。 。   (__(____)   ∪∪      ∪∪
0527518NGNG
>>519
mlock()じゃダメだね スマソ......
Solaris上のlockf()だとできるみたいだけど... Linuxとか*BSDだと
flock()なのか? こちらでできるかは不明
0528ナナシサソNGNG
ロックするとマズイんじゃない?
ロックする時間を短くする為にBigbufferを使ってるんでは?
0529デフォルトの名無しさんNGNG
もう面倒だからイチから書き直しちゃえば?
0530デフォルトの名無しさんNGNG
>>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] = '*' ;
}

これで少し速くならない?(せこいけど…)
0531デフォルトの名無しさんNGNG
>>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;

としたほうが速いと思います。
0532531NGNG
C++固有コードとミスがあるけど愛嬌ってことで。
0533デフォルトの名無しさんNGNG
>>526
神業では無いと思うけど・・・元の CGI が御タコ過ぎただけ。
でも、元の CGI が神業レベルで最適化されていたら、2CHは終わっていたな。。

しかし、焼け石に水か、、、あとは営業努力に期待しよう。
0534名無しNGNG
今日モーニング娘の新メンバー決定があるので、
負荷テストが出来ると思います。
0535デフォルトの名無しさんNGNG
>>526
ただでさえ「転送量が……」って言っているんだから、
何回も同じ文章を、しかもAA付きでコピペするのは
止めようや。
0536デフォルトの名無しさんNGNG
Web製作版のほうで、
レスの表示数にFORMを使ってはどうかって意見が出てるよ。
0537デフォルトの名無しさんNGNG
>>530
本気で高速化を考えているなら、その部分コメントアウトしちゃえ。
つか、dat_readとdat_outはまとめた方が速くなるような。
0538デフォルトの名無しさんNGNG
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

この差を大きいとみるか、小さいとみるか。
0539デフォルトの名無しさんNGNG
つまらない質問だったらごめん。

>530
'\0' を'*'に変換する処理って何の意味があるの?
0540デフォルトの名無しさんNGNG
>>539
>>520を参照。壊れちゃってる物、仕方ないと思うけどなあ。
datファイルを直すのは、別スクリプトにしたら?
0541デフォルトの名無しさんNGNG
>>538
systemでかなり差が出ているのでmmapを使うべきでしょう
ただでさえforkにgzipのexecとsystem酷使してますし…
0542デフォルトの名無しさんNGNG
datファイルは\nで行を区切っているけど、
これをgetLineMaxで\n→\0に置換して行単位に、
res_splitで<>→\0\0に置換してフィールド単位に
ばらして、それぞれ\0終端文字列(いわゆるC形式の文字列)として
扱ってる。
なので、壊れたdatファイルで途中に\0が入ってると処理がおかしくなるので、
最初の段階で\0をつぶしてるらしい。
0543デフォルトの名無しさんNGNG
>540 >542
にゃるほど、サンクス。
0544デフォルトの名無しさんNGNG
>541
ただ、mmapにすると、バッファを書き換えられなくなるので、
現在のようにBigBufferを扱いやすいように修正しながら\0終端ベースの
処理ってのはできず、全体的に行、フィールドの先頭ポインタとその長さを保持して
それを使いながらの処理になる。
すろと、コストのかかる部分が移動するかもしれない。
あと、readの動作中にあぼーんが発生すると、mmapで得たバッファの内容がずれる
リスクがある(普通の書き込みなら追加なので問題ないと思う)。
0545デフォルトの名無しさんNGNG
>539
いや、実はよく分かっていません。
元ソースのdat_read()にそういう処理があるっていうだけで…

推測ですが、datの読み込み後、何らかの理由でバッファに'\0'が入ってきた場合
他の関数の処理に不都合をもたらすので、
とりあえず'*'に変換しとけ、っていうだけかも知れません。
(実際はあり得ない?)
0546デフォルトの名無しさんNGNG
とりあえずこんなんでもかなり効くよ
if (strlen(BigBuffer) != zz_fileSize) {
 for(i=0;i<zz_fileSize;i++)
 {
 if (BigBuffer[i] == '\0') BigBuffer[i] = '*';
 }
}

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

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

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

この手の話は多分みみずんが一番詳しいと思う。
0548545NGNG
げ、考えてる間に正確なレスが。バカ丸出しで逝ってきます。(w
0549デフォルトの名無しさんNGNG
>>546
結局BigBufferを最後まで一文字ずつ調べるわけで、
まあ、BigBuffer[i]='*';が無いだけ速いか。
0550デフォルトの名無しさんNGNG
>546
すばらしい。strlenみたいな多用されるやつは、アセンブラレベルで、
カリカリにチューンされてるはずだからね。
0551デフォルトの名無しさんNGNG
あとres_split()内でfindSplitter()も使うのやめちゃって
p0 = strstr(s[i-1],"<>");
の方が速いよ

まあ546の変更とあわせて実時間10.89秒が9.93秒になるくらいなのだけども
0552549NGNG
>>549
自己レス。
if(BigBuffer[i]=='\0')が成立しなければ一緒だ。逆に遅いか?
ライブラリ内部がアセンブラででも最適化されてりゃ速い、
かもしれない。
0553550NGNG
いや、よく考えたら、strlenの結果使えば、'\0'の位置なんて
既にわかっていることに気づいた。
0554デフォルトの名無しさんNGNG
>>553
'\0'が複数含まれていた場合を忘れてる。
0555550NGNG
int pos;
while ((pos = strnlen(BigBuffer, zz_fileSize)) != zz_fileSize)
  BigBuffer[pos] = '*';
か。
0556554NGNG
>>555
失礼、忘れて無かった。
0557デフォルトの名無しさんNGNG
>>553
これでいけるってこと?

int BufferLen = strlen(BigBuffer);
if (BufferLen != zz_fileSize) {
 if (BigBuffer[BufferLen] == '\0') BigBuffer[i] = '*';
}
0558デフォルトの名無しさんNGNG
int pos;
char *p = BigBuffer;
int rest = zz_fileSize;
while ((pos = strnlen(p, rest)) != rest)
{
p[pos] = '*';
p += pos + 1;
rest -= pos + 1;
}
0559554NGNG
>>558
それなら複数'\0'があったときもコストが高くならなくていいね。
0560デフォルトの名無しさんNGNG
strnlenも早いの?
0561デフォルトの名無しさんNGNG
>>552
少なくともLinuxのglibcの環境においては-O2つけたとしてもライブラリ使ったほうが速いようだ
0562デフォルトの名無しさんNGNG
http://piza2.2ch.net/jisaku/dat/980503747.dat
↑の2001/05/09(水) 12:41のすぐ上のレスみたいなのでも行ける?
0563デフォルトの名無しさんNGNG
みんなで力を合わせれ!

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を張ってください。
0564デフォルトの名無しさんNGNG
>'\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とも併用できるでしょ。
0565がいしゅつ?NGNG
一つ分かったことは、
「ひろゆきがプログラマとしてタコである」
ということだ。
0566 NGNG
>>565
ここまでの負荷を想定してはじめから作っていたのならそうかもな。
でもソレはありえないだろ。
0567デフォルトの名無しさんNGNG
>>564
>オプションでのtext内部にある<br>以外のタグの削除ね。
コストが高いと思うなあ。それはbbbs.cgiでやった方が良いのでは?
0568デフォルトの名無しさんNGNG
今までスクリプトって博之がつくってたの?
0569デフォルトの名無しさんNGNG
今のスクリプトはひろゆきじゃないはず。C言語出来ないって言ってた。
0570名無し ◆NtVkSITE NGNG
>>568
トオルさんや削除忍さんのようですが。
0571GNGNG
**********************************

あのさ、もうUNIX板でのZIP関係の手入れは一段落したんだから、
つぎはこのスレでのコード最適化結果をどんどん実際に反映していこう。
生きてるFTPサーバか何かを提供してくれる人と、トランクソースに
ここで出てきた差し替えコードを反映する、意欲あるプログラマの人は
手を上げてくれよ。
俺?すまそ、力不足だ。

*********************************
0572名無しNGNG
暫定版をリリースして、
デザインを含めて1からプログラムを
作り直したほうがよいと思う。

新しいプロジェクトを立ち上げましょうよ。
0573G NGNG
ちなみに571をカキコしようとして、書き込むボタンを押したら
一面文字化けのページが帰ってきたぞ。
read.cgi ver5.02には、チューニング以前のバグもまだあるのか?
0574デフォルトの名無しさんNGNG
ひろゆきって専攻何?
大学4年の夏に米国に心理学の留学行っている。
プログラマーじゃないのかな?
0575G NGNG
ていうか
http://piza2.2ch.net/tech/index2.htm
をまともに読めるヤツいる?
0576デフォルトの名無しさんNGNG
>>575
読めてるよ。
0577デフォルトの名無しさんNGNG
>>575
IEでhttp/1.1チェック入れてないとか?
0578G NGNG
分かった。
カキコすると自動的に飛んでいく
http://piza2.2ch.net/tech/index2.htm
は今明らかにバグってて、
正しいのは
http://piza2.2ch.net/tech/index2.html
だよ。これはすぐ直せるだろうけど、
どうすりゃいいんだよ。
0579名無し娘。 ◆vP.bOZFQ NGNG
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){
0580デフォルトの名無しさんNGNG
>>572
それをやるなら、datのフォーマットから見直したいな。
ls=10でもdatを全部読み込むってのは、ちょっとなあ。
0581デフォルトの名無しさんNGNG
1にも書いてあるが、今のところ道は3つだと思ってる。

1)発想はそのままでCode書き直しなど全面書き換え最適化を行う
2)P2Pで頑張る
3)その他のアイデアでやってみる

現状動いているのは2だけだけど、1に手を付けるのもいいかもしれない。
3はまだ未知数。
0582デフォルトの名無しさんNGNG
datフォーマットを見直さなくても
レスの位置を記録したインデックス作るだけで
かなり効果無い?
0583デフォルトの名無しさんNGNG
>580
だよねぇ。
ファイルにインデックスでもつけたほうがいいよね。
既存のデータをどうするかが問題だけど。
0584デフォルトの名無しさんNGNG
インデックスは付けたいね。
でもそれをやるとすると、bbs.cgiの方に手を入れなくてはならない。
bbs.cgiのソースは公開されてた?
0585デフォルトの名無しさんNGNG
>>578
バグではありません、仕様です(w
負荷低減のため、htm側はzip圧縮ページなのな。
mod_gzip入るまで待ちんしゃい。
0586デフォルトの名無しさんNGNG
>>584
されてない。read.cgiのみ。
0587デフォルトの名無しさんNGNG
そういうの突き詰めていくとバックエンドのデータはRDBで管理して、クライアント処理は
Servletで、とかなってくんだけどサーバ側の事情でアーキテクチャを大きく変えるのは難しそう。

俺的には read.cgi の mod_2ch (Apache module) 化のが一つのゴールかなあ、って思うが。
0588デフォルトの名無しちんNGNG
>>585
mod_gzipになるまでまだ1週間以上あるみたいだから
とりあえず今は「.html」に飛ぶようにしておいた方がいいんじゃないの?
0589デフォルトの名無しさんNGNG
すこし前に11REV1を落とされた方
修正ミスでした
今は修正完了です
アドレスは同じです
0590564NGNG
よーく考えたら、Splitや置換って全体に対しては必要なかったね。
実際のls=??等のリクエストがどんな割合で来てるのかわからんけど。

つーことは逆に、
getLineMax()にFileSizeを与えて、memchrで行を数えて、
'\0'->'*'への置換をout_html()で行うようにするほうがいいかな?
レスを全部読む場合は、全体を一括スキャンしたほうが効率的だろうけど、
トータルではどうなるか。

で、もし全体をスキャンするなら、特殊文字('\0','\n','<','&'等)をテーブルにして
if (teble[*p] & flag) {
  switch (*p)
    ...
}
みたいな感じが良さそう。
else if の繰り返しや全体をswitchにしてしまうよりまともだと思う。
(負荷的には、キャッシュの関係があるから、試してみないとわからないけど)

テーブルは8bitあるから、日本語文字やURLの終端判別にも使える。
これも、スタートアップでテーブルを作るほうがソース的には楽だけど、
負荷を考えると自力で作った方が良いかもね。

なんか俺も良くわかってないから、素直に推移を見守りますわ。
0591デフォルトの名無しさんNGNG
インデックス付けると、bbs.cgi以外にも、あぼ〜ん処理とかも
全部対応させなくちゃならない。それこそ大作業になるよ。
0592デフォルトの名無しさんNGNG
>>587
mod_gzip付けるだけでも汎用のサーバーがどうのもめていたらしいからmod_2chというのも厳しいのではないかな?
現状のデザインに不満を漏らしつつも何とか地道な改善を施すのはPGの宿命だよ。
0593563NGNG
あ、間違ってた・・・
プログラマが2chを救う!? @プログラム板
の2号は
スキルの高い方知恵を貸してください @web制作管理板
の方の2号だ。
0594デフォルトの名無しさんNGNG
だからさーーーーー、早く実際の作業始めよーよー。
0595名無し娘。 ◆vP.bOZFQ NGNG
お邪魔かもしれませんが、ちとまとめてみます。(作業中)
0596デフォルトの名無しさんNGNG
/*行区切りの検索、'\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:
/*続き*/;
0597デフォルトの名無しさんNGNG
JavaやDelphiのような優れた言語を使わず、
Cなんていう時代遅れの処理系を使っているのはなぜなんでしょう。
それとも、ドキュンしかいないのでしょうか。
0598名無し娘。 ◆vP.bOZFQ NGNG
(あ、お話はどんどん続けておいてください)
0599sageNGNG
速いからじゃないの?
0600デフォルトの名無しさんNGNG
>>597
おまえいつからプログラムはじめた?
0601デフォルトの名無しさんNGNG
Delphiて・・・2ちゃんってNTサーバーだっけ?
0602デフォルトの名無しさんNGNG
あおりはほーちちまちょー
0603デフォルトの名無しさんNGNG
>>597
はいはい中学生は学校の宿題でもしてて
0604デフォルトの名無しさんNGNG
597 はいつもの厨房なので無視という方向で。
0605デフォルトの名無しさんNGNG
ところでこれまでに出た改良案をすべて
取り込んだものはどれくらい早くなるの?
誰か試して。

#俺もやりたいけど今手元にwinしかない、、。
0606デフォルトの名無しさんNGNG
>605
ダッシュでCygwin落とせ。apacheも動くぞ。
http://sources.redhat.com/cygwin/
0607デフォルトの名無しさんNGNG
>>597
実際軽く動くのはどっち?
0608デフォルトの名無しさんNGNG
bbs.cgiのソースは何故公開されない?
0609デフォルトの名無しさんNGNG
>608
実はばっちりログを保存していて、
それがばれるのがいやだから。

だったりして。
0610デフォルトの名無しさんNGNG
>>608
ソース見ていたずらを思いつく人が出てくるからでは?
0611デフォルトの名無しさんNGNG
>>607
言語の種類だけで決まる話では無い
0612デフォルトの名無しさんNGNG
本気で2chのシステムを最適化したいんなら
bbs.cgiとか、他のモジュールも公開するべきだな。
さらに俺を2週間ほど雇えば負荷総合的な負荷は5%程度まで縮小するかもな。
まあ人月300くらいはもらうけど。
0613デフォルトの名無しさんNGNG
安直にパスが全てべた書きされてるのではないか?
いろいろな管理用コマンドとかもいっしょに。
0614名無しさんNGNG
一晩で軽くなるなら、いままで何やってたんだ?
0615 NGNG
>>612 現状を把握せずに、成果を約束できるのか?(w
0616デフォルトの名無しさん01/08/26 18:26ID:14u64k9s
短期的には、既存のスクリプトの改良/高速化の方向ですが、
結局は最初の議論に戻って、2ch全体のシステム設計から
やり直さないといけないと思います。

そちらのシステムデザインのスレを立てて始めたらどうでしょう?
スレを建てる前に、まず、
 ・マスター(現在の2ch開発スタッフが望ましい)
  準マスター
 ・仕様、ソースなど現時点での決定事項がアップロードされる場所
   http://www.gedoh.org/aki/2ch/wiki/yukiwiki.cgi?TopPage で良いでしょう
これらを決めて、スレのトップに明記する。
・・・でないと、スレ全体読み直すだけでかなりの労力です。

read.cgiだけではなく、データフォーマットから全てやり直さないと
駄目でしょう。。。オープンソースで常に改良していった方が。
0617デフォルトの名無しさん01/08/26 18:26ID:Y5ufE4Do
>>615
「こんな外注先は害虫」の見本だよなぁ…
0618名無し01/08/26 18:28ID:cNxfOPbY
read.cgi 更新してみてよ。
サーバー管理者いないんですか?
0619デフォルトの名無しさん01/08/26 18:28ID:K3x70GYg
>>614
あの…一晩48時間なんだけど・・・
0620デフォルトの名無しさん01/08/26 18:29ID: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 によれば処理時間への影響は小さいけれど、
リンク部分の文字列を短くできます。
0621デフォルトの名無しさん01/08/26 18:29ID:K3x70GYg
>>618
しばらくは各自localhostでテスト運用だな。
0622 01/08/26 18:29ID:C1Z3lpu.
>>616
http://www.gedoh.org/aki/2ch/wiki/yukiwiki.cgi?TopPage
そこ、CGIのリンクで保存しにくい。
普通にリンク貼れって漢字?
0623名無しさん01/08/26 18:29ID:rVzqRC42
ん?アイデー?
0624名無し娘。 ◆vP.bOZFQ 01/08/26 18:32ID:7Eg.mvRo
あの、抜本的見直しもいいとは思いますが。。。
抜本的なのと、そうでないのはわけた方がいいと思います。
とりあえずは、既存の関数の機能は変えない範囲で、最適化を
行うべきかと。
#抜本的見直しを運営が望んでいるかもよくわからないですし。
0625デフォルトの名無しさん01/08/26 18:33ID:goYJpq5c
>608-615
サーバごとなどに異なる規制部分は非公開としても、
全体に共通の部分は公開された状態で、気づいた人が
欠点を指摘していった方が安全性は高くなるかと。
(その意味で、 read.cgi と違いすぐ入れて様子を見るのは危険)

管理側にも検討して欲しい。
0626デフォルトの名無しさん01/08/26 18:36ID:1sXjF0HU
こういう前提があるから、やはりCGIレベルでどこまで最適化できるか?
しか当面ありえないでしょ。

>39 名前:夜勤 ★ 投稿日:2001/08/25(土) 19:34
>Apache に手を加える(パラメータ)を変更する というのはできないです。
>なぜなら、このサーバと同じサーバという売りでレンタルサーバ業を
>営んでいるもので、汎用的なサーバじゃなきゃだめなんです、すんません。
0627デフォルトの名無しさん01/08/26 18:38ID:aVwVHBUM
この板にも強制IDが出てるな・・・何故か。
微々たるもんだが、ID:???の場合に出力を止めれば、
数百バイト程度は得するぞ。
・・・Non-Accept-Encoding: gzip なら。
0628デフォルトの名無しさん01/08/26 18:39ID:mpESCVMc
>>624
書き直しはほとんど行われず、
P2Pは来週末にも終らず忘れ去られ、
とりあえず当面を乗り切っただけで
次の危機の時にまた盛りあがるが、果たせずに一票。
0629デフォルトの名無しさん01/08/26 18:40ID:ph4Tm7AM
>627
全板強制IDっぽい。人減らし作戦の一環でしょう。
0630デフォルトの名無しさん01/08/26 18:45ID:A3jnb8oE
全板だね。「材料物性板」とかまでID表示になってる。(w
0631名無し01/08/26 18:51ID:cNxfOPbY
負荷が増える前に、プログラムを更新した方が
いいと思われます。
0632デフォルトの名無しさん01/08/26 18:52ID:cvrtcctM
モー娘メンバー発表まであと2時間。
0633名無し娘。 ◆vP.bOZFQ 01/08/26 18:55ID:7Eg.mvRo
>>632
ああ、それまでにまとめ作業終えたい(笑
現在 1/3 ほど終了
0634デフォルトの名無しさん01/08/26 18:57ID:56vmLS/g
人を減らしたいのなら、書き込みだけじゃなくてread.cgi起動する度に
ログを取ってる事も周知させれば?
0635デフォルトの名無しさん01/08/26 19:01ID:IO6XhCZY
>>634
いまだに2chは匿名性だから来たのにとか
ニュー速の厨坊がほざいてるからねw
0636デフォルトの名無しさん01/08/26 19:04ID:PGbsVVuc
でも int logOut(char *txt) は削るべきでは?
匿名とかそういうのじゃなくて負荷の問題で。
ログはApacheのログが別にあるからいいでしょ。
0637デフォルトの名無しさん01/08/26 19:08ID:PbVG8tb2
>人を減らしたいのなら、書き込みだけじゃなくてread.cgi起動する度に
>ログを取ってる事も周知させれば?

あんたソース読んでないでしょ?
read.cgi内でやってるのは不正なUserAgentの記録
だいたいApacheがアクセスログ取ってるだろが
063863601/08/26 19:12ID:bQ7eOgW2
あぁ、Apache側 でUAまで記録してるとは限らないのか。
個人的にいつもCombineなログを取っているので早とちり。

#っていうか私のIDかっこ悪い。 PGだってさ。
0639636 = 63801/08/26 19:13ID:bQ7eOgW2
ID変わった。なぜ?
0640デフォルトの名無しさん01/08/26 19:14ID:UBBPE9x.
実はID出てること自体がバグとか
0641デフォルトの名無しさん01/08/26 19:17ID:tdpKykIg
hour もID算出に使ってるんだろうね。
0642デフォルトの名無しさん01/08/26 19:18ID:HihBi4VA
IDは、投稿日の文字列も元にしてるからね。
で、20や曜日を削ったから、おなじみのエンバ(以下略
0643デフォルトの名無しさん01/08/26 19:18ID:nq7nF8XA
minの一桁目とIPアドレス?
064464301/08/26 19:19ID:nq7nF8XA
test
0645デフォルトの名無しさん01/08/26 19:19ID:HihBi4VA
リンクの出力を減らすのは賛成だけど、
一番食ってるのはスレへのリンクではなく、
>>999のリンクだからねぇ。
ご丁寧にst=nn&to=nn&nofirst=trueまで付いてるから。
nofirst=true や imode=true を nofirst=1 や n=1 等に対応して、
なおかつ最も重要なのは、bbs.cgiがdatに書きこむ内容を変更しないと。
064664301/08/26 19:20ID:nq7nF8XA
再test
0647名無し01/08/26 19:20ID:GLhprhn.
ID変わるバグか。IDの意味無し?
0648デフォルトの名無しさん01/08/26 19:21ID:tdpKykIg
>645
st -> s
to -> t
nofirst -> nf
でいいんじゃない?それに =true 付けるのも無駄。
064963601/08/26 19:21ID:bQ7eOgW2
IDは従来はdateとIPアドレスの一部から算出していたはず。
もし新たにhourも加わったとしても 636 と 638 で変わったのは説明できないような...
0650名無し01/08/26 19:21ID:GLhprhn.
ID変わらないから大丈夫だ。
0651デフォルトの名無しさん01/08/26 19:23ID:NGu5IyHk
ID変わるかな(1
0652デフォルトの名無しさん01/08/26 19:23ID:NGu5IyHk
IDが変わるかな(2
065364301/08/26 19:25ID:Y.ZOSOn2
ID→IP
http://www35.tok2.com/home/testsan/search.cgi
0654デフォルトの名無しさん01/08/26 19:26ID:tdpKykIg
19時何分かに salt が変わった?
http://teri.2ch.net/test/read.cgi?bbs=accuse&key=998818852&st=132&to=132
065563601/08/26 19:27ID:bQ7eOgW2
一週間ぐらい前に作ったID逆変換スクリプトで試したら今のIDは正しく逆変換
出来るけど>>636のは結果が出なかった。何か間違ってあわてて直したのかな?
0656名無し娘。 ◆vP.bOZFQ 01/08/26 19:28ID:E1hp.8JQ
ふぅ、おわりました。このスレッドにあがった点は網羅したつもりです。
ここに貼っていくつもりです。
手を付けやすい所から1つ1つmergeしていくことになるでしょうか。
0657名無し娘。 ◆vP.bOZFQ 01/08/26 19:29ID: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
0658デフォルトの名無しさん01/08/26 19:29ID:i045ysP2
>>656
お疲れさまです。
0659名無し娘。 ◆vP.bOZFQ 01/08/26 19:29ID: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()
0660デフォルトの名無しさん01/08/26 19:29ID:UBBPE9x.
Wikiの内容はmergeしてるんかな?
0661名無し娘。 ◆vP.bOZFQ 01/08/26 19:30ID: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
0662名無し娘。 ◆vP.bOZFQ 01/08/26 19:32ID:E1hp.8JQ
>>660
Wikiをmergeしたものもあるのですが、あちらは、こちらで話がそこそこ
かたまったものを載せているようですから、ここには含めませんでした。

今後、関数毎に作業を進めるようでしたら、関数毎の引き値などの一覧も
作りますが、どうしましょうか。
0663名無し01/08/26 19:46ID:GLhprhn.
モーニング娘の負荷危機まで1時間ちょっと
0664デフォルトの名無しさん01/08/26 19:49ID:1UQ.S61Y
Wikiで draft なページ作ったら?
066561601/08/26 19:56ID:.7OZ9ZNw
名無し娘。さんお疲れ様です。分かりやすくなりました(^^

>>624

そうなのですよね。運営側が付け焼き刃で当面を乗り切れば良いと
考えているのか。でなければ、昨夜の状況になる前に手を打てたのに。
(頻繁にマイナーチェンジしていましたが)

ver5.02って?
0666♯641101/08/26 19:57ID:vqaeONJ.
>>496 >>499
bzip2のアルゴリズムは、圧縮・伸張とも
ストリーミングに向いてないのだ。
そもそも高速化しにくいし。
0667♯641101/08/26 19:58ID:vqaeONJ.
>>560 >>561 っていうかgccだったら
__builtin_strlen()と同義じゃないかしら?
(未確認)
0668デフォルトの名無しさん01/08/26 19:58ID:EDp.9ERA
モー板関連にも早く新しいread.cgiを導入しないと
意味が無いんじゃないかと思うのですが、
運営側の人何しているのでしょう・・・・
0669デフォルトの名無しさん01/08/26 20:00ID:MV3zKzJ.
>>662
>Wikiをmergeしたものもあるのですが、あちらは、こちらで話がそこそこ
>かたまったものを載せているようですから、ここには含めませんでした。
結果を載せるだけじゃなくって
議論の場としては2chスレよりwikiのがやりやすいんじゃない。

[[read.cgiを高速化2]]はプログラム板で占拠して
ある程度自由に使ってしまっていいと思う。
0670 ◆T/5GEU6k 01/08/26 20:01ID:T8m3jVH2
トリップ廃止?
0671 ◆T/5GEU6k 01/08/26 20:02ID:T8m3jVH2
>>666-667
#全角かぁ。スマソ
0672名無し娘。 ◆vP.bOZFQ 01/08/26 20:05ID:E1hp.8JQ
>>669
議論をどちらでやるのか、私にはよくわからなかったので、
経緯をまとめるだけにしちゃいました(^^;

堅実なところはさっさと実装していって、議論の的を絞るのもいいかな
と思います。indentだけでもやって、どこかにUPしましょうか。。。
# これやっとけ、ってのがあればやっときます(笑
0673デフォルトの名無しさん01/08/26 20:19ID:lmB6Nfnc
>>659
>●int BadAccess()
>返戻値:USER_AGENT が正当であれば1、不正であれば0

返戻値が逆っぽいです。
0674名無し01/08/26 20:26ID:GLhprhn.
読み込み途中で止まったようになる。
その後読み込みまた止まったようになる。
最期にまた読みこむ。

なんでだろう?
0675デフォルトの名無しさん01/08/26 20:48ID:UUVa.jxU
書き込みが終わりましたって表示はいるの?
0676デフォルトの名無しさん01/08/26 20:48ID:xL7OsRZc
http://bbs_cgi.tripod.com/
globalを通してみました。全行にアンカー振ってあります。
また、-krでindent通したものもおいてあります。
067767601/08/26 20:55ID:xL7OsRZc
今気づいた。
read.cgiを弄っているのに、アカウント名がbbs_cgiだ(汗
0678名無し娘。 ◆vP.bOZFQ 01/08/26 20:59ID:E1hp.8JQ
>>673
そうですね(^^;
>>676
お疲れさまです。

ところで、ざっと復習してみると、amp問題と、BadAccess()あたりは
ソースに組み込んでもよさそうですね。
# BadAccess() は"#ifdef NEWBADA"とかなんとかにしておく。

2時間ほど新メンバー見てきます(爆死
0679デフォルトの名無しさん01/08/26 21:06ID:PbVG8tb2
>>674
gzip圧縮してるからでしょ
0680デフォルトの名無しさん01/08/26 21:07ID:8728MBZU
書き込み時に、それがTOPPAGEに変更が入る場合は、TOPPAGEを
生成して保存。
TOPPAGEの読み込みはread.cgiでなく、静的なページを送り返す
ようにしたらどうだろう。
0681デフォルトの名無しさん01/08/26 21:09ID:t/kABhdw
最新レス100 → 最新レス100

3バイト節約(ワラ
0682デフォルトの名無しさん01/08/26 21:22ID:r9kv7gys
>>680
負荷は劇的に減るが、gzip圧縮の恩恵がうけられなくなって転送量がふえてしまうかも
0683デフォルトの名無しさん 01/08/26 21:25ID:SBklp.1k
こうしてプログラマが頑張ってる横で、モー娘がどうしただので
板が落ちそうになってるのを見ると、複雑な気持ち。
0684半角数字派01/08/26 21:38ID:T95KUHcw
>>681
それは今すぐにでも採用希望(w
0685デフォルトの名無しさん01/08/26 21:40ID:xL7OsRZc
>>684
ついでに、コロンが全角半角入り乱れているので整理しよう(笑
0686デフォルトの名無しさん01/08/26 21:42ID:iy09H5/E
>>682
mod_gzip の導入は決定しているようなので、その辺は考えなくても良いかと。
0687デフォルトの名無しさん01/08/26 21:43ID:NGu5IyHk
トップをindex2.html.gzとして、gzip形式でページを出力するのはどうよ?
拡張子をhtmlにしたままgzipで圧縮するばあいはApacheの設定が必要になると思う。
今までのindex2.htmlはindex2.html.gzに転送するページにするのが無難だと
個人的には思うけど。
0688デフォルトの名無しさん01/08/26 21:46ID:PbVG8tb2
>>687
だからmod_gzip入れるんだってば
0689369 ◆3XTuRnAc 01/08/26 21:50ID:iecZaXF2
みなさん、お疲れ様です。
いま外出から帰ってきました。すごいことになってますね。
娘。さんとかPerlerさんとかもがんばっておられるようで、自分一人
遊んでて申し訳ない感じ。

・・・で、ftpサーバがいるなら今日から明日の朝までなら
提供する用意があります。たまにADSLモデム落とされますが(汗、
それでも良ければ。
0690デフォルトの名無しさん01/08/26 21:51ID: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文字も無駄に思える。
もっと短い名前でも呼べるようにしては?
0691名無しさん01/08/26 21:51ID:Re1f5wmg
今日になってからここのwebページが普通に保存ができなくなったのは
何かいろいろ変更したからか?
たまに出来たりもして何が何だか・・・
不正な行為か・・・言われてもしょうがないけど・・・(藁
0692名無し01/08/26 21:52ID:GLhprhn.
夜勤さんが居ないと意味無いな。
069368701/08/26 21:52ID:NGu5IyHk
>>688
そりゃどうもすみません、なんかやけに好戦的に見えるなぁ。
0694デフォルトの名無しさん01/08/26 21:53ID:JmrVikf2
>687
index2 が更新される回数≪読まれる回数
だから、 mod_gzip で毎回圧縮するより更新の際に圧縮しよう、という議論?

>691 何が不正なのですか?
0695デフォルトの名無しさん01/08/26 21:55ID:RDsCkPFA
>>693
だって、 index2.html.gz はすでにきのうやってたんだもの。
いまでも index2.htm は gzip で出してる。
ようするにがいしゅつ。
0696名無し娘。 ◆vP.bOZFQ 01/08/26 21:58ID:qavO62ww
お疲れさまです。あと1時間ほどで戻ります(^^;
>>692
夜勤さんも、モ板祭の終わる頃にいらっしゃるようなことを昨晩おっしゃってました。

よろしければ、仕様変更を伴わない堅いところから、ソースに組み込んでいこうと
思いますが、どこから手を付けるべきでしょうか。
>>678 は組み込んでみました。追加がすぐに出ないようであれば、アップします。
0697名無し01/08/26 22:02ID:GLhprhn.
▲現在の最新版はこれみたいです。
 http://star.endless.ne.jp/users/forcount/contents/scriptmaker/read11.rev1.c
069868701/08/26 22:02ID:NGu5IyHk
>>695
あぁ、なるほど、最初からそういってくれたらよかったのに。
0699名無しさんの声01/08/26 22:04ID: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


だってよ。
0700名無し01/08/26 22:04ID:GLhprhn.
2ちゃんねるWiki に改造コード貼ってあります。
http://www.gedoh.org/aki/2ch/wiki/yukiwiki.cgi?TopPage
0701デフォルトの名無しさん01/08/26 22:04ID:pAfX386E
盛り上がってまいりました。
0702デフォルトの名無しさん01/08/26 22:05ID:MF2k8Nc2
モー娘の件もあちこちに個人で実況スレッドを作ったおかげで
2ちゃんねる本体にはそれほど負荷かかってないみたいですね。
羊と狼はやばそうですけど。(汗
0703名無し娘。 ◆vP.bOZFQ 01/08/26 22:24ID: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したことです。
検証できるかたいらっしゃいましたらよろしくです。
0704デフォルトの名無しさん01/08/26 22:29ID:ggkSbIno
ていうか狼とかついに落ちた?
0705デフォルトの名無しさん01/08/26 22:29ID:vtjT3i/c
NEWBAがdefineされてるとBadAccess()の定義がダブるんでないかい?
0706デフォルトの名無しさん01/08/26 22:33ID:1UQ.S61Y
確かにダブるなあ。
read2ch.h って今どこにあるの?
0707名無し娘。 ◆vP.bOZFQ 01/08/26 22:35ID:kimvJHK2
>>705
。。。(泣
http://nichrdcgi.hoops.ne.jp/read11.rev3.c
に修正しました。
0708名無し01/08/26 22:35ID:GLhprhn.
これじゃない。

>http://bbs_cgi.tripod.com/
>globalを通してみました。全行にアンカー振ってあります。
>また、-krでindent通したものもおいてあります。
0709デフォルトの名無しさん01/08/26 22:38ID:1UQ.S61Y
さんくす。
0710名無し01/08/26 22:38ID:GLhprhn.
稲垣会見とモー娘新メンバーで
アクセス急増。
0711デフォルトの名無しさん01/08/26 22:44ID:ggkSbIno
>>708
そのURL見れないんだけどみんな見れてる?
0712デフォルトの名無しさん01/08/26 22:46ID:1UQ.S61Y
見れてますよ
0713デフォルトの名無しさん01/08/26 22:46ID:UBBPE9x.
URLに'_'があるとsquid proxyに蹴られるね。%5Fにしても駄目だ。
0714名無し娘。 ◆vP.bOZFQ 01/08/26 22:48ID:kimvJHK2
新メンバー決定♪しかし羊も狼も…(悲
>>711
うちでは見えていますが、念のため
http://nichrdcgi.hoops.ne.jp/read2ch.h
にもおいておきました。
0715デフォルトの名無しさん01/08/26 22:48ID:ggkSbIno
>>713
はう。ビンゴ。ありがとう。
ローカルsquidに蹴られてた。
071671101/08/26 22:50ID:ggkSbIno
715=711。
>>714もありがとう。
0717名無しさん01/08/26 23:01ID:jZdNU1oQ
>>708には

http://members.tripod.com/bbs_cgi/

だったら行くことができる。
0718デフォルトの名無しさん01/08/26 23:04ID:/FZALAjc
>>699
そのスレ読んでみたけど、「匿名でヤバイ情報が覗ける」って
どこのこと言ってんだか・・・。なんつー認識だよ
0719デフォルトの名無しさん01/08/26 23:06ID:xL7OsRZc
あ、スマン
すっかり忘れてたよ
./configure --enable-underscores
でsquid作り直してつかぁさい(マテ
0720デフォルトの名無しさん01/08/26 23:08ID:j42oaHOQ
ところで,bbs.cgi って非公開?
それとも他のスレに話題があるのかな
0721デフォルトの名無しさん01/08/26 23:16ID:/FZALAjc
>>708
日本語化けてない?もしかして俺だけかな
0722デフォルトの名無しさん01/08/26 23:20ID:xL7OsRZc
>>721
ファイルは全てeuc-jpです。
0723デフォルトの名無しさん01/08/26 23:23ID:9O51.yx2
>>661
>◆printf()
> 呼び出し回数削減
> puts()で可能なところは代用
> "\n"を削除
文字列長が分かっている場合は fwrite() のほうがいいんじゃない?
0724デフォルトの名無しさん01/08/26 23:27ID:/FZALAjc
Shift_JISに見えるのは気のせい・・・?
0725名無し娘。 ◆vP.bOZFQ 01/08/26 23:30ID:clgr6qnI
>>724
気のせいじゃないかも
0726722つか、bbs_cgiの馬鹿です01/08/26 23:35ID:xL7OsRZc
くわ...こんなのばっかだ...鬱だ寝ます…
0727[email protected]01/08/26 23:43ID:paiaYiuM
すまん >>148 で恥ずかしいプログラム書きっぱなしだから
ちょっと補足いれさせてくれ。

要はdat_read関数上で'\0'から'*'に置き換えるのに
バッファを全部サーチしたのちに、再度getMaxLineで
各書き込みの先頭位置を検索するためにバッファを全部サーチしているので
一回のバッファサーチで両方の作業を行えばよいのではと
思ったわけです。即興でコードかいたんで無茶苦茶になっちまったけど、
できればこのコンセプトで誰か最適化してくれればうれしいっす。
0728デフォルトの名無しさん01/08/26 23:53ID:/FZALAjc
>>720
古すぎて役に立たないかな。ちなみにBase64(ナゼ

aHR0cDovL21hbmtvbWFua29tYW5rby52aXJ0dWFsYXZlLm5ldC9iYnMudHh0
0729369 ◆3XTuRnAc 01/08/26 23:56ID:iecZaXF2
えと、read11rev1をベースにread.cgi改造しました。
どんな改造かというと、

「gzip 1.2.4を強引に組み込んでみました」というものです。
逆にいうと、gzip 1.2.4に、強引にread.cgiの機能を入れてみた
ってところなのですが。

・・・・ソースいります?でかいですが。
なにしろgzip 1.2.4フルセットです。
0730爆♪01/08/26 23:57ID:jt9kAY8E
>>729
>なにしろgzip 1.2.4フルセットです。
パッチにして(藁
0731369 ◆3XTuRnAc 01/08/26 23:58ID:iecZaXF2
あ、フルセットじゃないです。
gzip.cとgzip.hだけで良いんですね良く考えたら。
gzip 1.2.4のフルセットは皆さんで落としてもらうとして(笑。

メリットは・・・プロセス数を浮かせられることかな(^^;;。
デメリットは、実行コードサイズがgzipと同等になっちゃうこと。
0732デフォルトの名無しさん01/08/26 23:59ID:Kg2ClUug
>>729
どっかにあぷしないと無理でしょう。
いや、確かにそういう話はあったし、間違っちゃいないと
思うけど、君素敵すぎ。
0733369 ◆3XTuRnAc 01/08/27 00:01ID:xXHglqmc
あ、すんません、まだでした。まだまともに動いてないす。
動いたというのは自分の勘違い。ごめんなさい・・・・。
0734デフォルトの名無しさん01/08/27 00:01ID:407N8DOw
すいません。
夜勤さんや削除委員長さんとは連絡取れないのでしょうか?
UNIX板が駄スレたちまくりなので対処してほしいのですが
0735デフォルトの名無しさん01/08/27 00:06ID:9Ji20W0U
使うのはzlibにしたらどうでしょう。
ところでbbs.cgiの方が着実にアップデートされていってますね。
真の精鋭はそっちに携わってる?
0736デフォルトの名無しさん01/08/27 00:07ID:oz/9pnnY
いま批判要望板で見かけたでし。
でもお手を煩わせていいものかどうか。
0737名無し娘。 ◆vP.bOZFQ 01/08/27 00:07ID:Km.fZ5BI
夜勤さんは縁の下でがんばりちゅうのようです。
0738デフォルトの名無しさん01/08/27 00:07ID:5zQpe5GQ
>>735
どこで?
0739デフォルトの名無しさん01/08/27 00:12ID:tF8/p42I
この辺に夜勤さんがいましたよ。
ttp://teri.2ch.net/test/read.cgi?bbs=accuse&key=998806470&ls=30
0740夜勤 ★01/08/27 00:13ID:/VYvqKxI
呼ばれて、来ました。
0741名無し娘。 ◆vP.bOZFQ 01/08/27 00:13ID:Km.fZ5BI
>>740
お疲れさまです。
あの、まだread.cgi開発中なのですが、これ以上改善を施して、
採用される見通しはありますか?
0742夜勤 ★01/08/27 00:16ID:/VYvqKxI
もちろん!
0743デフォルトの名無しさん01/08/27 00:17ID:ZT1fe3Xg
sure
0744名無し娘。 ◆vP.bOZFQ 01/08/27 00:17ID:Km.fZ5BI
確定ではありませんが、作業方針としては、
まず、現行プログラム各部の性格や機能を変えない範囲での最適化をする。
その後、可能なのであれば、包括的・抜本的な最適化(作り直し)をする。
といった感じです。
0745名無し01/08/27 00:17ID:N77k73Ds
夜勤さん bbs.cgi は公開できないんですか?
074672001/08/27 00:18ID:P7yLS.2Q
>>728
わざわざありがとうございます〜。
いただいてきます。

% こっちはCではないのですね。
0747名無し娘。 ◆vP.bOZFQ 01/08/27 00:19ID:Km.fZ5BI
>>742
わーい(泣
では、お手が空き次第、
http://nichrdcgi.hoops.ne.jp/read11.rev2.c
をpiza2にでも導入していただけますか。
インストールオプションは・・・あれ、調べておきます。
0748夜勤 ★01/08/27 00:20ID:/VYvqKxI
プログラムは完成することはありませんと思うので、、、
どこか区切りがついたら、呼んでください。実際にサーバに上げますので。

今の目的は、「転送量の軽減」です。

たぶん批判要望あたりをうろうろしてますので。
0749夜勤 ★01/08/27 00:22ID:/VYvqKxI
bbs.cgi を公開するのは、私には無理ですよー。
0750名無し娘。 ◆vP.bOZFQ 01/08/27 00:23ID:Km.fZ5BI
>>748
>今の目的は、「転送量の軽減」です。
では、今のうちに「最新レス100」->「最新レス100」とかの対処を
しちゃいましょうか。。。
0751369 ◆3XTuRnAc 01/08/27 00:24ID:xXHglqmc
ごめんなさい、gzip組み込みで難航中です。

gzipのstdin -> stdoutなモードを使用して

ログ出力→gzip stdin -> gzip stdout -> read.cgi stdout

ってーな方向で持っていこうと思ったのですが、
stdioのファイルディスクプリタをどうにかしないと
行けないことに気づきました。

・・・うーむ。こんなこと最初から気づけ俺。
0752デフォルトの名無しさん01/08/27 00:25ID:6kfMn/mA
>>747
http://nichrdcgi.hoops.ne.jp/read11.rev3.c
ですよ。
0753デフォルトの名無しさん01/08/27 00:25ID:469/dUs6
>>750
web制作の方でHTML軽減はやってるみたいですよ。

スキルの高い方知恵を貸してください2号
http://natto.2ch.net/test/read.cgi?bbs=hp&key=998774537
0754名無し娘。 ◆vP.bOZFQ 01/08/27 00:26ID:Km.fZ5BI
>>753
では、mergeしちゃいましょう。
0755名無し01/08/27 00:26ID:N77k73Ds
>>747
これ見れますか?
ファイルが無いようですが、、
read11.rev3.c ならある。
0756デフォルトの名無しさん01/08/27 00:28ID:284T.QVo
転送量の削減となると、やはりDATから変換したHTMLのサイズを減らすことを
優先すべきということでしょうか。

そもそもサーバのCPUパワーにはまだ余裕があるんですよね?>夜勤さん
0757名無し01/08/27 00:31ID: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
0758名無しさん || die01/08/27 00:32ID:YgC5b35I
web制作の方に書いた、「新しいレスだけ表示」はどうなんでしょ。
スレをROMってリロードしまくりの人が多いなら効果あると思うのだけど。
0759名無し娘。 ◆vP.bOZFQ 01/08/27 00:32ID:Km.fZ5BI
>>753
すいませんが、フォローしきれる自信がないので、read.cgiで変更すべき
点だけどなたか列挙してくださいませんか?
複数の方がやって下さっても、この際よいと思います。
# それだけ抜け落ちが少なくなるし…
0760デフォルトの名無しさん01/08/27 00:32ID:IuzteUCY
saladのread.cgiが、この時間帯でも全レス表示可能なようなのですが、
これは正常なのでしょうか?
0761名無し娘。 ◆vP.bOZFQ 01/08/27 00:35ID:Km.fZ5BI
(2時間くらいの目途で作業します)
0762技術とかでなく01/08/27 00:40ID:1NVzBQO2
プリペイド買った人のみスレを立てる権利を付ける
(日当たり回数制限付き)
プロキシーは一切制限する所から初めて、許可申請
で開ける様にする
(プロキシー潰して行く方向でやる方が面倒)
各板共に3分間は更新された内容が読み込めない様
にする
(同一IPからのリクエストは3分間はkickってのも在る?)

これで安泰
0763Web制作から転載です。01/08/27 00:43ID: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関係他よろしくです。
とりあえずタグレベルでは減量させたつもり。
0764デフォルトの名無しさん01/08/27 00:45ID:2MpScvZw
web製作板は転送量を減らしに躍起になって、
肝心なのを見失ってるって感じ。
せっかくのいい機会なのに……。
0765デフォルトの名無しさん01/08/27 00:46ID:9mNBJEMM
read.cgiで削れるところは少ないな。
とりあえず 最新レス100の100を半角にするか?(笑
あと「名前:」「投稿日:」削る、っていきなりやっていいんだろうか。
0766デフォルトの名無しさん01/08/27 00:46ID:NsFeEjCc
GetString (>690) が変わればすぐにもリンクの文字列が短くなり始めるのでは。
>620 (どのくらい検証されてる? さらなる改善は?)のように
dst を 20バイトしか使わないなら、char zz_im[1024] などとなっているのも [20] でいい。
0767名無し娘。 ◆vP.bOZFQ 01/08/27 00:47ID:Km.fZ5BI
まずは見た目に尽きにくい所から削っています。
HTML内の"\n"とか。
0768デフォルトの名無しさん01/08/27 00:47ID: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
0769名無し01/08/27 00:48ID:N77k73Ds
レスの表示形式
312 名無し 01/08/26/日 15:40
に意見がまとまりました。
0770デフォルトの名無しさん01/08/27 00:49ID:NsFeEjCc
>765 ファイル名を r.g か何かにして、.g を .cgi と同じに扱う(笑
0771名無し娘。 ◆vP.bOZFQ 01/08/27 00:49ID:Km.fZ5BI
>>766
そうですね。GetString関係は、まずread.cgiで(現在との互換性を
保ちつつ)実装しておきましょうか。
検証お願いします。できたら、最終版へのリンクもあるとありがたいです。
0772デフォルトの名無しさん01/08/27 00:49ID:pckFEAaY
HTTPヘッダ出力したところで

fflush(stdout);
gzdopen(1);
func_type *pFunc = gzip_flag ? gz_printf : fprintf;

して、printf を関数ポインタに置き換えるだけじゃだめなん?
gzip.c 組み込みって何してんの?
0773名無し娘。 ◆vP.bOZFQ 01/08/27 00:50ID:Km.fZ5BI
>>769
それ、やっていいんですかね(笑
夜勤★さんなりの確認いただけないでしょうか
0774デフォルトの名無しさん01/08/27 00:52ID:oFtR0rYM
■掲示板に戻る■
はなくても使い勝手が変わらないかと思います。
0775デフォルトの名無しさん01/08/27 00:52ID:eF1BPT8s
既出かもしれないけど。

>>000
のリンクで対象レス番号が既にブラウザで表示されている
範囲内にある時は<a name=〜>で移動するように
処理したら少しはread.cgiの呼び出し回数&転送量が減るかも。
0776デフォルトの名無しさん01/08/27 00:53ID:9mNBJEMM
日付形式はbbs.cgiに任せたほうがいいんじゃないか?
現状datのそのまま出力してるだけだし。
0777デフォルトの名無しさん01/08/27 00:53ID:vN9r/JlA
gzip 組み込むと GPL 適用だぞ。
0778デフォルトの名無しさん01/08/27 00:54ID:3lNlqFsM
>>774
他の板のスレッドから飛んだとき、「ここはどこだ?」となることがあったりする。
個人的には残して欲しい。
0779デフォルトの名無しさん01/08/27 00:54ID:nQB5Vf12
確かに今やってることって
『今の2ちゃんねる』の転送量を軽減することですよね。
あまり見た目は変えない方が良いかと。
0780369 ◆3XTuRnAc 01/08/27 00:56ID:xXHglqmc
>>772
えと、正確には「gzipにread.cgiを強引にマージしよう」っていう話です。

gzdopen()っていう名前から聞くと、gzlibとかそう言うのがあるのでしょうか。
man page見ても見つからないから、ひょっとしたら後から追加しないと
行けないのかな・・・>FreeBSD

情報お願いします。
0781デフォルトの名無しさん01/08/27 00:56ID:oFtR0rYM
>778
スレに用はあっても、板に用はないんじゃないですかね?
どんなもんでしょ?
0782デフォルトの名無しさん01/08/27 00:57ID:9mNBJEMM
とりあえず今日は見た目はあまり変えないって方針で。
でも名前:、投稿日:、は消してもよさそうだけどな。
0783デフォルトの名無しさん01/08/27 00:58ID:2MpScvZw
>>782
UIはまだ議論の余地があると思うので、
今回はあまりいじらない方がいいですね。
0784デフォルトの名無しさん01/08/27 00:58ID:pckFEAaY
>>780
zlib なんすけど、FreeBSD-4 なら /usr/include/zlib.h のコメント読んで
078578201/08/27 00:58ID:9mNBJEMM
あら、index2.htmに「投稿日:」が消えてますね。
こりゃread.cgiも消しちゃってOKじゃねーかな。
0786369 ◆3XTuRnAc 01/08/27 00:59ID:xXHglqmc
>>777
ええ、その辺は承知してます。
もしgzip組み込みがうまく行って、かつ、read.cgiのGPL適用が
問題なく、かつ、組み込む価値があるなら採用、どれかひとつでも
欠ければ不採用ってので今は組み込みやってるところです。

まあ、今は単純な興味を満たす自己満足みたいなものですかね。
それでうまく行けば儲け物っていう。
0787369 ◆3XTuRnAc 01/08/27 00:59ID:xXHglqmc
あ、zlibでしたか。了解です。
0788デフォルトの名無しさん01/08/27 01:00ID:iuwjXswY
mod_gzipって確定なのかな?
確定ならgzip組み込みって無い方がシンプルでいいと思う。
0789名無し娘。 ◆vP.bOZFQ 01/08/27 01:03ID:Km.fZ5BI
>>768
実装しました。まだ作業は続く。。。
0790デフォルトの名無しさん01/08/27 01:05ID:DhF2Uz5c
入力フォームは必要でしょうか?
フォーム出力専用のCGIのリンクをつけるのは駄目ですか?
0791名無し娘。 ◆vP.bOZFQ 01/08/27 01:05ID:Km.fZ5BI
えと、
>◆時刻の解析
> >>473 >>477 >>482 >>489 >>515 >>517
について、要するにどうすればいいのか、どなたかまとめていただけますか?
0792デフォルトの名無しさん01/08/27 01:06ID:284T.QVo
zlib組み込みならGPLに感染しないで済むぞ↓
http://www.gzip.org/zlib/zlib_license.html

とはいえ788に同意
0793デフォルトの名無しさん01/08/27 01:08ID:2Ic51Mxc
760の「この時間帯でも全レス表示可能」な問題って、
515、517の修正は入らないんでしょうか?

piza2(ここ)でも、全レス表示可能になってますが。
read.cgi Ver5.xxのとこは全部そうかな?
0794nanasi01/08/27 01:09ID:MWcmzrwU
age
0795デフォルトの名無しさん01/08/27 01:09ID:DhF2Uz5c
517で良いと。

mod_gzipはすぐにできないのでしょう?
0796デフォルトの名無しさん01/08/27 01:12ID:3lNlqFsM
取りあえず、改良をお願いします。

<BODY TEXT=black BGCOLOR=#EFEFEF link=blue alink=red vlink=#660099>
↓
<body>
0797デフォルトの名無しさん01/08/27 01:14ID:2MpScvZw
>>796
<BODY TEXT=black BGCOLOR=#EFEFEF link=blue alink=red vlink=#660099>
↑相当をCSSで実現するということですよね?
0798デフォルトの名無しさん01/08/27 01:14ID:ReF.V//c
むしろブラウザの設定任せにしてしまうということでは。
0799名無し娘。 ◆vP.bOZFQ 01/08/27 01:15ID:Km.fZ5BI
>>796-797
それは、管理のみなさんの了解はあるのでしょうか?
0800デフォルトの名無しさん01/08/27 01:15ID:YgC5b35I
>797
ちなみに index2 では既に body の属性消されてますよ。
0801デフォルトの名無しさん01/08/27 01:16ID:CbLq.TAQ
えー、これもガイシュツかもしれないのですが、
x-sjis を Shift_JIS にはまだできないのでしょうか?
0802デフォルトの名無しさん01/08/27 01:16ID:DhF2Uz5c
body削りOKなら、HEAD内全部削除は駄目ですか?(^^;
0803デフォルトの名無しさん01/08/27 01:17ID:284T.QVo
>>795
515じゃない?
0804デフォルトの名無しさん01/08/27 01:17ID:2MpScvZw
>>801
賛成です。
0805デフォルトの名無しさん01/08/27 01:18ID:oVJMiQ2Y
つか、encodingはmetaで指定するんじゃなくて、モノホンの
HTTPレスポンスで出した方が良くない?
0806デフォルトの名無しさん01/08/27 01:18ID:2MpScvZw
>>802
title要素は必要です。
0807名無し娘。 ◆vP.bOZFQ 01/08/27 01:19ID:Km.fZ5BI
んと、bodyとかheadの部分は後回しにしておきますから、夜勤さんに
お出で願えないかなぁ。
0808デフォルトの名無しさん01/08/27 01:19ID:oVJMiQ2Y
<body>とか<head>とかは省略可能タグじゃなかった?
080934801/08/27 01:20ID:ynZt.qo6
あ、またバージョンアップしてますね
http://star.endless.ne.jp/users/forcount/contents/scriptmaker/read11.rev3.c
こんな感じでage
0810名無し01/08/27 01:20ID:N77k73Ds
夜勤さん、どこにいるんでしょうね。
0811デフォルトの名無しさん01/08/27 01:21ID:2MpScvZw
>>808
時代と逆行してる気がする
0812デフォルトの名無しさん01/08/27 01:21ID:cn52pBwI
>>810
お呼び出しはしておきました。
0813nanasi01/08/27 01:23ID:MWcmzrwU
すんません、ここを巡回できるようにしたいのですが、
どのカテゴリで探せばよいでしょ?
0814デフォルトの名無しさん01/08/27 01:23ID:DhF2Uz5c
>>803

そうでした。>>515です

>>806

ブックマーク用ですか?
では、bodyのスレタイトルを消します?
0815デフォルトの名無しさん01/08/27 01:23ID: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 残して)
使っていいの?
0816デフォルトの名無しさん01/08/27 01:23ID:tF8/p42I
>>813
ここはプログラム技術板です。
0817デフォルトの名無しさん01/08/27 01:24ID:oVJMiQ2Y
とりあえず、
-printf("Content-type: text/html\n") ;
+printf("Content-type: text/html; charset=Shift_JIS\n") ;
にして、meta削るってのは?
#かちゅ〜しゃが書き込み時にエラー判定ミスってて大変やわ
0818ニュース速報板のタグが間違えている 01/08/27 01:25ID:X..P9zvs
ニュース速報板のタグが間違えている
わさと?ガイシュツ?

<a href="../news/./index2.htm">リロード</a>

これって index2.htm ではなく index2.html じゃないの?
このリンク先をクリックすると画面が狂って表示されない。
0819nanasi01/08/27 01:25ID:MWcmzrwU
>>816
ギコナビ使ってるんですが、プログラム技術のカテゴリが
見つかりません(涙
0820デフォルトの名無しさん01/08/27 01:27ID:284T.QVo
>>819
「プログラム」じゃないかな?
0821デフォルトの名無しさん01/08/27 01:28ID:tF8/p42I
>>819
http://210.150.210.150/sage/bbstable.html
ギコナビ使ったこと無いからわかんないんだけど
bbstable見てみたらどうでしょう?
0822nanasi01/08/27 01:29ID:MWcmzrwU
>>820
出てこないです・・・・。
0823デフォルトの名無しさん01/08/27 01:30ID:GRBfg3.A
>>822
カテゴリはPC等だよ
0824ニュース速報板のタグが間違えている 01/08/27 01:30ID:X..P9zvs
ニュース速報板のリロードのタグが間違えている
わさと?ガイシュツ?

<a href="../news/./index2.htm">リロード</a>

これって index2.htm ではなく index2.html じゃないの?
このリンク先をクリックすると画面が狂って表示されない。

それとここのスレに書き込むとエラーが出る by かちゅーしゃ
082582401/08/27 01:32ID:X..P9zvs
test
0826デフォルトの名無しさん01/08/27 01:32ID:GRBfg3.A
>>824
ホットゾヌだとエラーがでるが書き込めてるみたい。
0827名無し01/08/27 01:33ID:N77k73Ds
345 名前:夜勤 ★ 投稿日:01/08/26 23:48 ID:H8NM1U/A
read.cgi の改良で、25% くらいの改善の見込みが付いたところでしょうか、
で index2.html とか若干のインターフェイスの修正でさらに 20% くらいの
改善を目論んでいる(やってみなきゃ分からない)というのが、今の状況
です。さらにいくつかのサーバを停止すれば、目標である 50Mbps以下
にはなると思います。

じゃー これが何を意味するのか?ということですが、

2ちゃんねるが黒字の経営(言葉のつっこみは勘弁)であれば、60% 以上の
経営効率化に成功したとうことでしょうが、、、
残念ながら、今の2ちゃんねるにおいては、若干の延命措置を施した
だけだったりします。このへんのことは弁茶板の方々が詳しいと思います。
0828デフォルトの名無しさん01/08/27 01:33ID:cn52pBwI
>>824&>>826
スレ違い
2chの動作報告はここで。
http://teri.2ch.net/test/read.cgi?bbs=accuse&key=998808733
君たちの行き先はこっち
0829デフォルトの名無しさん01/08/27 01:33ID:BRbcVi3o
>>824
批判要望板へどうぞ。
083034801/08/27 01:33ID:ynZt.qo6
かちゅ〜しゃもなんかエラーが出ますね
でも一応書き込めてるようですが・・・
0831デフォルトの名無しさん01/08/27 01:34ID:pckFEAaY
Apache 1.3.20 の util_date.c なら単独ファイルだけで使えそうだ
からこっちにしますかね・・・
0832nanasi01/08/27 01:34ID:MWcmzrwU
>>821
bbstable上手く開かないです・・・。
>>822
PC等は確認済みですが、プログラム技術カテゴリ無いです・・・。
0833名無し娘。 ◆vP.bOZFQ 01/08/27 01:35ID:Km.fZ5BI
>>817
これってどうなのでしょう?
# RFC読み読み中
0834デフォルトの名無しさん01/08/27 01:36ID:cn52pBwI
>>832
http://piza2.2ch.net/tech/index2.html
0835デフォルトの名無しさん01/08/27 01:36ID:8q2NINpg
ところで今現在の進捗はどうなってるの?
0836名無し娘。 ◆vP.bOZFQ 01/08/27 01:36ID:Km.fZ5BI
>>803 >>814
>>515 実装しました。
0837デフォルトの名無しさん01/08/27 01:37ID:QEEMLonQ
>>832 だから板違いだ。作業の邪魔だから帰れ。
0838デフォルトの名無しさん01/08/27 01:37ID:IuzteUCY
>>833
古いネスケで文字化けする
ネスケ切り捨てるならそれでもいいかも
0839デフォルトの名無しさん01/08/27 01:37ID:DhF2Uz5c
夜勤さん待ち
084034801/08/27 01:38ID:ynZt.qo6
ところで今実際に稼働しているのはどのバージョンなんです?
まだ、read11とか動いてませんよね?

http://star.endless.ne.jp/users/forcount/contents/scriptmaker/read11.rev3.c
一応、最新版
0841デフォルトの名無しさん01/08/27 01:38ID:oVJMiQ2Y
>>833
RFC的には、
http://www.fxis.co.jp/DMS/sgml/xml/saloon/html_correct_charset.html
ここいら見れ。
0842nanasi01/08/27 01:39ID:MWcmzrwU
>>837
後学のため、ログ読みたかったのですが・・・・。
堕ちます・・・。
0843デフォルトの名無しさん01/08/27 01:40ID:DhF2Uz5c
>>838

SHIFT-JISなので、ほとんど化けない。
0844デフォルトの名無しさん01/08/27 01:40ID:pckFEAaY
>>842
マジレスしとくと後学のためになるような作業ではない
数学の勉強でもしてろ
0845デフォルトの名無しさん01/08/27 01:40ID:ReF.V//c
Web制作板の守備範囲かもしらんけど、
<HTML></HTML>も消しちゃっていいことないスか?
0846名無し01/08/27 01:41ID:N77k73Ds
鯖6台止める案が有力だって。
0847名無し娘。 ◆vP.bOZFQ 01/08/27 01:41ID:Km.fZ5BI
"charset=x-sjis" -> "charset=Shift_JIS" だけにしときます
0848デフォルトの名無しさん01/08/27 01:41ID:IuzteUCY
>>843
100%化けるんだよ。欧文文字コードと勘違いして。
まあネスケがタコと言えばそのとおりなんだが。
0849デフォルトの名無しさん01/08/27 01:41ID:2MpScvZw
>>845
時代に逆行しているような気がする
0850デフォルトの名無しさん01/08/27 01:42ID:IuzteUCY
>>849
xhtmlとかにして無駄に転送量増やすくらいなら
逆行してても仕方ない
0851デフォルトの名無しさん01/08/27 01:42ID:oVJMiQ2Y
>>838
とりあえず、そーすみしてくれ。
0852デフォルトの名無しさん01/08/27 01:42ID:BRbcVi3o
517 名前:夜勤 ★ 投稿日:01/08/27 01:40 ID:???
read.cgi 5.xx の採用の結果(速報)

ピーク時の転送量はだいたい 45% 減。
CPU 負荷は、ほとんど導入前と変わらないようです。

すごい効果がでていると思います。
UNIX 板の方々に感謝!

あとは mod_gzip がどうなるかが楽しみです。
まだ、導入できると決まったわけじゃありませんが、
085380101/08/27 01:43ID:CbLq.TAQ
バイト数を減らすという目的でいろいろ出てますが、
そのためにといってCGIにはかせるHTMLを
最低限のヘッダ要件をも満たしてないものにするのは
いかがなものかと思うわけです。
0854デフォルトの名無しさん01/08/27 01:44ID:tF8/p42I
コピペです


517 名前:夜勤 ★ 投稿日:01/08/27 01:40 ID:???
read.cgi 5.xx の採用の結果(速報)

ピーク時の転送量はだいたい 45% 減。
CPU 負荷は、ほとんど導入前と変わらないようです。

すごい効果がでていると思います。
UNIX 板の方々に感謝!

あとは mod_gzip がどうなるかが楽しみです。
まだ、導入できると決まったわけじゃありませんが、
0855デフォルトの名無しさん01/08/27 01:44ID:IuzteUCY
>>851
「ネスケ 文字化け」とかでGoogleしてみてくれ
結構有名だからWeb板の住人なら誰でも知ってそうだが
0856名無し娘。 ◆vP.bOZFQ 01/08/27 01:45ID:Km.fZ5BI
>>853
個人的に同感です。
ところで、そろそろ新スレ?
あと、GetString関係、>>620をもとに実装してみます。
それが終わったらコンパイルテスト後にソースアップします。
0857デフォルトの名無しさん01/08/27 01:45ID:YgC5b35I
文字化け多発→リロードしまくり&あちこちで質問される→転送量増加
0858デフォルトの名無しさん01/08/27 01:46ID: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
0859デフォルトの名無しさん01/08/27 01:46ID:IuzteUCY
x-sjisにする必要がないというならx-gzipにも配慮する必要ないと思う
0860デフォルトの名無しさん01/08/27 01:46ID:QEEMLonQ
<HTML>削るのは最後の最後の最後の手段だね。
0861Web制作板01/08/27 01:47ID: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>

提案はまとめて出した方がいいでしょうか?それとも決定次第出した方がいいでしょうか?
0862デフォルトの名無しさん01/08/27 01:48ID:IuzteUCY
<HTML>削ってもHTMLの仕様に違反するわけではないよ
分かってるとは思うけど
http://www.ne.jp/asahi/minazuki/bakera/html/reference/basic#html
0863名無し01/08/27 01:49ID:N77k73Ds
新スレにこれも載せてください。

http://www.gedoh.org/aki/2ch/wiki/yukiwiki.cgi?TopPage
0864デフォルトの名無しさん01/08/27 01:49ID:YgC5b35I
htmlやbody削ると見れなくなるブラウザってある?
仕様よりも実装優先で。
0865デフォルトの名無しさん01/08/27 01:50ID:2MpScvZw
>>862
http://www.w3.org/TR/xhtml11/
0866デフォルトの名無しさん01/08/27 01:49ID: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が判別に失敗するときあるし。
0867デフォルトの名無しさん01/08/27 01:50ID:oVJMiQ2Y
>>860
DTD書いてない時点で、「ブラウザが解釈できる限界まで削る」という
方針でもいいんじゃ無いかと思うけどな。

>>855
httpのヘッダでなく、metaに入れないと化けるって事なら、みつけられん
charsetがShift_JISだから(x-sjisでないから)、ってことなら、了解。
0868名無し01/08/27 01:51ID:N77k73Ds
夜勤さん、どこへ行っちゃったんだろうか?
0869デフォルトの名無しさん01/08/27 01:51ID:IuzteUCY
>>865
2chのhtmlはxhtmlじゃないでしょ
もしそうならすでに違反しまくり
今さら<HTML>を残したって同じこと
そもそもxhtmlでは<html>と小文字でなくちゃ駄目
0870デフォルトの名無しさん01/08/27 01:52ID: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
0871デフォルトの名無しさん01/08/27 01:52ID:pckFEAaY
>娘。
日付関数動いた。
compile するのに apache の tarball 要る(configure のため)と思う
んだけどどうすればいいかな?
夜勤さんの方でコンパイルするのにそれは辛いでしょ?
# ちょっと今から configure 抜きで必要そうなファイルだけで試してみますが
0872デフォルトの名無しさん01/08/27 01:52ID:YgC5b35I
タグ関連はここにどんどん書いてもらって、後で取捨選択しては?
http://www.gedoh.org/aki/2ch/wiki/yukiwiki.cgi?mycmd=read&mypage=%5B%5Bhtml%82%CC%8Ed%97l%5D%5D
0873デフォルトの名無しさん01/08/27 01:53ID:IuzteUCY
>>867
詳しいことは忘れたけどmetaに入れた場合とHTTPヘッダに
入れた場合でもネスケ3はなぜか動作が違う
まあ苦情が来なければいいかも
087484501/08/27 01:53ID:zjmRlAwo
すんません。やっぱこのスレで出すべき話じゃなかったかも。
0875デフォルトの名無しさん01/08/27 01:55ID:DhF2Uz5c
>>848

>>838で古いネスケって書いてあったので、Ver1や2の頃かと思っていました(^^;
Ver4台で起きているのですね(^^;
では、METAタグがよろしいかと。。。
古いバージョンは逆にcharset=Shift_JISはOKなのかな。
(スレ違いすみません)
0876デフォルトの名無しさん01/08/27 01:56ID:6kfMn/mA
147 名前:夜勤 ★ :01/08/27 01:54 ID:???
これから、全サーバに read.cgi 5.xx を入れに行ってきます。
たくさんサーバあるので、ぼちぼち入れます。

コピペです。
0877デフォルトの名無しさん01/08/27 01:56ID:3lNlqFsM
>>872
後で取捨選択、をやろうとして現在Web制作の方が結構大変なことになってるんですが…。
0878名無し01/08/27 01:56ID:N77k73Ds
>147 名前:夜勤 ★ :01/08/27 01:54 ID:???
>これから、全サーバに read.cgi 5.xx を入れに行ってきます。
>たくさんサーバあるので、ぼちぼち入れます。

だそうです。最終版のプログラムを提示して下さい。
0879スレ違いスマソ01/08/27 01:57ID:IuzteUCY
>>875
ネスケ1や2や4は大丈夫。だめなのはネスケ3のみ。
ネスケ3だとcharset=Shift_JISもHTTPヘッダ使うのもだめ。
0880名無し娘。 ◆vP.bOZFQ 01/08/27 01:57ID:Km.fZ5BI
んと、hoopsもう入れなくなってます(汗
アップできないのでしばらくお待ち下さい。。。
# あぷろだにでもあげようか…
0881デフォルトの名無しさん01/08/27 01:59ID:ZIaMkoUw
ウダウダレスしてねーで、はやく実行しろよ。

やっぱここはUNIX板とは違うオナ〜ニ板でしかなかったのか・・・
0882デフォルトの名無しさん01/08/27 01:59ID:yw5i/z86
>>859
文字コードはブラウザで強制的に切り替えできるけど、
x-gzipにgzipで返されるとどうにもならない。
088334801/08/27 01:59ID:ynZt.qo6
こっちであげますよ

[email protected]
宛に
id:2chread
pass:readcgi
という内容で添付して送っていただければ
自動的にアップされます
0884デフォルトの名無しさん01/08/27 02:00ID:pckFEAaY
>>881
メンバーほとんど同じだと思うけど
0885369 ◆3XTuRnAc 01/08/27 02:01ID:xXHglqmc
>娘。さん
うちのftpつかってくれて良いですよ。ftpポート開いてます。
210.170.170.131
0886デフォルトの名無しさん01/08/27 02:01ID:IuzteUCY
>>882
ネスケ3もHTTPヘッダやhtmlで指示された文字コードは切り替えられない
0887369 ◆3XTuRnAc 01/08/27 02:01ID:xXHglqmc
あ、そっちのほうがいいですね>>883さん
0888デフォルトの名無しさん01/08/27 02:02ID:QEEMLonQ
>>861
っと、それはbbs.cgiの部分だな。
とりあえずWeb製作のスレで「決定事項」としてまとめとけば、
必要になったらこっちから見に行くんじゃないかな。
0889デフォルトの名無しさん01/08/27 02:02ID:ZIaMkoUw
こっちも見ろや
http://natto.2ch.net/test/read.cgi?bbs=hp&key=998774537&ls=50
0890デフォルトの名無しさん01/08/27 02:03ID:BrafyimQ
ところで、最新ソースのレポジトリはどこさ?
0891デフォルトの名無しさん01/08/27 02:03ID:3lNlqFsM
>>888
了解しました。
089234801/08/27 02:05ID:ynZt.qo6
>>883の手順でアップしたら
一応
http://star.endless.ne.jp/users/forcount/4countbbs/scriptmaker/index.html
に告知しておいて下さい
5分ごとにチェックしてます
0893デフォルトの名無しさん01/08/27 02:06ID:cn52pBwI
新スレ建てておきました。
0894名無し娘。 ◆vP.bOZFQ 01/08/27 02:08ID:Km.fZ5BI
>>883
使わせていただきました。ありがとうございます。
ftp://210.170.170.131/incoming/2ch-read-current/read12.c
ftp://210.170.170.131/incoming/2ch-read-current/Makefile
コンパイルまでは確認済です。
0895デフォルトの名無しさん01/08/27 02:10ID:cn52pBwI
失礼。
新スレのリンクし忘れました。
http://piza2.2ch.net/test/read.cgi?bbs=tech&key=998845501
です。
0896369 ◆3XTuRnAc 01/08/27 02:11ID:xXHglqmc
うーん、zlib対応がなんかいまいちうまく行かない。
gzprintfが、printfじゃなくてfprintf相当というのが結構面倒(^^;;。

なんか、話を混乱させてしまいそうですし、できる見こみも少ないので
「gzipマージ/zlib利用」はおいらのところでは断念することにします。

みなさま、混乱させてごめんなさい。

# 悔しい・・・。なにより、実現できると思ったことが実現できないことが。
0897名無し娘。 ◆vP.bOZFQ 01/08/27 02:11ID:Km.fZ5BI
新スレあるけど、報告だけこちらに。

HTML吐き出し部分での改造は、"100"を"100"にしたこと、
JavaScriptにエラーが出ない範囲で"\n"を省略したこと。
read.cgiバージョン表示部分を短くしたこと。

大きなことは、#ifdef GSTR2。

その他は、x-gzipのこと、tm_nowのこと、x-sjisのこと。
0898デフォルトの名無しさん01/08/27 02:13ID:pckFEAaY
>>896
printf 全置き換えでだめだったの?
0899369 ◆3XTuRnAc 01/08/27 02:22ID:xXHglqmc
>>898
あ、それやってないです。
ちょうどread12が公開された見たいだし、もう一度やってみようかな・・・。
0900デフォルトの名無しさん01/08/27 02:23ID:KshZOEYc
>>896
やったところまで Wiki にでも上げといたらどう?
誰か跡継いでくれるかもよ。
0901デフォルトの名無しさん01/08/27 02:24ID:yw5i/z86
>>886
x-sjisは変わらんが、Shift-Jisは変えられる様だ。
3.01jaを引っ張り出して来て試してみた。
0902369 ◆3XTuRnAc 01/08/27 02:26ID: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])

じゃないですか?
0903369 ◆3XTuRnAc 01/08/27 02:28ID:xXHglqmc
てことで、その修正入れたのを

ftp://210.170.170.131/incoming/2ch-read-current/read12.1.c

としてコピーしておきました。
0904デフォルトの名無しさん01/08/27 02:30ID:2NFCZnYc
新スレに移行された方がよいのでは?
プログラマが2chを救う!?2
http://piza2.2ch.net/test/read.cgi?bbs=tech&key=998845501
0905772じゃないけど01/08/27 02:34ID: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"ってのは個人的な趣味なんで気に入らなければ外してもいいです
0906デフォルトの名無しさん01/08/27 02:35ID:yw5i/z86
>>886 >>901
ごめん、Shift_JISだった。
表示コードを変えられなかったが、sjisだと認識するんならOKだし、
不明なコードなら変更できるんだからかまわないんでは。
0907デフォルトの名無しさん01/08/27 02:36ID:pckFEAaY
>>905
そうそう、そんな感じで。
0908デフォルトの名無しさん01/08/27 02:38ID:IuzteUCY
>>906
確か変えられなくて困った記憶があるんだが…記憶違いかも。
確かめてみる。
0909デフォルトの名無しさん01/08/27 02:45ID:vN9r/JlA
>>905
 (*zz_printf)(zz_fptr, "fmt", ...)
は
 zz_printf(zz_fptr,"fmt", ...)
の方が良いと思われ。(ANSI C には反しない。)
後で元に戻すとき楽だと思う。
0910デフォルトの名無しさん01/08/27 02:48ID:pckFEAaY
てか、cpp では

#define printf(str, ...) zz_printf(zz_fptr, str, ...)

みたいに可変引数できるんだっけ?
0911デフォルトの名無しさん01/08/27 02:51ID:oVJMiQ2Y
#define printf(format, args...) zz_printf(zz_fptr, format, ## args)
ってのでGNU Cの拡張で「だけ」OKだったはず。
0912デフォルトの名無しさん01/08/27 02:51ID:yw5i/z86
>>908
EUCなのに、x-sjisとかShift_JISとか書いてあって困ったんではないの。
間違ってShift-Jisってやったら変えられたからね。
0913デフォルトの名無しさん01/08/27 02:52ID:oVJMiQ2Y
http://www.asahi-net.or.jp/~wg5k-ickw/html/online/gcc-2.8.1/gcc_3.html
詳しくはここいらの「可変個の引数をもつマクロ」を見れ
0914デフォルトの名無しさん01/08/27 02:53ID:pckFEAaY
ま、んなことせんでも引数1〜10個まで#defineすればいっか
091590801/08/27 02:54ID:IuzteUCY
すまん完全に勘違いしてた。
文字化けするのはネスケ2だった。
0916デフォルトの名無しさん01/08/27 02:55ID:IuzteUCY
ネスケ2でShift_JISを指定してもEncodingがWesternに固定されて
変えられない。もちろん文書はシフトJIS。
2.02で確認。
0917デフォルトの名無しさん01/08/27 02:58ID:yw5i/z86
>>915
さすがに、ネスケ2はそこらに残してない。
0918デフォルトの名無しさん01/08/27 03:00ID:5VdVXYrU
いまベンチャー板にひろゆき(本物)いた。
http://yasai.2ch.net/test/read.cgi?bbs=venture&key=998402480
0919デフォルトの名無しさん01/08/27 03:04ID:pckFEAaY
ひろゆきが助けてくださいと言って
西さん一晩考えるって・・・
0920-01/08/27 03:29ID:q7WWiv5M
全鯖に read.cgi ver5.02 入ってますな。夜勤さん、おつかれさま・・・
0921デフォルトの名無しさん01/08/27 04:01ID:vN9r/JlA
実況防止機能(素早い reload を無視)
http://cocoa.2ch.net/test/read.cgi?bbs=unix&key=998764722&st=490
0922らいがー。01/08/27 04:30ID:R/rjVC1g
あなた達かっこいいよ・・・。
0923デフォルトの名無しさん01/08/27 23:40ID:bJ23bC3M
/* <ctype.h>等とかぶってたら、要置換 */
#define false (0)
#define true (!false)
#define _C_ (1<<0) /* datチェック用区切り文字等 */
#define _U_ (1<<1) /* URLに使う文字 */
#define _S_ (1<<2) /* SJIS1バイト目=<br>タグ直前の空白が削除可かを適当に判定 */

//#define isCheck(c) (flagtable[(unsigned char)(c)] & _C_)
#define isCheck(c) (flagtable[/*(unsigned char)*/(c)] & _C_)
#define isSJIS1(c) (flagtable[(unsigned char)(c)] & _S_)
#define hrefStop(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-37 01234567
__1___,__1___,__1___,__1___,_0____,__1___,______,__1___, // 38-3F 89:;<=>?
__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-4F HIJKLMNO
__1_3_,__1_3_,__1_3_,__1_3_,__1_3_,__1_3_,__1_3_,__1_3_, // 50-57 PQRSTUVW
__1_3_,__1_3_,__1_3_,__1_3_,__1_3_,__1_3_,__1_3_,__1_3_, // 58-5F XYZ[\]^_
__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-6F hijklmno
__1_3_,__1_3_,__1_3_,__1_3_,__1_3_,__1_3_,__1_3_,__1_3_, // 70-77 pqrstuvw
__1_3_,__1_3_,__1_3_,__1_3_,__1_3_,__1_3_,__1_3_,______, // 78-7F xyz{|}~
____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
};
0924デフォルトの名無しさん01/08/27 23:41ID: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;
0925デフォルトの名無しさん01/08/27 23:42ID: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;
#ifndef TYPE_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++;
}
0926デフォルトの名無しさん01/08/27 23:43ID: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()を何度も呼ぶのは大きな無駄
}
0927デフォルトの名無しさん01/08/27 23:43ID:bJ23bC3M
その他に直す部分は、
先頭のほうに、
#define false (0)
#define true (!false)
#define LINKTAGCUT true

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()
マクロで定義しなおしているので、
#if 0
#endif
ででもはさんでくれ(コンパイルエラーが出る)。
res_split()とfindSplitter()も必要なくなるが、エラーにはならないので。
0928デフォルトの名無しさん01/08/28 00:19ID:gWXKzR9.
わかると思うけど、
>>925の
 case '&':
の下は、当然、
  if (memcmp(p, "&amp", 4) == 0) {
ね。
0929デフォルトの名無しさん01/08/29 22:04ID:eQiT7HbI
BadAccessってさ、なんでif文を切ってるの?
コンパイルした時にダイナミックステップが多くなるじゃん。
caseにしろよ。その方が高速化するぞ。
0930デフォルトの名無しさん01/08/29 22:38ID:6wtO5bLA
>>929
文字列比較にcase?
レス数が900を超えています。1000を超えると表示できなくなるよ。