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

2chのような掲示板システムってP2Pで

1 :デフォルトの名無しさん :2001/05/20(日) 13:51
2chのような掲示板システムってP2Pで実現できないかなぁ?
匿名が基本なんで、P2Pでうまくいくような、、、なに?P2Pだと匿名化できない!?!?
えらい人教えて!

404 :デフォルトの名無しさん :2001/08/26(日) 01:09
マスタサーバ(2ch.net)は以下の2つの情報をクライアントに返せばよいのかな?
1. 最新のスレッド一覧
2. スレッド内の各書き込み
各クライアントはそれぞれの情報をキャッシュしている。
んで、お隣さんから要求があると 1. 2.を読みにいく。(If-modified-since付きGETで)
書き込みはマスタサーバ 2ch.net に書き込む。
... 結局2ch.net全体のコンテンツをキャッシュしているだけのような気がしますが。

405 :375 :2001/08/26(日) 01:12
>>404

>... 結局2ch.net全体のコンテンツをキャッシュしているだけのような気がしますが。

いや、それが目的なので..

ところで266さん、あと決めることって何でしょう?

406 :266 :2001/08/26(日) 01:13
>>405
とりあえず今までの分をまとめてます。ちとお待ちを・・・。

407 :266 :2001/08/26(日) 01:15
>>406 までの内容のまとめです。

●何を話しているか?
2chの転送量超過についての対策が問題意識の基本。
その解決としてのクライアント側でできるP2Pベースのキャッシュについて。

●製作にあたって何を固めなければならないか?
★はコメントを表します。

・対象プラットフォーム
   現在の候補:Win32, Mac

・基本的な外部要求仕様
   候補1:クライアントマシン上で動くキャッシュ専用似非串。
   候補2:クライアントマシン上で動く HTTPd。ページの中身は2ch。

・内部の大まかな処理フロー
   1)各クライアントは読み出したスレをキャッシュする。
   2)クライアントは2chのスレにアクセスしようとしたときに
    検索用クエリーをばらまき近場のキャッシュをまず探す。
   3)もしキャッシュヒットすればそこからデータをもらい、
    なければ鯖から直にもらう。もらったデータはもちろんキャッシュ。
   4)鯖はピア一覧のみを管理する。

・プロトコルの仕様/分類
   1)クライアントがキャッシュを検索するプロトコル(クライアント⇔2ch.net)
   2)クライアントがキャッシュからデータをとるプロトコル(クライアント⇔キャッシュ)
   3)キャッシュが2ch.net からデータを取り込むプロトコル(キャッシュ⇔2ch.net)
     ★2)も3)もHTTPでよい。
   4)2ch,net がスレの更新を通知するプロトコル (キャッシュ⇔2ch.net)
     ★キャッシュに対するリクエストがあった時にだけ
      鯖上のデータのタイムスタンプを調べれば不要では?
     ★鯖に対してはIf-Modified-sinceを送ればよい。
   5)キャッシュが2ch.net に自分自身を登録するプロトコル (キャッシュ⇔2ch.net)

・その他
   1)板ごとに動的にピアグループを生成する(グループは鯖側で管理)。
    検索クエリーは対象板のピアグループに対して投げる。
   2)検索がヒットしたかどうかはタイムアウトで判断。
   3)フローティングスレッドは刷れ番号一覧を鯖側に置いて
    これを元にクライアント側で自主的に生成。
   4)差分更新を可能にするためにレス数やファイルサイズのような情報の管理が必要。
   5)更新頻度や情報の粒度が尋常でないことに留意する。

・開発チーム
   未詳。

408 :266 :2001/08/26(日) 01:16
あ、切れちゃった。
まずは決めやすいところからということで
対象プラットフォームと基本的な外部要求仕様を固めましょう。

409 :266 :2001/08/26(日) 01:19
ちょっと補足。
なんで似非串だけじゃなくて HTTPd を加えてるかというと、
既にブラウザの串が設定されちゃってるようなユーザーを意識してのことです。
こういうユーザーの環境でも動く似非串にしようと思ったら
多段串として組んでやらなくちゃいけないわけですよね。
そのことだけでもなく、似非串として組むなら
2ch以外のページへのアクセスをちゃんと素通りさせてやらなくちゃいけない。
それだったら、ローカルで動く HTTPd (中身は2ch)にして、
ユーザーには localhost にアクセスしてもらうってのが
お手軽だと思ったわけです。

410 :名無し :2001/08/26(日) 01:20
トラフィックのほとんどはWin32からでしょ?

411 :266 :2001/08/26(日) 01:22
>>410
Win用に限定するなら作るの早いんすけどね。
俺もBCB使いだから何かと楽ができるし。
Macはとりあえず除外って方向もありだとは思います。

412 :デフォルトの名無しさん :2001/08/26(日) 01:22
>>407
>・プロトコルの仕様/分類
>   5)キャッシュが2ch.net に自分自身を登録するプロトコル (キャッシュ⇔2ch.net)
5)が必要になる理由が良くわからんです。
2chがキャッシュにPUSHで通知するということ?でも、
> 4)2ch,net がスレの更新を通知するプロトコル (キャッシュ⇔2ch.net)
>    ★キャッシュに対するリクエストがあった時にだけ
>     鯖上のデータのタイムスタンプを調べれば不要では?
>    ★鯖に対してはIf-Modified-sinceを送ればよい。
となっていてキャッシュは2ch.netにPULLしにいくので登録は不要では?

413 :デフォルトの名無しさん :2001/08/26(日) 01:22
キャッシュのデータって改竄されないかな?

414 :266 :2001/08/26(日) 01:25
>>412
プロトコルの5)は処理フローの4)に対応するものです。
ピアの一覧は鯖側で管理するので
登録できるようにするためのプロトコルが要るんじゃないか、と。
ただ、板毎グループを作る方針で行くなら
2chのCGIに仕掛けを入れれば一覧管理できちゃうんで
プロトコルをばっさり削れるのは事実ですね。
ちなみにこれ、鯖側にIPが残るという問題もはらんでたりします。
いつどの板にアクセスしたかという程度の情報ですけどね。
スレやレスとの対応は分からないから実害はないはずだけど・・・。

415 :375 :2001/08/26(日) 01:28
>>413

改竄はいろいろ考えたんですが

1,たとえ改竄されたところで鯖(2ch.net)のデータが
書き換えられるわけではない
2.怪しければキャッシュを変えればすむ話

なのであまり実害はないと思ったのですが..

セキュリティホールになりうることがあればどしどし教えていただけると
助かります。

416 :デフォルトの名無しさん :2001/08/26(日) 01:28
Javaで作ろう。
LinuxもMacも救われる。
Java,Java,Java.
JXTA初の実用アプリってことで。

417 :266. :2001/08/26(日) 01:29
>>413
データ改竄は防止可能です。
暗号化して保存したり、Win専用にするなら
ソフトをサービスとして登録してファイルを終始ロックしておいたり。

418 : :2001/08/26(日) 01:30
JXTAを使うとJXTAのライセンスに縛られない?

419 :デフォルトの名無しさん :2001/08/26(日) 01:30
いや、改ざんできちゃうでしょう。
問い合わせに対してうその情報を返すプログラムを書けばいいわけだし。
gnutellaでもこれが問題になったよね。

420 :266 :2001/08/26(日) 01:31
>>416
目的は2chの転送量負荷軽減なんで
一番手軽に作れる方法を選びたいところです。
JXTAって仕様もう完全に固まってましたっけ?
それにJava実行環境ってまちまちな気がするし。

421 :266 :2001/08/26(日) 01:32
>>419
あ〜、そっちの話ですか。
まあ確かにそれをやろうと思えばできますけどね。
でもそれはすぐに見抜けます。
何故なら2chの本鯖に直でアクセスすればいいから。

422 :名無し :2001/08/26(日) 01:32
>>419 ごもっとも。公開鍵かclosedにするか。

423 :375 :2001/08/26(日) 01:33
>>419

えっと、クライアントからの問い合わせに対して
改竄されたレスを返すってことですよね?

で、自分自身は正当なソフトのふりしてピアに登録してもらうと。

でもそれで起きる被害ってせいぜい変なメッセージを見せられる
ぐらいだし、2ch.net 側でIP完全に把握されてるのだからすぐに
ばれると思うのですが..

424 :375 :2001/08/26(日) 01:34
>>423

自己レス。あ、でもいきなりブラクラ見せられる可能性もあるのか...

425 :266 :2001/08/26(日) 01:37
改竄や悪意ある攻撃の類はあまり気にしない方がいいかと。
作るのは結局のところただのキャッシュだから
今現在の2chで行われているものと被害に大差はないでしょう。
データ改竄は2chに直アクセスすればすぐにばれるし
ブラクラにしてもHTMLを生でやりとりせずに
レスやスレのデータだけをやりとりすれば大丈夫。
というわけであまり心配してないんですがどうでしょう?

426 :375 :2001/08/26(日) 01:38
>ブラクラにしてもHTMLを生でやりとりせずに
>レスやスレのデータだけをやりとりすれば大丈夫。
>というわけであまり心配してないんですがどうでしょう?

えっと、っていうことはクライアントはいまのカチューシャみたいな
専用ソフトを使うのが前提ってことですか?

ぼくはあくまでブラウザでhttpで普通にアクセスできるのを
考えているのですが..

427 :375 :2001/08/26(日) 01:40
>>426

ごめんなさい。ローカルにもピアを検索したりするソフトを
おくんでしたね。勘違いしてました。

428 :225 :2001/08/26(日) 01:41
えっと、今回はスレッドレベルのキャッシュの話なんだよね?

で、赤虫みたいな奴に、新着部分が改ざんされる恐れがあると。

429 :名無し :2001/08/26(日) 01:41
>>426
トレードオフ。
緊急事態と見れば専用プロトコル@Win32でいいと思う。
その他の人は普通にアクセス。

430 :266 :2001/08/26(日) 01:43
ん?えーと、クライアントはブラウザで見ることを考えてます。
だけど、ブラウザに表示されるのはあくまでも
こっちのソフトを通過した結果データなんで、
やばいものの混入はちゃんとフィルタリングできるし、
そもそもスレの書き換えも2chに直アクセスですぐばれるから意味ないだろう、と。

431 :225 :2001/08/26(日) 01:44
>>429
というか、その他の人には、p2p参加者のキャッシュをhttpで参照出来るように出来ればいいんだけどねえ。

432 :266 :2001/08/26(日) 01:45
図示すればこういうことです。
| の左がクライアントマシン上の話で 2ch.net がオンライン。

ブラウザ⇔P2Pcache⇔|⇔2ch.net

ここで P2Pcache は似非串もしくは HTTPd として動くことを想定してます。

433 :"管理"者側の現状 :2001/08/26(日) 01:46
373 名前:マァヴ@削除管理委員長 ★ 投稿日:2001/08/25(土) 22:47 ID:???
もう一度、現状について・・・・
1 来週、Big-Serverとひろゆきの間で打ち合わせがもたれる。
2 その打ち合わせの結果にもよるけど、基本的には転送量の現状維持は不可能。
3 少なくとも今の形態であるかぎり、規模縮小は不可避。
4 規模縮小に伴うログの保全等については、その打ち合わせで決まるはず。
5 その後Big-Serverが、50Mbps程度でサポートし続けるかどうかは不明。
6 今後2chがどうしていくのかも不明。

今後の2chについてだけど・・・・
収入の確保、有料化、部分有料化、規模縮小して継続、構造改革(P2P化とかNG化とか)、廃止など含めて色々なオプションが一応俎上に上がってるらしいですけど
果たしてどうなるのかはまだ予断を許さないって感じです(^_^;)


がんばってください!226氏、225氏、他諸氏。

434 :266 :2001/08/26(日) 01:47
>>433
来週って月曜とか?突貫工事だ(藁

435 :名無し :2001/08/26(日) 01:48
ぜんぜん時間無いね。だめかも。

436 :266 :2001/08/26(日) 01:49
スレ改竄についてですが
鯖上にチェックサムを残しておいてもらう
っていうのも手かもしれませんね。
鯖のスレと照合すれば手元のスレが改竄されたかどうか
すぐバレちゃうけど誰もあんまりやらないでしょうから。
それなら鯖上にチェックサムもどきを置いといて
そのレベルでチェックをする、と。
あんまり必要だとも思えないけれど・・・。

437 :266 :2001/08/26(日) 01:52
えっと、今の話題はデータ改竄ということでいいですか?
それと、クライアント上で似非串として動くのか
HTTPd として動くのかについても検討をお願いします。

俺は HTTPd の方を推します。
ブラウザに対しては HTTPd として振る舞い
裏では 2ch.net に対する HTTP クライアントおよび
他のピアに対する P2P サーバントとして振舞う、
ということで結構楽ができるかと。
HTTPd とは言ってもローカル上でのデータ転送だから
リクエストの URL 部分だけ見てデータを渡せば十分だろうし。

438 :名無し :2001/08/26(日) 01:52
>>436
チェックサムなら合わせられるね、強引に。
もちろんCRCを使えばいい話だが。
CRCだけ見に行く?どうだろ。

439 :225 :2001/08/26(日) 01:53
>432
要は、目指しているのは、たとえばcache.2ch.net でアクセスしたら、
登録されてるp2p参加者のキャッシュ鯖にランダムで飛ぶ
みたいな事かな?

440 :デフォルトの名無しさん :2001/08/26(日) 01:54
>>266
407を読んで思ったのですが、読むときの流れは分かるのですが
書き込む時のデータはクライントからどのように流れるんですか?

441 :デフォルトの名無しさん :2001/08/26(日) 01:55
1. クライアントにDelegateをいれてproxyサーバを立てる。
2. Delegateは2chの内容をキャッシュ。
3. IPを2chのトップに表示。
4. みんなはそのIPにアクセスする
というのじゃダメ?
3.が一番のネックになる気がするが...

442 :266 :2001/08/26(日) 01:55
>>439
うーん、その捉え方は ずれてると思います。
1)www.2ch.net へのアクセスを検出するローカル串である。
  ※串的な機能を持ったローカルの HTTPd というのも考えてます。
2)キャッシュ鯖ではなくキャッシュサーバントにアクセスする。
3)キャッシュはスレやレス単位で行う。
という話です。

443 :うーん :2001/08/26(日) 01:55
改竄対策なら署名付けるようにしたら?
分散されてそこらじゅうで違うデータが流れるのもあれでしょ。

444 :266 :2001/08/26(日) 01:57
>>440
書き込む時は 2ch.net の鯖へ直でアクセスします。
目的が 2ch の転送量負荷の軽減なんで
ROM が作りだしてる大量のデータの流れをキャッシュで押さえ込もう、
という話です。

445 :名無し :2001/08/26(日) 01:57
>>440
書き込みは普通にやるそうだ。
今問題なのは読み込みに発生するトラフィックだそうだ。

446 :440 :2001/08/26(日) 01:58
なるほど、まとめにそれも付け加えておいてもらえると
分かりやすいです<2ch.netへ直接

447 :266じゃないけど :2001/08/26(日) 01:58
>>440
直接2ch.netに書き込まれる。

448 :266 :2001/08/26(日) 01:58
>>443
こういう風に考えてるんですが穴あります?

>>425
> 改竄や悪意ある攻撃の類はあまり気にしない方がいいかと。
> 作るのは結局のところただのキャッシュだから
> 今現在の2chで行われているものと被害に大差はないでしょう。
> データ改竄は2chに直アクセスすればすぐにばれるし
> ブラクラにしてもHTMLを生でやりとりせずに
> レスやスレのデータだけをやりとりすれば大丈夫。
> というわけであまり心配してないんですがどうでしょう?

449 :266 :2001/08/26(日) 01:59
>>446
了解です。
改竄まわりの話が一旦落ちついたところでまとめようと思います。

