■スレッドリストへ戻る■ 全部 1- 101- 201- 301- 401- 501- 601- 701- 801- 901- 最新50
プログラマが2chを救う!?
- 51 :デフォルトの名無しさん :2001/08/25(土) 21:22
- UNIX板の作業所に荒しが入った模様。
IRCへ移動するプランが提案されています。
- 52 :名無 :2001/08/25(土) 21:25
- プログラマーはUNIX板へ集合して下さい。
対策を練ります。
- 53 :デフォルトの名無しさん :2001/08/25(土) 21:26
- 削除人が待機してるようだから大丈夫。
荒らしがしつこければ制限かけるだろう
- 54 :デフォルトの名無しさん :2001/08/25(土) 21:28
- つーか、いっそのことサーブレットで書き直すと、かなり
よいんじゃない?CGIじゃ限界あるでしょ。
- 55 :デフォルトの名無しさん :2001/08/25(土) 21:31
- 共通仕様の鯖しか使えないからダメ。つーか転送量に関係無いし
- 56 :デフォルトの名無しさん :2001/08/25(土) 21:32
- うーん、replace関係がやばそうだな。
doReplace って
*des のうち *str0がみつかったら消す。で、消したところの
始めのポインタを返す
でいいの?
*des ="abcdefg" *str0="cde"
なら
*des = "abfg"
戻り値: des + 2
ってこと?
でもstr1の意味って何?
- 57 :デフォルトの名無しさん :2001/08/25(土) 21:35
- あ、すまん >>56 >>17
かわりににstr1が追加されるのね。
*des ="abcdefg" *str0="cde" *str1="kkkk"
なら
*des = "abkkkkfg"
戻り値: des + 2
なのかな?
- 58 :デフォルトの名無しさん :2001/08/25(土) 21:37
- BadAccess()のuser agent検出ってstrstrの代わりにstrcmpの完全一致じゃ駄目なの?
- 59 :デフォルトの名無しさん :2001/08/25(土) 21:38
- なんせHTTPという超曖昧プロトコルだからねえ
- 60 :デフォルトの名無しさん :2001/08/25(土) 21:38
- 1000超えたら表示がおかしくなる、っていうバグもこの
中にあるのかNA...
- 61 :デフォルトの名無しさん :2001/08/25(土) 21:39
- >>58
strcmpのほうが速いの?
- 62 :デフォルトの名無しさん :2001/08/25(土) 21:39
- マジで書きなおしたくなってくる
- 63 :58>61 :2001/08/25(土) 21:42
- strcmpというか完全一致でいいなら
if(strstr(zz_http_user_agent,"DreamPassport"))return 0;
if(strstr(zz_http_user_agent,"DoCoMo"))return 0;
if(strstr(zz_http_user_agent,"J-PHONE"))return 0;
↓
strstr(zz_http_user_agent, "Dreamcast\nDoComo\nJ-PHONE...") return 0
みたいに書き換えられる。かも
- 64 :デフォルトの名無しさん :2001/08/25(土) 21:43
- >63
UAにはたいていバージョン番号が含まれてるし難しいと思われ
とりあえず仕様を変えないで最適化できる範囲で
- 65 :デフォルトの名無しさん :2001/08/25(土) 21:44
- >63じゃなくて>58
- 66 :デフォルトの名無しさん :2001/08/25(土) 21:44
- hlinkReplace、ExistHlink、ExistHlinkX、cutWordOff、someReplace、doReplaceが
協力してurlにリンクを張っているらしいね。
何度もバッファに書き出していて効率悪い。
全部総とっかえしたほうがよさそう。
- 67 :デフォルトの名無しさん :2001/08/25(土) 21:45
- >>66
その関数の依存関係を簡単でいいからおしえてくれるとたすかる。
- 68 :デフォルトの名無しさん :2001/08/25(土) 21:45
- つーかurlにリンク張る処理は全廃でいいんじゃない?
クライアントに任せろ。
- 69 :68 :2001/08/25(土) 21:47
- もちろん仕様は変わるが、IOは確実に減る。
- 70 :デフォルトの名無しさん :2001/08/25(土) 21:47
- かちゅとかだと勝手にリンク入れてくれるしね。
- 71 :デフォルトの名無しさん :2001/08/25(土) 21:47
- 最新レスの数を減らせば……(^^;
- 72 :デフォルトの名無しさん :2001/08/25(土) 21:48
- >69
I/O減らすだけが目的ならこのスレで話し合ってる最適化自体
ほとんど無意味です
- 73 :69>72 :2001/08/25(土) 21:50
- 処理だってかな〜り高速化されるよ。
2chブラウザとの連携を視野に入れつつ最適化。
- 74 :デフォルトの名無しさん :2001/08/25(土) 21:50
- リンク張りはhttp://探して見つかったら、その手前まで出力してタグを開く
URLの終端まで一文字ごとに出力、URLの終端に来たらタグを閉じて
次のURLを探す。
ってやった方が良いんでない?
- 75 :デフォルトの名無しさん :2001/08/25(土) 21:51
- >73
それならread.cgiは全面的に止めたほうがいいかと
- 76 :66 :2001/08/25(土) 21:52
- hlinkReplaceはリンクリプレースのメイン。
ExistHlinkを呼び出して、対象となるソースの中からurlを抜き出し、同時にリンク済みのタグつきurlを出力してもらい、
それをdoReplaceでhtmlに埋め込んでいる。
ExistHlinkは、http://とftp://とでExistHlinkXを呼び出していて、実際にurlを抜き出しているのはこちら。
ExistHlinkではhttp://があるかどうかを調べて、あるならそこからurlを抜き出し、
そこからcutWordOffで"""を省いて、タグつきurlをsprintfで出力している。
これを直すのはたいへんだな。
- 77 :デフォルトの名無しさん :2001/08/25(土) 21:53
- (いろんな意味でw)自主的に
ttp://〜
ってする板も多いので、いっそ廃止でも……。>http〜
- 78 :67 :2001/08/25(土) 21:54
- >>66 サンクス
- 79 :デフォルトの名無しさん :2001/08/25(土) 21:54
- もっといい方法ありそうだけどね。
int BadAccess()
{
char *agent_accept[] = {
"DreamPassport",
"DoCoMo",
"J-PHONE",
"ASTEL",
"[ja]",
"iCab",
"iBOX",
"WannaBe",
"Macintosh; I;",
"Mozilla/3.0N",
"CBBoard",
"PersonaWare",
"Sharp",
"95",
"NT 4.0",
"WinNT",
};
char *agent_kick[] = {
"WebFetch",
"origin",
"Nozilla",
"WWWD",
};
int i;
if(!*zz_http_user_agent && !*zz_http_language) {
return 1;
}
for (i=0; i<sizeof(agent_accept)/sizeof(char*); i++) {
if (strstr(zz_http_user_agent, agent_accept[i])) {
return 0;
}
}
for (i=0; i<sizeof(agent_kick)/sizeof(char*); i++) {
if (strstr(zz_http_user_agent, agent_kick[i])) {
return 1;
}
}
return 0;
}
- 80 :デフォルトの名無しさん :2001/08/25(土) 21:54
- >75
それだと通常のブラウザから一切見えなくなっちゃうじゃん。
- 81 :ペイント聖矢 :2001/08/25(土) 21:55
- ぷうぷぷぷぷぷぷぷぷプログラマー板がっつつつつつつt!!!!!!??jfだjふぉ@あえああひゃはやはやはやはあはやあはやごふっ
- 82 :sage@sage.com :2001/08/25(土) 21:57
- PGer板停止中?
今、全体のフローらしきものを作ってます。
ところで、dat_readはレス1つ指定でも必ずファイル全部読み出して
処理しているのかな?
- 83 :デフォルトの名無しさん :2001/08/25(土) 21:59
- >>79
すっきりしたね。
でもkickだけあればいいのではないかという気もする。
- 84 :デフォルトの名無しさん :2001/08/25(土) 22:01
- 改良版BadAccess
int BadAccess()
{
char *agent_kick[] = {
"WebFetch",
"origin",
"Nozilla",
"WWWD",
};
int i;
if(!*zz_http_user_agent && !*zz_http_language)
return 1;
for (i=0; i<sizeof(agent_kick)/sizeof(char*); i++) {
if (strstr(zz_http_user_agent, agent_kick[i]))
return 1;
return 0;
}
- 85 :デフォルトの名無しさん :2001/08/25(土) 22:02
- 抜本的に見直す為、クラサバから検討しするスレも要るのかも・・・?
- 86 :79 :2001/08/25(土) 22:04
- >>83
確かにそうでした、accept のチェックは要らないですね。
- 87 :デフォルトの名無しさん :2001/08/25(土) 22:04
- ここが止まった場合は↓に行くことにしとく?
http://www.shitaraba.com/bbs/programtech/index.html
どっかもっと良いとこある?
- 88 :デフォルトの名無しさん :2001/08/25(土) 22:05
- >>85
そういう構想だけは前からある。
「2chのような掲示板システムってP2Pで」
http://piza2.2ch.net/test/read.cgi?bbs=tech&key=990334284
- 89 :デフォルトの名無しさん :2001/08/25(土) 22:10
- >>86
改良版の問題は、ドリキャスがブラウザのシェアを独占したら
かえって重くなるということだな(笑)。
- 90 :sage@sage.com :2001/08/25(土) 22:10
- いまさらって感じはするけど流れを簡単にまとめてみました。
間違いとかあったら訂正してくださひ。
1.zz_GetEnv(HTTP各環境変数の取得)
2.logOut(アクセスログ保存)
3.dat_read(datファイルの読み込み)
ファイルサイズの取得
環境変数から読み出し位置等の解析
メモリの確保
ファイルの読み出し
最大表示可能レス数の解析?(getLineMax)
4.dat_out(HTTPD出力要求(表示))
・forループの中身
(st,ls,to等の表示ログ番号制御処理(zz_nfがよくわからない)
指定ログ番号データ表示(out_html))
最終ライン処理(out_html1)
書き込み用フォーム表示処理(html_foot)
5.メモリ開放
out_html関数辺りが結構重要かも、引き続き細かいところ解析していきます。
- 91 :デフォルトの名無しさん :2001/08/25(土) 22:20
- 2ch閉鎖の危機なんだと
http://cocoa.2ch.net/test/read.cgi?bbs=unix&key=998695422
の 291 も加えてください。
- 92 :デフォルトの名無しさん :2001/08/25(土) 22:22
- out_html と似た名前の関数があってわかりずらいですよね。
out_html1() だって、、、
コメントもコピペなのかあてにならんし
- 93 :デフォルトの名無しさん :2001/08/25(土) 22:34
- zz_GetStringが何をやりたい関数なのかわからん……
- 94 :sage@sage.com :2001/08/25(土) 22:39
- >>93
zz_GetStringはHTTPの環境変数を取得します。
ブラウザから要求をかけたときに付帯するプロトコル情報です。
あと、http://**.com/read.cgi?st=8%ls=5
のようなcgiに変数を引き渡すときに使用されます。
解析続き
各バッファの相関関係
・BigBuffer datファイルから読み出したデータ格納バッファ
・BigLine BigBufferの各レス先頭位置を示すポインタが格納されている配列
getLineMaxでBigBufferを全てスキャンして、
\nならそのポインタ位置を記憶、NULLに置き換える。
最大転送量・\nが見つからない場合(ファイルの最後?)で処理終了
取得したライン(ログ数)を返す
- 95 :仕様無しさん ◆NwLv.g/w :2001/08/25(土) 22:40
- >93 関数を呼んでるところを見て御覧。
- 96 :sage@sage.com :2001/08/25(土) 22:42
- >>94
ごめん read.cgi?st=3%ls=5
の?以下が環境変数となります。
HTTPDのAPIでこの値を取得できます。
ただ、折れの知っている情報って組み込み用HTTPDについてなので
汎用的なサーバのHTTPDだと違うかもしんない・・・。
- 97 :93 :2001/08/25(土) 22:45
- >>94-95
ありがとう。
- 98 :sage@sage.com :2001/08/25(土) 22:47
- 環境変数って表現はちょっと違ってたかもしれませんね。
どちらかっていうとget_envでとってくるのが環境変数ですね。
- 99 :デフォルトの名無しさん :2001/08/25(土) 23:10
- UNIX 板でも同時進行してるんだがmerge しなくていいのか?
- 100 :デフォルトの名無しさん :2001/08/25(土) 23:11
- http://cocoa.2ch.net/test/read.cgi?bbs=unix&key=998695422
でも対策スレが立っています。夜勤さんも来ています。
- 101 :265 :2001/08/25(土) 23:12
- >>7-9
ってことにしたんだけど.. あっちどうなってるんだろう..
- 102 :デフォルトの名無しさん :2001/08/25(土) 23:15
- これってうわさのリファクタリング??
- 103 :デフォルトの名無しさん :2001/08/25(土) 23:16
- >>99
当面問題なのは転送量だからUNIX板の方には
先に走ってもらって転送量削減のめどかついた時点で
圧縮により増えた負荷を下げるようにこちらの結果を
反映していけばよいのではないでしょうか
- 104 :デフォルトの名無しさん :2001/08/25(土) 23:16
- >>102
いいえ、Cプログラミング診断室です。
- 105 :デフォルトの名無しさん :2001/08/25(土) 23:18
- なんか向こうでどんどこ新しいの作っちゃってんだけど
こっちの意見も言っといた方がよくない?
- 106 :265 :2001/08/25(土) 23:20
- >>104
ワラタ
- 107 :デフォルトの名無しさん :2001/08/25(土) 23:20
- main()のdat_read(); dat_out(); は見直したほうが良くない?
全レスbufに溜める方式で良いのか?
- 108 :デフォルトの名無しさん :2001/08/25(土) 23:21
- とりあえず>>84あたりはmergeされてもいいと思うんだけど
- 109 :デフォルトの名無しさん :2001/08/25(土) 23:21
- >>105
とりあえず期日は今月末だから、結果が出るものを
先に作ったほうがよい。というか作り終えたみたいだが
(これからテスト)
- 110 :デフォルトの名無しさん :2001/08/25(土) 23:21
- >>107
そうそう、それ良くないよ。
- 111 :デフォルトの名無しさん :2001/08/25(土) 23:21
- >>103
それがいいと思う。
ただそうする場合、向こうにその方針伝えて置いた方がよさげ。
- 112 :デフォルトの名無しさん :2001/08/25(土) 23:21
- むこうで作ってるのはgzip対応版でしょ?
向こうはデータの入出力に手を入れている。
こっちはデータの解析・加工に手を入れている。
違うところを修正しているのだから問題ないと思うけど。
- 113 :デフォルトの名無しさん :2001/08/25(土) 23:22
- http://5ch.tanuq.net/
5chへ移動
- 114 :デフォルトの名無しさん :2001/08/25(土) 23:22
- むこうは間に合わせの quick hackだから、
こっちはちゃんと書き直すのがよいと思われ。
っていうか、mmapして行数数えたほうがよくねえか?
- 115 :UNIX板より :2001/08/25(土) 23:23
- read.cgi ver5
419 名前:夜勤 ★ 投稿日:2001/08/25(土) 23:20
piza2 に入りました。
私は 転送量と load average を観察中。。。
- 116 :デフォルトの名無しさん :2001/08/25(土) 23:25
- >>112
今必要とされてる課題は転送量の削減だから、
それ以外の改良を同時に施してもわけわからなく
なるか。
あっちがリリースされてからのほうがいいよ
- 117 :デフォルトの名無しさん :2001/08/25(土) 23:26
- とりあえず、サーバへの負荷よりも、トラフィックが問題らしい。
- 118 :デフォルトの名無しさん :2001/08/25(土) 23:27
- いま read4.c と read5.c compare したけど
gzip関連以外は特に変えてないみたいだよ
- 119 :デフォルトの名無しさん :2001/08/25(土) 23:27
- レス1件ごとに処理する方式にしない?
とゆーかそれなら、練習の為に書いたコードが手元にある。
- 120 :デフォルトの名無しさん :2001/08/25(土) 23:31
- ここは緊急的なスクリプトの改変をするスレじゃない。
とりあえずはgzipの部分と直行性のありそうな、htmlの生成の部分を
最適化しときましょうってスレ。
- 121 : :2001/08/25(土) 23:33
- なんかunixスレが荒されてる
- 122 :265 :2001/08/25(土) 23:35
- >>119
アップきぼんぬ。
http://server2047.virtualave.net/gorogorogoro/2chresque/
か
ftp://210.170.209.10/incoming
↑UNIX板で提供されたんだけどたぶん大丈夫でしょう
- 123 :デフォルトの名無しさん :2001/08/25(土) 23:42
- read.cgi 5.00 gzip対応版がとりあえずは動作している模様
読み込みの早さから、圧縮は成功している・・と思われる
2ch閉鎖の危機なんだと
http://cocoa.2ch.net/test/read.cgi?bbs=unix&key=998695422
- 124 :デフォルトの名無しさん :2001/08/25(土) 23:43
- ここの鯖、圧縮対応したの?妙に早い気がするんだが
- 125 :sage@sage.com :2001/08/25(土) 23:43
- やっぱりout_htmlとその周りの関数の最適化が一番よいのかな。
あとバッファに全部読み込まず適時fseekして読み出す場合、
fseekのオーバーヘッドはどうなのかな?
- 126 :デフォルトの名無しさん :2001/08/25(土) 23:44
- 左下の表示 readcgi が ver5 になってる。
うまくいったのか?
圧縮に対応してないクライアントだとどうなるんだ?
- 127 :デフォルトの名無しさん :2001/08/25(土) 23:45
- >>126
BadAccessではじかれるんじゃない?
- 128 :UNIX板より :2001/08/25(土) 23:45
- >>126
切り捨て
- 129 :デフォルトの名無しさん :2001/08/25(土) 23:45
- ダウンロードになるんじゃない?
- 130 :デフォルトの名無しさん :2001/08/25(土) 23:46
- あら、切り捨てか
- 131 :デフォルトの名無しさん :2001/08/25(土) 23:47
- やったみたい ↓のバージョン参照
- 132 :デフォルトの名無しさん :2001/08/25(土) 23:50
- プログラム板住人じゃないけど
Win2kSP2+NN3.03Gold[ja]で問題なく表示されるよ
HTTP1.1でmod_gzip が対応らしい、HTTP1.1に対応していない
クライアントの場合は圧縮せずに転送する模様
- 133 :デフォルトの名無しさん :2001/08/25(土) 23:52
- >>132
ありがと
- 134 :デフォルトの名無しさん :2001/08/25(土) 23:54
- >>126 単に生でだらだら出されるだけだよ
wwwoffleで確認
- 135 : :2001/08/25(土) 23:54
- 微妙に軽い気がする
- 136 :しんがり :2001/08/25(土) 23:57
- i-mode(D503i)でモナー板の表示確認しました。
手動でls=5にしましたが(^_^;)
http://piza2.2ch.net/test/read.cgi?bbs=mona&key=998714496&ls=5&imode=true
- 137 :デフォルトの名無しさん :2001/08/25(土) 23:57
- はえー。凄いな皆。
- 138 :79 :2001/08/26(日) 00:07
- /*
doReplace
文字列 des の中で最初に現れた str0 を str1 に書き換える。
des が十分大きく無いと、どうなるかはわからない。
例えば des が [A][str0][B] であれば str0 を str1 に置き換え [A][str1][B] になる。
このとき戻り値は B のポインタになる(B に対して doReplace を行うため)
*/
char * doReplace( char * des, char * str0, char * str1 )
{
char *p;
char t[SIZE_BUF];
int str0_length;
int str1_length;
/* 置き換えるべき文字列の位置を取得 */
p = strstr(des, str0);
if (p == NULL) {
return NULL;
}
str0_length = strlen(str0);
str1_length = strlen(str1);
/* 部分文字列以後の文字列を一時保存 */
strcpy(t, p + str0_length);
/* des に書き戻す */
strcat(p, str1);
strcat(p + str1_length, c);
/* 部分文字列以後の文字列の位置を返す */
return p + str1_length;
}
doReplace の無駄を少し無くしました。
一応テストしましたが、もしかしたらバグがあるかも知れないです。
- 139 :デフォルトの名無しさん :2001/08/26(日) 00:08
- [2ちゃんねる閉鎖騒動関連リンク集]
http://members.home.ne.jp/f-line/2ch.htm
主な経緯は批判要望板を参照のこと。
現在、piza2鯖にread.cgi 5.00 gzip対応版が入った模様。
とりあえず動作していて、読み込みの早さからみると、
圧縮は成功している・・と思われる。
これが、8月危機の救世主になるか?
…実況に懲りないモー板がやり玉に挙がらないことを願う…。
- 140 :VBPG :2001/08/26(日) 00:09
- よし!俺も手伝うぞ!
- 141 :w3m :2001/08/26(日) 00:12
- test
deb2.2
- 142 :デフォルトの名無しさん :2001/08/26(日) 00:13
- どうだろう。
- 143 :デフォルトの名無しさん :2001/08/26(日) 00:16
-
- 144 :del厨(新規) :2001/08/26(日) 00:18
- 僕に出来る事があったら言ってください!
- 145 :デフォルトの名無しさん :2001/08/26(日) 00:20
- >>138
someReplace込みで高速化したほうが良いかも
- 146 :デフォルトの名無しさん :2001/08/26(日) 00:21
- とりあえずgzip改造はほぼ上手くいった模様。
Last-Modified問題はどっちのスレで片付けるのかな?
- 147 :デフォルトの名無しさん :2001/08/26(日) 00:23
- その前に、 gzip -> zlib 改造が必要?
- 148 :sage@sage.com :2001/08/26(日) 00:28
- dat_readのgetLineMax周りに手を加えてみました。
if(!BigBuffer)
{
html_error("メモリの確保に失敗しました。");
lineMax = -8;
}
fp = fopen(fname,"r");
if(!fp)
{
html_error("そんな板orスレッドないです。");
return0;
}
fread(BigBuffer,zz_fileSize,1,fp);
fclose(fp);
BigBuffer[zz_fileSize] = '\0';
for(i=0;i<zz_fileSize;i++)
{
if(BigBuffer[i] == '\0')BigBuffer[i] = '*';
if(BigBuffer[i] == '\n')
{
BigLine[i] = (char *)&BigBuffer[i];
BigBuffer[i] = '\0';
if(lineMax <= RES_RED)
lineMax++;
}
}
return 0;
これでgetMaxLine関数を使用する必要がなくなるかと思います。
- 149 :デフォルトの名無しさん :2001/08/26(日) 00:29
- 最新のread.cgiのソースクレクレ
- 150 :デフォルトの名無しさん :2001/08/26(日) 00:32
- UNIX板繋がらないんですけど??
サーバ大丈夫かおい
231KB
新着レスの表示
スレッドリストへ戻る 全部 前100 次100 最新50
0ch BBS 2004-10-30