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

read.cgi改良スレッド

723 :(゚Д゚)ハァ?スレ発起人@批判要望板 :01/09/07 00:29
はじめましてー
詳しく read.c のソースは読んでないのですが

/* SJIS1バイト目=<br>タグ直前の空白が削除可かを適当に判定 */

IE等では>>722のようなことになるので,
datファイルの<br>前の空白だけでなく,
datファイルの各行末にある<>前の空白も
削除可能かどうか判定されると完璧ではないかと思います.

724 :♯6411 :01/09/07 00:32
>>720
> 今までは時間に追われてましたけど、これからは効率化だけ見ていくべきだと思います。
同意。内部的には、効率化・安全化を進める
べきなんでは〜と。
漏れのコードは安全化より重要な「自己満足化」が多いのだが(w

> あと、「こういう機能はいかがですか?」と、夜勤さんなどに確認をとるというのがもっとも効率的だと思います。
漏れは夜勤さんハァハァではないので追いかけ切れんす。
どなたか、この点のフォローをしていただければ。

>>721
「読める」人間こそ、取りまとめに必要ではないかな?
漏れは「掻けるけど嫁ない」人間なので(w

さしあたっては、ブランチを設けることを提案。

725 :709 :01/09/07 00:54
反論は煽り系のキャラで逝ってみる

>>716
>あ、「投稿日」という文字列を削る話?
>ぞぬで見てたから気づかなかった。
関連スレや意見を読んだりすれば、
どういう状態になっているか、板を開いてみる程度はするのが普通。
現状を認識しようとする意志が全くないわけね。
現状を把握せずに機能を提案できるなんて、すばらしい。

>俺的な考えでは、局所的に見たらバイト数の増加に
>繋がれど、大局的に見たらリクエスト数の軽減に
>繋がるのでは? と考えて試験的に導入。
試験的に導入した割に、完全に書き換えてしまうわけね。
戻せるとはいえ。「俺的な考え」を基に。
で、コンパイルが通らなくなったりしても、
尻拭いは後回しにして、結局他の人がすることになるわけだ。

>この手の仕様に関しては、いくら思考実験を繰り返しても
>結局のところ実地テストなしには最終的な評価が
>出せないと思うが、いかが?
その通り。だから?
簡単にテストができるようにしておけばいいものを、
まるで仕様が確定したかのように扱うのはどうかと思うが、いかが?

>>717
>個人的な意見では、1バイトでも削る作業より
>他にすることはまだある。
個人的な意見なんでしょ。他人に押し付けないでよね。
ま、ある程度は同意するけど。
そもそも「1バイトを削る」自体が夜勤さんの言葉からの引用だけど、
それも読んでないんだろうね。

>「とりあえず実装してみた、評価頼む」は
>大いにありなのだと考える。
その通りだね。
普通は評価前に仕様確定するようなやり方はしないけどね。

726 :709 :01/09/07 00:54
あ、俺はリーダーに最も適任なのは夜勤さんだけど、忙しいだろうし
それ以外では名無し娘。 ◆vP.bOZFQさんが適任だと思うね。
関連スレのチェックもしているし、重視すべき事項を一番わかっていると思う。
直接コーディングなんかできなくても、
機能追加の方向性やスケジュール等を把握して示してくれれば充分。
以前から、要望やらをまとめたりしてくれてたしね。

既に実装済みの機能や不具合の修正もいくつもあるのに、
(zlib等の他にも、ぱっと見で>>687とか>>559とか。>>606は未?)
fix版が出せないのは悲しいからね。

727 :名無し娘。 ◆vP.bOZFQ :01/09/07 01:11
>>724 >>726
ボランティアの作業で、仕切る人間が口だけじゃまずいと思いますです。
あくまでコーディングをする人にすべての権利があり、それを承知の上で
周りの人もそれぞれの意見をいう。。。という共通意識が何より大切かと。
ですから私が仕切るわけにはいきませんです。

夜勤さんがread.cgiにどれくらいの時間を割けるのかは、わかりません。
ですがやはり、いくらソースが長くなっても、オリジナルのソースと改良案は
(部分毎に)並行して提示しないと、採用には抵抗があると思います。

そろそろ、replace系の関数を最適化する方が先なのかもしれませんね。

728 :♯6411 :01/09/07 01:13
マターリと逝くよ…

> 現状を認識しようとする意志が全くないわけね。
> 現状を把握せずに機能を提案できるなんて、すばらしい。

オナーニだったんだよ、所詮。


> 試験的に導入した割に、完全に書き換えてしまうわけね。
> 戻せるとはいえ。「俺的な考え」を基に。
> で、コンパイルが通らなくなったりしても、
> 尻拭いは後回しにして、結局他の人がすることになるわけだ。

同意。自分じゃ条件外すことはめったにしないしのー。


> 簡単にテストができるようにしておけばいいものを、
> まるで仕様が確定したかのように扱うのはどうかと思うが、いかが?

放置されてて誰も構ってくれないので、
(うん、外せといわれたら即座に外せはするんだけど)
外す方法を吟味せずにcommitした漏れはダメダメだ。


> 個人的な意見なんでしょ。他人に押し付けないでよね。

オナーニなんだ、言わせてくれよう。


> そもそも「1バイトを削る」自体が夜勤さんの言葉からの引用だけど、
> それも読んでないんだろうね。

読んだ記憶はあるんだが、俺解釈してた。
字面通りに受け取らないとダメねー


> 普通は評価前に仕様確定するようなやり方はしないけどね。

<a name=>の件は、正直、すまなかった。


…漏れはもともと煽りキャラ持ってないんだが、
マターリキャラも持ってないので、疲れた…
(引用ばかりすると、十分煽りになりうるんだが)
…疲れたので、今晩はもう逝くよ…探さないでくれ…鬱だ氏のう

729 :音楽侍 ◆NtVkSITE :01/09/07 01:28
>>727
>ボランティアの作業で、仕切る人間が口だけじゃまずいと思いますです。

ちょっと違うです。むしろ、全体を見られる人はコーディングしない方がいいです。
どうしても自分が動くと、いろいろ出ます。読めるけどかけない人の方が適任かと。

いろんなプロジェクト見てくださいです。
リーダーやマネジャーがコーディングを始めたプロジェクトは大抵納期間に合いませんです。
品質管理もままなりませんです。

>>728
相談と報告のキモチが良薬かと・・・

730 :デフォルトの名無しさん :01/09/07 01:34
とりあえず、既出の不具合で未修正のもの。
キャッシュであぼーんされたレスが見える?(詳細不明)>>441
PATH_INFO時に間違えるとレス1しか表示されない>>624
かちゅ〜しゃ規制>>670
設定ファイル読みこみ時のオーバーフロー>>674
行末の空白削除>>723
それ以前は>>397だけど、どれだけ残ってるかな・・

その他、今気がついたもの。
批判要望板で最近よく出てくる
「このスレッド大きすぎます」への暫定対処として、
datファイルの大きさがある程度(最大値-16K位)を超えたら、
「もうすぐ読めなくなります。新スレの準備を。」の警告があれば親切かも。

あと、できるだけ設定ファイルから読みこめるようにして、
リメイクは不要にした方がよさそうだね。

731 :デフォルトの名無しさん :01/09/07 02:19
>>723さんは
「スクリプト関連要望統合スレッド 」
http://teri.2ch.net/test/read.cgi?bbs=accuse&key=994071363
の人ですね。

732 :730 :01/09/07 04:48
改めてソースを見たら、既に>>674は修正されてた。氏にます。
他にも修正済みがあるかも。

733 :デフォルトの名無しさん :01/09/07 08:33
これまで行った変更点をすべて列挙して、それぞれの目的と変更量とそのリスク、
転送量削減に対する効果、その他の効果などを一覧にまとめてテストケース作って
すべて再評価した上で改めて内容を吟味したらいかが?

テストサーバに置いてここの住人にテスト手伝ってもらうとかはできるっしょ。
仕様書はソースコード、って状況はやっぱりPGの自己満足モードで終わっちゃうよう。

734 :デフォルトの名無しさん :01/09/07 10:44
read.cgiに加えられている変更点は単純に2つに分類できる。
A)転送量・負荷低減のために行われるもの
B)機能を追加してより使いやすくするもの
そして、それぞれの変更点について、
1)導入する
2)導入しない
3)時間帯によって導入する
の3つの選択肢がある。
この3つのうち、1)か2)かを選択するようにしておくのは
#ifdefで切り分けるだけなので比較的簡単だが、
3)の形式は#defineで導入し、さらに時刻によって
処理を変化させなければいけないので、1)2)よりは面倒になる。
しかし、転送量や負荷の少ない時間帯に比較テストできるため、
「試しにやってみて結果を知りたい」場合に有効になる。
試した結果が、時間制限付にするか完全導入するかの判断材料になる。