450 :266 :2001/08/26(日) 02:01
あんまりツッコミがないんで結構戸惑ってるんすが(藁
これは「実装する奴が決めれ」っていうことでいいんですかね?
俺、書きますよ(藁

451 :うーん :2001/08/26(日) 02:02
チェックサムするならならせめてCRCか、出来ればMD5ぐらいにしようよ。

452 :375 :2001/08/26(日) 02:03
僕が理解してる範囲でまとめると

1.キャッシュの動作

キャッシュ起動

2ch.net にアクセスして自分の担当するグループを登録

特定のportをlisten して待機


portにクライアントからアクセス

返事を返す(いやなら無視してTimeOut)


[A.board-IDを受け取った場合]

2ch.net に接続して最新スレID一覧を取得

各スレについてタイムスタンプ問い合わせ

ログ一覧を生成

クライアントに返信

Socket close


[B.スレIDを受け取った場合]
クライアントから欲しいスレのIDをもらう

IDから2ch.net 上のタイムスタンプを取得し、更新されてれば
差分を転送

クライアントにスレの内容を返信(独自形式)

Socket close

ここでいったんきります

453 :名無し :2001/08/26(日) 02:05
2chがやばいっていうこの時にも、Unix版で
荒らしてる奴がいることを考えるとクラッカー対策はかなり重要。
このツールで一本化されたとしたら、
クラッキングは2chの死を意味すると思う。

454 :375 :2001/08/26(日) 02:05
2.ローカル上のhttpdの動作

起動

2ch.netにアクセス

すべてのピアグループについて(*1)cacheのIPを取得

port:80をlisten(localhost のみAccept)して待機


port:80 にlocalhostからアクセス

リクエストされたURLを解析し、board名とスレIDを得る


[A.スレ一覧(いわゆるindex2.html)をみる]
board名から適切なcacheに接続

cacheにboard-IDをリクエスト

cacheから最新スレ一覧(独自形式)を取得

html生成

localhostに返信してSocket Close


[B.特定のスレをみる]
board名から適切なcacheに接続

cacheにスレIDをリクエスト

cacheからレス一覧(独自形式)を取得

html生成

localhostに返信してSocket Close

455 :225 :2001/08/26(日) 02:05
>442
ふむ、それの方が効率はいいんだろうけど
一部の人だけがやったところで意味ないから、かちゅ〜しゃ程度の普及率を目指すということかな?
というか、バンドルしてもらうのが手っとり早そうだな。

456 :266 :2001/08/26(日) 02:06
>>451
まあなんでもいいんすけどね。
鯖に負荷が掛からないものをと思って
とりあえずチェックサムと言ったまです。
それと、そもそもあんまり改竄が問題とは思えないんです。
理由は >>448 の通りです。
ちゃんとフィルタリングすれば
できるのは嘘のレスやスレが出回るってだけのことですよね。
しかも2chに直アクセスですぐにそれはバレてしまう。
それを防ぐためだけにあれこれ実装するのって
あんまり意味があると思えないんですがどうでしょう?

457 :375 :2001/08/26(日) 02:08
3.2ch.net の動作


キャッシュから登録のリクエスト

希望するピアグループの一覧にIPを追加

Socket Close

キャッシュからタイムスタンプのリクエスト

タイムスタンプ返す

Socket Close

キャッシュから登録解除のリクエスト

解除

Socket Close

キャッシュから最新スレ一覧のリクエスト

返す(IDだけ)

終了

458 :375 :2001/08/26(日) 02:09
って言う風に理解してるんですけどどうでしょう?

459 :266 :2001/08/26(日) 02:09
まとレススマソ。

>>455
かちゅ〜しゃ ほどになるかどうかはともかくも
数をばらまかなくちゃいけないのは確かですね。
鯖側も多少いじらなくちゃいけないんで
2ch 管理側との連携も必要です。

>>452 >>454
そういう感じです。

460 :266 :2001/08/26(日) 02:11
>>457
ピア一覧への登録と解除については
俺はプロトコルは要らないんじゃないかと思ってます。
ある板にアクセスしたら、
時限付きでリストに加えるようなCGIを鯖側に用意するんです。
これならプロトコルもクライアント側での特定の処理も要りません。
それ以外はご推察の通りです。

461 :375 :2001/08/26(日) 02:15
>>460

>ピア一覧への登録と解除については
>俺はプロトコルは要らないんじゃないかと思ってます。
>ある板にアクセスしたら、
>時限付きでリストに加えるようなCGIを鯖側に用意するんです。
>これならプロトコルもクライアント側での特定の処理も要りません。

なるほど。ちなみに確認になるんですが
「ある板にアクセスしたら」
っていうのは「キャッシュが」ってことですよね?

確かにこの方がエレガントですね。

462 :266 :2001/08/26(日) 02:16
>>461

> 「ある板にアクセスしたら」
> っていうのは「キャッシュが」ってことですよね?

はい、そういうことです。

463 :デフォルトの名無しさん :2001/08/26(日) 02:16
>>456
改竄されてるかどうかを確かめるぐらいなら
最初から直アクセスするYO!ってならないかな?

464 :225 :2001/08/26(日) 02:18
>456
とりあえず、信用出来ない鯖の検出が出来れば問題ないんだよね。
オリジナルへのアクセスはできるだけ避けたいから、どうすべきかと。

2ch側で登録してもらって、たまに見回りをしてもらうってのもありかな?

465 :266 :2001/08/26(日) 02:21
>>463
それもあると思います。
ただ、全体としては、悪意を持つ奴やその影響は
正常な動作に比べてごく小さい範囲に収まるんじゃないかな、と。
少なくとも架空レスや架空スレ以外の問題はないはずです。
で、架空のものにしても直アクセスで確かめるのと
鯖上のチェックサムと照合してみるのとの組み合わせで
その割合はいくらでも小さくできて、
いずれは2chの鯖をクラッキングされる確率と変わらなくなるんじゃないでしょうか?
そうなると杞憂でしかありませんよね。

466 :266 :2001/08/26(日) 02:23
>>464
うーん。
まず、問題は架空レスや架空スレということでいいですよね?
で、その架空の発言でどんな被害が出るかというと、
せいぜい誰かがだまされるかだまされないかぐらいの話で
それは現状の2chとなんら変わるものではない。
荒らしにしたって現状の2chに既にそれはある。
ヤバい情報が流れるとしてもそれは
全部キャッシュ上の話で2chに管理責任はないだろうし
それに2ch上にコピペされたなら従来どおりに対処すればいい。
そんなこんなで被害と呼べるほどの被害が思い当たらないんです。
どっか抜けてますか?

467 :名無し :2001/08/26(日) 02:26
>>465 嘘レスをもらったピアがキャッシュとして動作したは?

468 :デフォルトの名無しさん :2001/08/26(日) 02:29
>>465
改竄を見抜けないままレスがつくとスレが破綻する
可能性もあるんじゃないでしょうか。
まぁこの問題は開発の本筋とはあまり関係ないから
後回しでもいいかもしれませんが…

469 :266 :2001/08/26(日) 02:30
>>467
もちろん増幅されます。
だけど、それで生じる被害は >>466 の範囲に収まると思います。
キャッシュにはタイムアウトを設定してもいいでしょう。
そうなると、悪意のある誰かが嘘レスを大量にばらまくような
サーバントを作った場合が問題になるかと思います。
これには対処しなくちゃいけませんね。

470 :225 :2001/08/26(日) 02:31
>466
いや、問題ないと思う、
要は、話がかみ合わなくて笑い物にされる恐れがあるってだけだからね。

471 :デフォルトの名無しさん :2001/08/26(日) 02:31
レスをつけるときは直にやるんだからちょっととんちんかんな会話になるだけっしょ。
セキュリティはとりあえず動くものつくってからでいいと思うなぁ。

472 :うーん :2001/08/26(日) 02:34
出力されたデータが改竄されていることがリアルタイムに判明する仕組みは必要だと思うよ。
データに関しての責任を誰も負えなくなってしまう。それこそ無法地帯になりかねないよ。
あと削除があった場合の同期方法を考える必要があると思う。

それから、直アクセスは通常出来ない、もしくはかなり制限されるようにしないと
結局殆どの人が直アクセスになってしまうと思うな。

473 :266 :2001/08/26(日) 02:36
一個解決案を考えてみました。
鯖上にスレの要約ファイルを作るんです。
で、この要約中にはスレを構成するレスのサイズとハッシュか何かが並んでいる。
スレを読む時には必ずこの要約ファイルを鯖まで取りに行ってから
キャッシュにアクセスします。
これなら架空スレは作れませんし架空レスについても
せいぜい発言が差し替えられるだけで数が増えたり減ったりはしません。
鯖へのアクセスやCGIの負荷は増えますが
前者はスレの直接読み出しとは比較にならないでしょうし
後者もCPUの消費ですから問題ないでしょう。
どうですか?

474 :UNIX板の状態 :2001/08/26(日) 02:39
2ch閉鎖の危機なんだと(Part2.1)

http://cocoa.2ch.net/test/read.cgi?bbs=unix&key=998754174

素人には何のことだかわかりませんが、
メッセンジャーくらいなら出来ます。

475 :375 :2001/08/26(日) 02:41
>>473

どの時点のハッシュをとりに行くかが問題では?

キャッシュからレス取得

ハッシュ計算  (その間に新たな書き込み)

ハッシュを2ch.netにとりにいく

ハッシュ食い違う

マズー

ってことがありえるような

476 :266 :2001/08/26(日) 02:44
ポイントを改めて書いてみます。

●index2.html にアクセスする時
ttp://www.2ch.net/board/p2p.cgi?do=floterlist にアクセス。
スレ番号の一覧が帰ってくる。
その一覧を元に各スレにアクセスする。

●特定スレにアクセスする時
ttp://www.2ch.net/board/p2p.cgi?do=reslist&thread=XXXXXX&from=XX&to=XX にアクセス。
レスのハッシュとサイズのペアの一覧が帰ってくる。
一覧を元に検索クエリーを投げ、レスのデータを集める。
その時にはもちろんサイズとハッシュを照合する。

これなら単純で安全性も高いと思いますがどうでしょう?

477 :266 :2001/08/26(日) 02:45
>>475
鯖へのアクセスが全てに先行します。
鯖にアクセスしてから、鯖から取得したリストにあるレスを集める、という格好です。
最初からキャッシュにアクセスするというのは無しにするわけです。
もちろん転送量は若干食いますけどスレを直接読むよりもずっと軽いはずです。

478 :225 :2001/08/26(日) 02:45
>>473
基本的には一分間に10もレスが付くような状況にも対応するにはどうしたらいいかって事だよね。

479 :266 :2001/08/26(日) 02:47
>>478
すいません。話が見えません。
改竄防止のために鯖上にある信頼できる要約データに従ったものしか
キャッシュからは集めないという話です。

480 :266 :2001/08/26(日) 02:48
補足です。
この要約データは鯖側のCGIで生成してもらう必要があります。
つまり、書き込みをした時についでで生成してもらうわけです。

481 :375 :2001/08/26(日) 02:52
>>477

たしかにサイズが違えばリトライすればいいわけですね。
唯一あぼーんされてなおかつサイズが同じ時にハッシュが食い違って
エラーになる可能性があるのかな?

具体的には

クライアントがあるスレのA〜Bのハッシュとサイズをゲット

(この間にあぼーん。サイズは変わらず)

クライアントがA〜Bをcacheに要求

cacheからゲットしたデータのサイズ→OK

cacheからゲットしたデータのハッシュ→NG

マズー

482 :266 :2001/08/26(日) 02:56
>>481
ハッシュが一致しなかった場合には
鯖まで取りに行くということではどうでしょう?
これでもまだ転送量軽減には十分な効果があるはずです。
実際にハッシュがどうしても一致しないものってそんなには出ないはずです。
出るとしたら大掛かりな妨害が行われてるわけですから。
あと追加で、あぼーんリストだけ別個に作ってもらって
たまにチェックするようにしてもいいかもしれませんね。

483 :266 :2001/08/26(日) 02:59
みんなもう寝ちゃいました?(藁

484 :375 :2001/08/26(日) 03:00
あと &ls=100 っていうリクエストについてはどうしましょう。
強制的に &st=XX&to=XX に置き換えさせないと示すレスの範囲が
変わってしまいますよね.

485 :266 :2001/08/26(日) 03:02
>>484
それは p2p.cgi に ls オプションの処理をつければいいと思います。
p2p.cgi は今の read.cgi とほぼ同様の機能を持っているけれど
出力されるデータはスレ番号やレス要約の一覧ばかりである、
というような格好が適当じゃないでしょうか?

486 :225 :2001/08/26(日) 03:02
>480
要はETagのリストだよね。

487 :うーん :2001/08/26(日) 03:02
ちょっと、待って・・・
ハッシュのチェックをするのはどこ?
キャッシュサーバーで改竄されたとすると、
そのキャッシュサーバーからハッシュデータ受け取っても意味なしなんだけど。

488 :266 :2001/08/26(日) 03:04
>>486
そうなりますね。
ところでETagをレスごとに生成できるんでしょうか?

489 :266 :2001/08/26(日) 03:07
>>487
まず、2ch.net 上にハッシュのリストがあります。
これは書き込み時に生成されるもので、絶対に正しいとして信頼します。

2ch にアクセスする際にはこのハッシュのリストを 2ch.net から取得し
リスト中にある情報を元に検索クエリーを生成してばらまきます。

クエリーの結果として発言のハッシュなどがサーバントから帰ってきます。
正しい結果を返してきたサーバントから改めてレスのデータを受信します。

受信したデータから自前でもハッシュを生成し
鯖から取得したものと比較します。
これで一致しなければ鯖から直接にレスを取得します。

こういう流れです

490 :266 :2001/08/26(日) 03:09
>>489
あ、鯖っていうのは 2ch.net のことです。

491 :225 :2001/08/26(日) 03:12
>>488
>Last-Modified: Sat, 25 Aug 2001 18:04:23 GMT
>ETag: "10e859-28027-3b87e8a7"

>Last-Modified: Sat, 25 Aug 2001 18:07:20 GMT
>ETag: "10e859-2830e-3b87e958"

レスがつくと変わるみたいだ。

492 :266 :2001/08/26(日) 03:14
>>491
おおっ、これは使えるかも。
ETagってperlから取得できますか?
取得できるならETagを保存すれば
スレのレス要約リストについては問題なしですね。

493 :うーん :2001/08/26(日) 03:16
>>489
いや、手順じゃなくって、どこがなんだけど、
ブラウザでそれをやるってことですよね?

494 :375 :2001/08/26(日) 03:19
>>493

ブラウザ(IEとか)ではなくて、各自のPCにたてるhttpd(のようなもの)
がです。これを改竄しても意味ないですし。

495 :266 :2001/08/26(日) 03:21
ちょっと難民板のぞいてきました。
いやかなりヤバいみたいですね。
存続する意向自体はあるみたいだけど金銭的に見てでかすぎる、と。

496 :_ :2001/08/26(日) 03:23
『レースレーサー板』の総合スレッド表示が1つしかできないようになっています。
皆さんのおチカラでなんとかなりませんか?

497 :266 :2001/08/26(日) 03:23
>>493
>>432 のあたりをご覧ください。
>>494 での 375 さんのおっしゃる通り
クライアント上で動作する似非プロキシや HTTPd のようなものを考えてます。

498 :225 :2001/08/26(日) 03:26
まあ、一言でいえばグヌテラな烏賊串かな?
上位串は固定じゃなくて、適当に選ぶって感じか?

499 :266 :2001/08/26(日) 03:27
もうそろそろ寝ようかと思いますが、
できれば明日中にプロトタイプをたたき上げるつもりです。
実は納期までまり余裕のない仕事を抱えてたりもするもんで(苦笑)
実装に際しては独断で仕様を決めてしまおうと思いますが
ソースは公開しますしご意見は是非とも参考にさせてください。
どうぞよろしくお願いします。
では今日はこれにておやすみなさい。

500 :375 ◆MsUYMX0E :2001/08/26(日) 03:28
>>266
おやすみなさい。僕もねます

501 :266 :2001/08/26(日) 03:29
>>498
そういうことです。
自分から見てキャッシュ鯖となるサーバントは
2ch上のピア一覧を見て適宜決定します。

502 :うーん :2001/08/26(日) 03:28
>>494

ごめん構成を勘違いしてたみたいだ。

(1)2ch.net ---- (2)キャシュサーバー ---- PC[(3)内部プロクシ---- (4)ブラウザ]

と言う構成でハッシュのチェックは(3)でやるということですね?

503 :266 :2001/08/26(日) 03:30
>>502
はい、そういうことです。
ただし(2)の部分はサーバントになります。

今度こそ寝ます(笑)

504 :なんとなく :2001/08/26(日) 03:45
キャッシュサーバを設けるなら、書き込みがあった時点で
そのまま転送しちゃっても良いのでは?

書き込みは常に親サーバが受け取り、そのまま子サーバへ転送。
親サーバには直属の子サーバへのリンクしか置かないで、
スレッドは子サーバ以下からしか読み込めない。

親の負荷が増えたら、板ごとに親サーバを分割できるし、
キャッシュサーバも孫やひ孫が作れる。
認証も親サーバのアドレスが固定であり、サーバ間通信は暗号化も可能。
秒単位の遅延と、書き込みが即時反映はされない点、子・孫サーバが
落ちてた場合の再送のタイミングに少し問題が残るけれど。

505 :225 :2001/08/26 06:38
>>504
ツリー構造のIRCみたいなものかな?
プッシュ型は効率的には良いだろうけど、問題は誰に送るかってことかな?
スレッド毎に定員を決めたりする場合、満員なら自分の子のサーバンドを紹介するって事になるんだろうけど
子が全部ファイヤーウォール内だったりすると困るかも?まあそれは無いにしても(というかコネクションはりつづけてる必要があるし)、
途中がとらぶった場合は面倒かも?ちゃんと配信してくれればいいんだけど。
まあ、それならそれで、別の親を探すか、自分が2ch直下の親になればいいだけかな?

LOGを平均して10人で共有出来れば、2chの負荷は1/10になるって事だよね。
処理に3秒余裕をみるとすると、珠々つなぎでも30秒程度、2分木だと12秒 10分木だと3秒
と書き込まれてから、親が検知するまでの時間(2ch自身が親として流すのなら最短で済む)
がタイムラグになる

とりあえず重要なのは
piza2.2ch.net/test/read.cgi?bbs=tech&key=990334284&st=502&to=502&nofirst=true
piza2.2ch.net/tech/dat/990334284.dat

なんていうアクセスを横取りして、さも実際にアクセスしたように表示できればいいわけで。
それにはdatのキャッシュデータが必要なわけで、

誰かが持ってるなら、何もオリジナルを読みにいく必要はないけど
じゃあ代替手段は何かってことで、

結局、オリジナルを読みに行った人と、そのデータを共有するための仕組みがproxyなんだけと、
アクセスが特定のサーバに集中したんじゃ、とても耐えられないし
かといって皆が一次proxyになるのではかちゅ〜しゃ使うのと大差ないって感じかな?
まあそれでもcgi使わないだけで、負荷的にはかなり違うと思うけど。

で、それにはキャッシュを持っているアクセス可能なサーバンド(つまりミラーサーバ)を知るのが先決な訳で
p2pっていうのは、それの出来次第で評価が左右されるんだよね。

まあそこはスレで告知するとか、ある程度は運用でカバー出来るから問題ないかもしれない?。

506 :266 :01/08/26 11:57
今起きた(藁
プロトコルの仕様を考えてたらちょっと思いついたことがあったり。
これ、IPを隠して書き込みしたり
同じスレを見ているユーザー同士でIM的な使い方するのに使える(藁
WinMX+ICQ+2ch的なことがかなり簡単にできてしまう。
そういう方向へ誰かがツールを拡張してしまうと
かえってユーザー数を増やしちゃってトラフィックが増えるような気がするのは俺だけ?

507 :デフォルトの名無しさん :01/08/26 12:01
このスレで作ろうとしているシステムの名称だか開発コードネームって何か決まってます?

508 :デフォルトの名無しさん :01/08/26 12:03
>>507
ラプソディー

509 :デフォルトの名無しさん :01/08/26 12:07
P2P2C(H?)

510 :266 :01/08/26 12:09
俺が作ろうと思ってる分についてはまだ名前は考えてないよ。
それよりIP匿名化とかファイル共有とかIMとか
ほんとに作っていいのかどうか不安になってきたんだけど・・・。

511 :375 ◆MsUYMX0E :01/08/26 12:10
>>506

おはようございます(^^;;;


ところで >>461
---
ピア一覧への登録と解除については
>俺はプロトコルは要らないんじゃないかと思ってます。
>ある板にアクセスしたら、
>時限付きでリストに加えるようなCGIを鯖側に用意するんです。
>これならプロトコルもクライアント側での特定の処理も要りません。

なるほど。ちなみに確認になるんですが
「ある板にアクセスしたら」
っていうのは「キャッシュが」ってことですよね?

確かにこの方がエレガントですね。


---
とかいったんですが、よく考えたらこれだと
キャッシュとして振舞う気が無いのにただアクセスして
2ch.net の鯖にあるリストを腐らせるとか言う攻撃が
可能になりませんか?

やはりcacheの特定のポートに2ch.netからpingするとか、cacheの
動作を確認する何らかのプロトコルがいる気がするのですが...

512 :266 :01/08/26 12:14
>>511
なるほど。
でもそれって普通に 2ch.net を攻撃する奴がいるかどうか
って話と変わらない気がします(藁
別個にポートを用意する場合でも
そのポートやプロトコルを隠したり何らかの形でセキュアにしないと
同じような問題が考えられますよね。
そこまで暇な奴がいるとは思えないんですが甘いかな?

513 :375 ◆MsUYMX0E :01/08/26 12:18
>>512

まぁたしかにそうなんですけど
IEとかで
ttp://www.2ch.net/board/p2p.cgi?do=getmes&thread=XXXXXX&from=XX&to=XX
とかにつなぐだけでリストに登録されちゃうのはまずいかな? と。
あ、でもUSER_AGENTで区別するという方法はありますね。

IMとかファイル共有とかは確かに面白そうですね。
でもとりあえずはプロトタイプの作成が先かな?

514 :266 :01/08/26 12:18
うーん。結構悩ましいかも。
仮にP2Pcacheを作って誰かがそれを改造して
匿名書き込み機能を追加したとすると
P2Pcacheを使ってないユーザーがfusianasanしても
それが信頼できないっていう話に繋がりますよね。
つまり2ch全体でfusianasanが無意味になってしまう。
これは安易にソース公開で出しちゃうとまずいかも。

515 :デフォルトの名無しさん :01/08/26 12:19
なぁ、漏れは、w3m or lynx使いでJavaは動かないんだが、
ブラウザはJavaが動く香具師でないと駄目か?

516 :375 ◆MsUYMX0E :01/08/26 12:20
>仮にP2Pcacheを作って誰かがそれを改造して
>匿名書き込み機能を追加したとすると
>P2Pcacheを使ってないユーザーがfusianasanしても
>それが信頼できないっていう話に繋がりますよね。
>つまり2ch全体でfusianasanが無意味になってしまう。
>これは安易にソース公開で出しちゃうとまずいかも。

あれ、書き込みは従来どおり2ch.net に直接だと思ってたんですが..

517 :266 :01/08/26 12:21
>>513
はい。ピア管理は read.cgi にある程度組み込んで
USER_AGENT で区別するという方向で考えてます。
これならPC初心者の厨房は十分排除できるはず。

518 :266 :01/08/26 12:22
>>515
そういう細工はしないんで大丈夫です。

519 :266 :01/08/26 12:23
>>516
あ、違います。
俺が作ってソース公開したら
誰かがすぐにそういう改造ツールを出しちゃうんじゃないか、という話です。
P2Pでもgnutellaとかだと確かあれはIP自体を輸送しちゃいますよね?
IP匿名ってのが売りである 2ch ではそれはまずいだろうと思って
IPをばらまかない方法を考えてたんですよ。
そしたらこれは悪用も可能なんじゃないかってジレンマに陥っちゃって。

520 :266 :01/08/26 12:35
ソースが公開されてプロトコルも決まってる。
しかもそのプロトコルはIPの匿名性が高い。
少しコードを書き加えれば
IP匿名化書き込み、同じスレを見ているユーザー同士でのチャット、
ファイル交換などが簡単に実現できてしまう。
こんなもの厨房なアマグラマが見つけたらそれこそやばいような気が・・・。
どう思いますか?>諸氏

521 :375 ◆MsUYMX0E :01/08/26 12:41
>>520

IP匿名化書き込みっていうのがやっぱりよく分からないんですが
もうすこし具体的に説明していただけますか?

522 :266 :01/08/26 12:45
>>521
まずgnutellaではファイル交換をHTTPでやる時のために
確かメッセージ交信の両端のサーバントのIPをやりとりしますよね?
でもこれはファイルのストリームを
二者間で直接やりとりしなくちゃいけないからで
データ転送も含めて中継サーバントが面倒を見てくれるなら
直近のサーバントのIPが分かってれば十分で
あとは相手先の識別用GUIDか何かを目当てにバケツリレーすればいいわけです。
こうすればIPをパケットの中に含める必要がなくなる。
で、こういう仕組みを作った上で、
どこかのサーバントに代理投稿を依頼するわけです。
すると 2ch.net 上には代理サーバントのIPだけが残る。
間に不特定の複数の中継サーバントを入れれば追跡もほぼ不可能なはず。
こういう話です。

523 :266 :01/08/26 12:48
スマソ。急な呼び出しがあったんで小一時間離席します・・・。

524 :デフォルトの名無しさん :01/08/26 12:59
>>520
現状として出来ることは
約3割のgzipやlastmod非対応ユーザーを
2ch.netに直接アクセスさせないことだと思います。
とりあえずキャッシュサーバーとしての動作を優先すべきでは?
専用ソフトを使う人は全体からすれば少ないはずです。

525 :デフォルトの名無しさん :01/08/26 13:18
>>522
代理サーバからの書き込みを拒否するのはだめ?
writeはclientから2ch.netに直接で
2ch.netの方は代理サーバ一覧もってるんしょ?

526 :375 ◆MsUYMX0E :01/08/26 13:39
>>525

たぶん悪意を持った人が、2ch.netにも登録せず単なる汎用の
「メッセージをたらい回しして発信元を消すツール」
に改造しちゃうことを心配してるのだと思う。

でも結局いずれ誰かがそれをスクラッチで作っちゃうだろうし
個人的にはあまり問題ないとは思うんだけどね。

527 :266 :01/08/26 13:49
帰ってきました。仕事追加されたよ(泣)

>>524
俺自身はキャッシュしか作るつもりはありませんが
ソースは公開するつもりなんで誰かが妙な改造をするのを心配してます。

>>525
代理サーバと言っても実体は代理サーバントなんで
それをIPなんかでブロックしたら正規の書き込みができなくなります。
改造する奴はきっちりとIEか何かを偽装するようなコードを仕込むでしょうから
USER_AGENTを使った判別も無意味です。

>>526
ごもっとも。その背中を押すようなマネを自分ではしたくないなという話です(藁

528 :デフォルトの名無しさん :01/08/26 14:02
>>524
確かP2Pプロジェクトとキャッシュサーバプロジェクトは別個で
開発していくんじゃなかったの?
で、P2Pがここのスレッドでキャッシュサーバは別にスレッドを
立ち上げることで話が決まったはず。
で、キャッシュサーバスレが未だに立ってないだけ(消滅?)

529 :225 :01/08/26 14:32
>527
改造もなにも、このスレは2chの代わりになるようなものを作るのが
元々の目的だった気もするけど?
まあ、削除の問題とか、いろいろ難しいだろうけどね。

で、とりあえずそれとは離れて、今の話だけど、win以外の人の為に
キャッシュ部分をミラーサーバとして公開するならって事かな
書き込み用のフォームのリンクは2chに直接貼るしかないんじゃないの?

530 :デフォルトの名無しさん :01/08/26 15:34
プロトコルの実装をでっち上げれば、あとは各クライアントを使っているプログラマさんがエージェントを作ってくれるっしょ。

バケツリレー式プロトコル、パンドラの箱かもしれないですけど、面白いと思いますよ。

fusianasanはトリップみたいにパスワードやれば良いと思われ。
これは、公開鍵暗号を実装すればいいでしょう。

削除は事実上不可能だと思うけど、これは仕方ないと思う。
一度ネットに上げられてしまった情報は、コピペやキャッシュによって無くなることはまず無いんですから。

531 :デフォルトの名無しさん :01/08/26 15:54

マスターサーバー
現在の鯖を使用

キャッシュクライアント
ADSL以上が条件
ROMクライアントよりスレッドの取得が優先される

ROMクライアント
ISDNなど主に低速回線向け
スレッドのキャッシュをしない

スレッドのキャッシュ方法
クライアントからマスターサーバーへスレッドのリクエスト

そのスレッドのキャッシュクライアントリストとスレッドを照合

新規に書きこみがある場合、
新規書き込み分の差分とキャッシュクライアントリストをクライアントに渡す。

クライアントがキャッシュクライアントである場合、キャッシュクライアントリストに追加。


キャッシュクライアントリストの上限はスレッドに対するリクエスト数で変動。
記録するデータはクライアントIDと取得書き込み数

こんな感じじゃだめですかねぇ・・・

532 :1 :01/08/26 15:56
プロトコルはXML-RPCってのはどうでしょうか?
言語もC/C++、Java、PHP、Perlなどなんでもあり、プロトコルもHTTP上に載るから扱いやすいのと、仕様がきれいにまとまる気が。
かの有名なFreeNetもXML-RPCだと思う。

http://www.linux.or.jp/JF/JFdocs/XML-RPC-HOWTO/index.html (UNIXよりだけど)
http://freenet.sourceforge.net/

533 :デフォルトの名無しさん :01/08/26 15:59
>>530
削除はマスタwww.2ch.netの一覧で削除マークつける
とか項目自体消して、キャッシュからの更新時に
削除でクライアントに渡さないようにするとかはだめでしょうか?
NNTP式のコントロールメッセージ式は偽装が楽だった気がする。
どちらにせよ、完全じゃないけどないよりはマシのような。

534 :266 :01/08/26 16:01
これまでの内容のまとめです。
独断で片付けてる部分が多いんですがそこは突っ込んでください。

●何を話しているか?
2chの転送量超過についての対策が問題意識の基本。
その解決としてのクライアント側でできるP2Pベースのキャッシュについて。

●製作物の概要

・対象プラットフォーム
  候補:Win32

・大まかな内容
  候補:クライアントマシン上で動く HTTPd。
     ブラウザで localhost にアクセスすると 2ch が見える。
     実際には裏で HTTPd が 2ch.net やキャッシュにアクセスして
     スレのデータを収集、整形、キャッシングする。

・内部の大まかな処理フロー
  1)ブラウザが HTTPd にアクセスすると HTTPd が動作しはじめる。
   以下、この HTTPd をクライアント、ピアの HTTPd をキャッシュと呼ぶ。
  2)クライアントは2chのスレを読み込もうとしたときに次の手順をとる。
    i)2ch.net からスレやレスの目録リストを取得する。
    ii)リストを元に検索クエリーを生成してピアにばらまく。
    iii)ピアからの返事を一定時間待つ。
    iv.a)ピアからの返事があればそこからデータをもらう。
       データは 2ch.net から取得したリスト中のハッシュと照合を行う。
    iv.b)時間内にピアからの返事がないか もしくは
       上記の照合で失敗したら 2ch.net からデータを直にもらう。
    v)自分が獲得したデータはキャッシュする。
  3)書き込みは 2ch.net に対して直で行う。
  4)鯖はピア一覧のみを管理する。
    i)2ch.net 上に適当な CGI を用意してピア一覧の取得を可能にする。

535 :266 :01/08/26 16:02
・プロトコルの仕様/分類
  1)クライアントがキャッシュを検索するプロトコル(クライアント⇔2ch.net)
  2)クライアントがキャッシュからデータをとるプロトコル(クライアント⇔キャッシュ)
  3)キャッシュが2ch.net からデータを取り込むプロトコル(キャッシュ⇔2ch.net)

・その他
  1)板ごとに動的にピアグループを生成する(グループは鯖側で管理)。
   検索クエリーは対象板のピアグループに対して投げる。
  2)フローティングスレッドはスレ番号一覧を鯖側に置いて
   これを元にクライアント側で自主的に生成。
  3)データ改竄の可能性は極度には意識せず普通に防止する程度で実装。
    ※現状では 2ch.net 上のハッシュによる照合を想定。
  4)システムの維持が困難になるような悪意ある妨害については真面目に対処。
  5)更新頻度や情報の粒度が尋常でないことに留意する。

・開発チーム
   とりあえず俺。

536 :266 :01/08/26 16:02
●ピア管理について
ピア管理は 2ch.net 上で行う。
read.cgi に細工をほどこし、2ch.net にアクセスしてきたユーザーで
USER_AGENT が P2Pcache のそれになっているユーザーのIPを
アクセスされた板の住人としてピア一覧に登録する。
この登録は時限設定するものとし、
例えば最後のアクセスから一時間放置されたら除外する。
ピア一覧には CGI 経由でアクセスすることができる。


●レスとスレの一覧について
read.cgi に細工をすることでスレへの書き込みと同時に
書き込み内容のハッシュのリストを生成これを 2ch.net 上に保存する。
また、フローティングスレッドやスレ一覧などのデータも保存する。
P2Pcache はまずこれらのリストを 2ch.net 上から取得し、
このリストに含まれるレスをピアや 2ch.net 上から収集する。


●データ改竄について
2ch.net 上にあるレス情報にサイズやハッシュなどを含め
ピアから収集したレスとの照合を行うことである程度防げる。
照合に失敗した場合には 2ch.net から直接レスを取得する。
仮にハッシュがたまたま誤って一致してしまった場合でも
架空のレスが他のレスに入れ替わる程度で済み実害はほとんどない。

537 :266 :01/08/26 16:02
●2ch.net 側の実装物について
ピア管理を行う CGI の実装が必要。
次のような動作をするものでよい?

基本的な動作は 2ch.net 上の各種のリストを読み出すこと。
動作パラメータは次の通り。

  do:読み出し対象リストの選択。値は以下のいずれか。
    threadlist = スレ番号の一覧
    reslist = レス情報の一覧
    abornlist = あぼーんされたレスの番号の一覧。
  board, thread:板やスレッドの指定。
  from, to, ls, nofirst:read.cgi に同じ。読み出し範囲の指定。
  bycontent:do==reslist && bycontent==true ならばレスの文面を返す。

レス情報は、レスIDとレスサイズ、ハッシュのペアからなる。
レスIDは時系列にそって順序比較が可能で各レスについて固有であれば何でもよい。
reslist bycontent はキャッシュヒットしなかった場合の差分更新に用いる。
※レスIDには ETag が使える?

538 :266 :01/08/26 16:03
●P2Pcache 側の実装物について
P2Pプロトコルに基づいて動作するサーバント兼
その動作過程で獲得したデータを整形してブラウザに送る
HTTPd としての実装が必要。
以下ではプロトコルについて述べる。

プロトコルはメッセンジャーの非同期な交換としてモデル化する。
すなわち、ピアは他のピアへとメッセンジャーを送信するが、
どのメッセンジャーも独立しており、返信を必須条件としない。
ある目的に沿って二者間でメッセンジャーが継続的に往復する時
この往復の全体をセッションと呼ぶものとする。

メッセンジャーは次のフォーマットをとる。

struct Messenger{
   struct Header ;
   struct Message ;
} ;

struct Header{
   time_t timeStamp ;
   GUID inquirerID ;
   GUID answererID ;
} ;

Message の中身はメッセージの種類ごとに異なる(後述)。
Header の各フィールドは次の意味を持つ。

  timeStamp:メッセンジャーが生成された日時。
  inquirerID:メッセンジャーの生成者を識別する一意なID。
  answererID:メッセンジャーへの応答者を識別する一意なID。

inquirerIDとanswererIDはセッションごとに生成される。

539 :266 :01/08/26 16:03
以下にレスの検索から収集までのフローについての具体例を示す。

ピアAが search メッセージを持つメッセンジャーを生成する。
この時にメッセンジャーの inquirerID を初期化する。
   ↓
ピアAは生成したメッセンジャーを直近のピアにばらまく。
   ↓
メッセンジャーを受け取ったピアはそのメッセージをチェックし、
自分の抱えるキャッシュ内を検索してレスの有無を調べる。
レスが見つからなければ受信したメッセンジャーを複製して
更に自分の直近のピアにばらまく(無限拡散防止などはgnutellaとほぼ同じ)。
この時、「メッセンジャーをどのピアからどのピアへ中継したか」を記憶する。
   ↓
あるピアでついにキャッシュにヒットしたら、
メッセンジャーのメッセージを found メッセージに置換し、
answererID を新たに生成した一意なIDで初期化する。
できたメッセンジャーは自分に search メッセージを送ってきたピアに送る。
   ↓
found メッセージ付きのメッセンジャーを受け取ったピアは inquirerID を調べ、
自身が過去に生成したメッセンジャーのものかどうかを確かめる。
found メッセンジャーが自分の生成したものでなかったなら
過去の中継記録中にそのIDが含まれていないかどうかを調べる。
中継記録中に含まれていた場合は中継元に更に中継する。
   ↓
あるピアでついに found メッセージ付きのメッセンジャーを受信できたなら
メッセージ部分を retrieve に書き換えて・・・以下略。

timeStamp はメッセンジャーの破棄に用いる。
すなわち、一定時間よりも前に生成されたメッセンジャーはその場で廃棄する。

540 :266 :01/08/26 16:03
続いて各メッセージについて。
メッセージは search, found, retrieve, response の四つとする。
この四つはこの順序で状態遷移するものでもある。

