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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

標準関数侮れず

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

int BufferLen = strlen(BigBuffer);
if (BufferLen != zz_fileSize) {
 if (BigBuffer[BufferLen] == '\0') BigBuffer[i] = '*';
}

558 :デフォルトの名無しさん :01/08/26 16:50
int pos;
char *p = BigBuffer;
int rest = zz_fileSize;
while ((pos = strnlen(p, rest)) != rest)
{
p[pos] = '*';
p += pos + 1;
rest -= pos + 1;
}

559 :554 :01/08/26 16:51
>>558
それなら複数'\0'があったときもコストが高くならなくていいね。

560 :デフォルトの名無しさん :01/08/26 16:51
strnlenも早いの?

561 :デフォルトの名無しさん :01/08/26 16:52
>>552
少なくともLinuxのglibcの環境においては-O2つけたとしてもライブラリ使ったほうが速いようだ

562 :デフォルトの名無しさん :01/08/26 16:53
http://piza2.2ch.net/jisaku/dat/980503747.dat
↑の2001/05/09(水) 12:41のすぐ上のレスみたいなのでも行ける?

563 :デフォルトの名無しさん :01/08/26 16:54
みんなで力を合わせれ!

gzip 圧縮や Last-Modified 対応など
転送量軽減に関する話題は↓こちらでお願いします。
2ch閉鎖の危機なんだと @UNIX板
Part2.1
http://cocoa.2ch.net/test/read.cgi?bbs=unix&key=998754174
Part3.1
http://cocoa.2ch.net/test/read.cgi?bbs=unix&key=998764722
↑作業がほぼまとまったためプログラム板の
プログラマが2chを救う!?に移動したようです。

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

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

新CGIが導入された板の動作報告は↓こちらにどうぞ。
2chの動作報告はここで。 @批判要望板
http://teri.2ch.net/test/read.cgi?bbs=accuse&key=998808733

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


なおUNIX板では
・板の統廃合についてのスレ
・浩之氏の公式発言についてのスレ
・それぞれの板の問題点をあげるスレ
などが立っています。


他の板の住人へ

ここのURLを張らないで応援板のURLを張ってください。

564 :デフォルトの名無しさん :01/08/26 16:56
>'\0' を'*'に変換する処理
これって、いかにも付け焼刃的に「バグを見つけたのであとから付けました」って
感じがするんだよね。
というのは、直後で行数を数えるために全体をスキャンしているのに
同時に行っていないから。