というわけで、「この機能は時間制限つきで導入してみよう」という指針が
示されれば、必要な変更を施して仮導入してもよさそうな気がする。
さらに、外部ファイルで変更可能にしておけばさらに良かも。

735 :デフォルトの名無しさん :01/09/07 10:44
ブランチを設けるのは大賛成。
Linuxみたく、安定版と開発版とで仕切る人が別になるのも手だろう。
従事するメンバーを分けるほど人数が多いわけじゃないが。

当面、安定版は現行のVer5.12と同等の機能部を抽出し
不具合を修正したものをベースに、ある程度の機能追加をしたものになると思う。
「ある程度」がどの程度なのかは、まとめ役の人の裁量に従いたいが、
-DZLIBは以前から作ってある
-DCHECK_MOD_GZIPはあった方がいい
-DUSE_SETTING_FILEは柔軟性のために必要
等々、結構難しそう。
さらに、-DZLIB,-DUSE_MMAP等の「見栄えは変わらないが負荷低減を狙う機能」は、
早目に安定版にいれて、確定させてしまいたいところだ。

また、増えすぎた#ifdefの中で、Ver5.10以前の導入で問題出ていないものは
条件をはずしてしまっていいと思う。
個人的には-DLASTMOD,-DNEWBA,-DGSTR2は全然問題なし、
-DPREVENTRELOADも#ifdef無しで構わないと思うが、
意志決定はまとめ役の人の判断に任せるのが一番。
BadAccessの旧版にあるAccept-UAのリストなどは、
コメントとして残しておくのがいいかもしれない。
(気分的には、BadAccess中のReadOnlyなローカル配列はstaticにしたいなー)

あ、娘。さんは「オリジナルも残したほうが」と言ってるな。
だったら、採用をほぼ決定したものに対しては、
同じ1種類の#ifdefにしてしまったら、少しはわかりやすくなるかも。

736 :デフォルトの名無しさん :01/09/07 10:45
以下は名無し娘。さんのお手伝い・・・のつもり。

>#ifdef の字面と内容が噛み合わない部分

-DCUTRESLINKは、本当に#define名と内容が一致していない。
変更部のメインは最適化で、リンクの削除はオマケ程度な感じ。
方向としては、
・mmapがSHARED & READONLYで使えるようにBigBufferを読みこみだけに
・ファイル全体やレス全体を走査する回数を極力減らす
・そのために変換や空白削除、http://のリンク等を全て同時に行う
といったところ。
ただ、そのことにより内部で保持するデータ形式が変わってしまい、
他の部分への影響も出ている。
名目通りのCUTRESLINKに相当するのは大きなswitch文の一箇所だけで
全体のdefine名は、つけ直すならBUFFER_READONLYとか
NO_RES_NUL_TERMINATEとか、そんな感じに近いと思う。