1)search メッセージ
レスの検索を行う。フィールドは次の通り。

   struct SearchMessage{
    string type = "search" ;
    short hopCountLeft ;
    string board ;
    string thread ;
    resID_t resFrom ;
    resID_t resTo ;
   } ;

board 板の thread スレの resFrom から resTo までの範囲のレスを探す
という意味になる。search メッセージに対しては found メッセージで応答する。
見つからなければ返信はせずに search メッセージを増幅してばらまく。

541 :266 :01/08/26 16:04
2)found メッセージ
検索結果の通知を行う。フィールドは次の通り。

   struct FoundMessage{
    string type = "found" ;
    short resCount ;
    struct ResInfo{
     resID_t resID ;
     short resSize ;
     long resHash ;
    } resInfos[] ;
   } ;

search メッセージに該当するレスの一覧の情報を返す。
この時、必ずしも完全にヒットしていなくてもよい。
例えば、resFrom=1, resTo=100 の search に対して
1 〜 40 のレスしか持っていなくても返信してよい。
found メッセージを受信したピアは次の retrieve メッセージで応答する。
ただし、found メッセージ中のハッシュが 2ch.net から取得したものと
一致しなかった場合にはこれを無視してよい。


3)retrieve メッセージ
レス内容の提供を要請する。フィールドは次の通り。

   struct RetrieveMessage{
    string type = "retrieve" ;
    short resCount ;
    resID_t resIDs[] ;
   } ;

提供を要請する ID の列を resIDs に収める。
retrieve メッセージに対する返信として
ピアは次の response メッセージで応答する。

542 :デフォルトの名無しさん :01/08/26 16:07
>>531
キャッシュするやつは、スレッド単位でもつから
Disk容量はそんなになくてもよいという感じなのかしらん。
データ破棄は有効期間制という話だったと思うが。
あまりキャッシュ側にHigh Specを求めると参加者が集まらないかも。

543 :266 :01/08/26 16:12
4)response メッセージ
レス内容を提供する。フィールドは次の通り。

   struct ResponseMessage{
    string type = "response" ;
    short resCount ;
    struct Response{
     resID_t resID ;
     string content ;
    } reponses[] ;
   } ;

response メッセージを受信したピアは
content から改めてハッシュを計算して照合を行う。
この段階でハッシュが一致しなければ 2ch.net 上から直接レスを集める。


なお、セッションごとに状態遷移をきちんと管理すること。
ありえない状態に属するメッセージを受け取った場合には
エラーとみなしてこれを廃棄する。

---------------------------------------
以上です。切れまくり(泣)おまけに連続投稿とか言われるし(泣)

544 :1 :01/08/26 16:17
resIDはどのように採番するんですか?
もし、各サーバントが勝手にシーケンスに採番にするとぶつかる可能性がある。
よって、resIDはランダムなぶつからないような番号がいいかと。
で、resFromとresToの代わりに時間を基準に「どの時間からどの時間まで」の方がいいかも。

545 :266 :01/08/26 16:18
>>544
resID は 2ch.net 上で生成してリストに保存し、
そのリストを 2ch.net から拾ってきて使います。
重要なのは時系列に沿って整列可能であることと
レスごとに一意であることです。

546 :1 :01/08/26 16:20
>>545
OK!
前提としてハイブリッドですね。

547 :266 :01/08/26 16:21
>>546
はい、そうなります。
これなら実装はかなり楽だと思いますがどうでしょ?
穴とかあったら突っ込みよろしくお願いします。

548 :1 :01/08/26 16:22
>>266
これ以外に、自分がネットに追加された意思表示をするプロトコルは不要ですか?

549 :デフォルトの名無しさん :01/08/26 16:22
>>537
ハッシュというかIDというか、MD5ならC言語で
http://www.rfc-editor.org/cgi-bin/rfcdoctype.pl?loc=RFC&letsgo=1321&type=ftp
RFC1321でソース付きであるから、E-tagで困難なら
試してみるのもいいかも知れない。128bit長です。
一応、署名とかでも一意性の確認に使われてたから少しはましかも。
速度だけだったらCRCの方が良いかもしれんけど。

550 :266 :01/08/26 16:24
>>548
今はこういう形を考えてます。
ただ、375 さんにご指摘いただいたように
USER_AGENT を偽装してアタックをかけ
ピア一覧を壊すという可能性があります。

> ●ピア管理について
> ピア管理は 2ch.net 上で行う。
> read.cgi に細工をほどこし、2ch.net にアクセスしてきたユーザーで
> USER_AGENT が P2Pcache のそれになっているユーザーのIPを
> アクセスされた板の住人としてピア一覧に登録する。

551 :266 :01/08/26 16:26
>>549
ども。
2ch.net 上では多分 perl でハッシュを生成することになると思います。
ので、双方で扱いやすいものがいいんですが、MD5 はこれに該当するでしょうか?
ETag の方は resID に使えるんじゃないかと考えてます。

552 :1 :01/08/26 16:28
2ch.netで持つ情報はIPだけですか?searchはすべてのPeerに投げるんですか?Peerから自分の持っているboard、threadを告知して2ch.netにその情報をキャッシュした方が効率がいいような気が・・・。>>548はそういう意味です。
Napsterは最初に自分の持っている曲のリストをサーバに上げるんだった記憶が。

553 :1 :01/08/26 16:29
>>551
perlのMD5モジュールってあった気が・・・。

http://search.cpan.org/search?mode=module&query=MD5

554 :266 :01/08/26 16:32
>>552
なるほど。これは難しいところですね。

IPに加えて参照頻度を追加してもいいかもしれません。
あるいはIP一覧がリクエストされるごとにローテーションさせるとか。

全部のピアにデータを送るのは無謀だと思います。
これについては高々数十個程度のアドレスを集めればいいだろうと思ってますが
P2Pアプリを作ったことがあるわけでもないんで根拠レスです。

鯖側にある程度の調整をさせるかどうかはCPU負荷次第でしょうね。
余裕があるなら鯖側でやった方が何かと調整が効いていいと思います。

555 :1 :01/08/26 16:34
>>266
ところで、すでに作り始めてます?

556 :266 :01/08/26 16:37
>>555
いえ、まだ1行も書いてません(藁
俺はネット関係とか実務経験がなくて
趣味でちょこちょこやってただけなんで色々と読んでるところです。

557 :1 :01/08/26 16:49
>>556
なんでも、わからないことあったら聞いてください。
ネット関係は自信あります。Winには弱いんで。
266さんのをPHPとPerl/CGIで実装してみますね。

558 :266 :01/08/26 16:54
>>557
ありがとうございます:)
早速なんですがピア間の通信は
TCPよりもUDPの方がよいような気がするんですが
UDPだと何か問題は出てきますか?
俺の理解の範囲内だと response メッセージで
大量のメッセージを一度に送る場合以外は問題ないように思えるんですが
穴があったらご指摘ください。

559 :1 :01/08/26 16:57
>>558
F/Wを超えないことがある。< UDP

560 :266 :01/08/26 17:02
>>559
UDPとTCPでは前者の方がブロックされていることが多い、ということですね。
これはADSLとCATVユーザーの環境で一般的な問題にもなりますね。
プロバイダ板あたりで聞けば分かるかな?

561 :デフォルトの名無しさん :01/08/26 17:03
>>553
perlのMD5チェックしてみました。
大抵は入っていると思いますが、入ってなければ、
http://www.cpan.org/modules/by-module/Digest/Digest-Perl-MD5-1.5.tar.gz
解凍して、MD5.pm突っこんで、@INC設定されてなければ
指定すればOKそうです。

ex)
./Digest-Perl-MD5-1.5/lib/Digest/Perl/MD5.pmにおいた時。
---
#!/usr/bin/perl -w -I./Digest-Perl-MD5-1.5/lib
use Digest::Perl::MD5 'md5_hex';
print 'Digest is ', md5_hex 'foobarbaz', "\n";
---

562 :1 :01/08/26 17:09
CATVはNATを通しているケースもあるので、UDP通らないケースが多いと思います。
ADSLはグローバルが多いのかな?(うちはそう。)

563 :aki :01/08/26 17:15
便利そうだったら使ってみてください。
http://www.gedoh.org/aki/2ch/wiki/

564 :1 :01/08/26 17:19
あ、後思ったんですけど、P2Pのstructの最初の要素ってstringなんですか?(charへのポインタ?)
char[]だとしても、structの大きさがぶれるので、intなどのような大きさがはっきりしたほうがよくないですか?

565 :1 :01/08/26 17:21
>>563
Wikiって何?ごめんなさい、無知で。

566 :266 :01/08/26 17:23
>>564
すいません。その辺はまだ適当に書いてあります。
実装するなら固めなくちゃいけませんね。
ゼロ終端の可変長文字列を割り当てて
メッセージの先頭か Header の末尾に long size ; フィールドを
入れるということにしましょうか?
これから改めてきちんとした定義を書いてみます。

567 :266 :01/08/26 17:32
サイズ情報を追加しました。
string はゼロ終端の文字列を表します。

  struct SearchMessage{
    long  size ; // メッセージサイズを示すバイト数。
    string type = "search" ;
    short  hopCountLeft ;
    string board ;
    string thread ;
    resID_t resFrom ;
    resID_t resTo ;
  } ;

  struct FoundMessage{
    long  size ;
    string type = "found" ;
    short  resCount ;
    struct ResInfo{
      resID_t resID ;
      short  resSize ;
      char  resMD5[16] ;
    } resInfos[ resCount] ;
  } ;

568 :266 :01/08/26 17:32
  struct RetrieveMessage{
    long  size ;
    string type = "retrieve" ;
    short  resCount ;
    resID_t resIDs[ resCount] ;
  } ;

  struct ResponseMessage{
    long  size ;
    string type = "response" ;
    short  resCount ;
    struct Response{
      resID_t resID ;
      string content ;
    } reponses[ resCount] ;
  } ;

問題は string の文字コードをどうするかということと
resID_t の中身をどうするかといったところです。
後者はそもそも何を resID のソースにするかにもよりますね。
提案よろしくお願いします。>諸氏

569 :aki :01/08/26 17:33
>>565
ええっと、ページの内容を誰でも自由に更新できる掲示板の亜種です。
試しに書き込みしてみると感覚つかめるかも知れません。

570 :1 :01/08/26 18:00
>>568
言語PHP、プロトコルXML-RPCで実装してみます。

571 :デフォルトの名無しさん :01/08/26 18:22
>>568
:問題は string の文字コードをどうするかということと
既存の2chのdatがSJISなのでSJIS統一が移行が楽なんでわ。

:resID_t の中身をどうするかといったところです。
search->found->retrieve->responseが一つのセッションで
行われるなら、searchにて、boardとthreadが指定され範囲が
スレ内の一意性に帰着するから、datの頭からの行数をresID_t
にして、番号ずれが起きないように、削除時には\nは消さないで
削除マークを付けるのは如何?
行数==resID_tなら採番はしなくて済む。
また、書込は2ch.net一ヶ所で受けるから矛盾はでないはず。
ただし、searchからが一連のセッションでないなら、
retrieve, responseにも、board, threadを指定しないと、
resID_tだけで一意に特定するのは困難だと思う。

ちなみに、他すれでindexつけたいね、という話がありましたから
board, threadは、stringでなく、一覧で数値管理の方が、
はやいしトラフィックも少しだけ減るかも。

572 :1 :01/08/26 18:35 ID:XPQqFrCs
P2Pの方なんだけど、どの時点でサーバントがほかのサーバントにアクセスして、メッセージをもらうの?
IPとポート(あるいはURL)を取得する手段がないような・・・。
>>567>>568ってP2Pの方ですよね?

573 :1 :01/08/26 18:37 ID:XPQqFrCs
あれ?メッセージに急にIDがついた。

574 :デフォルトの名無しさん :01/08/26 18:38 ID:Lpd6qptI
test

575 :266 :01/08/26 18:39 ID:V6I8TU7U
>>571
素直にレス番号を使うということですね。それでやってみます。
search から response までは一つのセッションにまとめられます。
board, thread の番号も long あたりで表現できるなら楽でいいです。
ところで今のスレ番号って time か何かの値ですよね?
そうなら板名と long 値のペアで当面は表現できます。

576 :266 :01/08/26 18:42 ID:V6I8TU7U
>>572
まず >>567, >>568 はP2Pのメッセージフォーマットの話です。
それでサーバントのアクセスですけど、
IPとポートは 2ch.net にアクセスしてリストをもらいます。
このリストはユーザーが 2ch.net にアクセスしたときに
read.cgi か何かで生成してもらうものです。
リストを取得したらサーバントの方で適宜コネクションを張ります。
コネクションを張りっぱなしにするかどうかは思案中です。
あと、鯖上に若干 IP が残ることになるわけで少し問題があるかも。

577 :1 :01/08/26 18:58 ID:XPQqFrCs
SearchMessage <-> FoundMessageはサーバント、2ch.net間、RetrieveMessage <-> ResponseMessageはサーバント間ならば、

FoundMessageにIPなどの情報が必要、RetrieveMessage にboard、threadの番号が必要になると思う。

578 :266 :01/08/26 19:11 ID:GCamoJZ2
>>577
SearchMessage から ResponseMessage までは
全てサーバント間でやりとりされます。
FoundMessage は SearchMessage が通過してきた中継ピアを
逆向きに経由して発信元に届けられます。
中継ピアが中継履歴を残しておけばMessage中にはIPは不要です。
多分これで大丈夫なはず・・・。

現在はC++で内部設計を検討中です。

579 :デフォルトの名無しさん :01/08/26 19:20 ID:EzeLIkVE
>>576
ざっくりいうとこんな感じっすか?

client -[GET]-> cache(※1) ---> www.2ch.net
※1:なにもしない

cache(※2) <-[一覧(board, thread, cache_ip_port)]- www.2ch.net
※2:自分のとこと他のcacheにsearchから始まる一連の問い合わせを
して回答を回収する。記事の正当性検査は、2chからもらった一覧と
FoundMessageをつき合わせる。

client <------ cache(※3)
※3:回答をまとめて返す。

580 :266 :01/08/26 19:23 ID:GCamoJZ2
>>579
はい、そうなります。
細かいところですが正当性の検査には
更に自前でのMD5生成と照合があります。
これは嘘や間違ったFoundMessageの影響を押さえるためです。

581 :デフォルトの名無しさん :01/08/26 19:28 ID:EzeLIkVE
>>akiさん
まだ、ソース公開以前の雛型つくりだから、
Wikiをつかうのはもうすこし先かも。

582 :375 ◆MsUYMX0E :01/08/26 19:54 ID:2YfzLsYM
激遅レスですみません..

>・内部の大まかな処理フロー
>  1)ブラウザが HTTPd にアクセスすると HTTPd が動作しはじめる。
>   以下、この HTTPd をクライアント、ピアの HTTPd をキャッシュと呼ぶ。
>  2)クライアントは2chのスレを読み込もうとしたときに次の手順をとる。
>    i)2ch.net からスレやレスの目録リストを取得する。
>    ii)リストを元に検索クエリーを生成してピアにばらまく。
>    iii)ピアからの返事を一定時間待つ。
>    iv.a)ピアからの返事があればそこからデータをもらう。
>       データは 2ch.net から取得したリスト中のハッシュと照合を行う。
>    iv.b)時間内にピアからの返事がないか もしくは
>       上記の照合で失敗したら 2ch.net からデータを直にもらう。
>    v)自分が獲得したデータはキャッシュする。 (※1)
>  3)書き込みは 2ch.net に対して直で行う。
>  4)鯖はピア一覧のみを管理する。
>    i)2ch.net 上に適当な CGI を用意してピア一覧の取得を可能にする。

※1でデータをキャッシュする必要は必ずしもないと思うのですが..
たしかにキャッシュしたほうが望ましいですけどピア と ローカルhttpdの2段階で
キャッシュすると結構話が面倒になりません?

あと

>>538-541 っていうのは 2ch.net の介在無しにピア間でログをやり取りするってことですか?

583 :266 :01/08/26 20:04 ID:GCamoJZ2
>>582
ども。
※1の部分のキャッシュするというのは
他のピアからも参照されるものとしてキャッシュするという意味です。
ローカルのキャッシュとピアのキャッシュは統合します。

>>538-541 はおっしゃるとおりです。
2ch.net はピア一覧の取得とレスリストの取得、
それからキャッシュヒットミスに際してのみ利用します。

