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

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

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の全スキャンになるので、
一括で、行とフィールドに分割したほうが良いように思う。

231KB
新着レスの表示

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

0ch BBS 2004-10-30