>replace系の関数を最適化する方が

上とも関連するけど、現在、-DCUTRESLINKを指定すると
replace系は全く使われない。
現行のVer5.12等では、hlinkReplaceの中でdoReplaceが使われているが、
これもressplitter_splitの内部に吸収されている。
ソース中ではTYPE_TERIが定義されていない場合にsomeReplaceが呼ばれるが、
同等の変換は既にressplitter_split内部で為されているので、本来必要ない。

というわけで、-DCUTRESLINK(内容は違う)を採用する方針でいくなら、
replace系には目を向けなくてもいいと思う。
あえて不安材料を挙げれば、Ver5.1xでの稼動実績があるのが基本部だけで、
保持データ系式の変更やhttp://リンク、mmapとの併用、
これらでの実績が乏しい点があるが、今のところ
まともなdatを低負荷時に読んでいる範囲では、問題は出ていない。

逆に、-DCUTRESLINKを採用しない/条件等によっては機能をoffにしたい、
となる可能性があるなら、replace系の最適化には意味がある。
その辺の判断と指示はまとめ役の人にお任せしたい。

737 :♯6411 :01/09/07 12:17
>>734
細分してみた。

> A)転送量・負荷低減のために行われるもの

* 外部的に機能がほぼ変わらないもの

A0) 安全性の向上のみを目的としたもの(いわゆるバグフィクス)
A1) 転送量の低減を狙っているもの
A2) 転送量以外の負荷低減
A3) 単なる設計・構造・インタフェイス変更

> B)機能を追加してより使いやすくするもの

B0) 従来仕様と相反しない、独立した機能
B1) 従来仕様の不備を補完するもの
B2) 従来仕様の不備を再定義するもの
B3) 従来仕様と置き換わるもの

フォローきぼんぬ

738 :♯6411 :01/09/07 12:20
>>735
PREVENTRELOADは、まだなんとなく
潜在的な問題をはらんでるような気もしない
でもないんだか、杞憂だろうか?

739 :♯6411 :01/09/07 12:23
>>736
CUTRESLINKを再評価するのであれば、
名前付けなおしてさらに細分化するのがよろしかと。

あと、従来とまったく置き換わってしまうものに
関しては、モジュールを切り分けることを
前向きに検討した方がいい。

740 :デフォルトの名無しさん :01/09/07 12:33
>>730おつかれ。
ところで、提案していた

>批判要望板で最近よく出てくる
>「このスレッド大きすぎます」への暫定対処として、
>datファイルの大きさがある程度(最大値-16K位)を超えたら、
>「もうすぐ読めなくなります。新スレの準備を。」の警告があれば親切かも。

はたしかに良いな。

是非搭載してほしいところだが、夜勤さんは嫌がるだろうか?
(read.cgiの負荷増大につながるため)

741 :デフォルトの名無しさん :01/09/07 12:33
今CHUNKが強制になってる感じ?
#ifdefでCHUNKにならない従来型UIにする選択肢なくなってない?

742 :723 :01/09/07 13:22
>>731
そうです。

743 :♯6411 :01/09/07 15:34
ブランチ案

○リリースには明示的にリビジョンを設ける
ex) 5.12
今回は、どの辺から始まってるか微妙なので、
-r4.99あたりで始めるといいのでは。
夜勤さんから、本番に適用したバージョンを
もらい受けて、-r5.xx などとしてcommit
以降、Revision 4.99 が存在するとして説明。

○リリース候補(4.9.x.x)
プロジェクトマスター
(あるいはマスターから委任された人間)
のみがcommitできるブランチ。
cvs tag -b RC-4-99 のようにつくっておく。

○ワーキングブランチ(4.9.x.x.y.y)
今までheadでやってたものは、みなブランチの中で
作業を行う。
cvs co -r RC4-99 bbs で取り出したブランチに、
cvs tag -b HEAD-4-99 のようにつくっておく。

○プロジェクトマスターの役目
・適宜ワーキングを吟味し、RCに取り込み、commit
・夜勤さんの作業に追従
・新しいリリースが出たら、ブランチを作成。

○検討事項
ワーキングブランチは、
改造系統毎に分ける、あるいは
担当毎に分ける方がいいかもしれない。


ブランチの作成は、サーバ持ってる aki さん
あたりにやってもらえると早いんだけど、
さしあたっては名無し娘。さんがやってもらえれば。
(ローカルで念入りに実験した方がいいかも)
漏れがやってもいいです。

744 :♯6411 :01/09/07 15:37
>>743 最新リリースの入手に手間取るようだったら、
さしあたっては8/28 4:00(GMT)あたりのものを
「仮リリース」として据えるといいかも

745 :音楽侍 ◆NtVkSITE :01/09/07 15:54
検証班の作業も工程に入れて置いてください(^_^;)

746 :名無し娘。 ◆vP.bOZFQ :01/09/07 17:32
ver5.12(夜勤さん版)のひとつ前に実動してたのって、verいくつでしたっけ。。。

昨日ちょっとだけ、試しにteriに入ってるread.cgiをいじめてみたら、zz_xx の
size制限がかなり厳しくなってるようで。zz_xx[20]になってるのかな。
たとえば http://piza2.2ch.net/test/read.cgi?bbs="></a> みたいなこと
やられると気持ち悪いからかもしれません。
こんな感じで、いろいろちょこちょこと夜勤さんが手直ししてくださってるのかも。