そろそろ実装を始めようかと思ってC++Builderとにらめっこしてます(藁
色々とネット関係のコンポーネントとかあるんで
品質を度外視すれば割とサクっと作れそうではあるんですが・・・。
俺どうも今晩以外に時間とれそうにないんであんまりいい加減なものは
作りたくないところなんですよ。さてどうしたものか。

584 :375 ◆MsUYMX0E :01/08/26 20:11 ID:2YfzLsYM
>>583

今いままでのをまとめたへぼいプレゼン資料作ってます。
実験に参加してもらうにはいずれ必要になるかと思って..

さしあたって今日中に出来る限りで物にしてしまったほうが
いいのではないでしょうか? もしソース公開して頂けれるのなら
我々でも多少は何とかできますし。

もちろん最終的には266さんの判断にお任せします.

585 :375 ◆MsUYMX0E :01/08/26 20:31 ID:2YfzLsYM
>>584

追加
ただ、あくまで個人的な意見ですがもし >538-541 のようなP2Pでの
キャッシュ交換の実装が難しいなら、初回は見送ってもいいと思います。
(キャッシュヒットミスしたらすぐ2ch.netに見に行く)

個人的な感触ではここの実装は結構手間取りそうなので。



586 :266 :01/08/26 20:33 ID:GCamoJZ2
>>584
ご協力感謝です。
とりあえず動くものをということで書いてみることにします。

587 :デフォルトの名無しさん :01/08/26 23:29 ID:JO3B7aqU
Gnutellaのプロトコルで実装するとユーザー数が極端に増加した場合、
途中経路で転送がストップするようなことになると思うのですが・・・・

588 :デフォルトの名無しさん :01/08/26 23:29 ID:Kg2ClUug
>>585
一応、私なりにまとめてみた。。。仕様と概要みたいなもの。
良ければ使ってくれ。このスレの発言も引用しているので
消したり直したい人は自由に編集/削除/更新してけれ。
http://www.gedoh.org/aki/2ch/wiki/yukiwiki.cgi?mycmd=read&mypage=%5B%5Bread%2Ecgi%82%CC%8Ed%97l2%5D%5D

589 :デフォルトの名無しさん :01/08/26 23:37 ID:Kg2ClUug
>>587
いや、発想は使っているがもはや独自プロトコルみたい。
ユーザ数が増加して、P2Pcacheが追いつかない場合には
マスタ(2ch)にとりにくるので、最悪ストップはないと思う。
けど、それだけの負荷があるならむしろ2chからは取得せずに
ビジー表示した方がいいのかもしれない。
詳細はこのスレ全部みるか、588のリンクみてけれ・・・・。

590 :375 ◆MsUYMX0E :01/08/26 23:38 ID:2YfzLsYM
>>588

多謝です..

591 :1 :01/08/27 00:45 ID:UQn5rfWU
>>578
突込みばかりで、すいません。
サーバントとサーバントが直接やり取りすることがないならば、それはP2Pではないように思います。
今の発想は要するに Webサーバ<->Proxyサーバ<->ブラウザ の関係に似ているんじゃないでしょうか?(違ってるかな?)
P2Pの良さはハイブリッドP2PでもピュアP2Pでもデータ量が多いやり取りを直接サーバント間でやることだと理解しているのですが・・・。

592 :375 ◆MsUYMX0E :01/08/27 00:50 ID:k3MsBTsc
#プレゼン作ったんだけど和塩には置けないようだ..

266ではないのですが
>>591

>今の発想は要するに Webサーバ<->Proxyサーバ<->ブラウザ の関係に似ている
>んじゃないでしょうか?(違ってるかな?)
>P2Pの良さはハイブリッドP2PでもピュアP2Pでもデータ量が多いやり取りを直接
>サーバント間でやることだと理解しているのですが・・・。


>538-541 にもあるように、キャッシュ間でログをやり取りすることも
266さんは考えていらっしゃるようです。

593 :デフォルトの名無しさん :01/08/27 00:52 ID:gI46IMVY
名前:
E-mail:
内容:
ADSLとかCATVでグローバルIP保持者も多くなってるこのごろだし・・・
小さいwebサーバ+Replication(2chエージェントと呼称)を組み合わせて、
クラスターにしてしまうというのはだめ?

・2chサーバ:エージェントとスレッドのディレクトリ、repilcation指示、仮想2chエージェント
・2chエージェント:スレッドデータの管理と読みこみ・書きこみ代行
としてテキトーに以下考えてみた。
----
・常時接続可能な人達が、2chエージェントを自動起動
 起動されたら、2chサーバに起動したことを通知
 通知後、受け持ちスレッドがある場合、
 2chサーバからreplication相手が誰か教えてくれるので、
 その相手からデータをSyncronizeしてもらう。
 Syncronize完了後、2chサーバに受け持ちスレッドのSyncronize完了通知をあげる。
 2chサーバは、その2chエージェントのスレッドが利用可能であることをディレクトリに書く

・2chサーバは2chエージェントのディレクトリサービスを受け持ち、
 2chエージェントが起動されたら起動通知要求を受け取り、
 ディレクトリエントリに追加

・各2chエージェントは1スレッド〜nスレッド分のデータを保持する。
 (インストール時にUD-Agentみたいに、マシン能力チェックを行い、nを決定)
 2chエージェントの停止に備えて、複数の2chエージェントが
 同一スレッドのデータをreplicationして保持する。
 replication相手の指示は、2chサーバからときどき2chエージェントに対して行う。

・読みこみ要求はブラウザより2chサーバに行く
 一括表示は、2chサーバがframeをきり、
 保持しているディレクトリ情報にしたがって、1スレッドごとに具体的なURLを出力。
 ブラウザ側は1スレッドごとに異なる2chエージェントに対して読みこみを行うことになる。

 スレッド内の表示は、2chサーバがブラウザに対してmetaタグのrefreshで
 2chエージェントへ誘導して表示

・書きこみ要求は2chエージェントが受ける
 2chエージェントはreplication相手に対してr/w排他要求を出し、
 自分で保持しているデータの更新を行う。
 更新後は更新差分をreplication相手に送り、同時にr/w排他を取り下げる。
 その後、2chサーバに対して、受持ち分スレッドデータの更新通知をだし、
 スレ位置の変更を2chサーバに行わせる。

・新規スレッドの作成は2chサーバが行い、ディレクトリエントリを更新(スレッド情報)
 空き2chエージェントがない場合、
 2chサーバ自体がエージェントとなり、スレッドを受け持つ。
 空き2chエージェントがある場合、
 空き2chエージェントに対して、
 ・新規スレッドの作成依頼
 ・replication相手の指示
 を行う。

594 :デフォルトの名無しさん :01/08/27 00:54 ID:gI46IMVY
1スレッドあたり2chエージェントを6つ・・・持てたらいいなぁ(^^;
無理か。

595 : :01/08/27 00:55 ID:.A.boK1.
ひろゆきの2ch継続意志はそれほど強くないようなので、
2ch.netに依存するのは危険。脱ひろゆきのシステムを今から考えて
おくべきだと思います。

596 :375 ◆MsUYMX0E :01/08/27 00:57 ID:k3MsBTsc
>593

多分我々がやろうとしてるのとよく似たアイデアだと思うのです。

できれば一度過去ログ読んでお互いやろうとしてることを理解してからのほうが
いいと思うのですが..

もしすでにログをご覧になっての発言でしたらごめんなさい。

597 :375 ◆MsUYMX0E :01/08/27 00:58 ID:k3MsBTsc
>595

うーん、完全なP2P化ってことでしょうか?
このスレの上のほうでもいろいろ議論されてるのですが
結構難しいみたいですよ

#どこかバナーがつかない無料HP置き場ないですかね?

598 :デフォルトの名無しさん :01/08/27 01:14 ID:peqYVPM.
>>593
>クラスターにしてしまうというのはだめ?
今取り組んでいるのも似た感じす。HTTPdの機能も予約済みす。

>・2chサーバ:エージェントとスレッドのディレクトリ、repilcation指示、仮想2chエージェント
>・2chエージェント:スレッドデータの管理と読みこみ・書きこみ代行
・2chサーバ:エージェントとスレッドのディレクトリ、repilcation指示
・P2Pcache:仮想2chエージェント、スレッドデータの管理と読みこみ
な感じです。管理主導はスレも2chサーバ側ですが。
書きこみ代行は、データの一貫性とかいろいろ考えると面倒なので
そこまで追いついていない感じ。最終的には必要なのかも。
ただ、既存のクラスタのソフトは重そうというのと、我等PG屋なので
アプローチがとりづらい部分があるので自前で必要な分を作ってる幹事巣。
簡単に改造で済むクラスタのソフトがあれば手がつくかもなのですが。

599 :デフォルトの名無しさん :01/08/27 01:15 ID:C1BnNgDo
>>593
スレッドをサーバー側から割り当てるより、
スレッドを取得したクライアント(複数)を記録しておいて、
それをキャッシュとするというのはどうでしょうか?

これなら負荷の大きい人気のあるスレッドに対して、
より多くのキャッシュを割けると思います。

600 :デフォルトの名無しさん :01/08/27 01:16 ID:peqYVPM.
/*============================================================================*
 P2Pの概要
*============================================================================*/

    -------------------------------------------------------
    |       www.2ch.net (P2P Master)      |
    -------------------------------------------------------
      ↑   |              ↑※3マスタ要求取得
  HTTP   |   |HTTP(一覧(board, thread,  |※4キャッシュサーバ登録
(GET/POST) |   ↓  cache_ip_port)を入手)  ↓
    -------------------------------------------------------
    |          P2Pcache            |
    -------------------------------------------------------
  ※1  ↑   |              ↑
  HTTP   |   |HTTP            |※2独自の
(GET/POST) |   ↓              ↓キャッシュやり取り
     ----------------         ----------------
     | ブラウザ |         | P2Pcache |
     ----------------         ----------------

※1:通常のHTTP要求時はHTTP Proxyもしくは
   2ch専用のHTTP Daemonとして、P2Pcacheは動作する。
   2chの場合にはCGIなどからHTTPにて一覧を入手し、
   キャッシュ内容をブラウザに伝える。
   キャッシュ単位はスレ単位、レス単位である。
   また、この時に新規スレの追加などの情報も取得する(If-Modified-since?)。
   鯖側はピアグループを決定し、一覧を送る。
   2chへの書きこみはデータの統一/即時反映のため、
   P2Pcacheは単に素通りさせ鯖に直接行う。
※2:P2Pcacheは、自分がキャッシュを持たない部分については、
   2chから送られてきた一覧を用い、他のキャッシュに検索にいく。
※3:一定時間内に発見できなかった場合には、マスタ(2ch)を入手し、
   自分のところにキャッシュし、ブラウザに伝える。
   但し、2ch内で常時P2P Masterを立ち上げるのは良くない?ので
   HTTPでやりとり?
※4:P2Pcacheは初めて自分が使用された際にマスタに登録する。
   有効時間を過ぎると、マスタは自動的に登録を抹消する。

http://www.gedoh.org/aki/2ch/wiki/yukiwiki.cgi?mycmd=read&mypage=%5B%5Bread%2Ecgi%82%CC%8Ed%97l2%5D%5D

601 :375 ◆MsUYMX0E :01/08/27 01:17 ID:k3MsBTsc
>>599

うーん。要はピアグループとかそういう大きい単位でなくて
スレッド単位で割り振るってことですよね..

僕としてはピアグループ、最低でも板単位のほうがいいと思うのですが
(1板1ピアグループとかにして)

トップ10スレとか表示するのはできるだけ1つのP2Pcacheにやらせたいです。

602 :デフォルトの名無しさん :01/08/27 01:22 ID:peqYVPM.
>>601
きっとそれはできてからテストしないと決められないかも(^^;
経路が離れ過ぎると重くなるかも(ピアGの方が近いIPを選択できる)、
というのと、キャッシュヒット率はスレ単位の方がいいかもという
選択肢だと思いますし。

603 :デフォルトの名無しさん :01/08/27 01:22 ID:wHbpdJPw
完全P2P化でもある程度の2ch.net依存型でも、削除人が居ないってのは怖いよ
上で出てる「ID+証明書付きの削除依頼」ってのが出た場合は一発削除、って仕組みはなんとか実装出来ませんかね?
「こりゃ個人情報だわ」って言って善意で証明書出せる人は居ても、
「このレスむかつく」ってだけで証明書晒す荒らしはそんなに居ないんじゃないのかな

604 :266 :01/08/27 01:24 ID:TRv86eRI
ただいま実装真っ最中です(藁

>>591
若干行き違いがあるような気がします。
こちらで考えているのはサーバント間でのログパッシングがメインです。
えーと、結果論から言えば、ログはサーバント間の通信で増殖していきます。
2ch.net へのアクセスは

1)ピアアドレスの一覧取得
2)レスのやスレの要約一覧取得
3)キャッシュになかったレスの取得

の3パターンにおいてのみ発生します。

では再び実装作業で沈みます・・・。

605 :375 ◆MsUYMX0E :01/08/27 01:25 ID:k3MsBTsc
>>603

現行の方式でも削除があるとハッシュが食い違うので、(正当な)クライアントは
2ch.net にレスを再取得しにいきます。

>489 前後を参照してください

606 :デフォルトの名無しさん :01/08/27 01:30 ID:peqYVPM.
>>604
細かいところはまだ気にしなくていいじゃん。(^^;;
とりあえずがんばってくれ。それっぽいのがあれば
みんな手伝えるし直すっしょ。

607 :デフォルトの名無しさん :01/08/27 01:35 ID:YfpO6h5c
2chキャッシュサーバならこういうのもあるよ
http://www.geocities.co.jp/SiliconValley-Cupertino/5226/j2ch-cache/index.html

キャッシュサーバ間で連携が取れれば >>600 に近いイメージかもね

608 :デフォルトの名無しさん :01/08/27 01:42 ID:peqYVPM.
>>607
これはいいんじゃん。
現状でもみんなこれ使えばそれなりに効果あるんでない?
特に常駐者。発想的にはかなりビンゴのはず。

609 : :01/08/27 01:50 ID:.A.boK1.
>>608

なんかこれを普及させることが出来れば相当部分解決だね。

610 :266 :01/08/27 01:52 ID:TRv86eRI
ひょっとして俺が作るのって無駄?(藁

611 :593 :01/08/27 01:55 ID:gI46IMVY
>>596
ここのスレッドの題名みて「これかな?」と思って書いてから、
一通りここを斜めよみして書きなおしてみたのがアレです すんまそん。
みてて思った疑問点は、以下の通りです。
完全分散DBとして構築すればいいのかな、というのが所感でした。

・NNTPだと全部のスレのtemporary-logをコピーしまくるので
 1マシンあたりの負荷と役割が重いし、デッドコピーが出る
 →グヌテラ型がいいかも

・完全にグヌテラ型にした場合、インデックスをどう取り扱うかが問題
 →ディレクトリの概念を2chサーバに持たせたらどうだろう?

・NNTPでよくある「スレッドおち」「発言おち」はどう対抗すればいいのだろう?
 →分散DBと考えて、スレッド=テーブルとみなす。

・1スレッド1Peerだと、その人のマシンを動作させている時間によって
 見られる時間が決まってくる
 →複数マシンで持ち合いすればいいかな?
  レプリケーションの考えかたを導入して、
  複数のディレクトリエントリが1つのスレッドを受け持てばラクかな?

・シームレスな運用をめざそうとすると、情報の生存時間の管理が必要
 →基本的にはレプリケーションの組みの中で相互監視して、
  ヤバくなったらディレクトリを書き換えちまえば(=使用不可に書き換え)いいか?

612 :593 :01/08/27 02:01 ID:gI46IMVY
>>603
「オレだ!!」というのを証明書で表わす、ということですよね?
削除TPSはそんなに高くないから、証明書の問い合わせをPeerが行ったとしても
性能は大丈夫だと思いました。

あと、「オレがやっちゃいましたぁ」という表明は不要?
つまり、、、
・Peerには「オレだ!削除ヤラせろ!!」
・Peerは証明書の真偽を問い合わせてから「あん?・・・ああ、どうぞ」
 →これはその人がその人である問い合わせ 削除人の削除動機については不問
なので、「削除人の削除動機の表明」という手順はいらないのかな、と

・・・あ、でも今でもそういう手順はない??(^^;

613 :375 ◆MsUYMX0E :01/08/27 02:07 ID:k3MsBTsc
>>610

いや、あれは >364 あたりで分離した(まだスレたってないけど)
cacheサーバを有志で準備 っていうアイディアだと思いますよ

 

614 :593 :01/08/27 02:12 ID:gI46IMVY
連続してすいません。
あと思ったことは、
「スレッドデータの管理」をアプリケーション層
「スレッドデータの位置情報の管理」をプレゼンテーション層
と、完全に分離して考えてしまうのはいけませんか?

何言ってるの?というと、
スレッドデータの位置情報をグヌテラぽいものが各々管理するなんて
めんどくさいじゃないですか。
要は、
「表示は表示管理インスタンスの仕事」
「データの管理はデータインスタンスの仕事」
「表示インスタンスは、データインスタンスに問い合わせて表示」
でもよいのかなと。
位置情報程度のデータの通信はそれほど苦でもないでしょう。

具体的に書くと、分散DBなんかでも問題になる、ディクショナリのようなものを一切もたず、
表示インスタンスに「オレを表示してくれ!!こういうスレだ!!」ってpushさせて、
表示インスタンスはそのとき得た情報を一過性のディレクトリエントリと思って表示する。
表示そのものはデータインスタンスにまかせて、表示インスタンスは指示のみ。

あとは、表示インスタンスを固定の場所におくか、
Windowsのマスタブラウザみたいに乱数で決めるかだけを考えれば、
それでいいのかなと。

ここで必要なのは、位置情報を、
確実な相手から確実に取得できる手順が必要なのではないでしょうか。
(ニセスレッド発生防止策のこと データインスタンスに証明書でももってこさせる?)
データ処理そのものはPeerまかせ(データは暗号化必要かな)でもいいかと。

で、プレゼンテーション層の位置はある程度固定化しておかないと
パンピーからアクセスできないことでしょう。

615 :603 :01/08/27 02:21 ID:wHbpdJPw
>>605
489前後を読みましたが、、その仕様だと参加者は全員削除権を持っていて、
一旦削除すれば各ピアが鯖に同期を取りに言ったときキャッシュが更新されてあぼーんかと思っちゃったんですが。。
全員が削除権を持つ2chってありですかね? ハズしてたらスマソ。

616 :375 ◆MsUYMX0E :01/08/27 02:25 ID:k3MsBTsc
>615

えっと、2ch.net 側については基本的にはCGIの追加以外なにも
しないです。削除についても今までどおり、削除人にお任せです。
参加者にももちろん削除権はありません。

 あの仕様が意図してるのは、2ch.net ではすでにアボーンされてるのに
cache上には残っているがためにクライアントでは表示されてしまうことを
防ぐことです。

617 :603 :01/08/27 02:44 ID:wHbpdJPw
>>616
なるほど。削除人ありのフェーズ1ということですね。

>>612
動機は不問でも良いと思います。証明書まで晒して削除するほどならばそれなりの理由をもって削除したとみなす。
ただ、「このスレッドはこいつが削除しました」的なリストはどこかに表示すべきでしょう。

でも個人証明書って全然普及してないですよね。俺も持ってない。
verisignでは3千円チョイで取れるみたいですけど。

618 :デフォルトの名無しさん :01/08/27 02:51 ID:w6pQSl86
ふと思ったんだけど自分がどのドメインをキャッシュするか
積極的に宣言するプロキシサーバーという奴ではダメなんかな

サーバは自分が積極的にキャッシュするドメインを宣言して
クライアントは自分がキャッシュを使いたいドメインを指定してそのリスト
をP2Pで取得、そして積極的にキャッシュしているサーバのどれかにとりにゆく

これなら普通のプロキシが使えると思うし
2ch以外にも応用が利くと思うのだけど。

619 :375 ◆MsUYMX0E :01/08/27 02:58 ID:k3MsBTsc
>618
たぶんそれが
>364 とかでいってる
1)キャッシュサーバ+index2.cgi
だとおもうのだ。で、それも重要な選択肢だと思うので
ぜひ別スレを立ててくれると助かるのだ。

あと >593 さんのアイデアもゆっくり議論したいので
十分スレ立てるのに値すると思うのだ。
(たぶんここでやるといまやってるP2Pcacheの話と混乱を
きたす気がするのだ)


で、僕は寝るのだ。

620 :デフォルトの名無しさん :01/08/27 03:29 ID:2ORdPnOg
>>610
ええや。無駄じゃないってば。
あれだけだと機能たんないから。
ただ、ベースにしたら良かったかもというのはあるが、
PG板なんだから自前でつくるのも融通がきいていいでしょう。:-)
それに、textブラウザでは使えんし。

621 :デフォルトの名無しさん :01/08/27 03:43 ID:2ORdPnOg
>>618
■NNTPの利用
・掲示版の良い点のリアルタイム制を保てない
・削除コントロールが簡単に偽装できてしまう
・多少スペックが必要

■キャッシュサーバ
・個人のスペックではきつい
・細かいキャッシングで上手く威力を発揮するか不透明

という議論があったんだが、Proxyってだいじょうび?
スレ単位のキャッシングだとヒット率少なそうで、
レス単位のキャッシングが必要だと思っているんだが。

622 :デフォルトの名無しさん :01/08/27 03:49 ID:2ORdPnOg
>>612
削除人以外の削除権を皆がもつ方がいい?
俺的には削除のDoSが成立しそうで怖いんだが。
IPなんぞWinGateのTelnet ProxyとかHTTP Proxyとか
使って経由すれば簡単に隠蔽できちゃうし、
ネットカフェでも隠しにはなるからあまり信じていない。

623 :225 :01/08/27 04:03 ID:EG4ish0Q
取りあえず、昨日からの話はハイブリッド型P2Pを前提にして、できるだけ小さなコアでも問題ない
(つまり、2chの転送量を個人でまかなえるレべルまでく減らして、たとえ2chが無くなっても、だれかが代わりを設置できる)
ようなものにするためのものだと考えてます。

というわけで、かちゅーしゃとかでも、サーバやproxyとして設定すればP2Pの恩恵にあずかれるようなものがいいです。
ついでにlogもキャッシュとして流用出来ればいいと思うんですけどね。

>>611
で、それも取っ払って、完全P2Pってことなら、私は上で言ってますけど、トップ(始めた人)が見守ってラスト(今の人)が責任を負うという
方式がいいんじゃないかなって思ってます。

インデックス(板ノード)については、基本的には人のをもらってくるって感じでしょうか?。
まあ、順位を取得しなくても、フロート処理なんて板内にリンクされたスレをsageを除いて新着順にすれば済む話です。

ただ個人的には別に2chの欠点(板の硬直性)までコピーすることはないと思うので
オリジナルとは別に、共有している個々が使いやすいようにその責任で再編成するのもアリだと思ってます。
まあそれは2chではないのかもしれませんが(ス連的?)
基本的には、キーワードプールって感じで捉えています。
要は、自分の板に必要でないスレはごみ箱送り、容量が余ってるうちは置いとくから勝手に持ってってって話ですけど。

>>195みたいなのは駄目ですかね?
>とりあえすスレ立てる時、何かカテゴリかなんかのキーワードを指定すると言うのはどうだろうか?
>逆に言うと各ノードは、取り扱う内容によって詳細なキーワード(板の名前を含む)を持っていて、
>そこに立てると自動的にその属性が付く
>で他のノードのスレで、受け入れ可能なスレがあったら、自動的にノードにリンクさせる

具体的に考えたのは、まずスレを立てる時にジャンルなりキーワードをいくつか指定する。(なければ板のデフォ値とタイトル等)
板ノードは自動的に自分の持ちスレに付いてるキーワードを適当に使って他のスレを検索する。
勿論、キーワードや足切り値などは管理者が指定。
つまり自分の板にふさわしそうなスレを見つけて、自動的に加えられる機能をつけられないかと。

問題はスパム対策ですけど。

624 : :01/08/27 04:32 ID:.A.boK1.
>ただ個人的には別に2chの欠点(板の硬直性)までコピーすることはないと思うので
>オリジナルとは別に、共有している個々が使いやすいようにその責任で再編成するのもアリだと思ってます。
>まあそれは2chではないのかもしれませんが(ス連的?)

同感。2chだって常に変わっている。別に現在の2chにこだわる必要は
まったくなし。

625 :266 :01/08/27 04:41 ID:TRv86eRI
さすがにきついんで今日はここで作業終了。
テストコード真面目に書いてたら手間が掛かるなぁ。
とりあえず今日はこれで寝ます。おやすみなさい。

626 :デフォルトの名無しさん :01/08/27 05:11 ID:L3faF4dI
2chでは一日に数個のレスしかつかないレスが多数ある(というかほとんどでしょう)。
P2Pでそういうのスレッドを常時共有するなら、結局サーバがいる。
現状では、要するにチャットシステムにしかならない。

627 :1 :01/08/27 05:25 ID:UQn5rfWU
ちょっと思ったんだけど、超短期的にrsyncで同期取れないか?

628 : :01/08/27 05:33 ID:.A.boK1.
>>626
>P2Pでそういうのスレッドを常時共有するなら、結局サーバがいる。
>現状では、要するにチャットシステムにしかならない。

じゃぁチャットで。チャットのログが各サーバントのHDDに残ってる。

629 :デフォルトの名無しさん :01/08/27 06:26 ID:MBKxONM2
>>628
そのようなシステムだと、2chでいうレス数が一日に数個のスレでは、
自分がオンライン時に、スレを注目している他の人は、オンラインしていない場合が普通。
スレを注目している他の人がオンラインしていなければ、自分が前回回線を切ってから、
今回オンラインする間に付いたレスは見れない。

結局2chの変わりには全然ならない。タダのチャットシステムにしかならない。

630 :aki :01/08/27 06:27 ID:Z/nLX8Y2
通信技術板でこの手の話しがでてました。参考まで。

転送量増加で2ch閉鎖の危機だってよ。
http://mentai.2ch.net/test/read.cgi?bbs=network&key=998697428

631 :デフォルトの名無しさん :01/08/27 06:48 ID:CSUZ8fsE
>>629
cache をかけたい場合は集約しないとシクシクになるので、
P2P では向かないというのは事実でしょうね。結局 netnews
のように、ある程度集約された server に access しに行く
形状が効率的とかってなっちゃうのかなぁ…。

632 :デフォルトの名無しさん :01/08/27 08:31 ID:DS3JKGwc
なるほど

633 :225 :01/08/27 08:56 ID:EG4ish0Q
>>629
結局、誰もが無責任だからそういうことになるのですよね。
誰も注目してないスレは沈んでゆく。
もともとスレッドフロートの目的っていうのは主にそういう所にあると思いますけどね。

まあ、スレッドが読めなくなるのを防ぐのは、誰かが責任もって、どこかにログを避難することだと思います。
大体、責任者がいなければ、レスの番号が決まらないんじゃないでしょうか?

とりあえず、常時2か3つ以上のサーバンドがログを持つようにすることを義務にすれば、全滅しない限り
ネットのどこかに最新のログが存在すると思います。

自分だけしかログを持ってないことに気づいたら、誰かに預けられる仕組みが必要ですね。
まあ、悪用されないように気をつけなければいけませんけど。

634 :デフォルトの名無しさん :01/08/27 11:19 ID:WKweRLHc
このスレ立った直後からちょくちょく来てたけどたった3日で物凄いレス・・・
早期実現化きぼーん

635 : :01/08/27 12:02 ID:Uofeyeso
>そのようなシステムだと、2chでいうレス数が一日に数個のスレでは、
>自分がオンライン時に、スレを注目している他の人は、オンラインしていない場合が普通。
>スレを注目している他の人がオンラインしていなければ、自分が前回回線を切ってから、
>今回オンラインする間に付いたレスは見れない。

ある程度の冗長性を持たせ、ユーザーには参加費用として、注目していないスレッドのログ
も保存する義務を負ってもらう。「ある程度」をどのように計算する? うーむ思い浮かばない。

636 :デフォルトの名無しさん :01/08/27 12:29 ID:vOjMDCDU
話のメインにはなっていないけれども、ユーザーの削除について。
削除荒しみたいなのが恐いので(プログラム関係では発生しないだろうが、
創価板、ハングル板、政治思想板のように特定集団がいる可能性が
高いところで起こると考えられる)削除賛成のマイナスだけでなく、削除反対の
プラスも入れられるようにしてほしいっす。

メインの流れと外れているので下げます。

637 :デフォルトの名無しさん :01/08/27 12:35 ID:8q2NINpg
すべてのマスターログは2ch.net上にあるんだから、
その時のオンラインユーザの誰もそのログを持っていなくても問題ないんじゃないの?

638 :デフォルトの名無しさん :01/08/27 13:59 ID:qgAoJInU
かちゅーしゃと違って一般のユーザーに利点が見えないのが痛いな。
おそらく普及しない。
やっぱりかちゅーしゃの作者連れてきて対応させるしか。

639 :  :01/08/27 15:05 ID:Zo3BlCCA
いろいろ回ってみた。なんか2chの存続は、結局このスレのあんたらに
かかってるような気がする。がんばってくれ。

640 :375 ◆MsUYMX0E :01/08/27 15:21 ID:4k5SK/AU
>>638

ずばり思ってたことを言ってくださってちょっとうれしいです (^^;;

たしかにみため直接的なメリットないんですよね〜
レスポンスは悪くなるわけだし

最悪2ch.netにIE とかネスケからつなぐのを禁止 とかしないと
(↑極論ですけど)
ほんと2ch.net の処理能力の高さが恨めしいです

641 :266 :01/08/27 15:31 ID:TRv86eRI
なんかおまけ付けたらよいのでわ。
WinMXとかやるとまずいけどIM的な実装を入れて
スレ見てるユーザー同士でチャットなんてのは可愛いと思われ。

642 :デフォルトの名無しさん :01/08/27 15:49 ID:7DytoZz2
ちょい考えました。既出ならすまそん。
P2P とまで大仰ではないですが、
もっとも現在のシステムに近く、もっとも負荷低減を図れるのではと。

・まず、2chサーバに置くCGIはHTMLを吐かない。
その代わり、XML-RPC(か SOAP)でリクエストに答える。
スレ番号、発言番号の範囲を引数に指定するとかか。

・かちゅーしゃとかの専用ブラウザはXML-RPCで直接しゃべる。

・普通のブラウザユーザのためには、HTML ゲートウェイを用意する。
もちろん2ch以外のサーバに適当に置いてもらう。

どうでそ。

643 :375 ◆MsUYMX0E :01/08/27 15:49 ID:k3MsBTsc
>641
あ、266さんお疲れ様です。

チャットですか.. いいかも。ピアレベルで実装できますしね。
ピア間のチャットメッセージの中継はどうしましょう?
>540 みたいなメッセージを新しく追加して対処できるかな?

そもそも中継まで必要ないかも?

644 :375 ◆MsUYMX0E :01/08/27 15:51 ID:k3MsBTsc
>642

XMLってHTMLにくらべてそんなにサイズ減るんですか?
技術的には面白いと思うんですが。

645 :642 :01/08/27 15:56 ID:7DytoZz2
>>644

書式情報は取り除けるので、最低でもその分減るかなと。
(文中リンクはよくわからん)

主目的じゃないですけど、専用ブラウザでの HTML のパースが不必要になって、
楽になるのでは、とも思います。

646 :デフォルトの名無しさん :01/08/27 16:02 ID:.BdCXj2.
ログをJSファイルにする。
JSファイルの外部読みこみ形式を利用しHTML内に読みこむ。
HTMLファイル内で2ch風に処理し表示。
これで、サーバーを軽減?
駄スレスマソ。

647 :266 :01/08/27 16:05 ID:TRv86eRI
>>643
チャットに高いデータ整合性を要求する必要はないと思いますんで
タイムアウト設定したパケットを板ユーザー相手にばらまけば
SearchMessageの亜種として扱えると思います。
もちろんタイムラグとか不達とかが発生しますけど
チャットならまあ問題ないんじゃないかと。

648 :375 ◆MsUYMX0E :01/08/27 16:06 ID:k3MsBTsc
>646

JS って JavaScript ?厨房でスマソ

もしかしたらそういう話は
http://natto.2ch.net/test/read.cgi?bbs=hp&key=998774537
にいる人々のほうが詳しいかも。ちがってたらごめん

649 :375 ◆MsUYMX0E :01/08/27 16:08 ID:k3MsBTsc
>266

ところで266さん、実装のほうはどんな感じですか?

650 :デフォルトの名無しさん :01/08/27 16:11 ID:.BdCXj2.
>>648
そうです。>JS って JavaScript・・・
JavaScriptはWeb板のほうがよさそうですね。
逝ってきます

651 :デフォルトの名無しさん :01/08/27 16:11 ID:GRBfg3.A
掲示板モードとチャット(実況)モードで分けられたらいいかも

652 :266 :01/08/27 16:18 ID:TRv86eRI
まずは外堀からってことで
メッセージデータとメッセンジャーのデータをカプセル化したクラスと
レスデータのキャッシュに使うテーブルを作ったところです。
中身はC++とSTLで書いてあります。
今はルーティングテーブル用のクラスを書いてるところです。
このあとには次のようなものを作る予定です。

1) 2ch.net にアクセスするためのユーティリティモジュール。
2)セッションを管理するクラス。
3)メッセンジャーの送信・受信を管理するクラス。
4)ブラウザに対して HTTPd もどきとして振る舞うモジュール。

1)はBCB付属のコンポーネントを流用するんでほとんど作業はありません。
2)は状態遷移を管理して3)のクラスとの間でやりとりすればいいだけなんでこれも楽。
3)はソケットに馴れてないので手間かかるかも(藁
4)は文字列処理ですけどまずはあんまり凝ったことはしないようにします。
一応全体の見通しはついてるんで書くばかりの作業です。

653 :375 ◆MsUYMX0E :01/08/27 16:21 ID:k3MsBTsc
>651

チャットな人々ってあとでログ見返したりしないのかなぁ?
あとチャット参加しないでほとぼりがさめたあとログだけ見るのを
楽しみにしてる人とかいるのかなぁ?

チャットしてないんでよくわからんです。

>266さん

本当にお疲れ様です。頑張ってください。

654 :デフォルトの名無しさん :01/08/27 16:47 ID:JWbZhsn.
>>641
腐すわけじゃないが、需要としてはキビシいと感じる
オープンソースのブラウザと連携を視野に入れたほうがいいかも
せっかく作っても使ってもらえないと意味がないし

655 :375 ◆MsUYMX0E :01/08/27 16:55 ID:k3MsBTsc
>>654

うーん。カチューシャスレ見に行ったけどソースって結局未公開ですよね..
プロトタイプ作って正式に頼んだら対応してくれるかなぁ..

あとオープンソースのブラウザってギコナビ?あれって開発言語
なんでしたっけ?

656 : :01/08/27 16:56 ID:Uofeyeso
一人で何もかもやるのは、どうせ無理。
自分の得意な部分だけでも作って、P2P型の可能性を示せれば。

普及させるのが得意な人はいるから、その人が利用してくれれば
いいのでは。

657 :デフォルトの名無しさん :01/08/27 17:01 ID:GRBfg3.A
Windowsのクライアントに関してはこっちでActiveXなんかの形でクライアントコンポーネントを配布して
それを組み込んでもらうって形にすれば確実に協力を得られそうな気がするんだけど・・・

658 :266 :01/08/27 17:04 ID:TRv86eRI
>>654
WinMX入れちゃう?これは激しく需要があると思うんだけど。

659 :デフォルトの名無しさん :01/08/27 17:20 ID:b3oIy.qw
それじゃ品性がないね

660 :375 ◆MsUYMX0E :01/08/27 17:38 ID:k3MsBTsc
http://203.174.72.113/p2pcache/P2Pcache/frame.htm

今までの流れを簡単にまとめました。
コメントをいただけると嬉しいです。

661 :デフォルトの名無しさん :01/08/27 17:56 ID:vNMp9UZE
>660
キャッシュサーバは有志による固定のものじゃなくて、P2P cacheを利用する
すべてのホストがなりうるものだと思ってたんだけど、違うのかな?

662 :375 ◆MsUYMX0E :01/08/27 18:01 ID:k3MsBTsc
>661

早速の反応ありがとうございます。

あ、たしかに266さんの
>583 の発言に

※1の部分のキャッシュするというのは
他のピアからも参照されるものとしてキャッシュするという意味です。
ローカルのキャッシュとピアのキャッシュは統合します。
ってなってますね..

ってことは純粋なクライアントっていうのはいなくて
みんなキャッシュになりうるってことなのかな?

でもどうしてもキャッシュになれない参加者もいるとは思うのですが
(モバイルユーザーとか)

この辺検討する余地がありますね、

663 :デフォルトの名無しさん :01/08/27 18:14 ID:iXJvmBGs
Q. P2Pとは?
A. プレステ2プレゼント

664 :266 :01/08/27 18:26 ID:TRv86eRI
>>662
はい、全てのサーバントがキャッシュになります。