全体をスキャンするのは1回にして、
ただし、全てを同時に行う。
やることは、
・行区切りの検索と位置保存
・'\0'の'*'への変換
・&amp -> & への 変換 … ただし、&amp; は変換しない
(・@+`の変換 … そのレスは前に詰めなければいけない)
(・&quot; ??)

つーかさ、Splitした結果をBigLineに持たせるべき。
struct lines {
  char *name;
  char *mail;
  char *date;
  char *text;
};

それと、機能追加?になるけどあった方が良いと思うのがさ、
オプションでのtext内部にある<br>以外のタグの削除ね。
要は>>nnがえらく転送量をふやしちゃうんだから、
<a href=...> と </a>のタグを無条件に削除するオプションがあってもいい。
ただ、BigBuffer内部で前詰めになるから、面倒くさいし、
各レスの先頭にタグが入っている場合が多いから、
実質memmoveの繰り返しになっちゃいそう。

それなるくらいなら、BigBufferの他にもう一つバッファを作って、
コピーしながら置換したほうがいいかもしれないけどね。
これなら、mmapとも併用できるでしょ。

565 :がいしゅつ? :01/08/26 16:59
一つ分かったことは、
「ひろゆきがプログラマとしてタコである」
ということだ。

566 :  :01/08/26 17:00
>>565
ここまでの負荷を想定してはじめから作っていたのならそうかもな。
でもソレはありえないだろ。

567 :デフォルトの名無しさん :01/08/26 17:02
>>564
>オプションでのtext内部にある<br>以外のタグの削除ね。
コストが高いと思うなあ。それはbbbs.cgiでやった方が良いのでは?

568 :デフォルトの名無しさん :01/08/26 17:03
今までスクリプトって博之がつくってたの?

569 :デフォルトの名無しさん :01/08/26 17:05
今のスクリプトはひろゆきじゃないはず。C言語出来ないって言ってた。

570 :名無し ◆NtVkSITE :01/08/26 17:05
>>568
トオルさんや削除忍さんのようですが。

571 :G :01/08/26 17:05
**********************************

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

*********************************

572 :名無し :01/08/26 17:07
暫定版をリリースして、
デザインを含めて1からプログラムを
作り直したほうがよいと思う。

新しいプロジェクトを立ち上げましょうよ。

573 :G  :01/08/26 17:08
ちなみに571をカキコしようとして、書き込むボタンを押したら
一面文字化けのページが帰ってきたぞ。
read.cgi ver5.02には、チューニング以前のバグもまだあるのか?

574 :デフォルトの名無しさん :01/08/26 17:09
ひろゆきって専攻何?
大学4年の夏に米国に心理学の留学行っている。
プログラマーじゃないのかな?

575 :G  :01/08/26 17:09
ていうか
http://piza2.2ch.net/tech/index2.htm
をまともに読めるヤツいる?

576 :デフォルトの名無しさん :01/08/26 17:10
>>575
読めてるよ。

577 :デフォルトの名無しさん :01/08/26 17:11
>>575
IEでhttp/1.1チェック入れてないとか?

578 :G  :01/08/26 17:12
分かった。
カキコすると自動的に飛んでいく
http://piza2.2ch.net/tech/index2.htm
は今明らかにバグってて、
正しいのは
http://piza2.2ch.net/tech/index2.html
だよ。これはすぐ直せるだろうけど、
どうすりゃいいんだよ。

579 :名無し娘。 ◆vP.bOZFQ :01/08/26 17:13
Unix板の方で、最新版が
http://star.endless.ne.jp/users/forcount/contents/scriptmaker/read11.c
から
http://star.endless.ne.jp/users/forcount/contents/scriptmaker/read11.rev1.c
に更新されました。
変更点は、613行目
- if(pid=fork() == 0){
+ if((pid=fork()) == 0){

580 :デフォルトの名無しさん :01/08/26 17:13
>>572
それをやるなら、datのフォーマットから見直したいな。
ls=10でもdatを全部読み込むってのは、ちょっとなあ。

581 :デフォルトの名無しさん :01/08/26 17:15
1にも書いてあるが、今のところ道は3つだと思ってる。

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

現状動いているのは2だけだけど、1に手を付けるのもいいかもしれない。
3はまだ未知数。

582 :デフォルトの名無しさん :01/08/26 17:16
datフォーマットを見直さなくても
レスの位置を記録したインデックス作るだけで
かなり効果無い?

583 :デフォルトの名無しさん :01/08/26 17:17
>580
だよねぇ。
ファイルにインデックスでもつけたほうがいいよね。
既存のデータをどうするかが問題だけど。

584 :デフォルトの名無しさん :01/08/26 17:19
インデックスは付けたいね。
でもそれをやるとすると、bbs.cgiの方に手を入れなくてはならない。
bbs.cgiのソースは公開されてた?

585 :デフォルトの名無しさん :01/08/26 17:20
>>578
バグではありません、仕様です(w
負荷低減のため、htm側はzip圧縮ページなのな。
mod_gzip入るまで待ちんしゃい。

586 :デフォルトの名無しさん :01/08/26 17:20
>>584
されてない。read.cgiのみ。

587 :デフォルトの名無しさん :01/08/26 17:22
そういうの突き詰めていくとバックエンドのデータはRDBで管理して、クライアント処理は
Servletで、とかなってくんだけどサーバ側の事情でアーキテクチャを大きく変えるのは難しそう。

俺的には read.cgi の mod_2ch (Apache module) 化のが一つのゴールかなあ、って思うが。

588 :デフォルトの名無しちん :01/08/26 17:23
>>585
mod_gzipになるまでまだ1週間以上あるみたいだから
とりあえず今は「.html」に飛ぶようにしておいた方がいいんじゃないの?

589 :デフォルトの名無しさん :01/08/26 17:25
すこし前に11REV1を落とされた方
修正ミスでした
今は修正完了です
アドレスは同じです

590 :564 :01/08/26 17:26
よーく考えたら、Splitや置換って全体に対しては必要なかったね。
実際のls=??等のリクエストがどんな割合で来てるのかわからんけど。

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

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

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

なんか俺も良くわかってないから、素直に推移を見守りますわ。

591 :デフォルトの名無しさん :01/08/26 17:27
インデックス付けると、bbs.cgi以外にも、あぼ〜ん処理とかも
全部対応させなくちゃならない。それこそ大作業になるよ。

592 :デフォルトの名無しさん :01/08/26 17:28
>>587
mod_gzip付けるだけでも汎用のサーバーがどうのもめていたらしいからmod_2chというのも厳しいのではないかな?
現状のデザインに不満を漏らしつつも何とか地道な改善を施すのはPGの宿命だよ。

593 :563 :01/08/26 17:33
あ、間違ってた・・・
プログラマが2chを救う!? @プログラム板
の2号は
スキルの高い方知恵を貸してください @web制作管理板
の方の2号だ。

594 :デフォルトの名無しさん :01/08/26 17:55
だからさーーーーー、早く実際の作業始めよーよー。

595 :名無し娘。 ◆vP.bOZFQ :01/08/26 17:55
お邪魔かもしれませんが、ちとまとめてみます。(作業中)

596 :デフォルトの名無しさん :01/08/26 17:55
/*行区切りの検索、'\0'の変換、&->&の変換を一度にやるソース案*/

char* pin = BigBuffer;
char* linepin = BigBuffer;
int line = 0;

while(pin < &BigBuffer[zz_fileSize]){
  switch(*pin){
    case '\n':
      BigLine[line] = linepin;
      *pin = '\0';
      pin++;
      linepin = pin;
      line++;
      if(line > RES_RED){
        goto wend;
      }
      break;

    case '\0':
      *pin = '*';
      pin++;
      break;

    case '&':
      if(strncmp(pin, "&", 5) == 0){
        pin += 5;
      }else if(strncmp(pin, "&", 4) == 0){
        /*・・・・(^^;*/
        pin += 4;
      }
      break;

    default:
      pin++;
      break;
  }

}

wend:
/*続き*/;

597 :デフォルトの名無しさん :01/08/26 17:57
JavaやDelphiのような優れた言語を使わず、
Cなんていう時代遅れの処理系を使っているのはなぜなんでしょう。
それとも、ドキュンしかいないのでしょうか。

598 :名無し娘。 ◆vP.bOZFQ :01/08/26 18:00
(あ、お話はどんどん続けておいてください)

599 :sage :01/08/26 18:01
速いからじゃないの?

600 :デフォルトの名無しさん :01/08/26 18:01
>>597
おまえいつからプログラムはじめた?

601 :デフォルトの名無しさん :01/08/26 18:01
Delphiて・・・2ちゃんってNTサーバーだっけ?

602 :デフォルトの名無しさん :01/08/26 18:02
あおりはほーちちまちょー

603 :デフォルトの名無しさん :01/08/26 18:02
>>597
はいはい中学生は学校の宿題でもしてて

604 :デフォルトの名無しさん :01/08/26 18:03
597 はいつもの厨房なので無視という方向で。

605 :デフォルトの名無しさん :01/08/26 18:05
ところでこれまでに出た改良案をすべて
取り込んだものはどれくらい早くなるの?
誰か試して。

#俺もやりたいけど今手元にwinしかない、、。

606 :デフォルトの名無しさん :01/08/26 18:07
>605
ダッシュでCygwin落とせ。apacheも動くぞ。
http://sources.redhat.com/cygwin/

607 :デフォルトの名無しさん :01/08/26 18:10
>>597
実際軽く動くのはどっち?

608 :デフォルトの名無しさん :01/08/26 18:11
bbs.cgiのソースは何故公開されない?

609 :デフォルトの名無しさん :01/08/26 18:13
>608
実はばっちりログを保存していて、
それがばれるのがいやだから。

だったりして。

610 :デフォルトの名無しさん :01/08/26 18:14
>>608
ソース見ていたずらを思いつく人が出てくるからでは?

611 :デフォルトの名無しさん :01/08/26 18:21
>>607
言語の種類だけで決まる話では無い

612 :デフォルトの名無しさん :01/08/26 18:21
本気で2chのシステムを最適化したいんなら
bbs.cgiとか、他のモジュールも公開するべきだな。
さらに俺を2週間ほど雇えば負荷総合的な負荷は5%程度まで縮小するかもな。
まあ人月300くらいはもらうけど。

613 :デフォルトの名無しさん :01/08/26 18:22
安直にパスが全てべた書きされてるのではないか?
いろいろな管理用コマンドとかもいっしょに。

614 :名無しさん :01/08/26 18:23
一晩で軽くなるなら、いままで何やってたんだ?

615 : :01/08/26 18:24
>>612 現状を把握せずに、成果を約束できるのか?(w

616 :デフォルトの名無しさん :01/08/26 18:26 ID:14u64k9s
短期的には、既存のスクリプトの改良/高速化の方向ですが、
結局は最初の議論に戻って、2ch全体のシステム設計から
やり直さないといけないと思います。

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

read.cgiだけではなく、データフォーマットから全てやり直さないと
駄目でしょう。。。オープンソースで常に改良していった方が。

617 :デフォルトの名無しさん :01/08/26 18:26 ID:Y5ufE4Do
>>615
「こんな外注先は害虫」の見本だよなぁ…

618 :名無し :01/08/26 18:28 ID:cNxfOPbY
read.cgi 更新してみてよ。
サーバー管理者いないんですか?

619 :デフォルトの名無しさん :01/08/26 18:28 ID:K3x70GYg
>>614
あの…一晩48時間なんだけど・・・

620 :デフォルトの名無しさん :01/08/26 18:29 ID:goYJpq5c
>478-479 修正案
char *zz_GetString2(char *dst,char tgt)
{
int i, len;
int ch = (int)'&'; int ch2 = (int)'=';
char *kk = zz_query_string;
char *kk0, *kk1;
for(i=0;i<200;i++)
{
if(kk[0] == tgt)
{
kk0 = strchr(kk,ch); /* & */
if(!kk0) kk0 = strchr(kk,(int)'\0');
kk1 = strchr(kk,ch2); /* = */
len = kk0 - kk1 - 1;
if(len > 0)
{
if(kk0) *kk0 = '\0';
strncpy(dst,kk1+1,20);
dst[20-1] = '\0';
if(kk0) *kk0 = '&';
return dst;
}
}
kk = strchr(kk,ch);
if(!kk) break;
kk++;
}
}
機能は >94 参照。zz_GetEnv から、
zz_GetString2(zz_bs ,'b');
などのように呼んでください。

該当部分(
bbs=unix&key=998764722&st=23&to=34&nofirst=true&imode=true
のような文字列を zz_query_string としての、連続7回の呼び出し)
の100万回の処理時間は、手元の環境で
修正前 51.3s → 修正後 6.1s 。

>497-498 によれば処理時間への影響は小さいけれど、
リンク部分の文字列を短くできます。

621 :デフォルトの名無しさん :01/08/26 18:29 ID:K3x70GYg
>>618
しばらくは各自localhostでテスト運用だな。

622 : :01/08/26 18:29 ID:C1Z3lpu.
>>616
http://www.gedoh.org/aki/2ch/wiki/yukiwiki.cgi?TopPage
そこ、CGIのリンクで保存しにくい。
普通にリンク貼れって漢字?

623 :名無しさん :01/08/26 18:29 ID:rVzqRC42
ん?アイデー?

624 :名無し娘。 ◆vP.bOZFQ :01/08/26 18:32 ID:7Eg.mvRo
あの、抜本的見直しもいいとは思いますが。。。
抜本的なのと、そうでないのはわけた方がいいと思います。
とりあえずは、既存の関数の機能は変えない範囲で、最適化を
行うべきかと。
#抜本的見直しを運営が望んでいるかもよくわからないですし。

625 :デフォルトの名無しさん :01/08/26 18:33 ID:goYJpq5c
>608-615
サーバごとなどに異なる規制部分は非公開としても、
全体に共通の部分は公開された状態で、気づいた人が
欠点を指摘していった方が安全性は高くなるかと。
(その意味で、 read.cgi と違いすぐ入れて様子を見るのは危険)

管理側にも検討して欲しい。

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

>39 名前:夜勤 ★ 投稿日:2001/08/25(土) 19:34
>Apache に手を加える(パラメータ)を変更する というのはできないです。
>なぜなら、このサーバと同じサーバという売りでレンタルサーバ業を
>営んでいるもので、汎用的なサーバじゃなきゃだめなんです、すんません。

627 :デフォルトの名無しさん :01/08/26 18:38 ID:aVwVHBUM
この板にも強制IDが出てるな・・・何故か。
微々たるもんだが、ID:???の場合に出力を止めれば、
数百バイト程度は得するぞ。
・・・Non-Accept-Encoding: gzip なら。

628 :デフォルトの名無しさん :01/08/26 18:39 ID:mpESCVMc
>>624
書き直しはほとんど行われず、
P2Pは来週末にも終らず忘れ去られ、
とりあえず当面を乗り切っただけで
次の危機の時にまた盛りあがるが、果たせずに一票。

629 :デフォルトの名無しさん :01/08/26 18:40 ID:ph4Tm7AM
>627
全板強制IDっぽい。人減らし作戦の一環でしょう。

630 :デフォルトの名無しさん :01/08/26 18:45 ID:A3jnb8oE
全板だね。「材料物性板」とかまでID表示になってる。(w

631 :名無し :01/08/26 18:51 ID:cNxfOPbY
負荷が増える前に、プログラムを更新した方が
いいと思われます。

632 :デフォルトの名無しさん :01/08/26 18:52 ID:cvrtcctM
モー娘メンバー発表まであと2時間。

633 :名無し娘。 ◆vP.bOZFQ :01/08/26 18:55 ID:7Eg.mvRo
>>632
ああ、それまでにまとめ作業終えたい(笑
現在 1/3 ほど終了

634 :デフォルトの名無しさん :01/08/26 18:57 ID:56vmLS/g
人を減らしたいのなら、書き込みだけじゃなくてread.cgi起動する度に
ログを取ってる事も周知させれば?

635 :デフォルトの名無しさん :01/08/26 19:01 ID:IO6XhCZY
>>634
いまだに2chは匿名性だから来たのにとか
ニュー速の厨坊がほざいてるからねw

636 :デフォルトの名無しさん :01/08/26 19:04 ID:PGbsVVuc
でも int logOut(char *txt) は削るべきでは?
匿名とかそういうのじゃなくて負荷の問題で。
ログはApacheのログが別にあるからいいでしょ。

637 :デフォルトの名無しさん :01/08/26 19:08 ID:PbVG8tb2
>人を減らしたいのなら、書き込みだけじゃなくてread.cgi起動する度に
>ログを取ってる事も周知させれば?

あんたソース読んでないでしょ?
read.cgi内でやってるのは不正なUserAgentの記録
だいたいApacheがアクセスログ取ってるだろが

638 :636 :01/08/26 19:12 ID:bQ7eOgW2
あぁ、Apache側 でUAまで記録してるとは限らないのか。
個人的にいつもCombineなログを取っているので早とちり。

#っていうか私のIDかっこ悪い。 PGだってさ。

639 :636 = 638 :01/08/26 19:13 ID:bQ7eOgW2
ID変わった。なぜ?

640 :デフォルトの名無しさん :01/08/26 19:14 ID:UBBPE9x.
実はID出てること自体がバグとか

641 :デフォルトの名無しさん :01/08/26 19:17 ID:tdpKykIg
hour もID算出に使ってるんだろうね。

642 :デフォルトの名無しさん :01/08/26 19:18 ID:HihBi4VA
IDは、投稿日の文字列も元にしてるからね。
で、20や曜日を削ったから、おなじみのエンバ(以下略

643 :デフォルトの名無しさん :01/08/26 19:18 ID:nq7nF8XA
minの一桁目とIPアドレス?

644 :643 :01/08/26 19:19 ID:nq7nF8XA
test

645 :デフォルトの名無しさん :01/08/26 19:19 ID:HihBi4VA
リンクの出力を減らすのは賛成だけど、
一番食ってるのはスレへのリンクではなく、
>>999のリンクだからねぇ。
ご丁寧にst=nn&to=nn&nofirst=trueまで付いてるから。
nofirst=true や imode=true を nofirst=1 や n=1 等に対応して、
なおかつ最も重要なのは、bbs.cgiがdatに書きこむ内容を変更しないと。

646 :643 :01/08/26 19:20 ID:nq7nF8XA
再test

647 :名無し :01/08/26 19:20 ID:GLhprhn.
ID変わるバグか。IDの意味無し?

648 :デフォルトの名無しさん :01/08/26 19:21 ID:tdpKykIg
>645
st -> s
to -> t
nofirst -> nf
でいいんじゃない?それに =true 付けるのも無駄。

649 :636 :01/08/26 19:21 ID:bQ7eOgW2
IDは従来はdateとIPアドレスの一部から算出していたはず。
もし新たにhourも加わったとしても 636 と 638 で変わったのは説明できないような...

650 :名無し :01/08/26 19:21 ID:GLhprhn.
ID変わらないから大丈夫だ。

651 :デフォルトの名無しさん :01/08/26 19:23 ID:NGu5IyHk
ID変わるかな(1

652 :デフォルトの名無しさん :01/08/26 19:23 ID:NGu5IyHk
IDが変わるかな(2

653 :643 :01/08/26 19:25 ID:Y.ZOSOn2
ID→IP
http://www35.tok2.com/home/testsan/search.cgi

654 :デフォルトの名無しさん :01/08/26 19:26 ID:tdpKykIg
19時何分かに salt が変わった?
http://teri.2ch.net/test/read.cgi?bbs=accuse&key=998818852&st=132&to=132

655 :636 :01/08/26 19:27 ID:bQ7eOgW2
一週間ぐらい前に作ったID逆変換スクリプトで試したら今のIDは正しく逆変換
出来るけど>>636のは結果が出なかった。何か間違ってあわてて直したのかな?

656 :名無し娘。 ◆vP.bOZFQ :01/08/26 19:28 ID:E1hp.8JQ
ふぅ、おわりました。このスレッドにあがった点は網羅したつもりです。
ここに貼っていくつもりです。
手を付けやすい所から1つ1つmergeしていくことになるでしょうか。

657 :名無し娘。 ◆vP.bOZFQ :01/08/26 19:29 ID:E1hp.8JQ
(参照情報)

▲現在の最新版
 http://star.endless.ne.jp/users/forcount/contents/scriptmaker/read11.rev1.c

▲read.cgiの概観
 >>90 >>94 >>96

▲ハイパーリンク設定関連
 >>76

▲read.cgiをプロファイラ(gprof)に掛けてみた結果
 >>497 >>498

658 :デフォルトの名無しさん :01/08/26 19:29 ID:i045ysP2
>>656
お疲れさまです。

659 :名無し娘。 ◆vP.bOZFQ :01/08/26 19:29 ID:E1hp.8JQ
(自作された関数に関する情報、アルファベット順)

●char *doReplace(char *des,char *str0,char *str1)
 引き値:
 返戻値:*des のうち *str0 末尾の次のポインタ
 機能:返戻値&*des のうち *str0 がみつかったら *str1 に置き換え
 ※案 >>138 >>168 >>271 >>272

●char *findSplitter(char *stt,int sp)
 ※案 >>505 >>507 >>513 >>514 >>518 >>519 >>520

●char *zz_GetString(char *dst,char *tgt)
 ※案 >>620 >>645 >>648

●int BadAccess()
 引き値:なし
 返戻値:USER_AGENT が正当であれば1、不正であれば0
 呼関数:int logOut(char *txt)
 ※char *zz_http_user_agent の判別順の最適化
 ※案 >>79 >>84

●int hrefStop(char x)
 ※テーブル化
 ※案 >>27 >>30 >>35 >>49

●int html_banner()
 引き値:なし
 返戻値:なし(returnせず)
 機能:バナー部分を標準出力に
 呼関数:int html_error999(char *mes)
     int html_foot_im(void),int html_foot(int line) 内でコメントアウト
 ※#ifdef CM_BBSPINK によって2種類存在

●int html_bannerNew()
 引き値:なし
 返戻値:なし(returnせず)
 機能:バナー部分を標準出力に
 呼関数:int html_error(char *mes)
 ※案 >>45 >>48

●int logOut(char *txt)
 引き値:用途不明
 返戻値:ファイルエラーで0、それ以外1
 呼関数:int BadAccess()

660 :デフォルトの名無しさん :01/08/26 19:29 ID:UBBPE9x.
Wikiの内容はmergeしてるんかな?

661 :名無し娘。 ◆vP.bOZFQ :01/08/26 19:30 ID:E1hp.8JQ
(その他、全体に関する技術的情報)

◆dat_read(); dat_out();
 全レスbufに溜める方式で良いのか?
 ※案 >>148 >>167 >>275 >>520 >>530

◆fread(); BigBufferの取り扱い
 mmap() に置き換え(\0 を * に置き換えていることを踏まえつつ)
 ※案 >>205 >>227 >>232 >>247 >>521 >>542 >>544 >>546 >>549 >>552 >>558 >>564 >>590 >>596

◆printf()
 呼び出し回数削減
 puts()で可能なところは代用
 "\n"を削除

◆strstr()
 自作関数で代用
 案 >>328

◆Makefile
 >>426

◆&(amp)問題
 >>596

◆時刻の解析
 >>473 >>477 >>482 >>489 >>515 >>517

◆グローバル変数をできるだけローカル変数にする

◆その他、HTMLとかJavaScriptとか(このスレでは議論しないでください)
 >>437

662 :名無し娘。 ◆vP.bOZFQ :01/08/26 19:32 ID:E1hp.8JQ
>>660
Wikiをmergeしたものもあるのですが、あちらは、こちらで話がそこそこ
かたまったものを載せているようですから、ここには含めませんでした。

今後、関数毎に作業を進めるようでしたら、関数毎の引き値などの一覧も
作りますが、どうしましょうか。

663 :名無し :01/08/26 19:46 ID:GLhprhn.
モーニング娘の負荷危機まで1時間ちょっと

664 :デフォルトの名無しさん :01/08/26 19:49 ID:1UQ.S61Y
Wikiで draft なページ作ったら?

665 :616 :01/08/26 19:56 ID:.7OZ9ZNw
名無し娘。さんお疲れ様です。分かりやすくなりました(^^

>>624

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

ver5.02って?

666 :♯6411 :01/08/26 19:57 ID:vqaeONJ.
>>496 >>499
bzip2のアルゴリズムは、圧縮・伸張とも
ストリーミングに向いてないのだ。
そもそも高速化しにくいし。

667 :♯6411 :01/08/26 19:58 ID:vqaeONJ.
>>560 >>561 っていうかgccだったら
__builtin_strlen()と同義じゃないかしら?
(未確認)

668 :デフォルトの名無しさん :01/08/26 19:58 ID:EDp.9ERA
モー板関連にも早く新しいread.cgiを導入しないと
意味が無いんじゃないかと思うのですが、
運営側の人何しているのでしょう・・・・

669 :デフォルトの名無しさん :01/08/26 20:00 ID:MV3zKzJ.
>>662
>Wikiをmergeしたものもあるのですが、あちらは、こちらで話がそこそこ
>かたまったものを載せているようですから、ここには含めませんでした。
結果を載せるだけじゃなくって
議論の場としては2chスレよりwikiのがやりやすいんじゃない。

[[read.cgiを高速化2]]はプログラム板で占拠して
ある程度自由に使ってしまっていいと思う。

670 : ◆T/5GEU6k :01/08/26 20:01 ID:T8m3jVH2
トリップ廃止?

671 : ◆T/5GEU6k :01/08/26 20:02 ID:T8m3jVH2
>>666-667
#全角かぁ。スマソ

672 :名無し娘。 ◆vP.bOZFQ :01/08/26 20:05 ID:E1hp.8JQ
>>669
議論をどちらでやるのか、私にはよくわからなかったので、
経緯をまとめるだけにしちゃいました(^^;

堅実なところはさっさと実装していって、議論の的を絞るのもいいかな
と思います。indentだけでもやって、どこかにUPしましょうか。。。
# これやっとけ、ってのがあればやっときます(笑

673 :デフォルトの名無しさん :01/08/26 20:19 ID:lmB6Nfnc
>>659
>●int BadAccess()
>返戻値:USER_AGENT が正当であれば1、不正であれば0

返戻値が逆っぽいです。

674 :名無し :01/08/26 20:26 ID:GLhprhn.
読み込み途中で止まったようになる。
その後読み込みまた止まったようになる。
最期にまた読みこむ。

なんでだろう?

675 :デフォルトの名無しさん :01/08/26 20:48 ID:UUVa.jxU
書き込みが終わりましたって表示はいるの?

676 :デフォルトの名無しさん :01/08/26 20:48 ID:xL7OsRZc
http://bbs_cgi.tripod.com/
globalを通してみました。全行にアンカー振ってあります。
また、-krでindent通したものもおいてあります。

677 :676 :01/08/26 20:55 ID:xL7OsRZc
今気づいた。
read.cgiを弄っているのに、アカウント名がbbs_cgiだ(汗

678 :名無し娘。 ◆vP.bOZFQ :01/08/26 20:59 ID:E1hp.8JQ
>>673
そうですね(^^;
>>676
お疲れさまです。

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

2時間ほど新メンバー見てきます(爆死

679 :デフォルトの名無しさん :01/08/26 21:06 ID:PbVG8tb2
>>674
gzip圧縮してるからでしょ

680 :デフォルトの名無しさん :01/08/26 21:07 ID:8728MBZU
書き込み時に、それがTOPPAGEに変更が入る場合は、TOPPAGEを
生成して保存。
TOPPAGEの読み込みはread.cgiでなく、静的なページを送り返す
ようにしたらどうだろう。

681 :デフォルトの名無しさん :01/08/26 21:09 ID:t/kABhdw
最新レス100 → 最新レス100

3バイト節約(ワラ

682 :デフォルトの名無しさん :01/08/26 21:22 ID:r9kv7gys
>>680
負荷は劇的に減るが、gzip圧縮の恩恵がうけられなくなって転送量がふえてしまうかも

683 :デフォルトの名無しさん :01/08/26 21:25 ID:SBklp.1k
こうしてプログラマが頑張ってる横で、モー娘がどうしただので
板が落ちそうになってるのを見ると、複雑な気持ち。

684 :半角数字派 :01/08/26 21:38 ID:T95KUHcw
>>681
それは今すぐにでも採用希望(w

685 :デフォルトの名無しさん :01/08/26 21:40 ID:xL7OsRZc
>>684
ついでに、コロンが全角半角入り乱れているので整理しよう(笑

686 :デフォルトの名無しさん :01/08/26 21:42 ID:iy09H5/E
>>682
mod_gzip の導入は決定しているようなので、その辺は考えなくても良いかと。

687 :デフォルトの名無しさん :01/08/26 21:43 ID:NGu5IyHk
トップをindex2.html.gzとして、gzip形式でページを出力するのはどうよ?
拡張子をhtmlにしたままgzipで圧縮するばあいはApacheの設定が必要になると思う。
今までのindex2.htmlはindex2.html.gzに転送するページにするのが無難だと
個人的には思うけど。

688 :デフォルトの名無しさん :01/08/26 21:46 ID:PbVG8tb2
>>687
だからmod_gzip入れるんだってば

689 :369 ◆3XTuRnAc :01/08/26 21:50 ID:iecZaXF2
みなさん、お疲れ様です。
いま外出から帰ってきました。すごいことになってますね。
娘。さんとかPerlerさんとかもがんばっておられるようで、自分一人
遊んでて申し訳ない感じ。

・・・で、ftpサーバがいるなら今日から明日の朝までなら
提供する用意があります。たまにADSLモデム落とされますが(汗、
それでも良ければ。

690 :デフォルトの名無しさん :01/08/26 21:51 ID:JmrVikf2
>659 zz_GetString について、 >645 >648 は >620 でほぼ実現してます。

これまでに貼られたリンクとの互換性を考えると、
zz_nf, zz_im については
if(strcmp(zz_im,"true")) などを
if(zz_im[0] == 't') などに変更すれば、今後は
nofirst=true → n=t
imode=true → i=t
のように短縮できますね。

read.cgi という8文字も無駄に思える。
もっと短い名前でも呼べるようにしては?

691 :名無しさん :01/08/26 21:51 ID:Re1f5wmg
今日になってからここのwebページが普通に保存ができなくなったのは
何かいろいろ変更したからか?
たまに出来たりもして何が何だか・・・
不正な行為か・・・言われてもしょうがないけど・・・(藁

692 :名無し :01/08/26 21:52 ID:GLhprhn.
夜勤さんが居ないと意味無いな。

693 :687 :01/08/26 21:52 ID:NGu5IyHk
>>688
そりゃどうもすみません、なんかやけに好戦的に見えるなぁ。

694 :デフォルトの名無しさん :01/08/26 21:53 ID:JmrVikf2
>687
index2 が更新される回数≪読まれる回数
だから、 mod_gzip で毎回圧縮するより更新の際に圧縮しよう、という議論?

>691 何が不正なのですか?

695 :デフォルトの名無しさん :01/08/26 21:55 ID:RDsCkPFA
>>693
だって、 index2.html.gz はすでにきのうやってたんだもの。
いまでも index2.htm は gzip で出してる。
ようするにがいしゅつ。

696 :名無し娘。 ◆vP.bOZFQ :01/08/26 21:58 ID:qavO62ww
お疲れさまです。あと1時間ほどで戻ります(^^;
>>692
夜勤さんも、モ板祭の終わる頃にいらっしゃるようなことを昨晩おっしゃってました。

よろしければ、仕様変更を伴わない堅いところから、ソースに組み込んでいこうと
思いますが、どこから手を付けるべきでしょうか。
>>678 は組み込んでみました。追加がすぐに出ないようであれば、アップします。

697 :名無し :01/08/26 22:02 ID:GLhprhn.
▲現在の最新版はこれみたいです。
 http://star.endless.ne.jp/users/forcount/contents/scriptmaker/read11.rev1.c

698 :687 :01/08/26 22:02 ID:NGu5IyHk
>>695
あぁ、なるほど、最初からそういってくれたらよかったのに。

699 :名無しさんの声 :01/08/26 22:04 ID:SBklp.1k
68 名前:ふぁん 投稿日:01/08/26 20:01 ID:u/WGbLww
うちで転送量削減のソースを書いたプログラマーを
月200万くらいで雇いたいのですが、どうすれば良いですか?

2ch終わりか?東京kittyひろゆき討伐を決定!
http://yasai.2ch.net/test/read.cgi?bbs=venture&key=998735207


だってよ。

700 :名無し :01/08/26 22:04 ID:GLhprhn.
2ちゃんねるWiki に改造コード貼ってあります。
http://www.gedoh.org/aki/2ch/wiki/yukiwiki.cgi?TopPage

701 :デフォルトの名無しさん :01/08/26 22:04 ID:pAfX386E
盛り上がってまいりました。

702 :デフォルトの名無しさん :01/08/26 22:05 ID:MF2k8Nc2
モー娘の件もあちこちに個人で実況スレッドを作ったおかげで
2ちゃんねる本体にはそれほど負荷かかってないみたいですね。
羊と狼はやばそうですけど。(汗

703 :名無し娘。 ◆vP.bOZFQ :01/08/26 22:24 ID:x6eG9iGA
http://star.endless.ne.jp/users/forcount/contents/scriptmaker/read11.rev1.c
に #ifdef NEWBA 部分を組み込んだものを
http://nichrdcgi.hoops.ne.jp/read11.rev2.c
にアップしました。

その他の変更点は、関数毎に3行のコメント行を入れたこと、
いちおうindentしたことです。
検証できるかたいらっしゃいましたらよろしくです。

704 :デフォルトの名無しさん :01/08/26 22:29 ID:ggkSbIno
ていうか狼とかついに落ちた?

705 :デフォルトの名無しさん :01/08/26 22:29 ID:vtjT3i/c
NEWBAがdefineされてるとBadAccess()の定義がダブるんでないかい?

706 :デフォルトの名無しさん :01/08/26 22:33 ID:1UQ.S61Y
確かにダブるなあ。
read2ch.h って今どこにあるの?

707 :名無し娘。 ◆vP.bOZFQ :01/08/26 22:35 ID:kimvJHK2
>>705
。。。(泣
http://nichrdcgi.hoops.ne.jp/read11.rev3.c
に修正しました。

708 :名無し :01/08/26 22:35 ID:GLhprhn.
これじゃない。

>http://bbs_cgi.tripod.com/
>globalを通してみました。全行にアンカー振ってあります。
>また、-krでindent通したものもおいてあります。

709 :デフォルトの名無しさん :01/08/26 22:38 ID:1UQ.S61Y
さんくす。

710 :名無し :01/08/26 22:38 ID:GLhprhn.
稲垣会見とモー娘新メンバーで
アクセス急増。

711 :デフォルトの名無しさん :01/08/26 22:44 ID:ggkSbIno
>>708
そのURL見れないんだけどみんな見れてる?

712 :デフォルトの名無しさん :01/08/26 22:46 ID:1UQ.S61Y
見れてますよ

713 :デフォルトの名無しさん :01/08/26 22:46 ID:UBBPE9x.
URLに'_'があるとsquid proxyに蹴られるね。%5Fにしても駄目だ。

714 :名無し娘。 ◆vP.bOZFQ :01/08/26 22:48 ID:kimvJHK2
新メンバー決定♪しかし羊も狼も…(悲
>>711
うちでは見えていますが、念のため
http://nichrdcgi.hoops.ne.jp/read2ch.h
にもおいておきました。

715 :デフォルトの名無しさん :01/08/26 22:48 ID:ggkSbIno
>>713
はう。ビンゴ。ありがとう。
ローカルsquidに蹴られてた。

716 :711 :01/08/26 22:50 ID:ggkSbIno
715=711。
>>714もありがとう。

717 :名無しさん :01/08/26 23:01 ID:jZdNU1oQ
>>708には

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

だったら行くことができる。

718 :デフォルトの名無しさん :01/08/26 23:04 ID:/FZALAjc
>>699
そのスレ読んでみたけど、「匿名でヤバイ情報が覗ける」って
どこのこと言ってんだか・・・。なんつー認識だよ

719 :デフォルトの名無しさん :01/08/26 23:06 ID:xL7OsRZc
あ、スマン
すっかり忘れてたよ
./configure --enable-underscores
でsquid作り直してつかぁさい(マテ

720 :デフォルトの名無しさん :01/08/26 23:08 ID:j42oaHOQ
ところで,bbs.cgi って非公開?
それとも他のスレに話題があるのかな

721 :デフォルトの名無しさん :01/08/26 23:16 ID:/FZALAjc
>>708
日本語化けてない?もしかして俺だけかな

722 :デフォルトの名無しさん :01/08/26 23:20 ID:xL7OsRZc
>>721
ファイルは全てeuc-jpです。

723 :デフォルトの名無しさん :01/08/26 23:23 ID:9O51.yx2
>>661
>◆printf()
> 呼び出し回数削減
> puts()で可能なところは代用
> "\n"を削除
文字列長が分かっている場合は fwrite() のほうがいいんじゃない?

724 :デフォルトの名無しさん :01/08/26 23:27 ID:/FZALAjc
Shift_JISに見えるのは気のせい・・・?

725 :名無し娘。 ◆vP.bOZFQ :01/08/26 23:30 ID:clgr6qnI
>>724
気のせいじゃないかも

726 :722つか、bbs_cgiの馬鹿です :01/08/26 23:35 ID:xL7OsRZc
くわ...こんなのばっかだ...鬱だ寝ます…

727 :sage@sage.com :01/08/26 23:43 ID:paiaYiuM
すまん >>148 で恥ずかしいプログラム書きっぱなしだから
ちょっと補足いれさせてくれ。

要はdat_read関数上で'\0'から'*'に置き換えるのに
バッファを全部サーチしたのちに、再度getMaxLineで
各書き込みの先頭位置を検索するためにバッファを全部サーチしているので
一回のバッファサーチで両方の作業を行えばよいのではと
思ったわけです。即興でコードかいたんで無茶苦茶になっちまったけど、
できればこのコンセプトで誰か最適化してくれればうれしいっす。

728 :デフォルトの名無しさん :01/08/26 23:53 ID:/FZALAjc
>>720
古すぎて役に立たないかな。ちなみにBase64(ナゼ

aHR0cDovL21hbmtvbWFua29tYW5rby52aXJ0dWFsYXZlLm5ldC9iYnMudHh0

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

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

・・・・ソースいります?でかいですが。
なにしろgzip 1.2.4フルセットです。

730 :爆♪ :01/08/26 23:57 ID:jt9kAY8E
>>729
>なにしろgzip 1.2.4フルセットです。
パッチにして(藁

731 :369 ◆3XTuRnAc :01/08/26 23:58 ID:iecZaXF2
あ、フルセットじゃないです。
gzip.cとgzip.hだけで良いんですね良く考えたら。
gzip 1.2.4のフルセットは皆さんで落としてもらうとして(笑。

メリットは・・・プロセス数を浮かせられることかな(^^;;。
デメリットは、実行コードサイズがgzipと同等になっちゃうこと。

732 :デフォルトの名無しさん :01/08/26 23:59 ID:Kg2ClUug
>>729
どっかにあぷしないと無理でしょう。
いや、確かにそういう話はあったし、間違っちゃいないと
思うけど、君素敵すぎ。

733 :369 ◆3XTuRnAc :01/08/27 00:01 ID:xXHglqmc
あ、すんません、まだでした。まだまともに動いてないす。
動いたというのは自分の勘違い。ごめんなさい・・・・。

734 :デフォルトの名無しさん :01/08/27 00:01 ID:407N8DOw
すいません。
夜勤さんや削除委員長さんとは連絡取れないのでしょうか?
UNIX板が駄スレたちまくりなので対処してほしいのですが

735 :デフォルトの名無しさん :01/08/27 00:06 ID:9Ji20W0U
使うのはzlibにしたらどうでしょう。
ところでbbs.cgiの方が着実にアップデートされていってますね。
真の精鋭はそっちに携わってる?

736 :デフォルトの名無しさん :01/08/27 00:07 ID:oz/9pnnY
いま批判要望板で見かけたでし。
でもお手を煩わせていいものかどうか。

737 :名無し娘。 ◆vP.bOZFQ :01/08/27 00:07 ID:Km.fZ5BI
夜勤さんは縁の下でがんばりちゅうのようです。

738 :デフォルトの名無しさん :01/08/27 00:07 ID:5zQpe5GQ
>>735
どこで?

739 :デフォルトの名無しさん :01/08/27 00:12 ID:tF8/p42I
この辺に夜勤さんがいましたよ。
ttp://teri.2ch.net/test/read.cgi?bbs=accuse&key=998806470&ls=30

740 :夜勤 ★ :01/08/27 00:13 ID:/VYvqKxI
呼ばれて、来ました。

741 :名無し娘。 ◆vP.bOZFQ :01/08/27 00:13 ID:Km.fZ5BI
>>740
お疲れさまです。
あの、まだread.cgi開発中なのですが、これ以上改善を施して、
採用される見通しはありますか?

742 :夜勤 ★ :01/08/27 00:16 ID:/VYvqKxI
もちろん!

743 :デフォルトの名無しさん :01/08/27 00:17 ID:ZT1fe3Xg
sure

744 :名無し娘。 ◆vP.bOZFQ :01/08/27 00:17 ID:Km.fZ5BI
確定ではありませんが、作業方針としては、
まず、現行プログラム各部の性格や機能を変えない範囲での最適化をする。
その後、可能なのであれば、包括的・抜本的な最適化(作り直し)をする。
といった感じです。

745 :名無し :01/08/27 00:17 ID:N77k73Ds
夜勤さん bbs.cgi は公開できないんですか?

746 :720 :01/08/27 00:18 ID:P7yLS.2Q
>>728
わざわざありがとうございます〜。
いただいてきます。

% こっちはCではないのですね。

747 :名無し娘。 ◆vP.bOZFQ :01/08/27 00:19 ID:Km.fZ5BI
>>742
わーい(泣
では、お手が空き次第、
http://nichrdcgi.hoops.ne.jp/read11.rev2.c
をpiza2にでも導入していただけますか。
インストールオプションは・・・あれ、調べておきます。

748 :夜勤 ★ :01/08/27 00:20 ID:/VYvqKxI
プログラムは完成することはありませんと思うので、、、
どこか区切りがついたら、呼んでください。実際にサーバに上げますので。

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

たぶん批判要望あたりをうろうろしてますので。

749 :夜勤 ★ :01/08/27 00:22 ID:/VYvqKxI
bbs.cgi を公開するのは、私には無理ですよー。

750 :名無し娘。 ◆vP.bOZFQ :01/08/27 00:23 ID:Km.fZ5BI
>>748
>今の目的は、「転送量の軽減」です。
では、今のうちに「最新レス100」->「最新レス100」とかの対処を
しちゃいましょうか。。。

751 :369 ◆3XTuRnAc :01/08/27 00:24 ID:xXHglqmc
ごめんなさい、gzip組み込みで難航中です。

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

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

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

・・・うーむ。こんなこと最初から気づけ俺。

752 :デフォルトの名無しさん :01/08/27 00:25 ID:6kfMn/mA
>>747
http://nichrdcgi.hoops.ne.jp/read11.rev3.c
ですよ。

753 :デフォルトの名無しさん :01/08/27 00:25 ID:469/dUs6
>>750
web制作の方でHTML軽減はやってるみたいですよ。

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

754 :名無し娘。 ◆vP.bOZFQ :01/08/27 00:26 ID:Km.fZ5BI
>>753
では、mergeしちゃいましょう。

755 :名無し :01/08/27 00:26 ID:N77k73Ds
>>747
これ見れますか?
ファイルが無いようですが、、
read11.rev3.c ならある。

756 :デフォルトの名無しさん :01/08/27 00:28 ID:284T.QVo
転送量の削減となると、やはりDATから変換したHTMLのサイズを減らすことを
優先すべきということでしょうか。

そもそもサーバのCPUパワーにはまだ余裕があるんですよね?>夜勤さん

757 :名無し :01/08/27 00:31 ID:N77k73Ds
ソースが最適化コードに置き換わっていないようですが。

http://www.gedoh.org/aki/2ch/wiki/yukiwiki.cgi?mycmd=read&mypage=%5B%5Bread%2Ecgi%82%F0%8D%82%91%AC%89%BB2%5D%5D

758 :名無しさん || die :01/08/27 00:32 ID:YgC5b35I
web制作の方に書いた、「新しいレスだけ表示」はどうなんでしょ。
スレをROMってリロードしまくりの人が多いなら効果あると思うのだけど。

759 :名無し娘。 ◆vP.bOZFQ :01/08/27 00:32 ID:Km.fZ5BI
>>753
すいませんが、フォローしきれる自信がないので、read.cgiで変更すべき
点だけどなたか列挙してくださいませんか?
複数の方がやって下さっても、この際よいと思います。
# それだけ抜け落ちが少なくなるし…

760 :デフォルトの名無しさん :01/08/27 00:32 ID:IuzteUCY
saladのread.cgiが、この時間帯でも全レス表示可能なようなのですが、
これは正常なのでしょうか?

761 :名無し娘。 ◆vP.bOZFQ :01/08/27 00:35 ID:Km.fZ5BI
(2時間くらいの目途で作業します)

762 :技術とかでなく :01/08/27 00:40 ID:1NVzBQO2
プリペイド買った人のみスレを立てる権利を付ける
(日当たり回数制限付き)
プロキシーは一切制限する所から初めて、許可申請
で開ける様にする
(プロキシー潰して行く方向でやる方が面倒)
各板共に3分間は更新された内容が読み込めない様
にする
(同一IPからのリクエストは3分間はkickってのも在る?)

これで安泰

763 :Web制作から転載です。 :01/08/27 00:43 ID:nQB5Vf12
477 名前:351 投稿日:01/08/26 23:58 ID:IvN6phxo
index2.html用
http://isweb31.infoseek.co.jp/photo/photo_d/test.html
index2.html用CSSバージョン
http://isweb31.infoseek.co.jp/photo/photo_d/test_css.html
read.cgi用
http://isweb31.infoseek.co.jp/photo/photo_d/read_test.htm
read.cgi用<pre>使用
http://isweb31.infoseek.co.jp/photo/photo_d/read_079.htm
上の4ファイルの圧縮
http://isweb31.infoseek.co.jp/photo/photo_d/2ch_html.zip

です。Script関係他よろしくです。
とりあえずタグレベルでは減量させたつもり。

764 :デフォルトの名無しさん :01/08/27 00:45 ID:2MpScvZw
web製作板は転送量を減らしに躍起になって、
肝心なのを見失ってるって感じ。
せっかくのいい機会なのに……。

765 :デフォルトの名無しさん :01/08/27 00:46 ID:9mNBJEMM
read.cgiで削れるところは少ないな。
とりあえず 最新レス100の100を半角にするか?(笑
あと「名前:」「投稿日:」削る、っていきなりやっていいんだろうか。

766 :デフォルトの名無しさん :01/08/27 00:46 ID:NsFeEjCc
GetString (>690) が変わればすぐにもリンクの文字列が短くなり始めるのでは。
>620 (どのくらい検証されてる? さらなる改善は?)のように
dst を 20バイトしか使わないなら、char zz_im[1024] などとなっているのも [20] でいい。

767 :名無し娘。 ◆vP.bOZFQ :01/08/27 00:47 ID:Km.fZ5BI
まずは見た目に尽きにくい所から削っています。
HTML内の"\n"とか。

768 :デフォルトの名無しさん :01/08/27 00:47 ID:yw5i/z86
HTTP_ACCEPT_ENCODING: x-gzip にも対応しとかないの?
今時、ほとんどないだろうけどね。
x-gzipにgzipを返しちゃいけません。

#ifdef GZIP
if(zz_http_encoding && strstr(zz_http_encoding,"x-gzip")){
gzip_flag = 1;
printf("Content-Encoding: x-gzip\n");
}else if(zz_http_encoding && strstr(zz_http_encoding,"gzip")){
gzip_flag = 1;
printf("Content-Encoding: gzip\n");
}else{
gzip_flag = 0;
}
#endif

769 :名無し :01/08/27 00:48 ID:N77k73Ds
レスの表示形式
312 名無し 01/08/26/日 15:40
に意見がまとまりました。

770 :デフォルトの名無しさん :01/08/27 00:49 ID:NsFeEjCc
>765 ファイル名を r.g か何かにして、.g を .cgi と同じに扱う(笑

771 :名無し娘。 ◆vP.bOZFQ :01/08/27 00:49 ID:Km.fZ5BI
>>766
そうですね。GetString関係は、まずread.cgiで(現在との互換性を
保ちつつ)実装しておきましょうか。
検証お願いします。できたら、最終版へのリンクもあるとありがたいです。

772 :デフォルトの名無しさん :01/08/27 00:49 ID:pckFEAaY
HTTPヘッダ出力したところで

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

して、printf を関数ポインタに置き換えるだけじゃだめなん?
gzip.c 組み込みって何してんの?

773 :名無し娘。 ◆vP.bOZFQ :01/08/27 00:50 ID:Km.fZ5BI
>>769
それ、やっていいんですかね(笑
夜勤★さんなりの確認いただけないでしょうか

774 :デフォルトの名無しさん :01/08/27 00:52 ID:oFtR0rYM
■掲示板に戻る■
はなくても使い勝手が変わらないかと思います。

775 :デフォルトの名無しさん :01/08/27 00:52 ID:eF1BPT8s
既出かもしれないけど。

>>000
のリンクで対象レス番号が既にブラウザで表示されている
範囲内にある時は<a name=〜>で移動するように
処理したら少しはread.cgiの呼び出し回数&転送量が減るかも。

776 :デフォルトの名無しさん :01/08/27 00:53 ID:9mNBJEMM
日付形式はbbs.cgiに任せたほうがいいんじゃないか?
現状datのそのまま出力してるだけだし。

777 :デフォルトの名無しさん :01/08/27 00:53 ID:vN9r/JlA
gzip 組み込むと GPL 適用だぞ。

778 :デフォルトの名無しさん :01/08/27 00:54 ID:3lNlqFsM
>>774
他の板のスレッドから飛んだとき、「ここはどこだ?」となることがあったりする。
個人的には残して欲しい。

779 :デフォルトの名無しさん :01/08/27 00:54 ID:nQB5Vf12
確かに今やってることって
『今の2ちゃんねる』の転送量を軽減することですよね。
あまり見た目は変えない方が良いかと。

780 :369 ◆3XTuRnAc :01/08/27 00:56 ID:xXHglqmc
>>772
えと、正確には「gzipにread.cgiを強引にマージしよう」っていう話です。

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

情報お願いします。

781 :デフォルトの名無しさん :01/08/27 00:56 ID:oFtR0rYM
>778
スレに用はあっても、板に用はないんじゃないですかね?
どんなもんでしょ?

782 :デフォルトの名無しさん :01/08/27 00:57 ID:9mNBJEMM
とりあえず今日は見た目はあまり変えないって方針で。
でも名前:、投稿日:、は消してもよさそうだけどな。

783 :デフォルトの名無しさん :01/08/27 00:58 ID:2MpScvZw
>>782
UIはまだ議論の余地があると思うので、
今回はあまりいじらない方がいいですね。

784 :デフォルトの名無しさん :01/08/27 00:58 ID:pckFEAaY
>>780
zlib なんすけど、FreeBSD-4 なら /usr/include/zlib.h のコメント読んで

785 :782 :01/08/27 00:58 ID:9mNBJEMM
あら、index2.htmに「投稿日:」が消えてますね。
こりゃread.cgiも消しちゃってOKじゃねーかな。

786 :369 ◆3XTuRnAc :01/08/27 00:59 ID:xXHglqmc
>>777
ええ、その辺は承知してます。
もしgzip組み込みがうまく行って、かつ、read.cgiのGPL適用が
問題なく、かつ、組み込む価値があるなら採用、どれかひとつでも
欠ければ不採用ってので今は組み込みやってるところです。

まあ、今は単純な興味を満たす自己満足みたいなものですかね。
それでうまく行けば儲け物っていう。

787 :369 ◆3XTuRnAc :01/08/27 00:59 ID:xXHglqmc
あ、zlibでしたか。了解です。

788 :デフォルトの名無しさん :01/08/27 01:00 ID:iuwjXswY
mod_gzipって確定なのかな?
確定ならgzip組み込みって無い方がシンプルでいいと思う。

789 :名無し娘。 ◆vP.bOZFQ :01/08/27 01:03 ID:Km.fZ5BI
>>768
実装しました。まだ作業は続く。。。

790 :デフォルトの名無しさん :01/08/27 01:05 ID:DhF2Uz5c
入力フォームは必要でしょうか?
フォーム出力専用のCGIのリンクをつけるのは駄目ですか?

791 :名無し娘。 ◆vP.bOZFQ :01/08/27 01:05 ID:Km.fZ5BI
えと、
>◆時刻の解析
> >>473 >>477 >>482 >>489 >>515 >>517
について、要するにどうすればいいのか、どなたかまとめていただけますか?

792 :デフォルトの名無しさん :01/08/27 01:06 ID:284T.QVo
zlib組み込みならGPLに感染しないで済むぞ↓
http://www.gzip.org/zlib/zlib_license.html

とはいえ788に同意

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

piza2(ここ)でも、全レス表示可能になってますが。
read.cgi Ver5.xxのとこは全部そうかな?

794 :nanasi :01/08/27 01:09 ID:MWcmzrwU
age

795 :デフォルトの名無しさん :01/08/27 01:09 ID:DhF2Uz5c
517で良いと。

mod_gzipはすぐにできないのでしょう?

796 :デフォルトの名無しさん :01/08/27 01:12 ID:3lNlqFsM
取りあえず、改良をお願いします。

<BODY TEXT=black BGCOLOR=#EFEFEF link=blue alink=red vlink=#660099>

<body>

797 :デフォルトの名無しさん :01/08/27 01:14 ID:2MpScvZw
>>796
<BODY TEXT=black BGCOLOR=#EFEFEF link=blue alink=red vlink=#660099>
↑相当をCSSで実現するということですよね?

798 :デフォルトの名無しさん :01/08/27 01:14 ID:ReF.V//c
むしろブラウザの設定任せにしてしまうということでは。

799 :名無し娘。 ◆vP.bOZFQ :01/08/27 01:15 ID:Km.fZ5BI
>>796-797
それは、管理のみなさんの了解はあるのでしょうか?

800 :デフォルトの名無しさん :01/08/27 01:15 ID:YgC5b35I
>797
ちなみに index2 では既に body の属性消されてますよ。

801 :デフォルトの名無しさん :01/08/27 01:16 ID:CbLq.TAQ
えー、これもガイシュツかもしれないのですが、
x-sjis を Shift_JIS にはまだできないのでしょうか?

802 :デフォルトの名無しさん :01/08/27 01:16 ID:DhF2Uz5c
body削りOKなら、HEAD内全部削除は駄目ですか?(^^;

803 :デフォルトの名無しさん :01/08/27 01:17 ID:284T.QVo
>>795
515じゃない?

804 :デフォルトの名無しさん :01/08/27 01:17 ID:2MpScvZw
>>801
賛成です。

805 :デフォルトの名無しさん :01/08/27 01:18 ID:oVJMiQ2Y
つか、encodingはmetaで指定するんじゃなくて、モノホンの
HTTPレスポンスで出した方が良くない?

806 :デフォルトの名無しさん :01/08/27 01:18 ID:2MpScvZw
>>802
title要素は必要です。

807 :名無し娘。 ◆vP.bOZFQ :01/08/27 01:19 ID:Km.fZ5BI
んと、bodyとかheadの部分は後回しにしておきますから、夜勤さんに
お出で願えないかなぁ。

808 :デフォルトの名無しさん :01/08/27 01:19 ID:oVJMiQ2Y
<body>とか<head>とかは省略可能タグじゃなかった?

809 :348 :01/08/27 01:20 ID:ynZt.qo6
あ、またバージョンアップしてますね
http://star.endless.ne.jp/users/forcount/contents/scriptmaker/read11.rev3.c
こんな感じでage

810 :名無し :01/08/27 01:20 ID:N77k73Ds
夜勤さん、どこにいるんでしょうね。

811 :デフォルトの名無しさん :01/08/27 01:21 ID:2MpScvZw
>>808
時代と逆行してる気がする

812 :デフォルトの名無しさん :01/08/27 01:21 ID:cn52pBwI
>>810
お呼び出しはしておきました。

813 :nanasi :01/08/27 01:23 ID:MWcmzrwU
すんません、ここを巡回できるようにしたいのですが、
どのカテゴリで探せばよいでしょ?

814 :デフォルトの名無しさん :01/08/27 01:23 ID:DhF2Uz5c
>>803

そうでした。>>515です

>>806

ブックマーク用ですか?
では、bodyのスレタイトルを消します?

815 :デフォルトの名無しさん :01/08/27 01:23 ID:pckFEAaY
>>791
cvs.apache.org から apr-util と apr を checkout。
apr-util を make すると misc/ の中に apr_date.o てのがある。
少々関数が不足しているので apr の方から cut&paste して追加。
ヘッダは apr/include apr-util/include を両方使えばいいでしょう。

といっても面倒くさいな。どうしよう。
Apache Software Licence ってライブラリの一部切り出して(Copyright 残して)
使っていいの?

816 :デフォルトの名無しさん :01/08/27 01:23 ID:tF8/p42I
>>813
ここはプログラム技術板です。

817 :デフォルトの名無しさん :01/08/27 01:24 ID:oVJMiQ2Y
とりあえず、
-printf("Content-type: text/html\n");
+printf("Content-type: text/html; charset=Shift_JIS\n");
にして、meta削るってのは?
#かちゅ〜しゃが書き込み時にエラー判定ミスってて大変やわ

818 :ニュース速報板のタグが間違えている :01/08/27 01:25 ID:X..P9zvs
ニュース速報板のタグが間違えている
わさと?ガイシュツ?

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

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

819 :nanasi :01/08/27 01:25 ID:MWcmzrwU
>>816
ギコナビ使ってるんですが、プログラム技術のカテゴリが
見つかりません(涙

820 :デフォルトの名無しさん :01/08/27 01:27 ID:284T.QVo
>>819
「プログラム」じゃないかな?

821 :デフォルトの名無しさん :01/08/27 01:28 ID:tF8/p42I
>>819
http://210.150.210.150/sage/bbstable.html
ギコナビ使ったこと無いからわかんないんだけど
bbstable見てみたらどうでしょう?

822 :nanasi :01/08/27 01:29 ID:MWcmzrwU
>>820
出てこないです・・・・。

823 :デフォルトの名無しさん :01/08/27 01:30 ID:GRBfg3.A
>>822
カテゴリはPC等だよ

824 :ニュース速報板のタグが間違えている :01/08/27 01:30 ID:X..P9zvs
ニュース速報板のリロードのタグが間違えている
わさと?ガイシュツ?

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

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

それとここのスレに書き込むとエラーが出る by かちゅーしゃ

825 :824 :01/08/27 01:32 ID:X..P9zvs
test

826 :デフォルトの名無しさん :01/08/27 01:32 ID:GRBfg3.A
>>824
ホットゾヌだとエラーがでるが書き込めてるみたい。

827 :名無し :01/08/27 01:33 ID:N77k73Ds
345 名前:夜勤 ★ 投稿日:01/08/26 23:48 ID:H8NM1U/A
read.cgi の改良で、25% くらいの改善の見込みが付いたところでしょうか、
で index2.html とか若干のインターフェイスの修正でさらに 20% くらいの
改善を目論んでいる(やってみなきゃ分からない)というのが、今の状況
です。さらにいくつかのサーバを停止すれば、目標である 50Mbps以下
にはなると思います。

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

2ちゃんねるが黒字の経営(言葉のつっこみは勘弁)であれば、60% 以上の
経営効率化に成功したとうことでしょうが、、、
残念ながら、今の2ちゃんねるにおいては、若干の延命措置を施した
だけだったりします。このへんのことは弁茶板の方々が詳しいと思います。

828 :デフォルトの名無しさん :01/08/27 01:33 ID:cn52pBwI
>>824>>826
スレ違い
2chの動作報告はここで。
http://teri.2ch.net/test/read.cgi?bbs=accuse&key=998808733
君たちの行き先はこっち

829 :デフォルトの名無しさん :01/08/27 01:33 ID:BRbcVi3o
>>824
批判要望板へどうぞ。

830 :348 :01/08/27 01:33 ID:ynZt.qo6
かちゅ〜しゃもなんかエラーが出ますね
でも一応書き込めてるようですが・・・

831 :デフォルトの名無しさん :01/08/27 01:34 ID:pckFEAaY
Apache 1.3.20 の util_date.c なら単独ファイルだけで使えそうだ
からこっちにしますかね・・・

832 :nanasi :01/08/27 01:34 ID:MWcmzrwU
>>821
bbstable上手く開かないです・・・。
>>822
PC等は確認済みですが、プログラム技術カテゴリ無いです・・・。

833 :名無し娘。 ◆vP.bOZFQ :01/08/27 01:35 ID:Km.fZ5BI
>>817
これってどうなのでしょう?
# RFC読み読み中

834 :デフォルトの名無しさん :01/08/27 01:36 ID:cn52pBwI
>>832
http://piza2.2ch.net/tech/index2.html

835 :デフォルトの名無しさん :01/08/27 01:36 ID:8q2NINpg
ところで今現在の進捗はどうなってるの?

836 :名無し娘。 ◆vP.bOZFQ :01/08/27 01:36 ID:Km.fZ5BI
>>803 >>814
>>515 実装しました。

837 :デフォルトの名無しさん :01/08/27 01:37 ID:QEEMLonQ
>>832 だから板違いだ。作業の邪魔だから帰れ。

838 :デフォルトの名無しさん :01/08/27 01:37 ID:IuzteUCY
>>833
古いネスケで文字化けする
ネスケ切り捨てるならそれでもいいかも

839 :デフォルトの名無しさん :01/08/27 01:37 ID:DhF2Uz5c
夜勤さん待ち

840 :348 :01/08/27 01:38 ID:ynZt.qo6
ところで今実際に稼働しているのはどのバージョンなんです?
まだ、read11とか動いてませんよね?

http://star.endless.ne.jp/users/forcount/contents/scriptmaker/read11.rev3.c
一応、最新版

841 :デフォルトの名無しさん :01/08/27 01:38 ID:oVJMiQ2Y
>>833
RFC的には、
http://www.fxis.co.jp/DMS/sgml/xml/saloon/html_correct_charset.html
ここいら見れ。

842 :nanasi :01/08/27 01:39 ID:MWcmzrwU
>>837
後学のため、ログ読みたかったのですが・・・・。
堕ちます・・・。

843 :デフォルトの名無しさん :01/08/27 01:40 ID:DhF2Uz5c
>>838

SHIFT-JISなので、ほとんど化けない。

844 :デフォルトの名無しさん :01/08/27 01:40 ID:pckFEAaY
>>842
マジレスしとくと後学のためになるような作業ではない
数学の勉強でもしてろ

845 :デフォルトの名無しさん :01/08/27 01:40 ID:ReF.V//c
Web制作板の守備範囲かもしらんけど、
<HTML></HTML>も消しちゃっていいことないスか?

846 :名無し :01/08/27 01:41 ID:N77k73Ds
鯖6台止める案が有力だって。

847 :名無し娘。 ◆vP.bOZFQ :01/08/27 01:41 ID:Km.fZ5BI
"charset=x-sjis" -> "charset=Shift_JIS" だけにしときます

848 :デフォルトの名無しさん :01/08/27 01:41 ID:IuzteUCY
>>843
100%化けるんだよ。欧文文字コードと勘違いして。
まあネスケがタコと言えばそのとおりなんだが。

849 :デフォルトの名無しさん :01/08/27 01:41 ID:2MpScvZw
>>845
時代に逆行しているような気がする

850 :デフォルトの名無しさん :01/08/27 01:42 ID:IuzteUCY
>>849
xhtmlとかにして無駄に転送量増やすくらいなら
逆行してても仕方ない

851 :デフォルトの名無しさん :01/08/27 01:42 ID:oVJMiQ2Y
>>838
とりあえず、そーすみしてくれ。

852 :デフォルトの名無しさん :01/08/27 01:42 ID:BRbcVi3o
517 名前:夜勤 ★ 投稿日:01/08/27 01:40 ID:???
read.cgi 5.xx の採用の結果(速報)

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

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

あとは mod_gzip がどうなるかが楽しみです。
まだ、導入できると決まったわけじゃありませんが、

853 :801 :01/08/27 01:43 ID:CbLq.TAQ
バイト数を減らすという目的でいろいろ出てますが、
そのためにといってCGIにはかせるHTMLを
最低限のヘッダ要件をも満たしてないものにするのは
いかがなものかと思うわけです。

854 :デフォルトの名無しさん :01/08/27 01:44 ID:tF8/p42I
コピペです


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

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

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

あとは mod_gzip がどうなるかが楽しみです。
まだ、導入できると決まったわけじゃありませんが、

855 :デフォルトの名無しさん :01/08/27 01:44 ID:IuzteUCY
>>851
「ネスケ 文字化け」とかでGoogleしてみてくれ
結構有名だからWeb板の住人なら誰でも知ってそうだが

856 :名無し娘。 ◆vP.bOZFQ :01/08/27 01:45 ID:Km.fZ5BI
>>853
個人的に同感です。
ところで、そろそろ新スレ?
あと、GetString関係、>>620をもとに実装してみます。
それが終わったらコンパイルテスト後にソースアップします。

857 :デフォルトの名無しさん :01/08/27 01:45 ID:YgC5b35I
文字化け多発→リロードしまくり&あちこちで質問される→転送量増加

858 :デフォルトの名無しさん :01/08/27 01:46 ID:cn52pBwI
新スレの1はこんな感じでいかがでしょう?

2chの読み出し[read.cgi]の最適化、効率化を中心に検討・開発しています。
このスレッドへのご感想・不具合報告の投稿はお控えください。

読み出しがうまくいかない・エラーなどの不具合報告はこちら
・2chの動作報告はここで。
http://teri.2ch.net/test/read.cgi?bbs=accuse&key=998808733

現状へのご意見ご感想はこちら
・転送量(料)の増加で2ch閉鎖の危機!5
http://teri.2ch.net/test/read.cgi?bbs=accuse&key=998806470

緊急対策コーディングはこちら
・UNIX板で2chのプログラムを開発中 パート 3
http://teri.2ch.net/test/read.cgi?bbs=accuse&key=998765190

859 :デフォルトの名無しさん :01/08/27 01:46 ID:IuzteUCY
x-sjisにする必要がないというならx-gzipにも配慮する必要ないと思う

860 :デフォルトの名無しさん :01/08/27 01:46 ID:QEEMLonQ
<HTML>削るのは最後の最後の最後の手段だね。

861 :Web制作板 :01/08/27 01:47 ID:3lNlqFsM
改良をお願いします。見かけとかは変わりません。

<div align=center><a href="http://www.2ch.net/info.html" border=0><img src="title.gif" border=0></a></div>

<p align=center><a href="http://www.2ch.net/info.html"><img src="title.gif" border=0></a></p>

提案はまとめて出した方がいいでしょうか?それとも決定次第出した方がいいでしょうか?

862 :デフォルトの名無しさん :01/08/27 01:48 ID:IuzteUCY
<HTML>削ってもHTMLの仕様に違反するわけではないよ
分かってるとは思うけど
http://www.ne.jp/asahi/minazuki/bakera/html/reference/basic#html

863 :名無し :01/08/27 01:49 ID:N77k73Ds
新スレにこれも載せてください。

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

864 :デフォルトの名無しさん :01/08/27 01:49 ID:YgC5b35I
htmlやbody削ると見れなくなるブラウザってある?
仕様よりも実装優先で。

865 :デフォルトの名無しさん :01/08/27 01:50 ID:2MpScvZw
>>862
http://www.w3.org/TR/xhtml11/

866 :デフォルトの名無しさん :01/08/27 01:49 ID:jRMpTCc6
<meta>タグは削らなくていいけど、
-printf("Content-type: text/html\n") ;
+printf("Content-type: text/html; charset=Shift_JIS\n") ;
は入れたほうがいいんじゃない? レスポンスヘッダ中にcharset指定がないと、
2ch以外のShiftJISじゃないページからread.cgiにリンクが張られたとき
<meta>タグ無視してNC4.xが判別に失敗するときあるし。

867 :デフォルトの名無しさん :01/08/27 01:50 ID:oVJMiQ2Y
>>860
DTD書いてない時点で、「ブラウザが解釈できる限界まで削る」という
方針でもいいんじゃ無いかと思うけどな。

>>855
httpのヘッダでなく、metaに入れないと化けるって事なら、みつけられん
charsetがShift_JISだから(x-sjisでないから)、ってことなら、了解。

868 :名無し :01/08/27 01:51 ID:N77k73Ds
夜勤さん、どこへ行っちゃったんだろうか?

869 :デフォルトの名無しさん :01/08/27 01:51 ID:IuzteUCY
>>865
2chのhtmlはxhtmlじゃないでしょ
もしそうならすでに違反しまくり
今さら<HTML>を残したって同じこと
そもそもxhtmlでは<html>と小文字でなくちゃ駄目

870 :デフォルトの名無しさん :01/08/27 01:52 ID:cn52pBwI
>>863
これでよろしいですか?

2chの読み出し[read.cgi]の最適化、効率化を中心に検討・開発しています。
このスレッドへのご感想・不具合報告の投稿はお控えください。

読み出しがうまくいかない・エラーなどの不具合報告はこちら
・2chの動作報告はここで。
http://teri.2ch.net/test/read.cgi?bbs=accuse&key=998808733

現状へのご意見ご感想はこちら
・転送量(料)の増加で2ch閉鎖の危機!5
http://teri.2ch.net/test/read.cgi?bbs=accuse&key=998806470

緊急対策コーディングはこちら
・UNIX板で2chのプログラムを開発中 パート 3
http://teri.2ch.net/test/read.cgi?bbs=accuse&key=998765190

・開発用wiki(read.cgiソースなどの掲載があります)
http://www.gedoh.org/aki/2ch/wiki/yukiwiki.cgi?TopPage

871 :デフォルトの名無しさん :01/08/27 01:52 ID:pckFEAaY
>娘。
日付関数動いた。
compile するのに apache の tarball 要る(configure のため)と思う
んだけどどうすればいいかな?
夜勤さんの方でコンパイルするのにそれは辛いでしょ?
# ちょっと今から configure 抜きで必要そうなファイルだけで試してみますが

872 :デフォルトの名無しさん :01/08/27 01:52 ID:YgC5b35I
タグ関連はここにどんどん書いてもらって、後で取捨選択しては?
http://www.gedoh.org/aki/2ch/wiki/yukiwiki.cgi?mycmd=read&mypage=%5B%5Bhtml%82%CC%8Ed%97l%5D%5D

873 :デフォルトの名無しさん :01/08/27 01:53 ID:IuzteUCY
>>867
詳しいことは忘れたけどmetaに入れた場合とHTTPヘッダに
入れた場合でもネスケ3はなぜか動作が違う
まあ苦情が来なければいいかも

874 :845 :01/08/27 01:53 ID:zjmRlAwo
すんません。やっぱこのスレで出すべき話じゃなかったかも。

875 :デフォルトの名無しさん :01/08/27 01:55 ID:DhF2Uz5c
>>848

>>838で古いネスケって書いてあったので、Ver1や2の頃かと思っていました(^^;
Ver4台で起きているのですね(^^;
では、METAタグがよろしいかと。。。
古いバージョンは逆にcharset=Shift_JISはOKなのかな。
(スレ違いすみません)

876 :デフォルトの名無しさん :01/08/27 01:56 ID:6kfMn/mA
147 名前:夜勤 ★ :01/08/27 01:54 ID:???
これから、全サーバに read.cgi 5.xx を入れに行ってきます。
たくさんサーバあるので、ぼちぼち入れます。

コピペです。

877 :デフォルトの名無しさん :01/08/27 01:56 ID:3lNlqFsM
>>872
後で取捨選択、をやろうとして現在Web制作の方が結構大変なことになってるんですが…。

878 :名無し :01/08/27 01:56 ID:N77k73Ds
>147 名前:夜勤 ★ :01/08/27 01:54 ID:???
>これから、全サーバに read.cgi 5.xx を入れに行ってきます。
>たくさんサーバあるので、ぼちぼち入れます。

だそうです。最終版のプログラムを提示して下さい。

879 :スレ違いスマソ :01/08/27 01:57 ID:IuzteUCY
>>875
ネスケ1や2や4は大丈夫。だめなのはネスケ3のみ。
ネスケ3だとcharset=Shift_JISもHTTPヘッダ使うのもだめ。

880 :名無し娘。 ◆vP.bOZFQ :01/08/27 01:57 ID:Km.fZ5BI
んと、hoopsもう入れなくなってます(汗
アップできないのでしばらくお待ち下さい。。。
# あぷろだにでもあげようか…

881 :デフォルトの名無しさん :01/08/27 01:59 ID:ZIaMkoUw
ウダウダレスしてねーで、はやく実行しろよ。

やっぱここはUNIX板とは違うオナ〜ニ板でしかなかったのか・・・

882 :デフォルトの名無しさん :01/08/27 01:59 ID:yw5i/z86
>>859
文字コードはブラウザで強制的に切り替えできるけど、
x-gzipにgzipで返されるとどうにもならない。

883 :348 :01/08/27 01:59 ID:ynZt.qo6
こっちであげますよ

forcount@star.endless.ne.jp
宛に
id:2chread
pass:readcgi
という内容で添付して送っていただければ
自動的にアップされます

884 :デフォルトの名無しさん :01/08/27 02:00 ID:pckFEAaY
>>881
メンバーほとんど同じだと思うけど

885 :369 ◆3XTuRnAc :01/08/27 02:01 ID:xXHglqmc
>娘。さん
うちのftpつかってくれて良いですよ。ftpポート開いてます。
210.170.170.131

886 :デフォルトの名無しさん :01/08/27 02:01 ID:IuzteUCY
>>882
ネスケ3もHTTPヘッダやhtmlで指示された文字コードは切り替えられない

887 :369 ◆3XTuRnAc :01/08/27 02:01 ID:xXHglqmc
あ、そっちのほうがいいですね>>883さん

888 :デフォルトの名無しさん :01/08/27 02:02 ID:QEEMLonQ
>>861
っと、それはbbs.cgiの部分だな。
とりあえずWeb製作のスレで「決定事項」としてまとめとけば、
必要になったらこっちから見に行くんじゃないかな。

889 :デフォルトの名無しさん :01/08/27 02:02 ID:ZIaMkoUw
こっちも見ろや
http://natto.2ch.net/test/read.cgi?bbs=hp&key=998774537&ls=50

890 :デフォルトの名無しさん :01/08/27 02:03 ID:BrafyimQ
ところで、最新ソースのレポジトリはどこさ?

891 :デフォルトの名無しさん :01/08/27 02:03 ID:3lNlqFsM
>>888
了解しました。

892 :348 :01/08/27 02:05 ID:ynZt.qo6
>>883の手順でアップしたら
一応
http://star.endless.ne.jp/users/forcount/4countbbs/scriptmaker/index.html
に告知しておいて下さい
5分ごとにチェックしてます

893 :デフォルトの名無しさん :01/08/27 02:06 ID:cn52pBwI
新スレ建てておきました。

894 :名無し娘。 ◆vP.bOZFQ :01/08/27 02:08 ID:Km.fZ5BI
>>883
使わせていただきました。ありがとうございます。
ftp://210.170.170.131/incoming/2ch-read-current/read12.c
ftp://210.170.170.131/incoming/2ch-read-current/Makefile
コンパイルまでは確認済です。

895 :デフォルトの名無しさん :01/08/27 02:10 ID:cn52pBwI
失礼。
新スレのリンクし忘れました。
http://piza2.2ch.net/test/read.cgi?bbs=tech&key=998845501
です。

896 :369 ◆3XTuRnAc :01/08/27 02:11 ID:xXHglqmc
うーん、zlib対応がなんかいまいちうまく行かない。
gzprintfが、printfじゃなくてfprintf相当というのが結構面倒(^^;;。

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

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

# 悔しい・・・。なにより、実現できると思ったことが実現できないことが。

897 :名無し娘。 ◆vP.bOZFQ :01/08/27 02:11 ID:Km.fZ5BI
新スレあるけど、報告だけこちらに。

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

大きなことは、#ifdef GSTR2。

その他は、x-gzipのこと、tm_nowのこと、x-sjisのこと。

898 :デフォルトの名無しさん :01/08/27 02:13 ID:pckFEAaY
>>896
printf 全置き換えでだめだったの?

899 :369 ◆3XTuRnAc :01/08/27 02:22 ID:xXHglqmc
>>898
あ、それやってないです。
ちょうどread12が公開された見たいだし、もう一度やってみようかな・・・。

900 :デフォルトの名無しさん :01/08/27 02:23 ID:KshZOEYc
>>896
やったところまで Wiki にでも上げといたらどう?
誰か跡継いでくれるかもよ。

901 :デフォルトの名無しさん :01/08/27 02:24 ID:yw5i/z86
>>886
x-sjisは変わらんが、Shift-Jisは変えられる様だ。
3.01jaを引っ張り出して来て試してみた。

902 :369 ◆3XTuRnAc :01/08/27 02:26 ID:xXHglqmc
>娘。さん
read12.c、バグがあります。

850行目
char *zz_GetString(char *dst,char tgt)

char *zz_GetString(char *dst,char *tgt)

861行目
if(kk[0] == tgt)

if(kk[0] == tgt[0])

じゃないですか?

903 :369 ◆3XTuRnAc :01/08/27 02:28 ID:xXHglqmc
てことで、その修正入れたのを

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

としてコピーしておきました。

904 :デフォルトの名無しさん :01/08/27 02:30 ID:2NFCZnYc
新スレに移行された方がよいのでは?
プログラマが2chを救う!?2
http://piza2.2ch.net/test/read.cgi?bbs=tech&key=998845501

905 :772じゃないけど :01/08/27 02:34 ID:0cm50H8s
もうちょっと詳しく書くとこんな感じになるかな?
----------------------------------------------------------------------
#include <stdarg.h>
#include <zlib.h>
  :
/* 本当はグローバル変数を増やさない方がいいんだけど...
  printf()があちこちにあるので許してちょ */
typedef int (*zz_printf_t)(gzFile *, cont char *, ...);
static gzFile *zz_fptr = (gzFile *)stdout;
static zz_printf_t zz_printf = (zz_printf_t)fprintf;
  :
  :
if (gzip_flag) {
   :
 fflush(stdout);
 zz_fptr = gzdopen(1, "w");
 zz_printf = gzprintf;
 gzsetparams(zz_fptr, Z_BEST_COMRESSION, Z_DEFAULT_STRATEGY);
   :
}
  :
if (gzip_flag) {
   :
 gzclose(zz_gzfile);
}
----------------------------------------------------------------------
で ソース中の printf("fmt", ...) を (*zz_printf)(zz_fptr, "fmt", ...) に
書き換えて Makefileで
  LDFLAGS = -s -lz
を追加 あっ"-s"ってのは個人的な趣味なんで気に入らなければ外してもいいです

906 :デフォルトの名無しさん :01/08/27 02:35 ID:yw5i/z86
>>886 >>901
ごめん、Shift_JISだった。
表示コードを変えられなかったが、sjisだと認識するんならOKだし、
不明なコードなら変更できるんだからかまわないんでは。

907 :デフォルトの名無しさん :01/08/27 02:36 ID:pckFEAaY
>>905
そうそう、そんな感じで。

908 :デフォルトの名無しさん :01/08/27 02:38 ID:IuzteUCY
>>906
確か変えられなくて困った記憶があるんだが…記憶違いかも。
確かめてみる。

909 :デフォルトの名無しさん :01/08/27 02:45 ID:vN9r/JlA
>>905
 (*zz_printf)(zz_fptr, "fmt", ...)

 zz_printf(zz_fptr,"fmt", ...)
の方が良いと思われ。(ANSI C には反しない。)
後で元に戻すとき楽だと思う。

910 :デフォルトの名無しさん :01/08/27 02:48 ID:pckFEAaY
てか、cpp では

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

みたいに可変引数できるんだっけ?

911 :デフォルトの名無しさん :01/08/27 02:51 ID:oVJMiQ2Y
#define printf(format, args...) zz_printf(zz_fptr, format, ## args)
ってのでGNU Cの拡張で「だけ」OKだったはず。

912 :デフォルトの名無しさん :01/08/27 02:51 ID:yw5i/z86
>>908
EUCなのに、x-sjisとかShift_JISとか書いてあって困ったんではないの。
間違ってShift-Jisってやったら変えられたからね。

913 :デフォルトの名無しさん :01/08/27 02:52 ID:oVJMiQ2Y
http://www.asahi-net.or.jp/~wg5k-ickw/html/online/gcc-2.8.1/gcc_3.html
詳しくはここいらの「可変個の引数をもつマクロ」を見れ

914 :デフォルトの名無しさん :01/08/27 02:53 ID:pckFEAaY
ま、んなことせんでも引数1〜10個まで#defineすればいっか

915 :908 :01/08/27 02:54 ID:IuzteUCY
すまん完全に勘違いしてた。
文字化けするのはネスケ2だった。

916 :デフォルトの名無しさん :01/08/27 02:55 ID:IuzteUCY
ネスケ2でShift_JISを指定してもEncodingがWesternに固定されて
変えられない。もちろん文書はシフトJIS。
2.02で確認。

917 :デフォルトの名無しさん :01/08/27 02:58 ID:yw5i/z86
>>915
さすがに、ネスケ2はそこらに残してない。

918 :デフォルトの名無しさん :01/08/27 03:00 ID:5VdVXYrU
いまベンチャー板にひろゆき(本物)いた。
http://yasai.2ch.net/test/read.cgi?bbs=venture&key=998402480

919 :デフォルトの名無しさん :01/08/27 03:04 ID:pckFEAaY
ひろゆきが助けてくださいと言って
西さん一晩考えるって・・・

920 :- :01/08/27 03:29 ID:q7WWiv5M
全鯖に read.cgi ver5.02 入ってますな。夜勤さん、おつかれさま・・・

921 :デフォルトの名無しさん :01/08/27 04:01 ID:vN9r/JlA
実況防止機能(素早い reload を無視)
http://cocoa.2ch.net/test/read.cgi?bbs=unix&key=998764722&st=490

922 :らいがー。 :01/08/27 04:30 ID:R/rjVC1g
あなた達かっこいいよ・・・。

923 :デフォルトの名無しさん :01/08/27 23:40 ID:bJ23bC3M
/*<ctype.h>等とかぶってたら、要置換*/
#definefalse(0)
#definetrue(!false)
#define_C_(1<<0)/*datチェック用区切り文字等*/
#define_U_(1<<1)/*URLに使う文字*/
#define_S_(1<<2)/*SJIS1バイト目=<br>タグ直前の空白が削除可かを適当に判定*/

//#defineisCheck(c)(flagtable[(unsigned char)(c)] & _C_)
#defineisCheck(c)(flagtable[/*(unsigned char)*/(c)] & _C_)
#defineisSJIS1(c)(flagtable[(unsigned char)(c)] & _S_)
#definehrefStop(c)(!(flagtable[(unsigned char)(c)] & _U_))

#define_0____(1<<0)
#define__1___(1<<1)
#define___2__(1<<2)
#define____3_(1<<3)
#define_____4(1<<4)

#define______(0)
#define_01___(_0____|__1___|0)
#define__1_3_(__1___|____3_|0)
#define___23_(___2__|____3_|0)
#define_0_23_(_0____|___2__|____3_|0)


char flagtable[256] = {
_0____,______,______,______,______,______,______,______,//00-07
______,______,______,______,______,______,______,______,//08-0F
______,______,______,______,______,______,______,______,//10-17
______,______,______,______,______,______,______,______,//18-1F
_0____,__1___,______,__1___,__1___,__1___,_01___,______,//20-27 !"#$%&'
______,______,__1___,__1___,_01___,__1___,__1___,__1___,//28-2F()*+,-./
__1___,__1___,__1___,__1___,__1___,__1___,__1___,__1___,//30-3701234567
__1___,__1___,__1___,__1___,_0____,__1___,______,__1___,//38-3F89:;<=>?
__1_3_,__1_3_,__1_3_,__1_3_,__1_3_,__1_3_,__1_3_,__1_3_,//40-47@ABCDEFG
__1_3_,__1_3_,__1_3_,__1_3_,__1_3_,__1_3_,__1_3_,__1_3_,//48-4FHIJKLMNO
__1_3_,__1_3_,__1_3_,__1_3_,__1_3_,__1_3_,__1_3_,__1_3_,//50-57PQRSTUVW
__1_3_,__1_3_,__1_3_,__1_3_,__1_3_,__1_3_,__1_3_,__1_3_,//58-5FXYZ[\]^_
__1_3_,__1_3_,__1_3_,__1_3_,__1_3_,__1_3_,__1_3_,__1_3_,//60-67`abcdefg
__1_3_,__1_3_,__1_3_,__1_3_,__1_3_,__1_3_,__1_3_,__1_3_,//68-6Fhijklmno
__1_3_,__1_3_,__1_3_,__1_3_,__1_3_,__1_3_,__1_3_,__1_3_,//70-77pqrstuvw
__1_3_,__1_3_,__1_3_,__1_3_,__1_3_,__1_3_,__1_3_,______,//78-7Fxyz{|}~
____3_,_0_23_,___23_,___23_,___23_,___23_,___23_,___23_,//80-87
___23_,___23_,___23_,___23_,___23_,___23_,___23_,___23_,//88-8F
___23_,___23_,___23_,___23_,___23_,___23_,___23_,___23_,//90-97
___23_,___23_,___23_,___23_,___23_,___23_,___23_,___23_,//98-9F
____3_,____3_,____3_,____3_,____3_,____3_,____3_,____3_,//A0-A7
____3_,____3_,____3_,____3_,____3_,____3_,____3_,____3_,//A8-AF
____3_,____3_,____3_,____3_,____3_,____3_,____3_,____3_,//B0-B7
____3_,____3_,____3_,____3_,____3_,____3_,____3_,____3_,//B8-BF
____3_,____3_,____3_,____3_,____3_,____3_,____3_,____3_,//C0-C7
____3_,____3_,____3_,____3_,____3_,____3_,____3_,____3_,//C8-CF
____3_,____3_,____3_,____3_,____3_,____3_,____3_,____3_,//D0-D7
____3_,____3_,____3_,____3_,____3_,____3_,____3_,____3_,//D8-DF
____3_,___23_,___23_,___23_,___23_,___23_,___23_,___23_,//E0-E7
___23_,___23_,___23_,___23_,___23_,___23_,___23_,___23_,//E8-EF
___23_,___23_,___23_,___23_,___23_,___23_,___23_,___23_,//F0-F7
___23_,___23_,___23_,___23_,___23_,______,______,______,//F8-FF
};