なんにせよ、一度夜勤さんにお出まし願った方がよさそうですね。
どのソースを元に、どういうとこから手をつけてくのがいいか。
などなど。

747 :デフォルトの名無しさん :01/09/07 17:56
>>746
> なんにせよ、一度夜勤さんにお出まし願った方がよさそうですね。
さんせい

748 :デフォルトの名無しさん :01/09/07 20:49
>>746-747 そうですよね とにかく運営サイドの誰かに度々ここに来てもらって
意思疎通ができないと こちら側だけで突っ走ってもタダの骨折り損になりそうな
気がしますし

749 :デフォルトの名無しさん :01/09/07 22:39
>746
http://piza2.2ch.net/test/read.cgi?b=tech&k=998845501
の段階で zz_GetString が変わって、キーの先頭1文字しか見なくなりました。
たとえば
http://piza2.2ch.net/test/read.cgi?board=tech&kiji=998997848
のように書いても正しく読めます。

750 :名無し娘。 ◆vP.bOZFQ :01/09/07 23:20
>>747-748
機会があればお願いしてきます。
>>749
1文字判定もできますが、たとえば zz_ky は今でも20文字(19文字)を
格納しています(判定後、切り出された文字列。たとえば key=998997848 の
"998997848"部分)。
http://piza2.2ch.net/test/read.cgi?bbs=123456789abcdefgh
をリクエストしたときのエラーメッセージ中、下部「過去ログ倉庫」の
リンク先を見ると、何となく何をやっているかがわかります。

751 :名無し娘。 ◆vP.bOZFQ :01/09/07 23:21
>>750
...hまでじゃだめじゃん。
http://piza2.2ch.net/test/read.cgi?bbs=123456789abcdefghijklmnop
やると。。。ね。

752 : ◆D69Zsbfg @夜勤 ★ :01/09/08 20:33
どうも、お世話になっています。 > みなさん。
明日の未明(今晩)あたりに、登場しまーす。
で、最新版を組み込もうかなぁと目論んでいます。

よろしくお願いします。

753 :音楽侍 ◆NtVkSITE :01/09/08 20:57
おつかれさまです。

754 :デフォルトの名無しさん :01/09/08 21:04
ヤター

755 :デフォルトの名無しさん :01/09/08 21:42
......となると どれを組み込んでもらうのか整理しておかないと

756 :デフォルトの名無しさん :01/09/08 21:45
#defineを消すだけでは外せない機能がありすぎ。やばいって。

757 :デフォルトの名無しさん :01/09/08 22:00
全然コード考えてないけど、この程度の条件分けは必要だろ。

/* "投稿日"を(時間帯によって)非表示にする */
#define CUT_DATE_STRING

/* テレホタイムに読みこめるdatの最大値 */
#define MAX_FILESIZE_BUSY

/* 大きすぎて読みこめなくなります */
#define CAUTION_FILESIZE

/* <a name=...> */
#define CREATE_NAME_ANCHOR

/* '<'や'&'の直前に、必要ならば空白をいれる */
#define CHARCHECK_STRICT

USE_PATHのサブに
#define OUTPUT_SUBBUCK
#define OUTPUT_INDEX

758 :名無し :01/09/08 22:05
さて、もうすぐ1000000000秒ですが、何か起きるでしょうか。
プログラムがこけたら笑えます。

もうすぐ1000000000秒 2chでもお祝いをしましょう
http://kaba.2ch.net/test/read.cgi?bbs=news&key=999927113&ls=50

759 :デフォルトの名無しさん :01/09/08 22:07
■ ひとあしお先に。
http://teri.2ch.net/test/read.cgi?bbs=accuse&key=1000000000

760 :デフォルトの名無しさん :01/09/08 22:10
大きな問題は2点。

1.<a name=>が外せない
→単純にサイズが増える(総リクエストが減る可能性はある)
2.CHUNK_ANCHORが外せない
→>>nnnでリンクされる範囲が不要に大きくなる

2は、REWRITE_HREF2で一応回避可能。

761 :デフォルトの名無しさん :01/09/08 22:32
>>757
さっさとやろうかと思うんだけど、

/* "投稿日"を(時間帯によって)非表示にする */
#define CUT_DATE_STRING
これ時間帯判定いるのかな? いらないんでないかと思うがどうかな。

いらないのならr2chhtml.hだけで完結するんだが。

762 :デフォルトの名無しさん :01/09/08 22:34
>で、最新版を組み込もうかなぁと目論んでいます。

何が何やらぐちゃぐちゃなのでマズいんではないかと..