いまテンプレートと格闘中です(藁

665 :  :01/08/27 18:33 ID:r5Re7QYg
状況報告が欲しいでス〜

666 :375 ◆MsUYMX0E :01/08/27 19:04 ID:k3MsBTsc
>665

http://203.174.72.113/p2pcache/P2Pcache/frame.htm
にまとめたんだけど.. ダメ?

667 :デフォルトの名無しさん :01/08/27 19:14 ID:U3BzOc.o
>>666
http proxyにするよりhttpdスタイルのほうがシンプルでいいんでない?

668 :デフォルトの名無しさん :01/08/27 19:18 ID:7cfAg4tE
俺みたいな初心者にもすげー分かりやすいんだけど
s0010.htmが文字しかなくって右側にあると思われる図が図になってないよ
フローチャート見たいのがあるんでしょ?文字しか転がってないよ

でもユーザが一番気になるところはリロードしてから表示されるまでの速度
これじゃどうしても今より遅くなっちゃうよね?しょーがないけどさ

669 :デフォルトの名無しさん :01/08/27 19:20 ID:hwTbuWHY
>>666
いいです。
わかりやすい。

670 :デフォルトの名無しさん :01/08/27 19:31 ID:Oeqm.zBM
別スレで書いてみたのですが
Web化したNNTPというのはダメですか?

671 :  :01/08/27 19:49 ID:xheJAhZs
http://cocoa.2ch.net/test/read.cgi?bbs=unix&key=998908154&ls=20
何故かUNIX板に??プログラム板でやればいいのに。

672 :375 ◆MsUYMX0E :01/08/27 19:50 ID:84lc9ln2
>668
再度アップしたんですけど直りました?

673 :◆zKQna1OU :01/08/27 20:01 ID:qSSOslAc
これって要するに2ch.netはログ同期用に存在するだけってことになるわけですか?

674 :375 ◆MsUYMX0E :01/08/27 20:04 ID:84lc9ln2
>673

すべてのクライアントがこのシステムに移行すればそうです。
ただしもちろん書き込み、削除などはすべて2ch.net で行われ、
それがキャッシュを通じて伝播していく形になります。

675 :デフォルトの名無しさん :01/08/27 20:11 ID:7cfAg4tE
>>672
ゴメン、まだ変わらない
別になんとなく内容分かるからいいんだけどさ

こんなかんじ
http://www.geocities.com/dwenyo/not_yet.jpg

676 :375 ◆MsUYMX0E :01/08/27 20:13 ID:84lc9ln2
>675

ブラウザは何ですか?

677 :名無しさん ◆0CYhqCZM :01/08/27 20:14 ID:6kfMn/mA
>>675
画像消えていないか。

678 :デフォルトの名無しさん :01/08/27 20:17 ID:7cfAg4tE
Cuam 0.050b46 on IE5.50です、と思ったらVMLってやつが入ってないみたい
入れたらスゲーカコヨク見れたよ

679 :デフォルトの名無しさん :01/08/27 20:32 ID:Hm13Pwg.
>>677
ジオは直林禁止、別窓にリンクをコピーすれ。

680 : :01/08/27 21:08 ID:Uofeyeso
すみません。Pure型P2Pの研究をここに書いて良いですか?
それともスレッドを別に立てたほうがよいですか?

681 :375 ◆MsUYMX0E :01/08/27 21:13 ID:84lc9ln2
うーん、べつのほうがいいかも...
まぁこのスレもピュア型の研究してたののっとったから
あまり強くはいえないんだけどね(笑)

682 : :01/08/27 21:14 ID:Uofeyeso
わかりました。混乱する可能性ありますからね。

>まぁこのスレもピュア型の研究してたののっとったから

そうだ。ひどいぞ(w

683 :266 :01/08/27 21:22 ID:TRv86eRI
俺の方が別スレに行こうか?(藁

684 :デフォルトの名無しさん :01/08/27 21:32 ID:I6AEE.Bw
ピュア型匿名P2P掲示板システムスレ希望

685 : :01/08/27 21:35 ID:Uofeyeso
P2Pでサーバに依存しない掲示板を作るの巻
http://piza2.2ch.net/test/read.cgi?bbs=tech&key=998915621

たてたYO!

686 :デフォルトの名無しさん :01/08/27 21:44 ID:EqDzKa/o
あ、どうやって使ってもらうか問題ですが、
強制力発揮するのがよいのでは?

1) Client --- GET / HTTP/1.0 ---> www.2ch.net
2) Client <-- RefreshでP2Pcacheご案内 --- www.2ch.net
※P2Pcacheが誰もいないときには、www.2ch.netが動作。

つーか、強制力発揮する為のブラウザサイドでない仕様なのかなと。
Clientサイドに頼ると帆布がとても大変だから。

687 :266 :01/08/27 21:55 ID:TRv86eRI
なんかP2Pを軸にして結構大がかりな話になってきてるね(藁

688 :375 ◆MsUYMX0E :01/08/27 21:59 ID:84lc9ln2
>687

あ、おつかれさまです。
プレゼンまとめてみたんですけどあんなもんでいいですか?

689 :266 :01/08/27 22:03 ID:TRv86eRI
>>688
分かりやすくまとまってていいと思います。
ご協力感謝です:)

690 :デフォルトの名無しさん :01/08/27 22:04 ID:Oeqm.zBM
大掛かりな構想は実現が難しい

691 :デフォルトの名無しさん :01/08/27 22:04 ID:EqDzKa/o
>>687
君のプロトからもっと広がるよー。たぶん(W。
たとえば、キャッシュヒットあげるのに、ls=100で来たら、
cache側で持つ最新ResID送ってレス差分取得とか、
個人でみるスレは大体決まってるし、あるスレ限定で
cache持ってあとは自分でもたないことにして他人のもらうだけ
自分にはほとんど反映せずとか、Diskサイズ使用量を決められる
ようにするとか、FreeBSD/Linuxでも動くようにするとか、
いろいろ。
移植でいえば、STLが気になるが、あとはWinからWSA系関数を
BSD socketに修整すれば大体そのままで動くと思うし。

692 :266 :01/08/27 22:09 ID:TRv86eRI
>>691
STLは確かに俺もちょっと気になってます。
が、VCLを使うよりは遙かに持ち運びしやすいでしょうから(藁
STL以外の環境依存部分は切り離してます。
ソケットとミューテックス以外は環境依存しない形でいけるはずです。
ちなみにプロトコルは一応拡張可能なようにしてます。
ピア間ブロードキャストとピア間1対1通信が行えるってのがコアです。
その上に個別にメッセージを定義してやりとりするようにしてあります。
さて実装実装^^;

693 :デフォルトの名無しさん :01/08/27 22:11 ID:./Dj87Wg
私は難しいことはよくわからないのだが
とりあえず過去ログだけP2Pに移行すれば
2chの回線負荷を少しでも減らせるのでは?

694 :デフォルトの名無しさん :01/08/27 22:14 ID:EqDzKa/o
>>666
す、すまそ。Javascriptなしでも素直に見れるように
して欲しい。。。暇があれば。

695 :デフォルトの名無しさん :01/08/27 22:20 ID:EqDzKa/o
>>693
過去ログだけだとすると、普通のミラーサイトの方が完璧かも。
いわれてみればSite分散て手もあるな。
cgi側でミラーをご案内みたいな。

696 :デフォルトの名無しさん :01/08/27 22:29 ID:RRlePetc
かちゅ〜しゃのデータを相互に交換できる仕組み作るのが一番てっとり早いんでない?

697 :音楽侍 ◆NtVkSITE :01/08/27 22:31 ID:92bYvmYA
>>696
SuperNodeは誰がやるんですか?

698 :デフォルトの名無しさん :01/08/27 22:40 ID:xTh.0GTo
>>629のも一理あるな。
書き込みの少ないとこに対して、ミラーとかCache Proxy
以上に利点はあるのか。
2ch側のピアグループ一覧選択方法を要求されたurl情報を
元に工夫するとか、はたまた、2chのP2Pcacheご案内でなくて
ミラーご案内にするとか。何が一番いいんだろう。

699 :デフォルトの名無しさん :01/08/28 03:28 ID:mSc.uT8s
>>642 あげ

700 :デフォルトの名無しさん :01/08/28 03:46 ID:dJ9UWh8E
>>686
266/375の構想だとHTTPDが要るからできないんじゃないのソレ?
組み込めばいいのかな。

なんだか現状、
ミラーサーバで負荷分散、って意外と難しそうな雰囲気だよね。
2chが凄すぎて引き受けた先がパンクしそうで躊躇しちゃう、って感じ?

701 :デフォルトの名無しさん :01/08/28 03:55 ID:HVcD6kf2
今回の問題に則して考えれば、
マイナー板は誘導で解決できる。
メジャー板の負荷分散がインテリジェントに出来れば
いいんじゃないのかな。

702 :デフォルトの名無しさん :01/08/28 04:13 ID:dJ9UWh8E
>>686
やっぱしP2P-cacheだと現実的じゃないなあ、
Refresh後に紹介相手がいなくなってる可能性大だと思う

703 : :01/08/28 04:14 ID:N/BUjlEA
こんな時間になんだけど、今月いっぱいで2ch閉鎖説が出ている。
運営側も腹をくくったらしい。ソースはあちこちの板で。

この板での試みは、無駄なのか?

704 :デフォルトの名無しさん :01/08/28 04:24 ID:dJ9UWh8E
>ソースはあちこちの板で。

そういうのはソースて言わない
夜勤か切込隊長かひろゆきの発言、もしくは
チェックメイト証明を出しなさい。

705 :名無し :01/08/28 06:51 ID:JS88tdBY
>>703
批判要望板見る限りでは、今月いっぱいの閉鎖は無いと見受けられたけど?
隊長やひろゆきが閉鎖を明言してるわけではないし
夜勤さんも年内でのおつきあい終了はとりあえず否定してたし
君の言うソースはどこからなのかな?

706 :VC++まだ箱のなか厨房(w :01/08/28 07:02 ID:BD3EkxyY
”2ch”に関するガイドライン @ガイドライン板
http://ton.2ch.net/test/read.cgi?bbs=gline&key=998313054

運営側の発言はここがまとまっています
「今月いっぱいで閉鎖」というのはあくまで見通しであり
運営側があきらめたというわけではないととらえるのが適切かと

それに、このスレ自体は2ちゃんが閉鎖されてもホットなトピックですし
議論をやめる理由にはならないと思います。

707 :名無し :01/08/28 07:16 ID:JS88tdBY
仮に近日中に閉鎖された場合、大量の難民によって
類似掲示板はひとたまりもなく潰される危険性があるから
閉鎖を視野に入れた開発は当然有意義になるし早期実現が望まれる
と言うか、このスレは従来のしがらみから脱却した
新しい掲示板類似文化を作り出そうと言うことなので
そもそも2chの閉鎖自体は関係ないのかもしれない

708 :デフォルトの名無しさん :01/08/28 07:46 ID:XQ1eM6xM
匿名で有料か、非匿名で無料か、が望ましいと思います。

709 :266 :01/08/28 09:20 ID:cEXkNGjY
できることはまだまだあると思う。
実装作業は仕事の合間を縫って継続中。
今はネット周りのコード以外はほとんど書いた状態。
仕事がなけりゃもっと時間使えるんだけど・・・(泣)

710 :VC++まだ箱のなか厨房(w :01/08/28 09:45 ID:BD3EkxyY
正直、2ちゃんより仕事の方を大事にした方がいいと思われ・・・
他のスレでもいえることだが・・・

711 :通りすがりのプログラマ :01/08/28 10:21 ID:uk4SLKk2
ハイブリッド型説得力ありますね。順次導入して効果があげられそうなので。期待age。

閉鎖なら閉鎖でポスト2chを狙って、中央サーバなしに移行とか。またビジネスモデルが楽しそう。

あとはパッケージというかクライアントの導入がしやすくなるといいですねぇ。

712 :__ :01/08/28 13:13 ID:aE5uBalY
コミュニティが消滅させられた。
何の連絡も警告も無しに、何重もの掲示板が消えた(合掌)。

有志により避難板が用意されたが、未だに2chのトップページにそこへの
リンクはない。運営者からはあいまいで部分的な説明があるだけで、正式
には何の説明もない。ここもいつ消えるか分からない。2ch.netに依存する
のは危険。

掲示板はビジネスにならない。P2P化されたとしても、どうやって収益?
広告モデル(w 本題と異なるのでsage

713 :通りすがりのプログラマ :01/08/28 13:44 ID:uk4SLKk2
>コミュニティが消滅させられた。
>何の連絡も警告も無しに、何重もの掲示板が消えた(合掌)。

予兆があるだけましかなーと。
三層にも、サーブレットにもしてなかったというほうが驚きです。
お金は一時期あったはずなので(ひろゆき氏いい車買った情報に基づく)、
開発にも投資していると思ったのですが。
これだけ勢いがついていれば、2ちゃんねらーの有志を雇うとか、
オープン化して、2chクローンをいくつか立ち上げておくとか(慌てて作るよりプロトタイプが動いていれば
板休止も納得いくでしょうに)。
CEOは先を見てくれないと。

>掲示板はビジネスにならない。P2P化されたとしても、どうやって収益?
>広告モデル(w 本題と異なるのでsage

P2Pも海の向こうでおおこけだから、商売は考えないほうが...。
今だとアフィリエイトに力を入れてるところが多いけど、一過性みたいだし。
きわものとしか組みにくいというのも弱点だったかも。
有志による分散型中央サーバで管理(藁

714 :デフォルトの名無しさん :01/08/28 14:08 ID:/J/VCZIY
そもそもビジネスじゃないじゃん。
つーか板違いにもほどがある。

715 :ぬゎぬゎすぃ〜 :01/08/28 14:39 ID:2ETzjtYA
>>666
わかりやすいですね。
今の2chというかたちで存続させるには、実用性のありそうな策だと思います。

「2chを救うツールです、みなさん協力してください」というスタンスで配布するより
インストールした人にとっても便利な道具であった方が利用者は増えるでしょうね。

・新しい書きこみをローカルに適宜取りこんでくれる
・専用ビューアと組み合わせて、かちゅーしゃ的お便利ツールを形成する

というあたりのメリットを訴えて普及を促すとか。

#余裕があったら集計用鯖立てて、自分の飼っているhttpdが
#他ユーザの解決に貢献したら1ポイント加算、とか。
#「名誉」を賞品にしてポイントレース...いや忘れてください。

716 :ななし :01/08/28 14:51 ID:TF2Y3iLY
というかさ、今のcgiを使って一部の板を外部に出せるかを考えた
ほうがいいのでは?それで、サーバー提供者が現れなければ、
P2Pも夢で終わってしまう。
まあ将来を見越してP2Pを考えることも決して悪いとは思わないが
実現する可能性で考えた場合、かなり難しいと思うがどうよ。

717 :  :01/08/28 15:33 ID:wbPRJa5.
>>716

>>666 の方法だったら、設定ひとつで変更できると思うよ。
新しい鯖に移行した際に、見に行くサーバ名を変更してやればいいんでないかと。

718 :  :01/08/28 16:26 ID:qtXNeTyw
ひろゆき、聞いているか? 理系、技術系の広告で雑談板が養えるぞ。 専門性が高ければ高いほど金になるぞ。
絶対に理系板と技術板は手放してはいけない。
どっかの巨大企業が安値でコンビニ子会社を手放したら
そのコンビニ企業が大成長してしまったでしょう。
バイオ企業広告で飯を食っているメディアはこんなになるぞ。
http://medwave.nikkeibp.co.jp/ndi/index.shtml
http://biztech.nikkeibp.co.jp/biztech/medi/
http://medwave.nikkeibp.co.jp/health/
http://biobiz.nikkeibp.co.jp/biobiz/index.html
http://biotech.nikkeibp.co.jp/NBTOL/
http://medwave.nikkeibp.co.jp/nhc/
http://medwave.nikkeibp.co.jp/nm/index.shtml
http://medwave.nikkeibp.co.jp/MED/
http://biotech.nikkeibp.co.jp/BIO.shtml
2ちゃんの生物板や医者板にバナー広告をつけたがる企業が無尽蔵にいるぞ!
生物板は動物好きが野生動物板に隔離されたので
純粋なバイオ系の研究者しかほとんど残っていない。
チェッチェンの首切り画像を生物板で紹介したら
ほとんどの研究者はその恐怖画像を知らなかったので
不潔な板との接触が少ない人材がそろっているぞ。
教授の悪口を書くと、すぐにその教授が反論することもあるから
大学の予算を決める、機器購入決定権のある教授も見ているぞ。
この実態を知れば、バイオ企業は広告を打つぞ。
ヤクルト、明治製菓、萬有製薬、サントリー、大塚製薬、寶酒造、協和発酵などなど
(他にもある具体的な企業名は生物板の連中に聞け、レスが遅いと思うが
 ■■■■■ 生物版自治スレッド ■■■■■
 http://cheese.2ch.net/test/read.cgi?bbs=life&key=994669460 )
コアな人材を求めるコアな東証一部上場企業はたくさんいるぞ。
試薬メーカー、検査機器メーカーも涎をたらすぞ。 専門性が高ければ高いほど金になるぞ。
化学板なら化学メーカーが広告につくぞ。理科系技術系は金になるぞ。 !

719 : :01/08/28 17:20 ID:gBeq28w6
ここのハイブリッド型P2Pが今の2chを救うのにぴったりな
気がするぞ。間に合うかどうか心配だけど。
もっとここに人を集中させたらいいんじゃないの?なんかいまいち
マイナーな扱われ方されててちょっと不思議なんだ。

720 :375 ◆MsUYMX0E :01/08/28 17:22 ID:efUShCBo
>719

ご期待ありがとうございます (^^;;;

えっと、
http://203.174.72.113/p2pcache/P2Pcache/frame.htm
をだしてからそろそろ丸1日経過しましたし、具体的な
実装始めたほうがいいんですかね?
とりあえずやることは
●各プロトコルの設定

ですか?

266さん、いらっしゃったら返事ください。

721 :デフォルトの名無しさん :01/08/28 17:28 ID:crVbQDjo
>>713

あれは買った自転車に「ベンツ」って愛称をつけてたんでしょ

722 :266 :01/08/28 18:28 ID://bFJTXs
>>720
ども。手元の実装は6〜7割方片づいてます。
セッションマネージャのテストとデバッグができたら
ネットアクセス部分を書いてひとまずクライアント側は形になります。
仕事と並行なんで結構きついんすがなるべく早めに書き上げるつもりです。
プロトタイプは多分このまま俺一人でやった方が早いと思います。
目標は明日夜の実験用プロトタイプリリースです。

で、この後の問題なんですが
鯖側環境をどうやって作るかでちょっと迷ってます。
いきなり 2ch.net 上に cgi を置いてもまずいでしょうし。
どなたか適当な場所に 2ch そっくりの環境を作れませんかね?

723 :デフォルトの名無しさん :01/08/28 18:35 ID:efUShCBo
>722

あ、お疲れ様です。

ところで確認になるんですが、いまキャッシュ間のセッションのプロトコルって
TCPの上になにを流してるんですか?
>538 とかの構造体をSerializeしたものそのままですか?

サーバについてはたしかにテストサーバが欲しいですね。

[キャッシュ型負荷分散システム開発スレッド]
http://cocoa.2ch.net/test/read.cgi?bbs=unix&key=998908154

でも鯖探してるみたいなんで相乗りできないかな?

724 :266 :01/08/28 18:43 ID://bFJTXs
>>723
おっしゃる通り件のデータをシリアライズしたものです。
TCPから上の層は全部独自プロトコルになります。
バイナリでメッセージのパケットをやりとりする予定です。
実際のデータのやりとりはメッセージ単位になるんですが
ある一連のメッセージの固まりに対応する
状態管理用のインスタンスが各ピアに生成されるんで
このインスタンスとこのインスタンスによって管理されるメッセージの全体を
セッションと呼んでいます。

725 :375 ◆MsUYMX0E :01/08/28 18:56 ID:efUShCBo
>724

うーん。ま、いまはアーキテクチャの検証なので独自プロトコルでも
いいんですが、今後はXMLとかにしたほうがいいかもしれませんね。

もっとも今はプロトの完成を優先させたほうがいいと思いますので
よろしくお願いしますです。

726 :266 :01/08/28 19:01 ID://bFJTXs
>>725
その辺には柔軟性を持たせてありますんでご心配なく:)
シリアライザさえ書き換えればテキストにもXMLにも対応できます。

727 :ネジ :01/08/28 21:04 ID:KZ340Mcw
>>715
いっそかちゅ〜しゃの機能のひとつとして組み込んでしまっても良さそう。

728 :デフォルトの名無しさん :01/08/28 23:02 ID:D1LGeUx.
>>700
>266/375の構想だとHTTPDが要るからできないんじゃないのソレ?
>組み込めばいいのかな。
今の話だと、Clientから見てHTTPd or Proxyにみえるような機能を
組み込む話だったと思う。

>>702
>やっぱしP2P-cacheだと現実的じゃないなあ、
>Refresh後に紹介相手がいなくなってる可能性大だと思う
それは課題だが、紹介先になる相手に関しては常時接続のとこを
選んで、開始終了通知を2chに対して行うようにするとか、
策はないわけではないと思う。

729 :デフォルトの名無しさん :01/08/28 23:05 ID:D1LGeUx.
>>715
正味な話、かちゅーしゃの人を巻き込むのは可哀想と思う。
こういうことを想定して作ったかというとわからんし。
本人の意志次第だけど。

730 :729 :01/08/28 23:07 ID:D1LGeUx.
715->727

731 :デフォルトの名無しさん :01/08/28 23:13 ID:D1LGeUx.
>>722
HTTPd : http://www.apache.or.jp/ でWin版
perl : WinPerl http://www.sosb.com/hp/apache/ 参照
ちょ〜簡単Apache For Win32 (win95,win98) ...

で、ローカルテストはだめ?

732 :266 :01/08/28 23:17 ID://bFJTXs
>>731
やってみます:)

733 :最初から名無し :01/08/29 00:09 ID:BWWAYazA
Win32環境でアクティブパールなら入っているが・・・
因みに回線とてーも細いのでちょっとしたテストぐらいにしか使えないが
提供するかい?

734 :375 ◆MsUYMX0E :01/08/29 00:26 ID:Df87R1cY
ところで 266 さんはクライアントとキャッシュ(ピア)を作られてるって
ことですよね?

2ch.net におく新cgi ってどうなってるんでしたっけ?

あと 1さんの >570 の書き込みは期待していいのかな?

735 :デフォルトの名無しさん :01/08/29 00:34 ID:PFBD8yCo
>>734
まったく決まってないよ。
266さんのI/Fに沿う形から叩きあげていくと思ってる。

736 :デフォルトの名無しさん :01/08/29 00:38 ID:Df87R1cY
>735

了解。ってことは read.cgi とか bbs.cgi 開発してるかたがたとも
連絡とったほうがいいのかな?

でもその前に仕様を詰めたほうがいいかも。
ということで再掲
---
●2ch.net 側の実装物について
ピア管理を行う CGI の実装が必要。
次のような動作をするものでよい?

基本的な動作は 2ch.net 上の各種のリストを読み出すこと。
動作パラメータは次の通り。

  do:読み出し対象リストの選択。値は以下のいずれか。
    threadlist = スレ番号の一覧
    reslist = レス情報の一覧
    abornlist = あぼーんされたレスの番号の一覧。
  board, thread:板やスレッドの指定。
  from, to, ls, nofirst:read.cgi に同じ。読み出し範囲の指定。
  bycontent:do==reslist && bycontent==true ならばレスの文面を返す。

レス情報は、レスIDとレスサイズ、ハッシュのペアからなる。
レスIDは時系列にそって順序比較が可能で各レスについて固有であれば何でもよい。
reslist bycontent はキャッシュヒットしなかった場合の差分更新に用いる。
※レスIDには ETag が使える?
---

737 :375 ◆MsUYMX0E :01/08/29 00:47 ID:Df87R1cY
名前入れ忘れてもIDでばればれなのはある意味便利かも(^^;;

では はじめに do = threadlist からいきましょうか?

まず read.cgi との互換性から考えて
board -> bbs
thread ->key
のほうがいいと思います。

で、
p2p.cgi?bbs=tech&do=threadlist にたいしては
990334284 990335283 990334286 99033625
ってな感じのスレIDとハッシュをかえすのですが (>>390 あたり参照)

このとき返すハッシュというのは何のハッシュなんでしょう?
1.最新レス10個分についての全レスを一つにまとめたもののハッシュ
2.最新レス10個分について最新10レスずつ を一つにまとめたもののハッシュ
3.最新レス10個分についてそれぞれ最新10レスのハッシュ(ぜんぶで10個)

3がいちばんいいとはおもうのですが。
(上位10スレ表示で、それぞれ最新10レスを表示すると仮定してます)

738 :266 :01/08/29 00:59 ID:LcXmxRIU
>>737
ハッシュはレス情報リスト(=reslist)の時にのみ生成することを想定しています。
スレリストや板リストの場合にはスレIDおよび板IDの一覧のみでOKです。
なお、レス情報リストの時のハッシュは1レスごとに1ハッシュ(っていうかMD5)です。

739 :デフォルトの名無しさん :01/08/29 01:02 ID:PFBD8yCo
>>736
個人的な考えだが、bbs.cgiは極力さわらず、
read.cgiの改造(というか新規)と追加cgiの作成が必要で
これらを全部それなりに作ってみせた後でないと
向うの手をわずわらせてはいかんと思う。

これらの作成は266の終ったあとからだと遅いかもしれんね。
とりあえず、必要なものを列挙して、266に外部I/Fを確認して
作るしかないか。

とりあえず思い付く範囲。

[2chToCache_List]
2chから板/スレ(& hash)/他CacheIP Port一覧取得用

[2chToCache_Article]
2chから記事取得用

[2chToCache_ArticleHash]
2chから記事hash取得用

[2ch_DeleteArticle]
2ch側記事削除用(既存のでレス番が一意で無い場合)
# 現在の削除cgiが行毎削除だとレス番がずれる。
# Hashみて工夫する場合には不要かも。

で、2ch直接接続をRefresh(or Location)用のcgiは後まわしかなぁ。

740 :デフォルトの名無しさん :01/08/29 01:07 ID:PFBD8yCo
>>739
て、なんか間違ってる気もする。
2ch(cacheが誰もいない時)からの記事の取り寄せとチェックはどない
でしたけ。

741 :デフォルトの名無しさん :01/08/29 01:08 ID:Df87R1cY
>738

あ、了解です。
ってことは

p2p.cgi?board=tech&do=reslist&thread=94723004

にたいしては

↓バイト数    ↓MD5(32Byte)
134,899ff335faf5ff334577 (=res1)
234,899ff335faf5ff334576 (=res2)
234,299ff335faf5ff334577 (=res3)

というようなのが帰ってくるわけですよね?
これはどうやって返します? たとえば
上ではMD5は16進表記でASCIIにして
全体をCSVにしてますけど..

742 :266 :01/08/29 01:08 ID:LcXmxRIU
>>739
俺としては既存の CGI に対しては、

1)レス発言時のハッシュの生成と記録。
2)スレ立て、順位変動時の一覧の更新。

という二つの機能の追加だけを行って、
データの読みとりには p2p.cgi みたいな名前の
専用のものを追加する形を考えてます。
既存のものに対しては追加のみを行う格好です。

743 :375 ◆MsUYMX0E :01/08/29 01:09 ID:Df87R1cY
>740

既存のread.cgi をそのまま使うっていいのでは?

あと記事削除cgiは必要ないです。基本的に投稿と削除は
現状維持を考えてます。

744 :266 :01/08/29 01:11 ID:LcXmxRIU
>>741
特に拘りはありません。
鯖から拾ってきたリストは適当なフィルタに食わせるわけですが
そのフィルタが作りやすければなんでもいいです。
提示して頂いた16進ASCIIのCSVでもBCBならVCLの
StringクラスとStringListクラスを使えば一発で処理できるんで問題なしです。

745 :375 ◆MsUYMX0E :01/08/29 01:19 ID:Df87R1cY
>744

了解です。あとあぼーんなんですけど

単にあぼーんされた
287 名前:あぼーん 投稿日:あぼーん
あぼーん

とかはMD5の不一致により2ch.net から再度読み込むという
処理に組み込めるのですが

レス番ごと切り詰められたあぼーんの場合どうします?
たぶんそのために do=abornlist を作られたのだと思うのですが
できたら具体的な動作を教えていただけると嬉しいです。

746 :デフォルトの名無しさん :01/08/29 01:21 ID:PFBD8yCo
>>all

1)レス発言時のハッシュの生成と記録。
bbs.cgi改造案と、read.cgiでのリプライ時に計算してつけるのと
ありますが、方針としては、bbs.cgi変更の方がよかですか?

2)スレ立て、順位変動時の一覧の更新。
スレ&板の追加/削除用ですね。
スレNUM==順位でhash確認?のようには変動しても平気?
それともスレNUMの他に順位項目が必要?

3)データの読みとりには p2p.cgi みたいな名前の
記事自体と、記事hash取得と両方は必要ですよね?
と、それだけあればいいですか?

747 :375 ◆MsUYMX0E :01/08/29 01:29 ID:Df87R1cY
>746

1)
たしかに毎回計算するよりは bbs.cgi で一緒にdatに埋め込んだほうが
いいと思います

2)
ハッシュはスレID(key)と1対1対応になります。
順位はCSVの並び順って言うのが素直な実装かと。

3)
記事自体の取得は従来の read.cgiで、
ハッシュと上位記事取得は p2p.cgi です。

あ、あとクライアントが呼び出すピアのID取得はどうしましょう?
別のcgiにします?  

748 :デフォルトの名無しさん :01/08/29 01:29 ID:PFBD8yCo
>3)データの読みとりには p2p.cgi みたいな名前の
>記事自体と、記事hash取得と両方は必要ですよね?
すまそ。記事自体はread.cgiだたね。
p2p.cgiではhashだけあればよいのね。

