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

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

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

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

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

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

オヒオヒ

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

>382
かけていいでしょ。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

うーむ、板違いか…。

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


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

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

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

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

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

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

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

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

でよいと思われ

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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



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

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

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

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



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

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

   のために・・・・・


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

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

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

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

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


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

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

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


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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

あと

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

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

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

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

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

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

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

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

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

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

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

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

RFC 2068

3.3 Date/Time Formats

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

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

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

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

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

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

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

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

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

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

RFC 2616

3.3 Date/Time Formats
3.3.1 Full Date

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

ここになりますか。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

標準関数侮れず

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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


他の板の住人へ

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    default:
      pin++;
      break;
  }

}

wend:
/*続き*/;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

だったりして。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

◆Makefile
 >>426

◆&(amp)問題
 >>596

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

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

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

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

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

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

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

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

>>624

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

ver5.02って?

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

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

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

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

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

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

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

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

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

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

返戻値が逆っぽいです。

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

なんでだろう?

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

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

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

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

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

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

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

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

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

3バイト節約(ワラ

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


だってよ。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

aHR0cDovL21hbmtvbWFua29tYW5rby52aXJ0dWFsYXZlLm5ldC9iYnMudHh0

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

これで安泰

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

情報お願いします。

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

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

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

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

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

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

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

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

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

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

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

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

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

とはいえ788に同意

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

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

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

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

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

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

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

<body>

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

そうでした。>>515です

>>806

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

コピペです。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

大きなことは、#ifdef GSTR2。

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

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

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

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

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

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

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

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

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

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

じゃないですか?

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

void splitting_copy(char **s, char *bufp, const char *p, int size)
{
ressplitter res;
ressplitter_init(&res, s, bufp, size);

p = ressplitter_split(&res, p, false);//name
p = ressplitter_split(&res, p, false);//mail
p = ressplitter_split(&res, p, false);//date
p = ressplitter_split(&res, p, LINKTAGCUT && IsBusy2ch());//text
p = ressplitter_split(&res, p, false);//title
//IsBusy2ch()を何度も呼ぶのは大きな無駄
}

927 :デフォルトの名無しさん :01/08/27 23:43 ID:bJ23bC3M
その他に直す部分は、
先頭のほうに、
#definefalse(0)
#definetrue(!false)
#defineLINKTAGCUTtrue

out_html1()(369-)
- strncpy(p, BigLine[0], 1024);
- p[1024 - 1] = '\0';
- if (!*p)
- return 1;
- res_split(s, p);
+ splitting_copy(s, p, BigLine[0], sizeof(p) - 20);
+ if (!*p)
+ return 1;

out_html()(404-)
- strncpy(p, BigLine[0], 1024);
- p[1024 - 1] = '\0';
- if (!*p)
- return 1;
- res_split(s, p);
+ splitting_copy(s, p, BigLine[0], sizeof(p) - 20);
+ if (!*p)
+ return 1;

out_html()(421-)
- strncpy(p, BigLine[line], 1024);
- p[1024 - 1] = '\0';
- if (!*p)
- return 1;
- res_split(s, p);
+ splitting_copy(s, p, BigLine[line], sizeof(p) - 20);
+ if (!*p)
+ return 1;

hrefStop()
マクロで定義しなおしているので、
#if0
#endif
ででもはさんでくれ(コンパイルエラーが出る)。
res_split()とfindSplitter()も必要なくなるが、エラーにはならないので。

928 :デフォルトの名無しさん :01/08/28 00:19 ID:gWXKzR9.
わかると思うけど、
>>925
 case '&':
の下は、当然、
  if (memcmp(p, "&amp", 4) == 0) {
ね。

929 :デフォルトの名無しさん :01/08/29 22:04 ID:eQiT7HbI
BadAccessってさ、なんでif文を切ってるの?
コンパイルした時にダイナミックステップが多くなるじゃん。
caseにしろよ。その方が高速化するぞ。

930 :デフォルトの名無しさん :01/08/29 22:38 ID:6wtO5bLA
>>929
文字列比較にcase?

231KB
新着レスの表示

スレッドリストへ戻る 全部 前100 次100 最新50

0ch BBS 2004-10-30