924 :デフォルトの名無しさん :01/08/27 23:41 ID:bJ23bC3M
typedef struct {//class...
char **buffers;//csvの要素
int rest;//残りのバッファサイズ・・厳密には判定してないので、数バイトは余裕が欲しい
int isTeri;//
} ressplitter;

/*
初期化
toparrayポインタ配列のアドレス
buffコピー先のバッファの先頭
bufsize厳密には判定してないので、数バイトは余裕が欲しい
*/
void ressplitter_init(ressplitter *This, char **toparray, char *buff, int bufsize/*, bool isteri*/)
{
This->buffers = toparray;
This->rest = bufsize;
This->isTeri = true;//レス1をstrstr("<>")した結果を設定すべき
*This->buffers = buff;
}

/*
findSplitterの代わり
レスを全走査するが、コピーと変換(と削除)を同時に行う
pコピー前のレス(BigBuffer内の1レス)
istagcut<a href=...>と</a>をcutするか
Return次のpの先頭
non-TYPE_TERIなdatには,"<>"は含まれないはずなので、#ifdef TYPE_TERI は略
*/
const char *ressplitter_split(ressplitter *This, const char *p, int istagcut)
{
char *bufp = *This->buffers;
int bufrest = This->rest;
while (--bufrest > 0) {
int ch = *(unsigned char *)p;
if (isCheck(ch)) {
switch (ch) {
case ' ':
//無意味な空白は1つだけにする
while (*(p+1) == ' ')
p++;
if (*(p+1) != '<')
break;
if (*(p+2) == '>') {
if (bufp == *This->buffers)//名前欄が半角空白の場合
*bufp++ = ' ';
p += 3;
goto Teri_Break;
}

if (memcmp(p, " <br> ", 6) == 0) {
if (bufp != *This->buffers && isSJIS1(*(bufp-1))) {
*bufp++ = ' ';
}
memcpy(bufp, "<br>", 4);
p += 6;
bufp += 4;
continue;
}
break;

925 :デフォルトの名無しさん :01/08/27 23:42 ID:bJ23bC3M
case '<'://醜いが
if (*(p+1) == '>') {
//This->isTeri = true;
p += 2;
goto Teri_Break;
}
if (istagcut) {
//if (*(p+1) != 'b' || *(p+2) != 'r') {
if ((*(p+1) == 'a' && *(p+2) == ' ') || (*(p+1) == '/' && *(p+2) == 'a')) {
while (*p != '>') {//strchr(p, '>')
if (*p == '\0')
goto Break;
++p;
}
++p;
continue;
}
}
break;
case '&':
if (memcmp(p, "&", 4) == 0) {
if (*(p + 4) != ';')
p += 4 - 1;
}
break;
#ifndefTYPE_TERI
case 0x81://*"@"
//if (!This->isTeri) {
if (memcmp(p, "@`", 4) == 0) {
ch = ',';
p += 4 - 1;
}
//}
break;
case ',':
//if (!This->isTeri) {
p++;
goto Break;
//}
//break;
#endif
case '\0':
goto Break;
//break;
default:
break;
}
}
*bufp++ = ch;
p++;
}

926 :デフォルトの名無しさん :01/08/27 23:43 ID:bJ23bC3M
Teri_Break:
//名前欄に','が入っている時にsplitをミスるので、見誤る可能性があるので、
//This->isTeri = true;
Break:
*bufp++ = '\0';
This->rest -= bufp - *This->buffers;
*++This->buffers = bufp;

//区切り末の空白を削除
if (*p == ' ')
++p;
return p;
}