でもここ夜はいつも三人な(藁

749 :しろうと :01/08/29 01:33 ID:c6SAVs3Q
みなさんごくろうさまです。
応援だけしかできませんが
がんばってください。

750 :266 :01/08/29 01:34 ID:LcXmxRIU
>>745
レス情報一覧とも絡むんですが
一番望ましいのはレス一個ごとに固有のIDが振られることです。
その上で、あぼーんリストにはあぼーんされたレスのIDを並べておくわけです。
レスのIDはスレ内で一意で且つ順序比較ができれば中身は問いません。
このIDは切りつめ不能なものでなければなりません。

751 :266 :01/08/29 01:36 ID:LcXmxRIU
>>746
1)は俺も bbs.cgi に機能追加する方がいいと思います。

2)は >>747 で 375 さんがおっしゃってる通りです。


>>747
ピアのアドレス一覧は read.cgi あたりで生成しておけばいいでしょう。
これを読みに行くときは保存されたデータファイルを直読みするか
何かの cgi を追加してそいつ経由で読むかですね。
後者だと 2ch 側で負荷を見て色々と調整できるだけ柔軟でいいと思います。

752 :266 :01/08/29 01:38 ID:LcXmxRIU
>>748
あまりに人気がなくて、作ってもそのまま無視されかねないかも(藁

ところでどっかにうぷ板ありません?
説明用の図を一枚作ったんで上げておきたいんすけど。
説明文がまだなんですが参考にはなると思います。

753 :375 ◆MsUYMX0E :01/08/29 01:38 ID:Df87R1cY
bbs.cgiスレに
--
datファイルの書式

【各々レスに埋込案】
<b>名前</b>,sage,01/04/06 22:50 IDxxxxxxx,本文,スレタイトル,nnmmpppqqqq
<b>名前</b>,sage,01/04/06 22:50 IDxxxxxxx,本文,nnmmpppqqqq

nn は62進数2桁でこの行のレス番号を記録
mm は62進数2桁でこの行のバイト数を記録
ppp  は10レス前の絶対バイト位置 % (62^3)
qqqq は50レス前の絶対バイト位置
現在のファイルポインタよりmm+1バイトが'\n'なら正常とみなす

【アボーン時の処理】
あぼーん時は同じサイズで塗りつぶすようにする。
インデックスのレス番号に00を入力したレコードを出力する。

あぼーん,,,,,00mm

って感じでどうでしょうか。
--


みたいなことが書いてありましたけどこれで確定なのかな?
もしこれならレス番号(=nn)は あぼーんされても変動無く一意に
なるのですが..
ただこの場合切り詰めあぼーんのときに実際のレス番号と
nnが食い違うことになりますが..


>でもここ夜はいつも三人な(藁
アラーシがこないだけましということにしましょう(笑


754 :デフォルトの名無しさん :01/08/29 01:42 ID:.vw5ElIM
>>753
切りつめあぼーんてまだ必要かな。

755 :375 ◆MsUYMX0E :01/08/29 01:45 ID:Df87R1cY
>754
廃止とか言う話もあるんですか?
他のスレ追いきれないもので..

756 :デフォルトの名無しさん :01/08/29 01:46 ID:PFBD8yCo
>>752
http://www8u.kagoya.net/~lolink/cgi-bin/imgboad.cgi
おっぱいあぷろーだ(藁
もっとましなのないかな...

757 :デフォルトの名無しさん :01/08/29 01:49 ID:Df87R1cY
>>751
ピアのアドレス一覧は read.cgi あたりで生成しておけばいいでしょう。
これを読みに行くときは保存されたデータファイルを直読みするか
何かの cgi を追加してそいつ経由で読むかですね。
後者だと 2ch 側で負荷を見て色々と調整できるだけ柔軟でいいと思います。

了解です。では
getpeer.cgi?bbs=tech

175.47.4.4,1300
127.53.15.44,1250
17.74.0.13,130
みたいなIPと何らかのピアの重み付け が帰ってくるとかいう
感じでしょうか?

まぁ最初は重み付けは全部100とかでいいとおもいますけど。

でもこれだとピアグループが実現できないなぁ..

758 :266 :01/08/29 02:01 ID:LcXmxRIU
>>757
read.cgi で板ごとのディレクトリに分けて
ピア一覧を保存すればグループが組めます。
ピアの重み付けなど最適化に関するパラメータは今後の課題ということで。
それと、ピア一覧を作る時には read.cgi 中で
ピアの情報を取得しなくちゃいけませんけど
これは USER_AGENT にその辺の情報を入れておくってあたりを考えてます。
User-Agent: P2Pcache/1.0 port:xxxx みたいな感じで。

759 :375 ◆MsUYMX0E :01/08/29 02:08 ID:Df87R1cY
>758

USER_AGENTでPort指定 っていうのはいいアイデアですね。

ところでふと思ったんですけど

レスごとにピアを管理

スレごとにピアを管理

板ごとにピアを管理

ピアグループごとに板を管理

ピアをすべてまぜて管理

の順に2ch.net の処理は軽くなり、かわりにキャッシュヒット率はおちる
(ピアのリストの質が落ちる)
と思うのですが、現状の処理能力からして板ごとの管理で
いい気がしてきたのですが...

760 :266 :01/08/29 02:13 ID:LcXmxRIU
>>759
ん?おっしゃってることがちょっと分かりません。
ピアグループというとJXTAのアレみたいなのがありますが
P2Pcacheの場合にはああいうきちんとしたグループはありません。
クエリーを投げる対象が
ある板に現在登録されているピアの集合に限定されるわけですが
そのピアの集合のことをピアグループと呼んでいます。
実際にはこのピアグループに SearchMessage を投げると
メッセージが増殖してグループから染みだしていくことになります。
2ch.net 側は単に板ごとの現在の住人のアドレスを管理するだけです。

761 :375 ◆MsUYMX0E :01/08/29 02:16 ID:Df87R1cY
>760
あ、ごめんなさい。勘違いしてました

板ごとにピアを管理する ってことですね。汗汗

762 :デフォルトの名無しさん :01/08/29 02:39 ID:PFBD8yCo
266 & 375
メイルくれぃ。和GEOに場所とった。
パス公開すると荒されてすぐ削除されそうだから
とりあえず何人かに送る。

763 :デフォルトの名無しさん :01/08/29 02:49 ID:PFBD8yCo
http://www.geocities.co.jp/SiliconValley-Sunnyvale/1506/
ちなみにテキスト程度orUUENCODEとかなら、
ゲストブックに書くという手もある。その場合はメイル不要。

764 :デフォルトの名無しさん :01/08/29 02:54 ID:PFBD8yCo
guestbookは、最初にかきこんでエラーになったら
再度書き込みすると二度目はOKみたい。

765 :デフォルトの名無しさん :01/08/29 04:13 ID:ZBY2WPkM
あ、375さんはページとりあえずあるんですよね。(^^;
必要or共用した方が効率がよければ、メイルください。
と、こっちを266さんのファイル置き場にして、
375さんのページから物だけ参照してもらった方が
てっとりばやいかな。
とりあえず説明図を頂いたのでおきました。
http://www.geocities.co.jp/SiliconValley-Sunnyvale/1506/files/P2Pcache.jpg
# pngを頂きましたが、jpgに変換しました。

766 :375徹夜決定 ◆MsUYMX0E :01/08/29 04:25 ID:Df87R1cY
うけとりました。サンクス。

あの図はピア内部の構造図ですよね。

そろそろ具体的なプロトコルも含めた開発者向けのプレゼンを
作ろうと思っているので、ぜひ使わせていただきます。

767 :375 ◆MsUYMX0E :01/08/29 06:01 ID:Df87R1cY
上の図眺めててふとおもったんだけどさ、
ピアって普通のプロバイダのcgiとして設置すること可能じゃない?

2ch.net にはポート番号じゃなくて

"www.provider.ne.jp/hoge/peer.cgi"
のように呼び出すCGIを登録する。


たとえばSearch message をわたすときは

www.provider.ne.jp/hoge/peer.cgi?type=search&count=5&bbs=tech&key=19510437

で、返事はXMLで返すようにすればperlで実装可能だし。
ただ永続的に動くわけでないので状態管理が少し面倒になるのと
プロバイダからすぐ追い出されそうなのが欠点だけど..

768 :デフォルトの名無しさん :01/08/29 13:46 ID:jAssUvRc
すばらしいスレですね。
応援だけしかできませんが頑張ってください。

769 :375 ◆MsUYMX0E :01/08/29 17:40 ID:RZ89zfy6
うーん、昼は昼で反応ないなぁ
それとロケット打ち上げ成功おめでとう

>767 のアイデアなんだけど、実際プロクシCGIのようなアクセス受けてさらに
他のホストにアクセスできるCGIがおけるプロバイダってどれぐらいあるんだろ?

おしえてWebProg板の偉い人?

770 :デフォルトの名無しさん :01/08/29 20:53 ID:NuzxCJ3M
perl で言うと LWP モジュールなどが使えるってこと?
それなら無料レンタルスペースでもいくつかあると思うけど。

771 :てんてんdwp@ yankee.tokyo-nazo.net :01/08/29 21:05 ID:DVACnJqw
128KbpsのOCNエコノミーでもいい?
いいんならテスト用のサーバ立てるけど。

772 :266 :01/08/29 21:17 ID:FM3PGJUk
>>771
おおっ、ぜひともお願いします。

773 :てんてんdwp@ yankee.tokyo-nazo.net :01/08/29 21:29 ID:DVACnJqw
>>772
了解です。
ただ、すぐにというわけにはいかないので来月まで待ってね。
それまで、うちのwebサーバでよければ実験用に貸します。
スピード遅いけど。
#現在Linuxインストール中(^^;;週末にインストール予定。
一応グローバルIPにまだあまりがあるから2ch.tokyo-nazo.net
立てるんで。unix板のミラーリング計画と共用ってことで。
インストール前だから聞くけど、HDD8Gじゃ足りないかな?

774 :266 :01/08/29 21:36 ID:FM3PGJUk
>>773
あくまでも実験用なんで容量や回線は要求しないと思います。
鯖側に放り込むものは現状の 2ch とほぼ同じ環境と
幾つかの拡張 CGI (perl製)ぐらいで済みます。

775 :デフォルトの名無しさん :01/08/29 21:54 ID:E8zeMvHE
266さん、375さん、メイルを送りました。
届いていなかったら教えて下さい。
# 375さんはたった今送りました。

776 :てんてんdwp@ yankee.tokyo-nazo.net :01/08/29 22:02 ID:DVACnJqw
>>774
なら、専用サーバ立つまでは今あるwebserverにぶちこみますよ。
近々独立させるとしても。
ということでよろしいですか?
ただ、社会人なので夜とか朝しか更新もメール読むのもできない
点は勘弁を。

777 :266 :01/08/29 22:06 ID:FM3PGJUk
>>775
俺の方へはまだ届いてないみたいです。
遅延しまくりの freemail だから少し時間掛かるかも。

>>776
ありがとうございます。
ちょっとした実験だけなんで 2ch もどきがあれば十二分です。
ご協力ほんとに感謝です。

778 :375 ◆MsUYMX0E :01/08/29 22:11 ID:RZ89zfy6
メールいただきました。
ご協力に感謝いたしますです。

779 :てんてんdwp@ yankee.tokyo-nazo.net :01/08/29 22:12 ID:DVACnJqw
>>777
困ったときはお互い様。
それでも礼を言うならラウンジャーに言ってくださいな。
私を動かしたのはあるラウンジャーからの一通のメールだから。

具体的に何をするか教えてくれれば今夜か明日の夜にはスクリプト
放りこみます。

780 :デフォルトの名無しさん :01/08/29 22:14 ID:E8zeMvHE
>>777
念のため、もう一度送りました。
二通届いたら破棄してください。

781 :266 :01/08/29 22:24 ID:FM3PGJUk
>>775
メール届きました。
昨晩いただいた分でしたね。
返事しないでいたのすっかり忘れてました。すいません。
和塩の方は配布サイトなどに活用させていただきます。

>>779
ってことはこのスレ、ひそかに期待されてるんですね。
是非ともがんばらなくちゃいけませんね。
なるべく早めに必要な設定項目などをまとめてここに書いておきます。

現在の実装状況は次の三つを残して全て完了したところです。

1)サーバーからのデータ取得。
2)ピア間のデータ交換処理(ソケット周り部分のみ)。
3)セッションの状態遷移管理。
4)収集したレスの表示用整形ルーチン。

1)は鯖側 CGI とペアになるんで実験のことも合わせて少し考えなくちゃいけません。
2)は単に TCP で繋いでストリームを交換するだけなんですぐです。
3)は処理フローは書いてある状態ですんでコードに落とすだけです。
 ただ、セッションの複製周りで少し検討したいところがあって保留しています。
4)はプロトタイプの段階ではほとんど整形しない生ログ状態の表示にします。

ひっかからなければ今晩中にもの自体は実装できそうです。
ただ単体じゃ実験にならないんで屋内のLANを使って
ちょっとした実験をやるつもりです。

今から風呂はいってきます(藁

782 :266 :01/08/29 22:25 ID:FM3PGJUk
>>781
三つじゃなくて四つでしたね(藁

783 :375 ◆MsUYMX0E :01/08/29 22:29 ID:RZ89zfy6
すぐ上のスレから引用 (^^;;

今のところ「bbs.cgiは公開しない」という方針だそうなので、
出来ることは仕様の策定と、実装実験のみですね。

あと、ここまで話し合ってきたdatの新仕様案について、他のス
レッド(ミラー、P2Pとか)の方々とか、実際動いているスク
リプトの保守をしている管理側の方とか、monazillaプロジェク
ト(専用UAの作者)の方々とかの意見が聞きたいです。
特に現在のbbs.cgiの保守をされている方の意見が聞きたいなあ。
(このスレッドは見られているのでしょうか?)

簡単に現在出ている案をまとめます。(括弧内は私見です)

◎あぼーんを塗りつぶしで行う
 ほぼ同意を得られたと思っています。特に反対意見は無かった。

◎インデックスの作成方法。
・別ファイル(一番単純だけど、別ファイルになるのが何とも)
・dat冒頭に20レス毎、50レス毎の領域を作る。(単純さは
 良いのだが、現在のdatの仕様とかけ離れてしまいそうな。)
・dat冒頭に1000レス分領域を作る(1000全部は要らないような)
・レス毎にフィールドを作成し、1レス前50レス前等のインデ
 ックス情報を追加。(現行のdatに即するならベスト。ただ、
 作成、解析の手間が煩雑かな。)
(どれにせよ、インデックスの修復機能は実装する必要がある)

◎あぼーん情報
・datのレコードに即した構成であぼーんレコードをdat内に追加する。
・レスの毎にフィールドを追加して、あぼーん情報をそこに納める。
(あぼーん情報の保存方法は、どっちもどっちの様な気がしてます。)

われわれとしてこれにコメントすることをまとまませう..

まず思いついたのが
・datにハッシュを一緒に埋め込んで欲しい
・インデックスを修復してもあぼーんしたメッセージを飛ばさないでほしい
(レスの番号が変化しないようにして欲しい)

ほかなにかありますっけ?

784 :デフォルトの名無しさん :01/08/29 22:46 ID:E8zeMvHE
>>783
スレの上げ下げの一覧作成はどのタイミングでしたっけ?
bbs.cgiあたり?

785 :デフォルトの名無しさん :01/08/29 23:10 ID:QIUPlCko
>783 bbs.cgiを弄ってたトオル★は、2chを去るそうです。合掌。

786 :266 :01/08/29 23:12 ID:FM3PGJUk
>>783
毎度です。
こちら側が鯖に求めるのは次のリストの管理と提供です。

1)過去の一定時間内にその板にアクセスした P2Pcache ユーザーのアドレス一覧。
  IPとポートが必要です。
  加えて P2Pcache のバージョンとかもあった方がいいかも。

2)板の一覧。
  板のIDと名前のペアの一覧が必要です。

3)板に属するスレの一覧。
  スレのIDと名前のペアの一覧が必要です。
  このスレのIDはフローティングの順序にそって並んでなくてはなりません。

4)スレに属するレスの一覧。
  レスのID、サイズ、ハッシュ(MD5)、の組の一覧が必要です。
  レスのIDはスレ内で一意で且つ順序比較が可能であることが必要十分条件です。
  ※今思いつきましたが無効ハッシュ値をあぼーんフラグにしてもいいかも。

5)レスの内容の一覧。
  キャッシュヒットしなかった時に差分更新するために
  レスの内容を個別に取得できる必要があります。

これらが鯖上でどのように保存されるかは問いません。
適当な名前の専用 CGI (p2p.cgi とか)を経由して取得できればOKです。

787 :266 :01/08/29 23:13 ID:FM3PGJUk
sageで書いてしまった。

788 :デフォルトの名無しさん :01/08/29 23:34 ID:E8zeMvHE
>>786
1)過去の一定時間内にその板にアクセスした P2Pcache ユーザーのアドレス一覧。
read.cgiが有力だったと思う。

2)板の一覧。
3)板に属するスレの一覧。
4)スレに属するレスの一覧。
現状動いているのそのままと言う意味で確かread.cgiが有力だと思う。

5)レスの内容の一覧。
:キャッシュヒットしなかった時に差分更新するために
:レスの内容を個別に取得できる必要があります。
これはread.cgiでID指定とFrom To指定で出来たと思う。
ただし、不連続なID複数は無理だったような。
MD5は、read.cgiよりもbbs.cgiの方が効率的だが、回避策はないこともないくらい。

と、考えると、read.cgiをparseして情報取得というのが
現状維持だが、効率とかを考えると適切でない場合もあると思う。

789 :デフォルトの名無しさん :01/08/29 23:37 ID:E8zeMvHE
>>788
板の一覧は、BBSTABLE(bbstable.html)か、今は。

790 :266 :01/08/29 23:38 ID:FM3PGJUk
>>788
read.cgi の出力はブラウザに表示することが前提でHTMLに整形されてますけど
こっちでは整形はクライアント側でやっちゃうんで
IDの一覧のみといった必要最低限の情報だけで十分です。
というより、そういう形になってないと
HTMLからデータを抽出することになりますんで
帯域を無駄食いする上に処理が半端じゃなく面倒になります。
やはり専用のデータ出力が欲しいところです。

>>786
自己レス。
板一覧にはサーバー名も要りますね。すっかり忘れてた。
メッセージフォーマットにもフィールドを追加しないと。

791 :266 :01/08/29 23:39 ID:FM3PGJUk
板のリストとしては次のようなのが嬉しいです。

板の名前 鯖の名前 板のディレクトリの名前

これが並んだ一覧です。例えば次のような具合。

プログラム技術 piza2 tech
プログラマー mentai prog

この一覧は CGI 経由じゃなくて
直アクセスでデータファイルを拾ってきた方がいいですね。

792 :デフォルトの名無しさん :01/08/29 23:42 ID:RZ89zfy6
あと
1)
なんですけど、やっぱり明示的にピアを登録、削除するCGIを
つけたほうがいいのか、正直また迷ってます。

こうする利点として
1)登録したピアを実際にポートをたたくなどして検証できる
2)モバイルユーザなどが不用意に登録されることを防ぐ
3)きちんと削除されればリストの質があがる

欠点として
1)作るものが増える
2)いたずらによる登録の可能性

があるのですが,,

あと上でちょっとふれた プロバイダ設置CGI型のピア などを実現しようとしたら
USER_AGENT だけで情報を送りきれるか? というのもあります。

793 :266 :01/08/29 23:45 ID:FM3PGJUk
>>792
モバイルユーザーや低帯域ユーザーの問題は確かにおっしゃる通りですね。
登録自体は手間ではないので仕様に追加するのは簡単です。
鯖側も負荷調整のための制御を除いては実装は簡単なはずです。
あらためて追加する方向で検討しようと思います。

794 :375 ◆MsUYMX0E :01/08/30 01:33 ID:hNhXzQ4g
今日はねます。

それと批判要望板からコピペ
--
599 名前:  投稿日:01/08/30 00:56 ID:28vIkHGU
■初心者のための2ちゃんねる存続危機解説(無断リンク)
http://home.att.ne.jp/wind/monsta/ga/2ch_kiki.htm
http://www24.big.or.jp/~faru/
ここに簡単なあらましが書いてある。

悲観ばかりではなく良い知らせもある。
「P2P cache」を応用した最終兵器を現在2ちゃん有志がテスト開発中だ。
「P2P cache」の応用ソフトはアニメのガンダムで例えて言うなら
追い詰められたジオン公国が開発した
最後のモビルスーツ「ジオング」のようなものだ。
完成は何週間、何ヶ月かかるかわからないが
邪魔しないように、我々はおとなしく待とう。
そして深夜は最大瞬間風速を起こさせないように寝よう。
最大瞬間風速がこの2ちゃん閉鎖問題の原因なのだから。

795 : :01/08/30 01:40 ID:uLXMKjs2
ジオングワラタ。

796 :225 :01/08/30 07:12 ID:YEMO5.RY
まあルータ経由とか、プライベートアドレスはどうするとか
色々考える点はあるんですが、まあとりあえず動くのが先でしょうね。
あとで仕様が変わっても困らないように作っておけばいいんだと思います

>>786
cgiじゃなくて、単にHPスペースにあげたログとかでも
資源として使えないかなと思うんですよね。
要は代わりにリクエストに反応するサーバンドがあればいいんですよね。
改ざんしやすい気がしますが、それはMD5の計算と照会で対応すると。
何となく、レス単独のものと、その時までのスレ全体のものとで、
2重化した方がいいかも?

まあ、動きの早い所では使えないかもしれませんが、
差分での補完を前提とすればいい話ですし
これなら、モバイルでも低帯域でも協力できるんじゃないかとおもいます

板の一覧はかちゅーしゃとかで使ってるのを流用するのが便利かも

レスIDは番号と投稿日の組でしょうね。
番号だけだと、透明あぼーんに対処出来なくて
投稿日だけだと、たまに順序が入れ代わってる時に対処できないんですよね。

