プログラマが2chを救う!?
レス数が900を超えています。1000を超えると表示できなくなるよ。
0001デフォルトの名無しさん
NGNG動かないと2ch縮小・停止の情勢・・・。
具体的には・・・
・P2Pシステムが代替案としては妥当なのか否か
・他の優良アイデアはあるのか
・言語は何を選ぶのか
・根本的な問題として、2ch(ひろゆき等々)を救う必要があるのか
を話し合っていただきたいと思います。
では、どうぞ・・・・
0002デフォルトの名無しさん
NGNGここでがんばってるようなので、応援してくらはいー
0003デフォルトの名無しさん
NGNG0004デフォルトの名無しさん
NGNGあんま関係ないけど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デフォルトの名無しさん
NGNGDreamPassportのチェックなんて最後でいいだろ。
なんで最初にやってるんだよ。
printf使いすぎ。複数のprintfを1つにまとめろ。ついでにputsに置き換えろ。
0007デフォルトの名無しさん
NGNG別に張り合うわけじゃないけど、あっちは”緊急に”
gzip 化と Last-modified: チェックを導入したいみたいだし
0008デフォルトの名無しさん
NGNGいいアイディア。
張り合っちゃおう。
0009デフォルトの名無しさん
NGNG0010デフォルトの名無しさん
NGNG0011どうでも良い事
NGNG>>6
printfまとめるのはコンパイラがやってくれるんじゃねーの?
0012デフォルトの名無しさん
NGNGはテーブル引いて一行に書き換えろ。
0013デフォルトの名無しさん
NGNGlogOut(char *txt)
ってアクセス記録だよね....
0014デフォルトの名無しさん
NGNGんなこたない
0015デフォルトの名無しさん
NGNGホントだ!!
0016デフォルトの名無しさん
NGNG0017デフォルトの名無しさん
NGNGchar *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これは?
NGNG0020デフォルトの名無しさん
NGNGでもさ、書き込みログじゃなくて、読み込みログだから
いいんじゃないの?
でも、なんか、書き込み時もログとってそう、、、
0021仕様書無し
NGNGアラ探しより先にする事があるだろう
0022どうでも良い事
NGNGhttp://piza.2ch.net/read4.txt read.cgiのソース
0023デフォルトの名無しさん
NGNG関数毎にやっていったほうが効率よくない?
0024デフォルトの名無しさん
NGNG---
int BadAccess()
機能:ブラウザが正当かをチェックする
引き値:なし
返戻値:USER_AGENT が正当であれば1、不正であれば0
---
こんな感じでいいかなぁ?
0025デフォルトの名無しさん
NGNG0026どうでも良い事
NGNG0027デフォルトの名無しさん
NGNGconst 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デフォルトの名無しさん
NGNG0029どうでも良い事
NGNG003027
NGNG間違えた。
0031デフォルトの名無しさん
NGNGまあ、いろいろと突っ込みたくなる codeだけどさ。
0032デフォルトの名無しさん
NGNGそれだと高速化しても無意味じゃ…
0033デフォルトの名無しさん
NGNG機能:読み込みログの記録
引き値:用途不明
返戻値:ファイルエラーで0 、それ以外1
呼び出す関数:BadAccess()
0034[email protected]
NGNG簡単なフローとか作ったほうがいいのかも。
003527
NGNG鬱死
0036デフォルトの名無しさん
NGNGそっちは
http://cocoa.2ch.net/test/read.cgi?bbs=unix&key=998695422
にお任せということで...
>>7 >>8 参照
0037デフォルトの名無しさん
NGNG既出です( >>7-9 )。
0038デフォルトの名無しさん
NGNGんなもんコード見りゃわかる。
わからなきゃ調べて関数仕様ageたら。
最適化前->後の変化は初学者には結構勉強になるかもね。
0039デフォルトの名無しさん
NGNG0040デフォルトの名無しさん
NGNG0041デフォルトの名無しさん
NGNGint html_banner()
機能:バナーを標準出力に
返戻値:なし (っていうかreturnしてないし)
---------
ほんと役に立たなくてすまないが残りは頼んだ。ちょっと落ちる。
0042デフォルトの名無しさん
NGNGつーか、使わないほうがいいやね。それ。
0043デフォルトの名無しさん
NGNG0044デフォルトの名無しさん
NGNGあっ へっだ これです、すんません。
----
/**/
/**/
/*
#define CM_BBSPINK
#define LOGLOGOUT 1
*/
#define TYPE_TERI
#define Katjusha_Beta_kisei
----
read.2ch.h のヘッダの中身です。
0045デフォルトの名無しさん
NGNGint 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デフォルトの名無しさん
NGNGgzip の圧縮レベルを上げることができる。
http://cocoa.2ch.net/test/read.cgi?bbs=unix&key=998695422
では、圧縮レベルをどうするか迷ってたみたいだからね。
ところで、gzip 採用でボトルネックになるのは
cgi なのかな。それとも、gzip エンジン?
0047うーん
NGNGもっとも、printfストリーム関数使ってるからある程度まとまってるとは思うけど、ライブラリ依存だなぁ。
CGI内部でバッファ制御して吐き出せば多少変わるかもな。
ほとんど気休めな程度な気がするが・・・
0048デフォルトの名無しさん
NGNGreturn 忘れてるYO!!
0049デフォルトの名無しさん
NGNGisgraph()もテーブルに押し込めろ
0050地道にやろう
NGNG0051デフォルトの名無しさん
NGNGIRCへ移動するプランが提案されています。
0052名無
NGNG対策を練ります。
0053デフォルトの名無しさん
NGNG荒らしがしつこければ制限かけるだろう
0054デフォルトの名無しさん
NGNGよいんじゃない?CGIじゃ限界あるでしょ。
0055デフォルトの名無しさん
NGNG0056デフォルトの名無しさん
NGNGdoReplace って
*des のうち *str0がみつかったら消す。で、消したところの
始めのポインタを返す
でいいの?
*des ="abcdefg" *str0="cde"
なら
*des = "abfg"
戻り値: des + 2
ってこと?
でもstr1の意味って何?
0057デフォルトの名無しさん
NGNGかわりににstr1が追加されるのね。
*des ="abcdefg" *str0="cde" *str1="kkkk"
なら
*des = "abkkkkfg"
戻り値: des + 2
なのかな?
0058デフォルトの名無しさん
NGNG0059デフォルトの名無しさん
NGNG0060デフォルトの名無しさん
NGNG中にあるのかNA...
0061デフォルトの名無しさん
NGNGstrcmpのほうが速いの?
0062デフォルトの名無しさん
NGNG006358>61
NGNGif(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デフォルトの名無しさん
NGNGUAにはたいていバージョン番号が含まれてるし難しいと思われ
とりあえず仕様を変えないで最適化できる範囲で
0065デフォルトの名無しさん
NGNG0066デフォルトの名無しさん
NGNG協力してurlにリンクを張っているらしいね。
何度もバッファに書き出していて効率悪い。
全部総とっかえしたほうがよさそう。
0067デフォルトの名無しさん
NGNGその関数の依存関係を簡単でいいからおしえてくれるとたすかる。
0068デフォルトの名無しさん
NGNGクライアントに任せろ。
006968
NGNG0070デフォルトの名無しさん
NGNG0071デフォルトの名無しさん
NGNG0072デフォルトの名無しさん
NGNGI/O減らすだけが目的ならこのスレで話し合ってる最適化自体
ほとんど無意味です
007369>72
NGNG2chブラウザとの連携を視野に入れつつ最適化。
0074デフォルトの名無しさん
NGNGURLの終端まで一文字ごとに出力、URLの終端に来たらタグを閉じて
次のURLを探す。
ってやった方が良いんでない?
0075デフォルトの名無しさん
NGNGそれならread.cgiは全面的に止めたほうがいいかと
007666
NGNGExistHlinkを呼び出して、対象となるソースの中からurlを抜き出し、同時にリンク済みのタグつきurlを出力してもらい、
それをdoReplaceでhtmlに埋め込んでいる。
ExistHlinkは、http://とftp://とでExistHlinkXを呼び出していて、実際にurlを抜き出しているのはこちら。
ExistHlinkではhttp://があるかどうかを調べて、あるならそこからurlを抜き出し、
そこからcutWordOffで"""を省いて、タグつきurlをsprintfで出力している。
これを直すのはたいへんだな。
0077デフォルトの名無しさん
NGNGttp://〜
ってする板も多いので、いっそ廃止でも……。>http〜
007867
NGNG0079デフォルトの名無しさん
NGNGint 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それだと通常のブラウザから一切見えなくなっちゃうじゃん。
0081ペイント聖矢
NGNG0082[email protected]
NGNG今、全体のフローらしきものを作ってます。
ところで、dat_readはレス1つ指定でも必ずファイル全部読み出して
処理しているのかな?
0083デフォルトの名無しさん
NGNGすっきりしたね。
でもkickだけあればいいのではないかという気もする。
0084デフォルトの名無しさん
NGNGint 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デフォルトの名無しさん
NGNG0087デフォルトの名無しさん
NGNGhttp://www.shitaraba.com/bbs/programtech/index.html
どっかもっと良いとこある?
0088デフォルトの名無しさん
NGNGそういう構想だけは前からある。
「2chのような掲示板システムってP2Pで」
http://piza2.2ch.net/test/read.cgi?bbs=tech&key=990334284
0089デフォルトの名無しさん
NGNG改良版の問題は、ドリキャスがブラウザのシェアを独占したら
かえって重くなるということだな(笑)。
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デフォルトの名無しさん
NGNGhttp://cocoa.2ch.net/test/read.cgi?bbs=unix&key=998695422
の 291 も加えてください。
0092デフォルトの名無しさん
NGNGout_html1() だって、、、
コメントもコピペなのかあてにならんし
0093デフォルトの名無しさん
NGNG0094[email protected]
NGNGzz_GetStringはHTTPの環境変数を取得します。
ブラウザから要求をかけたときに付帯するプロトコル情報です。
あと、http://**.com/read.cgi?st=8%ls=5
のようなcgiに変数を引き渡すときに使用されます。
解析続き
各バッファの相関関係
・BigBuffer datファイルから読み出したデータ格納バッファ
・BigLine BigBufferの各レス先頭位置を示すポインタが格納されている配列
getLineMaxでBigBufferを全てスキャンして、
\nならそのポインタ位置を記憶、NULLに置き換える。
最大転送量・\nが見つからない場合(ファイルの最後?)で処理終了
取得したライン(ログ数)を返す
0095仕様無しさん ◆NwLv.g/w
NGNG0096[email protected]
NGNGごめん read.cgi?st=3%ls=5
の?以下が環境変数となります。
HTTPDのAPIでこの値を取得できます。
ただ、折れの知っている情報って組み込み用HTTPDについてなので
汎用的なサーバのHTTPDだと違うかもしんない・・・。
0098[email protected]
NGNGどちらかっていうとget_envでとってくるのが環境変数ですね。
0099デフォルトの名無しさん
NGNG0100デフォルトの名無しさん
NGNGでも対策スレが立っています。夜勤さんも来ています。
0101265
NGNGってことにしたんだけど.. あっちどうなってるんだろう..
0102デフォルトの名無しさん
NGNG0103デフォルトの名無しさん
NGNG当面問題なのは転送量だからUNIX板の方には
先に走ってもらって転送量削減のめどかついた時点で
圧縮により増えた負荷を下げるようにこちらの結果を
反映していけばよいのではないでしょうか
0104デフォルトの名無しさん
NGNGいいえ、Cプログラミング診断室です。
0105デフォルトの名無しさん
NGNGこっちの意見も言っといた方がよくない?
0106265
NGNGワラタ
0107デフォルトの名無しさん
NGNG全レスbufに溜める方式で良いのか?
0108デフォルトの名無しさん
NGNG0109デフォルトの名無しさん
NGNGとりあえず期日は今月末だから、結果が出るものを
先に作ったほうがよい。というか作り終えたみたいだが
(これからテスト)
0110デフォルトの名無しさん
NGNGそうそう、それ良くないよ。
0111デフォルトの名無しさん
NGNGそれがいいと思う。
ただそうする場合、向こうにその方針伝えて置いた方がよさげ。
0112デフォルトの名無しさん
NGNG向こうはデータの入出力に手を入れている。
こっちはデータの解析・加工に手を入れている。
違うところを修正しているのだから問題ないと思うけど。
0113デフォルトの名無しさん
NGNG5chへ移動
0114デフォルトの名無しさん
NGNGこっちはちゃんと書き直すのがよいと思われ。
っていうか、mmapして行数数えたほうがよくねえか?
0115UNIX板より
NGNG419 名前:夜勤 ★ 投稿日:2001/08/25(土) 23:20
piza2 に入りました。
私は 転送量と load average を観察中。。。
0116デフォルトの名無しさん
NGNG今必要とされてる課題は転送量の削減だから、
それ以外の改良を同時に施してもわけわからなく
なるか。
あっちがリリースされてからのほうがいいよ
0117デフォルトの名無しさん
NGNG0118デフォルトの名無しさん
NGNGgzip関連以外は特に変えてないみたいだよ
0119デフォルトの名無しさん
NGNGとゆーかそれなら、練習の為に書いたコードが手元にある。
0120デフォルトの名無しさん
NGNGとりあえずはgzipの部分と直行性のありそうな、htmlの生成の部分を
最適化しときましょうってスレ。
0122265
NGNGアップきぼんぬ。
http://server2047.virtualave.net/gorogorogoro/2chresque/
か
ftp://210.170.209.10/incoming
↑UNIX板で提供されたんだけどたぶん大丈夫でしょう
0123デフォルトの名無しさん
NGNG読み込みの早さから、圧縮は成功している・・と思われる
2ch閉鎖の危機なんだと
http://cocoa.2ch.net/test/read.cgi?bbs=unix&key=998695422
0124デフォルトの名無しさん
NGNG0125[email protected]
NGNGあとバッファに全部読み込まず適時fseekして読み出す場合、
fseekのオーバーヘッドはどうなのかな?
0126デフォルトの名無しさん
NGNGうまくいったのか?
圧縮に対応してないクライアントだとどうなるんだ?
0127デフォルトの名無しさん
NGNGBadAccessではじかれるんじゃない?
0128UNIX板より
NGNG切り捨て
0129デフォルトの名無しさん
NGNG0130デフォルトの名無しさん
NGNG0131デフォルトの名無しさん
NGNG0132デフォルトの名無しさん
NGNGWin2kSP2+NN3.03Gold[ja]で問題なく表示されるよ
HTTP1.1でmod_gzip が対応らしい、HTTP1.1に対応していない
クライアントの場合は圧縮せずに転送する模様
0133デフォルトの名無しさん
NGNGありがと
0134デフォルトの名無しさん
NGNGwwwoffleで確認
0136しんがり
NGNG手動でls=5にしましたが(^_^;)
http://piza2.2ch.net/test/read.cgi?bbs=mona&key=998714496&ls=5&imode=true
0137デフォルトの名無しさん
NGNG013879
NGNGdoReplace
文字列 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デフォルトの名無しさん
NGNGhttp://members.home.ne.jp/f-line/2ch.htm
主な経緯は批判要望板を参照のこと。
現在、piza2鯖にread.cgi 5.00 gzip対応版が入った模様。
とりあえず動作していて、読み込みの早さからみると、
圧縮は成功している・・と思われる。
これが、8月危機の救世主になるか?
…実況に懲りないモー板がやり玉に挙がらないことを願う…。
0140VBPG
NGNG0141w3m
NGNGdeb2.2
0142デフォルトの名無しさん
NGNG0143デフォルトの名無しさん
NGNG0144del厨(新規)
NGNG0145デフォルトの名無しさん
NGNGsomeReplace込みで高速化したほうが良いかも
0146デフォルトの名無しさん
NGNGLast-Modified問題はどっちのスレで片付けるのかな?
0147デフォルトの名無しさん
NGNG0148[email protected]
NGNGif(!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デフォルトの名無しさん
NGNG0150デフォルトの名無しさん
NGNGサーバ大丈夫かおい
0151デフォルトの名無しさん
NGNG0152デフォルトの名無しさん
NGNG0153デフォルトの名無しさん
NGNG荒らされる模様
0154デフォルトの名無しさん
NGNG0155デフォルトの名無しさん
NGNGftp://210.170.209.10/incoming/new_ver
0156デフォルトの名無しさん
NGNG0157153
NGNG×荒らされる
01581時間程ROMしてるけど
NGNG0159デフォルトの名無しさん
NGNGだれか、奴を殺せるやついないか?
それから、 >>155 の場所は、あの 369 さんのところなんだから、
用のないパケットは絶対に飛ばさないように。
0160デフォルトの名無しさん
NGNGこのスレッドではひとまず Ver4.21の改造を考えるべきかも。
0161デフォルトの名無しさん
NGNG串とか通してそうだからなあ。
0162デフォルトの名無しさん
NGNG雑談・マ板避難所スレでやれ
0163デフォルトの名無しさん
NGNGomaegana-
0164デフォルトの名無しさん
NGNGある程度まとめて試験とかやったほうが効率よさそうだし
0165デフォルトの名無しさん
NGNG0166>165
NGNG0167[email protected]
NGNGif(!fp)
{
html_error("そんな板orスレッドないです。") ;
lineMax = 0; ←追加
return 0 ;
}
ファイルエラー時にlineMaxが-8のままになるのを修正。
016879
NGNG>>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板のスレ氏ん�j
NGNGブラウザの挙動や、一番の問題点である、
「同じリクエストに返す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ソース見たけど、無駄なprintfが多いな…。
printf("\
2ちゃんねるだいすき<br>\
おれもおうえんするよ<br>\
");
な感じで書けば、わずかだけど早くなんない?
0171デフォルトの名無しさん
NGNGprintf(
"2ちゃんねるだいすき<br>"
"おれもおうえんするよ<br>"
);
にしろよ。読みやすさも違うし。
0172デフォルトの名無しさん
NGNG0173デフォルトの名無しさん
NGNGそれより\nがいらね。
0174デフォルトの名無しさん
NGNG1. age / sage しかいれないので 名前に mailto: は不要
2. スレッドの最後の
>レスを全部読む 最新レス50 レス1−100 掲示板のトップへ リロード
レスを全部読む 最新レス50 レス1−100 の3つでいいのでは?
3.ラジ@ のバナーがすべての板に張ってあるが必要なの?
0175デフォルトの名無しさん
NGNG10年前じゃあるまいし、毎回zip圧縮してるようなソフトで
そんなみみっちい最適化したところで何がどう変わるというのだ。
0176デフォルトの名無しさん
NGNGread.cgiの仕様を元にread.phpを作るとかは、
現状では無駄なのかな?
・・・俺には無理だけど
0177デフォルトの名無しさん
NGNGついでにCのCGIも全部サーブレットにすればいいのに。
やっぱ、サーバの設定がかえれないとかで駄目なのかな?
0178デフォルトの名無しさん
NGNG以前練習に書いたコードの一部です。レス1件ごとに読んで処理してく方式です。
ローカルで実行することを前提にしてるんで、>>半角のタグの書き換え等
無駄な処理もやってます。
デミリタが<>に変った際にやっつけ仕事で拡張したので、その部分は
カッコ悪くなってます。
0179デフォルトの名無しさん
NGNGつーか sourceforge かなんか使わない?
0180170
NGNGINPUTタグのTYPE=textは省略可能だったと思うが。
0181デフォルトの名無しさん
NGNG>コンパイラが最適化するからおんなじと見た。
確認したのか?コンパイラがprintfを特別扱いするとはとても思えん。
>175
一日100万以上のヒットがあるから
ちょっとでも高速化することでそれなりに負荷が減る。
0182デフォルトの名無しさん
NGNGそんなの説明されなくてもわかるし。
0183名無し
NGNG0184デフォルトの名無しさん
NGNG関数単位にやってもその関数が無くなるかもしれんし。
0185180
NGNG・大文字と小文字の混在は圧縮率の低下を招く。
・<FONT FACE=***>は要らん。
・SCRIPTの LANGUAGE=JavaScript も要らん。
・TABLEの BORDER=1 は、単に BORDER でいいはず。
gzipうんぬんも大切だが、HTML自体がスリムアップできてない。
たとえ1バイトでも馬鹿にすることなかれ。
0186デフォルトの名無しさん
NGNGトップダウン・ボトムアップの両方からやりましょ。
0187デフォルトの名無しさん
NGNG0188デフォルトの名無しさん
NGNGプロファイリングが大事だよね
0189デフォルトの名無しさん
NGNG0190デフォルトの名無しさん
NGNGそうしましょう
0191デフォルトの名無しさん
NGNG・freadはmmapで置き換え(既出)
・zlib使えるなら、popenでgzipに渡すよりzlib使ったほうがプロセス起動がいらない。
と思った。
手元にLinuxないからやりづらい。
0192デフォルトの名無しさん
NGNGサーバ側で<html>内圧縮して JavaScriptで展開ってできんかな?
0193デフォルトの名無しさん
NGNG0194340
NGNGちょっと辞書でしらべてみる。
0195デフォルトの名無しさん
NGNGどこのスレでやってるの?
0196デフォルトの名無しさん
NGNG0197デフォルトの名無しさん
NGNGhttp://natto.2ch.net/test/read.cgi?bbs=hp&key=998741961
htmlのタグ、レイアウトは↑に行きましょう。
0198デフォルトの名無しさん
NGNGいっそのことCSVだかdat渡してクライアントで全部展開するとか
0199デフォルトの名無しさん
NGNGそれともただたんにアノニにパーミッションがないだけか?
0200デフォルトの名無しさん
NGNGソースみずらくなってもかまわんやろ?
0202デフォルトの名無しさん
NGNGそれは別の話。とりあえずはread.cgiに絞る。
0203デフォルトの名無しさん
NGNGこれ以上乱立するのはイヤだからここでいいよ。
つーかまぁ全体的にWEBプロ板の話題なんだけどな(w
0204デフォルトの名無しさん
NGNGサーバのアドレスが変わってます。
新しいアドレスはここ。
ftp://210.170.134.228/incoming/
0205デフォルトの名無しさん
NGNGmmap使えば、それを考える必要はないです。(仮想メモリ消費は増えるけどたいしたことないでしょう)
mmapでファイルを仮想メモリに割り当てれば、メモリ間コピーもないし、ディスクからの
実際の読み込みも、オンデマンドで行われます。
0206デフォルトの名無しさん
NGNG外部ファイルにしてやれば、少しはましになると思ふ
0207デフォルトの名無しさん
NGNG失敬
0208206
NGNG0209180
NGNG分かったが、ネタ切れ。
一応漏れはプログラマーだからC言語の話にする。
ボトムアップでな。
read4.cのint hrefStop(char x)、
テーブル使えば若干早くなるんじゃない?
転送量的にはどうでもいいが。
0210デフォルトの名無しさん
NGNG改造する箇所がいろいろかぶりまくったらアレだし。
0211ななし
NGNG一番いらない。
転送量の削減幅も小さいけれど・・・。
0212デフォルトの名無しさん
NGNGやはり管理者への負担はあまり変わらないような気がする。
最終的には何らの制度や規制を掛けるしかないのかもしれないが、
それだと、2ちゃん発足当時の基本的意義がなくなってしまうし。
ネットが一般化してしまった今となっては、どうすることもできないの
かもしれんね。横レスすんまそ
0213sage
NGNGどなたかアップしてくれませんか…
0214デフォルトの名無しさん
NGNG0215デフォルトの名無しさん
NGNGソースか。サンクス。
んで、HTMLは動作すれば文法的には正しくなくてもOKという方針で行くの?
例えば、HEIGHT="1" ではなくて HEIGHT=1 で行く?
0216デフォルトの名無しさん
NGNGCSSは転送量が増えますんで、できればやめて欲しいんですが。
0217デフォルトの名無しさん
NGNGどのくらいなのでしょうか。
Webページを表示させる毎にジワジワリソースを
食い潰すのでしょうか?
0218デフォルトの名無しさん
NGNG0219デフォルトの名無しさん
NGNG0220名無しさん || die
NGNGこっちは read.cgi の処理の最適化に専念。
スキルの高い方知恵を貸してください
http://natto.2ch.net/test/read.cgi?bbs=hp&key=998741961
0221MiM
NGNGそれで良いと思います。
結局、「"」にしても1バイト食ってるわけです。
そんな感じで全ての無駄を省きますと、
かなり軽くなるわけです。
それは、転送量も減りますしユーザーのDLも早いわけですね。
ですから、そういった無駄を省きましょう。
0222デフォルトの名無しさん
NGNG全体で10行になってた
0223デフォルトの名無しさん
NGNG無駄な処理が多い事で結果的に待ちパケットを増やす結果になっていると思う。
access logはapacheにまかせようね(w
0224デフォルトの名無しさん
NGNG持ってる人お願いします。
スキルの高い方知恵を貸してください
http://natto.2ch.net/test/read.cgi?bbs=hp&key=998741961
htmlはこっち。
0225デフォルトの名無しさん
NGNG了解しました。あと、IEとNNで動作するものがデフォルトでいいですか?
例として、<TH>タグで囲むと太字にして中心寄せとなる、とか。
引っ越すんですか?
0226ヨー
NGNG外部JavaScriptにて新しいウィンドウのHTMLを生成。
どうでしょうか?
0227デフォルトの名無しさん
NGNG0を '*' に変えたり。
ここら辺は knowhowから出たものっぽいから変えたくなさそげ。
そんなん片付けられれば、mmap対応なんて簡単そうだが>>205
0228デフォルトの名無しさん
NGNGもともとJavaScript使ってるんだから、JavaScriptは問題ないんじゃない?
デフォルトの名前の展開、日時・曜日の算出、リンク貼りなんかは任せてもいいと思う。
JavaScript, CSSは外部ファイル化してサーバに置いて
ブラウザにキャッシュさせるってのは無理なの?
0229デフォルトの名無しさん
NGNGサーバーにモジュール組み込む必要はあるけど,リクエスト毎の
プロセス起動が無くなるので負荷軽減には貢献しそう.
http://www.fastcgi.com/
0230デフォルトの名無しさん
NGNGgzip 圧縮や 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ここに応援スレへの誘導はいらんだろ。
あとマクロ・ミクロじゃ訳わからん。
現在このスレでは 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\0を*に置き換えてるのは、out_htmlが\0で終了判定してるからっぽい。
流れとしては、
1. dat_readでファイルをBigBufferに読み込み、BigBuffer中の\0を*に置き換え。
2. getLineMaxで行数のカウントと、行の先頭のポインタをBigLineにセット
3. dat_outで出力ループを回す。行ごとの出力はout_html。
3のout_htmlでの終了判定を別のもの(行の長さのテーブル作るとか)に置き換えれば
BigBufferはreadonlyでよさそう。
0233デフォルトの名無しさん
NGNGapachのカスタマイズは出来ないって言ってたから無理でしょ。
0234デフォルトの名無しさん
NGNG今のところ問題は転送量で、CGIの負荷ではないのだから
趣味でリファクタリングするにしても、
コードを最適化するのではなく、アルゴリズムを最適化するのら。
HTMLのちまちました最適化とかも、
zip圧縮という大戦略の結果が出てからでも遅くないと思うけど、どうよ?
0235デフォルトの名無しさん
NGNGそういう人的リソースの無駄を気にしないでいられるのが
2ch&オープンソースのいいところ(藁
0236デフォルトの名無しさん
NGNG・・俺らのしてる事って無駄かも(w
0237デフォルトの名無しさん
NGNG0238デフォルトの名無しさん
NGNG0239デフォルトの名無しさん
NGNG「……そこにコードがあるから。」
0240デフォルトの名無しさん
NGNG0241デフォルトの名無しさん
NGNG0242a
NGNG0243デフォルトの名無しさん
NGNGftp://210.170.217.177/incoming/2ch-read-current/read5.c
0244デフォルトの名無しさん
NGNG0245デフォルトの名無しさん
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何気にPHP入ってるんで、導入検討中のmod_gzipと併用できればかなりよさげだ。
0247デフォルトの名無しさん
NGNG結構長い時間ロックしなきゃならん気がするけど大丈夫?
0248デフォルトの名無しさん
NGNGhttp://yasai.2ch.net/test/read.cgi?bbs=win&key=994101139&st=784&to=784&nofirst=true
どう?
0249デフォルトの名無しさん
NGNGオーバーヘッドは増えるけど転送量は確実に減る。
0250デフォルトの名無しさん
NGNG抱かれてもいいと思ったよ
0251デフォルトの名無しさん
NGNG0252369 ◆3XTuRnAc
NGNG0253369 ◆3XTuRnAc
NGNG0254デフォルトの名無しさん
NGNG0255デフォルトの名無しさん
NGNG0256デフォルトの名無しさん
NGNG0257デフォルトの名無しさん
NGNG今回はUNIX板に敗北を認めます。
0258369 ◆3XTuRnAc
NGNGていうか、新しい書き込みがないときはReloadはネットワークではなく
キャッシュから読みこむ改造になっていますでしょうか?
書き込みやリロードなどのテストお願いします。
0259デフォルトの名無しさん
NGNGgzip 圧縮や Last-Modified 対応の話題
↓
CGI の無駄なコードの省略など の話題
↓
無駄なタグの消去やHTMLの修正などの話題
↓
批判要望板の転送量スレ
↓
応援・グチ
0260デフォルトの名無しさん
NGNGread.cgi Ver4.22や4.23で導入された地道な転送量削減も、
Encoding:gzipに対応していないUAの事を考えれば、無駄ではないはず。
0261デフォルトの名無しさん
NGNGWeb板の方にレス数追い抜かれてるし・・
0262デフォルトの名無しさん
NGNGgzip 圧縮や 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キャッシュ読んでますね。ちゃんと304返してきてますYO!
0264デフォルトの名無しさん
NGNG0265デフォルトの名無しさん
NGNGあい、キャッシュちゃんと効いとります。
書き込みあったら再読み込みされるのも確認。
Win2kSP2&IE5.5SP2でし。
0266デフォルトの名無しさん
NGNG0267デフォルトの名無しさん
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良いのかな。
0269デフォルトの名無しさん
NGNG言ってんだけどどうする?
0270デフォルトの名無しさん
NGNGえー・・
0271mahm
NGNGこっちのほうがよくない?
一応動作確認済み。
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;
}
027279
NGNGsomeReplace 関数と doReplace 関数が統合できたと思ったんですが、
someReplace 以外にも doReplace をコールしているところが
あるので、doReplace は消せません。
結局2つの関数を用意する必要があるみたいです。
0273デフォルトの名無しさん
NGNGちゃんとオプティマイズしてコンパイルする。出来たバイナリはstripする。
あと、read.cgiではないが、書きこんだときトップページにジャンプするが、
それをやめて、「書きこみました。掲示板に戻るにはここをクリック」程度のメッセージを
表示するにとどめて、index2.htmlの読み込みを減らす。
0274デフォルトの名無しさん
NGNG0275デフォルトの名無しさん
NGNG酷いいわれようだ、
でもこれじゃあしょうがないか>>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両方改良すれば?
0277デフォルトの名無しさん
NGNGレスが全部表示されないときがあるんだけど、どう?
「レスを全部表示」と比べてみて
0278デフォルトの名無しさん
NGNG以前公開した時はファイルの読み書きだったけど。
0279277
NGNGIE だったら、キャッシュを強く優先する設定になってるからじゃないかな。
[ツール] - [インターネット オプション] - [インターネット一時ファイル]
の [設定...] ボタンを押して、 [保存されたページの新しいバージョンの
確認] のチェックを「ページを表示するたびに確認する」にしてみて
ください
0280>278
NGNGなのでできるだけデータ量を抑えたい。
CPU、メモリなどのリソースの問題ではないみたい。
0281デフォルトの名無しさん
NGNGそもそもprintf系って標準関数の中では激重な部類に入るので、
可変引数ないところはputsにするとか。
ま、それでもzip圧縮とか平気でやってしまってるCGIでは
違いはまったく分からん思います。せいぜい0.1%くらい?(w
0282デフォルトの名無しさん
NGNG2chネラーは感謝汁
0283デフォルトの名無しさん
NGNGここは圧縮にかかるコストが新たに加わったから、サーバの負荷を
減らすためにread.cgiの最適化をするスレでしょ。
それを踏まえて聞いたんだけど。
0284デフォルトの名無しさん
NGNGindex2.htmlをindex.cgiというCGIに飛ばすページに変更する。
昔通りのindex2.htmlを作らずに、index.gz等の名前でGZIPしたデータを作る。
index.cgiはindex.gzをGZIP圧縮プロトコルで転送する。
こうすれば、apacheはそのままで、転送毎の圧縮を避けつつ、indexを圧縮転送できる。
0285>283
NGNG0286デフォルトの名無しさん
NGNG0287デフォルトの名無しさん
NGNG>減らすためにread.cgiの最適化をするスレでしょ。
そ、そうだったのか。
0288デフォルトの名無しさん
NGNG0289デフォルトの名無しさん
NGNG0290デフォルトの名無しさん
NGNG今のソースはどうかしらんが、大本の時のread4.cなんて
意味のわからんヘッダ付いてたし、
セミコロンの前に何故かタブ入ってるし。
0291デフォルトの名無しさん
NGNG0292デフォルトの名無しさん
NGNG0293デフォルトの名無しさん
NGNGよろしくお願いします。
0294デフォルトの名無しさん
NGNG1回のリロードで流れるデータの量を減らす方法。
について考えた方が良くない?
もちろんコードの最適化も必要だけど
0295デフォルトの名無しさん
NGNG0296デフォルトの名無しさん
NGNGネタ系、セキュリティホール系、最適化系とか。
0297デフォルトの名無しさん
NGNG0298デフォルトの名無しさん
NGNGls=付いてないとデフォルトで最新50のみ表示、とかはどーなったの?
転送量減ると思うんだけど・・
0299デフォルトの名無しさん
NGNG0300デフォルトの名無しさん
NGNGいいかもね。
0301デフォルトの名無しさん
NGNGread.cgi を全面書き換えという案が浮上してます。
いそいでプログラム板に結集して下さい。
おいおいすごい重責になってきたぞ(w
0302デフォルトの名無しさん
NGNGftp://210.170.217.35/incoming/perler/read4.c.5
0303デフォルトの名無しさん
NGNG0304デフォルトの名無しさん
NGNGほかのCGIが無いと2ちゃんねる全体の機構が把握できないので。
0305デフォルトの名無しさん
NGNGそのほうが効率的だと思います
0306デフォルトの名無しさん
NGNGこっち
ftp://210.170.217.35/incoming/perler/read4-blank.c.25
0308デフォルトの名無しさん
NGNGgzip 圧縮や 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やっぱformのからみとかでjavascriptんとこはweb板のがいーよね?
じゃそーゆー風に頼んできていい?
0310デフォルトの名無しさん
NGNG0311aki
NGNGhttp://www.gedoh.org/aki/2ch/210.170.217.35/incoming/perler/
0312デフォルトの名無しさん
NGNG0313デフォルトの名無しさん
NGNGいいよ
0314デフォルトの名無しさん
NGNGとりあえず、現行のcgiでセキュリティホールをつぶす作業は、引き続きUNIX板で行います。
0315デフォルトの名無しさん
NGNGhttp://natto.2ch.net/test/read.cgi?bbs=hp&key=998741961
0316デフォルトの名無しさん
NGNGftp://210.170.217.35/incoming/html/
0317[email protected]
NGNGすまん。ちょっといいかげんに作りすぎた。
修正THX
0318デフォルトの名無しさん
NGNG混乱の元ですし。
0319名無しさん
NGNGgzip 圧縮や 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の掲示板システムを
アプリケーションサーバの形で作ってしまう
マルチスレッドで動くようにすれば相当軽くなる
の方がいいのかも知れません 手間は相当かかりますが
0321316
NGNG0322デフォルトの名無しさん
NGNGhttp://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プロセス負荷はCでもかかるよ。
PHPやJAVAはサーバ屋さん側の意向で使えないんだと聞いている。
0324デフォルトの名無しさん
NGNGまぁCの方向でいいだろうと思うが
0325316
NGNG0326デフォルトの名無しさん
NGNGこういう作業はwikiでやるのがよさげなんだけど。
0327デフォルトの名無しさん
NGNGサンクス
そのsourceを元に手を加えていきましょう
0328デフォルトの名無しさん
NGNGstrstrのかわりなる物を作ってみた。
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サーバ屋さんの意向を確認した方がいいと思う。
mod_gzipは使えないとかUNIX板でやりとりがあったようだし。
0330デフォルトの名無しさん
NGNG来週末あたりに結論が出るらしい。使える可能性が高いようだ。
mod_gzipはすでにOKになったはず
0332331
NGNG0333デフォルトの名無しさん
NGNGだから、PHPが使えないって事はないと思います。
0334デフォルトの名無しさん
NGNG0335デフォルトの名無しさん
NGNG0336329
NGNGうん、ごめん。
えーと、オレが言いたかったのは、そのへんの話は
みんなサーバ屋さんのお許しをもらわなきゃならない、ってこと。
ここで「これがいい」って決めたあとで、
サーバ屋さんに一蹴されちゃうのも悲しいじゃん。
0337aki
NGNG試しにyukiwiki置いてみました。ご自由に。
http://www.gedoh.org/aki/2ch/wiki/
実は自分ではあまり使ったことが無いんですが……。
0338316
NGNG0339デフォルトの名無しさん
NGNGいや。だから、鯖屋との相談の結果の話なの。
0340309
NGNG0341名無し
NGNG0342デフォルトの名無しさん
NGNG>strstrがどんな仕組みで動いているかしらないので、本当に速いのかどうか・・。
BSDのソースとか見ればいいじゃん。
0343名無しさん || die
NGNGJavaScriptをどうするって話?
もっと削れと?
0344デフォルトの名無しさん
NGNG内容による。
0345デフォルトの名無しさん
NGNGpiza2鯖に反映されるらしい
http://cocoa.2ch.net/test/read.cgi?bbs=unix&key=998764722&st=120&to=124&nofirst=true
0347デフォルトの名無しさん
NGNGJavascriptを別ファイル化するって話は出てないんですか?
0348デフォルトの名無しさん
NGNGで?
どこに置くの?
0349名無しさん || die
NGNG了解。
>>347
サイズが小さいから転送ファイル数が増える方が痛い。
0350デフォルトの名無しさん
NGNG鯖
0351326
NGNGすばらしー。とりあえずちょっとページ・リンクを追加しました。
今スパゲティー茹でてるんでもうちょっとしたら整理します。
0352デフォルトの名無しさん
NGNGPHPが使えても、apacheのmoduleとして使えないと
perlよりむちゃ遅いよ。
0353デフォルトの名無しさん
NGNG0354309
NGNGあーなんかCSSとjavascriptを別ファイルにするとかも言ってたような・・
ごめん向こうあんま読んでない(w
とりあえずprintfで吐き出す定型内容についてはこっちは気にしないって事で。
0355デフォルトの名無しさん
NGNG0356素人
NGNG0357デフォルトの名無しさん
NGNGその案採用
0358デフォルトの名無しさん
NGNG6月か7月あたりからやばそうだったらしいが。
0359デフォルトの名無しさん
NGNGそう思うけど、実は減ってないんだってさ。
0360デフォルトの名無しさん
NGNG0361デフォルトの名無しさん
NGNG>名無し娘。さん
えと、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確かに
0365デフォルトの名無しさん
NGNG0366素人
NGNGごめんなさーい(;´Д‘)アア
0367デフォルトの名無しさん
NGNGオヒオヒ
0368デフォルトの名無しさん
NGNGお祭りワッショイ!!
\\ お祭りワッショイ!! //
+ + \\ お祭りワッショイ!!/+
+
. + /■\ /■\ /■\ +
( ´∀`∩(´∀`∩)( ´ー`)
+ (( (つ ノ(つ 丿(つ つ )) +
ヽ ( ノ ( ヽノ ) ) )
(_)し' し(_) (_)_)
0369デフォルトの名無しさん
NGNG1/16 という数字はAA板の場合の結果のようです。
0370デフォルトの名無しさん
NGNGどうやら通常では1/3前後みたいだね。
0371デフォルトの名無しさん
NGNG特殊な状況でしょ、1/16って。
それを全体に当てはめるのは、どうかと思ったわけ。
0372デフォルトの名無しさん
NGNG0373_
NGNG0374デフォルトの名無しさん
NGNGそんなにしょっちゅう変更するもんではないので、埋め込み文字列で
良いんじゃない?
0375デフォルトの名無しさん
NGNGようやく50%程度になったってことか。
でも、すごいことだけどさ。
0376素人
NGNG0377デフォルトの名無しさん
NGNG確かに
それよりも、読み込みでのオーバーヘッドの方が心配
0378デフォルトの名無しさん
NGNGマンガ家が死んでもアシが絵をまねて続くこともあるから、どうだろう
0379もうすぐ出番ですぞ!
NGNG次は貴方方の番です、頑張って成功させてください。
0380デフォルトの名無しさん
NGNGread10.01.02.c ってやつ?
0381デフォルトの名無しさん
NGNG0382デフォルトの名無しさん
NGNG0383親の威を借りる狐 ◆v0Ec25uo
NGNG10つかなかったスレッドは自動削除するような機能を追加してくれ(藁
0384デフォルトの名無しさん
NGNG8/26(5) 30:00 って、、、
0385デフォルトの名無しさん
NGNG今の時間は・・きつい・・・
0386デフォルトの名無しさん
NGNGGNU スタイルでよろしく。
0387親の威を借りる狐 ◆v0Ec25uo
NGNG0389デフォルトの名無しさん
NGNG>382
かけていいでしょ。
0390デフォルトの名無しさん
NGNG0391デフォルトの名無しさん
NGNG0392デフォルトの名無しさん
NGNG負荷はどの程度変化すると考えればよいのでしょうか?
1/3より小さくなる?大きくなる?
0393デフォルトの名無しさん
NGNG大きくなる
HTTP/1.0 の人間は無圧縮で送られる
0394デフォルトの名無しさん
NGNGそっちもいじってんの?
0395デフォルトの名無しさん
NGNG別働で弄っているっぽい
0396布団圧縮袋さん
NGNG0397392
NGNGあ、基本的に全てのマシンにたいして圧縮されたデータを
送ると仮定した場合です。で、ユーザ数が現行のまま。
ユーザの取る行動によって負荷のかかり方が変化すると
思いまして。
0398デフォルトの名無しさん
NGNG送ってきたり、SIGALRM/SIGHUP/SIGTERM/SIGKILLとか
気になります。書き込み途中で殺されないか。
Signal Handlerも必要or不要?
現在は入ってなかったはず。
0399デフォルトの名無しさん
NGNGWWW サーバが受信するデータ量が一定で、
WWW サーバが送信するデータ量が 1/3 で一定なら、
ネットワークへの負荷は受信するリクエスト + 1/3 で 1/3 より大きいだろ
ユーザの取る行動がどう変わるかの定義は何
0400デフォルトの名無しさん
NGNGサーバ負荷を減らすために、read.cgi をリクエストあるたびに
プロセスを起こす方式じゃなくて、 http://www.fastcgi.com を使ったら
どうっすか?。これなら、プロセス起動しっぱなしなんで、
プロセス起動の負荷が減ると思いますが。。。
0401デフォルトの名無しさん
NGNG何度でも甦るさ。
わかるか、厨房の力こそ、人類の夢だからだ。
次もスレを立てる。
ひざまずけ、レスを付けろ!
荒らしから2chを取り戻せ!
―― ̄ ̄ ̄ ̄\
/ \
| 人 |
| //|/|/ \ \
||\|へ ー― \ |
|| ̄|-| ̄ ̄|― L |
_ | ̄| ̄ ̄ | /
| |\_____ | ___ / /
(●)__ |DΞ)| | /|/
 ̄ \\―|DΞ)|_ |___/ |
\\_|DΞ)ノ) __―――――――|`―_ _|__
( ̄| | D| |◇ノ ̄ ̄ ̄ ̄ | \  ̄|_// ―_
( ̄ ̄  ̄ ̄) | \ / \ / \\_ / ―-
(  ̄ ̄ ̄)| | \/ / | \\/ ヽ
(_ ̄ ̄) / | / / | \ |
|_| ̄ ̄// \ / | | |
| |_// \ |__ | | |
|__/__ \/ /  ̄|つ / | |
 ̄ ̄ ̄ ̄ ̄ ̄ ̄| ̄ ̄/ // し― ̄ | |
0402デフォルトの名無しさん
NGNG「ネットワークの負荷」がなにを指しているかわかんない。
転送サイズ以外の負荷要因とはなんのこと言ってる?
転送時間短縮→ブラウザ表示高速化→リロード回数増はありえるかもだけど。
その回答得てどうすんの?
0403デフォルトの名無しさん
NGNGそこまでサーバ弄るのを許可してくれるのか……?
0404デフォルトの名無しさん
NGNGプロセスが死ぬんだから結果オーライでいーんじゃないの?
0405デフォルトの名無しさん
NGNGどんなIPパケット出すかによって違うぞ
0406392
NGNGまさしく、そのリクエスト増のタイミングがちょっと
気になるんです。
その事がトラヒックに与える影響が無視できるんなら
それでかまわんし、何か面白い事が起きるんなら、
それはそれでやっぱり面白いだろう、と。
0407369 ◆3XTuRnAc
NGNG今のところUNIX板においての最新は「read10.01.04.c」になっていますが、
こちらの方のソースってどのあたりのバージョンを元にしてますか?
・・・やっぱりフルスクラッチとか・・・。
0408デフォルトの名無しさん
NGNGいや、怖いのはdatの破壊。
書き込み途中で死なれると大抵は不正なdatになる。
ま、変更なしならそれでいいか。
0409デフォルトの名無しさん
NGNG0410316
NGNGUNIX板の「read5.01.xx.c」に+5しています。
混乱しないようにこちらは「read10.01.xx.c」にしたのですが。
0411がいしゅつですが
NGNGhttp://www.gedoh.org/aki/2ch/wiki/yukiwiki.cgi?TopPage
このサイトは一度書き込んだレスを後から修正したりできるので
修正案などをまとめるための資料置き場として使ってください。
0412デフォルトの名無しさん
NGNG0413デフォルトの名無しさん
NGNGふつうに考えて非圧縮状態より負荷高くなることはないだろう。
lastmodifyチェックも入っているわけだし。
そのへんは本格運用後にプロファイルされるんではないかなあ。
0414デフォルトの名無しさん
NGNG漏れは、
read5.01-amppatch.c
read4-blank.c.25
read4.c
の順かな。
ただまだfeed-backしてないから困ってないが。
feed時には、read4-blank.c.25の差分を考えている。
0415デフォルトの名無しさん
NGNG以前手元の環境(Linux+Apache)で調べたときには、特に何もSignalは
送られてこなかったと思う。ここの鯖も同じであれば、中止ボタンが
押されたことによってdatが壊れるってことは無いんじゃないかな。
実際にここの鯖で検証してみないとなんとも言えないけど。
0416369 ◆3XTuRnAc
NGNG作業ベースとして怪しくなってきたと思います。
あとは、Wikiページにお任せしたいのですがどうでしょうか?
0417デフォルトの名無しさん
NGNGhttp://www.coe.tamu.edu/cs/apache/mod_perl/CHANGES
http://perl.apache.org/guide/debug.html
あたりみて気になったさ。
ただ、mod_perlなのが気になる。が、英語がよくわからん(泣。
2chはApache 1.3.6なのできみんとこと同じなら平気なはず。
0418411
NGNGWikiはテキスト貼るだけでファイルは置けないんですがどうしましょう?
現状ソースの中身を全部コピペするか別サーバに移転するしかないです。
0419デフォルトの名無しさん
NGNGex) ソースが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ななしさん@通信技術
NGNGopenする前に、データベースを格納したファイルから、PIDから一意に生成されるパス
名に対してhard linkを張っておくといいですよ。
で、シグナルハンドラにはそれらのリンクを適切に解消するルーチンを書いておけば
OKだと思います。同じ原理で2層ロックも実現できるかと。
あと、プロセスが起動したときに、タイマーで自分自身にシグナルを送るようにして
なんとなくウオッチドックすればサーバにやさしいかもです。
0421デフォルトの名無しさん
NGNG0422デフォルトの名無しさん
NGNGhttp://sourceforge.net/
鶏に牛刀の類っすかね。
0423名無しさん@ミポリソ@UNIX板
NGNGCFLAGSには まぁ -O? とかの最適かもあるけど とにかく -Wall は
付けといた方がいいね
0424デフォルトの名無しさん
NGNG-Oは、-O2がいいんかな?
0425最新ソースを一応どぞ
NGNG最新版情報は
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が通用しない人ははずしてけれ。
0428369 ◆3XTuRnAc
NGNG作業用スペースとしてはwikiと>>425さんのページがベースになると思います。
0429デフォルトの名無しさん
NGNG0430デフォルトの名無しさん
NGNGふと思ったんですが、
帯域を下げるには、
read.cgiのパフォーマンスを下げればいいのでは…。
0431デフォルトの名無しさん
NGNG0432デフォルトの名無しさん
NGNG帯域の件はサーバ止めたり、read.cgiの実行を減らすなどで対処する問題。
ちょいと別問題。
0433デフォルトの名無しさん
NGNG0434デフォルトの名無しさん
NGNG2chが「夜でも快適なサーバ」である事を売りにして広告を出している
Big-Serverの要求に反する。
つーか過去ログ見たか?
0435デフォルトの名無しさん
NGNG0436415
NGNGmod_perlはある意味CGIとは呼べないからなぁ。
何があっても不思議ではないっす(笑
>420
んん、その説明だとHard linkを張るメリットが無いような…。
俺がバカ? もしお暇なら詳細説明きぼー。
うーむ、板違いか…。
0437デフォルトの名無しさん
NGNGhttp://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仕事行かなきゃいけない日かどーかわかんなくなるから。(藁
あと、s/[A-z]/[A-z]/g とかやってもいーんじゃないの?
0439デフォルトの名無しさん
NGNGいいね、検索しやすくなるし。
0440デフォルトの名無しさん
NGNGログ読んでていつが週末かわからなくなるのは辛いものがある。
0441sage
NGNGでよいと思われ
0442デフォルトの名無しさん
NGNGひょっとして
y/[A-Z]/[a-z]/
ていう意味?
0443デフォルトの名無しさん
NGNG0444デフォルトの名無しさん
NGNGどっちにしてもレス付ける内容では無いと思われ。
0445aki
NGNG本家ftp鯖が止まったようなので、ミラーの更新の方は止めました。
ファイルの方はまだ残しておきます。
ああ、日曜なのに講習会だ。鬱氏。
0446デフォルトの名無しさん
NGNGお疲れさま
がんばってください。
0447無知な人
NGNGWEBデザイン板ってここですか?
「2001/08/26」→「01/08/26」にして
「名前:」「投稿日:」を削除して下さい。
0448デフォルトの名無しさん
NGNGhttp://natto.2ch.net/hp/index2.html
こっちの、スキルの高い方知恵を貸してください* ってやつです。
私は、
「123 名無しさん 01/08/26/日 08:12」
って感じがいいなぁと思ったり。
0449デフォルトの名無しさん
NGNGmain()の中の
zz_fileSize = getFileSize(fname);
はいらないね。
zz_fileLastmod = getFileLastmod(fname);
を加える時に混じったんだと思う。
(もちろん、getFileStatus(const char *fname)みたいなのを作って
stat()の呼出を1回にしたほうがいいけど。)
それと、やっぱHTTP的には
printf("Status: 304 Not Modified\n");
の方が良いと思う。数バイト増加するけど。
0452プログラマーさんありがとう!!
NGNG2ちゃんを救うためにがんばってくれたプログラマーさんに
お礼が言いたいです!!
みんなのために本当にありがとうございます!!
0453デフォルトの名無しさん
NGNG「レスを全部読む」が100レスごとになったし。
0454泣きました・・・・
NGNG2ちゃんのために、こんなにがんばってくれるなんて・・・
私馬鹿でなんにも分からないけど2ちゃんがなくなって悲しいと思っている人たち
のために・・・・・
感動して泣きました・・・本当に、本当に、ありがとう・・・・・!!
0455デフォルトの名無しさん
NGNGなんでprintf多用してるんだろ。ある程度まとめるなり(可読性の問題もあるけど)
フォーマットを使用しないのはputsに置き換えるなり、すればいいのに。
関数呼び出しのコストだってバカにならないと思うんだけどな。
0456デフォルトの名無しさん
NGNGスマソ、ワラタ。
0457455
NGNG0458デフォルトの名無しさん
NGNGスキルの高い方知恵を貸してください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
ではどう?
0460デフォルトの名無しさん
NGNGスキルに期待するのは間違ってる。
0461デフォルトの名無しさん
NGNG0462デフォルトの名無しさん
NGNG仕切る人1人にしないと混乱するから誰かやんない?
0463デフォルトの名無しさん
NGNG誰かコテハンで仕切ってよ。
0464デフォルトの名無しさん
NGNGw3mだからかな?
0465デフォルトの名無しさん
NGNGTABLEタグ使わなくても見やすいレイアウトにする工夫を。
0466デフォルトの名無しさん
NGNG必要なものを削ってドウスルンダヨ!
0467デフォルトの名無しさん
NGNG0468デフォルトの名無しさん
NGNG0469初学者26
NGNG変化はとっても勉強になります。
今回は口を挟むスキルに達していないのが残念でなりませんが,
少しでも2ちゃんねるのお役に立てるように勉強したいです。
0470デフォルトの名無しさん
NGNG/. \ ̄ ̄ ̄ ̄|
/ / ― ― |
| / - - |
||| (6 > |
| | | ┏━┓| / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
| | | | ┃─┃| < 正直、救って欲しい。
|| | | | \ ┃┃┃/ \________
| || | |  ̄  ̄|
0471初学者26
NGNG最初から全部見たいときに「レスを全部読む」しかできないので。
時間によるアクセス制限時は強制的にそうなりますが,デフォルトでも
そういうコマンド(釦?)も欲しいです。少しは足しになりますか?
0472aki
NGNGversion w3m/0.2.1では試してみたんですが、書けてる見たいです…。
発言内容に依存してるのかも。
0473名無し
NGNG431 名前:原住民 :01/08/26 10:42
むむ、制限時間過ぎてもスレ全体を一括読みできない原因発見...
zz_GetEnv()と get_lastmod_str() の両方で gmtime()使ってるぞ!!
static領域に結果置いておくだけだから上書きされちゃうんだよね...
0474デフォルトの名無しさん
NGNGこれ同意。
レス50個単位とかで前後できるリンクもいつもあった方がいいね。
でも、激しくスレ違いな気がするYO!
0475デフォルトの名無しさん
NGNGこっちも0.2.1です。
ソース全体をpreで囲わないのはこういうものなんですか?
あと、編集ボタンを押すとソース内のタグがescapeされないのもこういうもんかな?
0476デフォルトの名無しさん
NGNG0477名無しさん@ミポリソ@UNIX板
NGNGとにかくグローバル変数の使い過ぎで関数の独立性が損なわれてるね
グローバル変数である必要がないものはローカル変数にした方がいいね
あと
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デフォルトの名無しさん
NGNGread.cgi に渡される bbs, key, st, to なども1文字に短縮して、
read.cgi 側で新旧どちらにも対応すれば index2 あたりでは
100文字を超える節約になるのでは。
0479478
NGNGb で始まっていたら bbs, k なら key などと判断する、という意味。
0480デフォルトの名無しさん
NGNGいから全面書きなおしでしょ。負荷はたいしたことないと言っていたから
cgiのままでいいと思うんだけど。fastcgi案も出てたっけか。
0481
NGNG, 'ニニニ、::::(0::::::::::ヽ、
 ̄ ̄ヽ'::::::::::::::: ヾ みてごらん>>1を あれが夏厨だよ
)::: .... \
/ ::::::::::::::::::ヽ
/ :::::::::::::::::|
/ :::::::::::::::::|
/ :::::::::::::::::::|
/ ::::::::::::::::::::|
| :::::::::::::::::::::|
. | :::::::::::::::::::::|
_ , ―-、| /::::::::::::::/::::|
\ヲ'⌒ヽ:| /:::::::::::::::/::::::|
ト`_ ノ::| /:::::::::::::/::::::::|
人;;;;;;;::::;:| |:::::::::::::/::::::::/
/γ `:::::| |::::::::::::/::::::::/
/ ( ヽ :::| |:::::::::/::::::::/ ふーん、なんだか
{ } ) ::| |::::::::{::::::::/ 頭悪そうだね、ぱぱ
| / } ::| .ヽ::::|:::::::/
) { / ::| .ヽノ ::::/
} | ( :λ :::|
( ヽ、 ) ノヽ ::::|
ヽ, ~ 〈 ト、_ | ::::::ヽ、
( ,' ノ | |~7 ::::::::::::::`ヽ、
ヽ,、,、,γ' ノ, -‐W~フ { ト、:::::::::::::::::::ヽ、
∠____ト-┘z__,―' ̄Σ Z  ̄ヽ―-、_ノ
'―z_,┴'~
0482デフォルトの名無しさん
NGNGapr-util モジュールに apr_date_parse_http() があるから
こっちがいいね。apr-util/misc/apr_date.c の中。
0483Perler ◆GSi39OA6
NGNG> + 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.
ということですので宜しくお願いします。
0484ero
NGNG0485デフォルトの名無しさん
NGNGラフな仕様書から作った方がいいって。
あとグローバル変数多すぎ。
コメント少なすぎ。
0486デフォルトの名無しさん
NGNG0487477
NGNG確かにHTTPの場合GMTでないとほとんどの場合まずいようです すみません
ただ RFC2068 は現在obsoleteになっていて RFC2616 が現行のHTTPに
なってますので......
0488デフォルトの名無しさん
NGNGhttp://www.gedoh.org/aki/2ch/wiki/yukiwiki.cgi?[[726561642E63676982F08D8291AC89BB32]]
コピペの仕方に一癖あるので
まず[[ソースを貼る際の注意事項]]を読んでください。
0489Perler ◆GSi39OA6
NGNGそうでしたね。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デフォルトの名無しさん
NGNG0492デフォルトの名無しさん
NGNGすれ違い
0493初学者26
NGNG0494デフォルトの名無しさん
NGNGがいしゅつ
まあ最初は誰にも見せないつもりだったんだろ
0495名無し
NGNG0496名無しさん@ミポリソ@UNIX板
NGNGでもブラウザがbzip2なんかほとんどサポートしてないか......
何かブラウザにbzip2デコーダ組み込んだりするうまい方法ないかね?
0497デフォルトの名無しさん
NGNG傾向がはっきりでるように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デフォルトの名無しさん
NGNG2) 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デフォルトの名無しさん
NGNGMicrosoftとNetscapeに頼んで。
0500名無し
NGNGhttp://www.gedoh.org/aki/2ch/wiki/yukiwiki.cgi
0501デフォルトの名無しさん
NGNG0502デフォルトの名無しさん
NGNG0503デフォルトの名無しさん
NGNGレス全部読んでたけど、どのへんに出てきたっけ?
0504aki
NGNGバージョンアップも含めてちょっと色々直してました。
リロードしてだめだったら再度教えて下さい。
荒らし対策に定期バックアップも仕掛けました。
0505デフォルトの名無しさん
NGNG{
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デフォルトの名無しさん
NGNG0507デフォルトの名無しさん
NGNG>if((*p >= 0x81 && *p <= 0x9f || *p >= 0xe0 && *p <= 0xfc)) { p += 2 ; continue;}
if( (unsigned char)(*p^0x20-0xA1) <= 0x3B && *p!=0x80 ){p+=2;continue;}
こういう風に最適化出来ないかな?
0509デフォルトの名無しさん
NGNGだから > と < の連続でデリミタになってる。
0510デフォルトの名無しさん
NGNG< と > ね。
0511ナナシサソ
NGNG日付はある程度固定長だからそれをもとに探索
ってやるのはどうよ?
0512ナナシサソ
NGNGインターフェースを大幅に変えなきゃならんのかな?
0513デフォルトの名無しさん
NGNGそれ旧タイプね。今は全部新タイプ(TYPE_TERI)だったと思う。
TYPE_TERIのfindSplitter内はほとんど改良の余地はない。
コードをうまく書くかインラインアセンブラでCMPS(x86と仮定して)を
使うようにすることぐらいかな?
0514名無しさん@ミポリソ@UNIX板
NGNGご苦労さん とりあえず負荷が大きいのはdat_read()とfindSplitter()と考えていいのか...
dat_read() -> mmap()を使う
findSplitter() -> if (*p >= 0xa0 && *p <= 0xdf) {p++; continue;} がムダ
ってとこかな とりあえず...... しかし全面的に改めた方がって気も
0515デフォルトの名無しさん
NGNG//先頭のほう
- 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デフォルトの名無しさん
NGNGmmap()って、排他制御はどうなってるん?
あ、でも読みこみだけだから大丈夫なのかな?
0517デフォルトの名無しさん
NGNG447 名前:名無しさん@お腹いっぱい。 投稿日: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()
なんだけどね
0519デフォルトの名無しさん
NGNG>findSplitter() -> if (*p >= 0xa0 && *p <= 0xdf) {p++; continue;} がムダ
テーブルすべきだろうけど、そもそも、そのコードはTYPE_TERIの時
はコメントアウトされてるので関係ないです
>516
>mmap()って、排他制御はどうなってるん?
ない。他プロセスがファイルを書き換えると、mmapで得られたバッファの中身も同時に
書き換わる。
>518
mlockって、メモリブロックがページアウトされないようにロックするだけで、
書き換え不可ってできたっけ?
0520497
NGNGコンパイルオプションは -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良いように思う。
現状だと、BigBufferのデータをgetLineMaxで行単位に、res_splitでフィールド単位に
\0終端させてるが、そのたびに、BigBufferの全スキャンになるので、
一括で、行とフィールドに分割したほうが良いように思う。
0522VB厨房
NGNGあと自動リンク削除などあまりにも製作者・管理者側に偏りすぎ。
一回の投稿行数1行減らしてでももう少しユーザーフレンドリーなものにしてくれよ
(厨房排斥が目的なら知らんけど)
0523デフォルトの名無しさん
NGNG行数は、減らしても複数回に分けて書き込まれるだけ。
>(厨房排斥が目的なら知らんけど)
転送量を減らすのが目的なのだから、それもアリかもしれない。
0524デフォルトの名無しさん
NGNG長さデータには、くずはの壊れにくさレベルを導入してな
0525デフォルトの名無しさん
NGNG「名前」表示は無くても良いような気はしますが・・・。
0526デフォルトの名無しさん
NGNG転送量が多すぎて、費用が¥7,000,000/月もかかってるって発表されて、
「数日中に閉鎖」って予告されてさ、 その日のうちにあっちこっちの板が封鎖されてた日だよ。
一時HTTPブラウザの表示が極少化されちまった。あのときのUNIX板の住人、カッコよかったんだぜ。
「総力を結集」ってのは まさにああいう状態だよ。
HTTP転送量を1/3に削減しないと閉鎖、ってもんだから、新しいプログラム組んでさ、
そしたらほんの何時間かで完成したんだよ。
それが聞いてくれよ、
目標は「1/3」だったのに、「1/16」まで圧縮に成功しやがったんだよ。
職人技なんてもんじゃねえよ、神技だよ
| |
| |
十 十
(` ∧_∧ (` ∧_∧ UNIX板・プログラマー板
()lll()\(´∀` ) ()lll()\(´∀` ) マンセー
/ ・ \ヾUnixと) / ・ \ヾ PG と) \___ ____ ___/
(_人 \ ノ ) (_人 \ ノ ) ,,,,,. ∨ .∨ オツカレサマー
人 ノ (_)~⌒`ヾ人 ノ (_)~⌒`ヾ^lll. ∧_∧ ∧∧ ∧ ∧__.
( < | ソ / ( < | ソ / ,)|||. ∩´∀` ∩∩゚Д゚∩ /(゚ー゚*∩ /\
\ l ノーー''''/ ' ノ''|\ l ノーー''''/ ' ノ''| ヾ ソ ヾ | |ノ /| ̄∪ ̄ ̄|\/
|_|.フ ヾ、く.`l_| |_|.フ ヾ、く.`l_| | | | | |,,〜 |____|/
/_|。。 。 キ/ /_|.。/_|。。 。 キ/ /_|.。。 。 。 (__(____) ∪∪ ∪∪
0527518
NGNGmlock()じゃダメだね スマソ......
Solaris上のlockf()だとできるみたいだけど... Linuxとか*BSDだと
flock()なのか? こちらでできるかは不明
0528ナナシサソ
NGNGロックする時間を短くする為にBigbufferを使ってるんでは?
0529デフォルトの名無しさん
NGNG0530デフォルトの名無しさん
NGNG> 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デフォルトの名無しさん
NGNGC++に書き直してます、なんとなく。
そこの部分は後続の行数を数える関数とまとめて
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;
としたほうが速いと思います。
0532531
NGNG0533デフォルトの名無しさん
NGNG神業では無いと思うけど・・・元の CGI が御タコ過ぎただけ。
でも、元の CGI が神業レベルで最適化されていたら、2CHは終わっていたな。。
しかし、焼け石に水か、、、あとは営業努力に期待しよう。
0534名無し
NGNG負荷テストが出来ると思います。
0535デフォルトの名無しさん
NGNGただでさえ「転送量が……」って言っているんだから、
何回も同じ文章を、しかもAA付きでコピペするのは
止めようや。
0536デフォルトの名無しさん
NGNGレスの表示数にFORMを使ってはどうかって意見が出てるよ。
0537デフォルトの名無しさん
NGNG本気で高速化を考えているなら、その部分コメントアウトしちゃえ。
つか、dat_readとdat_outはまとめた方が速くなるような。
0538デフォルトの名無しさん
NGNG(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>>520を参照。壊れちゃってる物、仕方ないと思うけどなあ。
datファイルを直すのは、別スクリプトにしたら?
0541デフォルトの名無しさん
NGNGsystemでかなり差が出ているのでmmapを使うべきでしょう
ただでさえforkにgzipのexecとsystem酷使してますし…
0542デフォルトの名無しさん
NGNGこれをgetLineMaxで\n→\0に置換して行単位に、
res_splitで<>→\0\0に置換してフィールド単位に
ばらして、それぞれ\0終端文字列(いわゆるC形式の文字列)として
扱ってる。
なので、壊れたdatファイルで途中に\0が入ってると処理がおかしくなるので、
最初の段階で\0をつぶしてるらしい。
0543デフォルトの名無しさん
NGNGにゃるほど、サンクス。
0544デフォルトの名無しさん
NGNGただ、mmapにすると、バッファを書き換えられなくなるので、
現在のようにBigBufferを扱いやすいように修正しながら\0終端ベースの
処理ってのはできず、全体的に行、フィールドの先頭ポインタとその長さを保持して
それを使いながらの処理になる。
すろと、コストのかかる部分が移動するかもしれない。
あと、readの動作中にあぼーんが発生すると、mmapで得たバッファの内容がずれる
リスクがある(普通の書き込みなら追加なので問題ないと思う)。
0545デフォルトの名無しさん
NGNGいや、実はよく分かっていません。
元ソースのdat_read()にそういう処理があるっていうだけで…
推測ですが、datの読み込み後、何らかの理由でバッファに'\0'が入ってきた場合
他の関数の処理に不都合をもたらすので、
とりあえず'*'に変換しとけ、っていうだけかも知れません。
(実際はあり得ない?)
0546デフォルトの名無しさん
NGNGif (strlen(BigBuffer) != zz_fileSize) {
for(i=0;i<zz_fileSize;i++)
{
if (BigBuffer[i] == '\0') BigBuffer[i] = '*';
}
}
標準関数侮れず
0547datについて知ってること
NGNGサーバによってあぼーんされた時の挙動が違ったりする。
一番最後のデミリタがなくなる事がある。
あぼーんのスクリプトによっても違うみたい。入り混じってる。
デミリタが減るのは1があぼーんされる時にしか出ない気がする。
あとバイナリ貼り付けたりすると、本文中に<>が出現することもある。
レス1件にデミリタが10個とかって事もあった。
'\0'はエレメントの頭かケツにしか付かないと思う。
10000個くらい調べたけど、要素の途中に挟まってるのは見つからんかった。
この手の話は多分みみずんが一番詳しいと思う。
0548545
NGNG0549デフォルトの名無しさん
NGNG結局BigBufferを最後まで一文字ずつ調べるわけで、
まあ、BigBuffer[i]='*';が無いだけ速いか。
0550デフォルトの名無しさん
NGNGすばらしい。strlenみたいな多用されるやつは、アセンブラレベルで、
カリカリにチューンされてるはずだからね。
0551デフォルトの名無しさん
NGNGp0 = strstr(s[i-1],"<>");
の方が速いよ
まあ546の変更とあわせて実時間10.89秒が9.93秒になるくらいなのだけども
0552549
NGNG自己レス。
if(BigBuffer[i]=='\0')が成立しなければ一緒だ。逆に遅いか?
ライブラリ内部がアセンブラででも最適化されてりゃ速い、
かもしれない。
0553550
NGNG既にわかっていることに気づいた。
0554デフォルトの名無しさん
NGNG'\0'が複数含まれていた場合を忘れてる。
0555550
NGNGwhile ((pos = strnlen(BigBuffer, zz_fileSize)) != zz_fileSize)
BigBuffer[pos] = '*';
か。
0557デフォルトの名無しさん
NGNGこれでいけるってこと?
int BufferLen = strlen(BigBuffer);
if (BufferLen != zz_fileSize) {
if (BigBuffer[BufferLen] == '\0') BigBuffer[i] = '*';
}
0558デフォルトの名無しさん
NGNGchar *p = BigBuffer;
int rest = zz_fileSize;
while ((pos = strnlen(p, rest)) != rest)
{
p[pos] = '*';
p += pos + 1;
rest -= pos + 1;
}
0560デフォルトの名無しさん
NGNG0561デフォルトの名無しさん
NGNG少なくともLinuxのglibcの環境においては-O2つけたとしてもライブラリ使ったほうが速いようだ
0562デフォルトの名無しさん
NGNG↑の2001/05/09(水) 12:41のすぐ上のレスみたいなのでも行ける?
0563デフォルトの名無しさん
NGNGgzip 圧縮や 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これって、いかにも付け焼刃的に「バグを見つけたのであとから付けました」って
感じがするんだよね。
というのは、直後で行数を数えるために全体をスキャンしているのに
同時に行っていないから。
全体をスキャンするのは1回にして、
ただし、全てを同時に行う。
やることは、
・行区切りの検索と位置保存
・'\0'の'*'への変換
・& -> & への 変換 … ただし、& は変換しない
(・@+`の変換 … そのレスは前に詰めなければいけない)
(・" ??)
つーかさ、Splitした結果をBigLineに持たせるべき。
struct lines {
char *name;
char *mail;
char *date;
char *text;
};
それと、機能追加?になるけどあった方が良いと思うのがさ、
オプションでのtext内部にある<br>以外のタグの削除ね。
要は>>nnがえらく転送量をふやしちゃうんだから、
<a href=...> と </a>のタグを無条件に削除するオプションがあってもいい。
ただ、BigBuffer内部で前詰めになるから、面倒くさいし、
各レスの先頭にタグが入っている場合が多いから、
実質memmoveの繰り返しになっちゃいそう。
それなるくらいなら、BigBufferの他にもう一つバッファを作って、
コピーしながら置換したほうがいいかもしれないけどね。
これなら、mmapとも併用できるでしょ。
0565がいしゅつ?
NGNG「ひろゆきがプログラマとしてタコである」
ということだ。
ここまでの負荷を想定してはじめから作っていたのならそうかもな。
でもソレはありえないだろ。
0567デフォルトの名無しさん
NGNG>オプションでのtext内部にある<br>以外のタグの削除ね。
コストが高いと思うなあ。それはbbbs.cgiでやった方が良いのでは?
0568デフォルトの名無しさん
NGNG0569デフォルトの名無しさん
NGNG0571G
NGNGあのさ、もうUNIX板でのZIP関係の手入れは一段落したんだから、
つぎはこのスレでのコード最適化結果をどんどん実際に反映していこう。
生きてるFTPサーバか何かを提供してくれる人と、トランクソースに
ここで出てきた差し替えコードを反映する、意欲あるプログラマの人は
手を上げてくれよ。
俺?すまそ、力不足だ。
*********************************
0572名無し
NGNGデザインを含めて1からプログラムを
作り直したほうがよいと思う。
新しいプロジェクトを立ち上げましょうよ。
0573G
NGNG一面文字化けのページが帰ってきたぞ。
read.cgi ver5.02には、チューニング以前のバグもまだあるのか?
0574デフォルトの名無しさん
NGNG大学4年の夏に米国に心理学の留学行っている。
プログラマーじゃないのかな?
0575G
NGNGhttp://piza2.2ch.net/tech/index2.htm
をまともに読めるヤツいる?
0576デフォルトの名無しさん
NGNG読めてるよ。
0577デフォルトの名無しさん
NGNGIEでhttp/1.1チェック入れてないとか?
0578G
NGNGカキコすると自動的に飛んでいく
http://piza2.2ch.net/tech/index2.htm
は今明らかにバグってて、
正しいのは
http://piza2.2ch.net/tech/index2.html
だよ。これはすぐ直せるだろうけど、
どうすりゃいいんだよ。
0579名無し娘。 ◆vP.bOZFQ
NGNGhttp://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それをやるなら、datのフォーマットから見直したいな。
ls=10でもdatを全部読み込むってのは、ちょっとなあ。
0581デフォルトの名無しさん
NGNG1)発想はそのままでCode書き直しなど全面書き換え最適化を行う
2)P2Pで頑張る
3)その他のアイデアでやってみる
現状動いているのは2だけだけど、1に手を付けるのもいいかもしれない。
3はまだ未知数。
0582デフォルトの名無しさん
NGNGレスの位置を記録したインデックス作るだけで
かなり効果無い?
0583デフォルトの名無しさん
NGNGだよねぇ。
ファイルにインデックスでもつけたほうがいいよね。
既存のデータをどうするかが問題だけど。
0584デフォルトの名無しさん
NGNGでもそれをやるとすると、bbs.cgiの方に手を入れなくてはならない。
bbs.cgiのソースは公開されてた?
0585デフォルトの名無しさん
NGNGバグではありません、仕様です(w
負荷低減のため、htm側はzip圧縮ページなのな。
mod_gzip入るまで待ちんしゃい。
0586デフォルトの名無しさん
NGNGされてない。read.cgiのみ。
0587デフォルトの名無しさん
NGNGServletで、とかなってくんだけどサーバ側の事情でアーキテクチャを大きく変えるのは難しそう。
俺的には read.cgi の mod_2ch (Apache module) 化のが一つのゴールかなあ、って思うが。
0588デフォルトの名無しちん
NGNGmod_gzipになるまでまだ1週間以上あるみたいだから
とりあえず今は「.html」に飛ぶようにしておいた方がいいんじゃないの?
0589デフォルトの名無しさん
NGNG修正ミスでした
今は修正完了です
アドレスは同じです
0590564
NGNG実際のls=??等のリクエストがどんな割合で来てるのかわからんけど。
つーことは逆に、
getLineMax()にFileSizeを与えて、memchrで行を数えて、
'\0'->'*'への置換をout_html()で行うようにするほうがいいかな?
レスを全部読む場合は、全体を一括スキャンしたほうが効率的だろうけど、
トータルではどうなるか。
で、もし全体をスキャンするなら、特殊文字('\0','\n','<','&'等)をテーブルにして
if (teble[*p] & flag) {
switch (*p)
...
}
みたいな感じが良さそう。
else if の繰り返しや全体をswitchにしてしまうよりまともだと思う。
(負荷的には、キャッシュの関係があるから、試してみないとわからないけど)
テーブルは8bitあるから、日本語文字やURLの終端判別にも使える。
これも、スタートアップでテーブルを作るほうがソース的には楽だけど、
負荷を考えると自力で作った方が良いかもね。
なんか俺も良くわかってないから、素直に推移を見守りますわ。
0591デフォルトの名無しさん
NGNG全部対応させなくちゃならない。それこそ大作業になるよ。
0592デフォルトの名無しさん
NGNGmod_gzip付けるだけでも汎用のサーバーがどうのもめていたらしいからmod_2chというのも厳しいのではないかな?
現状のデザインに不満を漏らしつつも何とか地道な改善を施すのはPGの宿命だよ。
0593563
NGNGプログラマが2chを救う!? @プログラム板
の2号は
スキルの高い方知恵を貸してください @web制作管理板
の方の2号だ。
0594デフォルトの名無しさん
NGNG0595名無し娘。 ◆vP.bOZFQ
NGNG0596デフォルトの名無しさん
NGNGchar* 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デフォルトの名無しさん
NGNGCなんていう時代遅れの処理系を使っているのはなぜなんでしょう。
それとも、ドキュンしかいないのでしょうか。
0598名無し娘。 ◆vP.bOZFQ
NGNG0599sage
NGNG0600デフォルトの名無しさん
NGNGおまえいつからプログラムはじめた?
0601デフォルトの名無しさん
NGNG0602デフォルトの名無しさん
NGNG0603デフォルトの名無しさん
NGNGはいはい中学生は学校の宿題でもしてて
0604デフォルトの名無しさん
NGNG0605デフォルトの名無しさん
NGNG取り込んだものはどれくらい早くなるの?
誰か試して。
#俺もやりたいけど今手元にwinしかない、、。
0606デフォルトの名無しさん
NGNGダッシュでCygwin落とせ。apacheも動くぞ。
http://sources.redhat.com/cygwin/
0607デフォルトの名無しさん
NGNG実際軽く動くのはどっち?
0608デフォルトの名無しさん
NGNG0609デフォルトの名無しさん
NGNG実はばっちりログを保存していて、
それがばれるのがいやだから。
だったりして。
0610デフォルトの名無しさん
NGNGソース見ていたずらを思いつく人が出てくるからでは?
0611デフォルトの名無しさん
NGNG言語の種類だけで決まる話では無い
0612デフォルトの名無しさん
NGNGbbs.cgiとか、他のモジュールも公開するべきだな。
さらに俺を2週間ほど雇えば負荷総合的な負荷は5%程度まで縮小するかもな。
まあ人月300くらいはもらうけど。
0613デフォルトの名無しさん
NGNGいろいろな管理用コマンドとかもいっしょに。
0614名無しさん
NGNG0615
NGNG0616デフォルトの名無しさん
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「こんな外注先は害虫」の見本だよなぁ…
0618名無し
01/08/26 18:28ID:cNxfOPbYサーバー管理者いないんですか?
0619デフォルトの名無しさん
01/08/26 18:28ID:K3x70GYgあの…一晩48時間なんだけど・・・
0620デフォルトの名無しさん
01/08/26 18:29ID:goYJpq5cchar *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しばらくは各自localhostでテスト運用だな。
0622
01/08/26 18:29ID:C1Z3lpu.http://www.gedoh.org/aki/2ch/wiki/yukiwiki.cgi?TopPage
そこ、CGIのリンクで保存しにくい。
普通にリンク貼れって漢字?
0623名無しさん
01/08/26 18:29ID:rVzqRC420624名無し娘。 ◆vP.bOZFQ
01/08/26 18:32ID:7Eg.mvRo抜本的なのと、そうでないのはわけた方がいいと思います。
とりあえずは、既存の関数の機能は変えない範囲で、最適化を
行うべきかと。
#抜本的見直しを運営が望んでいるかもよくわからないですし。
0625デフォルトの名無しさん
01/08/26 18:33ID:goYJpq5cサーバごとなどに異なる規制部分は非公開としても、
全体に共通の部分は公開された状態で、気づいた人が
欠点を指摘していった方が安全性は高くなるかと。
(その意味で、 read.cgi と違いすぐ入れて様子を見るのは危険)
管理側にも検討して欲しい。
0626デフォルトの名無しさん
01/08/26 18:36ID:1sXjF0HUしか当面ありえないでしょ。
>39 名前:夜勤 ★ 投稿日:2001/08/25(土) 19:34
>Apache に手を加える(パラメータ)を変更する というのはできないです。
>なぜなら、このサーバと同じサーバという売りでレンタルサーバ業を
>営んでいるもので、汎用的なサーバじゃなきゃだめなんです、すんません。
0627デフォルトの名無しさん
01/08/26 18:38ID:aVwVHBUM微々たるもんだが、ID:???の場合に出力を止めれば、
数百バイト程度は得するぞ。
・・・Non-Accept-Encoding: gzip なら。
0628デフォルトの名無しさん
01/08/26 18:39ID:mpESCVMc書き直しはほとんど行われず、
P2Pは来週末にも終らず忘れ去られ、
とりあえず当面を乗り切っただけで
次の危機の時にまた盛りあがるが、果たせずに一票。
0629デフォルトの名無しさん
01/08/26 18:40ID:ph4Tm7AM全板強制IDっぽい。人減らし作戦の一環でしょう。
0630デフォルトの名無しさん
01/08/26 18:45ID:A3jnb8oE0631名無し
01/08/26 18:51ID:cNxfOPbYいいと思われます。
0632デフォルトの名無しさん
01/08/26 18:52ID:cvrtcctM0634デフォルトの名無しさん
01/08/26 18:57ID:56vmLS/gログを取ってる事も周知させれば?
0635デフォルトの名無しさん
01/08/26 19:01ID:IO6XhCZYいまだに2chは匿名性だから来たのにとか
ニュー速の厨坊がほざいてるからねw
0636デフォルトの名無しさん
01/08/26 19:04ID:PGbsVVuc匿名とかそういうのじゃなくて負荷の問題で。
ログはApacheのログが別にあるからいいでしょ。
0637デフォルトの名無しさん
01/08/26 19:08ID:PbVG8tb2>ログを取ってる事も周知させれば?
あんたソース読んでないでしょ?
read.cgi内でやってるのは不正なUserAgentの記録
だいたいApacheがアクセスログ取ってるだろが
0638636
01/08/26 19:12ID:bQ7eOgW2個人的にいつもCombineなログを取っているので早とちり。
#っていうか私のIDかっこ悪い。 PGだってさ。
0639636 = 638
01/08/26 19:13ID:bQ7eOgW20640デフォルトの名無しさん
01/08/26 19:14ID:UBBPE9x.0641デフォルトの名無しさん
01/08/26 19:17ID:tdpKykIg0642デフォルトの名無しさん
01/08/26 19:18ID:HihBi4VAで、20や曜日を削ったから、おなじみのエンバ(以下略
0643デフォルトの名無しさん
01/08/26 19:18ID:nq7nF8XA0644643
01/08/26 19:19ID:nq7nF8XA0645デフォルトの名無しさん
01/08/26 19:19ID:HihBi4VA一番食ってるのはスレへのリンクではなく、
>>999のリンクだからねぇ。
ご丁寧にst=nn&to=nn&nofirst=trueまで付いてるから。
nofirst=true や imode=true を nofirst=1 や n=1 等に対応して、
なおかつ最も重要なのは、bbs.cgiがdatに書きこむ内容を変更しないと。
0646643
01/08/26 19:20ID:nq7nF8XA0647名無し
01/08/26 19:20ID:GLhprhn.0648デフォルトの名無しさん
01/08/26 19:21ID:tdpKykIgst -> s
to -> t
nofirst -> nf
でいいんじゃない?それに =true 付けるのも無駄。
0649636
01/08/26 19:21ID:bQ7eOgW2もし新たにhourも加わったとしても 636 と 638 で変わったのは説明できないような...
0650名無し
01/08/26 19:21ID:GLhprhn.0651デフォルトの名無しさん
01/08/26 19:23ID:NGu5IyHk0652デフォルトの名無しさん
01/08/26 19:23ID:NGu5IyHk0653643
01/08/26 19:25ID:Y.ZOSOn2http://www35.tok2.com/home/testsan/search.cgi
0654デフォルトの名無しさん
01/08/26 19:26ID:tdpKykIghttp://teri.2ch.net/test/read.cgi?bbs=accuse&key=998818852&st=132&to=132
0655636
01/08/26 19:27ID:bQ7eOgW2出来るけど>>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お疲れさまです。
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.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.8JQWikiをmergeしたものもあるのですが、あちらは、こちらで話がそこそこ
かたまったものを載せているようですから、ここには含めませんでした。
今後、関数毎に作業を進めるようでしたら、関数毎の引き値などの一覧も
作りますが、どうしましょうか。
0663名無し
01/08/26 19:46ID:GLhprhn.0664デフォルトの名無しさん
01/08/26 19:49ID:1UQ.S61Y0665616
01/08/26 19:56ID:.7OZ9ZNw>>624
そうなのですよね。運営側が付け焼き刃で当面を乗り切れば良いと
考えているのか。でなければ、昨夜の状況になる前に手を打てたのに。
(頻繁にマイナーチェンジしていましたが)
ver5.02って?
0668デフォルトの名無しさん
01/08/26 19:58ID:EDp.9ERA意味が無いんじゃないかと思うのですが、
運営側の人何しているのでしょう・・・・
0669デフォルトの名無しさん
01/08/26 20:00ID:MV3zKzJ.>Wikiをmergeしたものもあるのですが、あちらは、こちらで話がそこそこ
>かたまったものを載せているようですから、ここには含めませんでした。
結果を載せるだけじゃなくって
議論の場としては2chスレよりwikiのがやりやすいんじゃない。
[[read.cgiを高速化2]]はプログラム板で占拠して
ある程度自由に使ってしまっていいと思う。
#全角かぁ。スマソ
0672名無し娘。 ◆vP.bOZFQ
01/08/26 20:05ID:E1hp.8JQ議論をどちらでやるのか、私にはよくわからなかったので、
経緯をまとめるだけにしちゃいました(^^;
堅実なところはさっさと実装していって、議論の的を絞るのもいいかな
と思います。indentだけでもやって、どこかにUPしましょうか。。。
# これやっとけ、ってのがあればやっときます(笑
0673デフォルトの名無しさん
01/08/26 20:19ID:lmB6Nfnc>●int BadAccess()
>返戻値:USER_AGENT が正当であれば1、不正であれば0
返戻値が逆っぽいです。
0674名無し
01/08/26 20:26ID:GLhprhn.その後読み込みまた止まったようになる。
最期にまた読みこむ。
なんでだろう?
0675デフォルトの名無しさん
01/08/26 20:48ID:UUVa.jxU0676デフォルトの名無しさん
01/08/26 20:48ID:xL7OsRZcglobalを通してみました。全行にアンカー振ってあります。
また、-krでindent通したものもおいてあります。
0677676
01/08/26 20:55ID:xL7OsRZcread.cgiを弄っているのに、アカウント名がbbs_cgiだ(汗
0678名無し娘。 ◆vP.bOZFQ
01/08/26 20:59ID:E1hp.8JQそうですね(^^;
>>676
お疲れさまです。
ところで、ざっと復習してみると、amp問題と、BadAccess()あたりは
ソースに組み込んでもよさそうですね。
# BadAccess() は"#ifdef NEWBADA"とかなんとかにしておく。
2時間ほど新メンバー見てきます(爆死
0679デフォルトの名無しさん
01/08/26 21:06ID:PbVG8tb2gzip圧縮してるからでしょ
0680デフォルトの名無しさん
01/08/26 21:07ID:8728MBZU生成して保存。
TOPPAGEの読み込みはread.cgiでなく、静的なページを送り返す
ようにしたらどうだろう。
0681デフォルトの名無しさん
01/08/26 21:09ID:t/kABhdw3バイト節約(ワラ
0682デフォルトの名無しさん
01/08/26 21:22ID:r9kv7gys負荷は劇的に減るが、gzip圧縮の恩恵がうけられなくなって転送量がふえてしまうかも
0683デフォルトの名無しさん
01/08/26 21:25ID:SBklp.1k板が落ちそうになってるのを見ると、複雑な気持ち。
0685デフォルトの名無しさん
01/08/26 21:40ID:xL7OsRZcついでに、コロンが全角半角入り乱れているので整理しよう(笑
0686デフォルトの名無しさん
01/08/26 21:42ID:iy09H5/Emod_gzip の導入は決定しているようなので、その辺は考えなくても良いかと。
0687デフォルトの名無しさん
01/08/26 21:43ID:NGu5IyHk拡張子をhtmlにしたままgzipで圧縮するばあいはApacheの設定が必要になると思う。
今までのindex2.htmlはindex2.html.gzに転送するページにするのが無難だと
個人的には思うけど。
0688デフォルトの名無しさん
01/08/26 21:46ID:PbVG8tb2だからmod_gzip入れるんだってば
0689369 ◆3XTuRnAc
01/08/26 21:50ID:iecZaXF2いま外出から帰ってきました。すごいことになってますね。
娘。さんとかPerlerさんとかもがんばっておられるようで、自分一人
遊んでて申し訳ない感じ。
・・・で、ftpサーバがいるなら今日から明日の朝までなら
提供する用意があります。たまにADSLモデム落とされますが(汗、
それでも良ければ。
0690デフォルトの名無しさん
01/08/26 21:51ID:JmrVikf2これまでに貼られたリンクとの互換性を考えると、
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何かいろいろ変更したからか?
たまに出来たりもして何が何だか・・・
不正な行為か・・・言われてもしょうがないけど・・・(藁
0692名無し
01/08/26 21:52ID:GLhprhn.0693687
01/08/26 21:52ID:NGu5IyHkそりゃどうもすみません、なんかやけに好戦的に見えるなぁ。
0694デフォルトの名無しさん
01/08/26 21:53ID:JmrVikf2index2 が更新される回数≪読まれる回数
だから、 mod_gzip で毎回圧縮するより更新の際に圧縮しよう、という議論?
>691 何が不正なのですか?
0695デフォルトの名無しさん
01/08/26 21:55ID:RDsCkPFAだって、 index2.html.gz はすでにきのうやってたんだもの。
いまでも index2.htm は gzip で出してる。
ようするにがいしゅつ。
0696名無し娘。 ◆vP.bOZFQ
01/08/26 21:58ID:qavO62ww>>692
夜勤さんも、モ板祭の終わる頃にいらっしゃるようなことを昨晩おっしゃってました。
よろしければ、仕様変更を伴わない堅いところから、ソースに組み込んでいこうと
思いますが、どこから手を付けるべきでしょうか。
>>678 は組み込んでみました。追加がすぐに出ないようであれば、アップします。
0697名無し
01/08/26 22:02ID:GLhprhn.http://star.endless.ne.jp/users/forcount/contents/scriptmaker/read11.rev1.c
0698687
01/08/26 22:02ID:NGu5IyHkあぁ、なるほど、最初からそういってくれたらよかったのに。
0699名無しさんの声
01/08/26 22:04ID:SBklp.1kうちで転送量削減のソースを書いたプログラマーを
月200万くらいで雇いたいのですが、どうすれば良いですか?
2ch終わりか?東京kittyひろゆき討伐を決定!
http://yasai.2ch.net/test/read.cgi?bbs=venture&key=998735207
だってよ。
0700名無し
01/08/26 22:04ID:GLhprhn.http://www.gedoh.org/aki/2ch/wiki/yukiwiki.cgi?TopPage
0701デフォルトの名無しさん
01/08/26 22:04ID:pAfX386E0702デフォルトの名無しさん
01/08/26 22:05ID:MF2k8Nc22ちゃんねる本体にはそれほど負荷かかってないみたいですね。
羊と狼はやばそうですけど。(汗
0703名無し娘。 ◆vP.bOZFQ
01/08/26 22:24ID:x6eG9iGAに #ifdef NEWBA 部分を組み込んだものを
http://nichrdcgi.hoops.ne.jp/read11.rev2.c
にアップしました。
その他の変更点は、関数毎に3行のコメント行を入れたこと、
いちおうindentしたことです。
検証できるかたいらっしゃいましたらよろしくです。
0704デフォルトの名無しさん
01/08/26 22:29ID:ggkSbIno0705デフォルトの名無しさん
01/08/26 22:29ID:vtjT3i/c0706デフォルトの名無しさん
01/08/26 22:33ID:1UQ.S61Yread2ch.h って今どこにあるの?
0707名無し娘。 ◆vP.bOZFQ
01/08/26 22:35ID:kimvJHK2。。。(泣
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.S61Y0710名無し
01/08/26 22:38ID:GLhprhn.アクセス急増。
0711デフォルトの名無しさん
01/08/26 22:44ID:ggkSbInoそのURL見れないんだけどみんな見れてる?
0712デフォルトの名無しさん
01/08/26 22:46ID:1UQ.S61Y0713デフォルトの名無しさん
01/08/26 22:46ID:UBBPE9x.0714名無し娘。 ◆vP.bOZFQ
01/08/26 22:48ID:kimvJHK2>>711
うちでは見えていますが、念のため
http://nichrdcgi.hoops.ne.jp/read2ch.h
にもおいておきました。
0715デフォルトの名無しさん
01/08/26 22:48ID:ggkSbInoはう。ビンゴ。ありがとう。
ローカルsquidに蹴られてた。
0716711
01/08/26 22:50ID:ggkSbIno>>714もありがとう。
0717名無しさん
01/08/26 23:01ID:jZdNU1oQhttp://members.tripod.com/bbs_cgi/
だったら行くことができる。
0718デフォルトの名無しさん
01/08/26 23:04ID:/FZALAjcそのスレ読んでみたけど、「匿名でヤバイ情報が覗ける」って
どこのこと言ってんだか・・・。なんつー認識だよ
0719デフォルトの名無しさん
01/08/26 23:06ID:xL7OsRZcすっかり忘れてたよ
./configure --enable-underscores
でsquid作り直してつかぁさい(マテ
0720デフォルトの名無しさん
01/08/26 23:08ID:j42oaHOQそれとも他のスレに話題があるのかな
0721デフォルトの名無しさん
01/08/26 23:16ID:/FZALAjc日本語化けてない?もしかして俺だけかな
0722デフォルトの名無しさん
01/08/26 23:20ID:xL7OsRZcファイルは全てeuc-jpです。
0723デフォルトの名無しさん
01/08/26 23:23ID:9O51.yx2>◆printf()
> 呼び出し回数削減
> puts()で可能なところは代用
> "\n"を削除
文字列長が分かっている場合は fwrite() のほうがいいんじゃない?
0724デフォルトの名無しさん
01/08/26 23:27ID:/FZALAjc0726722つか、bbs_cgiの馬鹿です
01/08/26 23:35ID:xL7OsRZc0727[email protected]
01/08/26 23:43ID:paiaYiuMちょっと補足いれさせてくれ。
要はdat_read関数上で'\0'から'*'に置き換えるのに
バッファを全部サーチしたのちに、再度getMaxLineで
各書き込みの先頭位置を検索するためにバッファを全部サーチしているので
一回のバッファサーチで両方の作業を行えばよいのではと
思ったわけです。即興でコードかいたんで無茶苦茶になっちまったけど、
できればこのコンセプトで誰か最適化してくれればうれしいっす。
0728デフォルトの名無しさん
01/08/26 23:53ID:/FZALAjc古すぎて役に立たないかな。ちなみにBase64(ナゼ
aHR0cDovL21hbmtvbWFua29tYW5rby52aXJ0dWFsYXZlLm5ldC9iYnMudHh0
0729369 ◆3XTuRnAc
01/08/26 23:56ID:iecZaXF2どんな改造かというと、
「gzip 1.2.4を強引に組み込んでみました」というものです。
逆にいうと、gzip 1.2.4に、強引にread.cgiの機能を入れてみた
ってところなのですが。
・・・・ソースいります?でかいですが。
なにしろgzip 1.2.4フルセットです。
0730爆♪
01/08/26 23:57ID:jt9kAY8E>なにしろgzip 1.2.4フルセットです。
パッチにして(藁
0731369 ◆3XTuRnAc
01/08/26 23:58ID:iecZaXF2gzip.cとgzip.hだけで良いんですね良く考えたら。
gzip 1.2.4のフルセットは皆さんで落としてもらうとして(笑。
メリットは・・・プロセス数を浮かせられることかな(^^;;。
デメリットは、実行コードサイズがgzipと同等になっちゃうこと。
0732デフォルトの名無しさん
01/08/26 23:59ID:Kg2ClUugどっかにあぷしないと無理でしょう。
いや、確かにそういう話はあったし、間違っちゃいないと
思うけど、君素敵すぎ。
0733369 ◆3XTuRnAc
01/08/27 00:01ID:xXHglqmc動いたというのは自分の勘違い。ごめんなさい・・・・。
0734デフォルトの名無しさん
01/08/27 00:01ID:407N8DOw夜勤さんや削除委員長さんとは連絡取れないのでしょうか?
UNIX板が駄スレたちまくりなので対処してほしいのですが
0735デフォルトの名無しさん
01/08/27 00:06ID:9Ji20W0Uところでbbs.cgiの方が着実にアップデートされていってますね。
真の精鋭はそっちに携わってる?
0736デフォルトの名無しさん
01/08/27 00:07ID:oz/9pnnYでもお手を煩わせていいものかどうか。
0737名無し娘。 ◆vP.bOZFQ
01/08/27 00:07ID:Km.fZ5BI0738デフォルトの名無しさん
01/08/27 00:07ID:5zQpe5GQどこで?
0739デフォルトの名無しさん
01/08/27 00:12ID:tF8/p42Ittp://teri.2ch.net/test/read.cgi?bbs=accuse&key=998806470&ls=30
0740夜勤 ★
01/08/27 00:13ID:/VYvqKxI0741名無し娘。 ◆vP.bOZFQ
01/08/27 00:13ID:Km.fZ5BIお疲れさまです。
あの、まだread.cgi開発中なのですが、これ以上改善を施して、
採用される見通しはありますか?
0742夜勤 ★
01/08/27 00:16ID:/VYvqKxI0743デフォルトの名無しさん
01/08/27 00:17ID:ZT1fe3Xg0744名無し娘。 ◆vP.bOZFQ
01/08/27 00:17ID:Km.fZ5BIまず、現行プログラム各部の性格や機能を変えない範囲での最適化をする。
その後、可能なのであれば、包括的・抜本的な最適化(作り直し)をする。
といった感じです。
0745名無し
01/08/27 00:17ID:N77k73Ds0747名無し娘。 ◆vP.bOZFQ
01/08/27 00:19ID:Km.fZ5BIわーい(泣
では、お手が空き次第、
http://nichrdcgi.hoops.ne.jp/read11.rev2.c
をpiza2にでも導入していただけますか。
インストールオプションは・・・あれ、調べておきます。
0748夜勤 ★
01/08/27 00:20ID:/VYvqKxIどこか区切りがついたら、呼んでください。実際にサーバに上げますので。
今の目的は、「転送量の軽減」です。
たぶん批判要望あたりをうろうろしてますので。
0749夜勤 ★
01/08/27 00:22ID:/VYvqKxI0750名無し娘。 ◆vP.bOZFQ
01/08/27 00:23ID:Km.fZ5BI>今の目的は、「転送量の軽減」です。
では、今のうちに「最新レス100」->「最新レス100」とかの対処を
しちゃいましょうか。。。
0751369 ◆3XTuRnAc
01/08/27 00:24ID:xXHglqmcgzipのstdin -> stdoutなモードを使用して
ログ出力→gzip stdin -> gzip stdout -> read.cgi stdout
ってーな方向で持っていこうと思ったのですが、
stdioのファイルディスクプリタをどうにかしないと
行けないことに気づきました。
・・・うーむ。こんなこと最初から気づけ俺。
0752デフォルトの名無しさん
01/08/27 00:25ID:6kfMn/mAhttp://nichrdcgi.hoops.ne.jp/read11.rev3.c
ですよ。
0753デフォルトの名無しさん
01/08/27 00:25ID:469/dUs6web制作の方でHTML軽減はやってるみたいですよ。
スキルの高い方知恵を貸してください2号
http://natto.2ch.net/test/read.cgi?bbs=hp&key=998774537
0755名無し
01/08/27 00:26ID:N77k73Dsこれ見れますか?
ファイルが無いようですが、、
read11.rev3.c ならある。
0756デフォルトの名無しさん
01/08/27 00:28ID:284T.QVo優先すべきということでしょうか。
そもそもサーバのCPUパワーにはまだ余裕があるんですよね?>夜勤さん
0757名無し
01/08/27 00:31ID:N77k73Dshttp://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名無しさん || die
01/08/27 00:32ID:YgC5b35IスレをROMってリロードしまくりの人が多いなら効果あると思うのだけど。
0759名無し娘。 ◆vP.bOZFQ
01/08/27 00:32ID:Km.fZ5BIすいませんが、フォローしきれる自信がないので、read.cgiで変更すべき
点だけどなたか列挙してくださいませんか?
複数の方がやって下さっても、この際よいと思います。
# それだけ抜け落ちが少なくなるし…
0760デフォルトの名無しさん
01/08/27 00:32ID:IuzteUCYこれは正常なのでしょうか?
0761名無し娘。 ◆vP.bOZFQ
01/08/27 00:35ID:Km.fZ5BI0762技術とかでなく
01/08/27 00:40ID:1NVzBQO2(日当たり回数制限付き)
プロキシーは一切制限する所から初めて、許可申請
で開ける様にする
(プロキシー潰して行く方向でやる方が面倒)
各板共に3分間は更新された内容が読み込めない様
にする
(同一IPからのリクエストは3分間はkickってのも在る?)
これで安泰
0763Web制作から転載です。
01/08/27 00:43ID:nQB5Vf12index2.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肝心なのを見失ってるって感じ。
せっかくのいい機会なのに……。
0765デフォルトの名無しさん
01/08/27 00:46ID:9mNBJEMMとりあえず 最新レス100の100を半角にするか?(笑
あと「名前:」「投稿日:」削る、っていきなりやっていいんだろうか。
0766デフォルトの名無しさん
01/08/27 00:46ID:NsFeEjCc>620 (どのくらい検証されてる? さらなる改善は?)のように
dst を 20バイトしか使わないなら、char zz_im[1024] などとなっているのも [20] でいい。
0767名無し娘。 ◆vP.bOZFQ
01/08/27 00:47ID:Km.fZ5BIHTML内の"\n"とか。
0768デフォルトの名無しさん
01/08/27 00:47ID:yw5i/z86今時、ほとんどないだろうけどね。
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:N77k73Ds312 名無し 01/08/26/日 15:40
に意見がまとまりました。
0770デフォルトの名無しさん
01/08/27 00:49ID:NsFeEjCc0771名無し娘。 ◆vP.bOZFQ
01/08/27 00:49ID:Km.fZ5BIそうですね。GetString関係は、まずread.cgiで(現在との互換性を
保ちつつ)実装しておきましょうか。
検証お願いします。できたら、最終版へのリンクもあるとありがたいです。
0772デフォルトの名無しさん
01/08/27 00:49ID:pckFEAaYfflush(stdout);
gzdopen(1);
func_type *pFunc = gzip_flag ? gz_printf : fprintf;
して、printf を関数ポインタに置き換えるだけじゃだめなん?
gzip.c 組み込みって何してんの?
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現状datのそのまま出力してるだけだし。
0777デフォルトの名無しさん
01/08/27 00:53ID:vN9r/JlA0778デフォルトの名無しさん
01/08/27 00:54ID:3lNlqFsM他の板のスレッドから飛んだとき、「ここはどこだ?」となることがあったりする。
個人的には残して欲しい。
0779デフォルトの名無しさん
01/08/27 00:54ID:nQB5Vf12『今の2ちゃんねる』の転送量を軽減することですよね。
あまり見た目は変えない方が良いかと。
0780369 ◆3XTuRnAc
01/08/27 00:56ID:xXHglqmcえと、正確には「gzipにread.cgiを強引にマージしよう」っていう話です。
gzdopen()っていう名前から聞くと、gzlibとかそう言うのがあるのでしょうか。
man page見ても見つからないから、ひょっとしたら後から追加しないと
行けないのかな・・・>FreeBSD
情報お願いします。
0781デフォルトの名無しさん
01/08/27 00:56ID:oFtR0rYMスレに用はあっても、板に用はないんじゃないですかね?
どんなもんでしょ?
0782デフォルトの名無しさん
01/08/27 00:57ID:9mNBJEMMでも名前:、投稿日:、は消してもよさそうだけどな。
0783デフォルトの名無しさん
01/08/27 00:58ID:2MpScvZwUIはまだ議論の余地があると思うので、
今回はあまりいじらない方がいいですね。
0784デフォルトの名無しさん
01/08/27 00:58ID:pckFEAaYzlib なんすけど、FreeBSD-4 なら /usr/include/zlib.h のコメント読んで
0785782
01/08/27 00:58ID:9mNBJEMMこりゃread.cgiも消しちゃってOKじゃねーかな。
0786369 ◆3XTuRnAc
01/08/27 00:59ID:xXHglqmcええ、その辺は承知してます。
もしgzip組み込みがうまく行って、かつ、read.cgiのGPL適用が
問題なく、かつ、組み込む価値があるなら採用、どれかひとつでも
欠ければ不採用ってので今は組み込みやってるところです。
まあ、今は単純な興味を満たす自己満足みたいなものですかね。
それでうまく行けば儲け物っていう。
0787369 ◆3XTuRnAc
01/08/27 00:59ID:xXHglqmc0788デフォルトの名無しさん
01/08/27 01:00ID:iuwjXswY確定ならgzip組み込みって無い方がシンプルでいいと思う。
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.QVohttp://www.gzip.org/zlib/zlib_license.html
とはいえ788に同意
0793デフォルトの名無しさん
01/08/27 01:08ID:2Ic51Mxc515、517の修正は入らないんでしょうか?
piza2(ここ)でも、全レス表示可能になってますが。
read.cgi Ver5.xxのとこは全部そうかな?
0794nanasi
01/08/27 01:09ID:MWcmzrwU0795デフォルトの名無しさん
01/08/27 01:09ID:DhF2Uz5cmod_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<BODY TEXT=black BGCOLOR=#EFEFEF link=blue alink=red vlink=#660099>
↑相当をCSSで実現するということですよね?
0798デフォルトの名無しさん
01/08/27 01:14ID:ReF.V//c0800デフォルトの名無しさん
01/08/27 01:15ID:YgC5b35Iちなみに index2 では既に body の属性消されてますよ。
0801デフォルトの名無しさん
01/08/27 01:16ID:CbLq.TAQx-sjis を Shift_JIS にはまだできないのでしょうか?
0802デフォルトの名無しさん
01/08/27 01:16ID:DhF2Uz5c0803デフォルトの名無しさん
01/08/27 01:17ID:284T.QVo515じゃない?
0804デフォルトの名無しさん
01/08/27 01:17ID:2MpScvZw賛成です。
0805デフォルトの名無しさん
01/08/27 01:18ID:oVJMiQ2YHTTPレスポンスで出した方が良くない?
0806デフォルトの名無しさん
01/08/27 01:18ID:2MpScvZwtitle要素は必要です。
0807名無し娘。 ◆vP.bOZFQ
01/08/27 01:19ID:Km.fZ5BIお出で願えないかなぁ。
0808デフォルトの名無しさん
01/08/27 01:19ID:oVJMiQ2Y0809348
01/08/27 01:20ID:ynZt.qo6http://star.endless.ne.jp/users/forcount/contents/scriptmaker/read11.rev3.c
こんな感じでage
0810名無し
01/08/27 01:20ID:N77k73Ds0811デフォルトの名無しさん
01/08/27 01:21ID:2MpScvZw時代と逆行してる気がする
0812デフォルトの名無しさん
01/08/27 01:21ID:cn52pBwIお呼び出しはしておきました。
0813nanasi
01/08/27 01:23ID:MWcmzrwUどのカテゴリで探せばよいでしょ?
0814デフォルトの名無しさん
01/08/27 01:23ID:DhF2Uz5cそうでした。>>515です
>>806
ブックマーク用ですか?
では、bodyのスレタイトルを消します?
0815デフォルトの名無しさん
01/08/27 01:23ID:pckFEAaYcvs.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ここはプログラム技術板です。
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 じゃないの?
このリンク先をクリックすると画面が狂って表示されない。
0820デフォルトの名無しさん
01/08/27 01:27ID:284T.QVo「プログラム」じゃないかな?
0821デフォルトの名無しさん
01/08/27 01:28ID:tF8/p42Ihttp://210.150.210.150/sage/bbstable.html
ギコナビ使ったこと無いからわかんないんだけど
bbstable見てみたらどうでしょう?
0823デフォルトの名無しさん
01/08/27 01:30ID:GRBfg3.AカテゴリはPC等だよ
0824ニュース速報板のタグが間違えている
01/08/27 01:30ID:X..P9zvsわさと?ガイシュツ?
<a href="../news/./index2.htm">リロード</a>
これって index2.htm ではなく index2.html じゃないの?
このリンク先をクリックすると画面が狂って表示されない。
それとここのスレに書き込むとエラーが出る by かちゅーしゃ
0825824
01/08/27 01:32ID:X..P9zvs0826デフォルトの名無しさん
01/08/27 01:32ID:GRBfg3.Aホットゾヌだとエラーがでるが書き込めてるみたい。
0827名無し
01/08/27 01:33ID:N77k73Dsread.cgi の改良で、25% くらいの改善の見込みが付いたところでしょうか、
で index2.html とか若干のインターフェイスの修正でさらに 20% くらいの
改善を目論んでいる(やってみなきゃ分からない)というのが、今の状況
です。さらにいくつかのサーバを停止すれば、目標である 50Mbps以下
にはなると思います。
じゃー これが何を意味するのか?ということですが、
2ちゃんねるが黒字の経営(言葉のつっこみは勘弁)であれば、60% 以上の
経営効率化に成功したとうことでしょうが、、、
残念ながら、今の2ちゃんねるにおいては、若干の延命措置を施した
だけだったりします。このへんのことは弁茶板の方々が詳しいと思います。
0828デフォルトの名無しさん
01/08/27 01:33ID:cn52pBwIスレ違い
2chの動作報告はここで。
http://teri.2ch.net/test/read.cgi?bbs=accuse&key=998808733
君たちの行き先はこっち
0829デフォルトの名無しさん
01/08/27 01:33ID:BRbcVi3o批判要望板へどうぞ。
0830348
01/08/27 01:33ID:ynZt.qo6でも一応書き込めてるようですが・・・
0831デフォルトの名無しさん
01/08/27 01:34ID:pckFEAaYからこっちにしますかね・・・
0832nanasi
01/08/27 01:34ID:MWcmzrwUbbstable上手く開かないです・・・。
>>822
PC等は確認済みですが、プログラム技術カテゴリ無いです・・・。
0834デフォルトの名無しさん
01/08/27 01:36ID:cn52pBwIhttp://piza2.2ch.net/tech/index2.html
0835デフォルトの名無しさん
01/08/27 01:36ID:8q2NINpg0837デフォルトの名無しさん
01/08/27 01:37ID:QEEMLonQ0838デフォルトの名無しさん
01/08/27 01:37ID:IuzteUCY古いネスケで文字化けする
ネスケ切り捨てるならそれでもいいかも
0839デフォルトの名無しさん
01/08/27 01:37ID:DhF2Uz5c0840348
01/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:oVJMiQ2YRFC的には、
http://www.fxis.co.jp/DMS/sgml/xml/saloon/html_correct_charset.html
ここいら見れ。
0843デフォルトの名無しさん
01/08/27 01:40ID:DhF2Uz5cSHIFT-JISなので、ほとんど化けない。
0844デフォルトの名無しさん
01/08/27 01:40ID:pckFEAaYマジレスしとくと後学のためになるような作業ではない
数学の勉強でもしてろ
0845デフォルトの名無しさん
01/08/27 01:40ID:ReF.V//c<HTML></HTML>も消しちゃっていいことないスか?
0846名無し
01/08/27 01:41ID:N77k73Ds0847名無し娘。 ◆vP.bOZFQ
01/08/27 01:41ID:Km.fZ5BI0848デフォルトの名無しさん
01/08/27 01:41ID:IuzteUCY100%化けるんだよ。欧文文字コードと勘違いして。
まあネスケがタコと言えばそのとおりなんだが。
0849デフォルトの名無しさん
01/08/27 01:41ID:2MpScvZw時代に逆行しているような気がする
0850デフォルトの名無しさん
01/08/27 01:42ID:IuzteUCYxhtmlとかにして無駄に転送量増やすくらいなら
逆行してても仕方ない
0851デフォルトの名無しさん
01/08/27 01:42ID:oVJMiQ2Yとりあえず、そーすみしてくれ。
0852デフォルトの名無しさん
01/08/27 01:42ID:BRbcVi3oread.cgi 5.xx の採用の結果(速報)
ピーク時の転送量はだいたい 45% 減。
CPU 負荷は、ほとんど導入前と変わらないようです。
すごい効果がでていると思います。
UNIX 板の方々に感謝!
あとは mod_gzip がどうなるかが楽しみです。
まだ、導入できると決まったわけじゃありませんが、
0853801
01/08/27 01:43ID:CbLq.TAQそのためにといってCGIにはかせるHTMLを
最低限のヘッダ要件をも満たしてないものにするのは
いかがなものかと思うわけです。
0854デフォルトの名無しさん
01/08/27 01:44ID:tF8/p42I517 名前:夜勤 ★ 投稿日:01/08/27 01:40 ID:???
read.cgi 5.xx の採用の結果(速報)
ピーク時の転送量はだいたい 45% 減。
CPU 負荷は、ほとんど導入前と変わらないようです。
すごい効果がでていると思います。
UNIX 板の方々に感謝!
あとは mod_gzip がどうなるかが楽しみです。
まだ、導入できると決まったわけじゃありませんが、
0855デフォルトの名無しさん
01/08/27 01:44ID:IuzteUCY「ネスケ 文字化け」とかでGoogleしてみてくれ
結構有名だからWeb板の住人なら誰でも知ってそうだが
0856名無し娘。 ◆vP.bOZFQ
01/08/27 01:45ID:Km.fZ5BI個人的に同感です。
ところで、そろそろ新スレ?
あと、GetString関係、>>620をもとに実装してみます。
それが終わったらコンパイルテスト後にソースアップします。
0857デフォルトの名無しさん
01/08/27 01:45ID:YgC5b35I0858デフォルトの名無しさん
01/08/27 01:46ID:cn52pBwI2chの読み出し[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:IuzteUCY0860デフォルトの名無しさん
01/08/27 01:46ID:QEEMLonQ0861Web制作板
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分かってるとは思うけど
http://www.ne.jp/asahi/minazuki/bakera/html/reference/basic#html
0863名無し
01/08/27 01:49ID:N77k73Dshttp://www.gedoh.org/aki/2ch/wiki/yukiwiki.cgi?TopPage
0864デフォルトの名無しさん
01/08/27 01:49ID:YgC5b35I仕様よりも実装優先で。
0865デフォルトの名無しさん
01/08/27 01:50ID:2MpScvZwhttp://www.w3.org/TR/xhtml11/
0866デフォルトの名無しさん
01/08/27 01:49ID:jRMpTCc6-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:oVJMiQ2YDTD書いてない時点で、「ブラウザが解釈できる限界まで削る」という
方針でもいいんじゃ無いかと思うけどな。
>>855
httpのヘッダでなく、metaに入れないと化けるって事なら、みつけられん
charsetがShift_JISだから(x-sjisでないから)、ってことなら、了解。
0868名無し
01/08/27 01:51ID:N77k73Ds0869デフォルトの名無しさん
01/08/27 01:51ID:IuzteUCY2chのhtmlはxhtmlじゃないでしょ
もしそうならすでに違反しまくり
今さら<HTML>を残したって同じこと
そもそもxhtmlでは<html>と小文字でなくちゃ駄目
0870デフォルトの名無しさん
01/08/27 01:52ID:cn52pBwIこれでよろしいですか?
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:YgC5b35Ihttp://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詳しいことは忘れたけどmetaに入れた場合とHTTPヘッダに
入れた場合でもネスケ3はなぜか動作が違う
まあ苦情が来なければいいかも
0874845
01/08/27 01:53ID:zjmRlAwo0875デフォルトの名無しさん
01/08/27 01:55ID:DhF2Uz5c>>838で古いネスケって書いてあったので、Ver1や2の頃かと思っていました(^^;
Ver4台で起きているのですね(^^;
では、METAタグがよろしいかと。。。
古いバージョンは逆にcharset=Shift_JISはOKなのかな。
(スレ違いすみません)
0876デフォルトの名無しさん
01/08/27 01:56ID:6kfMn/mAこれから、全サーバに read.cgi 5.xx を入れに行ってきます。
たくさんサーバあるので、ぼちぼち入れます。
コピペです。
0877デフォルトの名無しさん
01/08/27 01:56ID:3lNlqFsM後で取捨選択、をやろうとして現在Web制作の方が結構大変なことになってるんですが…。
0878名無し
01/08/27 01:56ID:N77k73Ds>これから、全サーバに read.cgi 5.xx を入れに行ってきます。
>たくさんサーバあるので、ぼちぼち入れます。
だそうです。最終版のプログラムを提示して下さい。
0879スレ違いスマソ
01/08/27 01:57ID:IuzteUCYネスケ1や2や4は大丈夫。だめなのはネスケ3のみ。
ネスケ3だとcharset=Shift_JISもHTTPヘッダ使うのもだめ。
0880名無し娘。 ◆vP.bOZFQ
01/08/27 01:57ID:Km.fZ5BIアップできないのでしばらくお待ち下さい。。。
# あぷろだにでもあげようか…
0881デフォルトの名無しさん
01/08/27 01:59ID:ZIaMkoUwやっぱここはUNIX板とは違うオナ〜ニ板でしかなかったのか・・・
0882デフォルトの名無しさん
01/08/27 01:59ID:yw5i/z86文字コードはブラウザで強制的に切り替えできるけど、
x-gzipにgzipで返されるとどうにもならない。
0883348
01/08/27 01:59ID:ynZt.qo6[email protected]
宛に
id:2chread
pass:readcgi
という内容で添付して送っていただければ
自動的にアップされます
0884デフォルトの名無しさん
01/08/27 02:00ID:pckFEAaYメンバーほとんど同じだと思うけど
0885369 ◆3XTuRnAc
01/08/27 02:01ID:xXHglqmcうちのftpつかってくれて良いですよ。ftpポート開いてます。
210.170.170.131
0886デフォルトの名無しさん
01/08/27 02:01ID:IuzteUCYネスケ3もHTTPヘッダやhtmlで指示された文字コードは切り替えられない
0887369 ◆3XTuRnAc
01/08/27 02:01ID:xXHglqmc0888デフォルトの名無しさん
01/08/27 02:02ID:QEEMLonQっと、それはbbs.cgiの部分だな。
とりあえずWeb製作のスレで「決定事項」としてまとめとけば、
必要になったらこっちから見に行くんじゃないかな。
0889デフォルトの名無しさん
01/08/27 02:02ID:ZIaMkoUwhttp://natto.2ch.net/test/read.cgi?bbs=hp&key=998774537&ls=50
0890デフォルトの名無しさん
01/08/27 02:03ID:BrafyimQ0891デフォルトの名無しさん
01/08/27 02:03ID:3lNlqFsM了解しました。
0892348
01/08/27 02:05ID:ynZt.qo6一応
http://star.endless.ne.jp/users/forcount/4countbbs/scriptmaker/index.html
に告知しておいて下さい
5分ごとにチェックしてます
0893デフォルトの名無しさん
01/08/27 02:06ID:cn52pBwI0894名無し娘。 ◆vP.bOZFQ
01/08/27 02:08ID:Km.fZ5BI使わせていただきました。ありがとうございます。
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:xXHglqmcgzprintfが、printfじゃなくてfprintf相当というのが結構面倒(^^;;。
なんか、話を混乱させてしまいそうですし、できる見こみも少ないので
「gzipマージ/zlib利用」はおいらのところでは断念することにします。
みなさま、混乱させてごめんなさい。
# 悔しい・・・。なにより、実現できると思ったことが実現できないことが。
0897名無し娘。 ◆vP.bOZFQ
01/08/27 02:11ID:Km.fZ5BIHTML吐き出し部分での改造は、"100"を"100"にしたこと、
JavaScriptにエラーが出ない範囲で"\n"を省略したこと。
read.cgiバージョン表示部分を短くしたこと。
大きなことは、#ifdef GSTR2。
その他は、x-gzipのこと、tm_nowのこと、x-sjisのこと。
0898デフォルトの名無しさん
01/08/27 02:13ID:pckFEAaYprintf 全置き換えでだめだったの?
0899369 ◆3XTuRnAc
01/08/27 02:22ID:xXHglqmcあ、それやってないです。
ちょうどread12が公開された見たいだし、もう一度やってみようかな・・・。
0900デフォルトの名無しさん
01/08/27 02:23ID:KshZOEYcやったところまで Wiki にでも上げといたらどう?
誰か跡継いでくれるかもよ。
0901デフォルトの名無しさん
01/08/27 02:24ID:yw5i/z86x-sjisは変わらんが、Shift-Jisは変えられる様だ。
3.01jaを引っ張り出して来て試してみた。
0902369 ◆3XTuRnAc
01/08/27 02:26ID:xXHglqmcread12.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:xXHglqmcftp://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ごめん、Shift_JISだった。
表示コードを変えられなかったが、sjisだと認識するんならOKだし、
不明なコードなら変更できるんだからかまわないんでは。
0907デフォルトの名無しさん
01/08/27 02:36ID:pckFEAaYそうそう、そんな感じで。
0908デフォルトの名無しさん
01/08/27 02:38ID:IuzteUCY確か変えられなくて困った記憶があるんだが…記憶違いかも。
確かめてみる。
0909デフォルトの名無しさん
01/08/27 02:45ID:vN9r/JlA(*zz_printf)(zz_fptr, "fmt", ...)
は
zz_printf(zz_fptr,"fmt", ...)
の方が良いと思われ。(ANSI C には反しない。)
後で元に戻すとき楽だと思う。
0910デフォルトの名無しさん
01/08/27 02:48ID:pckFEAaY#define printf(str, ...) zz_printf(zz_fptr, str, ...)
みたいに可変引数できるんだっけ?
0911デフォルトの名無しさん
01/08/27 02:51ID:oVJMiQ2YってのでGNU Cの拡張で「だけ」OKだったはず。
0912デフォルトの名無しさん
01/08/27 02:51ID:yw5i/z86EUCなのに、x-sjisとかShift_JISとか書いてあって困ったんではないの。
間違ってShift-Jisってやったら変えられたからね。
0913デフォルトの名無しさん
01/08/27 02:52ID:oVJMiQ2Y詳しくはここいらの「可変個の引数をもつマクロ」を見れ
0914デフォルトの名無しさん
01/08/27 02:53ID:pckFEAaY0915908
01/08/27 02:54ID:IuzteUCY文字化けするのはネスケ2だった。
0916デフォルトの名無しさん
01/08/27 02:55ID:IuzteUCY変えられない。もちろん文書はシフトJIS。
2.02で確認。
0917デフォルトの名無しさん
01/08/27 02:58ID:yw5i/z86さすがに、ネスケ2はそこらに残してない。
0918デフォルトの名無しさん
01/08/27 03:00ID:5VdVXYrUhttp://yasai.2ch.net/test/read.cgi?bbs=venture&key=998402480
0919デフォルトの名無しさん
01/08/27 03:04ID:pckFEAaY西さん一晩考えるって・・・
0920-
01/08/27 03:29ID:q7WWiv5M0921デフォルトの名無しさん
01/08/27 04:01ID:vN9r/JlAhttp://cocoa.2ch.net/test/read.cgi?bbs=unix&key=998764722&st=490
0922らいがー。
01/08/27 04:30ID:R/rjVC1g0923デフォルトの名無しさん
01/08/27 23:40ID:bJ23bC3M#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:bJ23bC3Mchar **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:bJ23bC3Mif (*(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//名前欄に','が入っている時に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, "&", 4) == 0) {
ね。
0929デフォルトの名無しさん
01/08/29 22:04ID:eQiT7HbIコンパイルした時にダイナミックステップが多くなるじゃん。
caseにしろよ。その方が高速化するぞ。
0930デフォルトの名無しさん
01/08/29 22:38ID:6wtO5bLA文字列比較にcase?
レス数が900を超えています。1000を超えると表示できなくなるよ。