763 :名無し娘。 ◆vP.bOZFQ :01/09/08 22:34
>>752
それまでに現状をまとめとかにゃいかんなぁ。
とはいっても、最新版の状況は私もさっぱり(汗
>>758
bbs.cgiがtimeを見ているのですが、これもちょっと心配(w
知りうる資料では、if(time > xx)な比較の仕方をしていないのでだいじょぶそう。

764 :デフォルトの名無しさん :01/09/08 22:40
正直、最新版を組みこむのはもう一日待ってもらったほうが無難。

それより、夜勤さんに質問しておいたほうがいいと思う。
・datの最大サイズは、時間帯によって可変にした方がいいのか
・「大きすぎます」に近付いたら警告を出していいか
・ツールの差分取得(の圧縮)は、.htaccessで対応してもらえるのか
・○○な機能は必要なのか
・○○な機能を組みこんで良いか
等々。

765 :名無し娘。 ◆vP.bOZFQ :01/09/08 22:41
まず、.datをmod_gzipでgzip圧縮して転送する件、直近の夜勤さん情報。
http://teri.2ch.net/test/read.cgi?bbs=accuse&key=996674822&st=267&to=268&nofirst=true

http://piza2.2ch.net/test/read.cgi?bbs=tech&key=981726544&st=856&to=859&nofirst=true
の意図は、.htaccessの記述によって mod_gzipを.datにも有効にしようという
ことのようですが、もしや .htaccess に記述しても無効なのでしょうか。
有効ならば、.htaccessに記述するだけで、.datも圧縮転送しますです。

もちろんread.cgiも.dat圧縮に対応しておけば("?raw=")差分転送とかできて
うれしい(^^

766 :名無し :01/09/08 22:43
夜勤さんの多忙なので、今日しかチャンスは無いのだと思う。

767 :761 :01/09/08 22:48
とりあえず時刻判定なしで

/* "投稿日:"を非表示にする */
#define CUT_DATE_STRING

commitしたっす

768 :デフォルトの名無しさん :01/09/08 22:51
>>763
>知りうる資料では、if(time > xx)な比較の仕方をしていないのでだいじょぶそう。
数値レベルで処理してるものは今回は関係ないよ。
文字列化するときに長さを9桁(以下)固定前提に処理しているものがあると
まずいってだけ。

769 :デフォルトの名無しさん :01/09/08 23:10
rewrite_href中、} else { をぶった切って、

#ifdefCHUNK_ANCHOR
 /* chunk仕様を生かすためのkludgeは以下に。 */
 mst = (st - 1) / CHUNK_NUM;
 mto = (to - 1) / CHUNK_NUM;

 if (mst == mto) {
  /* chunk範囲 */
  mst = 1 + CHUNK_NUM * mst;
  mto = CHUNK_NUM * (mto + 1);
 } else
#endif
 {
  /* chunkをまたぎそうなので、最小単位を。*/
  mst = st;
  mto = to;
 }

にすれば、CHUNK_ANCHORがdefineされていなくてもコンパイルは通るようになる

770 :デフォルトの名無しさん :01/09/08 23:12
mod_gzip使うのなら
    mod_gzip_item_include mime "text/.*"
でいいのではないかな? あとserver-parsedの問題は
    XBitHack full
とした上で .htmlファイルのパーミッションを"g+x"にしてもらえば
Last-Modified吐くようになるし

771 :デフォルトの名無しさん :01/09/08 23:22
>>769
commitした

772 :デフォルトの名無しさん :01/09/08 23:31
CREATE_NAME_ANCHORの変更点を捜索中・・・

r2chhtml.h内で
#ifdef CREATE_NAME_ANCHOR
 ・・・
#else
それぞれ、パラメータのlはそのまま無視するようにして、書きなおす
CUT_DATE_STRINGとの関係で、さらにややこしいか?
#define R2CH_HTML_RES_MAIL(n, l, m, nm, d, t)
#define R2CH_HTML_RES_NOMAIL(n, l, nm, d, t)
#define R2CH_HTML_RES_SAGE(n, l, nm, d, t)
#endif

rewrite_href()内の
 /* 新しい表現をブチ込む */
 if (isprinted(st) && isprinted(to))
 {
  d += sprintf(d,
   "<a href=#%u>",
   st);
 } else
を、
#ifdef CREATE_NAME_ANCHORで囲む

同、後半の
#ifdef USE_PATH

#ifdef CREATE_NAME_ANCHOR
に変える

必要なら、rewrite_href2()内の #ifdef USE_PATH で囲まれたif文の、
else までを #ifdef CREATE_NAME_ANCHORで囲む

out_html()内の、
pPrintfでフォーマットに
R2CH_HTML_RES_MAIL,R2CH_HTML_RES_NOMAIL,R2CH_HTML_RES_SAGEを用いている部分の、
全体を
#ifdef CREATE_NAME_ANCHOR
で囲み、
#else以下に、同じ内容でパラメータに2つあるlineNoを1つだけにしたものをつける
#endif

こんなもんだと思う。ただし、未検証(ごめん)

773 :名無し娘。 ◆vP.bOZFQ :01/09/08 23:39
>>768
それくらいは知ってますよん(^^
ちょっと知り得ないところからもtimeと比較する値が提供されているようだから、
念のためのお話。

774 :デフォルトの名無しさん :01/09/08 23:41
>>772
やってみる。ちょいお待ちを

775 :774 :01/09/09 00:07
>>772
あててみた。
動作確認も軽くしてみたけど、厳重なチェックとかよろしく

776 :名無し娘。 ◆vP.bOZFQ :01/09/09 00:11
何を考えるべきか混乱中。
まずはソースの整理&可読性の回復かな。

まず zlib を試してみて、うまくいったら正式実装。ただし念のため、
簡単に強制的に gzip_flag = 0 できるようしておいたほうがいいかも。
そして、GZIP/ZLIB関連の#ifdefを整理。

bzip/deflateは考えないことにしてよいかな?
expire/cache-controlも考えなくていい?

CUTRESLINK関連は、imodeの使い勝手や関数の使用不使用と一部連動しているが、
これらを切り離した上で、1つの-DCUTRESLINK(CUTRESLINKするかしないかの
単純なもの)にまとめる。実装はしておいて、いつでも切り替えられるように
しておけばよい(設定外部ファイル化も実装できているのでいつでも移行できるし)。

777 :デフォルトの名無しさん :01/09/09 00:14
>>776

778 :777 :01/09/09 00:16
操作ミスごめん。

>>776
>bzip/deflateは考えないことにしてよいかな?
bzipは考えなくて良いと思う。
deflateはzlibネイティブだし、HTTP/1.1に言及があるので将来的にはアリかな。

>expire/cache-controlも考えなくていい?
当面考えなくていいんじゃないかな。

779 :名無し娘。 ◆vP.bOZFQ :01/09/09 00:21
read.h に追い出されているものと追い出されていないものって、
何か戦略的な区別あります?
一度このあたり整理した方がよいかも。
# ソース読んできます

780 :デフォルトの名無しさん :01/09/09 00:26
外部的に変化のないcondition消さない?
REWRITE_HREF2とかNEWBAとか。

781 :♯6411 :01/09/09 00:30
今起きた…

>>769
>>775
すまんこってす。

>>779
read.h は、read.c における
外部インタフェイスとして切り分けた。

782 :名無し娘。 ◆vP.bOZFQ :01/09/09 00:54
>>778
よくみたらexpiresって実装されているんですね。どうしましょう。。。
すぐに正式作用できそうならしちゃってもいいかと。
>>780
GSTR2 も消してよさそう。従来型との互換はあるので。
COOKIE もとりあえず消しちゃって、お蔵入りじゃダメでしょうか。
condition多すぎて読むのがつらいです。
>>781
了解です。

783 :デフォルトの名無しさん :01/09/09 01:04
>>782 Expiresについては>>679参照 少なくとも転送量を増やすことはあっても
減らすことはないと思われ

784 :名無し娘。 ◆vP.bOZFQ :01/09/09 01:05
あと、replace系はすべて破棄して、その分、CUTRESLINKする/しない場合の
>>xxx へのリンク設定部分を最適化ってことでよさそうですね。

…なんてことを考えていたら、むしろ絶対URI表記にリンク設定(<A>タグ)
しないことの方も考えていいような気がしてきた。この部分は.datに<A>タグ
ないものをread.cgiでわざわざはっているのだけど、絶対URI表記はコピペ
すればそのまま飛べるんだし。どうでしょう?

785 :デフォルトの名無しさん :01/09/09 01:11
>>780
USE_INDEX2CGIは、いまさら不要です。

>>775
CREATE_NAME_ANCHORなしでテストしたら、
>>60が、
 read.cgi?bbs=tech&key=998695422&st=51&to=100&nofirst=true
 read.cgi/tech/998695422/51-100
になるんですが、これでいいの?
従来仕様(st=60&to=60&nofirst=true)は考えないでいいの?

CHUNK_ANCHORで、"&n=t"ってなっているけど、nofirst=trueと混じっちゃって
キャッシュが効きません。
bbs.cgiとのからみがあるから、n=tとnofirst=trueを簡単に統一できる手段が
欲しいな。

786 :775 :01/09/09 01:15
>>785
それはread2ch.hにコメントで書いたけど、CHUNK_ANCHORもコメントアウトすれば目的の番号だけの
参照になるんだよな。
CREATE_NAME_ANCHORなしでCHUNK_ANCHORありってのはそもそも矛盾してるよね?
頭で条件つぶしかけるべき?

787 :775 :01/09/09 01:18
>>785
>CHUNK_ANCHORで、"&n=t"ってなっているけど、nofirst=trueと混じっちゃって
>キャッシュが効きません。
この点単純に修正してcommitしてみた。

788 :名無し娘。 ◆vP.bOZFQ :01/09/09 01:18
>>783
了解です。expires部分もいったんソースから消してしまいましょうか。
>>784
補足。read.cgiでの動作を以下のようにしてはどうかなという提案です。
LIMIT_PM - LIMIT_AM:>>xxx のリンク削る。
LIMIT_AM - LIMIT_PM:http://... ftp://... のリンクはる。

read.cの最後4つの関数 cutWordOff,ExistHlinkX,ExistHlink,hlinkReplaceは
#ifndef CUTRESLINK してしまってよいようです。

789 :772 :01/09/09 01:20
>>775
お疲れさま。
rewrite_hrefの後半の書き換え、>>772に書いた通りじゃまずいって後で気がついたんだけど、
直してくれたんですね。どうもです。

今、夜勤さん向けにread2ch.hよりちょっとだけ詳しい機能説明書いてます。
勝手にON/OFF推奨してるんで、そのへんの判断がおかしかったらツッコミお願い。
もうちょっと時間くださいな。

790 :デフォルトの名無しさん :01/09/09 01:29
>>782
>>783
>>788
EXPIRESは氏んでるってば
まあ役に立つものではないので
ソースから削るのを止めはしないけど
(これって6411氏が入れたんだっけ?)

791 :デフォルトの名無しさん :01/09/09 01:32
ひとつひとつ。
>>788

>read.cの最後4つの関数 cutWordOff,ExistHlinkX,ExistHlink,hlinkReplaceは
>#ifndef CUTRESLINK してしまってよいようです。
これ当てました。

792 :名無し娘。 ◆vP.bOZFQ :01/09/09 01:33
>>790
ええ、氏んでるかどうかではなく、ソースから削っちゃうかどうかを。

793 :772 :01/09/09 01:36
REWRITE_HREF2削除した。

794 :デフォルトの名無しさん :01/09/09 01:37
imodeの時に、最初から(st=1&to=10)の時だけ[次の10レス]が出ません。
なんか、nofirst=true相当になっている感じ。

795 :名無し娘。 ◆vP.bOZFQ :01/09/09 01:41
>>794
http://teri.2ch.net/test/read.cgi?bbs=accuse&key=999099427&ls=20
この問題かな。。。ずいぶん昔からですね。

796 :説明がき−1 :01/09/09 01:41
有効なオプションの説明
◎Ver5.1xで導入済み
○Ver5.1xで導入済みだが、変更あり
△新機能・大きな変更ではない等で、ON推奨
▲新機能・変更が大きいので、とりあえずOFF推奨
×新機能・テスト中等の理由で、開発版でもOFFになっているもの

○CUTRESLINK
ファイルのreadとsplitを最適化する
(define名がおかしい)

○LINKTAGCUT
混雑時間帯に >>000 形式のレスへのリンクを削除。
「レスを全部読む」の増加への対策として、
表示範囲外のリンクは削除しないように変更。
(CUTRESLINKが有効な時のみ機能する。0/1で指定)

△RELOADLINK
一番最後に、「更新したレスを表示」のリンクを表示する
連打されてもNotModifiedが返るので、大きな負荷にはならないはず。

◎LASTMOD
導入済み。ほぼ必須。

×EXPIRES
proxy用に、キャッシュの保持期限を出力する。

◎NEWBA
BadAccessの新しいバージョンを使う。
稼動中。今のところ問題なし。かちゅ〜しゃ規制に注意。

◎GSTR2
nofirst → n など、短縮形で指示できるようにする
稼動中。今のところ問題なし。

▲USE_PATH
PATH_INFOを処理することにより、
http:://piza2.2ch.net/test/read.cgi/tech/998997848/10-20
のリクエストを処理できるようになる。
CHUNK_ANCHORとの併用で効果を発揮する。
http:://piza2.2ch.net/test/read.cgi/tech/
時に、板のスレ一覧を表示するため、負荷が増える可能性あり。

×COOKIE
Cookie による名前、E-mail フィールドの初期値の埋め込みを CGI 側で行う
Last-Modified付加により、proxyでキャッシュされた場合に各種の不都合
(最悪の場合、キャップ・トリップのパス漏れ)が発生するため使用不可に

797 :説明がき−2 :01/09/09 01:42
◎PREVENTRELOAD
書き込み直後のリロードを防止する
FORCE_304_TIMEで指定された時間の間、304 Not Modifiedを返す
稼動中。

◎GZIP
△ZLIB
出力を圧縮する。
ZLIBを指定すると圧縮にgzipを使わなくなるため、
プロセス数が減り、負荷低減につながる。

△RAWOUT
datの(差分)取得をread.cgiで処理する。
生datも圧縮して転送量を減らすことができる。
CGIへのリクエストが増加する可能性があるので、負荷が大きくなる可能性あり。
mod_gzipの設定次第では、不要になる場合も。

△USE_MMAP
fread(read)の代わりにmmapを使用する。
負荷の低減が期待できる。

×EXPLICIT_RELEASE
明示的に資源を解放する。
CGIプロセスが終了すれば、資源は解放されるので明示的な解放は不要。
逆に、解放処理が負荷を増加させる危険があるので、OFF推奨。

×USE_INDEX
read.cgi側によるindexの実装(experimental)
/board/dat/idx/ディレクトリがあれば、各レスのindexを作成する。

×ALL_ANCHOR
▲CHUNK_ANCHOR
トップに「全部読む」/CHUNK_NUM毎に区切ったレスへのanchorをつける
どちらかはあった方がよさそうだけど、
CHUNK_ANCHORには、現在、副作用があるので。
※表示範囲外への >>000 形式のリンクを、1レス分であっても
CHUNK_NUMレス分へのリンクに変更してしまう。

△LATEST_ANCHOR
「最新レス LATEST_NUM」をつける

798 :説明がき−3 :01/09/09 01:42
▲SAGE_IS_PLAIN
sageレスのとき、名前を太字にしない
(<a href="mailto:sage">の代わりに<font color=>をつける)
若干転送量が減るが、見た目が変化する。

×USE_INDEX2CGI
index2.cgiがあったら、「掲示板に戻る」のリンク先をindex2.cgiにする
もはや不要?

△CHECK_MOD_GZIP
mod_gzipが導入されていたら、「掲示板に戻る」のリンク先を
/板名/ にする。
(OFFにすると、戻り先はaccept-encodingによって、/index.htmか/index.htmlになる)

△CUT_DATE_STRING
"投稿日:"を非表示にする

▲CREATE_NAME_ANCHOR
各レスにアンカーをつける。
CHUNK_ANCHORとの併用でキャッシュ効果が上がる可能性があるが、
転送量を増やす結果になる可能性もある。
これをOFFにした場合でも、CHUNK_ANCHORをOFFにしないと、
>>000 形式のリンク先が広範囲となるため、
転送量を増やす可能性がある。

△USE_SETTING_FILE
板毎に設定が書いてあるファイルを使用する。
板のディレクトリにSETTING_FILE_NAMEのファイルがあり(SETTING.TXTと同じ場所)、
有効なエントリがあれば、デフォルト値を置き換える。
SETTING_R.TXTは
---
FORCE_304_TIME=30
LIMIT_PM=23
RES_NORMAL=50
MAX_FILESIZE=512
LINKTAGCUT=0
---
など。空行可。'='前後の空白不可。'='がなかったり、マッチしなかったりしたら無視
最後の行に改行が入ってなかったら、その行も無視
現在設定可能な値は、
RES_YELLOW
RES_REDZONE
RES_IMODE
RES_NORMAL
MAX_FILESIZE (Kbyte単位で設定)
LIMIT_PM
LIMIT_AM
FORCE_304_TIME (PREVENTRELOAD有効時のみ)
LATEST_NUM (LATEST_ANCHOR有効時のみ)
LINKTAGCUT (CUTRESLINK有効時のみ)

799 :775 :01/09/09 01:45
あ、>793 は私。名前書き間違えた

800 :796-798 :01/09/09 01:47
説明がき書いている間に、すでになくなってしまったものがいくつか・・・
ON推奨/OFF推奨は俺の主観なので、他の人の意見も聞いて、
合意のうえで夜勤さんに提案したいな。

801 :デフォルトの名無しさん :01/09/09 01:50
△CUT_DATE_STRING
"投稿日:"を非表示にする
えーと、今現在のbbs.cgiでは":"のようですが、
そのあたりの対応は大丈夫でしょうか?

802 :775 :01/09/09 01:51
>>801
その通りになってるつもりですがどうでしょうか(^^;

803 :775 :01/09/09 01:54
×なやつ全部消していいすかね? バッサリと。

×EXPIRES
×COOKIE
×EXPLICIT_RELEASE ; これは…残す? (^^;
×USE_INDEX ; これは残す?
×ALL_ANCHOR
×USE_INDEX2CGI

804 :デフォルトの名無しさん :01/09/09 01:58
>>802
datには"投稿日"なんて文字は元からないのか。
今バージョンでは、":"が表示されてません。

805 :名無し娘。 ◆vP.bOZFQ :01/09/09 01:59
>>803
NEWBA,GSTR2 の旧部分も削っちゃってよいと思います。
>>796 NEWBA のかちゅ〜しゃ規制部分も、おそらく大丈夫そうですし。

806 :775 :01/09/09 02:00
>>804
こりゃまた失敬。直しました。

807 :775 :01/09/09 02:12
とりあえず以下のものをバッサリ削除した。

NEWBAの旧部分
EXPIRES
USE_INDEX2CGI
COOKIE

808 :775 :01/09/09 02:21
LASTMODはON固定ってことでcondition消しますか?

GSTR2はすでに昔のコードは無いみたい。1文字か完全一致かの
条件分けになってますね。

809 :デフォルトの名無しさん :01/09/09 02:27
imodeのむりやり修正。
なんか根本的に間違っている気がするが、ないと困るので。
いんちきでごめん。

dat_out()中に一行追加。
 if (out_html(level, line, lineNo))
  break;
+ if (lineNo==1 && is_imode() && nn_st==1) ++out_resN;

810 :775 :01/09/09 02:35
>>809
あてた。

811 : ◆D69Zsbfg @夜勤 ★ :01/09/09 02:36
どんなもんでしょ?
全ファイル(makefile含む)を どこかに上げていただけると
とっても嬉しいです。

で、kaba とかでテストしてみたいです。

まだのようでしたら、また明日 お伺いしますが、、、

812 : ◆D69Zsbfg @夜勤 ★ :01/09/09 02:36
本当に、みなさんすみませんねぇ、
感謝 感謝 です。

813 :775 :01/09/09 02:38
夜勤さん、ご苦労さまです。
最新ソースはcvsから随時
http://www.gedoh.org/aki/2ch/current/bbs/
にコピーされていて、
その全部が read.tgz に圧縮されているようです。

read2ch.h で設定をいろいろいじる必要があるかもしれません。
特にバージョン名(笑)

814 :775 :01/09/09 02:39
>>813
あぎゃ。
× ご苦労さまです
○ お疲れ様です

細かいかな(^^;

815 :775 :01/09/09 02:48
各設定の説明は
>>796-798
でなされていますが、
現時点の状態で出しちゃっていいんでしょうかね(笑)
他の皆はどうしたんだろう。寝た?

816 :名無し娘。 ◆vP.bOZFQ :01/09/09 02:52
>>815
ソース追いきれずにコメント不能状態です(氏
一度どこかに導入してもらって仕切り直せれば、それが一番楽かもしれませんね。

817 :デフォルトの名無しさん :01/09/09 02:57
>>784(>>788で補足)に書いてあることは、
ressplitter_split()内の
#if 1
#else
#endif

#ifndef シンボル名(NO_LINK_URL_BUSY,etc)
#else
#endif
にすれば、ほぼ実現するんじゃなかろうか?
(レス1の時の動作とi-mode対応がどうかな)

818 : ◆D69Zsbfg @夜勤 ★ :01/09/09 02:58
まず、全部ダウンロードして、サーバにアップして
make しました。
このように言われました。

gcc -c read.c -DHAVE_READ2CH_H -Izlib -g -O2 -Wall -funsigned-char -o read.o
read.c: In function `dat_read':
read.c:1254: `MAP_FAILED' undeclared (first use this function)
read.c:1254: (Each undeclared identifier is reported only once
read.c:1254: for each function it appears in.)
make: *** [read.o] Error 1

819 :775 :01/09/09 03:00
>>818
USE_MMAP時のOS側の定義が足りないようですね。

read2ch.hで#define USE_MMAPをコメントアウトするといかがでしょうか。

820 : ◆D69Zsbfg @夜勤 ★ :01/09/09 03:02
USE_MMAP コメントアウチおしました。

こんどは、

gcc -c datindex.c -DHAVE_READ2CH_H -Izlib -g -O2 -Wall -funsigned-char -o datind
ex.o
datindex.c: In function `create_index':
datindex.c:372: `MAP_FAILED' undeclared (first use this function)
datindex.c:372: (Each undeclared identifier is reported only once
datindex.c:372: for each function it appears in.)
datindex.c: In function `open_dat':
datindex.c:412: `MAP_FAILED' undeclared (first use this function)
datindex.c: In function `datindex_open':
datindex.c:457: `MAP_FAILED' undeclared (first use this function)
make: *** [datindex.o] Error 1

821 :デフォルトの名無しさん :01/09/09 03:02
ってゆーか、Linuxでmmapが失敗したら返す値(シンボル)って何だろ?

822 :デフォルトの名無しさん :01/09/09 03:03
現バージョンでの範囲外へのリンクがますいです。
PATHで呼ばれた時は大丈夫だけど、現行形式で呼ばれたときに
read.cgi?bbs=tech&key=998997848101-150#145
なんてことになってしまいます。

転送量削減が主なら、PATHで呼ばれたかをチェックしてリンク先を変えることになるのかな。

333KB
新着レスの表示

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

0ch BBS 2004-10-30