void splitting_copy(char **s, char *bufp, const char *p, int size)
{
ressplitter res;
ressplitter_init(&res, s, bufp, size);

p = ressplitter_split(&res, p, false);//name
p = ressplitter_split(&res, p, false);//mail
p = ressplitter_split(&res, p, false);//date
p = ressplitter_split(&res, p, LINKTAGCUT && IsBusy2ch());//text
p = ressplitter_split(&res, p, false);//title
//IsBusy2ch()を何度も呼ぶのは大きな無駄
}

927 :デフォルトの名無しさん :01/08/27 23:43 ID:bJ23bC3M
その他に直す部分は、
先頭のほうに、
#definefalse(0)
#definetrue(!false)
#defineLINKTAGCUTtrue

out_html1()(369-)
- strncpy(p, BigLine[0], 1024);
- p[1024 - 1] = '\0';
- if (!*p)
- return 1;
- res_split(s, p);
+ splitting_copy(s, p, BigLine[0], sizeof(p) - 20);
+ if (!*p)
+ return 1;

out_html()(404-)
- strncpy(p, BigLine[0], 1024);
- p[1024 - 1] = '\0';
- if (!*p)
- return 1;
- res_split(s, p);
+ splitting_copy(s, p, BigLine[0], sizeof(p) - 20);
+ if (!*p)
+ return 1;

out_html()(421-)
- strncpy(p, BigLine[line], 1024);
- p[1024 - 1] = '\0';
- if (!*p)
- return 1;
- res_split(s, p);
+ splitting_copy(s, p, BigLine[line], sizeof(p) - 20);
+ if (!*p)
+ return 1;

hrefStop()
マクロで定義しなおしているので、
#if0
#endif
ででもはさんでくれ(コンパイルエラーが出る)。
res_split()とfindSplitter()も必要なくなるが、エラーにはならないので。

928 :デフォルトの名無しさん :01/08/28 00:19 ID:gWXKzR9.
わかると思うけど、
>>925
 case '&':
の下は、当然、
  if (memcmp(p, "&amp", 4) == 0) {
ね。

929 :デフォルトの名無しさん :01/08/29 22:04 ID:eQiT7HbI
BadAccessってさ、なんでif文を切ってるの?
コンパイルした時にダイナミックステップが多くなるじゃん。
caseにしろよ。その方が高速化するぞ。

930 :デフォルトの名無しさん :01/08/29 22:38 ID:6wtO5bLA
>>929
文字列比較にcase?

231KB
新着レスの表示

スレッドリストへ戻る 全部 前100 次100 最新50

0ch BBS 2004-10-30