797 :266 :01/08/30 16:40 ID:hTQMY4zg
ちょっとだけ報告。
設計にすごく無理のあるところがあったんで改修中(藁
もう粗方目鼻はついた状態にはなってます。
ただ鯖側環境がないんで実験は構成モジュールの単体テスト程度。
今日中に手元で最低限の実験をやっちゃいたいところですね。

798 : :01/08/30 16:47 ID:iTUnQuA.
おぉ、サーバも提供できないしコードも書けないんですけれど、テスター
が必要になったらいつでも声をかけてください。

799 : :01/08/30 17:35 ID:i2hacTto
あめざーや15chも2ch難民のために転送量でやばいという
噂ですね。
ひょっとしてこのスレが掲示板界全体を救うかも?....。私は門外漢で
何もできませんが応援してます。

800 :てんてんdwp@ yankee.tokyo-nazo.net :01/08/30 21:14 ID:omnG8yq6
一応うちはたぶん指定から24H以内にテスト環境構築が可能なので
必要なら声をかけてください。

801 :266 :01/08/30 21:18 ID:hTQMY4zg
>>800
ありがとうございます。
手元でのテストをやってから皆さんにも
テスト参加へのご協力をお願いしようと思っているんですが
まだ手元でのテストの方に半日近く掛かると思います。
もしよろしければ、その間に 2ch.net と
そっくり同じ環境を作っていただけると助かります。
具体的な方法については俺の方が 2ch の CGI の設定に
あまり詳しくないので CGI 改良スレの方のご協力を仰ぎたいところです。

802 :せちがないにぎりめし ◆IgIufP86 :01/08/30 21:27 ID:0ksH/JrE
テストするサーバーってレンタルサーバーでもなんでもOK?
それなら好きに使ってくださいな
2ch存続にかけるプログラマー様を応援いたします。
info@i-love-you.gr.jp

803 :てんてんdwp@ yankee.tokyo-nazo.net :01/08/30 22:47 ID:omnG8yq6
>>801
bbs.cgiがたしか非公開なのでそっくり同じってわけにはいかないが・・・
避難所あたりで使われているスクリプト(perl+java?)でいいのかな?

804 :デフォルトの名無しさん :01/08/30 23:05 ID:xr7HdTsk
>>803
あ、私もスクリプトは、2ch型掲示版の17さん?のを
見ているので後でレポートしますね。

805 :デフォルトの名無しさん :01/08/31 01:15 ID:en0PfAwQ
大変です、今まで風俗板で隔離していた現在にちゃんねる1のキチガイが
とうとう何か新聞沙汰になる事件を起こしそうです。
チキンアサゲ定食こと負け犬、本名アナル出欽(推定32歳) 別名けっこう仮面
吉原ソープベルコモンズで、アナル性交を強要しようとして
見つかり出入り禁止になったことから恨みを抱き、
当該スレでキチガイ屁理屈を2ヶ月に渡って毎日書き込んでいたんですが、
昨日とうとう、議論に負けて泣き出しました。
なにかとんでもないことになりそうです。
吉原ベルコモンズ Part6
http://www2.bbspink.com/test/read.cgi?bbs=club&key=997511823
このスレッドの>>623から>>711あたりにアナル出欽が逃げて
生き恥晒している醜態が克明に記録されています。
たぶん、恥ずかしくて死にたくなっているでしょうね。
ふつうこんな生き恥晒したら出てこれないですよね。

現在の負け犬の遠吠えぶりは最新スレでご確認ください。
吉原ベルコモンズ Part7
http://www2.bbspink.com/test/read.cgi?bbs=club&key=999042350    

806 :デフォルトの名無しさん :01/08/31 01:17 ID:Ha76ETsk
>>805
それより、こんな場違いなスレに書き込むお前の方が、将来ストーカー殺人とかやりそうで気になる。
話題提供のために、コテハンになれ。

807 :デフォルトの名無しさん :01/08/31 01:38 ID:a9UVJB/o
2ちゃんねるを救ってください。応援しています。

808 :デフォルトの名無しさん :01/08/31 02:27 ID:ndUPWWrU
17さん?のスクリプトに、掲示板一覧表示が動くように追加
(dat自体はもともと用意されてたが家ではうまく動かんかった)
と、一個掲示板を作ったデータ入りを置きました。

http://www.geocities.co.jp/SiliconValley-Sunnyvale/1506/files/bbscgi_r0100.tgz
http://www.geocities.co.jp/SiliconValley-Sunnyvale/1506/files/bbscgi_r0100.lzh

ポイント?は、
public_html/admin/board.txt : 板一覧、<>区切り
public_html/mine/dat/subject.txt : スレ一覧、<>区切り
public_html/mine/dat/999189425.dat : 記事データ、<>区切り
かな。

1)設置方法は、鯖側でCGIを許可.
ex)
httpd.conf
---
<Directory /home/*/public_html>
Options ExecCGI
</Directory>
...
(snip)
AddHandler cgi-script .cgi
---

2) perlが、/usr/bin/perlでなく、/usr/local/bin/perlの時には、
tgz or lzhを展開後、org/perl_head.txtを編集し、カレントを
orgにしてから、./make.shを実行すると修整したものを入れてくれます。
うまく行かなかったら、手で直してください。:-)

809 :808 :01/08/31 02:31 ID:ndUPWWrU
あ、言い忘れましたが、上記のは、もちろんP2Pcache対応?していません。
ベースにするもしくはテスト用向きを想定しています。
叩き台の紹介です。

810 :266 :01/08/31 03:39 ID:GDt82F3U
生存確認で書いておきます(藁
ご協力ほんとにありがとさんです。
今手元で色々とテストをやりつつバグ取りしているところです。

811 :デフォルトの名無しさん :01/08/31 03:55 ID:UD5Z8ZfA
喜んで人柱になるぞ、ゴルァ!!

頑張って開発してくれやゴルァ!!

ところで、個人がキャッシュするものって、スレ単位ですよね?

812 :プログラム技術板様 :01/08/31 12:45 ID:wtkADUR6
↓「稲垣メンバー」言論統制に不毛の抗議をする2ch前線本部はこちら
http://kaba.2ch.net/test/read.cgi?bbs=news2&key=999224058

813 :てんてんdwp@ yankee.tokyo-nazo.net :01/08/31 13:49 ID:44wU9PJg
すみません、>>808の元となったプログラムってどこにあるんでしょうか。
どうせ立てるなら某所の避難所兼用にしたいので・・・。

814 :266 :01/08/31 14:05 ID:GDt82F3U
再び生存確認で書き込み。
着々と進んでます。かなりいい具合です。
ピア接続実験がまだですが普通に使っててもレス単位でのローカルキャッシュが効きます。
大分遅れましたが明日朝までにはロールアウト間違いないでしょう。

815 :デフォルトの名無しさん :01/08/31 14:07 ID:r.U1h5gk
>811

基本的にはレス単位です。でも実際にはスレ単位でそろう
ことが多いことになるのかも..
その辺は運用してみてのお楽しみですね。

>808

流出スクリプトのことでしたら bbs.cgiスレかなんかにあったような..

>813

お疲れ様です。

816 :375 ◆MsUYMX0E :01/08/31 14:07 ID:r.U1h5gk
あうー 名前入れ忘れた..

817 : :01/08/31 14:30 ID:puLN.ZKA
>>813
http://corn.2ch.net/test/read.cgi?bbs=php&key=998794497

818 :デフォルトの名無しさん :01/08/31 16:26 ID:kyBsuD1o
★【2ちゃんねるが売っている!】★
http://teri.2ch.net/test/read.cgi?bbs=accuse&key=999242413&ls=50

819 :266 :01/08/31 16:47 ID:GDt82F3U
>>818
おいおいおい。マジですか・・・。

820 :名無しさん@お腹いっぱい。 :01/08/31 16:49 ID:zxqXHD12

買え
http://www.bidders.co.jp/item/3423025

821 :デフォルトの名無しさん :01/08/31 17:02 ID:5QwRJ5aY
にちゃんねらーがネタで出品したのに対して、
ひろゆきが悪乗りしたとしか見えん。

822 :デフォルトの名無しさん :01/08/31 17:07 ID:KmOcVo8.
>>821
いや、出品はトップページ更新後に行われている。

823 :デフォルトの名無しさん :01/08/31 17:18 ID:5QwRJ5aY
>822
じゃあ一人で悪のりしてるだけだな。
ネットニュースに取り上げられるだろうから、
良いか悪いかはしらんが宣伝にはなるだろう。

824 :デフォルトの名無しさん :01/08/31 17:57 ID:4V/0.g66
散々騒がしておいて入札取り消し?

誰かに買わせるに当って値段を煽ろうということかしらん?
少なくとも客観的な値札を貼る必要があったという事かな。

しかし、当然予想されたように2ちゃんねらーが荒らしてるな。
入札しちゃったらどうすんだろ。
ま、額が額だから心裡留保で通じるということかしらん?

825 :デフォルトの名無しさん :01/08/31 18:06 ID:KmOcVo8.
早すぎ(w
http://www.watch.impress.co.jp/pc/docs/article/yajiuma/

826 :とり :01/08/31 18:10 ID:ntn9RiFQ
JavaScriptでdat2html
http://fukuoka.cool.ne.jp/dat2html/

827 :デフォルトの名無しさん :01/08/31 18:11 ID:5QwRJ5aY
>825
ニュー速には相当数のメディア関係者がいるからね。
2ch全体は言うに及ばず。

828 :266 :01/08/31 18:13 ID:GDt82F3U
う〜ん。製作中止にした方がいいのかな?

829 :デフォルトの名無しさん :01/08/31 18:15 ID:Yw7AvM2I
無駄にはならないのでは・・・。

2ch自体が9月中旬まで存続する事は
逆に決まったと見ていい訳だし。

830 :266 :01/08/31 18:18 ID:GDt82F3U
うぃっす。
とりあえず既に7000行ぐらい書いちゃったんで仕上げます(藁

831 :デフォルトの名無しさん :01/08/31 18:28 ID:5QwRJ5aY
つーか何でネタに右往左往されてんの?
気にしないでやることやるべきだと思うが。

832 :266 :01/08/31 18:37 ID:GDt82F3U
>>831
仕事と並行で抱え込んだものだから
やらないで済ませられるなら済ませたいわけで(藁

833 :375 ◆MsUYMX0E :01/08/31 21:41 ID:TyLqNw.M
>266

ここまでできたんだしプロトぐらいまでは世に出しましょうよ!
このまま葬り去られるのは惜しい気がする。

834 :てんてんdwp@ yankee.tokyo-nazo.net :01/08/31 23:05 ID:44wU9PJg
>>808
遅くなって申し訳ない。public_htmlのパーミッションが777じゃなかったために
おかしな動作していた(笑)。
仮設置先はhttp://www.tokyo-nazo.net/~tester/entrance/index2.html
そのうちちゃんと2ch.tokyo-nazo.net立てるけど・・・。

835 :デフォルトの名無しさん :01/08/31 23:42 ID:p6qiJqEM
>>815
さんくす。試してみたが、初期Settingが面倒ですぅ。
挫折... いや、改造版を作った人が優秀なのがいけない。
便利すぎ。でも、万一テスト環境として、NGだといけないので
流出版も拾ってきてあぷしました。
http://www.geocities.co.jp/SiliconValley-Sunnyvale/1506/2ch-ryu.tgz
http://www.geocities.co.jp/SiliconValley-Sunnyvale/1506/2ch-ryu.lzh

>>834
public_htmlが777ってやっぱり変だよね。
でも、どのサンプルみてもそういう構成だった。

>>832
漏れなんか、会社で寝てるもんね(藁。

836 :デフォルトの名無しさん :01/08/31 23:46 ID:p6qiJqEM
url間違ってました。
http://www.geocities.co.jp/SiliconValley-Sunnyvale/1506/files/2ch-ryu.tgz
http://www.geocities.co.jp/SiliconValley-Sunnyvale/1506/files/2ch-ryu.lzh

837 :266 :01/08/31 23:49 ID:GDt82F3U
>>835
在宅PGって案外サボりづらいのよ(藁

今現在ピア間メッセージ通信のテスト中です。
これが終わったらロールアウトです。
しかし眠いので寝ちゃうかも(藁

ところで実際の実験をやるには鯖側に補佐の CGI が必要になりますが
この CGI はどうしましょ?やっぱ俺が書いた方がいいのかな?

838 :デフォルトの名無しさん :01/09/01 00:02 ID:ms.cdiOw
>>837
在宅かぁ。じゃあきついな。会社はいいぞ。
ださちゅーでもなんとか飯食わせてくれるしな
(ぃゃ、ぅそです>my会社の人)

cgiの方は、君は外部I/Fと注意点だけ出してもらえれば良いんでない?
どんなリクエストが来て何を返すか。
余力があればスケルトンを書いてもらえれば助かるけど。
詳細を説明するのが面倒なら、書いた方が楽かもね。
# 好み次第だと思う。

ちなみに、CSV形式なら、データ中に","(セパレータ)が来たときの扱い
も教えてくれるといいかも。

839 :266 :01/09/01 00:15 ID:YgH.PB8M
仕様は単純。
作る CGI は一つのみで、鯖上のデータを整理して渡してくれる奴。
CGI の名前を p2p.cgi とすると、次のような動作をする。
出力は常にリストで、各行は \n によって区切られる。
行内の項目デリミタは半角空白。

●CGI の入出力仕様
呼び出しの方法:http://server.2ch.net/p2p.cgi?list=peer&board=XXXX
出力リストの行:ピアのIP port

特定板の住人のアドレスを収集するのに使う。
とりあえずは過去1時間以内にアクセスしてきた P2Pcache ユーザーの中から
上限100ユーザーまでで無作為抽出かな?


呼び出しの方法:http://server.2ch.net/p2p.cgi?list=thread&board=XXXX&page=X
出力リストの行:スレID スレの名前

特定板の特定ページ内のスレ一覧の情報を収集するのに使う。
スレIDは個々のスレに永続的に固有のものでなくてはならない。

840 :266 :01/09/01 00:15 ID:YgH.PB8M
呼び出しの方法:http://server.2ch.net/p2p.cgi?list=resinfo&board=XXXX&thread=XXXX&from=XX&to=XX&last=XX&nofirst=true
出力リストの行:レスID サイズ MD5

特定スレに属するレスの情報を収集するのに使う。
last が 0 以外だったら from と to が無視される。
レスID は 1 〜 1000 の通し番号であぼーんによっても動かないものであること。
サイズと MD5 は今はダミーでOK。


呼び出しの方法:http://server.2ch.net/p2p.cgi?list=resdata&board=XXXX&thread=XXXX&id=111,222,333,...,NNN
出力リストの行:レスID 内容

レスの内容の収集用。キャッシュになかったレスの差分更新用に使う。
id=の後ろに並ぶのはカンマで区切ったレスID。
レスの内容は更に次のフォーマットになる。

レスID<発言者名<メアド<タイムスタンプ<本文

デリミタが空白じゃなくて < になってるのに注意。
本文中に < が現れるのは構わない。


●その他
これとは別に板一覧も必要。これはCGI じゃなくてもいい。

呼び出しの方法:http://www.2ch.net/boardlist.dat
出力リストの行:板名 サーバのホスト名 ディレクトリ名


こんなところ。

841 :266 :01/09/01 00:17 ID:YgH.PB8M
補足。
ピアのIPは普通に文字列で表現すればOK。
数値は MD5 以外は全部十進表記。MD5 だけは16進表記。

842 :375 ◆MsUYMX0E :01/09/01 00:27 ID:kNVOmjGE
>266

えっと、個人的にはやはり他のcgiとの統一の意味でも
board -> bbs
thread ->key のほうが望ましいと思うのですが.. 如何でしょう?

あと↑で発言者名とメルアドに < がはいるとまずいことになりません?
これってbbs.cgiで排除されるんでしたっけ?

843 :デフォルトの名無しさん :01/09/01 00:38 ID:ms.cdiOw
board=XXXのXは、板の名前 or ID(数字) or urlに来るID(アルファべっと)?
本文中のデミリタは、<>にしません? 現行では<>はタグブロックで
本文中には現れない仕様のようなので。

844 :266 :01/09/01 00:45 ID:YgH.PB8M
>>842
内部実装では板は board でスレは thread に統一しちゃったんで
鯖とのインタラクション部分だけ合わせても利はないと思います。

>>843
375 さんのお話とも被ってきますが
本文中のデリミタについてはおっしゃる通り <> で一本化しましょう。

845 :<>375 ◆MsUYMX0E :01/09/01 00:47 ID:kNVOmjGE
>844

了解です。では今回はこれで行きましょう。
デリミタも2Byteなのがちょっときになりますけど
<>でいいとおもいます。上でうまく排除されていれば...

846 :375 ◆MsUYMX0E :01/09/01 00:48 ID:kNVOmjGE
ってだめだった..

847 :266 :01/09/01 00:53 ID:YgH.PB8M
>>846
<> になってるから大丈夫ですよ(藁

848 :266 :01/09/01 00:53 ID:YgH.PB8M
&lt; &gt; の間違い。

849 :デフォルトの名無しさん :01/09/01 00:54 ID:ms.cdiOw
>>845
dat上では&lt;&gt;となるようです。<>
<は、<b>がdat上に使われています。>現行仕様
と、cgiですが、375さんはperl好きですか?(藁。
もしくは、誰か詳しそうな人ご存じですか?
誰もいなければtryしますが、ほとんどperlさわった
ことないんで危険な香りが(w。

850 :デフォルトの名無しさん :01/09/01 00:55 ID:5vmmv.Yo
tabじゃだめなのかな?>デリミタ
何かと扱いやすいと思うんだけど。

851 :266 :01/09/01 00:57 ID:YgH.PB8M
俺としては一文字なら何でもいいんですけどね(藁
2文字なのはちょっとイヤ。
でも<>なら現行の 2ch の dat と同じだから
dat からデータを引っ張ってくる際に
あまり手間が掛からない(上手く行けばまんまコピーで終了?)かな、と。

852 :375 ◆MsUYMX0E :01/09/01 00:59 ID:kNVOmjGE
>849

うーん。昔掲示板ぐらいは作ったことあるけど、
datの仕様とかわからないからなぁ..

あと明日ちょっと出かけるので..

一度他のスレで呼びかけてみましょうか?

853 :デフォルトの名無しさん :01/09/01 00:59 ID:ms.cdiOw
>>850
tabは本文中で使用可能なのでうまくないと思われ。
>>849
ちなみに<b>でなくて<br>でした。

854 :デフォルトの名無しさん :01/09/01 01:03 ID:ms.cdiOw
>>852
そうですね。呼びかけてお願いします。
もとがだめだと、改修も大変でしょうから。
だめなら一緒に推敲しあってやりましょう :-)

855 :266 :01/09/01 01:03 ID:YgH.PB8M
>>853
いや、本文中では何を使ってもいいんですよ。
タイムスタンプの直後のデリミタ以後は全部ひとかたまりで扱いますから。
なので、本文に至るまで(=ハンドルとかメアドとか)で使用されない
ことが保証されている文字ならなんでもいいわけです。

856 :デフォルトの名無しさん :01/09/01 01:08 ID:ms.cdiOw
それとすんません。私も明日(9/1)と明後日の午前は
知人に強制連行されますので不在です。_(_ _)_
許してくれ。。>266
君の栄光は忘れない。(^-°)♭

857 :デフォルトの名無しさん :01/09/01 01:12 ID:ms.cdiOw
>>855
なるほど。そうか。dat直読みが頭にあったので
ごっちゃにしていた。datは、投稿者 めあど 日時 本文の
順だったので。
ちなみに、board=XXのXは数字? それとも板の名前直ですか?

858 :266 :01/09/01 01:13 ID:YgH.PB8M
>>856
できあがって&うまく動いて&キャッシュヒットしまくった
時にだけ栄光があるんで先立つ賛辞は謹んで辞退いたします(藁
実際、キャッシュヒット率や利用ユーザー数が少ないと
いまいち効果が出ないだろうからなぁ。
仮に P2Pcache 利用者が 2ch ユーザーの6割で
キャッシュヒットが100%だとしても負荷は6割しか減らないわけで。
アルゴリズムのチューニングや普及活動には時間が掛かりそう。

859 :266 :01/09/01 01:15 ID:YgH.PB8M
>>857
XXXは板の名前直ですね。だからディレクトリ名と同じ。
ただものによっちゃ板がサブディレクトリのサブディレクトリとかに
なってる場合もあるんで空白を含まない任意の ASCII 文字列、
ぐらいで考えてます。

860 :375 ◆MsUYMX0E :01/09/01 01:19 ID:kNVOmjGE
混乱の中申し訳ありませんが、P2P Cache制作スレからperl CGI作者の募集です。

仕様は単純。
作る CGI は一つのみで、鯖上のデータを整理して渡してくれる奴。
CGI の名前を p2p.cgi とすると、次のような動作をする。
出力は常にリストで、各行は \n によって区切られる。
行内の項目デリミタは半角空白。

●CGI の入出力仕様
1.Peer取得

呼び出しの方法:http://server.2ch.net/p2p.cgi?list=peer&board=XXXX
出力リストの行:ピアのIP port

特定板の住人のアドレスを収集するのに使う。
とりあえずは過去1時間以内にアクセスしてきた P2Pcache ユーザーの中から
上限100ユーザーまでで無作為抽出かな?

例:

http://server.2ch.net/p2p.cgi?list=peer&board=tech

出力>
HTTP/1.1 200 OK
Date:Fri,31 Aug 2001 11:11:11 GMT
Content-type: text/plain

123.177.41.17 83
153.177.41.17 82
113.177.41.17 87
163.177.41.17:81
113.177.41.17:88
173.177.41.17:87



2.スレの一覧の取得
呼び出しの方法:http://server.2ch.net/p2p.cgi?list=thread&board=XXXX&page=X
出力リストの行:スレID スレの名前

特定板の特定ページ内のスレ一覧の情報を収集するのに使う。
スレIDは個々のスレに永続的に固有のものでなくてはならない。

例:
http://server.2ch.net/p2p.cgi?list=thread&board=tech&page=1

出力>
HTTP/1.1 200 OK
Date:Fri,31 Aug 2001 11:11:11 GMT
Content-type: text/plain

99034727
98013467
97043231
94801673

↑上位XXスレを出力(テスト用なら10スレ程度?)

(つづく)

861 :375 ◆MsUYMX0E :01/09/01 01:20 ID:kNVOmjGE
3.あるスレに対するレスのサイズとハッシュを取得
呼び出しの方法:http://server.2ch.net/p2p.cgi?list=resinfo&board=XXXX&thread=XXXX&from=XX&to=XX&last=XX&nofirst=true
出力リストの行:レスID サイズ MD5

特定スレに属するレスの情報を収集するのに使う。
last が 0 以外だったら from と to が無視される。
レスID は 1 〜 1000 の通し番号であぼーんによっても動かないものであること。
サイズと MD5 は今はダミーでOK。

例:
http://server.2ch.net/p2p.cgi?list=99074284&board=tech&page=1

出力>
HTTP/1.1 200 OK
Date:Fri,31 Aug 2001 11:11:11 GMT
Content-type: text/plain


1 124 594f803b380a41396ed63dca39503542
2 142 74b87337454200d4d33f80c4663dc5e5
3 513 0b4e7a0e5fe84ad35fb5f95b9ceeac79
4 235 11649b4394d09e4aba132ad49bd1e7db
5 0 0
6 234 86c9cf00e87196f0207f3590d5fcffd3


実例を入れるとこんな感じですかね? 確認になりますが。

862 :375 ◆MsUYMX0E :01/09/01 01:21 ID:kNVOmjGE
えっと、上では list=99074284 のレス5はあぼーんされてると仮定します
この辺の問題も決めないといけないのか,,,

863 :266 :01/09/01 01:25 ID:YgH.PB8M
>>860 >>861
ピア一覧の後半でポートとアドレスのデリミタがコロンになってます^^;
スレ一覧にはスレの名前も入れてください。
MD5 の方は16進ではあり得ない文字(Xとか)を32文字(これが重要)並べてください。
それ以外は問題なしです:)

864 :266 :01/09/01 01:26 ID:YgH.PB8M
>>863
MD5 の話はあぼーんの場合です。

865 :デフォルトの名無しさん :01/09/01 01:28 ID:noHCEp/A
>>858
キャッシュヒット率はレス単位なので頻繁に書込みの
あるところでは効果があると思う。更新のあまりないスレは
proxyとかミラーに利があると思うがそれは別スレで
進んでいるから併用が最強かも。理屈上は。
利用者については、proxyなどにくらべ、落ちていても良い分
手軽でしょう。少なくとも自分で使えば自分の良く見るスレは
概ね決まっているからそれなりには良いと思う。
負荷低減の為の強制or普及させるということについては課題だが、
cgi含むプロトができて効果が認められれば、誰かが更新するに
期待するしかないでしょう。少なくともやって損なものではないと思う。
これ程の規模向けで実験させてもらえるチャンスもそうそうないだろうし。

866 :あぼーん :あぼーん
あぼーん

867 :コピペテンプレート :01/09/01 01:32 ID:kNVOmjGE
混乱の中申し訳ありませんが、P2P Cache制作スレからperl CGI作者の募集です。

仕様は単純。
作る CGI は一つのみで、鯖上のデータを整理して渡してくれる奴。
CGI の名前を p2p.cgi とすると、次のような動作をする。
出力は常にリストで、各行は \n によって区切られる。
行内の項目デリミタは半角空白。

●CGI の入出力仕様
1.Peer取得
呼び出しの方法:http://server.2ch.net/p2p.cgi?list=peer&board=XXXX
出力リストの行:ピアのIP port

特定板の住人のアドレスを収集するのに使う。
とりあえずは過去1時間以内にアクセスしてきた P2Pcache ユーザーの中から
上限100ユーザーまでで無作為抽出かな?

例:

http://server.2ch.net/p2p.cgi?list=peer&board=tech

出力>
HTTP/1.1 200 OK
Date:Fri,31 Aug 2001 11:11:11 GMT
Content-type: text/plain


123.177.41.17 83
153.177.41.17 82
113.177.41.17 87
163.177.41.17 81
113.177.41.17 84
173.177.41.17 87

2.スレの一覧の取得
呼び出しの方法:http://server.2ch.net/p2p.cgi?list=thread&board=XXXX&page=X
出力リストの行:スレID スレの名前

特定板の特定ページ内のスレ一覧の情報を収集するのに使う。
スレIDは個々のスレに永続的に固有のものでなくてはならない。

例:
http://server.2ch.net/p2p.cgi?list=thread&board=tech&page=1

出力>
HTTP/1.1 200 OK
Date:Fri,31 Aug 2001 11:11:11 GMT
Content-type: text/plain


99034727 2chのような掲示板システムってP2Pで
98013467 ( ゚Д゚)ノ Delギコ猫のプログラミング相談室
97043231 最小行で逝ってみる。
94801673 ABAP:R/3統一スレッド
↑上位XXスレを出力(テスト用なら10スレ程度?)

868 :つづき :01/09/01 01:33 ID:kNVOmjGE
3.あるスレに対するレスのサイズとハッシュを取得
呼び出しの方法:http://server.2ch.net/p2p.cgi?list=resinfo&board=XXXX&thread=XXXX&from=XX&to=XX&last=XX&nofirst=true
出力リストの行:レスID サイズ MD5

特定スレに属するレスの情報を収集するのに使う。
last が 0 以外だったら from と to が無視される。
レスID は 1 〜 1000 の通し番号であぼーんによっても動かないものであること。
サイズと MD5 は今はダミーでOK。

例:
http://server.2ch.net/p2p.cgi?list=99074284&board=tech&page=1

出力>
HTTP/1.1 200 OK
Date:Fri,31 Aug 2001 11:11:11 GMT
Content-type: text/plain

1 124 594f803b380a41396ed63dca39503542
2 142 74b87337454200d4d33f80c4663dc5e5
3 513 0b4e7a0e5fe84ad35fb5f95b9ceeac79
4 235 11649b4394d09e4aba132ad49bd1e7db
5 0 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX (←32桁)
6 234 86c9cf00e87196f0207f3590d5fcffd3

以上です。ご協力いただける方がいらっしゃったら
2chのような掲示板システムってP2Pで
http://piza2.2ch.net/test/read.cgi?bbs=tech&key=990334284

までよろしくお願いしますです。

869 :あぼーん :あぼーん
あぼーん

870 :あぼーん :あぼーん
あぼーん

871 :375 ◆MsUYMX0E :01/09/01 01:40 ID:kNVOmjGE
すみません。明日早いので今日はねます。

でもAirH''買ったので今日からいつでも2ちゃんねる♪(←dame確定)

872 :266 :01/09/01 01:43 ID:YgH.PB8M
>>871
おやすみなさい。
俺はこのまま朝までテストしてロールアウトに命を掛けてみます(藁

873 :あぼーん :あぼーん
あぼーん

874 :デフォルトの名無しさん :01/09/01 01:56 ID:noHCEp/A
レコード仕様は↓みたいで良い?
2chのdatを全部もってるわけではないから
違う可能性もあるけど。。。

--- peer ip port一覧(IN)
210.110.8.5 5089
210.110.80.5 6180
202.120.80.5 4823
---
Format: IP PORT\n
※一覧は板単位で持つ。
そのまま出力できる形式。

--- 板一覧
mine<>掲示板
mine2<>掲示板2
mine3<>掲示板3
---
Format: URLのアルファベット<>板名\n

--- スレ一覧
999276102<>bbbbbbb (1)
999276080<>tesate (1)
999189425<>sure1 (5)
---
Format: ID<>スレ名\n
※フロート順は一番上が上になる。

--- 本文等
名無しさん@お腹いっぱい。<>age<>2001/08/31(金) 01:37 ID:4QvmWmGk<> aaaa <br> <>sure1
名無しさん@お腹いっぱい。<><>2001/08/31(金) 01:37 ID:4QvmWmGk<> ates <br> <>
<>test<><>2001/09/01(土) 00:49 ID:QYRD10pw<> test <br> <>
名無しさん@お腹いっぱい。<>sage<>2001/09/01(土) 00:56 ID:???<> aaaa <br> <br> <br> <br> <>
名無しさん@お腹いっぱい。<><>2001/09/01(土) 00:57 ID:QYRD10pw<> 1 2 3 <br> <>
---
Format: 投稿者名<>E-mail<>日時<>本文<>(一番上だけスレ名であとはなし)\n

875 :あぼーん :あぼーん
あぼーん

876 :デフォルトの名無しさん :01/09/01 01:58 ID:noHCEp/A
>>874
peer一覧の(IN)は無視してください。。

877 :あぼーん :あぼーん
あぼーん

878 :あぼーん :あぼーん
あぼーん

879 :デフォルトの名無しさん :01/09/01 02:02 ID:noHCEp/A
おやしみなさい

880 :266 :01/09/01 02:29 ID:YgH.PB8M
>>874
できれば本文中のデリミタ以外のデリミタは半角空白に統一してください。
そっちの方が処理が楽なんで。

881 :あぼーん :あぼーん
あぼーん

882 :デフォルトの名無しさん :01/09/01 09:09 ID:UgaS1OGQ
惨めな荒らしを晒しあげ

883 :デフォルトの名無しさん :01/09/01 09:26 ID:qzXlSnVI
誰か統一仕様書をHPにアップせーよ

884 :デフォルトの名無しさん :01/09/01 10:39 ID:7wgA9zlI
>>883
あぷしました。
http://www.geocities.co.jp/SiliconValley-Sunnyvale/1506/files/P2Pcgi-spec.txt

885 :デフォルトの名無しさん :01/09/01 10:46 ID:7wgA9zlI
>>880
<>を空白に変える関係上、
最初の半角スペース1つ以外のスペースは板名として認識される。
最初の半角スペース1つ以外のスペースはスレ名として認識される。
としました。違ってたら、直してPlease。
帰ってきたら自分でもやりますが。

886 :てんてんdwp@ yankee.tokyo-nazo.net :01/09/01 12:05 ID:nLpICBgk
えーと、テスト環境に関して提案があります。
現在、あちこちに避難所が出来ていますが、特にラウンジの避難所は数が多く、
実に六ヶ所もあります。
そこで、このスレの皆さんがOKであれば、ラウンジ避難所の管理者に声をかけ、
今回のプロジェクトの実験を手伝ってもらおうかと思います。
どうでしょ?

887 :デフォルトの名無しさん :01/09/01 12:55 ID:4QXs4r1I
管理者の同意を取り付ければ問題ないんじゃないでしょうかねぇ。
別にラウンジ避難所に限る必要もないと思いますが・・・。

888 : :01/09/01 13:10 ID:9DvFkqOE
「批判要望板」には、2ちゃんねるの運営や存続に危機を抱いている
ユーザがおおそうですので、テストに協力的だと思いますよ。

889 :てんてんdwp@ yankee.tokyo-nazo.net :01/09/01 13:30 ID:nLpICBgk
>>887
最終的には他の板に広げるとして、初めをラウンジに絞ったのはラウンジャーが
お祭り好きで新し物好きの性格の為、P2P面白そう、やるやる、と言いそうだと
いうこと。
また2chの看板らしい?のでここがP2Pのテスト場になればP2Pに弾みがつくこと。
万が一失敗してもそれをネタに笑い飛ばせそうだということ(深刻度が他の板と
違う)。
避難所の数が多いので、協力してくれる人が多そうだということ。
等が挙げられます。
>>888
批判要望板はテストにするには深刻であり、またアンチも多いため、協力者も多
ければ妨害者も多いことが考えられる、また避難所が存在せず、既存環境が利用
できないという問題があるので今回はラウンジをターゲットにしたいのです。

とりあえず、避難所に声をかけてきます。

890 :266 :01/09/01 13:45 ID:YgH.PB8M
スマソ。テスト中に爆睡してしまいました・・・。
BCBのソケットコンポーネント使ってたんすけどこれどうもP2Pに合わないみたい。
というわけで急遽ソケットクラス書いて改造中です。

>>886
俺の方は異論ありません。

891 :てんてんdwp@ yankee.tokyo-nazo.net :01/09/01 14:25 ID:nLpICBgk
とりあえず参加表明してくれたところがあったので報告。
http://61.121.247.239/~kikaku/post/test/read.cgi?bbs=entrance&key=999319257
あとはうちのところと、P2P有志でテスト環境の問題はクリアできたんじゃない
かなと思う。
引き続き参加応募を募ってみます。

892 :266 :01/09/01 14:28 ID:YgH.PB8M
おお〜。
2ちゃんも捨てたもんじゃありませんね。

ソケットクラス書き上げて今バグ取り中です。

893 : :01/09/01 14:33 ID:9DvFkqOE
「GnutellaNetを成長させる」
http://www.jnutella.org/docs/gnutella/scalinggnutellanet.html
>絶対に実装してはならない機能はチャットである。狂気の惨状にしては
>ならない:チャットのパケットを送ってはならない。

繰り返しになりますが、書き込みの内容をパケットにいれてリレーする
のは、確かに匿名性が保てるかもしれませんが、ネットワークが破綻し
てしまいますので、止めたほうがよいでしょう。

894 :266 :01/09/01 14:43 ID:YgH.PB8M
>>893
今の仕様だとリレーしていますね(汗
P2Pcache の場合にはリレーの中継点にも
キャッシュさせていくという活用方法がありえますが
やっぱやめておいた方がいいですかね?

895 :デフォルトの名無しさん :01/09/01 15:44 ID:y4YlCE82
p2p.cgi をほぼ書き終えました。

peer, thread の一覧はあらかじめテキストファイルに書き出してある
ものを使うということで良いんでしょうか。

あとそのファイルのパスを ${board}/peer.list , ${board}/server.list
と決め打ちしているんですが、実際どういうディレクトリ構造になってい
るんでしょう?

896 :デフォルトの名無しさん :01/09/01 15:44 ID:klcAtpeo
試してみようよ。 >>894
 ダメなら やっぱりダメだったか でいいんじゃないの?

897 : :01/09/01 15:47 ID:9DvFkqOE
>>893
「だめだと思う」ではエンジニアっぽくないので、

プログラムを作って、実際にパケットがあふれまくるところを、シミュレー
ションしてみたらいいと思う。っていうか、俺、やってみる。

898 :893 :01/09/01 15:48 ID:9DvFkqOE
あ、893=897です。

899 :266 :01/09/01 15:52 ID:YgH.PB8M
>>895
ご苦労さんです。
サーバー側でのデータ保存形態は一切問いません。
p2p.cgi 経由で取得できるものができればいいので。
peer の一覧は実験時には実験参加者の IP を
あらかじめリストアップして手作業で追加するか、
あるいは p2p.cgi にピア登録機能を追加して
P2Pcache に登録リクエストを送らせるかですね。
後者の場合またお手数をおかけすることになりますがよろしくお願いします。
まずは前者の方で考えたいと思いますけど、
参加してくれる皆さんもそれでよろしいですか?
thread の一覧は板のログから生成するのが妥当だと思います。

900 :895 :01/09/01 16:01 ID:y4YlCE82
# p2p.cgi

ひとまず終えました。どこか up する場所があるんでしょうか。

901 :266 :01/09/01 16:07 ID:YgH.PB8M
>>900
鯖を提供してくださってる方のところへアプしてください。
今スレを見ていらっしゃいますか?>鯖提供者の方

902 :てんてんdwp@ yankee.tokyo-nazo.net :01/09/01 16:27 ID:nLpICBgk
すまん、外出していた。OK。
メールでください。サーバに上げます。

903 :てんてんdwp@ yankee.tokyo-nazo.net :01/09/01 16:29 ID:nLpICBgk
あ、ftp封鎖しているのでhttpで構わないよね?

904 :266 :01/09/01 16:32 ID:YgH.PB8M
>>903
えと、それはこっちの話ですか?
鯖は HTTP 経由でしか叩かないんで大丈夫っす。

905 :てんてんdwp@ yankee.tokyo-nazo.net :01/09/01 16:32 ID:nLpICBgk
>>904
アップする場所です。

906 :てんてんdwp@ yankee.tokyo-nazo.net :01/09/01 16:55 ID:nLpICBgk
5時からネット不能な場所に外出します。
テスト参加は帰ってきてからなので遅れます。
とりあえずp2p.cgiのアップだけでもやっときたいですね。

907 :てんてんdwp@ yankee.tokyo-nazo.net :01/09/01 17:01 ID:nLpICBgk
うう、時間切れっぽい。
今から外出しますので、アップできるとしても夜になります。

908 :デフォルトの名無しさん :01/09/01 17:05 ID:twr9sQ6c
ftp://210.170.170.118/incoming/
は使っちゃいかんの?

909 :895 :01/09/01 17:49 ID:y4YlCE82
すいません。横になったら寝てしまいました。

908 の FTP はどこのディレクトリに入れたらいいんでしょう。

910 :デフォルトの名無しさん :01/09/01 17:53 ID:twr9sQ6c
>>909
p2pってディレクトリ掘っちゃうとか…

911 :895 :01/09/01 18:12 ID:y4YlCE82
p2p ディレクトリができていたので up しときました。

912 :てんてんdwp@ yankee.tokyo-nazo.net :01/09/01 22:02 ID:nLpICBgk
こっちはいつでも入れられる状態になりました。
使い方とディレクトリ指定してくれれば即流しこみます。

913 :266 :01/09/01 22:10 ID:YgH.PB8M
>>912
ども。
CGI の設置場所について今のところ特に指定はありません。
今は //www.tokyo-nazo.net/~tester/entrance/index2.html に避難所があるようなので
//www.tokyo-nazo.net/~tester/entrance/p2p.cgi か
//www.tokyo-nazo.net/~tester/p2p.cgi ぐらいで設置をお願いします。
設置していただいたらこちらで一通りのテストを行った上で
結果をあらためてここで報告させてもらいます。

914 :てんてんdwp@ yankee.tokyo-nazo.net :01/09/01 22:18 ID:nLpICBgk
>>913
すまーんm(__)m
//www.tokyo-nazo.net/~tester/entrance/p2p.cgi
置いたがinternal server errorが発生するんで、ちょっと調べます。
1行目の!usr/bin/perlは変更したし・・・なんだろ・・・

915 :266 :01/09/01 22:24 ID:YgH.PB8M
>>914
こっちも色々と書き換えてるところなんで
急いでいただかなくても大丈夫っす(笑
BCBのソケットを全廃してソケットAPI直叩きに変更中です。

916 :デフォルトの名無しさん :01/09/01 22:42 ID:LzBeC2l.
おまえら、みんな 光り輝いてるよ!
まぶしーゼ!

917 :てんてんdwp@ yankee.tokyo-nazo.net :01/09/01 22:47 ID:nLpICBgk
MD5ライブラリがなかったせいでした(爆)。
この板の住人には釈迦に説法ですが、私と同じはまりかたをしたひとのために。
//search.cpan.org/search?dist=Digest-MD5
から落としてgzip -dc Digest-MD5-2.15.tar.gz | tar xvf -
で解凍して、perl Makefile.PLしてmakeしてmake installする。

Error: Unkown list value '' at /・・・・・/p2p.cgi line 43.
が出るのはソース見る限り引数がないからなので、たぶん正しい動作。
というわけで、たぶん環境できましたのでよろしくお願いします

918 :266 :01/09/01 23:00 ID:YgH.PB8M
CGI の設置を確認しました:)
ソースをちょっと見たところではダミーデータの生成はなしですね。
これだと bbs.cgi の変更と連動しないとテストできないんで
もう一がんばりお願いできませんか^^;?>どなたか

919 :895 :01/09/01 23:10 ID:y4YlCE82
とりあえずローカルでテストしたファイル peer.list , thread.list を
up しときます。

920 :266 :01/09/01 23:13 ID:YgH.PB8M
>>919
お手間とらせちゃってすいませんm(_ _)m

921 :てんてんdwp@ yankee.tokyo-nazo.net :01/09/02 00:11 ID:UbqfbXOg
peer.lstには自分のip(210.232.194.104)追加すればいいのかな?
thread.lstは了解。
それぞれp2p.cgiと同じディレクトリでOKだよね?

922 :895 :01/09/02 00:35 ID:070S2IqE
md5 する時に余分な改行含んでたので chomp しました。> p2p-0.02.cgi
another さんの読んでて気づきました。thx

次のように配置すればうまくいくはず。

* p2p.cgi
+ tech
- peer.list
- thread.list
+ dat
- sample.dat
+ unix
...

923 :895 :01/09/02 00:44 ID:070S2IqE
空白が消えとる。

ディレクトリは read.cgi と同様 test 以下に置くことになるとすれば、
../${board}/peer.list の方が良いのかな。

924 :てんてんdwp@ yankee.tokyo-nazo.net :01/09/02 00:52 ID:UbqfbXOg
ちょっとディレクトリ構成がよくわからんけど、
とりあえず、
//www.tokyo-nazo.net/~tester/p2p.cgi
//www.tokyo-nazo.net/~tester/entrance/peer.list
//www.tokyo-nazo.net/~tester/entrance/thread.list
//www.tokyo-nazo.net/~tester/entrance/dat/(thread.listにあるno.dat)
という配置で配置してみたのでよろしく。

925 :266 :01/09/02 00:55 ID:zR1.Ai4.
>>923
P2Pcache.exe の方での対応は簡単なんで
場所は一定法則さえあれば適当に決めて下さってOKです。

以下リリースが遅れてることのいいわけ(藁
いや、一応手元でキャッシュは成功しました。
ただその時、BCBのコンポーネントのソケット周りが
P2P向きでないことがはっきりしちゃったんで書き換えてるわけです。
ついでに、そろそろ仕事に復帰しなくちゃいけないんで
引継を頼みやすいようにコードのBCB依存部分をバサバサ削ってるところです。
てなわけでリリースはあとちょっと待ってやってください(懇願)
その間に bbs.cgi の改造などが終わってるとナイスなんで
そこら辺もできればお願いします。

926 :895 :01/09/02 01:05 ID:070S2IqE
それで OK です。 >>924
うまく動作しているかな。

927 :266 :01/09/02 01:09 ID:zR1.Ai4.
これ、避難先の板名は何になってるんでしょ?
板名をパラメータに与えないと正常動作しませんよね?

928 :895 :01/09/02 01:11 ID:070S2IqE
500 になってるなぁ。何でだろ。

929 :895 :01/09/02 01:17 ID:070S2IqE
p2p.cgi?list=peer&board=entrance
で ./entrance/peer.list が表示されるはず

500 ということは use しているモジュールが無いか、パミッションだろうか。

930 :っlll@p8ppuoppp :01/09/02 01:24 ID:AApa0kh.


★★★援助交際学園★★★


本気でセックスフレンドを探してる女の子


お金に困っている女子中高校生


男性登録者も募集

http://000.zive.net/e.html
(援助交際学園)

931 : :01/09/02 01:45 ID:K265WADA
こんなことも言われています。さっさと2ch.netに依存しないハイブリッドP2P
を作って、株屋にさよならししてください。

267 名前:名無しさんの声 投稿日:01/09/01 22:49 ID:ZrO3pKbk
だから2ちゃんの実質的な運営者はひろゆきじゃなくて、切込なんだって。
法人化は切込の長年の悲願だろ。やつは2ちゃんに金は出さないけど、
かなり時間を投資してるみたいだし。

転送量を口実に危機をあおって、金儲けにはやばげな板をばっさり切る。
奴が書いた筋書きだろ。法人化したら客から文句を言われるような板は、
あらかじめ切っといたほうがいいもんな。

転送量が1月700万ってのだって、かなり膨らした数字。それにこれは
Big-Serverが外部に売るための定価であって、夜勤さんが自腹切ってる
原価(ハリケーンに払う分)じゃない。ここのとこがわざとぼやかされ
てるんで、勘違いしている人が多いんだけど。

ここの「サーバー変えたらいかんの?」ってスレで詳しい人たちが
試算してたけど、自前でサーバーを立てれば月200万円ちょっと、人件費
入れたって350万もあればお釣りがくるみたいだし。だから、法人化して、
スポンサーをつけたりして、採算が取れる勝算があるんだろ。

切込隊長が、儲かる見込みがなくて、法人化を進めるとは考えられん。
だから、大方の予想を裏切って商用化した2ちゃんはそれなりにやって
けるだろうよ。

可哀想なのは危機を乗り切ろうとして、しゃかりきになってプログラムを
改良したうに版とかの人たちだよな。資本家の切込に、見事に剰余価値を
掠め取られたってわけだ。

932 :266 :01/09/02 08:17 ID:zR1.Ai4.
っつーわけでプロトタイプできました。
まる一週間も時間掛かっちまった。
手元の実験ではピア間キャッシュは上手くいってますね。
ただこれ、色々な面でチューニングを施さないと駄目だと思います。
マシン1台内での通信でも1秒程度の余裕を見ないと
ヒットしたデータの回収が間に合ってない。
1メッセージごとにソケット作るという
強烈に無駄なことやってるのがでかいんでしょうけど・・・。
なんにしても次は実地テストですね。
とりあえず今から寝ます・・・。

933 :デフォルトの名無しさん :01/09/02 09:49 ID:RdUxEO1w
>>931
氏ね

934 :てんてんdwp@ yankee.tokyo-nazo.net :01/09/02 11:02 ID:UbqfbXOg
やっちまった・・・・
#!/usr/bin/perlを#!usr/bin/perlと書いてた(泣)
ちゃんと動いたよ。すまん・・・
http://www.tokyo-nazo.net/~tester/p2p.cgi?list=peer&board=entrance

935 :895 :01/09/02 11:33 ID:070S2IqE
#! /usr/bin/env/ perl

ていうふうに env 使うと動かないんすかね?
今までこれで解決できなかったことが無かったので、
いつもこうしてるんですけど。

936 :デフォルトの名無しさん :01/09/02 11:57 ID:Hrm5p/s6
>>933 突込みどころが間違ってるよカコワルイ

937 :デフォルトの名無しさん :01/09/02 12:29 ID:Do9Cr8zA
粛々と進めるだけと思われ。 一々流言に乗らないように。

オークションネタは、そのための教訓を与えるためだったか?(深読みすぎ)

938 :てんてんdwp@ yankee.tokyo-nazo.net :01/09/02 12:30 ID:UbqfbXOg
#! /usr/bin/env/ perlだとInternal Server Errorになるみたい。
うちのサーバがLaserLinuxだったりするので何が起こるやら(笑)。

939 :266 :01/09/02 13:57 ID:zR1.Ai4.
今起きました。早速ですが、次の呼び出しは

http://www.tokyo-nazo.net/~tester/p2p.cgi?list=thread&board=entrance&page=0
http://www.tokyo-nazo.net/~tester/p2p.cgi?list=resinfo&board=entrance&thread=999271249&from=1&to=5

うまくいきましたが、次の呼び出しでこけます。

http://www.tokyo-nazo.net/~tester/p2p.cgi?list=resdata&board=entrance&thread=999271249&from=1&to=5

原因を調べていただけないでしょうか?
今から実地テストの準備を開始します。
作業内容はダミーサーバーのディセーブルと動作チェックです。
あと、ついでに peer 追加機能も片付けようと思います。

http://www.tokyo-nazo.net/~tester/peer.cgi?board=entrance&port=XX

この呼び出しで、呼び出し元のIPとパラメータ中の port を
peer.list に追加する CGI を用意していただけないでしょうか?
よろしくお願いします。

940 :266 :01/09/02 13:59 ID:zR1.Ai4.
間違った(泣

http://www.tokyo-nazo.net/~tester/p2p.cgi?list=resdata&board=entrance&thread=999271249&id=1,2,3,4,5

この呼び出しでこけます。

941 :895 :01/09/02 14:50 ID:070S2IqE
peer を追加する方は分かりました。
resdata っていうのは何を返したら良いんでしょう。
dat の n 行そのままでいいんでしょうか。
あと、id というのは n 行目に対応していることかな。

942 :266 :01/09/02 15:16 ID:zR1.Ai4.
>>941
IDはレスの通し番号でOKです。
次の行構成でリストを返すようにしてください。

レスID レス内容

レス内容は dat の行まんま引き抜きでOKです。
よろしくお願いします。

943 :895 :01/09/02 15:55 ID:070S2IqE
ftp://210.170.170.118/incoming/p2p/p2p-0.03.cgi
を up しときました。

944 :266 :01/09/02 16:02 ID:zR1.Ai4.
スマソ。
レスタイトルとか文字列は SJIS で統一していただけませんか(^^;?

945 :895 :01/09/02 16:21 ID:070S2IqE
p2p.cgi?list=thread&board=xxxx&page=1
で返されるやつですか?
それなら、thread.list にあるファイルを SJIS に変換すれば直りますね。
指定された page から行番号に直して行をそのまま返しているので。
thread.list を up しとこかな。

946 :266 :01/09/02 16:45 ID:zR1.Ai4.
>>945
はい、それです。よろしくお願いします。

947 :てんてんdwp@ yankee.tokyo-nazo.net :01/09/02 19:41 ID:UbqfbXOg
>>940
resinfoじゃなくてresdata?
エラーはperlの
die qq|Unkown list value '$arg{list}'|
でこけてるみたいだけど・・・
ちと新しいソース入れてみます。

948 :てんてんdwp@ yankee.tokyo-nazo.net :01/09/02 19:51 ID:UbqfbXOg
>>947
新cgi導入して動いています。
ついでにSJISにしました。

949 :895 :01/09/02 20:12 ID:070S2IqE
そのp2p-0.03.cgi.1 で peer 登録と resdata に対応したのに加えて、
peer.list と thread.list が無い時にそれらを自動的に生成するようにしました。
名前変えたりして試してみて下さい。

950 :てんてんdwp@ yankee.tokyo-nazo.net :01/09/02 20:16 ID:UbqfbXOg
んじゃp2p-0.03.cgi.1落としてpeer.listとthread.list削除してみます。
・・・アップ終わりました(を

951 :てんてんdwp@ yankee.tokyo-nazo.net :01/09/02 20:19 ID:UbqfbXOg
一応全部通りますね。
http://www.tokyo-nazo.net/~tester/p2p.cgi?list=resdata&board=entrance&thread=999271249&from=1&to=5
はとおらないけど、OKのはずだし。

952 :266 :01/09/02 20:25 ID:zR1.Ai4.
ども。一通りチェックしました。
すいませんが resdata の出力の頭にレスIDをつけていただけないでしょうか?
それ以外は今のところ問題なく動いてます。ありがとうございます:)
そろそろ和塩の方にアップする準備をしますね。

953 :895 :01/09/02 20:29 ID:070S2IqE
それも対応しといた方がいんかな。

954 :266 :01/09/02 20:34 ID:zR1.Ai4.
>>953
レスIDがついてないとどの行がどのレスなのか分からないんで・・・。
何度もすいませんm(_ _)m

955 :895 :01/09/02 20:36 ID:070S2IqE
あっ、953 は 951 へのもんです。失礼。

>>952 space か何かで区切っておけばよいでしょうか。

956 :266 :01/09/02 20:39 ID:zR1.Ai4.
>>955
はい。行頭にレスIDの整数値文字列をつけておいて、
半角空白のあとにレスの内容を並べてください。

957 :メロン :01/09/02 20:42 ID:CarNkN.k
モジヲ ヘンカンシヨウトスルト IEXPLOREガ ゲンインデ
 エラーガ ハッセイシマシタ。IEPLOREハ シュウリョウシマス。 モンダイガ カイケツシナイバアイハ コンピューターヲ
 サイキドウシテクダサイトデマス サイキドウシテモ モンダイハカイケツシマセン ダレカタスケテ!

958 :デフォルトの名無しさん :01/09/02 20:46 ID:71SdL9Z6
質問。今は、bbs.cgiと同期とれてるんでしたけ?
p2p.cgiとの結合がOKで、それは次ステップと思っていて正しい?

959 :266 :01/09/02 20:52 ID:zR1.Ai4.
>>958
書き込み処理はまだスケルトンしか実装してません。
今から実装して試してみますね。

簡単ながら現時点でのテスト結果報告です。
ひとまず読み込みキャッシュには成功してます。
ローカルホスト内でピアを二つ起動してキャッシュを探るのも大丈夫です。
現時点でも、既に以下の問題点を確認してます。

1)resinfo などをサーバーから取得するのに時間が掛かる。
ピアのキャッシュを調べる前にまずサーバーから
thread や resinfo を取り寄せますがここで半秒程度から待たされます。
今は CGI の呼び出し一回ごとに TCP コネクションを張っているので
これを改めれば改善されるでしょうがそれでもかなりのネックになりそうです。

2)ピア間通信に時間が掛かる。
これもメッセージ送信ごとに TCP コネクションを張っているせいです。
一組のピア間では一つのコネクションを張りっぱなしにして
その上でメッセージ交換をしなくちゃいけませんね。

後者は比較的容易にどうにかなりますが
前者は設計上ちょっと工夫が要りそうです。
これ以外に実装上の手抜きの問題もありますが
プロトタイプということでそれは後回しということで。
ここまでのご協力、ほんとに感謝してます。>All

960 :デフォルトの名無しさん :01/09/02 20:54 ID:71SdL9Z6
パート2立てました。移動を。
http://piza2.2ch.net/test/read.cgi?bbs=tech&key=999431595&ls=50

330KB
新着レスの表示

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

0ch BBS 2004-10-30