1 :
[名無し]さん(bin+cue).rar:
3
ウホッ
4 :
[名無し]さん(bin+cue).rar:03/12/06 23:21 ID:KBvBQcrH
>実験的にファイルアップロード機能をつけてます
おまいら、テスト汁。
beta38とか書いてますが? ベータ版じゃないの?
7 :
[名無し]さん(bin+cue).rar:03/12/06 23:24 ID:8bbfLBYT
神降臨(*゚∀゚*)
共有じゃなくて交換か。MXよりゃマシ?だけどwinnyに手を出しらもう駄目だな。
2
>>共有じゃなくて交換か。MXよりゃマシ?だけどwinnyに手を出しらもう駄目だな。
>>8 日本語でお願いします。
とりあえず乙と言っておく。
Perlかよ(´,_ゝ`)ップ
>>1宣伝乙
がんばったね
削除以来出して
次はC言語(Winsock)で書いてね
14 :
[名無し]さん(bin+cue).rar:03/12/06 23:33 ID:KBvBQcrH
今、Perlのインストールに手間取ってる、、、タバコ吸ってこよ。
15 :
[名無し]さん(bin+cue).rar:03/12/06 23:35 ID:KBvBQcrH
16 :
[名無し]さん(bin+cue).rar:03/12/06 23:36 ID:MY1KV6Pg
17 :
[名無し]さん(bin+cue).rar:03/12/06 23:38 ID:KBvBQcrH
Perlのインストール、まだ14%・・・・
この期にCygwin本格的に導入してみようかな
20 :
[名無し]さん(bin+cue).rar:03/12/06 23:42 ID:Hwj4hgQb
記念かきこ Xoo
21 :
[名無し]さん(bin+cue).rar:03/12/06 23:46 ID:KBvBQcrH
>>19 あちゃ、ありがとう。
なんか選んだFTPが無茶苦茶遅くて、、、でも途中で変えてヘンになったら嫌なんで
このままいってみます。26%・・・
で、率直に言うけど、
これはなに?
P2P掲示板関連のスレでは有名なソフトだな
でも一度も使った事無い
あーあ>>1は作者じゃないなら
作者が犯罪助長ソフトをつくったと起訴されたときのことも考えたのかな?
作者じゃ無いからこそ何も考えてないんじゃないかなw
うわーGETが色々getしまくってる。
やっぱP2Pって複雑なんだなー
28 :
[名無し]さん(bin+cue).rar:03/12/07 00:05 ID:V2fWVrjF
ウpもダウソもなにげに重いな
CYGWINとかPerlのインストールの幼稚な発言のほうがすれ違いだがナ
31 :
[名無し]さん(bin+cue).rar:03/12/07 00:14 ID:V2fWVrjF
以後、荒らしはスルーの方針でマターリいきましょう。
Download板たてたぞー
Filename=1234567890
34 :
[名無し]さん(bin+cue).rar:03/12/07 01:01 ID:MeH63uAS
かくちょうしが、みたことないので、よくわからません
Cygwin Bash Shell から実行すれ
普段に使いたい人は
$CYGHOME/bin(C:\cygwin\binなど)を環境変数に入れると吉
あまりにも盛り上がってないね。
やはりファイルを共有できないと寄りつかないのだろうか。
匿名掲示板は次期p2p の開発配布に便利そうだから、
自分は環境整えてみたけど。
盛り上がらない?ノードが2つしか発見できないのだが・・・
やっぱメリットと手間がgtじゃないと誰も寄り付かないってことですね。
>>1でもサクシャでも無いから別にいいんだけど。
これって本当にp2p?
ブラウザ同士で通信してるって事?
>>39 一応 P2P のようです。
ブラウザ (や他のノード) から呼び出されたときに活動する模様。
良く分からないけどWinnyBBSをNychで見るような感じなのかな
全体的に遅いな…
すまんが、またネタか・・・
そろそろ切れるぞ
45 :
[名無し]さん(bin+cue).rar:03/12/07 10:20 ID:ay3ySPM9
いや、ネタじゃないだろ
ちゃんと動いてるし
★★★ ★★★
★ ★ ★ ★
★ ★ ★
★ ★
★ ★
/ ̄ ̄\ ★
|. | ★
|:: ●) ●)| ★ ★
ヽ:::....∀...ノ丿 ★ パッ
ノ/ /
ノ ̄ゝ
>>45 作者は別。
>>XBA/kHCE
普通に動いてるよ。
書き込みもできたし。
cygwin か linux を稼働させる知識があれば設置は簡単。
まぁ、これのためだけに cygwin を導入する人は多くないだろうが。
49 :
[名無し]さん(bin+cue).rar:03/12/07 12:42 ID:H7IR64a5
テスト段階なので房お断り
>1 氏ね
>>49 もし「Perl」のインストールをし忘れているなら、
再び cygwin のセットアップを実行、「Select Packages」の時、
「Interpreters」の「Perl」を選択します。(「Skip」の所をクリックして変更。)
この後、環境変数の設定を行ったほうが便利なのですが、
この説明は後回しにして、環境変数の設定を行わない場合の
新月の動かし方を書いて見ます。
cygwin のショートカットアイコンから cygwin を起動。
cygwin をインストールしたフォルダを覗くと「bin」「etc」「home」「lib」等が確認できるはず。
そこの「home」の中にはフォルダが一つ以上入っているはず。(フォルダ名はユーザー名となる。)
その中に新月を入れます。
cygwin を起動すると、Dos 窓みたいなウィンドウが出てくるので
「./httpd.pl」と打ち込んでエンターを押して見てください。
「No such file or directory」と表示される場合は別の手順が必要なので、
説明は後程。
何も表示されなかった場合、成功した可能性が高いので、
次にブラウザで「
http://127.0.0.1:8000/gateway.cgi」を表示させてみます。
メニューらしきものが表示されたら成功です。
このままでは不便なのでいろいろ設定したほうがよいものが
いろいろあったり。
>>42 そんな感じです。
>>49 bashからこんな感じです。
$ tar zxf shingetsu-0.1.b38.tar.gz
$ cd shingetsu-0.1.b38
$ ./httpd.pl -v
どなたか、2chブラウザ風のUIを持った、Windows版を開発してくれませんか?
仕様は原則としてこのまま変更しないつもりですので。
これどんどん広めようぜ.
2chに変われるはず!!
インストのテンプレつくってみんな広めるんだ!!
スクリーンショットないの?
実況風チャットとして使えれば理想的だ
使ってみたので記念カキコ
62 :
ひみつの文字列さん:2024/12/21(土) 02:06:52 ID:MarkedRes
日本国またはアメリカ合衆国、もしくはその両方の著作権法に触れる内容であると疑われることから表示できません。
ところで匿名性のほうはどうなの?
2ch以上ですか?
テレパシー-----freenet--------ny--- mx---2ch-----イトデンワ
↑
ここですか?
テレパシー-----freenet--------ny--- mx---2ch-----イトデンワ
↑ ↑
マジレスすると↑の間
67 :
[名無し]さん(bin+cue).rar:03/12/07 15:58 ID:H7IR64a5
>>51>>52 どうも、ありがとです。
あと自力でなんとかなると思います。
やってみます。
テレパシー-----freenet--------ny--- mx---2ch-----イトデンワ
↑
多分この辺
69 :
[名無し]さん(bin+cue).rar:03/12/07 16:04 ID:F69NTDkO
Cygwin昔入れたけど使うことなくってほったらかしだった
使ういい機会だな
使ってみたけど人がいなさすぎ・・・
Cygwinの壁が高いんだよ。。
もっと手軽に使えなきゃだめだ。
53がネタでなけりゃいいんだがな。
72 :
[名無し]さん(bin+cue).rar:03/12/07 16:23 ID:6kf7R/nK
2ちゃんねるでファイル共有のソフト開発宣言すると身元ばれるけど
P2Pの匿名掲示板ならokじゃない?
だからP2P掲示板で次期ファイル共有ソフトを開発すれば作者も安全!
winnyのBBSは匿名性が…らしいから
73 :
72:03/12/07 16:24 ID:6kf7R/nK
ごめん書くスレ間違えた!
74 :
[名無し]さん(bin+cue).rar:03/12/07 16:39 ID:H7IR64a5
あーだめだ。オレなんか絶対根本的に間違ってる。
Cygwinで何をインストールしてるのかもわかんない。
誰か、起動過程をプリントスクリーン並べておせーてっていいたいけど
あまりにもオレって厨で迷惑かけそうなんで、退散します。
スキルのある方、がんばってくらはい。
cygwin インストールしなくても動作するようなキット作ろうと
していたけど、うまく動作しない・・・。
cygwin 版 perl は cygwin がインストールしていないとうまく
動かないようだ。
(socket 関係のライブラリの呼び出しでこけているようだ。)
素直に移植したほうがは早っぽ。
ここはCygwinスレじゃない。
Active Perlで動けば楽ちんなんですが…甘いでしょうねぇ_| ̄|○。
やっぱり、俺みたいな厨がほとんどだから、Win上で動かなきゃ
広まらないでしょうね。
>>79 あああっ!
ななななななななんか光が見えてきたよ、、、
ところでこのスレに作者はいるの?
83 :
[名無し]さん(bin+cue).rar:03/12/07 23:25 ID:XYZeXXcT
帰宅。
Cygwin導入派はCanna導入に戸惑わずにスムースにいけたかな?本を書いたものとしては気になるぽ。
nyBBSの代わりになれば良いのだが
>>84? MS-IMEで入力できてるけど? Cannaはウンコだからイラネ
現状、素人にはムリ
起動の仕方すら理解できない
いいソフトなんだがなぁ…
導入の難しさがネックか…
Delphi版に期待、というところか。
91 :
[名無し]さん(bin+cue).rar:03/12/08 19:31 ID:PvuqtBmw
ゲートウェイが落ちてる?
ゲートウェイは結構頻繁に落ちてるね。
Vojtaが・・・・あるけど・・・・
53氏の開発具合はどうだろ
>>59 57です。やっとインスコできた
nybbsより、イイよ!
/⌒ヽ
/ ´_ゝ`) すいません、ちょっと通りますよ・・・
| /
| /| |
// | |
U .U
0.1-beta40を公開します。
スレッドのレス数表示機能を追加したのと
初期ノードに slyu.zive.net さんを加えたのと
そのほか修正です。
>97 乙。テスト板以外は
>Bad arguments or No data.
>Wait a few minits and Retry.
になる…。
あと、テスト板でも
>Thu Jan 1 09:00:00 1970: 画像貼り付けスレ(-1)
になるけど、なんかヘンじゃね?
>>98 うちでは問題なく動いてるけど。
レス数に関しては最初全部のスレが(-1)になったけど
そのスレを開いたら直った。
100 :
98:03/12/09 19:47 ID:UZHxjzC8
>99 なるほど、もう少しがんがってみる。
ところで、これってポート8000を外部から接続できるように
しておかないとダメなのかな? イマイチ仕組みがよくわからん。
ついでに言うと、8000以外に変えても大丈夫なんかなぁ…
ちょっと思いついたことがあったので0.1-beta41に上げます。
今までの仕様だとレスをとりこぼすことがあったのですが、
今度のは理論的には全てのレスを揃えることができます。
その代わり今までのものとは通信の互換性がなくなってしまいました。
でもアップデートした人が全部のデータを持っていれば、今回変更した機能によって補完できます。
>>98 >Bad arguments or No data.
datディレクトリは以前のものをそのまま使ってください。
手元にファイルがなくて、ネットワークからの検索に失敗するとそのメッセージが出ます。
>Thu Jan 1 09:00:00 1970: 画像貼り付けスレ(-1)
スレッドの行数などを格納しているファイルが更新されるまではその表示です。
今回のものは更新のタイミングを早くしました。
>ポート8000を外部から接続できるようにしておかないとダメなのかな?
そのとおりです。
so-net.ne.jpから接続しようとしている方で、8000/tcpが開いていない方がいます。
設定をお願いします。
>8000以外に変えても大丈夫なんかなぁ
大丈夫です。
それから書き込み時にエラーが出る方は Shingetsu/Config.pm で $no302 = 1 としてみてください。
ごめんなさい。
0.1-beta41には致命的なバグがあり、キャッシュが壊れます。
0.1-beta42に更新し、古いdatディレクトリを削除するか、
datディレクトリ内のキャッシュファイルを修正してください。
103 :
[名無し]さん(bin+cue).rar:03/12/10 18:42 ID:r+a8lmmQ
ゲートウェイ落ちage
104 :
[名無し]さん(bin+cue).rar:03/12/10 18:55 ID:pQQ8L1IK
なにこれ?
意味がわからん。
Winnyよりいいの?
コレnyみたいにファイル流せるんですかね?
とりあえず作者はトリップか名前付けたほうがいいと思われ
激しく期待!
readme によると、終了するときは
kill `cat dat/pid.txt`
と書いてあるけど止まらんかった。
仕方ないので、 ps から perl のプロセス kill したけど。
>>109 うちはWindows 2000 + SP4だけどちゃんと止まるよ。
111 :
109:03/12/10 23:24 ID:CzD7QMN2
>>110 もう一回試してみたら、あら不思議スマートに終了できました。
xxxx@zzzz[~/shingetsu-0.1.b42]
$ ./httpd.pl
xxxx@zzzz[~/shingetsu-0.1.b42]
$ kill `cat dat/pid.txt`
xxxx@zzzz[~/shingetsu-0.1.b42]
$ ps
PID PPID PGID WINPID TTY UID STIME COMMAND
3272 1 3272 3272 0 1005 20:46:34 /usr/bin/bash
1444 3272 1444 3656 0 1005 23:06:09 /usr/bin/ps
さっきはなんで、終了できなかったんだろ?
エラーメッセ残してたらよかたよ。
ちなみに当方 xp home + sp1
>>111 タイミングによっては子プロセスが残ることがあります。
デフォルトなら最長5分で消えます。
関連して。
so-net.ne.jpを使っていて、数日前に新月の終了に失敗したと思われる人がいて、
それ以来毎分ネットワークに参加しようとして失敗しています。
確認をお願いします。
書き込み時にエラーが出るのはやはり新月側のミスでした。
一部のブラウザのみの拡張機能を使っていたためで、RFC違反です。
Shingetsu/Config.pm で $no302 = 1 とすれば回避できますが、
次のバージョンでは使わないのをデフォルトにします。
「使わない」をオンにする、という設定もよくないですね。修正します。
113 :
[名無し]さん(bin+cue).rar:03/12/11 00:29 ID:81lMlfCC
Perlはムズいよ(;´Д`)ハァハァ
> オープンソースなのでWindowsネイティブなクローンを作ってくれる神が現れるかも。
誰か神光臨希望〜〜〜〜〜
とりあえず動くけど、Windowsネイティブ希望。
人が増えそうにない・・・
115 :
[名無し]さん(bin+cue).rar:03/12/11 05:24 ID:lsetITDW
禿希望
おれも使ってみたいけど、房なので迷惑かけそうだから
スレみてるだけ。
このたび2chを引退することにしました..
そこで誰かコテハンを受け継いでくれませんか?..
愛着のあるコテハンなのでこのまま無くなるのがもったいないです..
ちなみに自分はこのコテハンの4代目だそうです..
自分は厨房系の板で雑談中心の固定でしたが
先代の中にはエロゲー板で神と呼ばれた人もいたそうです。
自分の代でいなくなってしまうのも忍びないです。
歴史と権威があるこの固定を未来に引き継いで行って下さい..
でらえもん調査局ヽ(`Д´)ノ#dILAW1ヲ/
>>112 > so-net.ne.jpを使っていて、数日前に新月の終了に失敗したと思われる人がいて、
> それ以来毎分ネットワークに参加しようとして失敗しています。
> 確認をお願いします。
このネットワークに参加と言うのは、新月ネットワークのことでしょうか?
それだったら問題ないです。
winny 騒動以降 freenet+frost で遊んでたけど新月のが面白いです。
ていうか、使える感じがします。
>>51 ./httpd.plで
No such file or directory
になったときの後述の手順というのを教えてください。
漏れも見〜て〜る〜だ〜け〜〜
>>118 今日始めたばかりなので詳しい説明は出来ないが
一回目のcygwin.bat起動後
〜\cygwinディレクトリ下にhomeディレクトリって出来てない?
んでhomeが出来てたら、そこにユーザー名のディレクトリがあると思うんだが...
そのディレクトリ内に圧縮されたshingetsuの中身(shingetsu-0.1.b42より下の階層)を
放り込めばOKじゃない?
んで再度cygwin.batを起動して'./httpd.pl'と入力すればどう?
もしhomeが出来ていないのなら
ここ見て環境変数設定してみてちょ
ttp://www.mars.dti.ne.jp/~sohda/cygwin/setenv.html
perlにpathが通っていれば何処からでも起動できるんだけど
何か不都合ある?
ActivePerlでも動くようにしたら少し導入しやすくなるんじゃないのかな
0.1-beta43を公開します。匿名性の穴を修正しました。
>>117 たぶん別人です。
このスレも見ているのかどうか。
>>121 Perlにパスが通ってるかどうかは関係ないです。
/usr/bin/perl を直接呼んでますので。
>>122 fork(2)を使わなければActivePerlでも動くはずなのですが、
かなり大きな変更になりますので、Windowsネイティブ版を作った方が
全体の作業量は少なくて済むのではないかと思います。
>>53に期待しているのですが。
124 :
121:03/12/12 00:50 ID:j8YLO0y/
いや、関係の有る無しはどうでも良くてですね
パスを通して適当な場所から起動させて、表面上は問題なく動作しているけれど
何か不都合が生じるのかなぁと思って聞いてみただけです
まぁ様子見てみますわ
レスありがとさんでした
cygwin の perl のままでいいっす。
126 :
118:03/12/12 10:22 ID:74FaSDL5
>>120 サンクソ!
圧縮ファイルそのまま入れてました。鬱氏
10時くらいからHDが急にガリガリ言い出したんだけど何でだろう
httpd.plを止めたらガリガリ言わなくなった
新月って頻繁にHDにアクセスするんすか?
>>53 もし本当に開発しているのであれば何か一言
漏れにはWin版が出るまで使うの無理だわ
作業してる人頑張って下さい。僕にはただ祈ることしかできません。
/ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
| 新月が完成して簡単にみんなが使えるように
,__ | なりますように・・・
/ ./\ \_______________
/ ./( ・ ).\ o〇 ヾ!;;;::iii|//"
/_____/ .(´ー`) ,\ ∧∧ |;;;;::iii|/゙
 ̄|| || || ||. |っ¢..|| ̄ (,, ) ナモナモ |;;;;::iii|
|| || || ||./,,, |ゝ iii~ ⊂ ヾwwwjjrjww!;;;;::iii|jwjjrjww〃
| ̄ ̄ ̄|~~凸( ̄)凸 ( ,,)〜 wjwjjrj从jwwjwjjrj从jr
>>127 使っている OS が Linux だったら新月以外の所に心当たりがある。
自分のところでは 早朝 6:25 にがりがり言い出す。
調べて見ると、NOBODY 権限で FIND が起動しているようだ。
その正体は不明・・・。
それとも OS 関係なく単にメモリ不足でスワップ起こしていることも・・・。
でも考えにくいな。
スレ違いだが、Java 版 vojta の導入も試みたものの動作せず。
素直に Windows 版を wine 上で動かしたほうがいいかもしれない・・・。
(ny 用に wine のインストールは済ませてある。ny2 は動作しなかったが。)
>>127 わりと頻繁にファイルへの入出力を行なってるみたいなんで、
メモリが足りないとキャッシュが効かず、アクセスが激しくなるのではないかと思った。
>>131 >その正体は不明・・・
検索用のデータベースを作ってる。
↓のコマンドを実行して、速度の違いを実感してほしい。
$ locate xterm
$ find / -name \*xterm\*
>Windows 版を wine 上で
Windows版というのは単にJREがセットになってるだけと思っていい。
デフォルトの待ち受けポートが80/tcpなので、
設定を変えるか、rootで動かすかしないと駄目。
作者はrootで動かしてるそうだけど、ちょっと不安だね。
非公式ながらrpm,deb,ebuildもある。
>>131 > 自分のところでは 早朝 6:25 にがりがり言い出す。
>… (ry…
> 調べて見ると、NOBODY 権限で FIND が起動しているようだ。
updatedb
かも。
新月Windows版つうかPerlの自動設定版が出てる夢見たよw
そんなにP2P掲示板に飢えてたんだろうか・・・
SourceForge.netを借りました。これからは↓が公式サイトになります。
http://shingetsu.sourceforge.net/ 0.1-beta44を公開します。
高速化のためにいくつか工夫したのと、
添付ファイルの拡張子を自動判別するようにしました。
今後は1日〜1週間に1回程度CVSを更新し、
1週間〜1ヶ月に1回程度ベータ版を出す予定です。
137 :
[名無し]さん(bin+cue).rar:03/12/14 00:32 ID:MeKd/qcG
馬鹿登場↑
140 :
[名無し]さん(bin+cue).rar:03/12/14 00:50 ID:MeKd/qcG
>>140 自演するならIDくらい変えてから来い
格好悪いぞw
Win版楽しみにしてます!
53氏はどうなった
144 :
[名無し]さん(bin+cue).rar:03/12/14 01:13 ID:ql/gF/E/
冫─' ~  ̄´^-、
/ 丶
/ ノ、
/ /ヽ丿彡彡彡彡彡ヽヽ
| 丿 ヅ ラ ミ
| 彡 ____ ____ ミ/
ゝ_//| ♡ |⌒| ♡ |ヽゞ
|tゝ \__/_ \__/ | | ハァハァ
>>140たん♥
ヽノ /\_/\ |ノ ハァハァ♥ ソンナアナタニ萌デース♡
ゝ /ヽ───‐ヽ / ハァハァ ヤラセテクダサーイ ハァハァ
/|ヽ ヽ──' /
/ | \  ̄ /
/ ヽ ‐-
145 :
[名無し]さん(bin+cue).rar:03/12/14 01:13 ID:8MrpqyrY
kure
147 :
マムポ:03/12/14 01:15 ID:cnuVW5Ri
ティムポマムポ鯖
133.205.58.249:2221
立ててみたポ
エヘヘ
148 :
[名無し]さん(bin+cue).rar:03/12/14 01:30 ID:KTsiB0pX
プロンプトでコピペできないの?Ctrl+vもだめでした
149 :
[名無し]さん(bin+cue).rar:03/12/14 01:48 ID:ql/gF/E/
>>148 貼り付けボタンを押せ
プロンプト内でコピペしたいなら
範囲指定→範囲選択→コピー→貼り付け
150 :
:03/12/14 01:57 ID:hHJWtXQS
とりあえず日本語で説明してくれ
151 :
149:03/12/14 02:11 ID:ql/gF/E/
152 :
[名無し]さん(bin+cue).rar:03/12/14 02:18 ID:brQYV5kU
興味あったんで、ソースもざっと読んでもみた。
完全にUnix寄りだね。Cygwinとか言ってるんで当たり前だけど。
Windowsネイティブバイナリキボンヌと書いてあるけど、
その前にActivePerlで動くようにしろよって思うよ。
ちなみにWindowsバイナリにするのは全然難しくない。
オレは仕事用BSD鯖使うの嫌だし、Cygwin入れる気もないんで無理だわ。
153 :
149:03/12/14 02:19 ID:ql/gF/E/
ファイルやディレクトリのPATH情報なら
エクスプローラ開いて 目的のファイル/ディレクトリをプロンプトにD&Dでいけるじぇ
>>152 プログラミングに詳しい方とお見受けしました。
ActivePerlでfork(2)を正常に動作させることができなくて困っているのですが、
何かいい方法はありますでしょうか。
あるいはマルチプロセスではない設計のヒントとか。
ちなみに「Windowsバイナリ」は
「2chブラウザ風のGUIを持ったWindowsバイナリ」の間違いでした。
作っていただけませんか?
155 :
152:03/12/14 12:22 ID:089Jec1S
確かにActivePerlでforkは不具合があるかも。
一部無理やりDLL化してもいいかもしれないが、応急処置的。
ま、Windowsアプリには元々forkはそぐわない。
やるんだったら、httpd部分とブラウザ部分をくっつけて、本体化して、
リクエスト来たらスレッド起こして通信処理になるんじゃない。
ソース見たらなんか、Perlで作ったCGI掲示板の拡張みたいな感じだったね。
IEコンポ使ったWindowsのオープンソースのブラウザとか取ってきて、機能拡張といった形にすればすぐできるんじゃないの
サーバ部分の処理は要るけど。
>>132 >>133 なるほど、Windows のファーストファインドを思わせるところがありますね。
(我がメインマシンではファーストファインドを切ってあるけど)
>>132 デフォルトで 80 番ポートだったんですか・・てっきり別のポートかと思った。
だとすると root でも動作しなかったのは、Web デーモンとの衝突が原因かも
しれません。(ローカル用に 80 番を開けてある。)
>>136 いろいろ P2P 開発の動きがいろいろあるようで。
実験的なものも含め自分が知る範囲で4つほど確認。
「新月」は基本的に cgi ベースなので cgi 可能な一般 Webスペースに
配置できる可能性がありますね。
(過負荷で追い出されそうだけど。)
157 :
156:03/12/14 16:06 ID:f6+FBo87
vojta の導入に成功。
単に Java のバージョンが古かっただけの模様。
そして負荷が高いな・・・。
既にスレ違いなのでこれ以降引っ込みます・・・・。
158 :
[名無し]さん(bin+cue).rar:03/12/14 23:51 ID:mS56cPOU
>>157
死ね
ゼンカクデ( ´д)ヒソ(´д`)ヒソ(д` )ハズカシイナ
Cygwin入れてcdでShingetsuのフォルダに移動するまではいけたが、httpd.plを実行しても
そんなファイル存在してないぞと怒られた・・・カレントフォルダにはちゃんと存在してるのに
DOSのやり方も知らないトーシロがぐぐっただけじゃこの辺が限界のようだ
Win版出るまで待つか
./httpd.pl
CygwinはWinでUNIXの作業をするみたいな感じのソフトだからぐぐるときも
「UNIX コマンド」とかでぐぐる方がいいかも
その
./httpd.pl
をちゃんと入力したんだけど、駄目だったのよ・・・
うーむ、うちの環境だったらそれで上手く行くんだが
もし良ければ解凍の辺りからどういう風にやったか教えてくれないか?
cygwinをデフォでインストールするとperlがインストールされないからでは?
>>161 もちろんCygwin Bash Shellから実行してるんだよね?
ひょっとしたら165さんの言う通りだったかも・・・やばっ、もう一回インストし直してみますぅ
うほっ、起動できたよ
皆ありがとん
CVS版に挑戦しようとしていた人、ごめんなさい。
ダウンロードできなかったと思います。
公式ページの解説で「shingetsu」となるところが「shingetus」だったためです。
CVSはCygwinではDevelセクションに入っています。
170 :
[名無し]さん(bin+cue).rar:03/12/16 02:40 ID:mUGxz4Ew
とりあえず導入は無理そうなのでゲートウェイから見てるだけ・・・
画像・ファイルうp機能はいいね。
ゲートウェイにうpしてたら普通のうp掲示板とかわんないじゃん
172 :
[名無し]さん(bin+cue).rar:03/12/16 04:58 ID:9Sc6eAIA
∧_∧
( ・∀・)
__,,ゝ┼─┼====┐. ''"´"'''::;:,,, Ω ;: ; Ω
| □| .| |:|ヾ二二二二二(O″ ,,;;;;´."''' Ω ・,' ;*;∵; ζ。;:,.
_____|__,|_;||___,| |:|ノ-┬─┘ ´''::;;;;::'''"´ ∵~'ハ∴∵;:;
|ミ/// / ~~|ミ|丘百~((==___ バゴーン (#ξρ。;,;。∵
.└┼-┴─┴───┴──┐~~'''''-ゝ-┤ '.:; *,,,,: ;・∵:;゚ ボシュッ
>>157 ((◎)~~~O~~~~~O~~(◎))三)──)三); ( つ つ "〆
..ゝ(◎)(◎)(◎)(◎) (◎)ノ三ノ──ノ三ノ;*;∵ し(_)
174 :
[名無し]さん(bin+cue).rar:03/12/16 21:48 ID:oTY83RHS
板が無くなったぞ
どういう事?
保守
0.1-beta46を公開します。
0.1-beta44からの変更点は
- HTMLで文字実体参照が使える
- データが大きすぎて取得に失敗したときの処理の追加
- 削除機能の追加
- IDを(64進)4文字から(16進)8文字とする(本文の改竄に対処できる)
- ゲートウェイで添付ファイルのサイズを表示する
0.1-beta45からの変更点は
- 外部コマンドを使って高速化を図る(Cygwinだとあまり変わらないような)
- 通信をgzipで圧縮する
- Cygwinで時刻表示がGMTになるバグの回避
- ゲートウェイを表示できるアドレスと、削除できるアドレスを別に指定できる
- そのほかバグの修正
です。
乙です
180 :
[名無し]さん(bin+cue).rar:03/12/20 20:05 ID:VfGs3RdU
181 :
[名無し]さん(bin+cue).rar:03/12/21 00:43 ID:NxF/Y1P7
┏┓ ┏━┓ ┏┓ ┏━━━━┓
┏┓ ┗┛ ┏┓ ┗┓┃┏┓┏┓ ┏┛┗━━┓┏━┓ ┃┏━━┓┃
┏┛┗━┓┏┓┏┛┗━┓┃┃┃┃┃┃ ┗┓┏━━┛┗┓┃┏┓┏━━━┓┗┛ ┃┃
┗┓┏━┛┗┛┗┓┏┓┃┗┛┃┃┗┛ ┃┃ ┏┓┗┛┃┃┗━━━┛ ┏━┛┃
┏┛┃┏━┓ ┏┛┃┃┃ ┃┗━━┓ ┃┃┏━┛┗┓ ┃┃ ┃┏━┛
┃┏┛┗━┛ ┗━┛┃┃ ┗━━┓┃ ┃┃┃┏┓┏┛ ┃┃┏┓ ┗┛
┃┃┏━━┓ ┏┛┃ ┏━━┛┃ ┃┃┃┗┛┃ ┃┃┃┗━━┓ ┏┓
┗┛┗━━┛ ┗━┛ ┗━━━┛ ┗┛┗━━┛ ┗┛┗━━━┛ ┗┛
問題のある書き込みは即削除
でも書き込みがあった時点で即html化してFreenet等で流す
そうすれば管理者は責任を問われる事はないんじゃ?
で、他の人は新月以外で書き込まれた内容を見る事が出来る
html化するしないはオプションで設定出来るといいなぁ
>html化するしないはオプションで設定出来るといいなぁ
そんな貴方にVojtaがおすすめ!
>>183 法律にあたったわけではなので自信がないが、
管理者が気付いたときに削除すればよく、
リアルタイムでの削除をしなくても大丈夫なのではないだろうか。
新月はプッシュ型のバケツリレーを行うので、
削除する前に十分伝播するのではないだろうか。
昨日Javaに移植しようと思っていろいろやっていましたが挫折しました。
でもActivePerlの最新版で動きそうな気配です。
188 :
[名無し]さん(bin+cue).rar:03/12/22 21:43 ID:KUoV23v4
Norton入れてるけどどっかポート開けなくちゃならない?
Javaへの移植もちょっとやってみたのですが、
Unix+Perlの設計をそのまま移植するのに無理を感じ、やめました。
やるならもっとJavaを勉強してからにします。
ActivePerlでもエラーが出つつも動くようですが、
遅く、何よりもUnix用のと互換性がなくなりそうなので、これもやめました。
正式版ver.0.1.0を公開します。
Unix+Perl または Cygwin+Perl で動きます。
http://shingetsu.sourceforge.net/ メリークリスマス!
おっ、とうとう正式版?
メリクリ!
ベリークリスマス
応援!メリクリ!
195 :
[名無し]さん(bin+cue).rar:03/12/25 21:59 ID:xgkERwSZ
正式版宣伝age
*.*catv.ne.jpから参加しようとしている方に連絡です。
8000/tcpが開いていないのでネットワークに参加できていません。
mousukosiganbare
このスレ素晴らしき低空飛行だなw
ほっしゅ
XREA.COMの有料サービスでnode.cgiを動かして初期ノードにしようと考えています。
広告が免除されるので、問題は「高負荷」と判断されるかどうかです。
200
あけましておめでとうございます。
正式版ver.0.1.1 を公開します。
今回の主な変更点は初期ノードをXREA.COMの有料サービスで動かすことで、
これによって24時間いつでもネットワークに参加できます。
XREA.COMのCGIが独特の出力をするので、それにあわせて通信の仕様を一部変更しました。
また投稿時に匿名性を確保するために投稿時間に誤差を含ませていますが、
連投することを考えて選択できるようにしました。
そのほか、削除したファイルを直後に再取得したときのバグ、
初期ノードから別のノードの情報を得られないバグ、
投稿されたレコードを受けとってないのにリレーしようとするバグなど修正しました。
http://shingetsu.sourceforge.net/
追加。datディレクトリは以前のものがそのまま使えます。
まずXREA.COM様、ごめんなさい。
CGIの出力がおかしかったのではなく、広告免除が有効になるまでのタイムラグでした。
そのため通信の仕様を一部変更したのが元に戻ります。
修正版を shingetsu-0.1.1r1.tar.gz として公開します。
ダウンロードした方は申し訳ありませんが、再度お願いします。
なお、datディレクトリは以前のものがそのまま使えます。
あけましておめでとう
年越し更新乙です
205 :
[名無し]さん(bin+cue).rar:04/01/03 01:17 ID:UKKMVAni
そろそろ揚げとくか。
ん
今回も一番下までは逝けなかった(´・ω・`)
ねらってるのか・・・
次のバージョンではタイムアウトの判定条件を見直して、
ある程度大きなファイルのやりとりができるようにします。
CVSに上げておきましたので、夜中くらい?には反映されると思います。
今までは強制的に5分で終了させてましたが、
それがなくなったので無限ループやデッドロックになる可能性が出てきました。
転送中に誤ってタイムアウトになる可能性もあります。
テストをお願いします。
うーん初めて触ったけどこれ面白い。
盛り上がらないのはちょっとだけ難しいせい?
>>212 なかなか良いよね。
盛り上がらないのは超難しいせいでしょうw
途中で諦めかけたよ・・・。
早くWindowsネイティブになってくれないかな。
そしたら大分盛り上がりそう。
これを期にと
Linux入れた漏れ、
なんかWindowsと大差ないところにGUIが来ていた
感動した。
>>215 そうだね。
あと、コマンドで時間指定しないとGMTになっちゃうところとか。
まぁCygwinとも言えるか。
やっぱりソフトをダウンしてダブクリで使えないと普及しないんじゃないかと。
>>216 GMTになる条件って何だろう?
うちのWin2kは最初からJSTなんだけど。
でも「ノードをどこそこから落して、node.txtに保存して・・・」
という仕様村は盛り上がってるんだけどな〜>ダブクリ
>>217 俺もWin2kだぞ?
何で俺だけGMTになるんだ・・・。
仕様村は匿名性が未実装だから・・・w
ActivePerlでも一応動くものをCVSに上げておきました。
夜中には反映されると思います。
shingetsu-activeperlという名前です。
目立ったエラーは出ませんが、まだまだ不安定で、ときどき反応がなくなります。
乙
誰かcygwinと新月の使い方教えてくれ
cygwinインストールしたんだがさっぱりわからん
スレのログを見るの忘れていたよすまん
>>221 >>51 見れば分かるかな。
>>222 バージョンアップしたら全然繋がらなくなってしまった。
表示されるのはテスト版のみで、スレも書き込みも少ししか表示されない。
fuktommy.ddo.jp:8000: connection timeout. at ../Shingetsu/Node.pm line 91, <IN>
line 4.
と何度も表示されているのだが、ブラウザではアクセスできる。
>>225 30秒で8KB読みこめなければタイムアウト、としているので、
bufsizeを小さくしてみてください。
あげる必要ないの?
あと2つで最下層なんだ。もう少し待ってくれ。
t
>>226 何時間か放っていたら繋がったようです。
レスの取得はあまり進みませんでしたが、板は全て取得できました。
あと、1日ほど放置していたら、perl.exeが19個もできていました。
その中にI/O読み取り回数9,400、I/O読み取りバイト数9,793,106が3個ありました。
他にそれより少し大きいのが1つ、あとは小さかったです。
OSはWindows2000Proで、コンピュータをロックしていました。
プログラミングの事は全く分からないので意味があるのか分かりませんが、一応報告します。
231 :
[名無し]さん(bin+cue).rar:04/01/11 09:19 ID:V1toSK1J
ごめんなさいね
ちょっとageますよ
これってwindowsにperlをインスコしても動かないんですか?
>>230 >perl.exeが19個
エラーっぽいですね。
Windowsをロックしてるとperl.exeのCUP利用率が100%になるという方でしょうか。
>>232 ActivePerl版を作ろうとしていますが、どうにも難しいです。
そもそもforkエミュレーションが完璧でないのが原因なのですが、
ファイルハンドルの扱い、環境変数の扱いに問題が生じています。
235 :
[名無し]さん(bin+cue).rar:04/01/11 21:31 ID:N8MvRiyG
>>234 はい、CPU使用率が100%になると書いた者です。
やはりP2Pソフトは常時稼働させてノードに貢献したいのですが、
コンピュータをロックしていなくても段々重くなってきますし、
今の段階では難しいところですね。
Delphiで新月互換のやつを作っているんだけど、オリジナル新月のGPLとの関係をどう考えればいいかな?
GPLでなくて制限なしのフリーにしたい気がするのだけど。
今までActivePerl版として開発してきたものを本家に統合します。
CVSに上げておきましたので、夜中には反映されると思います。
僕はActivePerlを常用する環境にないので、ぜひテストをお願いします。
解決した問題
- ファイルハンドルの扱い: binmodeにした
- 子プロセスに環境変数が渡らない: パイプで渡す
- forkするとエラーが出る: forkを最小限に抑えた
解決していない問題
- プロセスが終了せず残ってしまうことがある
(Unixとはシグナルの扱いが違うから直せないかも)
×6.8.2
○5.8.2
'User-Agent: shinGETsu/0.1.2(Crescent/0.0.1)'
このユーザーエージェントでDelphi版新月のテストを時々している。
自身の無いところは能動的な動作はOFFにするとか、トラブル回避の努力は一応しているので、
それでもトラブった時は笑って許してね^^;
予定には1時間ほど早いですが、新月0.1.3を公開します。
ActivePerlで動くようになりました。(ver.6.8.2 on Win2kで動作確認)
ただしActivePerl以外の環境ではPerlのライブラリをインストールするか、
Extern.pmの代わりにExtern.pm.commandを使う必要があります。
http://shingetsu.sourceforge.net/ >>241 期待してます。
243 :
[名無し]さん(bin+cue).rar:04/01/15 07:30 ID:nwyhlGcz
ageちゃう
今日はじめてこのスレ覗いたのですが利用者はたくさんいるのですか?
>>244 4〜5人かな。
この寂れ様はいったいなんだろう???
すまん。
ActivePerl版の使い方が分からない。
さすがに疲れました・・・早くWindowsネイティブになってくれと心の中で悲鳴を上げてます。
>>246 1. ActivePerlの最新版をインストールする
2. 新月のファイルを落としてきて解凍する
3. ポートの8000番を開ける
4. httpd.plをダブルクリック
5. (数分放置したほうがいい?)
6. IEで
http://localhost:8000/を表示 7. あとは普通の掲示板みたいに使える
248 :
[名無し]さん(bin+cue).rar:04/01/16 16:34 ID:sxhS7EOI
「あぷろだにもなるP2P匿名掲示板」なるものが
ネットランナー3月号(2月8日発売予定)に収録されるそうです。
文脈から見て新月のことだと思います。
'perl' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。
と出て終了する事もできなくなってしまいます。
強制終了すれば問題ないですが・・・。
>>249 1. ActivePerlをインストールしてない場合→インストールしてください
2. Windows2000, XPを使っている場合→ログアウトしてから入り直してください
3. Windows9xを使っている場合→再起動してください
4. それでも駄目なら環境変数PATHを設定後、再起動してください
2K,XP ならマイコンピュータ→詳細→環境変数
9x なら C:\Autoexec.bat
ネトランに乗ればユーザも10人くらい増えるかな?
今は少なすぎ。
>>250 2.でした。何とも初歩的なミスですみません。
ついにダブクリで扱えるようになりましたね。
ちょっと重いですが、良い感じです。
コンピュータをロックしていたら、
sever process: fork failed.
7つほど出て止まっていました。
>>254 やはりActivePerlはforkに難ありのようです。
これは新月側でどうこうできる問題ではないので、Delphi版に期待しましょう。
ロック関係なかったようです。
普通に同じ現象起きました。
>>252 うええ。だったら嫌だなぁ。
今いい雰囲気なのに・・・。
>>257 まぁ、まだ2週間あるし。
耐久試験の実験台が増えると思えば良いさ。
Delphi版新月ですが、とりあえず現状の実行ファイルとソースを上げておきます。
新月-Download-Delphi板新月スレの下記の場所にあります。
8cd3537a :名無しさん [] Sun Jan 18 11:35:18 2004 1074393318.zip (252KB)
Crescent v.0.0.1
Delphi版新月 実行ファイル
f36275fb :名無しさん [] Sun Jan 18 11:38:45 2004 1074393525.zip (36KB)
Crescent v.0.0.1
ソース
まだまだベータ版以前の「作りかけ」です。
レスの書き込みは出来るがスレの作成やボードの作成は未実装。
削除全般も未実装。
添付ファイルは読み込みも未実装
HTTPサーバーとして動作します。
またソースにはeuc-sjisの変換のためにjconvertが含まれていますが、権利関係とかを
調べてないので、当面再配布とかはご遠慮下さい。Crescentのソース自体も基本的には
完全フリーにしようと思いますが、今のところよくわからないので保留。
考えてみれば新月上で配布しても新月が動いてない人はダウンロードできないですね…困った^^;
あれ?アップに失敗してる?自分でダウンロードしても解凍できない…
よくわからないけど拡張子がzipだとアップに失敗するようなので
f79c571c :名無しさん [] Sun Jan 18 12:46:42 2004 1074397602.jpeg (252KB)
Crescent v.0.0.1
Delphi版新月 実行ファイル
拡張子をjpeg->zipに変更して解凍
70d2c24a :名無しさん [] Sun Jan 18 12:47:02 2004 1074397622.jpeg (36KB)
Crescent v.0.0.1
ソース
拡張子をjpeg->zipに変更して解凍
265 :
[名無し]さん(bin+cue).rar:04/01/18 22:48 ID:v5nawcYV
Win版きた?
Win版が出来るとイイ人も荒らし等も増える気がしますが・・・
何か対策は有るんですか?匿名性を優先すると難しいそうだけど
>>266 荒らしが来るからWin版を開発しないってのは本末転倒。
Pre-Alphaには管理機能あるよ。
Del7にはTServerSocketとかがパレットにないから
動的に作成したほうがいいかもって思った
>>267 話に関係ないが
>本末転倒
ってのは意味が違うかと。
>>269 いや、人が集まってこそのP2Pだろうに、人が来ないようにするのはって事ね。
圧倒的多数のwin userは取り込めたほうがいい
現状でもwin上で使えるけど最初の敷居は高いかも
まあせっかくのマルチプラットフォームなんだから
pc系板みたいに煽り合うより共存できたほうが建設的
>>270 そりゃないだろ。
せっかく新しく開発始めたんだから、「じゃあ人が少ない状態で機能させるにはどうしたらいいか」という方向に向かうのが積極的な考え方だと思う。
age
276 :
[名無し]さん(bin+cue).rar:04/01/23 05:10 ID:2ySvKHKo
>>◆RRmI8rEBRM
Crescentの/update命令の中継がおかしいようです。
*.*.*.*<>Fri Jan 23 04:56:38 2004<>GET /server.cgi?update/mieken/1074793932/a4884109c8cd868fad96b388dd3b0e34/*.*.*.*:8001+server.cgi HTTP/1.0<><>shinGETsu/0.1.2(Crescent/0.0.1)
*.*.*.*<>Fri Jan 23 04:56:39 2004<>GET /server.cgi?update/lFCU4TTC8OKMpKRo/1074794305/b0f10c1abcd351d6972d05ea90e926c9/*.*.*.*:8000+server.cgi HTTP/1.0<><>shinGETsu/0.1.2(Crescent/0.0.1)
がものすごい頻度で繰り返されます。
やむを得ず、ファイアウォールで弾いています。
>>276 うぅ、ログを見て私も愕然としました。これじゃDoSだ…
ご迷惑をおかけして申し訳ありません。
>>277 恥ずかしながらLinuxマシンが落ちました。
処理能力が低いのにADSLでそれなりに回線が早いので、
メモリを食い潰してしまいました。
でもおかげ様でDoS攻撃への対処コードが入りました。
279 :
ひみつの文字列さん:2024/12/21(土) 02:06:52 ID:MarkedRes
日本国またはアメリカ合衆国、もしくはその両方の著作権法に触れる内容であると疑われることから表示できません。
>>278 重ね重ね申し訳ありません。他の方々にも多大な迷惑をおかけしました。
>Re: WhiteNOVAさん、こんにちは。 返事を書く ジス 2004/01/23 13:24:19
>
>neo鷹羽玲さん、こんにちは。前スレッドへの返事です。
>
>> という流れで見て頂きたかったです。最後の一文だけを取り上げると、意味が変わりますので。
>
> 全体の流れを見た上で、全体を象徴する、そして最も問題が有ると思った部分を引用しての反応ですよ。全体を引用するわけにもいかんし。
>
> ところで、neo鷹羽玲さんは関連スレッドで、事実を指摘しただけ・現状の認識を示しただけ、
>という意味のことをおっしゃってますが、「だけ」ではないだろうと私には読めました。
>
> 山本さんにスタンスを改めて欲しい、という話の流れの中で、山本さんと柳田氏を対比して柳田氏はこんなに優れている、
>という主旨の発言をすれば、山本さんに「柳田氏みたいになれと言うのか?」と問われて当然です。
>「そんなことは言ってない」なんていうのは、普通は通用しません。
そうかあ?普通に考えれば「人にはそれぞれ個性がある。Aの点では山本が優れているかも知れないがBの点では柳田が優れている。
だからA点だけ評価して相手を見下すのはやめろ。」ということだと思うけどなあ。あんたつくづく頭悪いね。
> その意図が無いとしたら(無いと思いますが)、neo鷹羽玲さんは弁明しておいた方が良いと思いますよ。
>「そんなことは言ってない」じゃなくて「そんなつもりで言ったんじゃない」って。
この程度の文意を理解できない相手に合わせる必要があるものなのかねえ…
さまざまなレベルの人間が集うのが不特定多数が参加できる掲示板の利点であり欠点なのだから、
書き手が注意するのは当然としても、今回の場合はちょっと常識的なレベルを逸脱していると思うよ。
この書き方が誤解を招くというなら、まともな文章では会話が出来ないだろう。
この場合はあんたの側が歩み寄るべきだろうね。まあ自分よりレベルの高い方へ歩み寄るのは
難しいかも知れないが、常にそれを意識することは必要だと思うよ。
283 :
ひみつの文字列さん:2024/12/21(土) 02:06:52 ID:MarkedRes
日本国またはアメリカ合衆国、もしくはその両方の著作権法に触れる内容であると疑われることから表示できません。
ActivePerlで動かしている人いますか?
半日以上連続稼働できていますか?
>>285 CVSは0.1.4r3の状態ですが、cvs.sf.netの調子が悪いかもしれません。
あと、ActivePerlで動かなくなる
>>254の問題ですが、再現性があるようです。
思うに、forkエミュレーションでは
シグナルハンドラが親プロセスと子プロセスで共有されているのではないか、と。
もしそうなら、これで動くのではないかというものを
新月→テスト板→すれっど に上げておきました。
ActivePerlを使っている方はぜひテストに参加してください。
# 何でActivePerlはforkエミュレーションのような変なことをしてるんでしょうね
ちょっとマシになったバージョン。
正常系は各機能が一通り動作する(はず)。
エラーチェックとかはちゃんとやってないのであまりいじめないでね。
圧縮転送はサーバ/クライアント共に不可。
ノードの管理部分とか細かい部分はまだいい加減なので、長期間稼働させると新月のネットワーク全体に
あまりいい影響を与えないかも…ちょっと動かしてみる分には問題ない程度(のはず)。
5aeb97c6 :名無しさん [] Sat Jan 24 21:30:54 2004 1074947454.jpeg (253KB)
Crescent v.0.0.2
Delphi版新月 実行ファイル
拡張子をjpeg->zipに変更して解凍
a960df83 :名無しさん [] Sat Jan 24 21:31:03 2004 1074947463.jpeg (40KB)
Crescent v.0.0.2
ソース
拡張子をjpeg->zipに変更して解凍
05a9a296 :名無しさん [] Sat Jan 24 21:47:21 2004 1074948441.jpeg (255KB)
5aeb97c6は必要なファイルを入れ忘れたのでこちらを。
Crescent v.0.0.2
Delphi版新月 実行ファイル
拡張子をjpeg->zipに変更して解凍
289 :
ひみつの文字列さん:2024/12/21(土) 02:06:52 ID:MarkedRes
日本国またはアメリカ合衆国、もしくはその両方の著作権法に触れる内容であると疑われることから表示できません。
ウホッ!いいCrescent...
hitogainaine,,,
ベータ版程度の完成度(かな)
6f2b6de2 :名無しさん [] Wed Jan 28 15:08:12 2004 1075270092.jpeg (284KB)
Crescent v.0.0.3
Delphi版新月 実行ファイル
拡張子をjpeg->zipに変更して解凍
7767053d :名無しさん [] Wed Jan 28 15:08:25 2004 1075270105.jpeg (194KB)
Crescent v.0.0.3
ソース
拡張子をjpeg->zipに変更して解凍
Delphi版って新月内で配ってるの?
それじゃあ新ユーザ増えないじゃん。
誰か配布サイト作った方がいいかもね。
296 :
[名無し]さん(bin+cue).rar:04/01/28 18:33 ID:aYgkjeHY
昨日Alphaで嵐が起きたのですが、
新月は何か嵐対策してあるのですか?
b5dc0c59 :名無しさん [] Thu Jan 29 01:04:28 2004 1075305868.jpeg (285KB)
Crescent v.0.0.4
Delphi版新月 実行ファイル
拡張子をjpeg->zipに変更して解凍
6a504b9c :名無しさん [] Thu Jan 29 01:07:36 2004 1075306056.jpeg (195KB)
Crescent v.0.0.4
ソース
拡張子をjpeg->zipに変更して解凍
Vojta作者と違って、新月作者の発言は騙りなのか本物なのか判別が難しいな。
>>300 どもです。ライセンス文書についてはそのままいただき^^
Bad arguments or No data.
Try later.
がやたらと出るー
304 :
[名無し]さん(bin+cue).rar:04/01/30 09:45 ID:mIWCr3gI
新月ってネーミングセンスが( ・∀・)イイ!
時代はShare(糞)ではなく新月ですね?
>>301 よく見たら改行コードがLFだった (´・ω・`)
f33b9141 :名無しさん [] Sat Jan 31 02:32:12 2004 1075483932.jpg (290KB)
Crescent v.0.0.5
Delphi版新月 実行ファイル
拡張子をjpg->zipに変更して解凍
c9f61277 :名無しさん [] Sat Jan 31 02:33:34 2004 1075484014.jpg (198KB)
Crescent v.0.0.5
ソース
拡張子をjpg->zipに変更して解凍
>>306 私もLFが好き。文字コードはSJISだけどw
CVSとか使っているとCRLFとLFが混在していると耐え難いので。
Crescentを起動してるだけで新月ネットワークに貢献できてる?
それとも起動してるだけだと邪魔なだけ?
あと今かなり重いみたいだけど参加者が増えたら軽くなる?
>>307 乙です。
配布サイトも更新しました。
>>309 起動してるだけでも貢献してます。
重いのは自分のキャッシュがまだ少ないためで、使っているうちに軽くなってきます。
>>309 前回のバージョンまでは結構重かったが、headキャッシュをつけたので一通り同期が終わってしまえば
比較的軽いはず。
>>296 ちょっと考えてみたんだが、匿名性が重視されるのは書き込みに対してで、
削除情報についてはさほど匿名性はいらないかも知れない。
だから削除情報を普通のサイトで公開し、それを取得して自動的に削除を行う、というのはありかも。
もちろん公開されているどの削除情報を取得に基づいて削除するかは、ユーザーの自由。
最近はDelphiがブームですか?
315 :
[名無し]さん(bin+cue).rar:04/01/31 18:55 ID:c6g3zeyL
>>313 スクリプト荒らしみたいなのは、MD5のチェックと一緒に、
特定文字列を含むかどうかのチェックをするという手があります。
ねとらんに新月が掲載されたらPerlも知らないねとらん厨があふれかえるのかな・・・
>>316 ランダムな文字列を投稿されるとうまくいかない。
あと他のスレからランダムに取得してコピペされるのも。
新月ってでかいファイルもウプできんの?
>>317 Crescentを使ってもらえば大丈夫。
>>318 確かにそれはしんどいですね。
ただ、MD5チェックの段階で判別できれば拡散を防ぐことができます。
あんまり積極的にやるつもりはないんですけどね。
>>319 本家新月は10MBまで。スレッドのサイズも上限10MBまで。
Crescentはよくわかりません。
投稿に秒数規定とかできないものかね?
Perlはスキルないからわからんが・・・
>>321 オープンソースなので投稿時のチェックはプログラムを弄ればいくらでも解除できてしまうからあまり有効ではないと思うよ。
強いて言えば伝搬時に制限を加えることだろうけれど、匿名性を確保しつつ制限を加えることができるかというと、かなり否定的。
伝搬を遅らせることは出来ても結局伝搬するだろうから。
>>320 > 本家新月は10MBまで。スレッドのサイズも上限10MBまで。
> Crescentはよくわかりません。
実は現在のバージョンはチェックをサボっている^^;
よほどの理由がない限り基本的には本家と動作を同じにするつもりなので、
現状そうなっていない箇所はバグか私の怠慢w
Crescentって何のことかと思ったら三日月のことだったのか。にゃるほど。
>>324 広義にはCrescent=新月という意味もある。赤新月社(=赤十字社)の英語名はレッドクレセント。
Crescentが新月か三日月かについては検索するといろいろ出てくるからそちらを参照のこと。
○ー○ー○ー○という
女の子数人が戦うアニメで
クレセントブーメランなる武器があったので
てっきり三日月だと思ってたよ…。
(毎日新聞 14時02分)
「鳥山明さんがドラゴンボールを実話だと認める」
人気漫画「ドラゴンボール」の
作者、鳥山明さん(45)は4日の本紙のインタビューの中で、
「ドラゴンボールは本当は実話です」と明らかにした。
鳥山さんは、「編集部にも毎日のように問い合わせが殺到した。
このままだと出版社にも迷惑をかける」と心境を明らかにした。
ドラゴンボールは週刊少年ジャンプに連載していた漫画で、
少年から中高齢者に渡って連載終了の現在も幅広い支持を得ている。
当初はフィクションとされていたが、購読者から「奥多摩で神龍を見た」、
「くしゃみすると髪の色が即座に変わる人を知ってる」などの
投書が寄せられ、「あれは実話ではないか」という声が
児童の保護者を中心に高まっていた。
a4e60312 :名無しさん [] Sun Feb 1 19:33:29 2004 1075631609.jpg (622KB)
Janny v.0.3.0
拡張子をjpg->zipに変更して解凍
拡張子捏造するんならjpgじゃなくて同じ圧縮形式にしたほうがいい
lzhとか
…釣り?
>>331 新月の仕様ではなく、IEの仕様。
zipファイルをmod_gzipのようなものでgzip圧縮したとき、
保存するファイルが拡張子がzipなのにgzip圧縮されたままになる。
一方ではtar.gzという拡張子なのに実際にはgzipが解凍されてたりして、
微妙に挙動不審。
333 :
331:04/02/01 20:35 ID:o23rtToG
>>332 はうぅ、ごめんなさい
でも勉強になりますた、ありがとう
>>332 IEの設定で「HTTP1.1を使う」をチェックするとそうなるみたい。
ところでJannyってなんですか
nyの親戚?
>>335 nyBBSをnych経由で読み込む機能の付いたJaneのことだ
このスレはモラルの高い隔離スレですね
なんか板がいっぱいできてるけどさ、板作った香具師は責任持って話題振れよな。
まあ、よかれと思ってやってくれてることだろうから。
って改めて覗いたらホントに沢山出来てるな〜(笑
昨日はまだそんなに多くなかったのに。
おいおい、ちょっと増え過ぎじゃねーか?
制限無しに立てられるってのも少し問題あるような無いような…
これって消せないのか?
>>342 管理者なら自分のサーバーからは消せるよ。他のサーバーにあるデータはそのサーバーの管理者しか消せない。
自分で板一覧ならべられると便利かもね。
専用ブラウザでボード一覧取得URLによって変わるみたいに。
nyBBSは板乱立がひどくて使いにくい。対策ほしい。
2846ad2b :名無しさん [] Tue Feb 3 17:51:11 2004 1075798271.jpg (292KB)
Crescent v.0.0.6
Delphi版新月 実行ファイル
拡張子をjpg->zipに変更して解凍
8c84360c :名無しさん [] Tue Feb 3 17:52:46 2004 1075798366.jpg (200KB)
Crescent v.0.0.6
Delphi版新月 ソース
拡張子をjpg->zipに変更して解凍
>>0c709f5bは拡張子がzipのままだった
346 :
ひみつの文字列さん:2024/12/21(土) 02:06:52 ID:MarkedRes
日本国またはアメリカ合衆国、もしくはその両方の著作権法に触れる内容であると疑われることから表示できません。
347 :
ひみつの文字列さん:2024/12/21(土) 02:06:52 ID:MarkedRes
日本国またはアメリカ合衆国、もしくはその両方の著作権法に触れる内容であると疑われることから表示できません。
348 :
[名無し]さん(bin+cue).rar:04/02/03 23:58 ID:kYkr4YLg
/ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
| あなたは十年後にもきっと、せめて十年でいいから戻って
| やり直したいと思っていますよ。
| 今やり直してください。 未来を。
| 十年後か、二十年後か、五十年後から戻ってきたんですよ、今。
\
 ̄ ̄ ̄ ̄| / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
.|/
.∧_∧
∧ ∧ (・∀・ )
Σ(; ゚Д゚).__( ⊂ )
(つ_つ__ ̄ ̄ ̄ ̄
 ̄\| VAIO |  ̄∇日 ̄ ̄\
=======  ̄ \
a1f3108c :名無しさん [] Wed Feb 4 14:28:48 2004 1075872528.zip (622KB)
Janny v.0.3.1
・本家の0.1.6のhtmlに対応。旧バージョンも読める。
・リプライの場合に>>レス番号ではなく>>b3bcd786形式を自動生成するようにした。
・多少のバグ取り。ただしまだまだ不安定。
なんかうまく拡散しないような…
また私がなんかポカをやったのだろうか^^;
再度アップ
003dc00b :名無しさん [] Wed Feb 4 14:54:13 2004 1075874053.zip (622KB)
a1f3108c :名無しさん [] Wed Feb 4 14:28:48 2004 1075872528.zip (622KB)
Janny v.0.3.1
・本家の0.1.6のhtmlに対応。旧バージョンも読める。
・リプライの場合に>>レス番号ではなく>>b3bcd786形式を自動生成するようにした。
・多少のバグ取り。ただしまだまだ不安定。
>>351 ファイルサイズの上限(10MB)に近付きつつあるので
新スレを立てた方がいいかも。
公開鍵を作ってみた。
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.2.1 (MingW32)
mQGiBEAhH4IRBADKg1zA9kl5VoI8BzY3BuHMH6B7hsOD8ZIC1TBZPGzWmZUUcXUf
mV7NvUNCRsHZLck6BEgB/3z5WUzgQjHA9mz2ION9Vf2xVA1zDxe3ydjDbZkybRnJ
DhjiuYqxSowa9TjshHzmc7zGiAvkTm3aXD7Y8KB5Ug8QXk+MM0XbBtwjbwCgygcw
yqun+AlTvtr+Og87eJeaLK0EAJFU6Z94oCYxRWj+/hOpTUbd3Awx81p/fsSZ7rVE
U26OovinSw40xQ52G9CsFCEXyFDD4Rpm4oo5BtQWReGQ9R4Q+HqiVE33GCSgaMB4
6tSR8w/F+I4K++7YfWwrBMqo24fhBgIcX9jCEEVMUnUHBi4rRt8LrhThqn4p9aqU
QwoZA/9zK6UukLbNYQXqZdgKj1qjNUREUizh/ycnpjZD/lLroIs4r4xG0OsQWMhO
GdTTD0Fbuk7eVA9t7QmAJ7pweit0n/Po/vKgSl0qO0FE3r7hrOpB0uilVFLBfFT2
Rp0fNTHgA7N+FvuXjF0/ky7OCMDkxf3TijEcIzP/xI00M9JL5rQyUlJtSThyRUJS
TSAoQ3Jlc2NlbnQgUHVibGlzaGVyKSA8bm9uZUBub3doZXJlLmNvbT6IWQQTEQIA
GQUCQCEfggQLBwMCAxUCAwMWAgECHgECF4AACgkQeFwhCYGhVYJxpQCfShiof725
GmYWhKnO4XMTyI+w5OQAoJrojesJpk1dKomtuSJrMMxrDBqXuQENBEAhH4MQBADj
QqfM70hVQvpXuuQiAh32v9wfGHQMxhAFXf28rpy4qquRaSysLg0qa+tGhiGJzuln
ZEOxa941Bh5+NGJW3iRrn1Um/wyvPJtsroeDC/gQDDJCkNy8J+dYkWHCV2bjW2GO
d7EArC2TDO0/V7ef1ZRxv7V3TF3LovsLkPKk88j3qwADBgP/cUvMRdO0LROHyppL
ruBG2OkRZxhZqtqizQJOhfBA0fdNso/mSV813okgfuF0jbX2qBXIL++wX23RBOm6
jzVkNrtMtiifpzUHXxvT4HUZTUso49614Ab1dzbau4rz6JuXc6qK7OrXY98tvRR9
/bAQwBXiQPo6cU7AjnQG+UOsIZeIRgQYEQIABgUCQCEfgwAKCRB4XCEJgaFVgo0e
AJ4lIXX5Kx7kxU/2NTk3GO2EhOfTUgCfaQBFlL8qzA9DX2bPbSG4snH4WWk=
=UZbT
-----END PGP PUBLIC KEY BLOCK-----
>>353 初めてここを見たオレは一瞬nyのトリップの羅列かと思ってしまった_| ̄|○
test
>Version: GnuPG v1.2.1 (MingW32)
オフィシャルで1.2.4出てるよ
JannyでCrescentの板が読み込めない・・・
>>357 それだけじゃなんとも^^;
Jannyのキャッシュ破棄してみるのも手かと。ただしキャッシュ破棄した後の読み込みで暴走する傾向があるw
Janeの構造の全てを理解して修正している分けじゃないので、なかなか…ね。調査しつつその都度直してはいるんだけど。
359 :
357:04/02/05 05:13 ID:MXk2hGSA
>>358 大好きです。ずっとついていきます。(`Д´)ゞ
ここ地味ーに更新してるね。
(`Д´)ゞ
( `Д´)ゞ ラジャ
ソース見ましたがずいぶんとキレイなコードですね・・・
尊敬します
一度でも読んだ事のあるスレは、次からは高速で読み込めるようになるね
更新分も瞬時に読み込まれる
最初の一回だけはなかなか読み込めない事が多いような
ネトラン掲載おめでとうございます。
>>365 載ったのか・・・
それにしてはヒト少ないな
>>364 一度でも読んだ事のあるスレはキャッシュとなって保存されます。
最初の一回はネットワークから探すので時間かかかります。
バージョンアップの際には古いキャッシュをそのまま使うようにしてください。
>>365 「ヤバいファイルをどんどんアップロードできるぞ」という煽りと
「違法行為に使わないこと」という使用条件が同じページにあるのがシュールです。
なおデータが暗号化されるというのはライターの勘違いでしょう。
添付ファイルが文字列に変換されたり、圧縮されたりはしますが、
暗号化はされません。
以下業務連絡
↓のISPから接続しようとしている方で、ポートが空いていない方がいます。
全員Crescent/0.0.6のようです。
*.ap.plala.or.jp
*.bbtec.net
*.ppp.dion.ne.jp
ログを見ればどのノード(のユーザー)がどのスレを取得しようとしているかが分かるわけで、どうもいやだな。
やっぱWinnyのように一定の確率で「中継」が適時発生するようにした方がいいんじゃない?
あるいは過去にHAVEで問い合わせが行われ、自分が持っていないファイルのリストを保持していて、
一定の確率でそれを取得にいくとか。これをすると糞ファイルの分散に荷担してしまうが、確率を低くすれば
影響は少ないだろう。
>>368 ゲートウェイを外部に公開することで、
本人の意志なのかどうかが外部からわからなくなります。
>>369 ゲートウェイは悪用しようと思えば、アップローダー代わりに使えるからね
>>367 (;´Д`)空けてるつもりで空けてませんでした スマソ
業務連絡
*.ocn.ne.jp の人でキャッシュが壊れている人がいます。
ファイル名が全部大文字になっています。
はっきり言って凄く期待してます!
;;;;;;;;;;/::/::::::::::::::;/:::::::::::/;/::::::::::::::::::;イ:::::::/ i::::;/ i!ヽ、l:::::::/ l;;;;;;;;;;:/゙!::::::!
;;;;;;;;/::/::::::::::::;〃::::::::::/;/:::::::::::;:::::::/l:::::::/ ,!::/ -−=fミz ,/:;ク:/ l;;;;;;;;;/ !::::ノ
;;;;;;;l::/::::::::::::/;/::::::::::/;;;i::::::::::;/::::::/ l::::/ l:/ . /レ'゙ー''/、/ 〃 ,l;fi;;;/ l;::/
;;;;;;;レ'::::::::::::/;f゙:::::::::/;;;;i:::::::::/::::::::i !::l ' 、 /:ジ ! ,ノ ,/ 〃 l;/
;;;;;;/::::::::::::/;;;!::::::::::i;;;;;;l:::::::::;!::::::::j l;! // ヾ/ ヽ、 '゙ '゙
;;;;/::::::::::::/;;;;l:::::::::::!;;;;;;!:::::::;':::::::::i ,// ` u ヽ、_
;;/::::::::::::/;;;;;;l::::::::::l;;;;;;l::::::::l:::::::::::! // ,ノ
;/:::::::::::/;;;;;;;;!:::::::::!;;;;;;!::::::::!::::::::::l o r'´
:::::::::::::/;;;;;;;;;|:::::::::!;;;;;;l::::::::l:::::::::::;! , -‐'
─ ‐-' 、;_;;;;;l:::::::::l;;;;;;l::::::::l::::::::::;! /
`ヽ;::::::::l;;;;;;l::::::::ト、::::::l u /゙ヽ , -─−- 、 開発頑張ってね!
ヽ;:::l;;;;;;l:::::::i゙ l::::::! | Y´ `'ー 、,_
ヽ;;;;;;;!:::::;l、.l:::::! ,. -ヘ, l ゙ヽ ,. -−-、
ヽ;;;/'ル' `!::i、 ,/ ヽ、,! _, -'、_, - '´ !
i;i i/ l::! ` 'ー− ´ i'ト、-、,___,. -−' ´ ,. ‐'´ ..:::::/
! i! ij \_ヽ、 'ニ,. ‐'´ .:::::/ー 、
i \ヽ、 / .....::::::/ i
もっとアピールしてってもいい気がするなー。
安定するまでまってる感じですか?
トリップについてアイデア募集。
・2ch完全互換では簡単に捏造されてしまう。
・公開鍵暗号を用いたデジタル署名は高性能すぎて使いにくい。
・本文だけ、添付ファイルだけの保護でも構わない。
>>377 人が増えると、嫌でもクラック対策しないといけなくなるので・・・
一応47氏のように、いくつか対策は考えておくといいかも。
>>378 47氏のクラック対策というのは具体的にどんなものだったんですか?
知らない・・・
>>379 プログラム自身の改変チェックかな。プログラム自体もexeの状態では中核部分が暗号化されていて、逆コンパイルしても
ちょっとデコードプログラムと巨大なデータ(本当のプログラム本体)が出てくるだけで、それをもう一度デコードしないと
解析できない。
あとはWinny間でやり取りするデータやキャッシュの暗号化だよね。どれもあまりオープンソースには役に立たないような。
Pre Alphaは.NETのCLR(javaのバイトコードに相当するもの)を逆コンパイルすれば、一応解析可能らしい。それが本当なら
Winnyよりずっと簡単だ。もちろん解析に技量も時間も必要だろうけど。
なるほど・・・オープンソースのクラック防止は
システム本体から考えなくてはならなさそうなので大変ですね
383 :
ひみつの文字列さん:2024/12/21(土) 02:06:52 ID:MarkedRes
日本国またはアメリカ合衆国、もしくはその両方の著作権法に触れる内容であると疑われることから表示できません。
>>376 WinnyBBSのトリップはRSA公開鍵暗号を利用したものでした。
鍵長が64bitという恐ろしいものだったので、速度は速かったですが、あれでした・・・
2chのトリップは、書き込み内容が管理人によって保証されていることが前提なので、
オープンソースには向かないと思います。
表示トリップ=公開鍵をハッシュなどで圧縮した10文字程度の文字列
として、名前欄を名前◆表示トリップと置換した上で、書き込み内容を公開鍵暗号で
署名して、読み込み側で内容の正当性と、表示トリップの正当性をチェックする、
というのがWinnyのトリップを拡張する1つのやり方
>>386 > WinnyBBSのトリップはRSA公開鍵暗号を利用したものでした。
あれってどこからライブラリ持ってきたのか知らない?短いbit長を指定できて、perlからもdelphiからも
使えるライブラリがあるといいんだけど(すごく虫がいい話しだけど^^;)
> 鍵長が64bitという恐ろしいものだったので、速度は速かったですが、あれでした・・・
だね。この程度だとそこそこの計算量で逆算できるので、管理人は他人のトリップ付の発言を改変することが出来る。
トリップ自体の逆算は無理だけど、管理人が保持しているファイルにはトリップと署名がそのまま書かれているから、
署名の偽造が出来ると管理人は他人の発言を改変できた。
> 表示トリップ=公開鍵をハッシュなどで圧縮した10文字程度の文字列
> として、名前欄を名前◆表示トリップと置換した上で、書き込み内容を公開鍵暗号で
> 署名して、読み込み側で内容の正当性と、表示トリップの正当性をチェックする、
> というのがWinnyのトリップを拡張する1つのやり方
もしかしてWinnyでトリップ改変スレを立ててた人?詳しいなら、新月Crescentではどうするのがいいか教えて^^
>>387 >あれってどこからライブラリ持ってきたのか知らない?短いbit長を指定できて、perlからもdelphiからも
>使えるライブラリがあるといいんだけど(すごく虫がいい話しだけど^^;)
RSAの計算に何のライブラリを使っていたかは残念ながらわかりません。
(ソースを見たわけでないので、動作と逆汗結果しかみてないからわからない)
多倍長演算のルーチンは基数100なのと引数が値渡しだったので、もしかしたらあれかなというのはありますが
そこのHPのはCで書いてありました。
自分では、そこのをもとにいろいろ参考にしてRSAのルーチンを自作したので、どこかにいいのがあれば
私にも教えてください・・・
>もしかしてWinnyでトリップ改変スレを立ててた人?詳しいなら、新月Crescentではどうするのがいいか教えて^^
実は改変スレの中の人ですw
ずっとみてたわけでないのですぐにはなんともいえませんが、ちょっと考えてみます。
>>388 >自分では、そこのをもとにいろいろ参考にしてRSAのルーチンを自作したので、どこかにいいのがあれば
>私にも教えてください・・・
それを使わせてもらうという手も^^;
> 実は改変スレの中の人ですw
やっぱり^^;
> ずっとみてたわけでないのですぐにはなんともいえませんが、ちょっと考えてみます。
よろ^^;
>>388 >RSAのルーチン
提供していただけませんか?
●0.2系の開発について
現在Wiki風のゲートウェイを製作中です。
Crescentの中の人もまた改良点(トリップ、強力な削除支援機能など)を考えているようです。
おそらく0.2には
・現在のgateway.cgi(またはちょっと強化したもの)
・Wiki風のゲートウェイ
・Crescentの中の人が設計したゲートウェイ
・Janny等のためのデータ入出力CGI
が含まれることになるでしょう。
●Crescentの中の人へ
というわけで、お互いに仕様を決定してコードを書いて移植しましょう。
・後方互換性はなくてもやむをえないと思います
・実装としてはhogehoge.cgiという形になります
・Janny等のためのデータの入出力機能の設計もお願いします
・raw.cgiは妥協の産物なので廃止の方向です
>>390 > ・後方互換性はなくてもやむをえないと思います
私としては可能なら従来のデータと互換性を重視したい気もするけどな。まあ程度問題になるけど。
基本的にシンプルなものの上に複雑なものを上乗せしていくのが正しいと思うよ。
メールシステムが単純なテキストの送受信→ヘッダの追加→MIMEによるマルチパートと発展していったように。
上乗せしたものが気に入らなければそこだけ壊して取り替えればいいからね。
これはまだなんともいえないけど、wikegw.cgi形式もJannyで扱うことも可能かな、と思っている。
もともとJaneにはお気に入り機能があって、スレッドをダイレクトに登録できるから。あるいはダミーの
板にすべてたどったスレッドを登録していくか…この場合リストとスレッドは2種類あると不都合なので、
リストはリンクだけが含まれているスレッドとして扱うことになるかな。
とはいえJane(というかJanny)はあまり大規模に弄りたくないので、これはどうなるか今の段階ではなんとも。
話はそれるけど、Wikiライクというなら、新月そのもののこの部分のUIは定型的なものを極力廃したほうが主旨に合うんじゃない?
日付とか名前とかメアドとか定型的なものは必要ならユーザーが自分で本文に書かせ、システム側は本文だけ表示すれば
いい気がする。ただしある程度HTMLタグの使用を許す必要がある醸し得ないけど。また発言IDはリンクを張るのに必要かな…
これについてもタイトルがそのままリンクになる、というポリシーを極限まで推し進めれば、例えば1行目の文字列をリンクとして
扱う、というのもありかもしれないけどね。私にいわせてもらえればここまでして初めて「掲示板とは違うアプリ」といえると思う。
ま、余談は終わり^^;
>>391 いたずらに後方互換性に拘って収拾がつかなくなると困るので、
「なくてもやむをえない」という表現にしました。
互換性があるならそれに越したことはないです。
ただし(狭義の)通信層については完全互換にしてください。
BBS層については、それぞれで設計の一貫性を優先しましょう。
>>393 > ただし(狭義の)通信層については完全互換にしてください。
だね。そこを下手に弄ると新月のネットワークそのものが影響を受けるから。
漠然とした思いをいえば、せっかくオープンソースなんだから、モノリシックなエレガントさよりも、
むしろ継ぎ接ぎしやすいことを目指したい気がする。例えば暗号化の方法が気に入らなければ、
下部構造だけ生かして、暗号化を別なものにしたプログラムを作る、とかね。
とはいえ最初からむやみな汎用性を求めても無駄の方が多いから、この種類の開発は結局のところ
「継ぎ足し」が一番ベストな方法だと思うよ。まあ、これは私の個人的なポリシーに過ぎないけどw
>>389-390 改竄ルーチンに使ってたのはCとアセンブラで書いた多倍長演算ルーチンだったんですが、
ふとDelphiに移行したついでにDelphi+インラインアセンブラで書き直しているのでそれでよければ。
書き直している途中でいろいろバグを見つけたので、すぐには出せませんのでしばしお待ちください。
どういう仕様でやればいいのかよくわかってないので、フォローお願いします。
で、使ってみて思ったのですが、公開鍵暗号では秘密鍵を外に漏らさないことが重要です。
ゲートウェイで書き込むときに、トリップキーをもとに相手側で鍵計算をするのは危険だと思うのですが、
そのあたりはどうやって解決しましょうか。
串経由で2chにトリップ書き込みする時のリスクと同様に考えて、気にしなくてもいいのかな・・・
>>395 そうですね。
一案ですが、ゲートウェイからでは書き込もうとしても
トリップ欄が表示されないようにするという手があります。
Delphiもx86のアセンブリも読めないからどうしましょうかね。
まともに教育受けたのはISO PascalとSparcのアセンブリだったりする(w
まあ、あまり気にしないでください。
頑張って読んでPerlに移植します。
>>395 > ふとDelphiに移行したついでにDelphi+インラインアセンブラで書き直しているのでそれでよければ。
それだとCrescentは嬉しいけど…Perlから呼び出せるのだろうか^^;
> ゲートウェイで書き込むときに、トリップキーをもとに相手側で鍵計算をするのは危険だと思うのですが、
> そのあたりはどうやって解決しましょうか。
トリップ付の発言は(少なくともデフォルトの設定では)ローカルマシン(かそれに類する範囲のLAN内のマシンからしか書けないように
するしかないんじゃないかな。そうすれば必然的にトリップを使うためにノードを立ち上げる人も増えてラッキーだしw
あるいはゲートウェイ側を提供する人の「不特定からのトリップ付カキコを許す」という選択とそのゲートウェイを信頼してカキコする人の自己責任とか。
Crescentの場合BASIC認証でローカルマシンと同等の権限をインターネット側からのアクセスに
許すという設定ができる。当然さほど盗聴について強固でないのだけど、私の感覚はこの程度ぐらいのイメージかな。
ちなみにトリップの元文字列をそのまま秘密鍵にしてもいいのかな?もちろん強度は低下するだろうけど。
私は最初出来合のツールを使う方法を考えてたので(自分で暗号化の部分をプログラムするのが面倒だったので)、
鍵も1024bitで考えていた。となると公開鍵だけを含んだ発言を一度カキコしておいて、あとはgatewayが必要に応じて
過去の発言から必要な鍵を探して検証するのかな。トリップは公開鍵のハッシュになるかな。秘密鍵は
カキコ時に一緒にアップロードして中で署名するのかな。それともクッキーで済むかな、とか考えていたけど、
これは見るからに煩雑なので、トリップ=公開鍵そのもの、トリップ元の文字列=秘密鍵そのもの、といった形で済むなら願ってもない^^。
それなりの強固さを求める人は新月の外で署名や鍵の公開とかをして、署名済みのテキストを新月の本文にカキコすればいいように思う。
この場合新月はメッセージの配信機能しか提供しないことになるけどね。あるいはその時にまた誰かが新月に別の署名処理を
実装するとか。暗号化も実装すれば匿名の者同士で私信ができて便利w
>>398 > 32bitまるまる使って多倍長演算するのに、キャリー使えたりやら64bitで乗除できるんでついアセンブラ
気持ちはすごく分かる^^;
なんでADC命令があるのにCからだとそれをわざわざif文で判別しなきゃならないのかと思っちゃう。
> めもで考えていたように、Winnyのように1回ずつ鍵を生成して書き込みにつけるというのであれば、
> 書き込みサイズの肥大化という問題も出てきます。(base64で512bitが86byteだったかな)
なので、前述のように先に鍵だけカキコしておくというのが私の最初の構想だった。
ただ強度をそこそこに抑えて鍵長を短くできるならそっちのほうがいいかな、と思っているのだけど。
256bitぐらいなら許容範囲では。ただ「1回ずつ鍵を生成」というのが分からないんだけど…
同じ発言者は同じ鍵を使うんだよね。だから 一個の発言のうち、 鍵+本文+署名をカキコすることになって、
このうち鍵は常に同じって理解しているんだけど、この理解で正しい?
> PGPみたいに鍵を先に貼っておいてという風にすれば、同じ人が何回も書き込む時にサイズ増加を抑えられます。
ですな。それが私の最初の考えだった。
> ですが、スレッドにかかわらずやるのなら認証サーバスレみたいなのが必要になるし、スレッドごとにやるのでも
鍵自体はスレッドに依存する情報を含まないのだから、鍵やそのハッシュはスレッドに依存しないと理解してるんだけど…
鍵そのものかそのハッシュをトリップとして表示すれば、基本的に同じトリップ(公開鍵)でデコードできる署名は
同じ秘密鍵で生成されたもの、なのでは。
ただ新月の場合必ずしも全ての発言が受信できる保証はないから、たまたま公開鍵を張ったレスをあるノードが
受信しそこなう可能性はある。その場合どうしようもないので、「ごめん、もういちど鍵を貼り付けてくれない?」と
口頭で本人に頼むしかないかな、と。
> スレッドキャップ★みたいにいちいちスレッド管理者に認証してもらう必要が出てきます。
> Winnyみたいに管理者がはっきりしているのなら、スレッドキャップも考えられなくもないですが、
> (まだ仕様よくわかってないのであれですが)誰もが管理者となり得る仕様では難しいのではないかなと。
その点はそう思う。
> なのでサイズ増加と鍵生成コスト(素数判定)には目をつぶって、いちいち公開鍵をつけた書き込みをするのも
> メリットはあるのではと思います。
> この場合RSA上の秘密鍵は内部で使用されるだけで、書き込み者はトリップキー(鍵生成の種)から
> その都度生成することとなります。
むむ、よく理解できない…秘密鍵をその都度(疑似乱数か何かで?)生成するのでは、
何をよりどころに当人がその鍵とその鍵でなされた署名を生成したのか判断するの?
毎回公開鍵をつけることには基本的に賛成だけど、同じ発言者(同じトリップを持つ発言者)が使う鍵は同じであると、
私は理解しているのだけど…
あ、でも
>>398のリンク先によると256bitだと数時間で破れるのかな^^;むぅ
一応私が当初考えていた方法を改めて書いとく。
1. 公開鍵と秘密鍵を生成。これはgpgとかの既存のツールを使う。
2. そのハッシュを名前覧に書き込む。これがトリップとなる。本文に公開鍵を書き込む。この発言全体が公開鍵レスとなる。
受信者は公開鍵のハッシュを自分で計算すればトリップと一致するか否かを確認できる。まあこの確認すること自体にはあまり意味がないけど。
トリップ=公開鍵のハッシュ
本文=公開鍵そのもの
3. 秘密鍵は自分のローカルマシンにファイルとして保持するか、ローカルのブラウザのクッキーとして保持(なんかこれがすごく不安だけど^^)
4. 送信者は公開鍵のハッシュ(トリップ)と本文を合わせたもののハッシュを求め、それを秘密鍵で暗号化し、本文の末尾に付記。名前覧には公開鍵のハッシュをトリップとしてカキコ。
トリップ=公開鍵のハッシュ
本文
署名=「「トリップ(公開鍵のハッシュ)+本文」のハッシュ」を秘密鍵で暗号化したもの
5. 受信者はトリップを元にそれ以前の発言から同じトリップを持ち公開鍵を含む発言を検索し、それを使って署名を複合化。
それと本文のハッシュを比較し一致を確認。その中に含まれる公開鍵のハッシュ(トリップ)が発言の名前覧のトリップと一致することを確認。
これでこの発言の正当性が確認される。
トリップ(公開鍵のハッシュ)を目印に過去の発言から公開鍵を検索
「トリップ(公開鍵のハッシュ)+本文」のハッシュを計算 …(A)
署名を公開鍵で復号化 …(B)
(A)と(B)が一致することを確認。使った公開鍵のハッシュと、トリップ(名前覧に書き込まれたものではなく、
ハッシュ計算の対象になっているもののほう)が一致することを確認。
>>399 >256bitぐらいなら許容範囲では。ただ「1回ずつ鍵を生成」というのが分からないんだけど…
>同じ発言者は同じ鍵を使うんだよね。だから 一個の発言のうち、 鍵+本文+署名をカキコすることになって、
>このうち鍵は常に同じって理解しているんだけど、この理解で正しい?
>>400 >むむ、よく理解できない…秘密鍵をその都度(疑似乱数か何かで?)生成するのでは、
>何をよりどころに当人がその鍵とその鍵でなされた署名を生成したのか判断するの?
すみません、Winnyトリップシステムを前提にしゃべってしまいました。
「一回ずつ生成する」の言わんとすることは、ざっというと、
1.書き込み者はトリップ生成キーを用意する。これは2chのトリップと同じで、この文字列が一致すれば
同一人物とみなす(公開すれば誰でもなりすましができる)
2.中の人は、投稿のたびにある関数を通し、秘密鍵と公開鍵を生成する。この関数は、ハッシュを
鍵生成の種として使うものとし、トリップ生成キーごとに一意の鍵ペアを生成する。
3.生成した秘密鍵で内容を署名し、公開鍵をつけて投稿する。
ということで、発言に必要な鍵(=トリップキー)は1つで、毎回同じトリップキーを使います。
当然鍵ペアも(トリップキーごとに)同じになります。
この方法の最大の利点は、発言者が用意するものはトリップキーのみ。長い公開鍵や秘密鍵は
中の人がその都度計算するので覚えておく必要はありません。2chトリップと同じ感覚で使用できます。
その他の利点としては、同トリップの他発言と完全に独立で、発言が一部受信できない時にも認証できます。
欠点は、公開鍵が発言毎についてしまうこと。これは、スレッドの容量を圧迫します。
トリップ発言荒らしが出るかもしれません。
最大の欠点は、一番コストのかかる素数探しを毎回やらなければならないことです。
(トリップキー<->鍵ペアをキャッシュしておくと少しはマシになるかも)
>>400 >鍵自体はスレッドに依存する情報を含まないのだから、
そうです。どこかに鍵を公開する場所が必要、という意味で鍵公開スレがいるかも、と。
スレッドの進行中に毎回貼るのもなぁと思っただけです。(非表示にすればいいのか)
公開鍵は、発言の正当性を確かめる時に、いつでも手に入ったほうがいいですから
レスを落とす度合いと、レス毎につけるコスト(計算と容量)を秤にかけないといけないですね。
>>403 鍵を検索するくらいなら、いっそのことキャップにまで格上げしたらいいかも。
>>404 >ということで、発言に必要な鍵(=トリップキー)は1つで、毎回同じトリップキーを使います。
>当然鍵ペアも(トリップキーごとに)同じになります。
なるほど。
>>405 > スレッドの進行中に毎回貼るのもなぁと思っただけです。(非表示にすればいいのか)
スレッドのどこかに一個あればいいんだよね。
>
>>403 > 鍵を検索するくらいなら、いっそのことキャップにまで格上げしたらいいかも。
キャップってのは承認する人間が必要だよね。あまりP2Pにはそぐわない気がする。
私のあの文章での検索というのは何処にあってもいい鍵が実際に何処にあるかを探すだけだから、
本質的に意味が違う。ただ、一つの形としてなら、管理人がいる掲示板は合ってもいいとは思っているけど。
余談だけど、楕円暗号は160bitでRSAの1024bit相当の強度、とかあるね。いいなあ…
まあ巨大なファイルが平気で添付される時代だから、1024bit(BASE64で170文字前後かな)のデータが
毎回余分についてもいい、という割り切りもあっていいかも知れない。
プログラムを作っている自分たちや、
流れているデータを覗いた人は耐え難いものを感じるかも知れないけどw、ユーザーから見えなければいいという
割り切りも…^^;
| これは私の公開鍵だよ。絶対の絶対にホントだよ。誰がなんと言おうとぜったいに。信じてよーお願いだよー。
| 絶対の絶対の絶対の絶対の絶対の絶対の絶対の絶対の絶対の絶対の絶対だってば!
これでだいたい170文字ぐらいかな。案外メールの末尾につける普通の署名の長さと大差ない気もする。
それに新月の場合データの転送ではgzipで圧縮されているから、まとめて取得する場合(SYNC処理)ではもしかしたら圧縮に期待できるかも。
随時行われる更新では期待できないけど。
>>406 >キャップってのは承認する人間が必要だよね。あまりP2Pにはそぐわない気がする。
ローカルに鍵を貯めておくのであれば、その鍵の使用者=特定の文字列と表示時に対応付けると
キャップみたいかなと思って。
グローバルにキャップ文字列の一意性を保証するのは難しいけれども、スレッド内くらいならいけるかも。
被ってたら時間が先のものを優先して、キャップ★キャップ(2)★とか置換するとか。
もしくは鍵の一部を取ってきて、キャップA0★キャップ47★とかしておくとか。
書き込みの伝達速度にもよるけど、認証関係で紛らわしいのはやっぱりボツかな・・・
>余談だけど、楕円暗号は160bitでRSAの1024bit相当の強度、とかあるね。いいなあ…
いいなあ・・・とは思うけど楕円曲線状の離散対数演算なんて本読んだけどわからなかったw
>>407 フィールドにバイナリとかは禁止だよね。エンコードを変えても焼け石に水か・・・
ファイル添付したスレッドとかもすごいことになってるし、少々足してもいいかな・・・
>>409 > ローカルに鍵を貯めておくのであれば、その鍵の使用者=特定の文字列と表示時に対応付けると
> キャップみたいかなと思って。
ああ、どちらかというと表示面の話だね。
ところでWinnyが使っている「トリップ元文字列→公開&秘密鍵の生成」の部分にも何か工夫があるのかな?
>>407 170バイトくらいならレコードに入れちゃった方が
全体としてのコストは低そうです。
全ての書き込みにつくわけでもないでしょうし、
外部からはトリップをつけられないとしたら、さらに回数が減るでしょう。
>>410 公開鍵として必要な法nと指数eのうち、指数のほうを0x10001決め打ちにしてるから、
認証確認時の累乗が少しでも時間短縮できることと、トリップ欄は1要素だけになっていることかな。
(表に出てないほうのトリップ文字列は暗号化したハッシュなので、計2要素を書き込んでいる)
それと素数かどうかのテストが高々32bitになっているので、力技でできることw
トリップと削除情報のデータ構造についての案
この案ではトリップ計算アルゴリズムと入力、受けとったデータをどう扱うかについては論及しない。
●トリップ
- traditional
(添付までが無名フィールドで、その後は名前つきフィールドを自由に置く)
stamp<>id<>名前<>メール<>本文<>拡張子<>添付<>pubkey:公開鍵<>sign:署名
- strict
(IDまでが無名フィールドで、その後は名前つきフィールドを自由に置く)
stamp<>id<>name:名前<>mail:メール<>body:本文<>suffix:拡張子<>attach:添付<>pubkey:公開鍵<>sign:署名
●削除情報
stamp<>id<>file:ファイル名<>target:ID<>pubkey:公開鍵<>sign:署名
削除する対象のレコードをファイル名とIDで指定する。
この場合のファイル名は
menu, testboard, plf2yTw4BEy1hNkv, list_E3828AE38199E381A8, thread_E38199E3828CE381A3E381A9など。
IDは表示用の14d24e7dではなくて識別用の14d24e7def92d02aafa8f45af218eb39。
これを新月で流す場合には remove_HOGE というファイル名にして /update を使う。
HOGE部分の決め方は未定。
い、いきなり伸び始めた・・・
ネトラン読んで技術ある人はこっちに来て厨はshareに行くのかな?
オープンソースだもの
Winnyのトリップは、エンコード時にちょっと撹乱させてるけど、実験のコードの
エンコードはとりあえずbase64そのままでいいよね。
そのあたりをすげ替えれるように作ればいいのかな。
ム板のP2P掲示板関係のスレの過疎化が激しいです
まぁもともとあそこは・・・なわけだが
>>416 Base64変換ルーチンは新月にもCrescentにもあるので、
単にバイナリを返すだけでも大丈夫です。
ふぅ、マシンの電源ユニットが壊れた。派手に火花飛ばして。目の前にいたから良かったけど悪くすれば火事になってしまうがな…^^;
新しい電源ユニット買ってきて付け替えたら直ったけど。
>>413 トリップのフォーマットについてはだいたい私もそんな感じのイメージ。
ただ、どこから何処までを署名の対象範囲にするかが悩ましい。特にフィールドが増えると。
案としては
idの計算範囲
idフィールドの直後のフィールドからそのレコード末尾まで
signの計算範囲
idフィールドの直後のフィールドからsignフィールドの直前のフィールドまで。signの後ろにさらにフィールドがあっても計算対象外。
となるのかな。例の順序だと公開鍵自体も署名の対象となる。まあ、これはその方がいいのかもしれない。
どちらもフィールドの中身だけでなくセパレーターの文字「<>」も含まれてしまうけど、まあこれは現状のidの計算もそうだからいいよね。
削除情報についてはレコードの削除情報はどちらかというと普通の発言の形に近いものが言いように思う。
普通の署名付発言に「これは削除情報だよ」というフラグが付いている形。誰がどの削除情報を出しているか
普通の発言としても読めるように。
ファイル単位の削除は…今のところ何とも。どちらかというと更新対象から外すという形の方がいいのかも。
(SYNC処理の対象から外すし、UPDATE要求が来ても通過させるだけ)
なので、ちょっとまだ削除情報については自分の考えがまとまってない^^;
また実際の署名のチェックを行わない処理系(または行わないモード)でもトリップの文字列そのものは
表示される形がいいかも。署名のチェックって処理時間のコストがかかる気もするから(実装もw)。
この場合署名の正当性が検証されていない発言として表示することになる感じかな。あるいは
処理系が処理しないんだから、公開鍵と署名のBASE64の文字列をそのまま表示して、「ユーザーさん、どうとでもして!」とするかw
まあこの辺はおいおいトライ&エラーで作っていけばいいかな。
となると今度は実際の実装をどうするかだね。前の方で某氏が紹介してくれたライブラリ、まだ見てないんだけど^^;
あれってperlやdelphiからも使えるのかな。それだと嬉しい。あるいは某氏の自作ライブラリの方が性能がいいなら
Crescentはそちらを使いたい気もする。perlやdelphiから簡単に使えるライブラリがない場合は内部でgnupgの実行ファイルを
起動することになるかな。ただ投稿時はともかく、表示時にトリップ付発言毎にgnupgを外部呼び出しするとさすがにパフォーマンスが
気になる気もする。
あとトリップ→公開鍵&秘密鍵の部分も某氏に案(とできればプログラム^^;)を練ってもらえると嬉しいなー
>>420の補足
> ファイル単位の削除は…今のところ何とも。どちらかというと更新対象から外すという形の方がいいのかも。
だからイメージとしては2chの「スレッドストッパー」見たいな形かな。
となるとこれもやっぱりスレッドに投稿された「特別なフラグ付の発言」扱いにした方がいいかも知れない。
#お、書いているうちに少し考えがまとまってきた^^;
>>420-422 >idの計算範囲
同意
>signの計算範囲
これが難しい。というのは、名前付きフィールドは順不同にしたいので。(下に案あり)
>署名のチェック
内部的に計算してもいいし、チェックを行なったということを記録しておいてもいいし、
チェックしますかボタンを出してもいい。そのへんはおいおい考えていきましょう。
>特別なフラグ付の発言
それもよさそうです。というのはremove_HOGEの命名規則に悩んでいたから。
>>413の案・改訂版
- traditional
stamp<>id<>名前<>メール<>本文<>拡張子<>添付<>pubkey:公開鍵<>sign:署名<>target:署名の範囲<>remove:削除対象
- strict
stamp<>id<>name:名前<>mail:メール<>body:本文<>suffix:拡張子<>attach:添付<>pubkey:公開鍵<>sign:署名<>target:署名の範囲<>remove:削除対象
署名の範囲というのは、「name,body,attach」のように記述する。
これらのフィールド値を指定順に単純結合して署名を生成する。
削除対象は通常はIDを書く。
「スレッドストッパー」は特別な文字列「STOP」で対応。
s/単純結合/<>を挟んで結合/
>>423 > これが難しい。というのは、名前付きフィールドは順不同にしたいので。(下に案あり)
署名(や暗号化)の部分も一つのヘッダと見なせば
通信層 ヘッダ=stamp<>id 対象=ヘッダから末尾まで
署名層 ヘッダ=pubkey<>sign 対象=ヘッダから末尾まで
という形で一貫性ができる。それぞれ自分より後ろのデータについては関知しない、といった感じ。
ただし現在のデータの形式上、署名のヘッダを「名前」より前に持ってくるのが難しいので、じゃあ後ろに置くしかないかな、と思った。
順不同はどうかなー。確かにperlのwikigw版のコードを見ると順不同にしたい気持ちは分かるけど^^;
文字列の分割&結合をしないとならないのが…delphiはperlほど文字列の扱いが得意ではないので。
そうしたことを気にせずに気楽に組んだのがv.0.0.5までのCrescentで、その遅さは折り紙付^^;
なので、原則として順序はフィールドに並んだ順であることが圧倒的に多い、という仮定を立てて、そのケースマッチすればそのまま分割&結合せずに処理。
もし違う場合は(そういうケースは頻度として少ないので)、targetで指定されてた順に文字列を並び替えて計算、とかいう処理を挟まなければならないかも。
(実際にどれくらいのパフォーマンスが必要かは作ってみないと分からない。)
順固定でいいんじゃない?(^^;
>>421 >あとトリップ→公開鍵&秘密鍵の部分も某氏に案(とできればプログラム^^;)を練ってもらえると嬉しいなー
この部分はどういうところですか?認証のために、書き込まれた文字列から公開鍵を抜き出すということ?
とりあえず、思いっきりポカしてたところは直ったんで、骨組みは動くようになりました。
(ある数を素数判定したり、法のもとで逆数取ってきたり、法のもとのべき乗したり)
あとは、何らかの種から、素数もってくる方法を考えて組まなきゃならないんで、もうしばしお待ちを。
ちゃんと動くかためさないと、多倍長ライブラリ側にバグがあるかも。
とりあえず、ライブラリの動作テストにWinny互換トリップを試して、過去の結果と一致すれば
一応パスということにして、実験実装に入ります。
とりあえず鍵長は何bitでやってみますか?いくらでも変えれるんでいいんですが、素数を取ってくるときに
Winnyみたいにハッシュそのままでは桁が足りないので(MD5は128bit)どうしましょ。
前に試した時は、トリップキーに適当に付加した文字列のハッシュも使ったのですが。
セキュリティー的にはどうするのがいいのかな。
素数判定は、Millerテストで確率的にやっちゃってるんですが、最後に本当に復元できるかテストもするので
多分問題ないはずです。
本当は、ヤバめな素数の組(容易に因数分解できるパターン)は弾かなきゃならないんですが、結構コストが
かかるので、どこまでの精度を求めるかなんですが。
騙りが出ると、どのぐらいの被害が出るシステムを想定してますか?
>>426 > >あとトリップ→公開鍵&秘密鍵の部分も某氏に案(とできればプログラム^^;)を練ってもらえると嬉しいなー
> この部分はどういうところですか?認証のために、書き込まれた文字列から公開鍵を抜き出すということ?
上の私の文章はWinnyがトリップ元文字列から一意の2組の鍵を生成している箇所のこと。
別にWinnyと同じである必要はないし、そんなの不要だよ、という答えでもいいんだけど、
不要という答えを含めて、私が判断するより、あなたの判断の方がまともそうなので^^;
> とりあえず、思いっきりポカしてたところは直ったんで、骨組みは動くようになりました。
> (ある数を素数判定したり、法のもとで逆数取ってきたり、法のもとのべき乗したり)
> あとは、何らかの種から、素数もってくる方法を考えて組まなきゃならないんで、もうしばしお待ちを。
Crescentはそのプログラムをそのまま使えば良さそうなんだけど、perlの場合はどうしたらいいんだろ?
既存のperlから利用できるツールやライブラリと同じ処理をする部分は、それを使えばいいと思うのだけど、
上記のような独自の部分は…さほど計算速度がいらないのであればperlで本家作者さんに組んでもらえばいいのかな?
#まあ私が心配することではないかもしれないけど…
> とりあえず鍵長は何bitでやってみますか?いくらでも変えれるんでいいんですが、素数を取ってくるときに
> Winnyみたいにハッシュそのままでは桁が足りないので(MD5は128bit)どうしましょ。
(少なくとも私には)どの辺が妥当なのか判断できないので、一任^^;
> 騙りが出ると、どのぐらいの被害が出るシステムを想定してますか?
本家の作者さんは結構その点おおらかのようだし、私もそれで鉄壁の防御をしたいわけではなくて、
一種の抑止力と考えているので(「署名を見つけるのは難しそうだ」と破る意欲をつみ取ることが目的)、
運悪く例外的に鍵が見つかってしまうケースはいいかな、と今のところ思ってる。その意味で鍵の長さも
数時間で見つかってしまうのはさすがに困るけど、1ヶ月間計算して破られるのならそれでいいかな、と。
>>425 traditionalでは「id直後〜pubkey直前」
strictでは「sign直後〜末尾」
としましょう。
何らかの理由でtargetを絞りたいときはフィールドの並び順で対応する。
(targetフィールドは取り止め)
ちなみにDelphiは文字列が苦手だそうですが(ISO Pascalはもっと苦手ですが)、
Perlは(MD5を求めるような)数値計算がとても苦手です。
Cで書いてリンクするという手もあるみたいですが。
よく考えてみたらstrictに限っていえば必ず名前付きフィールドのパースが必要になるので、
トリップのコストは相対的に低くなるはずです。
traditional ... ID直後〜pubkey直前
strict ... targetフィールドで指定
というのが妥当かと。
>>428 >traditionalでは「id直後〜pubkey直前」
>strictでは「sign直後〜末尾」
>としましょう。
>何らかの理由でtargetを絞りたいときはフィールドの並び順で対応する。
>(targetフィールドは取り止め)
サンクス。あるいは実際に作ってみて、ニーズとパフォーマンスの様子を見て必要になったらtargetを導入するというのもいいかも。
>ちなみにDelphiは文字列が苦手だそうですが(ISO Pascalはもっと苦手ですが)、
ISO Pascalって固定長文字列しか扱えないとかだっけ^^;
delphiの場合文字列型があって処理系が解放作業とかもやってくれるので、ある意味C言語とかよりも
得意なのだけど、甘えすぎるとパフォーマンスが悪くなるみたい。
>Perlは(MD5を求めるような)数値計算がとても苦手です。
>Cで書いてリンクするという手もあるみたいですが。
きっとそんな感じだよね。うーむ…
>>429 delphiの場合パース自体が負担なのではなくて、不定長の文字列を動的に生成するのが高コスト。
分割の場合にしても結合にしても元の文字列から分割後あるいは結合後の文字列を新たに作り出しているので。
v.0.0.5もv.0.0.6も名前や本文や添付データの切り出し処理はどちらもやっているけれど、前者は切り出した文字列を
実体として実際に生成してルーチン間で受け渡している。後者は範囲(もとの文字列の何文字目から何文字目までが
名前フィールド、という情報)だけを使ってルーチン間でやり取りしている。
>>430 >ISO Pascalって固定長文字列しか扱えないとかだっけ^^;
です。文字列比較が=でできたりして便利なところもありますが。
Perlでも単にコーディングしやすいだけで、実際には
>不定長の文字列を動的に生成するのが高コスト。
という事情は変わらなかったはずです。
# というか、実行速度を考えていたらPerlなんて使えませんて(w
>>431 > Perlでも単にコーディングしやすいだけで、実際には
> >不定長の文字列を動的に生成するのが高コスト。
> という事情は変わらなかったはずです。
> # というか、実行速度を考えていたらPerlなんて使えませんて(w
そんなことないと思うけど。動的なデータの扱いは結構言語設計のキモだから。
メモリの使用効率と処理速度のバランス一つとっても、言語の設計思想によって千差万別だと思うよ。
あとperlが遅いというのはインタプリタの遅さであって、それと動的メモリを効率よく扱えるか否かとは別な話。
確かに数値計算などはインタプリタでは不利だけど、文字列の処理の実際の処理は処理系の内部処理として
行われるのだから、それはインタプリタを記述している言語(例えばC言語)のパフォーマンス(あとはそのアルゴリズム)
だから、インタプリタとコンパイラの速度にさほど大きな違いはないと思うよ。
おいらの知る限りダウソ板で開発中のP2Pでオープンソースなのはこれだけなので応援!
一応strictの基本的な考えかたを書いておこうと思います。
通信層ではレコードというのは「文字列」です。
BBS層では文字通りレコード型です。
どこかでパース処理をしているわけですね。
stamp,idの値を検出するのはtraditionalと同じく配列的な発想で、
単に最初の2つのフィールドです。
pubkey,signの値はちょっと違ってて、
本文や名前と同じく、名前付きフィールドをパースしないといけません。
つまり、pubkey,signというのは、パース後の世界です。
一般的にレコード型というのは名前で識別されるものであって、
出現順は記録しないデータ型です。
レコード型の値を利用するのに、パース前のデータが必要というのは、
ちょっと困った話です。
これは単に今回のゲートウェイだけでなく、今後新月上で動くであろう、
全てのstrictアプリケーションの動作を決定する問題です。
「strictレコードはレコード型の記述形式であって、
名前付きフィールドの順番を問わない」という
原則に基いてトリップの仕組みを考えるべきでしょう。
ちなみに、文字列のコピーをせずにindexのやりとりだけで
トリップを計算することもできると思いますよ。
maketrip(var str: String; index: array of integer; beginkey, endkey: integer);
みたいな形にしておいて、
indexには bodyの開始, bodyの終了, attachの開始, attachの終了
みたいに入れておく。
あとはstrを嘗めていくループにちょっと工夫をすればいい、はず。
>>434 > pubkey,signの値はちょっと違ってて、
> 本文や名前と同じく、名前付きフィールドをパースしないといけません。
> つまり、pubkey,signというのは、パース後の世界です。
そう決めるのは自由だけど、必然性は特にないと思うよ。
また通信層とBBS層の2つではうまくモデル化できない。著名層や暗号化層などそれぞれが一つの層と捉えるべき。
> 一般的にレコード型というのは名前で識別されるものであって、
> 出現順は記録しないデータ型です。
今回の場合データが階層構造を成しているのだから、それぞれが同列であるとは限らない。
通信層から見れば「通信層のヘッダ+それ以降の部分」だし、通信層の「それ以降の部分」の中に
「署名層のヘッダ(今回はテイラーだけど)+それ以降(それ以前)の部分」があり、署名層の「それ以降の部分」の
中にBBS層の各フィールドがあると捉えることも出来る。
例えば今回は署名なのでわかりにくいが、暗号化処理の場合、どこを暗号化するかがより問題となる。
すなわちセパレータやタグは暗号化の対象なのか否か、ということ。各フィールドが対等ならばタグは
暗号化できない。レコードがどんなタグを含むのか(どんな性質のレコードなのか)は隠すことが出来ない。
階層構造を持ち、内部のデータ構造を外側がカプセル化していると捉えれば、内側のデータ構造は
暗号後のデータからは見えなくなる。
もちろんどちらのモデルも一長一短があるし、そもそもどちらか一方でだけである必要もない。
原理的には両方の形が必要なのだろう。
なので、各フィールドが対等なのだ、というモデルは正しくないわけではないが、唯一正しいものでは少なくともない。
この点は意識しておいた方がいいと思うよ。そのモデルでは対処できない目的も存在するということ。一方私の
モデルだと、この点は棚上げした形になっている。よくいえば両方に対処できるし、悪くいえば問題を先送りしている。
> レコード型の値を利用するのに、パース前のデータが必要というのは、
> ちょっと困った話です。
その困った状態が生じるのは、そういうモデルを選択するからだと思うけど。外側の層が内側の層のデータを
カプセル化していると考えれば、この問題はそもそも生じない。事実、通信層のIDがフィールドを意識せずに単なる
文字列としてMD5を計算しているよね。
> これは単に今回のゲートウェイだけでなく、今後新月上で動くであろう、
> 全てのstrictアプリケーションの動作を決定する問題です。
もちろんそうなんだけどね。ただそこに今立ち入りたくなかったので、とりあえず正面からは突っ込まなかった。^^;
正面からいうのであれば「順不同というモデルはカプセル化の観点からいえば、望ましくない」となる。
外側の層が内側の層の構造の意識しないと処理できないのでは、何かと不自由。例えば内側に
階層構造を拡張用とした場合、その都度外側の層もそれが処理できるように書き換えなければならない。
> ちなみに、文字列のコピーをせずにindexのやりとりだけで
> トリップを計算することもできると思いますよ。
もちろん実装コストに見合うメリットがあるなら、実装の手間は厭わないが、この場合メリットがないどころか設計に害がある。
これが私の本音。それをいわずにパフォーマンスや実装のコストの話で片づけようとした私に問題はあるけど、
そうしておけばとりあえずこの問題を先送りに出来るかな、と甘く考えたというのが正直なところ。少なくとも先送りしても
当面(データそのものの暗号化とかの機能を入れるまで)は問題なさそうだし。
付け加えれば、その意味ではtraditionalフォーマットはどうしようもないけど、strictフォーマットの場合はpubkeyやsignを
名前とか本文の前に持ってきたいところ。
>外側の層が内側の層のデータをカプセル化していると考えれば、
この場合、そのモデルを選んではいけません。
なぜかというとファイルのデータ構造というのは、
いろいろなアプリケーションが利用するからです。
例えばstat.txtのようなローカルなファイルはCacheStat.pmによってカプセル化されています。
これはどう弄ろうと、インターフェースさえ保証されていれば問題ありません。
データファイルは違います。
繰り返しますが、これは全ての新月アプリケーションの挙動を決める文法です。
>>437 > >外側の層が内側の層のデータをカプセル化していると考えれば、
> この場合、そのモデルを選んではいけません。
> なぜかというとファイルのデータ構造というのは、
> いろいろなアプリケーションが利用するからです。
私は署名層はアプリケーション層の1つのアプリではなくて、通信層とアプリケーション層の間に位置する一つの層という
考えなのだけどね。
> 繰り返しますが、これは全ての新月アプリケーションの挙動を決める文法です。
何度も言うけど署名や暗号化はアプリケーションには属さない。通信層と同様にアプリケーションが
それらを利用して動作するための基盤だと思うよ。
できれば、トリップとってください・・・
読みづらい・・・
この手の事柄で完璧を目指せば、行き着く所はMIMEやXMLのように階層を記述ような形ならざるを得ない。
ただ現段階でそこまで考えるのはいかにもオーバースペックだから、当面はシンプルにいった方がいいと思うけどね。
その意味では率直に言えばstrictフォーマットは中途半端であると思えてしまう。当面のメリットないにも関わらず、
自由度だけが大きい。しかし自由度を生かせるような用途はあまりなく、生かすにはさらに階層構造の導入という
拡張をしなければならない。
>>438 僕のモデルでは↓となります。
UI層
アプリケーション層(スレッドにはbody,name等のフィールドがあって・・・)
署名層(暗号層があればこの辺でしょうね)
パース(レコードにする)
通信層(テキストとして扱う)
>>441 何度も言うけど、署名層の下でパースする必然性がないと思うけどね。通信層がテキストとして扱っているなら、
その署名層もテキストでいいはず。具体的に何かそうしなければならないような用途を暖めているなら、聞かせてもらえれば
あるいは考えが変わるかもしれないけど、今のところあえて「データの順序に意味を持たせない」という制限を加えてしまう
だけの理由が私には感じられない。順序に意味があるデータもあればないデータもあると考えるのが妥当で、
現段階で一方に決めてしまうのはわざわざ今後の選択の余地を狭めるだけだと思うけど。
>>442 「「名前付きフィールド」と「レコード型」が1対1対応しているべき」という設計思想に基いているため。
そもそも「データの記述と意味構造は対応しているべき」という思想からスタートしているから、
ファイル構造の隠蔽・カプセル化の思想と矛盾するのは当然でしょう。
正直いって、この議論に結着がつくとは思えない。
基本思想を曲げてまで設計するつもりはないし、それはあなたも同じでしょう。
当面は「通信層を共有する2つのソフトウェア」で開発しませんか?
とりあえず、トリップルーチンのサンプル実装できました。
どこに上げたらいいですか?
新月のなかの Delphi版新月 Part2スレに上げておきました。
・・・うっかりしててパスワード付きで貼ってしまったんで消したいんですが、削除できない・・・
>>427 >あとトリップ→公開鍵&秘密鍵の部分も某氏に案(とできればプログラム^^;)を練ってもらえると嬉しいなー
一応トリップ元文字列と、それを元にちょっと変えた文字列(128bitじゃ足りないので)にMD5をかけて
256bitや512bitのデータをつくり、約4:6に配分して2つの数を作りました。これをそれぞれ素数化して
鍵ペアを作っています。
手元の本によると、2数が近すぎるとフェルマーアルゴリズムでの因数分解の餌食になるらしいので
大きさを変えてみました。
>> とりあえず鍵長は何bitでやってみますか?いくらでも変えれるんでいいんですが、素数を取ってくるときに
>> Winnyみたいにハッシュそのままでは桁が足りないので(MD5は128bit)どうしましょ。
>(少なくとも私には)どの辺が妥当なのか判断できないので、一任^^;
とりあえず256,512,1024を作ったんですが、前に作ったよりも若干遅くて1024bitは署名に約3秒もかかります。
どうも素数であるかの判定に時間食ってる気がするので後で見直してみますが・・・
破られてもいいのなら512bitが妥当かなという気がします。
何台も使って本気でやって月オーダーだと思うので、まだ大丈夫だと思います。
>>434 >ちなみに、文字列のコピーをせずにindexのやりとりだけで
>トリップを計算することもできると思いますよ。
作ったやつは思いっきりString使って受け渡してますし、内部でもString使いまくってしまいました・・・
つい便利なので・・・
速度がやばそうなら直します。
>>434-443 >フィールドについて
署名対象さえはっきりしていれば、トリップはどこにでもつけられます。
高速化を目指すのなら、ハッシュ取る所などを融合すれば無駄なコピーが防げると思いますが、
残念なことにトリップルーチンは激遅なので(数msレベル)あまり意味がないかも。
自己レス
>>446 >どうも素数であるかの判定に時間食ってる気がするので後で見直してみますが・・・
ミラーテストをする回数40回になってたからでした。前やったときはもっと小さかったようで。
20以下にすると2秒切るくらいでした。はずれの場所を引くともっとかかるかもしれませんが。
誤判定の確率は10で1/10^6、20で1/10^12、40で1/10^24くらいのはずなので
大きすぎたかもしれません。
乙です。
よく読んでPerlに移植しようと思います。
多倍長計算は標準モジュールがつかえそうです。
>>443 > 「「名前付きフィールド」と「レコード型」が1対1対応しているべき」という設計思想に基いているため。
> そもそも「データの記述と意味構造は対応しているべき」という思想からスタートしているから、
> ファイル構造の隠蔽・カプセル化の思想と矛盾するのは当然でしょう。
レコードの順序にも意味はあると思うけどね。
> 正直いって、この議論に結着がつくとは思えない。
下位層がむやみに上位層に対して制限を加えるべきではない。この場合「データの順序に意味を持たせてはならない」という
制限を上位層に不当に加えているように感じる。
> 基本思想を曲げてまで設計するつもりはないし、それはあなたも同じでしょう。
基本思想に妥当な根拠がないと感じる。データの意味はアプリ層で規定されるべきで、下位層に持ち込むべきではない。
> 当面は「通信層を共有する2つのソフトウェア」で開発しませんか?
うーん、下位層はリベラルに設計した方がいいと思うけどなぁ。
traditionalについては前述の通り順序に依存する。
strictについてはtargetでフィールドを指定するが、当面「通信ヘッダ+署名ヘッダ+名前や本文など」という並びを用いる。
(別な順が必要になったら新月はそのままでいいし、crescentはその時に任意の順序に対応するように修正するか、しないかを選ぶ)
というあたりはどう?
>>446 > 手元の本によると、2数が近すぎるとフェルマーアルゴリズムでの因数分解の餌食になるらしいので
> 大きさを変えてみました。
へー^^;
> とりあえず256,512,1024を作ったんですが、前に作ったよりも若干遅くて1024bitは署名に約3秒もかかります。
> どうも素数であるかの判定に時間食ってる気がするので後で見直してみますが・・・
> 破られてもいいのなら512bitが妥当かなという気がします。
> 何台も使って本気でやって月オーダーだと思うので、まだ大丈夫だと思います。
素数の判定ってことはトリップの生成部分ってことだよね。それなら以前話に出てたようにトリップと鍵を
キャッシュすればいいかな(でもセキュリティホールがあってそのファイルを外から読まれるとまずいかな^^;)。
私としては512でも1024でもどちらでもいいや^^;
> 作ったやつは思いっきりString使って受け渡してますし、内部でもString使いまくってしまいました・・・
> つい便利なので・・・
便利ですな。処理系が管理してくれるのでCやC++とは比べものにならないほど便利。perlとか最初から
文字列重視の言語以外だと、delphiに匹敵するのはjavaぐらいかな。
> 速度がやばそうなら直します。
とりあえず様子見かな。巨大なデータを扱うのは本文や添付ファイルなどのハッシュをとるところだけだよね。
> 残念なことにトリップルーチンは激遅なので(数msレベル)あまり意味がないかも。
トリップルーチンというのはトリップ→鍵生成のことだよね。
「たまたま順番がこうなっているだけで、文法上は順番に意味はない」
というなら問題ありません。
CVSにあるやつは署名が最後にあるけど、前にもっていきましょう。
>>451 ^^
>>452 javaが(起動時間が遅いのは当然として実行時間も)ずいぶん遅いね。オブジェクトのLong(整数のlongでなく)を毎回生成しているのが、
なんか遅い原因の気がするが…
javaとcとc++はエラトステネスの振るいについては十分効率的に書けば基本的に同性能で、少なくとも桁に違いが出るほどの
性能差はないはず。javaのJIT(動的なコンパイル)はcコンパイラと比べてそれほど見劣りするものじゃない。ただしコンパイルの
ための時間がかかるから起動やループの初回の実行は遅いけど。
|(*1)『プログラミング作法』(Brian W.Kernighan, Rob Pike著)では、C, C++, Java, Awk, Perlによるマルコフ連鎖アルゴリズムの
|性能を比較しており、JavaよりもPerlやAwkの方が早いという結果が出ている。スクリプト言語が遅いとは一概に言えない。
perlの連想配列の面目躍如ってとこかな。処理系が直接実行する部分が大きいプログラムは当然インタプリタでも速い。
javaの場合は結構内部の関数もjavaで書かれているから、速度もそれなりの部分がある。
>>448 おねがいします。法のもとでの累乗とかパッケージにあるのかな?
>>450 >素数の判定ってことはトリップの生成部分ってことだよね。それなら以前話に出てたようにトリップと鍵を
>キャッシュすればいいかな(でもセキュリティホールがあってそのファイルを外から読まれるとまずいかな^^;)。
>トリップルーチンというのはトリップ→鍵生成のことだよね。
ざっと時間を見た感じでは、与えられたランダムな数(今回は生成文字列依存の数)を素数に加工する部分
に一番時間がかかっているみたいです。
おそらくミラーテストが1024bitで数十msのオーダーのようです。
ちなみに、認証テストはそれに比べるとほとんど時間がかかりません。
一番心配な閲覧時のタイムラグはそんなにないと思います。
投稿するたびに秒単位の時間が取られても、トリップ付きで実況するわけじゃないしいいかなと思ったりも。
>>390で「お互いに・・・移植しましょう」と書いたけど、
オープンソースなんだから、それは有志に任せた方がいいのではないかと思ってきた。
なんか「俺たちがやるからお前ら手を出すなよ」という感じになってしまった。
最近やけにレスポンスがいいけど、ユーザーが増えてきたせいなのかな?
最近の流れはハイレベルすぎてよく分からんが
これがいかにフィードバックされていくか
マターリ見守るのもまた一興
オープンソースの醍醐味やね
>>455 > ざっと時間を見た感じでは、与えられたランダムな数(今回は生成文字列依存の数)を素数に加工する部分
> に一番時間がかかっているみたいです。
ま、そりゃそうでしょうな^^;
> おそらくミラーテストが1024bitで数十msのオーダーのようです。
ミラーテストって?^^;
> 一番心配な閲覧時のタイムラグはそんなにないと思います。
> 投稿するたびに秒単位の時間が取られても、トリップ付きで実況するわけじゃないしいいかなと思ったりも。
うーん、まあそうなのだけど、一応設定で外部からのトリップ付も緩そうと思うので、バックグランドで動いている
crescentは極力CPUタイムを喰わないようにしたいな、と。まあこれもどうするかは未定だけれど。
>>456 じつはわたしはあまり
>>390にこだわってなかったり^^;
少なくともjanny向けのgateway.cgi相当のモジュールはよほどヒマをもてあまさないと(あるいはその必要を感じる場面にならないと)作らないと思う。
Jannyのソースについても希望があれば公開するけど、はっきりいってすごく汚いコードなのは覚悟してほしいw
素数関係の部分はおそらくperlで組むのは無理だよね?
どうしたらいいのかな…
>>462 > CPAN行ってRSAで検索したらいっぱい出てきたんですけどw
素数生成の部分は某氏のオリジナルだよね
念のためいえば、この部分(トリップから鍵を生成する部分)は新月とCrescentで同じにしないと、同じトリップにならない。
例のプログラムをコンパイルした実行プログラムをCrescentスレにアップしておいた。
>>462 どちらかというと、Crescent側をあわせたほうが簡単かも。
トリップキー→素数の組の部分が一番独自のことをしてると思うので。
Winnyみたいに簡単にトリップを使うために、秘密鍵みたいなややこしいものがユーザにまで
出てこないようにラップしているからです。
このラップ部分は別に今出した実装でなければならない必要はないですし、
簡単に変えれるように作ってあるので、Perlのモジュールでもできそうな方法を探します。
同じことができそうなら、こうすればいいというのを出しますんで、ちょっとお待ちください。
RSA公開鍵暗号
ランダム数→秘密鍵、公開鍵
として、鍵ペアを保持しておく。
(仮)トリップ
トリップキー -(何らかの関数)→ 数 → 秘密鍵、公開鍵
として、トリップキーを覚えておく。
なのでちょっといじらないとだめかも。
>>466 > どちらかというと、Crescent側をあわせたほうが簡単かも。
> トリップキー→素数の組の部分が一番独自のことをしてると思うので。
なので何度となくperlはどうするの?と聞いてたんだけどね。やっぱ通じてなかったか…
> 同じことができそうなら、こうすればいいというのを出しますんで、ちょっとお待ちください。
ん〜某氏にlinux上でも動作するトリップ→鍵生成ルーチンを作ってもらえるといいのだが…
perlから直接呼び出せるライブラリ形式なら一番いいし、実行ファイルを呼び出す形でも可。この部分は投稿時にしか起動されないから、
それほどパフォーマンスは入らない。いかが>某氏
> トリップキー -(何らかの関数)→ 数 → 秘密鍵、公開鍵
うーん、ちょっとこの方法はいやだな。せっかくトリップ生成モジュールも手に入ったことだし。
確かLinux上でもKylixとかいうDelphi互換の言語があるから、それで生成モジュールだけでも動作させられないかな。
他に方法がなければ、私がDelphi→Linux上のgccへの移植をするよ。
ということで、署名モジュールの作者さん、gcc版作ってくれない?^^;
わざわざcからdelphiに移植したのに、これを頼むのは心苦しいのだけど…
あ、もちろん移植は他の人も可、ね。なぜか「突然delphiからcの変換をしたくなった」という人募集^^;
>>467 ふと思ったのですが、perlって他言語で書いたモジュールってのは呼び出せないのですか?
Delphi->Kylixにできるのなら、完全にラップした署名ルーチン、認証ルーチンをperlから
呼び出せたら解決なんですよね。
いろいろやり方があってちょっと混乱してるので、方針確認させてください。
1)perlが、Delphiの使っているルーチンを外部モジュールとして呼ぶ
→Linuxバイナリが作れたらOK?呼べるように変更するだけで何も考えなくてよい
2)perlで使えるルーチンを探してor作って、Delphi側をすり合わせる
→OS互換は考えなくてよい(perlモジュールが何とかする)。探すのor作るのめんどくさい
>>462 といわれたので、2)かなと思っていろいろ探して見たのですが、既存のものは結構手直し
いりそうな感じなので、それだったら演算部だけ使ってそれより上は作り直したほうが速いのでは
とか思いました。
もしperlから他言語ルーチンが呼べて、誰かKylixでモジュールを作ってくれるのならめんどいことは
しなくていいですよね。
> トリップキー -(何らかの関数)→ 数 → 秘密鍵、公開鍵
(何らかの関数)は実験実装でいうところの、Make2LINTと、素数でないならインクリメントというルール、のことです。
>>468 一番めんどくさいのは多倍長演算部です。あそこはもともとcで組んでなかったので、
cに移植となるとロジックを変更しなければならないかもです。
32bitレジスタバリバリ使って書いてあるのでこっちから移植より
>>398原作からいじったほうが
速いかも。当然、基数100なのは変えたほうが速いでしょう。(何で2^16とかにしないのかな)
Delphi->Kylixのインラインアセンブラは、コンパイラが何とかしてくれるというのをどこかでみたので
持ってる人いないかなとか思ったり。いなさそうならc版書きますけど。
私の今のところの知識はkylixは実際に使ったことがない。perlから多言語を呼び出す作法は知らない^^;
とりあえずkylixを動かしてみるかな…どこからダウンロードすればいいんだろ(というレベル^^;;;)
使える部分をCPANのモジュールからもらいつつ、自分で書くつもりだった。
>perlって他言語で書いたモジュールってのは呼び出せないのですか?
できます。
ただKylixはLinuxしかないみたいなので、それがちょっと困った。
>>474 多倍長整数演算部分をGMPを使って書き直せばいけるのかな。
>>462のCrypt::RSAをみてみたんだけど、生成部分を乗っ取らないとダメみたいなので
それはめんどくさいかなと。
ライブラリをいじる方法がわからないのでめんどくささがわからないけど、
gccでGMP使ってRSAを書いて両方から使えるようにするのと、こちらの仕様にあわせて
ライブラリをいじるのとどっちがいいのかな。
>>475 僕はgccの方がうれしいです(Unixの世界ではKylixよりgccの方が一般的なので)。
zlibを見ていると、Cで書いたライブラリとDelphiのソフトはリンクできるんですよね?
ただ、権利関係がよくわからないです。
これはGPLやBSDLに組み込んでも問題ないんですかね?
移植もとの原作者が「転載禁止」とかにしていると困るので。
仮に技術的・権利上の問題でうまくいかないようであれば、
PurePerlで書くのもやむを得ないです。
>>476 CのライブラリはDelphiから呼べます。
GMPはGNUなので多分大丈夫だと思いますが、権利関係に詳しくないのでよくわかりません・・・
cygwinのgccコンパイラについてきてました。
ttp://www.swox.com/gmp/ gcc版を作ってみます。このコンパイラ使うの初めてなので少し待ってください。
perl的にはどんなインタフェースが便利なんでしょうか?
トリップ生成文字列、署名対象、署名格納場所などをポインタで渡すのがいいのかな。
別に署名対象を直接もらわなくてもMD5だけもらってもいいかも。
結局中でハッシュ求めるんだし。
>>477 > perl的にはどんなインタフェースが便利なんでしょうか?
> トリップ生成文字列、署名対象、署名格納場所などをポインタで渡すのがいいのかな。
ちょっと検索してみたところ、perl-c間はdelphi-c間ほどシームレスに呼び出せるわけじゃなくて、
ラッパーみたいなものを噛ましてやる必要があるみたい。xs swig c::inlineなどがあるらしい。
xsはcの関数宣言からラッパを生成する。c::inlineはperlのソースに書かれたcのプログラムを
その場(?)でコンパイルして呼び出すらしい。うーむ…
>>477 よく考えてみたらPerl版の場合、/ping命令にPONGを返すだけでもforkを2回、execを1回してます。
gzipで圧縮するときにもforkを2回、execを1回する選択肢があります。
なので、外部のコマンドとして実装して、stdinとstdoutでやりとりしても、
相対的にコストは大きくならず、むしろ自分の実力から考えてベターではないかと思いました。
署名対象はMD5で渡してもいいかもしれません。
(あくまでPerl版の場合であって、Crescentでは普通にライブラリとして使った方がよさそうですが)
GMPはLGPLなのでCrescentでも使えますね。
>>478 Compress::Zlibをみるとあらかじめ作ったZlib.soを呼び出しているように見えます。
実はよくわかってないw
とりあえずcrescentは署名モジュールを結合してみた。一応動いているみたい(あまり試していないが)。
とりあえずはtraditionalのみ。
で、UIの方なのだが、とりあえず現状のgateway.cgiの延長で2chやwinnyのトリップと同様の扱いに
見せている。名前覧に「名前#トリップ元文字列」を入れると内部でトリップを生成し、名前覧は「名前#トリップ」に
書き換えた後、名前〜添付ファイル間の署名を生成し、pubkeyとsignフィールドを末尾につける。
読み取る方はsignフィールドが付いていれば著名付と判断し、名前〜添付ファイル間の署名が一致することと、
「名前#トリップ」のトリップがpubkeyのハッシュと一致することを確認。一致すればそのままm「名前#トリップ」を
出力する。一致しなければ現在は「名前」のみを表示するようにしてある。
この辺をどうしよう?現在は「#」を使っているが、2chのように「◆」「◇」にするか…日本語の記号を使うのが今ひとつ
抵抗があって私は「#」でもいいと思うのだが。あとは#以降のトリップ文字列を名前そのものと区別させるために
2chはボールドからノーマルフォントにしているが、この表現をどうするか。(当然何らかの方法で区別する必要がある。)
最初私もボールドからノーマルに使用としたが、この部分新月&crescentではcssで指定されてるんだよね。
まあどちらかというと他愛ない話なのだが。
あと署名モジュールに署名対象のテキストでなくそのハッシュを渡すというのに私も賛成。そうすれば例の順不同の
処理を入れる場合も署名モジュールは影響を受けないから。
>>479 > Compress::Zlibをみるとあらかじめ作ったZlib.soを呼び出しているように見えます。
Zlib.so側にperlの引数を受け取ったり、perl側に引数を返す仕組みが入っているとか?
> 実はよくわかってないw
私も^^;
>>481 > > Compress::Zlibをみるとあらかじめ作ったZlib.soを呼び出しているように見えます。
> Zlib.so側にperlの引数を受け取ったり、perl側に引数を返す仕組みが入っているとか?
ちょっと訂正。確かにZlib.pmとか見ると多少前処理とかしているものの、直接呼び出しているように見えるね…
むむむ。この辺ちょっと勉強してみるかな…。修行が必要だ…^^;誰か詳しい人いないかな〜
呼び出される頻度からいえばトリップ生成部分は外部の実行プログラムを呼び出しても十分いけるよね。
署名を行う処理も頻度的には同じだし。ただ署名をチェックする処理は一つのスレッドをまとめて取得して
それを表示する場合、トリップ付の発言の回数だけ呼び出されるから、若干辛い気がする。
この部分だけ(もしくはこの部分と署名を行う処理)はperlから使用できるRSAライブラリを使うという手もあるかな。
>>482 DynaLoader - Dynamically load C libraries into Perl code
かな?
実はUnix環境におけるシェアードライブラリの概念からしてよくわかってないのだけど。
Crypt::RSAは依存関係が広過ぎてちょっとそのままでは使えないっぽいです。
現在のところ手抜きして、ユーザに明示的にトリップチェックをしてもらうようにしてます。
本当は裏で処理して本物=◆、偽物=◇みたいに表示すべきなんだけど、まあ、いいでしょ?
トリップ部分がリンクになっていて、そこをクリックすると「本物」「偽物」と出る。
>>483 > 現在のところ手抜きして、ユーザに明示的にトリップチェックをしてもらうようにしてます。
なるほど。それだととりあえず速度は要らないね。
とりあえずkylixを動かしてみた。
単純なプログラムの場合コンパイルリンクはでき実行ファイルも生成されるが、なぜか統合環境では起動しない。デバッガがうまく動かないのかな?
ちなみに私の環境はRedhat9。生成された実行ファイルをコマンドラインから起動すると一応動作する。簡単なGUIのアプリも動く。
しかしデバッガが使えないと辛い。
続いて署名プログラムをコンパイルしようとしたが、結構MD5とかの中でWin32の型DWORDとか関数を呼び出しているのでそのあたりを
取り繕う必要がある。サンプル用のGUIの部分は微妙にdelphiとkylixで異なるので作り直した方が速そう(まあこれはどうでもいい部分だが)。
アセンブラの部分はとりあえずコンパイルエラーは出なかった。
地道に修正していけば動きそうな気はする。しかしデバッガが動かないのはちょっと困る。なぜだ…
まあgccの方向のようなので、とりあえずこの段階で保留。
swigについてもチャレンジ。最新版をコンパイルしてインストール。
サンプルとして付いている数行のCのソースをコンパイル。これは当然通る。
swig用のヘッダを作成。swigにかけると、ラッパが生成される。結構な量。
それを再度gccでコンパイルするのだが、ここで躓いてしまった。
サンプルではperl5.0.xが対象なのだが私の環境に入っているのはperl5.8。
perl側が外部呼び出し用に用意しているヘッダの中でコンパイルエラーが出る。
ちょっと検索したところperl5.8用のパッチを当てて再度コンパイル&インストールしないとならないらしい。
これはまだやっていない。確かに動けば一番簡単な方法のようだけど…
DynaLoaderは逆にperl側で主要な処理をやる方法のようだが、まだ調べていない。
>>480 トリップは公開鍵を全桁表示してますか?圧縮したやつ?
11桁でもそんなに衝突しないと思うので見やすいほうがいいな。
>>485 乙です。
MD5は考えずに混ぜてしまいました、すみません。
やっぱり手直し要るのか・・・
gcc+gmpでdll作ってDelphiから呼ぼうとして失敗。どうもgmpを再構築しないとできないもよう。
ルーチン自体はいけそうな気配なので(まだ根幹部分の芯しかできてないけど)呼び出しのことが解決したら
何とかいけそう。もしDelphiから呼べなさそうなら、同じことしているので前のままのを修正して使いましょう。
署名モジュールで用意するのは1)署名部、2)署名認証部で、
1)署名部は、トリップ生成文字列と、署名対象を受け取り、公開鍵文字列(とその短縮)、署名文字列を返す。
2)認証部は、公開鍵文字列と署名文字列と署名対象を受け取り、true/falseを返す。
a) 1)の変形として、署名対象の代わりに署名対象のハッシュを受け取る、2)も同変形。
こうすると、ハッシュ関数に通して渡すのは本体の仕事になる。
b) 1)の変形として、トリップ生成文字列の代わりに、ハッシュを受け取る。
512bit分用意しなければならないのでa)よりも本体の負担は大きくなる。
c) 公開鍵文字列の短縮を署名モジュールでするのなら、チェックルーチンが必要
どこまでを、本体の守備範囲にしますかね。
488 :
[名無し]さん(bin+cue).rar:04/02/13 20:42 ID:bJiQRAgP
で、最後尾まで堕ちる前にageと
>>487 MD5計算ルーチン(とBase64計算ルーチン)は新月/Crescentに入っているので
トリップ生成ルーチンは最小構成でよいかと思います。
つまり b) です。
あと公開鍵文字列→短縮形は一意に計算でき、かつ時間はそれほどかかりませんよね?
もしそうなら、ファイルに短縮形を書くのではなくて、
c) の短縮用ルーチンもあった方がいいかも。
つまり署名モジュールに担当していただきたいのは
署名部: トリップ生成文字列+署名対象のMD5→公開鍵文字列+署名文字列
認証部:公開鍵文字列+署名文字列+署名対象のMD5→true/false
短縮部: 公開鍵文字列→短縮形
の3種類です。
CygwinのgccでコンパイルできれはLinuxやFreeBSDでもだいたいそのまま使えるような気がします。
(CygwinはWin32APIを使えるらしいので、それが混入すると厳しいですが)
あ、勘違いしてた。
本体組込みのは128bit固定のMD5なので、やはり署名モジュールの担当にしてください。
署名部: トリップ生成文字列+署名対象文字列→公開鍵文字列+署名文字列
認証部: 公開鍵文字列+署名文字列+署名対象文字列→true/false
短縮部: 公開鍵文字列→短縮形
文字列は全部新月のレコードの一部なので改行はないとし、
標準入力を読むときは単に「1行目は生成文字列」「2行目は対象文字列」のようにしていいと思います。
>>487 > トリップは公開鍵を全桁表示してますか?圧縮したやつ?
> 11桁でもそんなに衝突しないと思うので見やすいほうがいいな。
いまのとこ11桁の方。
> MD5は考えずに混ぜてしまいました、すみません。
> やっぱり手直し要るのか・・・
UINTとかCopyMemoryとかも。なんかすべてCrescentが使っているやつですな^^;
非Windows環境で動かすことなど夢にも思わなかったので。
ちょと言い訳すればもともとCrescentが参考にしたコードがそうなっていたのだけど。
> どこまでを、本体の守備範囲にしますかね。
名前覧を「名前#トリップ元文字列」→「名前#トリップ」と書き換えた後に署名をするので、
トリップ元文字列→トリップの処理は単独で呼び出す必要がある。
なので
・トリップ元文字列→トリップ、公開鍵、秘密鍵
必要ならこの結果をキャッシュ。
・署名対象のハッシュ、秘密鍵→署名
・公開鍵、署名→もとの署名対象のハッシュ
または公開鍵、署名、署名対象のハッシュ→判定結果
・公開鍵→トリップ
とかでもいいかも。
ポスト「2ちゃん」の最有力候補は
新月でOK?
あ、鍵をキャッシュしておくことを考えると
>>492の方がいいですね。
>>492の項目+ハッシュ化機能ということで。
perlからcの呼び出しの件だけど、多少光明が見えてきた。xsを使うことで出来そう。まだ引数の渡し方とか精進が必要だけど。
(基本的には文字列と定数だけで、構造体とかは渡さないよね。まだcからperlへの文字列の返し方が分からないけど)
必要なツールは(私のredhat9環境では)デフォルトで入っているようだし。
トレードマークのアイコンは刀でお願い☆します
漏れ的にも一応アイコンは作って欲しいです
TinyLogger等とアイコン被るんで・・・
いや、後回しでいいのでお願いします
何となくxsの使い方が分かったので、gcc版ができたら教えて。perlのラッパを作ってみるから。
こんな感じでXSファイルを書いていろいろやってやればよさそう。
cの
int bar3(const char* srcbuf, int srclen, char* dstbuf, int maxbuf);
をperlから
$dst = bar3($src, 10, 20)
と呼び出すtest.xs
SV*
bar3(srcbuf, srclen, dstmax)
const char * srcbuf
int srclen
int dstmax
PREINIT:
char* dstbuf = NULL;
int dstlen;
CODE:
if ((dstbuf = malloc(dstmax)) == NULL) {
ST(0) = &PL_sv_undef;
}
dstlen = bar3(srcbuf, srclen, dstbuf, dstmax);
ST(0) = sv_2mortal(newSVpv(dstbuf, dstlen));
free(dstbuf);
悪名高きネトラン読むまでDelphi版ができてるって知らなかったよー
EntryServiceでXPのサービスとして登録しますた(σ`・ω・)σ
501 :
500:04/02/14 11:11 ID:9svksgOX
以前やったときは
Activeperl版が動かなかったよー
.plファイルがMonsterTvと関連づけられて
どうしたらいいのかよくわからんかったのだ
むかつく関連付けってあるよね。RealPlayerが.rpmを自分に関連づけるのも許せん!
新月0.2-beta3公開
トリップと自動削除の試験的実装。
署名モジュールが未実装のため、
どんな入力に対しても「pubkey」というトリップになります。
本家新月ではstrictフォーマットのwiki風ゲートウェイに絞って開発します。
>>496-499には悪いけど、
署名モジュールのインタフェースは
当面は外部コマンド呼出しの標準入出力の方が無難だと思います。
いろいろなプラットフォームでの動作チェックとか。
>>504 > 署名モジュールのインタフェースは
> 当面は外部コマンド呼出しの標準入出力の方が無難だと思います。
> いろいろなプラットフォームでの動作チェックとか。
まあ、じゃあとりあえず作るだけにしておくよ。他の人が使うかも知れないし、私自身が他で使うかも知れないし。
ってことで関数インターフェイスと実行ファイルの両方をお願い^^;>署名の作者さん
アイコンについては、確かにdelphiデフォルトのままというのは不便だけど、
その一方で私にも好みがあるので、せっかく作ってもらってもボツにすると悪いし^^;
実はDelphiデフォルトだとは思わなかった。
あの緑の丸が新月を、稲妻がP2Pの通信を、
縦棒(柱?)がバージョン1を表わしているのかと思ってた。
だから配布サイトに誇らしげに飾ってあるのです。
新バージョンリリース
a2d8f057 :名無しさん [] Sun Feb 15 02:52:41 2004 1076781161.zip (301KB)
Crescent v.0.0.7 実行ファイル
3a1ebec6 :名無しさん [] Sun Feb 15 02:52:25 2004 1076781145.zip (227KB)
Crescent v.0.0.7 ソース
公開鍵の長さはとりあえず512bitに。
名前覧に「名前#トリップ元文字列」形式で書き込むと自動的にトリップがつく。
表示時に「名前◆トリップ」となる。署名の確認に失敗した場合は「名前◇トリップ」となる。
またトリップの有無に関わらず表示時に「名前」部分の「◆」は「◇」に置き換えられる。
(したがって新バージョンでは#や◆を含む名前は使用できない)
迷ったが結局ファイルにはトリップを書き込まないことにした。カキコ時に名前とトリップ元文字列を分離し、
名前のみを名前フィールドに書き込む。表示時は公開鍵からトリップを生成して表示。
この結果以前のバージョンで読み出した場合トリップ付発言のトリップ部分は表示されない。
#この辺は若干検討の余地があるかも知れない。
なぜか拡散しないので再度ポスト
3a1ebec6 :名無しさん [] Sun Feb 15 05:01:03 2004 1076788863.zip (227KB)
Crescent v.0.0.7 ソース
e5070e49 :名無しさん [] Sun Feb 15 05:02:02 2004 1076788922.zip (301KB)
Crescent v.0.0.7 実行ファイル
お〜、アイコンが凄いカッコよくなってる
テスト版では署名対象そのものをもらって数値化していましたが、ハッシュの仕方を変えても
署名ルーチンは関知しないようにハッシュ文字列をもらうようにします。
で、現在考えているのは512bitなら64byteまでの文字列をもらって、内部でバイナリとして
直接数値にするというものです。
文字コードが違う環境では互換が取れなくなりますが、ルーチン側としてはそのようなことはないと
仮定していいでしょうか。
あと、little-endianを仮定しているのですが、そうでない環境で動くことは
ありそうですか?ありそうなら変えれるようにしておきます。
トリップルーチンでのミス(ハッシュによっては小さい因子になってしまう)を変更しましたので
テスト版と互換取れません。
Delphiから共通ルーチンを呼び出すことを考えてたのですが、Cygwinな環境でgmpを再構築できないので
DelphiはDelphi版ルーチンをつかうことにしてもいいですかね。
署名ルーチンインタフェース案
1)署名生成部(Delphi版Ttest512RSA.Createおよび 同.PublicKey 相当)
入力:トリップ生成文字列
出力:公開鍵文字列(エンコードは署名ルーチン依存)
2)署名部(Delphi版Ttest512RSA.Sign相当)
入力:公開鍵文字列、署名対象ハッシュ文字列
出力:署名文字列(エンコードは署名ルーチン依存)
3)認証部(Delphi版Ttest512RSA.Verify相当)
入力:公開鍵文字列、署名文字列、署名対象ハッシュ文字列
出力:true/false
4)短縮部(Delphi版Ttest512RSA.PublicKeyHash相当)
入力:公開鍵文字列
出力:短縮形
この中で署名生成部と短縮部の内部でMD5ハッシュを使う予定です。
短縮部は本体に任してもいい気がしますが。
公開鍵文字列と署名文字列は、内部数値表現をbase64に変換したものを使う予定です。
署名対象ハッシュ文字列は、(署名ルーチンの中の人は)単なるバイナリとみなして処理する予定です。
長さ制限を越えなければ何を与えてもかまいません。
>>510 もし、署名に鍵が依存しないのであれば(署名対象に公開鍵を含まないなら)、生成部と署名部は
まとめてもいいかもしれません(gcc+gmp版は公開鍵の無駄な変換が出る)
まとめないほうが自由度は高いですけど。
>>513 > で、現在考えているのは512bitなら64byteまでの文字列をもらって、内部でバイナリとして
> 直接数値にするというものです。
64byteというのは署名対象のハッシュの話?
> 文字コードが違う環境では互換が取れなくなりますが、ルーチン側としてはそのようなことはないと
> 仮定していいでしょうか。
署名対象の文字コードや改行コードの話?それは当然だよね。なのでcrescentは本家と合わせるために
内部の大半をEUCで処理していて、必要な箇所だけSJISに直している。本音を言えばめちゃくちゃプログラム
しにくいのだが^^;。
> あと、little-endianを仮定しているのですが、そうでない環境で動くことは
> ありそうですか?ありそうなら変えれるようにしておきます。
ワード単位ではリトルエンディアンでロングワード単位ではビッグディアン(逆だったかな)なんてCPUもかつてはありましたな。
ただのちゃちゃなので気にしないでね^^;
> Delphiから共通ルーチンを呼び出すことを考えてたのですが、Cygwinな環境でgmpを再構築できないので
> DelphiはDelphi版ルーチンをつかうことにしてもいいですかね。
いいですな。Cygwinは何かと泣かされる。
>>514 秘密鍵文字列は?
>(エンコードは署名ルーチン依存)
このエンコードというのがbase64ってことだよね。
>>515 > もし、署名に鍵が依存しないのであれば(署名対象に公開鍵を含まないなら)、生成部と署名部は
> まとめてもいいかもしれません(gcc+gmp版は公開鍵の無駄な変換が出る)
関数インターフェイスはまとめないで欲しい気がする。無駄な変換というのはbase64<->バイナリの変換?
なので、書きにしてほしい。
1)署名生成部(Delphi版Ttest512RSA.Createおよび 同.PublicKey 相当)
入力:トリップ生成文字列
出力:公開鍵文字列(エンコードは署名ルーチン依存)
秘密鍵文字列(エンコードは署名ルーチン依存)
2)署名部(Delphi版Ttest512RSA.Sign相当)
入力:秘密鍵文字列、署名対象ハッシュ文字列
出力:署名文字列(エンコードは署名ルーチン依存)
>>516 >64byteというのは署名対象のハッシュの話?
そうです。ハッシュをどう文字列に加工するかも含めて本体側に移します。
(内部で鍵サイズにトリミングするので保証するのは512bitまでとします)
>>517 >秘密鍵文字列は?
忘れてました・・・すみません
>>(エンコードは署名ルーチン依存)
>このエンコードというのがbase64ってことだよね。
そうですが、最後に=を付加しないなど微妙にbase64じゃないです。
こっちで独自に解釈しますということです。
>>518 Delphi版は現状を維持する予定です(署名対象→署名対象ハッシュを除く)
Crescent側にバイナリを持ってもらうつもりです。(オブジェクトを使いまわしたら、鍵が使いまわせる)
>無駄な変換というのはbase64<->バイナリの変換?
そうです。
>>514 修正
1)署名生成部(Delphi版Ttest512RSA.Createおよび 同.PublicKey 相当)
入力:トリップ生成文字列
出力:公開鍵文字列(エンコードは署名ルーチン依存)
秘密鍵文字列(エンコードは署名ルーチン依存) ←
2)署名部(Delphi版Ttest512RSA.Sign相当)
入力:公開鍵文字列、秘密鍵文字列、 ←
署名対象ハッシュ文字列
出力:署名文字列(エンコードは署名ルーチン依存)
3)認証部(Delphi版Ttest512RSA.Verify相当)
入力:公開鍵文字列、署名文字列、署名対象ハッシュ文字列
出力:true/false
4)短縮部(Delphi版Ttest512RSA.PublicKeyHash相当)
入力:公開鍵文字列
出力:短縮形
>>520 > そうですが、最後に=を付加しないなど微妙にbase64じゃないです。
> こっちで独自に解釈しますということです。
使用する文字セットがBase64以下であれば問題なし。<とか>とか&が出てくると、内部でセパレータとかに
使っているから困るけど。
> Delphi版は現状を維持する予定です(署名対象→署名対象ハッシュを除く)
生成時に秘密鍵を取り出せ、署名時に外部から指定できるようにしてほしい。外部でキャッシュしたいので。
> Crescent側にバイナリを持ってもらうつもりです。(オブジェクトを使いまわしたら、鍵が使いまわせる)
バイナリ、オブジェクトとはどの話?
>>521 > 2)署名部(Delphi版Ttest512RSA.Sign相当)
> 入力:公開鍵文字列、秘密鍵文字列、 ←
> 署名対象ハッシュ文字列
署名の処理に公開鍵もいるんだ。知らなかった^^;
>>522 > 生成時に秘密鍵を取り出せ、署名時に外部から指定できるようにしてほしい。外部でキャッシュしたいので。
>>521ですでにそうなってるみたいなので、それでいいです。
余談だけど、delphiの文字列って「長さ+データ」形式なので基本的にはヌルコード(0x00)を含められるのだけど、
システムの文字列関数で時々0x00を含まないことを前提としているものがあるので、注意したほうがいいかも。
私はそれでハマった^^;
まあサーチとかリプレースとか複雑な関数を使わなければそれほど気にする必要ないけど。
(だから多分署名ルーチンでは多分、関係ない)
はて、やっぱり署名に公開鍵って必要ないような気がするのだけど、私の理解が違ってる?
# あまり重要な話じゃなくて、私の単なる興味の話なのだけど…
>>521 署名対象ハッシュ文字列のハッシュ(512bit)の求めかたはどうなっているのですか?
Ttest512RSA.Make2LINT(out a1: TLINT; out a2: TLINT; const Seed: string); でしょうか。
MD5を4回求めて結合してるみたいだけど、keystrの意味がわかりません。
あ、わかった。1回ごとに文字列を微妙に変化させているのですね。
>>522 Ttest512RSA.Createしたものをどこかに保持しておけば
(例えば生成文字列をキーとしたTStringListでObjectにいれておくとか)
object.signで時間のかかるキー生成をバイパスして何回も署名できます。
Ttest512RSAは内部メンバとしてnとdをLINT形式で保持しているので。
>>524 公開鍵と同形式でプロパティに入れておけばいいですか?
>>526 RSA上の公開鍵は法nと公開乗数e(今回は65537)で、秘密鍵は法nと秘密乗数dで
ほんとうは署名にnとdしかいりません。
都合上、法nのことを公開鍵と呼んでいるので署名にいるように見えます。
秘密鍵と呼んでいるのは秘密乗数dです。
>>527 Ttest512RSA.Make2LINTは鍵ペアを生成するための数を生成するルーチンです
テスト実装では署名対象ハッシュ文字列をルーチン側で生成していますが、変換しているのは
Ttest512RSA.MakeHashLINTです。
Ttest512RSA.Make2LINTでは512bitのランダムな(しかし生成キー依存の)データを作るのに
MD5を4回通しています(オリジナル1、混ぜ物入り3)
>>525 さっき引っかかった(´・ω・`)
>>529 これだとTtest{256,512,1024}RSA.MakeHashLINTに関わらず
128bitのハッシュになるような?(←全然わかってない)
>>530 本当はフルビットもらえたほうがいいんだけど、どっちみちMD5が被ることなんてものすごく確率が
低いからはしょって128bitにしています。もっと精度が欲しければ違うハッシュ関数を使う必要があります。
署名の処理は、f(a) = a^d (mod n) ですので、aがものすごく小さくとも返り値はn全域に広がります。
たとえば512bitのときは、返り値は512bit空間のどれかの数字になります。
だから入力が128bitに制限されていることがわかったとしても、512bit空間に広がった2^128/2^512
であるとわかるだけで、なんの参考にもならないはずです。
これに対し、はじめに素数を取ってくるときにフルビットMD5でそろえているのは、公開鍵と称するnが
因数分解される可能性を少しでも小さくしようという意図です。
(WinnyBBSトリップのように)因数分解されてしまえば、何の意味もなくなる暗号系ですので。
私は数学者じゃないので、何らかの関数を使って128bitを水増しした時にその値からnを構成したら
因数分解にメリットが出るかどうか確証が取れないので、MD5を何回もとる事にしました。
入力値の少しの変化にMD5ハッシュは敏感に反応して、ほとんどランダムともみなせる値を返すので
微妙に変えてフルビット持ってきています。
なるほど、了解です。
本体側では「特製のハッシュ関数」ではなくて、普通のMD5ハッシュを渡せばいいわけですね。
ちょっと混乱してた。
>>529 > Ttest512RSA.Createしたものをどこかに保持しておけば
私がキャッシュといっているのはプログラムが動作している間だけでなく、終了しても
保持される領域(ようするにファイル)に保持したいということなのだけど。
なので「(生成したTtest512RSAのオブジェクトを)どこか(の変数)に保持しておけば」というのはちょっと違う。
> 公開鍵と同形式でプロパティに入れておけばいいですか?
それでもいいけど、鍵生成時に引数で受け取って、署名処理呼び出し時に引数で渡すのではだめ?
TtestXXXRSAはオブジェクト内部に公開鍵や秘密鍵を保持しているけど、データを保持しないで
毎回呼び出し側から指定してもいいけれど(現在のCrescentの使い方では)。
同じ鍵で複数の署名を行うような使い方を想定して、毎回外部から鍵を指定するオーバーヘッドを
考えているのであれば、それはそれで尤もな話なのでプロパティでもいいけど。
> 都合上、法nのことを公開鍵と呼んでいるので署名にいるように見えます。
なるほど。そういう仕組みになってるんだ。
>
>>525 > さっき引っかかった(´・ω・`)
^^;
>>532 > 本体側では「特製のハッシュ関数」ではなくて、普通のMD5ハッシュを渡せばいいわけですね。
「普通のMD5ハッシュ」の意味するところは?(本家は512bitのMD5を使う or 本家も128bitのMD5を使う)
(MD5を利用した)特製のハッシュ関数(512bit)ではなく、
普通(=素)のMD5ハッシュ(128bit)を使う
ところで「中継」を発生させたいのだけど…いや?>本家の作者さん
今考えているのは次のようなもの。
中継したデータは比較的短時間のみHDDに保持し、その後自動的に削除。
したがって中継したデータはdatディレクトリとは別のディレクトリに保持し、扱いも変える。
HAVEの問い合わせが来た場合一定の確率(あまり高くない)で、自分がさらに他のノードに問い合わせ、
見つかればそれをGET後に最初のHAVEにYESと答える。この処理が長くて最初のノードがタイムアウトして
しまった場合はそれはそれでいい。
中継データを一時的にHDD上に保持するのは、他からHAVE要求が来た場合、直ちに自分が他へHAVE要求を
出せば自分がそれを持っていないのが分かってしまうから(逆にいえばそうならないということは自分がそのファイルを
持っていることになる)。
中継したデータを一定時間で自動削除するのは、不本意なデータまで自分のHDDに貯まるのを避けるため。
またその拡散に貢献しないため。また中継を発生させるか否かは設定可能とする。
>>537 データ通信では冗長性がないと信頼性が低下するのでねw
あれ、、Crecentの作者さんてJannyの中の人なの?
>>540 Σ(- -ノ)ノ エェ!?
winny Util の中の人(というかnyBBSの住人?)がけんかしてた?
というか
新月BBSに、スレが一つも無い板が大量に立ってるのはなぜ?
>>533 じゃあ秘密鍵(d)と公開鍵(n)の文字列形式から直接CreateするのをつくっておけばOK?
プロパティが返した文字列そのまま渡せばいけるように。
オブジェクトにしてまとめてるのは、いろんな試験実装をすげ替えれるようにしたかっただけなので、
毎回引数で渡すのであれば、関数形式に書き換えるけど。
gcc版では完全に関数になるから、そっちとあわせる意味でもいいかもしれない。
どっちが便利なのかな。
一回ずつ引数に指定して署名を呼ぶのめんどくさいかなと思って、生成→署名の流れに
あわせてオブジェクトにしてみたけど、キーと鍵をためておくのなら関数のほうが使いやすいか。
>>538 個人的にはあまり好まないですが、
プロトコル上問題がなさそうなので、実装してもいいのではないですか?
パラメータをうまく設定すれば転送量もそんなに増えないと思いますし。
あと/updateが来たときに(一定確率で)取得してもいいかも。
本家ではたぶんやらない(w
>>541 >新月BBSに、スレが一つも無い板が大量に立ってるのはなぜ?
ねとらんに載る直前に何者かが大量に板を作ったのです。
かえって過疎に見えて困るんですけど(w
Wiki風ゲートウェイだともう少し使いやすくなるかな?
>>542 > gcc版では完全に関数になるから、そっちとあわせる意味でもいいかもしれない。
> どっちが便利なのかな。
とりあえず目先の話だけすれば、現状のCrescentにとってはオブジェクトではなくて関数の方が使いやすい気がする。
ただそちらがオブジェクトの方が都合がいいというのであれば、特にそれでもいい。
あと、思ったのだけど署名のチェック処理側では512bitか1024bitかは特に決めうちしないで、公開鍵の長さで
振り分けた方がいいのかな?それならあとは鍵生成側だけの話になるから、UI側で選ばせるなりすればいいかも。
>>543 > 個人的にはあまり好まないですが、
やっぱり?^^;
> プロトコル上問題がなさそうなので、実装してもいいのではないですか?
サンクス。
> パラメータをうまく設定すれば転送量もそんなに増えないと思いますし。
その辺が難しいね。
> あと/updateが来たときに(一定確率で)取得してもいいかも。
実はそれも考えてはいた。考えることはおなじですな^^;
> 本家ではたぶんやらない(w
さようで…。
まあ何が有効なのか分からないから私にとっても実験みたいなものだから。
> Wiki風ゲートウェイだともう少し使いやすくなるかな?
これってまだ自分のとこで動かしてないんだけど、newとかsearchとか面白そうなメニューが付いてるね。
入れ替えようかな。これってそのまま上書きしても、以前の部分はそのまま使えるの?
>>543 > ねとらんに載る直前に何者かが大量に板を作ったのです。
ねとらんの「通信は暗号化されているので」という部分、いま思うとgzip圧縮を誤解したのかもしれないw
>>545 >その辺が難しいね。
最悪の場合「でかいファイルを貰いました→消しました」になると困ります。
まずありえないと思いますけど。
>これってそのまま上書きしても、以前の部分はそのまま使えるの?
旧gateway.cgiを別名にしてcgi-binに入れれば使えます。
strict対応でstat.txtでのsageの扱いが多少変わるけど、ほとんど問題ないはず。
>>544 >とりあえず目先の話だけすれば、現状のCrescentにとってはオブジェクトではなくて関数の方が使いやすい気がする。
>ただそちらがオブジェクトの方が都合がいいというのであれば、特にそれでもいい。
なら関数で書き換えておきます。中身がすげ変わらない限り関数のほうが微妙に効率いいし。
512bit実装で固定していいですか?
>あと、思ったのだけど署名のチェック処理側では512bitか1024bitかは特に決めうちしないで、公開鍵の長さで
>振り分けた方がいいのかな?それならあとは鍵生成側だけの話になるから、UI側で選ばせるなりすればいいかも。
どこのこと?認証部や署名部は公開鍵や秘密鍵が一定長であることを仮定してますよ。
まあ可変にして食わしてもいけるようにはできてるけど(短い分にはOKのはず)
最終的にどのbitの実装かは決めてしまわないとだめだとおもう。
それともユーザに選択させることを考えてる?
>gcc版インタフェース
>>521の呼びわけで、実行ファイルを引数で呼び分けて、標準入出力でやり取りでいいですか?
>>gcc版インタフェース
>
>>521の呼びわけで、実行ファイルを引数で呼び分けて、標準入出力でやり取りでいいですか?
それでお願いします。
>>548 > どこのこと?認証部や署名部は公開鍵や秘密鍵が一定長であることを仮定してますよ。
あ、これは新月&Crescent側の話。ごっちゃになった。
カキコ時にはユーザーに512/1024の選択をさせ、表示側はファイルに書かれた公開鍵の文字列の長さを判別して
署名モジュールを呼び分けるということ。
まあそうまでして1024bitを使うこともないかな。
>>547 > 最悪の場合「でかいファイルを貰いました→消しました」になると困ります。
> まずありえないと思いますけど。
ネットワーク全体のトラフィックについていえば、中継で増加するのはたかだが2倍だから。
自分の回線の帯域でいえばADSLの場合上り帯域は確かに貴重ではある。
ただこの点だけはオープンソースである以上いまのところ善意に期待するしかない…
(Alphaのどこかのスレでオープンソースでの帯域の配分の話があったけど、ちょっと新月とは事情が違う気がするし)
HDDの容量については保持する時間を短くすれば問題ない。ただし頻繁にファイルの作成&削除が
行われるのでフラグメントの点は確かに嫌だね。とはいえWinnyに比べれば問題ないレベルと思うけど。
>>551 > ネットワーク全体のトラフィックについていえば、中継で増加するのはたかだが2倍だから。
考えてみたら、確率的には少ないけど中継が多段になることもあるから、そうとも言い切れないね。
時間がかかってすみません。互換の関数を探すのに手間取りました…
gcc版のコアは移植できたので、もう少しで完成すると思うのでもう少しお待ちください。
>>553 おそいよ!! こっちは後が
つかえてるんだ。お前のせい
でここ数日というもの作業が
すすまないんだからな。
ねこ大好き♥
新月が前のバージョンと互換性なくなってしまったのかな?
新月のDelphi版板で何度か動作報告していた者だが、よく分からないのでこちらで報告。
Crescent v0.0.7ですが、相変わらず速攻で落ちます・・・。
症状は全く同じようです。
>>559 > 新月が前のバージョンと互換性なくなってしまったのかな?
古いバージョンも動いているようだけどポートが8001に変わったそうな。
まえはgateway.cgiは旧版を残すとかいってたはずなんだけどね。
> Crescent v0.0.7ですが、相変わらず速攻で落ちます・・・。
> 症状は全く同じようです。
お手上げ^^
そのエラーの画面、一度キャプチャしてうpしてくれない?あまり意味ないけど、それぐらいしか…
>>560 いや、だから普通のエラーなんですって。
アプリケーションエラー
エラーが発生したため、Crescent.exeを終了します。プログラムをもう一度開始
する必要があります。
エラーログを作成しています。
OK
これだけ。
>>561 Win2000ってもう忘れてしまったんだけど、
> エラーログを作成しています。
このエラーログってどこにできるんだっけ?誰か知らない?他の人でもいいけど。
イベントログのアプリケーションログに多少ログが書かれているはずなので、それを転記してくれない?
あとこのファイルがあれば、このファイルも。All Users辺りのパスは違うかも知れない。
c:\Documents and Settings\All Users\Documents\DrWatson\Drwtsn32.log
>>562-564 書かれてなかった。
Drwtsn32.logにはあったけど長すぎるので、新月の方に貼ろうと思うけど、どこが良い?
まだDelphi版新月のスレないみたいだけど・・・。
あ、ファイルの日付を確認してね。別なソフトのログではこまるから^^;
>>568 うーむ。落ちてるのはカーネルの中だね。クリティカルセクションロックのAPIの中。
確かにv.0.0.5辺りでこの部分を変えたので、それまで動作していたのが動作しなくなった、という状況を合うのだけど…
しかしこのAPIがWin2000で動かないなんてことないんだけど(現に私のVMWare上のWin2000では動いている)。はて…
あとスレッドがなんか多い気がする。
ちなみにこれってどのパターンで落ちたもの?起動後だいたい何秒ぐらい?
>>569 いや、今まで開いた事ないスレッドを開いたときのもの。
今10秒ほどで落ちたのでまた貼りますね。
>>570 んと開いたことのないスレッドを開かなければ落ちない?
>>571 最初のはスレッドを開いて落ちたエラーログで、今貼ったのが放置して落ちたエラーログね
>>573 何秒だったかな・・・忘れた^^;
前に書いたけどその時によって落ちるまでの時間が違って、大体0〜60秒。
さらによく見たら、クリティカルセクションのロックで落ちているのはそうなのだけど、これはCrescentが直接ロックしている
処理ではないね。かなり間接的に呼び出されている部分で、具体的にはRtlImageDirectoryEntryToDataというAPIの
中から呼び出されているロック処理。このAPIはよく分からないのだけど、ちょっと検索したところでは、exeとかに含まれている
データを読み出す処理のようだから、Windowsが何かの都合でcrescent.exeのどこかの部分を再度ロードしようとしている
処理かも。深すぎてわからない^^;
ちなみの同じ時期にXPのUI対応に変更した。XP上ではボタンとかがXPのものになる。Win2000では従来通り。
これはmanifest.rcとかいうファイルで「このアプリはXPのUIに対応している」と書いておくと後はWindowsが自動的に
やってくれるのだけど…なんか関係あるのかな。
うーむ。どうしたものかな^^;
>>575 ごめん、何言ってんだか全然分からんが・・・頑張って(w
またバージョンアップしたら動作報告するよ。
>>574 > 何秒だったかな・・・忘れた^^;
結構その部分が重要なのだけど。
> 前に書いたけどその時によって落ちるまでの時間が違って、大体0〜60秒。
前にも書いたけど通信を始める前に落ちるか、通信を行おうとして落ちるか、通信を実際に初めていろいろな
処理をやった時に落ちるか、は結構デバッグする側にとっては重要な情報なんよ。
あと、できれば落ちた後に再度試す場合はWindowsをリブートしてから試してもらえるとありがたい。
NT系はWin9xとかと比べて強固とはいえ、やっぱり何かと影響するので。
リブート直後に、通信を始める前(10秒以内)に”も”落ちるなら、かなり最初の処理に原因があるはずなので、
調べる場所がかなり減る。
とはいえ、その情報があっても直ちに原因が分かるものでもないけど。
排他制御の部分とXPのUI対応の部分を元に戻してみるかな…しかし…せっかく作ったのを戻すのも^^:
>>576 > ごめん、何言ってんだか全然分からんが・・・
うん。それはそうだと思う^^;
>>577 原因分かった・・・CPU優先度を低にしていたせいだった・・・
>>579 そうなの?参考までの教えてほしいのだけど、優先度を低にしているというのはどの設定の話?
一応私もおなじ設定をしてみて再現をさせたいのだけど。たしかもう一人「ハングした」という人がいたので、
Crescent自体にバグがあるけど、普段はなかなか表に出ないバグなのかもしれない。そういうバグが現れやすい状況が
作れるなら、ぜひともチェックしたいから。
>>580 タスクマネージャでプロセスの優先度を低にするだけ。
前にCrescentのCPU使用率が100%になった事があって、
他のプロセスの処理に影響しないようにデフォルトで低にしていた。
破棄したものにはnil入れとけ。そうすれば無効だけど実行可能現象は回避できる。
あとバグはOSのせいにするな。原因は99%自分のコードにあると疑え。
謎の現象に陥ったら、メモリアクセスを疑う。書き込みすぎて隣の領域を破壊して
動作が変になることがバグとしてよく挙げられる。
>>582 > タスクマネージャでプロセスの優先度を低にするだけ。
やってみたのだけどそういう症状にはならなかった…うーむ、わからんね。
> 他のプロセスの処理に影響しないようにデフォルトで低にしていた。
デフォルトでって何かツール使って?それともコマンドラインのstartで?
新月のなかの Delphi版新月 Part2スレに上げておきました。
他の環境でコンパイル通るかわからないので、ダメだったら言ってください。
gmp版のほうが速い気がする…_| ̄|○
いまのとこ512版しか入れてないので1024がいるようならまた考えます。
中をちょっといじったので、前のと互換はありません。
しばらく起動しておいておくと、node.txtが空になって止まるんですが、
通信状態が悪いとこういう風になるもんなんですかね?
>>586 最悪でも1時間毎にinitnode.txtからノードを補給するので、プログラムが正常に動作していれば、
node.txtがからになったままということはあり得ないはずなのだけど…
「止まる」というのはどういう状態?
>>585 > 新月のなかの Delphi版新月 Part2スレに上げておきました。
サンクス
> gmp版のほうが速い気がする…_| ̄|○
^^;
もしかしてポートを開いてないとかないよね?^^;
apolloのコンパイルに成功しました。
Debian Woodyだとgmpのバージョンが低い(4.0.1)ので
4.1.2を入れたところうまくいきました。
古いやつだとmpz_importがないみたいです。
(別に古いバージョンに対応する必要はないと思います。それを言うときりがないので)
591 :
ひみつの文字列さん:2024/12/21(土) 02:06:52 ID:MarkedRes
日本国またはアメリカ合衆国、もしくはその両方の著作権法に触れる内容であると疑われることから表示できません。
>>584 ショートカットでできるんだよ。
C:\WINNT\system32\CMD.EXE /c start "" /LOW /D"C:\Crescent" "C:\Crescent\Crescent.exe"
みたいに書けばね。
>>583 まったく正論だが、このスレはActivePerlに苦戦してきた記録でもあるからね(w
>>592 > ショートカットでできるんだよ。
聞きたかったのはstartを使ってプライオリティの設定をしているのか、他の方法なのかという点で、
実際にそれをどう呼び出すかはどうでもいい^^;
プライオリティを普通にしたら、それ以降症状はでてない?
>>585 delphi版のアセンブラの部分だけど、キャリー付の計算を始める前に必ずしもキャリーをクリアしてない気がするんだけど、大丈夫?
>>594 プライオリティって優先度か・・・何かと思った。
コマンドラインのstartってよく分からないけど、とにかくそういう方法でやってた。
ただ、タスクマネージャで設定しても同じ症状出たけどね。
普通に設定したら動作安定した。お騒がせして申し訳ない。
>>596 > 普通に設定したら動作安定した。お騒がせして申し訳ない。
うーむ、プライオリティを低くしたらハングするのではまずいのだが…とりあえず動いて何より。
>>595 aux1とalsubですね。移植の時に間違えて消してしまったみたいです…
何で動いてるんだろう…直したやつを上げておきます。
それぞれのLoop:の前にclcを入れる必要があります。
>>587 localhost:port/gateway.cgi
にアクセスしても反応がなくなります。
デバッグモードで動かすとログが取れるみたいなのでやってみます。
>>589 ファイルを上げられたのでそれはないと思います。
>>591 乙です。mpz_importは新しいのか…
>>595 指摘ありがとうございます。素で気づいてなかった…
6eb7d57a :名無しさん [] Wed Feb 18 05:48:51 2004 1077050931.zip (350KB)
Crescent v.0.0.8 実行ファイル
#
>>9ec139f4は間違い
6b0e3c87 :名無しさん [] Wed Feb 18 05:50:52 2004 1077051052.zip (229KB)
Crescent v.0.0.8 ソース
>>600 乙です。
20-30分すると通信ソケットが落ちているのか、各サーバーへのpingが返ってこなくなります。
それで空になるし、補充しようにも通信できないから増えなくなっているみたいです。
Winnyのときも通信サブシステムが〜のエラーが出ていましたから、こちらの環境が悪いのかも
しれません。
>>603 環境忘れてました。Windows2000SP4です。
ADSLのブリッジ接続(直接接続)をしているPCです。
いろいろ動いているので、切っていって原因探ったほうがいいですか?
05386b34 :◆N/bHz7OnCro [sage] Wed Feb 18 13:56:21 2004
8ac9c330 :名無しさん [] Wed Feb 18 13:55:11 2004 1077080111.zip (350KB)
Crescent v.0.0.9 実行ファイル
41e1e70b :名無しさん [] Wed Feb 18 13:54:40 2004 1077080080.zip (229KB)
Crescent v.0.0.9 ソース
画像ファイルがサムネイル表示されたなぁ
相変わらず優先度下げると落ちる。下げなければ安定。
0.0.7で1回だけ、いつの間にか落ちてたけどね。
>>609 タスクマネージャのプロセスタブを選択した状態で、表示-列の選択を選ぶと表示できる項目が出てくるから、
スレッド数とハンドル数のチェックをONにして、Crescentのプロセスが使っているプロセス数とハンドル数を見てくれない?
>>610 1時間以上起動した状態でハンドル数160、スレッド数14。
優先度下げて落として、再起動したらハンドル数149、スレッド数12。
優先度下げても特に変化ないんだけど、落ちる直前にハンドル数が200以上に急上昇する。
スレッド数は多分変化なし。一瞬だから分からないけどね。
クレシェント0.0.8&0.0.9共に、起動&BBS閲覧して数分経つと必ずcpu使用率が
突然100%を維持したままになる
メモリ使用率もどんどん増えていく
おまけに終了を選んでもちゃんと終了してくれない
タスクトレイのアイコンが消えても実際にはプロセスがずっと起動したままなので、
タスクマネージャから強制終了させないといけなくなる
0.0.7まではこういった症状は一度もなかった
あと、どうやら起動のみでBBSを閲覧しなければ大丈夫っぽい?
使用OSはWin2000SP4、セレロン1.7Ghzにメモリ512MBです
クレセントをサービスで動かしてるんですが
CPU使用率とかがおかしくなることはないな・・・
0.0.6のころはレスするときにブラウザが落ちることはあったけど・・・
614 :
[名無し]さん(bin+cue).rar:04/02/19 08:04 ID:V3z0DNNE
あげ
Jannyの要望はここに書けば良いのですか?
誰かNy2chGateみたいに
Janny以外のJane系で使えるソフト作ってくれー
もしくはJanny作者さんメモ付けてくれませんか?
>>618 strictフォーマットのファイルとtraditionalフォーマットのファイルってファイルの中身を見ただけだと、簡単には
区別が付かないよね。strictの場合<>タグ:データ<>タグ:データの形になっているけど、traditionalで
たまたま名前とかがコロンを含んでいるだけの場合もある。
何をよりどころに判別したらいいんだろ?やっぱファイル名にアンダースコアを含むか否かで判別してOK?
なんか泥縄式だけど^^;
>>620 確かに非常に難しい。
「ファイル名にアンダースコア」でいくしかないでしょうね。
「たまたまファイル名にアンダースコアのあるtraditional」は
現状では存在しないみたいだし、とりあえず無視しましょう。
あと、tradgw.cgiでは板のファイル名を乱数でつけるようにしてみました。
それと、たぶんCrescent(の古いやつ?)だと思うのだけど、
「スレッドの1行目のIDが空」というケースがあります。
思うにファイルの1行目に何か識別子を入れた方がいいと思うのだが…
それとは別にtraditionalフォーマットの1行目にも、従来のデータの後ろに、タグ:データ形式で拡張をしたい。
想定しているのはスレッドの「管理人」の指定。スレッドを作る時にトリップ付で作ると、
自分がそのスレッドの管理人になれる。管理人はデフォルトで自動削除権を持つトリップとして登録される。
(ただしその機能をOFFにできる設定もつける。)
もう一つはWebスレ(?)。今考えているのは、この指定がされているスレッドは通常のスレッド表示にはならず、
スレッドの最後のレスの添付データをhtmlと見なしてWebとして表示する。このスレッドにはスレッドの作成者(これも
作成時に指定)しか書けない。
>>622 > あと、tradgw.cgiでは板のファイル名を乱数でつけるようにしてみました。
私もそのうちしようと思っていた^^
> それと、たぶんCrescent(の古いやつ?)だと思うのだけど、
> 「スレッドの1行目のIDが空」というケースがあります。
むむむ。
>>623 > スレッドの最後のレスの添付データをhtmlと見なしてWebとして表示する。このスレッドにはスレッドの作成者(これも
> 作成時に指定)しか書けない。
「正確には書いても自動削除される」が正しいかな。原理的にデータの送信は妨げられないので。
>>623 strictの文法的には1行目に
0000<>ID<>doctype:strict<>title:○○<>hoge:fugaみたいな記述もありうるんですが、
上で書いたような「再び人が集まればスレッドができる」というスタイルのためには
「1行目に何か識別子」というのは無理なんですね。
Wikiスタイルの主眼は
>>618だから、それができないのは非常に困る。
管理人は非IRC的なアプリケーションとしてはありでしょう。
Webスレもおもしろそうですね。
あと乱数でつけるファイル名は小文字・数字のみにした方がいいかな?
>>626 > 上で書いたような「再び人が集まればスレッドができる」というスタイルのためには
> 「1行目に何か識別子」というのは無理なんですね。
前にもいったけど、1行目をレコードだと思わなければいいと思うのだけど。
Wikiスタイルでも「ファイル名がLIST_やTHREAD_で始まる」ということは”知っている”わけで、おなじだと思うけど?
> あと乱数でつけるファイル名は小文字・数字のみにした方がいいかな?
あ、そうかも。
HTTPのリクエストヘッダ(特にjoinリクエスト)に下記を追加しようと思うけど、どう?
X-ShingetsuGateway: Open 不特定からのBBSアクセスを許している状態
X-ShingetsuGateway: Close 不特定からのBBSアクセスを禁止している状態
629 :
612:04/02/20 06:17 ID:lG3QYTpW
どうやら起動したままBBSを閲覧せずに放置していた場合でも、
時間が経てば同じ症状が発生するみたい
それから異常が起きてない状態で普通にメニューから終了させようとした時も、
高確率で同症状が起きて強制終了せざるをえなくなる
612でも書いたこの症状が発生している間は、BBS閲覧が一切できなくなってしまうみたい
繋ぎに行こうとすると、localhostを待っています...のままいつまで経っても進まない
b7e63bf7 :◆N/bHz7OnCro [] Fri Feb 20 07:15:41 2004 1077228941.zip (228KB)
Crescent v.0.0.10 ソース
24023736 :◆N/bHz7OnCro [] Fri Feb 20 07:17:50 2004 1077229070.zip (349KB)
Crescent v.0.0.10 実行ファイル
>>627 >1行目をレコードだと思わなければいいと思うのだけど。
1行目にメタ情報を記録するというのは自然な発想であり、有効です。
しかしWikiスタイルの実現という点から見た場合には矛盾が生じます。
Wikiスタイルで必要なのは
・リンクを張った時点ではファイルの実体は存在しない
・ファイルがどこにもない状態(=メタ情報が取得できない)でも書きこめる
ということです。
1行目にメタ情報を記録するスタイルでは
ファイルがどこにもない状態→書き込めない→データの衝突を避けることができる
ということが実現できますが、
Wikiスタイルでは衝突を許すことになります。
>>628 個人的には好みではないですが、問題はないと思います。
>>631 > 1行目にメタ情報を記録するスタイルでは
> ファイルがどこにもない状態→書き込めない→データの衝突を避けることができる
> ということが実現できますが、
> Wikiスタイルでは衝突を許すことになります。
衝突を許すことと1行目にメタ情報を記録することは排他的ではないと思うけど?
というか話をごっちゃにしてるよね。あなたが今話しているのは以前話したファイル名で衝突を避けるか否かの話だよね。
今話しているのはそれとは別だよね。
現在のstrictファイルはファイル名にメタ情報を埋め込んでるわけで、そのうちファイル名も「タグ:データ」形式にするはめになるんじゃないの?^^;
メタ情報をファイル内部に持たせると衝突を許すことができなくなります。
そしてWikiスタイルの実現では衝突を許すのが必要条件です。
・メタ情報をファイル内部に持たせても衝突を許すことができる
・衝突を許さなくてもWikiスタイルが実現できる
というのなら、その設計を示していただきたい。
ちなみに「1234<>ID<>body:hoge<>anonymous:ななし」
といった記述は考えています。
この場合は「それ以降nameフィールドが空であれば
「ななし」におきかえて表示する」という意味です。
>>634 >そのうちファイル名も〜
現在も「list/thread」と「タイトル」の2つが入ってますね。
もしかしたら今後も増えていくかもしれません。
できるだけ避けるつもりですけど。
現実的なのはファイル名のプレフィクスしかないと思うんだけどな。
thread_, list_, hoge_ とあれば(種類に関わらず)strict、なければtraditional。
>>635 > メタ情報をファイル内部に持たせると衝突を許すことができなくなります。
なぜ?
> そしてWikiスタイルの実現では衝突を許すのが必要条件です。
別にそれ自体は否定してないけど?
> ・メタ情報をファイル内部に持たせても衝突を許すことができる
> ・衝突を許さなくてもWikiスタイルが実現できる
> というのなら、その設計を示していただきたい。
私がいっているのは前者だよ。メタ情報に何を書き込むかの話をしているのだから、先ずあなたは
メタ情報をファイル内部に書き込み、かつ衝突を許すような情報とは何か、を考えるべきだね。
それはそのファイルがWikiというアプリが作ったという識別子だ。その他にはそのファイルがWikiのLISTかTHREADかという識別情報。
ようするに現在ファイル名に含めている情報だよ。これらの情報はWikiというアプリが作る限り固定なのだから、誰が
そのWikiファイルを作ろうと(あるいはまだ作っていなかろうと)同一になる。だから誰が作ってもいいし、マージする場合も
1行目は全くおなじ内容になるはずなのだからどちらを捨てようとおなじだ。
そのファイルがどのアプリ用のものなのか、すなわちファイルでいえば拡張子に相当する情報を1行目に書くという話。
Wiki用のファイルならそれをしめすもの。他の形式のBBS用のファイルならそれをしめすもの。P2PWeb用のファイルであればそれをしめすもの。
そういった情報を1行目に書いて識別しましょう、という話。もともと今回の話はそこから始まっているのだからね。
> この場合は「それ以降nameフィールドが空であれば
> 「ななし」におきかえて表示する」という意味です。
「以降」?順序を前提とするんだ?
誰がどの順序で書き込むか分からないのに(マージとかもあるし)、そんなことして大丈夫なの?
ちなみに1行目は特別だから(ファイルの生成と同時に生成されるという意味で)1行目を前提とするのは順序には関係ないが、
あるレコード以降というのは順序に依存する概念。
> 現実的なのはファイル名のプレフィクスしかないと思うんだけどな。
だからそれを1行目に書けばいいという話なんだけど。
> thread_, list_, hoge_ とあれば(種類に関わらず)strict、なければtraditional。
種類が増えていけば収拾がつかなくなると思うけど?traditionalで「板名のファイル名」をユーザー指定に
したのとおなじことの繰り返しの気が私にはするけど。
集約するとメタ情報を「ファイル名」と「ファイル内」のどちらに持たせるべきなのか、
という話だよね?
自分の考えは「ファイル名」。
ただし補足的な情報はファイル内にあってもよい、とする。
あなたの考えは
「ファイル名は実体を識別する機能のみを持つべきで、種類などを示すべきではない」
だよね?
以前議論になって、結局結着がつかなかったわけだけど、
この切り分けの問題は設計思想そのものの反映なんですよ。
双方納得する結着は絶対つきません。
仕事でやってるわけじゃないから、妥協もないでしょう。
捨て台詞みたいだけど「気にいらないのなら勝手にやってくれ」としか言えません。
俺は外野なのでよく分からんが、マターリと開発が続くことを願う
切に願う
>>638 > あなたの考えは
> 「ファイル名は実体を識別する機能のみを持つべきで、種類などを示すべきではない」
> だよね?
> 以前議論になって、結局結着がつかなかったわけだけど、
うーむ、どうも相手の意見を変に要約する傾向があるね。以前のツリーかハイパーリンクかの話もそうだけど^^;
依然とおなじことなんだけど、私がこれまで話したことが
| 自分の考えは「ファイル名」。
| ただし補足的な情報はファイル内にあってもよい、とする。
と矛盾するかどうかをもう一度読み返してもらいたいものだ。
> この切り分けの問題は設計思想そのものの反映なんですよ。
> 双方納得する結着は絶対つきません。
> 仕事でやってるわけじゃないから、妥協もないでしょう。
> 捨て台詞みたいだけど「気にいらないのなら勝手にやってくれ」としか言えません。
まあせめてお互いが何をいっているかぐらいは理解したいものだけどね^^;
もう少し相手が何をいっているのかを冷静に理解すべきだと思うけどね。
「ファイルの1行目にメタ情報を書く」と
「1行目に特殊な行があるのは気持ち悪い」はどうしたって両立しないでしょ。
>>639 それぞれ考え方が違うのは当然だと思うのだけど、同意できないからといって一足飛びに「捨てぜりふ」に
走られても正直困ってしまう。
そもそも以前の話と今回の話は別の話なのだが…
以前の話:
ある人と別な人が「雑談」というタイトルのスレッドを同時に立てた場合、それぞれが別のファイルとして
扱われるべきか、一つのファイルとして扱われるべきか。
今の話:
新月のネットワークで様々なアプリケーションが動作する場合の話。2ch形式のBBSもあれば、彼が
力を入れているWikiライクなBBS、私が上の方で述べているP2P Web、他にもいろいろ考えられる。
その場合何をよりどころに「このファイルはどのアプリが読み込むべきファイルか」を決定するかという話なのだけどね。
一般的に個々のデータ(BBSでいえば投稿記事、Webでいえばコンテンツ)の他に全体的な管理情報(作成者だったり、
管理人だったり、ファイルの有効期限だったり)は必要。彼が自分で
|自分の考えは「ファイル名」。
|ただし補足的な情報はファイル内にあってもよい、とする。
といっているように、まさにこの話をしているのだが、どうも彼は「以前の話」にこだわり続けて妙な方向にばかり
話を進めてしまう。「以前の話」についても私が不用意に一度だけ「ツリー構造」と書いたら、その後いくら
「ハイパーリンク」と言いなおしても、私はツリー構造しか考えていない、とさんざんいわれ続けたし…
もう少し冷静に相手の話を読み取ってほしいのだけど>新月の作者さん
>>641 「気持ち」ではなくて何が必要でそれをどう実現するか、という話なのだけどね。
違うのはstrictフォーマットの位置づけだろうね。「WikiスタイルBBS」用のフォーマットなのか、
新月のネットーワークを利用するアプリの一般的なフォーマットなのか。
今の「WikiスタイルBBS」が特に必要なくてもファイルの補助情報を必要とするアプリは当然
ありうるわけで、それを包含した形でstrictフォーマットを決めておかないと、アプリ毎に
xxxフォーマットが乱立する。しかもすでに問題となっているように「それがどのアプリ用のファイルなのか」を
識別するのがどんどん煩雑になっていく(今回アンダースコアがファイル名に含まれるか、とかで判断しないと
ならなくなったようにね)。
これらのことはWikiの設計思想とは別な話なのだけどね。
そういえばWinyBBSがあるのを思い出してのぞいてみたけど、
あいかわらず利用者が驚くほど少ないな。
やっぱ人が少ないとつまらん。
以前の話を引き合いに出したのは
「互いに設計思想が違う」ということを認識してほしいため。
どうもその認識が不足しているように感じる。
>「このファイルはどのアプリが読み込むべきファイルか」を決定する
基本的にはその必要はないと感じる。
HTMLファイルをブラウザで読むこともできるし、
テキストビューワで読むこともできる。
そういう状態を考えていただきたい。
0.1においてはあるファイルがスレッドである、というのは
板からリンクされている、ということによってのみ決定される。
識別の手段があってもよいという考えから0.2ではプレフィクスを設定したが、
それは絶対的な基準ではない。
.docが昔はテキストファイルを表わし、
最近ではwordのファイルを表わすようなもの。
>全体的な管理情報(作成者だったり、管理人だったり、
>ファイルの有効期限だったり)は必要。
については「Wikiスタイルでは不要」とする。
もちろん必要な局面もあるだろうし、そういう場合には記述すればいい。
ただし「記述できる」と「記述しなければならない」には大きな違いがある。
誤解をしているかもしれないので改めて書くけど、
「1行目にメタ情報があってもよい(なくてもよい)」であって、
Wikiスタイルのデータに関してはメタ情報はないよ、ということ。
strictフォーマットが規定するのは各行の形式であって、
(日付,id以外は)順不同の名前付きフィールドでなければならないということ。
そんで将来的にはtraditionalフォーマットは廃止したいので、
混在する現状においては_を手掛りにするのがいいでしょうという話。
>>645 > どうもその認識が不足しているように感じる。
それはあらゆる些末な意見の相違をすべて設計思想の違いに帰結させ無意味にしてしまう誤った考え方だと思うよ。
> HTMLファイルをブラウザで読むこともできるし、
> テキストビューワで読むこともできる。
それは偏った例を上げているだけだと思うけど?exeをテキストビュアーで開いても意味ないよね。
それにファイルがどのような種類のファイルかという情報があってこそ、それを適切なアプリで
開くことが出来る。txtファイルならメモ帳が開くしhtmlファイルならIEが起動するようにね。
メモ帳でhtmlファイルが開けたり、IEでテキストファイルが開けることはむしろ別な話。
もちろん一つのデータを別々なビュアーで開いて別な側面から表示を行うというのはあっていいけど、
それとデータの種類の手がかりを持たせないこととは違うと思うけどね。むしろ別なアプリでもその
ファイルを扱うためには、どのデータを無視してどのデータを有効とするかを判断するためにタグが
ついているべきで、その意味で補助情報はタグ付で1行目に格納されるべき。ファイル名のネーミングに
細工をして格納できる情報は限られており、勢いアプリ側が”知っていなければならない”前提が増えるだけ。
> 0.1においてはあるファイルがスレッドである、というのは
> 板からリンクされている、ということによってのみ決定される。
何度もいうけど私はそれに賛成も反対もしていないけど?
> 識別の手段があってもよいという考えから0.2ではプレフィクスを設定したが、
> それは絶対的な基準ではない。
その通りだと思うよ。だからそのプレフィックスがファイル名に付いている必要は特にない。
以前いったよね。「Wikiの思想に則るならTHREADとLISTの区別もない方がいいんじゃない?」と。
> .docが昔はテキストファイルを表わし、
> 最近ではwordのファイルを表わすようなもの。
これは全然別の話(苦笑
> >全体的な管理情報(作成者だったり、管理人だったり、
> >ファイルの有効期限だったり)は必要。
> については「Wikiスタイルでは不要」とする。
だからstrictフォーマットが「何の」フォーマットなのか、という位置づけが違うのだろう、といっているのだけどね。
あなたはWikiBBSのフォーマットと考えているようだけど、私はもう少し一般性のあるものと捉えているのだけどね。
> もちろん必要な局面もあるだろうし、そういう場合には記述すればいい。
> ただし「記述できる」と「記述しなければならない」には大きな違いがある。
その通りだよ。今のケースは記述しなければならないケースと考えているからそう言っている。
「データの種類を識別する方法」というのは入り口なのだからね。入り口より奥は各アプリが決めていいけれど、
入り口、すなわちどのアプリ用のデータなのかを識別する手段は、整理されているべきだと思うよ。
少なくとも単に「気持ち悪い」という理由で疎かにすべきではないと思うけどね。
> 誤解をしているかもしれないので改めて書くけど、
> 「1行目にメタ情報があってもよい(なくてもよい)」であって、
> Wikiスタイルのデータに関してはメタ情報はないよ、ということ。
上に述べたように、今はアプリの識別の話をしているので、この部分はWikiスタイルのデータの話ではない。
Wikiスタイルのデータか否かを識別する方法の話なのだから。
> strictフォーマットが規定するのは各行の形式であって、
> (日付,id以外は)順不同の名前付きフィールドでなければならないということ。
> そんで将来的にはtraditionalフォーマットは廃止したいので、
> 混在する現状においては_を手掛りにするのがいいでしょうという話。
少なくともこんなに粗雑ではstrictフォーマットに移行できない。私にもその気があるからこそあれこれ
述べているのであって、そうでないなら放っておくのだけどね。しかし「勝手にしろ」といわれてしまってはちょっとね…
例えばだれかが現在のWikiスタイルBBSを拡張してちょっと違ったバージョンを作ったとする。
何か補助情報が必要な、ね。その時識別子はどうするの?ファイル名のネーミングをTHREAD_Ex_とかにするの?(笑
全く別なアプリならプリフィックスを変えればいいけど、ちょっとだけデータが拡張されされているアプリが出てくる毎に
ちょっとだけ違うプリフィックスをつけ直すのでは煩雑すぎるよね?それにちょっとだけ違うだけなのだから、オリジナルアプリと
新しいアプリの間でも共通部分に限定してデータの相互乗り入れをしたくなると思うけど?そういうことが今の形だとできないよね。
Crescentの作者さんて高校生くらい?
もう少し柔軟にならないと共同作業やってけないと思うよ
>>649 それは心外だね。少なくとも私は相手の方が柔軟でないと考えているからね。
一つのアプリのためのフォーマットだけを考えているのか、複数のアプリのフォーマットを考えているかの違いだ。
新月の作者さんはWikiBBSという一つのアプリのためにフォーマットを規定し、それにいずれは一本化したいということは、
そのアプリのためだけのネットワークにしたい、といっているのと同じだ。たとえ本人がそうではない、といっても結果的には
それと同じこと。
いってみれば「勝手にしろ」というのが柔軟なのか?ということなんだけどね。確かにある意味柔軟ではあるけど^^;
正直技術的なことは断片的にしかわからんが
技術者同士のこういうせめぎ合いってのは
次を考えているのが伝わってくるので見苦しくないぞ。
互いに譲れないところもあると思うけど、
よい物になっていってくれればいいなと思います。
>>650 というか主に言い方の問題なんだよね
変に客観的になって自分の意見の一つを既成事実のように言ってる傾向がある
相手の主張を率直に受け入れ自分の非を認められる姿勢も示さないと
意見の押し付け合いにしかならないよ
ここは公共の場だから感情的な発言は控えられてるけど、
新月の作者は相当うんざりしてると思うよ
>>652 実のところ新月の作者さんが考えていることも分からないではないのだけどね。
これは以前別なスレで述べたことだが新月の良さの一つにシンプルさがある。非常によいことだと思う。
私の場合どちらかというと基盤部分に一般性を求める。その上位のアプリに雑多な制限が生じないようにね。
これはこれでシンプルなのだが、2つのシンプルさは質が違う。単純なプログラムでは2つのシンプルさは一致するが、
規模が大きくなれば各層やモジュール毎に構造を規定して複雑さを分断することが複雑さの総量を減らし、
全体的なシンプルさにつながる。
とはいえやみくもにスケーラブルに作ってもオーバースペックになるだけだからこのバランスが難しい。
おそらく技術者が10人いれば10種類のバランス感覚があるだろうね。
例えば先頭の一行を特別扱いするということで飛躍的にそのフォーマットの応用範囲が広がるなら、
私はそうすべきと考える。その方がそのフォーマットが柔軟にいろいろなアプリに応用できるからね。
一方彼は特に共通のフォーマットを規定しないで、各アプリがそれぞれのフォーマットを用いた方が
柔軟であると考えるのだろう。私にとってそれは「柔軟」ではなく「無秩序」に見えるのだが、
柔軟という見方も確かにあるだろうね。
>>653 ま、私もあなたの意見を読んでウンザリしたよ。
> というか主に言い方の問題なんだよね
下らない話だね。
> 変に客観的になって自分の意見の一つを既成事実のように言ってる傾向がある
当然私は自分の意見が客観的だと(主観的に)思っているのだからそういう表現になって当然。
わざわざこれは私の主観である、と(主観で)言っても意味がない。主張とは所詮主観的なものだ。
すべてが所詮主観にすぎないものを、この部分は客観的な意見、この部分は主観的な意見と(主観で)わける方が
よほどあざとく見える。
このスレ引用付多くて読みにくい(・A・)イクナイ!
どわ。strictって文字コードを全部UTF8にしたの!?知らなかった^^;
確かに以前日本語をファイル名にするならUTF8の方がいいよ、といったけど。
簡単にできそうならCrescentをstrictに対応させようと思ったけど、とりあえずペンディングかな。
文字コードがUTF8ということ自体は異論ないんだけどね。今変えるとは思わなかった。というか最初からそうであってほしかった。
余談だけどUNICODEの場合SJISやEUCとのマッピングが処理系によって微妙に違うのでそこがちょっとね。
UNICODEが言語の標準のjavaとかでは文字コードの話だけで一冊本が書けるし^^;
全部UNICODEでやるならこんなに幸せなことはないのだけど、一度返還しようとするとマッピングの問題が付きまとう。
いや、客観は言うまでも無く否定してるよ
俺の発言をよく見れ・・・>変に客観的になって自分の意見の一つを既成事実のように言ってる傾向がある
君が客観を気取っているという事
ほんと今更だけど客観的な言い方は自分が間違っていないことが前提になってしまってるんよ
間違いがあっても自分自身に責任が掛かってこないから反論もされず、会話のキャッチボールが成り立たない
自分の意見は自分のコトバで言わないと、友達が段々離れていくよ・・・
>私はもう少し一般性のあるもの
この点についてはあなたの誤解。
自分もstrictフォーマットは一般的なものであると考えている。
>「データの種類を識別する方法」
こそファイル名に持たせるべきである。
一般のファイルでサフィックスがファイル名に属するようにね。
マックバイナリという考えかたもあるが、自分が選択したのはそうでない。
>少なくともこんなに粗雑
あなたの言い方を借りていえば「層が違う」。
strictの規定する層は極めて低い。
>例えばだれかが現在のWikiスタイルBBSを拡張して
旧版と同じくthread_というプレフィクスをつければよい。
その拡張に対応していれば適切に表示するだろうし、そうでなければそれなりの表示をする。
strictはその程度の柔軟性を持って設計されている。
>>654 はこの問題を適切に捉えている。
>>658 はまったくの勘違い。
strictが規定するのは各行が名前つきフィールドからなるということのみであって、
文字コードは規定しない。
ちなみに署名の記述はpubkeyとsignであるが、これはstrictの規定するものではない。
単にWikiスタイルではUTF8を用いるということに過ぎない。
あとファイル名もstrictの規定するものではない。
ごく表層的にいえば「1行目は必ずメタ情報であるべき」という主張と
「メタ情報はあってもなくても(あるいは複数あっても)よい」という主張のぶつかりあいに過ぎない。
>>659 > 君が客観を気取っているという事
気取ろうが気取るまいが、所詮主張とは主観的なものなのだよ。くだらんはなしだ。
> ほんと今更だけど客観的な言い方は自分が間違っていないことが前提になってしまってるんよ
> 間違いがあっても自分自身に責任が掛かってこないから反論もされず、会話のキャッチボールが成り立たない
> 自分の意見は自分のコトバで言わないと、友達が段々離れていくよ・・・
くだらない非生産的な話が好きなようだね。
unixの文化だとファイルヘッダに情報を埋め込んでそれで判断するよね?
至極合理的でスマートだと思うんだよ。
新月で同じようにして何ら問題はないと考えるんだがなあ。
俺にはcrescentの作者の主張の方が正しく感じるがな・・・
>>662 Unixは6年ほど触っていますが、そんな文化初めて聞きました。
ファイルヘッダというのは何ですか?
もしかしてfileコマンドでファイルの先頭を覗くことでしょうか?
>気取ろうが気取るまいが、所詮主張とは主観的なものなのだよ。くだらんはなしだ。
なんかシャアぽい
関係ない話スマソ
>>660 > この点についてはあなたの誤解。
> 自分もstrictフォーマットは一般的なものであると考えている。
だからあなたがそう考えていようがいまいが、結果的にはそうなっていないという話なのだけど?
フォーマットとの本質は制限なんだよ。制限することで構造を作り出す。
あなたの言っているstrictフォーマットは制限が無さすぎて逆に一般性を損っているということなのだけど。
> >「データの種類を識別する方法」
> こそファイル名に持たせるべきである。
> 一般のファイルでサフィックスがファイル名に属するようにね。
普通のファイルは補助情報を持っているよね?WordのデータならWordのバージョンが入っている。
あなたはそれを否定しているわけだよね?
> マックバイナリという考えかたもあるが、自分が選択したのはそうでない。
話がそれるのでただの余談として聞き流してもらってかまわないが、NTFSも同様にプロパティが
追加できる。つまり拡張子とか作成日付とかの基本的な情報だけでは限界があるからこうした
ものが考案される。
> >少なくともこんなに粗雑
> あなたの言い方を借りていえば「層が違う」。
> strictの規定する層は極めて低い。
それは分かっているよ。名前がないから呼びにくいが、単純に「改行と<>とタグ:で構成されたファイル」が
低位のstrictフォーマットだとすれば、「全てレコードだけで構成され、全体の情報は含まない」というのが
高位のstrictフォーマットだ。低位のstrictフォーマットは確かに柔軟性がある。というよりありすぎるがそれはいいとして、
明示しなくても分かると思って呼び分けなかったけど、今話しているのはそれよりアプリケーションに近い高位のstrictフォーマットの話。
> >例えばだれかが現在のWikiスタイルBBSを拡張して
> 旧版と同じくthread_というプレフィクスをつければよい。
> その拡張に対応していれば適切に表示するだろうし、そうでなければそれなりの表示をする。
> strictはその程度の柔軟性を持って設計されている。
はて…だって全体の情報を格納する場所がないわけだよね。新版のプログラムが1行目に全体のデータを
格納したとして、旧版のプログラムはちゃんとそれを処理できるの?マージとかで特別扱いしなければならないと
思うけど…?それとも全体の情報を記述するレコードはファイルのどこにあってもよい、というところまで拡張することを
考えているの?上の方で述べたけど、1行目というのはそのファイルの作成時に作られるレコードという意味で「特別」だけど、
それが任意の場所にあっていいとすると、後から誰かが「全体に関する補助データ」を追加できたり重複したりするよね。
却って問題を複雑化させているだけだと思うけど?
>
>>654 > はこの問題を適切に捉えている。
私は相手の話をきちんと理解した上で話しているからね^^;
>
>>658 > はまったくの勘違い。
> strictが規定するのは各行が名前つきフィールドからなるということのみであって、
> 文字コードは規定しない。
そのレスの話はstrictフォーマットそのものの話ではなくて、WikiBBS互換のアプリをCrescentにどう移植するかの話なのだけど。
文章全体を読めば分かると思うんだけどな^^;
> ちなみに署名の記述はpubkeyとsignであるが、これはstrictの規定するものではない。
> 単にWikiスタイルではUTF8を用いるということに過ぎない。
だからそういう話をしてるんだけど。明示しなかった私も悪いけど、複数の話を平行してしている(strictフォーマットの規定、Wikiバージョンの移植etc)。
どの話も呼び名がないから「strictは〜」と話し始めるのがいけないのかな…。でも冷静に全体を読めば分かると思うんだけど?
> あとファイル名もstrictの規定するものではない。
だからそれは低位のstrictの話であって、私が言っているのは高位の話。言ってみればWikiBBS用フォーマットの話。
> ごく表層的にいえば「1行目は必ずメタ情報であるべき」という主張と
> 「メタ情報はあってもなくても(あるいは複数あっても)よい」という主張のぶつかりあいに過ぎない。
メタ情報がある場合、一行目にないと不都合がいろいろでてくるからそういってるんだけどね。
任意の場所にあったらいろいろ不便だと思うよ?となればメタ情報があってもなくても一行目は
メタ情報用に確保しておくのがリーズナブルだという話なのだけどね。
>>664 > なんかシャアぽい
ワラタ。いやね、こういう話はこんな感じで砕けた口調でやるのがいいんだよ。丁寧だけど堅苦しい口調でやるとちょっとね…
>>663 例えばMIMEやHTTPなど先頭にヘッダ情報があるフォーマットは多いよね。先頭にあることはそれなりに価値があるからそうなっている。
もちろん任意の場所にあってよいフォーマットも多々あるけど何かと不便だよ。
Crescentの作者さんは別に間違った事は言ってないと思う。
が、それとは全く別の部分で、表現の仕方というかモノの言い方に問題ある気がする。
気心の知れた相手と話している訳ではないのだから、ある程度の気遣いをもって言葉を選んで話しさないと余計なトラブルを生みかねない。
議論をしているのだからまず要点・論点ありきと言うのは分かるが、あまり突き放した言い方だと悪意が全くなくとも"攻撃的な物言い"として受け取られてしまう。
こんなの人に強制できる事では全くないのだけれど、スムーズなやりとりのためにも一考してみる価値はあるんじゃないかな。
>>665 >WordのデータならWordのバージョンが入っている。あなたはそれを否定しているわけだよね?
どこからそういう結論を得たのかわからない。誤解だ。
Wordならそのような情報持っている。MP3なら作曲者とかが入っているだろう。textならそういう領域はない。「あっても、なくてもよい」
>「全てレコードだけで構成され、全体の情報は含まない」というのが高位のstrictフォーマットだ。
了解
>新版のプログラムが1行目に全体のデータを格納したとして、
旧版からみれば「ゴミデータ」として扱われる。2つあれば2行あるとみなされるわけだ。
そのデータは新版が解釈するまでは壊されず、単に保存される。
>それが任意の場所にあっていいとすると
文法上の可能性としてはありうる。
が、アプリケーション上にそういう利用法がありうるかどうかは別の話。
あるとしたら、たぶんこんな感じになると思うのだけどね。
(1)
0000<>ID<>メタ情報1<>メタ情報2
1234<>ID<>1つめの記事
1235<>ID<>2つめの記事
(2)
0000<>ID<>メタ情報1
0000<>ID<>メタ情報2
1234<>ID<>1つめの記事
1235<>ID<>2つめの記事
もしメタ情報を解さないアプリがこれを見たら、「1970年の、空白の記事が1つ(2つ)ある」と解釈するでしょう。
>WikiBBS互換のアプリをCrescentにどう移植
Crescentは現行でもEUC<->SJISの変換が必要なようで、大変ですね。
Perlは文字コードを無視してコーディングできるのですが・・・
がんばってくださいね。
このスレやたら長文が多いくせに全員名無しだから読みにくくて
しょうがない。トリップか名前を名乗れよ。
674 :
[名無し]さん(bin+cue).rar:04/02/20 23:50 ID:9hqAiM/A
.
675 :
tatami:04/02/20 23:51 ID:9hqAiM/A
乙!
676 :
[名無し]さん(bin+cue).rar:04/02/20 23:53 ID:9hqAiM/A
ミスしました。すまそー!
677 :
よりみち:04/02/21 00:03 ID:lQzI/fop
Crescentは、力作だと思う。また、shingetuの作者さんもすばらすぃ。
ただ、一ついえることは、どちらとも、オリジナルでないこと。
言い方とか、表現方法とか、いろいろ、ありますが、技術者と名のる
なら、テクで勝負してほしい。
Crescentさん、Threadの事故は、どうにか、回避してね。あなたなら、
できるんじゃないかな。
678 :
[名無し]さん(bin+cue).rar:04/02/21 00:06 ID:z8qDEz89
idcheck
>>672 > どこからそういう結論を得たのかわからない。誤解だ。
> Wordならそのような情報持っている。MP3なら作曲者とかが入っているだろう。textならそういう領域はない。「あっても、なくてもよい」
嗚呼確かに正確ではなかったね。正確に言えば、新月の場合各レコードは必ずしも存在するとは限らないのだから、
1行目(これはアプリケーションが作成時に必ず存在する)になければ不都合が生じるだろう、という話。
それを前提として話していたので「1行目になくてもいい=メタ情報は置けない=否定」となる。
つまり1行目にあるからこそメタ情報として扱えるのであって、そこにないということはメタ情報として扱えない、という話。
確かにこの点は説明不足ではあったね。
> 旧版からみれば「ゴミデータ」として扱われる。2つあれば2行あるとみなされるわけだ。
マージの結果2行目以降に来る可能性はないの?2つあるということは内容が違うということがあるよね。
何度か言っているけど、新月の場合新たなデータを追加することを妨げられないのだから、誰かが後から
別なレコードを追加すれば、どちらが本来のデータなのかは分からなくなってしまう。それでいいデータもあるだろけれど、
それではまずいデータもある。まずいデータを1行目に格納しましょう、という話なのだけどね。これは「あってもなくてもいい」と
いう方法では解決できない。必ずなければならないよね。まさかレコードのマージ処理にアプリが介入するわけにはいかないから。
> 文法上の可能性としてはありうる。
私としてはあり得ないでほしいのだけど(笑
> が、アプリケーション上にそういう利用法がありうるかどうかは別の話。
> あるとしたら、たぶんこんな感じになると思うのだけどね。
(略)
> もしメタ情報を解さないアプリがこれを見たら、「1970年の、空白の記事が1つ(2つ)ある」と解釈するでしょう。
順序を要求する新版と順序に無頓着な旧版があったら、順序に信憑性は置けないよね。
タイムスタンプは偽造できるのだから宛にしてはダメ。
> Crescentは現行でもEUC<->SJISの変換が必要なようで、大変ですね。
> Perlは文字コードを無視してコーディングできるのですが・・・
コーディング自体は日本語の文字処理が必要な部分(例えば「名無しさん」という名前をつけるとか)以外は
文字コードに依存する処理はないけど、デバッグがしにくいんだよね。文字列変数をデバッガで表示させても読めない^^;
> がんばってくださいね。
ん〜もしかしたらしないかも。ちょっと様子見かな。とりあえずstrictが普及してから考えるよ。
普及しないうちに移植してもまた変わりそうだから。もちろん他の人が追加してくれる分には強力は惜しまないつもり。
99%はweb.pasというファイルのみの修正で済むはず。このファイルが実質的にUIを担当している。
今回のUTF8の件はコーディングの量というよりも精神的なインパクトが大きいね。ちょっと気勢が削がれた(笑
>>677 > ただ、一ついえることは、どちらとも、オリジナルでないこと。
?Crescentはともかく新月はオリジナルだと思うが…?
682 :
よりみち:04/02/21 00:32 ID:lQzI/fop
>>681 俺は、ココ(2CH)とか、p2pCashとかの延長かと思ってたが、、
違うのか?
>>679 >まずいデータを1行目に格納しましょう、という話
これは無理でしょう。
というのは新月は取得したデータを日付とIDで並べ変えて、
一番小さい行を1行目にするという動作なので(通信層)。
つまり後から投稿されたデータが1行目になってしまう可能性がある。
(実際にはある程度より古い日付のデータは投稿されても無視するのですが)
で、これは私のいいかたが悪かったのだけど、
1行目じゃなくて、タイムスタンプが0のレコードがメタ情報を表すものと考えたほうがいいのでは、
ということなんだけど。実際には下の4行が同じ意味をもっていると考えればよい。
0000<>ID<>title:タイトル(改行)0000<>ID<>admin:管理者情報
0000<>ID<>admin:管理者情報(改行)0000<>ID<>title:タイトル
0000<>ID<>title:タイトル<>admin:管理者情報
0000<>ID<>admin:管理者情報<>title:タイトル
矛盾が生じることもありうるけど、それはメタ情報そのものの偽造と同様に処理すべきじゃないかな。
署名とか。
もしタイムスタンプが0のレコードがなければ、それはメタ情報がないということになる。
どちらにしてもstrictフォーマットの上に署名層があって、その1つ上の文法になります。
アプリケーション層としては
1234<>ID<>admin:管理者情報
とかで情報を上書きすることも、ないとはいえない。
あと、移植は強制しません。気が向いたらやってください。
>>682 新月はVojtaの劣化版コピーからスタートしました。
>>682 p2pCacheなんて構想があったんだ。面白いね。
2ch規模はさておき、個人で細々とやっているサイトとかをP2Pでキャッシュして支援するといいかもね。
685 :
[名無し]さん(bin+cue).rar:04/02/21 00:47 ID:lQzI/fop
>>683 大変もうしわけない。Vojtaの作者殿、失礼した。
オリジナルはあなただったのですね。
まてよ、ってことは、この順番か。
Vojta --> 新月 --> Crescent
やっぱ、三男ともなると、元気が良いですなぁ。(^^;
686 :
よりみち:04/02/21 00:53 ID:lQzI/fop
>>684 ですね。昔は、いろいろ構想はあった、今は、実現の段階かな。
CrescentはVojtaへの先祖帰りという気がしますね。
Vojtaはとにかく高機能を目指してたから。
板単位でななしを設定したり、ロゴを出したり、画像を添付したり、書き込みのサイズを設定したり、
匿名で書き込めるかリモートホストを表示させるか選べたり。
今Crescentがメタ情報としていろいろ設定項目を入れることができるようにしようとしてますが、
これを板単位でいろいろ設定できるようにしてました。
また板をグループにまとめて、それを単位にした中継も実装してたはずです。
あとスレッドのデッドロックにそうとう悩んでいました。
>>683 > というのは新月は取得したデータを日付とIDで並べ変えて、
> 一番小さい行を1行目にするという動作なので(通信層)。
> つまり後から投稿されたデータが1行目になってしまう可能性がある。
だからそれではまずいから1行目を特別扱いしようという話をしている。
> 1行目じゃなくて、タイムスタンプが0のレコードがメタ情報を表すものと考えたほうがいいのでは、
> ということなんだけど。実際には下の4行が同じ意味をもっていると考えればよい。
タイムスタンプは偽造できるからあまりあてにならない、という話を書いていると思うのだけど。
> 矛盾が生じることもありうるけど、それはメタ情報そのものの偽造と同様に処理すべきじゃないかな。
> 署名とか。
そのよりどころになるものが必要という話なのだけど。それがそのファイルを最初に書いた人という
ことなんだけどね。「WikiBBSというアプリでは最初に書いた人を特別扱いしない」というのは別にかまわないけど
それを特別扱いするアプリも存在するよね?何度か書いているけれど「あってもなくてもいい」という形では
これは処理できない。
> もしタイムスタンプが0のレコードがなければ、それはメタ情報がないということになる。
> どちらにしてもstrictフォーマットの上に署名層があって、その1つ上の文法になります。
この辺の認識の差が原因なのかな。1行目を特別扱いするというのはアプリケーション層ではなくて、
もっと下、ほぼ通信層そのものか、通信層の直上でなければ処理できない。
> アプリケーション層としては
> 1234<>ID<>admin:管理者情報
> とかで情報を上書きすることも、ないとはいえない。
そのレコードをポストした人の正当性をどうやって証明するかという話。誰かが勝手に後から自分のトリップで
俺が管理者だ、というレコードをポストしても、新月の構造上それを妨げられない。だから自分が管理者であるという
レコードがあったからといってそれを信じるわけにはいかない。
これを避けるために「ファイルを最初に作成した人」が自分が管理者であるとトリップ付で1行目に書き込む。
これであれば後はこのトリップをよりどころに管理していけばいい。管理者の委譲とかも管理者が新たな管理者を
任命するという形でね。
WikiBBSのように「ファイルを作った人」を特別扱いしないアプリであれば一番最初に「私が管理者だ」というレコードを
ポストした人が管理者になる、というのも次善の方法として有りだとは思うけど、上に比べれば確実性が薄れるね。
> あと、移植は強制しません。気が向いたらやってください。
もちろんそのつもりだよ。単に何を先にやるかという順序の問題。
一瞬待ち行列の先頭に来たけど、また後部に移動したということ(w
690 :
[名無し]さん(bin+cue).rar:04/02/21 01:09 ID:lQzI/fop
>>687 >>CrescentはVojtaへの先祖帰りという気がしますね。
>>あとスレッドのデッドロックにそうとう悩んでいました。
軽いうちはいいけど、処理単位が重くなると、いろいろあるんだろうね。
なんか、仕様といいますか、通信規約のガイドラインがあれば、
全国民、一人に一つのp2p板が実現できるんですがね。(冗談)
>>683に関連するけど、Crescentは「1日以上古い日付の投稿は無視する」という処理をしてないでしょ!?
update.txtに記録されないから、無限に/update命令がネットワークを流れますよ。
いままさに、その事態が発生してます。
で、この処理を入れると(副作用として)タイムスタンプ0が特別なデータとして扱えるようになる。
この前提において、「タイムスタンプ0」と「1行目」は同程度の意味がもてる。
メタ情報レコードは署名によって保護することができるので署名層の上に位置する。
その上にアプリケーション層がある。
>管理者の委譲とかも〜
これを表すのが↓
1234<>ID<>admin:管理者情報
厳密にかくと↓
1234<>ID<>pubkey:...<>sign:...<>target:admin<>admin:管理者情報
もちろんこれはメタ情報レコードの署名と同じ人の署名であるべき。
まあこの辺はメタ情報レコードの規定というよりはアプリケーション層の規定になってしまう。
>>687 ついでだから、新月を作ろうと思ったきっかけとか話してよ?
> CrescentはVojtaへの先祖帰りという気がしますね。
これでも一応むやみやたらの機能拡張は新月のポリシーに反する、とセーブしているつもりなんだけどね。
とはいえ最初はシンプル→漸次機能拡張というのは普通だと思うけどね。
> Vojtaはとにかく高機能を目指してたから。
みたいだね。zigumo、vojta、新月、をそれぞれ見比べていたから。
もともとWinnyBBSの将来が心許なくなって、じゃあJannyをどのP2P BBSに対応させようか、という
ことから始まった。zigmoはすでになくなってしまったようだし、vojtaはそれ自身で2chビュアーに対応しているようだし、
そんなこんなで新月を選んだ。最初はPerl版のフロントエンドとしてJannyを作ろうと思ったのだけど、
Windows版がないと普及が難しいと思った(普及していないBBSのビュアーを作っても仕方ないから)ので、
Crescentを作り始めた。
Jannyもプロトコル部分を分離してもっと任意のBBSに対応させやすくしたい思いはあるのだけどね。
>>691 >
>>683に関連するけど、Crescentは「1日以上古い日付の投稿は無視する」という処理をしてないでしょ!?
> update.txtに記録されないから、無限に/update命令がネットワークを流れますよ。
ん。それは新月のchangelogを見て気づいていた。新月も割と最近直してるよね^^;
> いままさに、その事態が発生してます。
そうなの?それはまずいね。しかしなんでそういうデータが流れたのだろう?
送信の待機状態で新月やCrescentを止めて一日以上経過した後再起動したパターンかな?
あるいは日付が狂ったPCで送信したとか。
しかしupdate.txtには一度は入るのだけどね。消えるのは次にupdate.txtに*ない*別なデータを
追加した時。だから新規の投稿がなければ沈静化する気がするけど^^;
>>692 > で、この処理を入れると(副作用として)タイムスタンプ0が特別なデータとして扱えるようになる。
> この前提において、「タイムスタンプ0」と「1行目」は同程度の意味がもてる。
それってSync処理でも大丈夫なの?単にupdateの対象から外しただけではダメだと思うけど。
> メタ情報レコードは署名によって保護することができるので署名層の上に位置する。
> その上にアプリケーション層がある。
メタ情報レコードというのは層ではないよ。「特別な(ファイルに付帯している)データ」に過ぎない。
そしてその位置を維持できるのは通信層しかないと思うよ。
> >管理者の委譲とかも〜
> これを表すのが↓
> 1234<>ID<>admin:管理者情報
> 厳密にかくと↓
> 1234<>ID<>pubkey:...<>sign:...<>target:admin<>admin:管理者情報
> もちろんこれはメタ情報レコードの署名と同じ人の署名であるべき。
うーん、なんで理解してくれないのかな。最初の管理者が誰か、という話をしているんだけど?
最初の管理者が決まるからこそ委譲が出来るという話なのだけど。ちゃんと読んでほしいのだが…
> まあこの辺はメタ情報レコードの規定というよりはアプリケーション層の規定になってしまう。
「管理者の委譲」といのはメタ情報ではないよ。それはファイルに固有のものではないから。
ある操作を実現するメカニズムと操作の意味をしばしば混同する傾向があるね…
意味はアプリケーションが規定すればいいが、そのためのメカニズムは下位層が提供する必要がある。
92aea319 :◆N/bHz7OnCro [] Sat Feb 21 02:37:23 2004 1077298643.zip (229KB)
Crescent v.0.0.11 ソース
9090ce77 :◆N/bHz7OnCro [] Sat Feb 21 02:38:15 2004 1077298695.zip (349KB)
Crescent v.0.0.11 実行ファイル
75228ed3 :名無しさん [] Sat Feb 21 02:40:18 2004
Crescent v.0.0.11 変更箇所
・一日以上前の日付の投稿がループする問題を修正
これ以前のバージョンのCrescentはすべてこのバグを持っているので、
なるべく早期にバージョンアップして^^;
>>695 >それってSync処理でも大丈夫なの?
ほぼ問題ない。
「1行目」方式でも偽造から自由になるわけではない。
>最初の管理者が決まるからこそ
それが決まっているからこそ、
1234<>ID<>pubkey:...<>sign:...<>target:admin<>admin:管理者情報
のpubkeyだのsignだのが意味をもってくるわけでしょう?
>ある操作を実現するメカニズムと操作の意味をしばしば混同する傾向があるね…
それを分離して考えるのがあなたの傾向ですね。
>>697 >
>>695 > >それってSync処理でも大丈夫なの?
> ほぼ問題ない。
> 「1行目」方式でも偽造から自由になるわけではない。
いや、実はもう少し考えていることがある。また、ファイル名の話になるんだけどね^^;
今考えているのは、1行目のハッシュ(ID)をファイル名にすること。単純にハッシュをとると同じタイトルのスレは
同じハッシュになってしまうので、1行目に乱数文字列を付加した上で、ハッシュをとる。
これで1行目の内容とファイルが一意に結びつくから偽造は出来ない。ま、某αも似たようなことをしているけどね。
> >最初の管理者が決まるからこそ
> それが決まっているからこそ、
> 1234<>ID<>pubkey:...<>sign:...<>target:admin<>admin:管理者情報
> のpubkeyだのsignだのが意味をもってくるわけでしょう?
よく意味が分からないけど。今の話の中心は最初の管理者の指定なのだけど?何か重要なの?
> >ある操作を実現するメカニズムと操作の意味をしばしば混同する傾向があるね…
> それを分離して考えるのがあなたの傾向ですね。
もちろん。混同してはおかしくなるからね。これは「考え方の違いでどちらも正しい」と言う類のものではなくて、
明確に「分離して考えるのが正しく、混同して考えるのは間違い」なのだけど。
もちろん一度分離して考えた後、再度結合するのであれば問題ないが、最初から混同して考えてしまうのは
設計のやり方として好ましくない。
実のところ板名のネーミング(ユーザー指定か乱数かというやつ)をペンディングにしていたのは、この件が
頭に引っかかっていたから。taraditonalのファイルのネーミング規則を変えるなら、1行目のハッシュかな。しかし
それには一行目に乱数を入れる必要があり、それにはタグ形式の拡張をしなければならない。
もちろん管理者とかの指定のためにもタグ拡張は必要。乱数はなんでもいいのか。ファイル名はハッシュ値の
16進数(現在のIDと同じもので)で問題ないか。こしたことをぼんやり考えていたので、とりあえず放っておいた。
>1行目のハッシュ(ID)をファイル名にすること。
実はMD5をIDにしたときに、このアイデアは考えていました。
そのときは乱数で十分だと思ったし、
0.2ではファイル名<->タイトルの変換ができた方がよいだろうと考えたので、
そのままになってます。
もしこのアイデアをとりいれるとしたら、
0000<>ID<>メタ情報
0000<>偽造<>メタ情報
の判別がスマートに行えますね。
>明確に「分離して考えるのが正しく、混同して考えるのは間違い」なのだけど。
それが正しいと信じているのなら、それこそあなたの設計思想なのでしょう。
お、これは相当いいアイデアです。
「0000<>ファイル名<>メタ情報」をメタ情報レコードとして扱う。
とし、似た形式の「1234<>ID<>admin:管理者情報」等は
アプリケーション層の記述であるとする。
thread_foobar というファイル名はどうあってもメタ情報のIDにはなり得ないから、
「これはメタ情報を含まない構造をしている」ということを明確に宣言できる。
>thread_foobar というファイル名はどうあってもメタ情報のIDにはなり得ないから、
>「これはメタ情報を含まない構造をしている」ということを明確に宣言できる。
はナシ。以下に訂正。
0000<>ファイル名<>内容
というレコードがなければ、そのファイルはメタ情報がないファイルである、と解釈する。
ファイル名というのはファイル名全体なのか、
prefix_foobar のfoobar部分なのかはどちらがいいと思いますか?
試作品をtradgwの新月最新版に上げておきました。
tradgwでのファイル名のつけかた、乱数の使いかた、
メタ情報がない(=スレッドのタイトルがわからない)ときにどうふるまうのかを示しました。
>>701 > >1行目のハッシュ(ID)をファイル名にすること。
> 実はMD5をIDにしたときに、このアイデアは考えていました。
> そのときは乱数で十分だと思ったし、
> 0.2ではファイル名<->タイトルの変換ができた方がよいだろうと考えたので、
> そのままになってます。
Wikiスタイルでもファイル名の一部にハッシュをつけることは可能だと思うよ。Thread_タイトル_ハッシュという形で。
この場合1行目に乱数を入れるわけにはいかないけどね。
> >明確に「分離して考えるのが正しく、混同して考えるのは間違い」なのだけど。
> それが正しいと信じているのなら、それこそあなたの設計思想なのでしょう。
思想ではないと思うよ。正しい答えにたどり着くための分析手段だから。まあ数学とかも思想だというなら
思想家も知れないけど(笑
分析した結果何が望ましいと考えるかは思想に属するだろうけれど、分析手段自体は中立なものだ。
>>703 > 0000<>ファイル名<>内容
> というレコードがなければ、そのファイルはメタ情報がないファイルである、と解釈する。
> ファイル名というのはファイル名全体なのか、
> prefix_foobar のfoobar部分なのかはどちらがいいと思いますか?
このレコードの中にある「ファイル名」とは「内容」のハッシュと等しい、というのは維持されていると考えていいんだよね?
まさか任意の文字を許すわけじゃないよね?
>>704 > 試作品をtradgwの新月最新版に上げておきました。
> tradgwでのファイル名のつけかた、乱数の使いかた、
> メタ情報がない(=スレッドのタイトルがわからない)ときにどうふるまうのかを示しました。
ちょっとプログラムを読んでる時間がないから、日本語でざっと書いてよ^^;
readme.jaはとりあえず読んだけど。
>>706 >レコードの中にある「ファイル名」とは「内容」のハッシュと等しい、
>というのは維持されている
当然です。それはstrictフォーマットの下にある、通信層の文法によって規定されます。
>>707 スレッドを作るとする(板も同様)。
0000<>ID<>スレタイ<>nop:乱数による16文字英数字
というのがヘッダレコード(メタ情報を記録する行)。
このIDがそのままスレッドのファイル名になる(プレフィクスなし)。
スレッドを表示しようとする。
もし1行目が0000<>ならばそれはヘッダレコードであるからスレタイを取得する。
そうでなければヘッダレコードが欠けている状態なので、
スレタイのかわりにファイル名を用いる。
互換性のためIDのチェックはしない。
tradgwにとってのスレッドは、本来ならばヘッダレコードがなければならないので、
上の処理は例外処理にあたる。
だから「ヘッダレコードがあってもなくてもよい」フォーマットでの挙動とは
意味合いが違うのだけど、参考にはなるはず。
で、このヘッダ情報レコードがファイルの先頭にあるというのはOK?
>>710 タイムスタンプが0000なので、先頭にきます。
もし変なIDを持っていれば通信層で弾くことができますね。
また、先頭のレコードが「ヘッダレコード」なのか「単なる記事」なのかを明確に区別できます。
>>709 > 0000<>ID<>スレタイ<>nop:乱数による16文字英数字
traditionalでいまメニュー、板、スレッド、で規定されているフィールドの数が違うよね。
気持ちとしてはタグ拡張を行う際に挿入するダミーフィールド(空のフィールド)を調整して「タグ:データ」が始まる
フィールドが何番目なのかを合わせたい気がしている。常に7番目以降、とかね。(板なのかメニューなのかを
気にして何番目からタグ付フィールドが始まるかを決めなければならないのはいやなので。)
ただフィールドの数を現行のプログラムで何かに使っている箇所があったような気がするので、これがペンディングしていた
もう一つの理由。これってどうなんだっけ?メニューや板のレコードで空のフィールドが後ろに付いててもOK?
> このIDがそのままスレッドのファイル名になる(プレフィクスなし)。
> スレッドを表示しようとする。
うーん、それはどうかな。例えば管理人指定のBBSのファイルのはずなのに、何かのアクシデントでヘッダフィールドが
欠けてしまった場合、それを管理人指定なしの正常なBBSファイルとして扱っていいものなのか?という話。
あまりよくない気がする。セキュリティ関係では「あってもなくても」という”柔軟性”は危険。
その一方で従来のファイル(当然これらはヘッダレコードとファイル名が一致しない)はそのまま扱えなくてはならないので、
何となくtraditionalもファイル名のネーミングを工夫する必要があるかも知れない。ファイル名と一致するヘッダレコードが
無いのは「無くていい(従来のファイル)」のか「あるべき(拡張版のファイル)」なのにアクシデントで無くなったのっか、を識別するための。
>>712 >ただフィールドの数を現行のプログラムで何かに使っている箇所があったような気がするので、
あるけど、これはタグありに対応するよう変更できたはず。
>セキュリティ関係では「あってもなくても」という”柔軟性”は危険。
その辺はファイル名の命名規則に吸収する問題かと。
ヘッダがなくてもよいファイルなのか、なければならないファイルなのかは
プレフィクス(か別の何か)で指定する。
>何となくtraditionalもファイル名のネーミングを工夫
自分はtraditionalは廃止の方向だけど、残すつもりですか?
思い出した。
>ただフィールドの数を現行のプログラムで
使ってるけど、バグ持ちなので正しくフィールドの数を取得できていません。
>>713 > あるけど、これはタグありに対応するよう変更できたはず。
では、どのファイルのレコード(1行目を含む)も6個に足りないものは空のフィールドを入れて、7番目からタグ付フィールドが
始まるとしても大丈夫?
> その辺はファイル名の命名規則に吸収する問題かと。
なのでtraditionalのネーミングをペンディングにしていたという話なんだけどね。
実のところどうネーミングするか困っているのだけど。strictと同じように「XXXX_ハッシュ」にするのが
簡単だけどそれだとアンダースコアの有無でstrict/traditionalの区別ができない。まあ「スラッシュを
含まないかXXXX_で始まるか」とかで判別してもいいんだけどね。なんか節操がどんどん無くなってく^^;
とはいえWinnyとかのように%で始めるというのも、あまりファイル名に変な文字を使いたくないし。
> 自分はtraditionalは廃止の方向だけど、残すつもりですか?
もちろん。すでにある掲示板を切り捨てられないからね。
選択肢としては「traditonalのみ/traditionalとstrictの両方」のどちらかを考えているけど?
で、strictの以降のコストが低いなら拡張機能はstrict側に実装しようかと思って、
それで前回strictの移植を検討していたのだけど、ちょっと現段階だと時期尚早という印象なので、
やっぱり当面はtraditionalかな、と考えている。別にstrictに後ろ向きというわけではないけれど、
現実問題としてすぐにはstrict対応できないから。
とはいえ、「traditionalの拡張はしてほしくない。strictに移行してほしい」という強い要望があれば(それはそれで一理あるから)、
考えを変える余地はあるよ(もちろん私が納得すればの話だけど)。
まあ多分わかっていると思うけど、私はstrictフォーマットは現段階ではそれによるメリットと互換性を秤にかけた場合、
コストパフォーマンスが甚だ悪いと考えている。strictフォーマットで現状可能なことはtraditionalフォーマットの拡張で
可能だからね。strictフォーマットのメリットはタグなしとタグありを区別する処理がない分だけプログラムが作りやすいだけ。
それについても両方をサポートするのであれば、メリットにならない。
少なくとも私は自分のプログラムをちょっときれいにするだけのために互換性を切り捨てようとは思わない。
その一方で「きれいな」新フォーマットでやりたいというあなたの気持ちも分かる(私だって煩雑なよりは
シンプルな方がいい)から、この部分は正直、葛藤してるんだけどね。
まあ、正直どっちでもいいのですよ。
自分としてはstrictの開発に没頭したいので、
traditionalの対応はあまりやりたくないという事情はありますけど。
ただ全く切り捨てるのも不親切なので、一応tradgw.cgiがある、と。
だからstrict/traditionalの区別などをエレガントに処理することには魅力を感じてなくて、
泥臭くてもいいんじゃないの、とは思う(アンダースコアの有無なんて、まさに泥臭いでしょ?)
あとこれはバランス感覚の問題なんで、お任せするけど、
そろそろtraditionalの拡張が破綻しかけているような気はする。
無理に拡張せずに、strictを待つのも手ではある(あくまであなたの判断にお任せする)。
>strictフォーマットのメリットはタグなしとタグありを
>区別する処理がない分だけプログラムが作りやすいだけ。
あ、これは誤解かな。
プログラムのつくりはあまり変わらないです。
単にパーザの書き方なんで。
自分にとって重要なのは文法の簡潔さ・美しさであって、
「署名はタグつきなのに添付ファイルのサフィックスは無名フィールドである」
という現状には正直耐えられない。
念のためいえばtraditionalのファイル名のネーミングというのはあくまでハッシュをどう表現するかの話。
Wikiスタイルのようにファイル名にタイトルを入れるというような機能をtraditionalの延長でサポートするかそう言う話ではないので、念のため。
strictt対応を今回見送ったのは、タグだけの話であればtraditional用のプログラムに手を加えて両用にすることも可能かと
おもっていたのだけど(これはこれで煩雑な処理になるけどね)、UTF8までとなると、Crescent内部でEUC、SJIS、UTF8の3つの
文字コードを相手にしなければならず、気が萎えたため。ここまでの煩雑さを受容してまでstrict対応するメリットが現時点では感じられない。
>>720 > 自分にとって重要なのは文法の簡潔さ・美しさであって、
だからそれも広い意味で「プログラム」の話だよ(笑
コーディングだけがプログラムではない。まあ「設計」だけどね
>>721 >ファイル名にタイトルを入れる
それはやめておいた方がいいですね。私も賛成です。
文字コードがしんどいというのがよくわかりませんが、
この際なので高位strictフォーマットの文字コードはUTF8であると定義します。
改めて書きますが、strictにメリットがあるかどうかというと、私自身ないと思いますよ。
HTMLだって誰もが4.01strictやxhtml1.1に移行するようなメリットがあるかというと、ないでしょう?
>>719 > そろそろtraditionalの拡張が破綻しかけているような気はする。
> 無理に拡張せずに、strictを待つのも手ではある(あくまであなたの判断にお任せする)。
ん〜私としては現状なら全く問題のない範囲なのだけど。この辺の感覚が違うのかもね。
多分普段相手にしているプログラムもあなたと私ではずいぶん違う気がする。
無用な泥臭さはもちろん回避すべきだけど、泥臭さを回避することが最優先の目的になってしまっては
私は本末転倒だと思っている。
泥臭さを本体にこびりついた汚れと考えている人が多いけど、基本的にあらゆるものは漸次的に進化していくのだから、
泥臭さこそが実は本体なんだよ(笑)。これは私の*思想*にすぎないけどね。
>>723 > HTMLだって誰もが4.01strictやxhtml1.1に移行するようなメリットがあるかというと、ないでしょう?
いやそんなことはないと思うけど。それらはメリットがある。少なくともメリットを享受する人がいる。
個人が自分のHPを書いているでけの場合はあまりメリットを感じなくてもね。
一方新月のstrictについては、誰もいない。今のところは。まあ将来性に対する投資と考えられなくもないけれど、
それは今のところ私の目からは未知数なので。むしろstrictの投資が回収可能になる前にstrict2とかが出そうな気もするし^^;
>>723 > 文字コードがしんどいというのがよくわかりませんが、
Jannyが頭にあるのでね。どこで文字コードを変換するか(あるいは最後までしないか)が頭が痛い。
UNICODEとSJIS(やEUC)の変換は可逆でない文字があるので(逆変換しても同じにならない。)、
なるべくUIの直前まで変換をしたくないとうい思いがある。その一方でぐちゃぐちゃのJaneにSJIS、EUCの
他にもう一つ文字コードを追加するのは覚悟が必要。最近ハングル用にUNICODE対応の亜流Janeも
あるようなので、それを参考にした方がいいのか、とかいろいろ考えることが増える。
余談だけど煩雑さの限界を超えている、といえばJaneこそ私の許容量を超えているね。
Main.pasに何でもかんでも突っ込むからMain.pasのソースが400KB近くあるし。誰かJaneをゼロから書き直す
勇者はでてこないものか…(泣
技術的な話ばかりでついていけない人
手を挙げて゚ρ゚)ノ ゚ρ゚)ノ ゚ρ゚)ノ ゚ρ゚)ノアイアイアイアイッ
作者自身が「新月」じゃなくて、こっちに書くのは
まだ実用レベルに達してない証明
>>730 だからこそ、面白いんじゃないか。
PerlわからんけどROMってて面白いよ
すいません、質問です。
datとcacheの中に「%BB%E4%B1%E5%B6%D8%BB%DF.dat」みたいに、
文字化け?したファイルがあるんですがこれは正常なんでしょうか?
板やスレッドを開こうとしてBad arguments or No data.になったとき
ファイルが作られてるみたいなんですが。
クライアントはCrescent v.0.0.11です。
>>730 でもなんかプログラムにかける思いというか情熱みたいなものは伝わってくる。
この板で今一番読んでて面白い。
>>734 異常です。
本来ファイル名には「半角英数字とアンダースコア(_)」しか使えないのですが、
新しいファイルを作る際にその辺のチェックを怠った実装がありました(今でもあるのかな?)。
そういうファイル名の板は読めませんので、メニューから削除してください。
737 :
734:04/02/22 00:30 ID:o3X/FgYu
>>736 素早い解答サンクスです。
わかりました、削除の方やってみます。
ファイルそのものも削除した方がいいんだけど、
Crescentの場合はどうするのかな?(本家は単に削除するだけなんだけど)
>>736 Crescentは未だにノーチェック。柔軟だから^^;
>>735 漏れもそう思ってた。
PCは好きだが、こんな風に立ちageの現場に立ち合うことって
ほとんどない仕事についてるので、新鮮で興味深く読んでる。
>>739 %B2%B6%A4%CE%A5%AD%A5%F3%A5%BF%A5%DEみたいにURLエンコードされたファイル名ならともかく、
「私怨禁止」とかいう日本語のファイル名で問い合わせがあるのはいかがなものか(w
そういえば自分の中ではファイル名とフィールド名は半角英数字またはアンダースコアとしていて、
ファイル名については0.1でのゲートウェイの使いかたのファイルにのみ記述していたわけだけど、
0.2の仕様に組み込んでもいいよね?
742 :
[名無し]さん(bin+cue).rar:04/02/22 00:54 ID:VxG6AKNU
Crescentで特定のスレッドを見に行くと、PCが無茶苦茶重くなることがあるんですが・・・
よりにもよって Delphi版新月 Part2(106) とか(つД`)
>>741 > 「私怨禁止」とかいう日本語のファイル名で問い合わせがあるのはいかがなものか(w
ブラウザのPOSTの形式に柔軟だから^^;
まあ冗談はこの辺にして当然チェックしなくちゃいけない。私が実装をサボっているだけ。
> そういえば自分の中ではファイル名とフィールド名は半角英数字またはアンダースコアとしていて、
> ファイル名については0.1でのゲートウェイの使いかたのファイルにのみ記述していたわけだけど、
> 0.2の仕様に組み込んでもいいよね?
ですな。あと仕様についてはperlのプログラムは最近読んでないし、cgiも単にダウンロードしてきて動かしているだけなので、
こことかで日本語で語られた部分しか私は把握していないので。念のため。
>>742 Indy版を作ってみた。もう少しでアップする。さてどうなるものか…^^;
終了時にアプリケーションエラーが出ることがあるのだが…
745 :
742:04/02/22 01:22 ID:VxG6AKNU
宜しくお願いします(;´Д`)ハァハァ
3f1aaf97 :名無しさん [] Sun Feb 22 01:29:25 2004
Crescent v.0.0.12 修正箇所
・ソケットライブラリをIndyに変更。
ソースのコンパイルにはIndy9.0が必要。
d9ce9f6f :◆N/bHz7OnCro [] Sun Feb 22 01:30:27 2004 1077381027.zip (379KB)
Crescent v.0.0.12 実行ファイル
15405faa :◆N/bHz7OnCro [] Sun Feb 22 01:30:57 2004 1077381057.zip (229KB)
Crescent v.0.0.12 ソース
Indyの使い方が悪いのかしらないが、なんか若干重い^^;
748 :
742:04/02/22 03:12 ID:VxG6AKNU
0.0.12でも直らないです(つД`)
さっき報告忘れてましたが、0.0.11だとメモリ使用が70Mに膨れあがったり
してました(0.0.12では未確認)
>>748 OSの種類は?あと遅くなるだけでハングはしない?タスクマネージャのCPU使用率はどうなってる?
放っておけば元に戻る?
あのスレは添付ファイルが沢山あるからサイズがデカい。ただし一度表示するとhtmlとzipに分解されるから、
二回目以降はそこそこの速度で表示されるはずなのだけど。
思い出したよ。フィールドが7個あるか否かを判断に使っている所。sage指定の処理。
どうしたものかね^^;
751 :
742:04/02/22 09:27 ID:VxG6AKNU
Win2000+sp3 CPU:セレ2G Mem:512M です
遅くなるだけでハングには至りません
CPU使用率は一分近く99%のままです。
他のプログラムは極力止めた状態です。
一分くらい我慢すると表示されたので、戻るボタンを押して再度スレに入ってみたのですが、
状況は同じでした・・
CPU使用率が99%になるのは11も12も同じなのですが、11は殆ど固まったような状態になったのに対し、
12は重いだけで済んでいます。
>>751 1分たったらCPUの使用率は元に戻るの?
2回目以降でも同じ?
ちなみに回線速度は?
あと、その状態で他の無難なスレを読んだ場合普通に読める?
Crescentのあるフォルダにdatやfileというフォルダと一緒にcacheというフォルダが作られているか見て。
その中に*.webとか*.zipとか*.jpgとかが作られてる?
754 :
742:04/02/22 09:53 ID:VxG6AKNU
サイズが大きいからかも知れないと言うことで、datフォルダの中から一番大きいものを捜して
試してみました。
あの国 の あの国の動画集 や あの国の画像集 がそれぞれ20M、10M有りましたが、
表示するのに1秒とかかりませんでした。
念のためレコードを削除してから開いてみましたが、時間はかかるもののCPU占有率は
大体50%位にしか上がりませんでした。
(通信時は受信量に比例してCPU占有率が上がり、受信完了したら一瞬だけ99%になって
スレが表示されました)
もうひとつ。
可能ならインターネットに接続できない状態にしておいて、dat\node.txtファイルを一時的に別の名前にリネームして、
問題のスレを開いてみてくれない?
次にcacheフォルダを別な名前にリネームして、同様に問題のスレを開いてみて、cacheフォルダが新たに作られ、
その中にいくつかファイルが生成されるかを見てほしい。
その後もう一度スレを開いて、速度とCPUの使用率を比べてほしい。
756 :
742:04/02/22 09:56 ID:VxG6AKNU
一分経ってというよりか、それくらいの時間でスレが表示されて
元に戻ります。
二回目以降も同じです。
回線はADSL12M、実質で↓400k位はでてます。
無難なスレは普通に読めてます。
キャッシュフォルダの中にはちゃんと.web等も出来てます。
さらに
中程にzipファイルをjpegの拡張子でつけているレスがあるのだけど、このレスを削除して(Crescentで削除しても、
*.datファイルをエディタで直接編集してもどちらでもいい)、どうなるかを見てほしい。(削除前のファイルはとっておいた方がいいかも)
6ef86266 :yorimichi [] Mon Feb 9 07:56:49 2004 1076281009.jpg (489KB)
あとは…少々面倒なのだけど、このスレの.datファイルをエディタで徐々に削っていって、どこまで小さくしたら
軽快に表示できるかを見てほしい。その時にデータの量が問題なのか、データの内容(添付ファイルやトリップ)が
問題なのか2つの可能性があるから、原因がサイズに依存するのか、内容に依存するのかも。
例えばファイルを前半と後半にわけて、それぞれ表示させてみる。それでも表示が遅ければ前半のファイルをさらに半分にしてやってみる。など。
この時1行目は特別なデータが書かれているので、もし後半部分を試す場合も、1行目だけは元の行を入れておく必要がある。
またdatファイルを書き換えた後は毎回キャッシュフォルダの内容を消してほしい。
#好き勝手要求してるけど可能な範囲でいいから^^;
759 :
742:04/02/22 10:14 ID:WktNIGZy
>dat\node.txtファイルを一時的に別の名前にリネーム
変わりませんでした。
ちゃんと計ったら一分ではなく三分位99%の状態が続いていました。
で、cacheを試す前にふと問題のスレのdatをエディタで開いてみたとkと。。。
先頭の方が妙なバイナリで埋まってました(つД`)
後半も妙な感じに・・・
表示される書き込みが、ゲートウェイ通したとき見たものの
途中から始まってるので妙だなと思ってたんですが・・・
で、その妖しいdatファイルを削除してみたところ、正常に表示されるようになりました。
お騒がせして済みませんでした。
インターネットとの接続を切るのが難しければ、dat\node.txtを消して、file\initnode.txtの中身を空にすれば、
外部に接続にいかないはずなので、これでもいい。
>>759 う、その壊れたファイルってもう残ってないんだよね…。ちょっと中身を見たかった気が^^;
はて…なんで壊れたのだろうか…
当然ファイルシステムはNTFSだよね。
762 :
[名無し]さん(bin+cue).rar:04/02/22 10:22 ID:WktNIGZy
ファイルシステムはFTFSです
保存してあるのでアップしてきます
763 :
742:04/02/22 10:30 ID:WktNIGZy
764 :
[名無し]さん(bin+cue).rar:04/02/22 10:32 ID:WktNIGZy
7Mでした(汗
>>763 サンクス。とりあえず落とした。なんかデタラメなデータっぽいね。はて。
766 :
742:04/02/22 10:48 ID:WktNIGZy
では消させて頂きます。
極窓に入れたらtgzって・・・
>>766 なんとなく圧縮転送されたデータが展開されずに書き込まれているような気がする。
ただ、それがどの時点で起こったのかは不明。もともとそういうデータが送られてきたのか、
受信時に何かの原因でミスってそのまま書き込まれたのか(これは考えにくい)。
今の実装だとIDをチェックしていないから。ちゃんとしないとダメだね^^;
>>750 うん、そこなんだけど、実はそれほど問題ではない。
というのは、(現行のUIでは)板を更新時刻順に並べるということがないから、
sage適用タイムスタンプを(間違った値で)求めておいても使われない。
これから何かに利用するというのなら、真面目に考えないといけないけど。
ちなみにPerlでは「1234<>ID<><>sage<><><>」を<>で分解すると、
要素数4の配列になってしまう。これが以前書いたバグあり、ということ。
>>769 > うん、そこなんだけど、実はそれほど問題ではない。
> というのは、(現行のUIでは)板を更新時刻順に並べるということがないから、
> sage適用タイムスタンプを(間違った値で)求めておいても使われない。
> これから何かに利用するというのなら、真面目に考えないといけないけど。
最初この部分の処理を見た時「なんじゃ、この泥縄的な処理は」と思ったけど^^;
(そうそう、それで印象に残ってたんだ)
sage指定はアプリ層が処理すべきことなのに、この部分は通信層ともアプリ層とも
どちらともつかない処理になっているのが何ともね。通信層に「レコードの数を取り出す」
「最新のレコードの日付を取り出す」といったAPIがあってもいいけれど、
それと「sage指定されてない最新の発言の日付を取り出す」というAPIは別。後者はアプリ層のAPIだから。
もっとも私はsage指定はいらないような気がしているけどね。
> ちなみにPerlでは「1234<>ID<><>sage<><><>」を<>で分解すると、
> 要素数4の配列になってしまう。これが以前書いたバグあり、ということ。
そんなことないと思うけど?連想配列として扱うからそうなるだけで、普通の配列として扱えば、
要素7の配列になるはず。
>>770 もともとsageの処理が反則的なんですよね。
でもそこまでしても誰も使ってない(w
自分自身なくてもいいと思ってる。
いっそのこと廃止しようかな。
>そんなことないと思うけど?
いや、そうなるんですよ。
バージョンによるのかもしれませんが。
dayomon:~% perl -e '@_=split /<>/,"1234<>ID<><>sage<><><>"; warn 0+@_'
4 at -e line 1.
>>771 がーん、確かになった。失礼。
しかし…splitって末尾の空を無視するの?^^;
773 :
742:04/02/22 18:52 ID:WktNIGZy
splitが駄目なら正規表現で無理矢理
$a = '1234<>ID<><>sage<><><>';
$a =~ /([^<]*)<>([^<]*)<>([^<]*)<>([^<]*)<>([^<]*)<>([^<]*)<>([^<]*)/;
@b = ($1, $2, $3, $4, $5, $6, $7);
きたな(つД`)
破損datファイルがまだあったので、簡易チェッカ作って調べてみたら
まだ二つ壊れているものがありました。
見つけ次第消しましたが、破損datが他のノードに悪影響を与えたりするんでしょうか
調べてみたらsplitに第3引数を指定すると末尾を切り捨てないくなるらしい。Perlの勉強になった^^;
perl -e '@_=split /<>/,"1234<>ID<><><>sage<><><>", -1;warn 0+@_'
>>773 > 見つけ次第消しましたが、破損datが他のノードに悪影響を与えたりするんでしょうか
微妙なところ。GETにはファイル全体を取得する形式と、各発言一つ一つを指定する形式がある。
前者はそのファイルを最初にGETする時のみ用いられる。
壊れたdatは他から前者のGETで要求されるとそのまま応答してしまう。後者の場合はIDとか
タイムスタンプが一致しないから大丈夫。
うーむ。とりあえずIDのチェックを真面目に実装しないと^^;
このスレ文字数が多いなw
圧縮データを圧縮データと見なさない可能性として一番高いのは、Crescentの場合HTTPヘッダの
解釈部分を手抜きしているので、その識別子が厳密に一致しないとまずい箇所が多々ある。
Content-Encoding: gzip
の指定は大文字小文字の違いを無視したり、gzipの前後のスペースを無視したり、しなければならないのだけど、
手抜きをしているので、上記の文字列に正確に一致しないとCrescentは圧縮形式だと見なさない^^;
実はIndyに移行するついでにこの辺りをちょうど書き換え中だった。
とりあえずその実行ファイルをうpした。(作業途中のファイルに近いのでソース無し)
44f9dd1d :◆N/bHz7OnCro [] Sun Feb 22 19:29:11 2004 1077445751.zip (359KB)
Crescent v.0.0.12.1 実行ファイル
httpヘッダの解釈をちょっとだけ真面目にしたもの
>>774 なるほど!
第3引数は知ってたけど、可変個のフィールドに分解するときは-1を指定すればいいんですね。
で、結局sageは廃止しました。
そのためもしかするとおかしなことになってるかもしれないので、
みなさんテストお願いします。
>>773 正規表現の文字列が顔文字に見えてきて困る^^;
>>711 話を蒸し返して悪いけど、やっぱヘッダレコード(タイムスタンプ0のレコード)って、通信層がを積極的に処理しないとだめじゃない?
1)ファイルを取得しようとしたけど失敗
とりあえず空のファイルを作って同期処理に任せる
2)SYNC処理は現在の日付から一定時間過去まで遡ってレコードを要求。
3)それと前後してUPDATE要求が来ればそのレコードを追加。
2)の処理でヘッダレコードを要求するか否かの判定は、どうするの?
自分が持っているファイルにヘッダレコードが無い場合、現在の日付とかに関わらず、常に要求してみるしかないよね。
もちろんそのファイルに最初からヘッダレコードがあるかないかを通信層が知っていれば別だけど、それはアプリの領域で通信層は知るよしがない。
となれば常にヘッダレコードがある、としないとヘッダレコードの無いファイルを自分が持っている場合、常に日付による取得の他に、とりあえず
ヘッダレコードを相手に要求してみる、という処理を行わないとならないと思うのだけど?
#「ヘッダレコードがない」ことに妙にこだわる余り、考えなきゃならないことを増やしている気がしてならないのだが…^^;
783 :
[名無し]さん(bin+cue).rar:04/02/22 23:00 ID:WktNIGZy
>>781-782 「本来ヘッダがなければならないのに、何らかのアクシデントでヘッダがない」
という例外処理の問題ですよね。
これはアプリケーション層に吸収させるべきだと思うけどな。
あるアプリケーションは「無視してよい」とするかもしれない。
別のアプリケーションはヘッダが必要になった時点で(syncに似た)問い合わせをするかもしれない。
また別のアプリケーションはファイルそのものが信用できないと判断するかもしれない。
↑は表示するときをイメージしてますが、
データが届いたときに、それがトリガになって
アプリケーションが動作するというモデルもありだとは思いますけどね。
0.2での自動削除はそういう感じのモデルです。
通信層の処理ではなくて、削除情報管理を呼び出してる。
>「ヘッダレコードがない」ことに妙にこだわる余り、
>考えなきゃならないことを増やしている気がしてならないのだが…^^;
それはその通りですよ。
極論すれば「ヘッダレコードがない」ことが実現できるのなら、
処理がどんなに複雑になっても構わない、というのが本音なので(w
なぜなら名前つきフィールドの哲学って「あってもなくてもよい」なんですよ。
例えば記事に本文があるかないか、それはbodyというタグがあるかないかで判断できる。
traditonalのように空のフィールドを置く必要がない。
それゆえに空の(または冗長情報の)ヘッダが必要というのは一貫性がない。
それとヘッダに管理情報を入れて云々というのにあまり乗り気ではないという
個人的事情もあるにはあるのだけど。
例えば「hoge_fugaはヘッダが必要で、管理者情報を持ち、彼には強制削除権限がある」という
アプリケーションがあったとします。
このファイルについては
・そのレコードが削除情報と署名を持っているかを調べ
・管理者情報と照合し
・ローカルの設定に応じて削除を行なう
という一連の処理を、投稿があるたびに行なう必要があります。
(まとめて処理するという手もありますけどね)
ならばそのファイルのデータを取得したときに(/get/hoge_fuga/0-)
・そのレコードがヘッダではない
・ヘッダを持っていない
というときに、そのデータは壊れているとしてマージしない、という処理もできるはずです。
>>783 > 何処の板にも属さない、スレからしか入れないスレが出来ますw
> 実害はないかも知れませんがバグっぽいのでご報告を
ん〜特にそれを積極的にエラーチェックで弾こうとは思っていないけど。
まあUIから削除できないといえば出来ないけど今のところは気にしていない。
どのみちいずれはdatフォルダのメンテナンスツールとか必要だと思うし。
>>784 > 「本来ヘッダがなければならないのに、何らかのアクシデントでヘッダがない」
> という例外処理の問題ですよね。
いや、通信層が「ヘッダレコードがあれば必ず取得できる」ことを保証していないのだから、
これは異常な状態ではない。単にまだデータが到着していないという状態。
問題は「到着していない」のか「最初から無い」のかを通信層が判断できないこと。
となれば「もしかしたらあるかも知れない」という判断で常に他のノードにリクエストし続けるしかないわけ。
「ヘッダは他のデータに先んじて取得しなければならない」「ヘッダは常にある」という前提で処理すれば
ごく当たり前に処理できる。
> これはアプリケーション層に吸収させるべきだと思うけどな。
「ヘッダが到着していない」=「必要なデータが揃っていない」と表示するのはアプリの仕事だね。
しかし今話しているのは通信層がどう振る舞うべきかということ。
> あるアプリケーションは「無視してよい」とするかもしれない。
もちろん。その場合「通信層は必ずヘッダを要求するが、アプリはそれを使わない」というだけ。
> 別のアプリケーションはヘッダが必要になった時点で(syncに似た)問い合わせをするかもしれない。
何度も言うように「あってもなくてもいい処理と「無ければならない処理」は混在が難しい。
そして今問題にしているケースは混在が不可能。
> また別のアプリケーションはファイルそのものが信用できないと判断するかもしれない。
> ↑は表示するときをイメージしてますが、
それでいいと思うよ。ヘッダが届いていなければファイルはまだアプリが扱える状態ではない=アプリにとっては
存在しないのと同じ、ということだからね。これはまさに私が想定していることだから。
> データが届いたときに、それがトリガになって
> アプリケーションが動作するというモデルもありだとは思いますけどね。
それはヘッダではなくて別なレコードでやればいい話。
> 0.2での自動削除はそういう感じのモデルです。
> 通信層の処理ではなくて、削除情報管理を呼び出してる。
ん?よく話が見えないけど、少なくとも私は自動削除を通信層の処理だとは考えていないよ。
それはアプリそのものか、アプリの直下ぐらいに位置する。
> それはその通りですよ。
> 極論すれば「ヘッダレコードがない」ことが実現できるのなら、
> 処理がどんなに複雑になっても構わない、というのが本音なので(w
相応の理由が無い限りそんなものに他者の賛同が得られるとは考えない方がいいと思うよ。
もしあなたがそれが大事なのだ、と考えるなら、その意義の説明に手間をかけるべきだと思うね。
> なぜなら名前つきフィールドの哲学って「あってもなくてもよい」なんですよ。
はて、今はヘッダレコードの話をしているのだけど。それと名前付フィールドは独立した話だよね?
> 例えば記事に本文があるかないか、それはbodyというタグがあるかないかで判断できる。
> traditonalのように空のフィールドを置く必要がない。
これはいいけど、そこからどうして
> それゆえに空の(または冗長情報の)ヘッダが必要というのは一貫性がない。
この結論が出てくるのかサッパリ分からない。ヘッダというのは何度か述べているが、ファイル全体に対する
記述なのだから、その他のレコードとは位置づけが異なる。ファイル上は便宜的に同じ形をしていても論理的な
構造は同じレベルにはない。
メタヘッダ(ヘッダがあるかないか、本文があるか無いか)
ヘッダ
本文
記事1
記事2
という形が本来のデータ構造であり、それが表面的に
ヘッダ
記事1
記事2
となっているのは便器的なものに過ぎない。例えばファイル名のネーミングでヘッダの有無を示す、とかは
ファイル名のネーミングが一種のメタヘッダとなっている。
ヘッダはあれば必ず取得取得すべきもので、ヘッダの有無は通信層が解釈する部分。いってみればタイムスタンプやIDと同じ。
タイムスタンプやIDはたとえアプリが使わなくても「無くてもいい」わけにはいかないよね?
あなたの考えているモデルは表面的なものに惑わされて本来の構造を見誤っているように思えるけど^^;
> それとヘッダに管理情報を入れて云々というのにあまり乗り気ではないという
> 個人的事情もあるにはあるのだけど。
ちょっと話は違うけれど、Xウィンドウの開発ポリシーに「我々が提供するのはメカニズムでありポリシーではない」というのがある。
Xウィンドウのシステムそのものは特定のウィンドウマネージャーやデスクトップ(当時はそういう概念が希薄だったけど)から中立である、ということ。
カーネルからウィンドウシステムからウィンドウマネージャー、はてはアプリまで統合的なシステムを提供しているWindowsとは対極にある考え方といえる。
もちろんどれを選ぶかはその人のポリシーだが、私はXウィンドウの開発ポリシーが好きだね。
まあ、何にせよ、現在のstrictの仕様ではヘッダを必要とするアプリは実装できないと思うね。
通信層の不手際をアプリが取り繕ってあらためてSyncをユーザーが命じなければならないというのは、およそエレガントとは言い難い。
>>785 > 例えば「hoge_fugaはヘッダが必要で、管理者情報を持ち、彼には強制削除権限がある」という
> アプリケーションがあったとします。
> このファイルについては
> ・そのレコードが削除情報と署名を持っているかを調べ
> ・管理者情報と照合し
> ・ローカルの設定に応じて削除を行なう
> という一連の処理を、投稿があるたびに行なう必要があります。
> (まとめて処理するという手もありますけどね)
> ならばそのファイルのデータを取得したときに(/get/hoge_fuga/0-)
> ・そのレコードがヘッダではない
> ・ヘッダを持っていない
> というときに、そのデータは壊れているとしてマージしない、という処理もできるはずです。
いや、そういう話をしているのではなくて(別に上の様な処理をすること自体には反対しない)、
基本的に「このファイルを読みたい」と最初に指示しておけば、運がよければすぐに完全なファイルが
手にはいるし、ちょっと運が悪ければ何回か後のSync処理で自然に完璧なファイルが用意される、
というのが、もっとも望ましい形だよね。
それに対してヘッダレコードについては一回目で取得に失敗すると、2回目以降は通信層はリトライができない。
普通に考えれば設計の欠陥と思うのだけど、それを敢えて享受するだけのメリットが何もないという話。
このスレ1日見なかったら続き読む気なくなっちゃうな
>>624 > > それと、たぶんCrescent(の古いやつ?)だと思うのだけど、
> > 「スレッドの1行目のIDが空」というケースがあります。
この件だけどv.0.0.8〜v.0.0.9だね。ID生成の処理の位置を変えたのだが、スレッド作成とかの処理を直していなかった。
ところで新月の昔の版の4桁のIDの計算方法おしえて。
ce02e93c :◆N/bHz7OnCro [] Mon Feb 23 03:28:28 2004 1077474508.zip (349KB)
Crescent v.0.0.13 実行ファイル
ce708c7c :◆N/bHz7OnCro [] Mon Feb 23 03:30:53 2004 1077474653.zip (228KB)
Crescent v.0.0.13 ソースファイル
作者さま〜中身がCrescent v.0.0.10 だよ。
再度アップした^^;
2chと同じ表示形式にしてちょ。
日付は04/02/23 03:20 とかのほうがわかりやすいぽ
なんで話が噛みあわないのかな?
>単にまだデータが到着していないという状態。
これこそ異常な状態。ヘッダレコードは特別なレコードだから。
よって
>常に他のノードにリクエストし続けるしかないわけ。
はありえない。
>ヘッダレコードについては一回目で取得に失敗すると、
>2回目以降は通信層はリトライができない。
それは実装の問題に過ぎない。
>現在のstrictの仕様ではヘッダを必要とするアプリは実装できないと思うね。
ならば「ヘッダが必ず存在するフォーマット」を定義して、
それに基くシステムを開発してください。
>>800 英語表記はPerlの標準機能でできて楽なので、ごめんなさい。
>>801 > なんで話が噛みあわないのかな?
> >単にまだデータが到着していないという状態。
> これこそ異常な状態。ヘッダレコードは特別なレコードだから。
だからそれを通信層が認識していないのが問題なのだけど?
アプリから見た状態と通信層から見た状態を混同している。
「ヘッダが必ずなければならない」と要求しているのはアプリだか、
通信層はそれを保証していない。その齟齬を問題にしているのだよ。
勢い通信層の代わりに人間やアプリがエラーチェックとリトライをしなければならない。
> よって
> >常に他のノードにリクエストし続けるしかないわけ。
> はありえない。
ありえないということこそあり得ない。いってみればアプリがSync処理をしているようなもので、
その理屈ならそもそも通信層が定期的に起動しているSync処理も不要で、アプリが直接やればいいことになる。
それをおかしいと思わないのが不思議なのだが…
> >ヘッダレコードについては一回目で取得に失敗すると、
> >2回目以降は通信層はリトライができない。
> それは実装の問題に過ぎない。
ヘッダレコードが必要なのか、そして存在するのかを通信層は分からないのだから、論理的にこの問題は解決できない。
従って実装の問題ではなく、論理的に実装不可能な仕様の問題。
> >現在のstrictの仕様ではヘッダを必要とするアプリは実装できないと思うね。
> ならば「ヘッダが必ず存在するフォーマット」を定義して、
> それに基くシステムを開発してください。
また例によって短絡的な結論に走ってるね^^;あなたは「哲学」とか「思想」という言葉を思考停止の道具として使っている。
いずれにしても現状のstrictの仕様だと移行は難しいね。共通のアプリの仕様というふれこみだったから、私もなるべく
その方向で検討したのだけど。少なくとも「仕様に問題があった場合、それを変更する」心の準備が
あるか否かを最初に明確にしてほしかったけどね。心の準備がないのであれば、それを”共通”のフォーマットと
いったり、移行を促すような発言はすべきでないと思うけどね。
> 英語表記はPerlの標準機能でできて楽なので、ごめんなさい。
Delphiはわざわざ自分で英語表記の日付を作ってるよ(笑
ロケールを変えればいいのだけど、これを変えると期待しないところまで変わりそうだから。
>>802 >アプリから見た状態と通信層から見た状態を混同している。
違う。ヘッダレコード以前に0000<>という時点で特別なレコード。
なぜなら「現在から○○日以前までのデータを取得する」という処理では
どうあっても0000<>は取得できず、/get/hoge_fuga/0-
で取得するしかないため。
>「仕様に問題があった場合、それを変更する」
問題があるとは認識していない。
あなたは「ヘッダレコードは必ず存在した方がいい」という前提にたっており、
それを説明するための方便として今回の話題を出しているのではないか?
それだと「単なる例外処理のために仕様を変更したがっている」としか見えなくなってしまうよ。
そもそも
>共通のアプリの仕様
段階のstrictフォーマットは低位strictフォーマット、すなわち
「レコードは(日付,IDを除き)順不同の名前付きフィールドから成る」
でしかなかった。
それにヘッダ、署名層、文字コードなどを含ませたのはあなたではないか。
>>804 > >アプリから見た状態と通信層から見た状態を混同している。
> 違う。ヘッダレコード以前に0000<>という時点で特別なレコード。
だから…特別だから、特別扱いしなくてはならないのに、特別扱いしないのが問題なのだけど?
実際に実装する気になって考えてみれば、実装できないのがわかるよ。
> なぜなら「現在から○○日以前までのデータを取得する」という処理では
> どうあっても0000<>は取得できず、/get/hoge_fuga/0-
> で取得するしかないため。
だからその部分を変える必要がある、という話をしているのだが…
現在のtraditionalの話をすれば、traditionalのアプリは先頭にタイムスタンプ0のレコードがあることを前提としているのに、
通信層はそれを保証していない。通信層は自分が持っているファイルの先頭にタイムスタンプ0のレコードがあるかを
チェックし、もしなければ他のデータ(タイムスタンプが0でないレコード)を読むのをやめ、優先的にタイムスタンプ0の
レコードを読むように動作すべき、という話。これが私が機能からいっている「通信層はタイムスタンプ0のレコードを
特別扱いしなければならない」という話。
で、strictは同様の問題があるうえに、そもそもタイムスタンプ0のレコードがない可能性があるから、上のtraditionalと
同じ方法では対処できない、という話。
あなたはいつも私の話を門前払いして、その先を話させてくれないから、本題を話のにえらく手間がかかる。
賛成なのか反対なのかはともかく、とりあえず相手の話をもう少し前向きに聞いてもらいたいものだ。
聞いた上で「やっぱり反対」と結論しても損はないと思うけどね。
> >「仕様に問題があった場合、それを変更する」
> 問題があるとは認識していない。
それを検討している最中に「気に入らなければ使うのをやめろ」というような言葉を相手に吐くのが問題だとは思わないの?
> あなたは「ヘッダレコードは必ず存在した方がいい」という前提にたっており、
> それを説明するための方便として今回の話題を出しているのではないか?
もちろん。それがないと実装できないアプリがあるのだからね。それも架空の話ではなくて、いままさに
実装しようとしている管理者付BBSをstrictでは実装できないから、こうしていっていうのだが?
> それだと「単なる例外処理のために仕様を変更したがっている」としか見えなくなってしまうよ。
実際にそういう状態は起こるわけで、それに対処できない、という話。
変にうがったとらえ方をせず、もうすこし素直に相手の話を聞くべきだと思うよ。
そもそも「アプリが通信層の代わりにエラーリトライをすれば何とか対処できないこともない」などと
無茶なことをいい、その一方で「ヘッダレコードを置かない」ことの理由を「ただの哲学」というあなたの方が、
よほど無茶な主張だと思うけど?冷静に自分の主張をふり返ってみるべきだと思うよ。
> 段階のstrictフォーマットは低位strictフォーマット、すなわち
> 「レコードは(日付,IDを除き)順不同の名前付きフィールドから成る」
> でしかなかった。
> それにヘッダ、署名層、文字コードなどを含ませたのはあなたではないか。
ではtraditionalでは必ず存在するタイムスタンプ0のレコードがstrictでは存在してもしなくてもいい、と
規定しているのは誰のどの規定なのだね?あなたのstrictフォーマットの規定以外ないと思うのだが?
strictが見かけはどうであろうと、通信フォーマットのtraditionalからの変更を行っているのだから、それはstrictフォーマットの
責任者に起因すると考えるのが普通と思うが?それ以外誰にいえばいいというのだね?
あなたは自分で決めたstrictフォーマットがどの範囲に影響するかも正確に認識していないのだろうか。
結局の所私は、ヘッダ情報を必ず必要とするアプリ=管理者付BBSを実装しようとしている。
そのためには、そのアプリはヘッダ情報が必ず取得できなければならない。ノードの接続状況などで
すぐに取得できない場合があるのはいいが、いずれは取得できる必要がある。
そのために通信層の代わりにアプリが常駐してポーリングするのはいくらなんでも不可。
traditionalであれば上述の変更を通信層に加えればこの問題はクリアできるし、その変更は
新月の通信の規格から逸脱していないと考えているので、Crescentはこの変更を行うことを
予定している(この変更がそもそも新月の通信層の振る舞いとして承伏しがたいというなら、
また話は別だが、これについてはあなたも同意してくれると予想している。)
一方、traditionalではこの変更ができない。ファイル名などから*通信層が*ヘッダの有無を
予測するとかすれば別だが(通信層がアプリの都合に煩わされるのは望ましくないが、
次善の策としては考えられる)。
アプリがポーリングというのは論外だし、通信層がファイル名を見て云々というのも、煩雑さがますだけで、
strictはtraditionalに比べて、このアプリを実装するのに甚だ不便というのが私の評価。
これらの欠点が改善されないのであれば、strictはこうしたアプリには不向きな規格としか評価しようがないので、
私は採用できない。
あなたはstrictの欠点を改善してより広いアプリ向きなものにするか、strictはこうしたアプリには不向きな
規格だから、そいうアプリ用にはtraditionalを継続して使うことを推奨するか、どちらかを選ぶべき。
私としてはstrictをもっと柔軟なものにしてもらいたいのだけどね。そうすればあなたのアプリと私の
アプリのデータの相互乗り入れの敷居も低くなるというもの。異なるアプリ間でもデータにはタグが付いているから、
自分の知っているタグのデータについては共有できるとか、用途が広がると思うのだけどね。
(とはいえ文字コードまで変えてしまったのは痛いが)
しかしこうしたことよりも何よりも「私はとにかくヘッダがないことが最優先だ」というなら、しかたないだろうね。
私から見ればすごくスケールの小さなことにこだわってせっかくの新月の可能性を狭めている気がするけどね。
>本題を話のにえらく手間がかかる。
最初から本題を話していただきたい。
>traditionalでは必ず存在するタイムスタンプ0のレコードが
>strictでは存在してもしなくてもいい
ヘッダに言及しない低位strictの上に「存在しなくてもよい」高位strictがある。
ならば「存在しなければならない」というあなたのフォーマットがあっても
何ら不自然ではない。
あなたの主張は低位strictと高位strictをごっちゃにしている。
>Crescentはこの変更を行うことを予定している
これは問題がない。どんどんやってほしい。
>私は採用できない。
採用するしないは完全にあなたに任されている。
>しかしこうしたことよりも何よりも「私はとにかくヘッダがないことが最優先だ」
>というなら、しかたないだろうね。
要するに、そういうことですよ。
補足
自分が「様々なアプリケーションで使ってほしい」と言っていたのは
低位strictフォーマットのことです。
だからといって、これを押し付けるつもりはないので、念のため。
>>808 > >本題を話のにえらく手間がかかる。
> 最初から本題を話していただきたい。
話しているつもりなんだけどね。もちろん説明不足なところはあるかも知れないが、こちらとしては
あなたが理解した上で反論しているのか、理解していないから反論しているのか、はあなたの
受け答えを元に判断するしかないのだから、それらが適切でなければこちらも適切な説明をできない。
ごく当たり前のことなんだけどね…^^;
> ヘッダに言及しない低位strictの上に「存在しなくてもよい」高位strictがある。
> ならば「存在しなければならない」というあなたのフォーマットがあっても
> 何ら不自然ではない。
> あなたの主張は低位strictと高位strictをごっちゃにしている。
ヘッダの有無は上で述べたように通信層の振る舞いに影響するのだから、あなたが考えるような
アプリのためのフォーマットではない。影響範囲が通信層とアプリの両方にまたがる。
別に私が「ごっちゃにしている」のではなく、そもそも両方にまたがる問題なのだよ。実態がそうで
あるにもかかわらず、いくら「これはアプリのフォーマットとして決めたからアプリ層の話なんだ」と
いったところで、問題が消え去るわけではないから(苦笑
> >しかしこうしたことよりも何よりも「私はとにかくヘッダがないことが最優先だ」
> >というなら、しかたないだろうね。
> 要するに、そういうことですよ。
つまり私がこれまで述べたようなアプリはstrictにはそぐわないからtraditionalかあるいは別なフォーマットを
使うべき、ということでいいんだね?
(´-`).。oO(マターリやってくださいな…)
>>809 > 自分が「様々なアプリケーションで使ってほしい」と言っていたのは
> 低位strictフォーマットのことです。
> だからといって、これを押し付けるつもりはないので、念のため。
あなたのフォーマットの問題の本質は「ヘッダの有無」は通信層が規定すべきことなのに、それをアプリ層が規定していることなんだけどね。
例えばレコードにはタイムスタンプとIDが必ずついている。これは通信層にとって必要だからついているわけで、それをアプリ層の規定として
「タイムスタンプとIDはあってもなくてもいい」と決めましたといったところで、なんの意味もない。
それと同じで、ヘッダレコードは通信層にとって必要なのだから、それをいくら「アプリ層の規定として”あってもなくてもいい”と定義しました」と
いったところで、意味がないのだけどね。アプリ層が自分の領分を超えた部分について規定をしているところに根本的な原因があるのだけどね。
要するに矛盾した規格は取り入れられないということなのだが。
(´-`).。oO(開発なんてこんなもんでしょう)
(´-`).。oO(複数人のプロジェクトで意思の疎通が難しいのはしょうがない)
(´-`).。oO(互いの人格の叩き合いにならなければ問題なし)
(´-`).。oO(・・・ま、プログラムってある程度の技術以上は)
(´-`).。oO(センスの問題になるので、仕方ないんだけど・・・)
(´-`).。oO(ふと思ったんだが、レスつける時に対象発言が記号列なのはコピペしないとめんどくさいので)
(´-`).。oO(表示時に番号に自動置換して、書き込み内容の>>数字をIDに自動で戻すとかあったらいいな)
>>815 私もそう思う^^;そのうち実装したいとは思っている。
何より通し番号でないと元の発言が差がしにくい。
ただ、番号にする場合、どこまでを置換するかが問題で、2chブラウザとかだと相当柔軟に対応しているから。
例えば
>>1は当然として>1とか>1とか
>>1とあ>>1とか。
まあこんなものまで対応するのが異常なんだけどね^^;
また完全に通し番号だけにしてしまうと、他にコピペした時に分けが分からなくなるから、
>>1[abcdefg]とかのように
IDと併記にしておく必要があると思われる。
あとは内部的な話で、ユーザーが発言を書いている最中にSyncが行われると、番号がずれる可能性があるから、
厳密にやるにはユーザーの指定した番号がどの時点のdatファイルなのかを何らかの方法で管理する必要がある。
これが結構やっかい。Jannyでは内部にキャッシュしているから、それにもとづいてやればいいので、Jannyでは
やろうと思っているけどね。
>つまり私がこれまで述べたようなアプリはstrictにはそぐわないから
>traditionalかあるいは別なフォーマットを使うべき、ということでいいんだね?
そうです。
もちろん「無理をして」高位strictを使っても構いませんけどね。
>>817 > そうです。
> もちろん「無理をして」高位strictを使っても構いませんけどね。
あのさ、私が何をしたいかはこれまでの説明で分かっているはずなのだから、最初からそういってくれない?
結局の所、strictを採用しないと言うことはヘッダの扱いに関して通信層のSync処理が共通化できないということなのだから、困るのだけどね。
Wikiタイプのアプリと管理人BBSタイプのアプリを考えた時に、片方のアプリ向けの機能しか通信層に実装されていない、というだけならそれほど
大きな問題ではないが、現在の場合、論理的に一方に対応した通信層は他方に対応できない、ということなのだからね。
困ったものだ。
しかしそうしたデメリット(私にはずいぶんと大きなものに感じるが)を押しのけてでもあなたが「ヘッダをつけたくない」というのでは、
私として絵は不本意ながら、そうするしかないね。
>あのさ、私が何をしたいかはこれまでの説明で分かっているはずなのだから、
>最初からそういってくれない?
↓
>捨て台詞みたいだけど「気にいらないのなら勝手にやってくれ」としか言えません。
>ならば「ヘッダが必ず存在するフォーマット」を定義して、
>それに基くシステムを開発してください。
ところでP2PWebって画像を入れたりもできるの?
念のためもう一度整理しておくと、ヘッダを常につけておけばWikiタイプのアプリにも管理人付BBSタイプのアプリでも通信層は一つで対応できる。
しかしヘッダをつけてもつけなくてもいい、という仕様では、ヘッダが不要なアプリ向けの通信層とヘッダが必須のアプリ向けの通信層の処理は
同じにはならないからアプリ毎に通信層(のSync処理)が必要となる。かえずがえすもあなたが層(レイヤー)というものについて無頓着なのが残なんだね。
>>821 その後でもあなたはstrictはヘッダがあってもなくてもいいと規定しているから問題はないと主張しているよね?
>>823 「勝手にしろ」というのにあなたが納得しないから、妥協案を示したまでですが?
非生産的な話はやめましょうよ。
>>821 > ところでP2PWebって画像を入れたりもできるの?
先に添付ファイルとして画像をカキコしておいて、そのURLを相対指定でimgタグに指定すればできるね。
P2P Webの原理的な部分は既存の処理の組み合わせで実現できるが、UIの方が厄介。
それとは別に投稿時に複数の添付ファイルを許すように(ついでにファイル名を指定できるように)拡張することも考えているが、
これもどちらかというとUIの部分がネックになっている。「参照」ボタンを考えられる限り沢山つける、というのでは見苦しすぎるし。
zipとかでまとめてアップロードさせるという手もあるけど今度はCrescent側の処理が複雑化する。まあそれもしかたないかな、とも思うけどね。
>>824 > 「勝手にしろ」というのにあなたが納得しないから、妥協案を示したまでですが?
その妥協案が妥協案になっていないのが問題なのだが?私のやりたいことは伝えてあるのだから、
それが実装できないのでは妥協案にならないと思うけど。
> 非生産的な話はやめましょうよ。
あなたは必要だと思ったから824の弁明を書いたわけだよね。私も必要だと思うからこの文章を書いている。
新月はBBSノードが落ちても書き込めるんですか?
>>827 ネットワーク中に1人でもキャッシュを持っている人がいて、
その人と通信できれば書き込めます。
0.2のWikiスタイルではキャッシュがなくても書き込めます。
>>827 それがWinnyより優れている点。その代わり自分のカキコが確実に他人に転送されているかの保証がないけどね。
特にポートを開けていないと、誰にも書き込みが伝わらなくなります。
自分で見る分には分からないんだけど。
しばらくしてからゲートウェイから確認できたら確実に拡散してるってことか。
さっそくインストールしようと思ったんですけど
いきなりapolloのコンパイルに失敗しました。
factor.c:2:17: gmp.h: No such file or directory
In file included from factor.c:3:
factor.h:65: error: 文法エラー before "x"
...
とかズラズラと
>>832 gmpをインストールしてください。
そのほか必要なライブラリがあるので、くわしくはREADME.jaを読んでください。
>>832 factor.hにこれ入れるの忘れてた。
#include <gmp.h>
使ってるところではfactor.hの前にgmp.hをインクルードしてるから、ライブラリ入れてたら問題なく通ると思うけど。
835 :
[名無し]さん(bin+cue).rar:04/02/24 15:18 ID:JYzKmopx
ゲートウェイにアクセスできない・・・_| ̄|○
ポト0だから、Crescentとかうまく使えないし・・・
838 :
832:04/02/25 00:03 ID:CpCRb3Kr
なんとか動かすことができました。テスト中です。
これはすぐの話ではなく、かつそれほど強い要望ではないけど(実際私もすぐには実装できないから)、
GETとHEADの範囲パラメータに複数の範囲を指定できるようにしたい。
一番の目的は
HEAD/0+100000-
とかやりたい(要はヘッダと最近という指定)。
またそれとは別に現在は最初の一括取得以外は事実上1レコード毎にGETを発行するしかなく、小さいデータを細切れに転送すると
gzip圧縮とかがあまり有効に働かない気がするので。
ただ指定の表記方法が今一よい案が思いつかない。
GET/100000/aaaaaaaa+1000001/bbbbbbbb+1000002/cccccccccc
とかになるのだろうか…どうも無理矢理という意図がにじみ出ている^^;
>841
>HEAD/0+100000-
うーん、やりたいことはわかりますが、それだけのために/headを拡張するのはどうもね。
>GET/100000/aaaaaaaa+1000001/bbbbbbbb+1000002/cccccccccc
何らかの基準によって /get/100000- 等を発行すればよいと思います。
自分の持っているレコードとの重複の度合いとか。
もちろんCrescentが「Crescentのプロトコル」ということで
独自の拡張をするのはアリだと思いますよ。
>>842 私の方はいずれ前向きに考える予定。必要なら相手が対応版のCrescentかを確認してコマンドを送る。
どのみち未対応のバージョン(これはCrescentの旧版も含めて)の識別は必要だから。HEADについては2回コマンドを
送るのが何ともね^^;GETのマルチレコード取得はいずれ必要だと思う。範囲を大きめに指定するのは現実的でない。
余分に指定したレコードにたまたま大きな添付ファイルがついてると悲惨だから。
あと、自分が対応していないコマンドが来た場合の振る舞いを決めておいた方がいい気がする。
Crescentはおおむね長さ0のレスポンスを返すが、この時Content-Length: 0をつけて返すか返さないかが
あまり統一されていない。単に何もせずにソケットをクローズしているだけのことが多く、その場合ヘッダがつかない。
しかしContent-Lengthをつけないとファイルの終わりが明確に分からずソケットのクローズ処理が完了するまで
待つことになって、あまり効率がよくない。なので、基本的にはContent-Lengthをつけた状態で長さ0のレスポンスを
返すようにすることを考えている。これなら要求側は速やかに失敗だと分かるので。(もちろん対DoSとかの処理は
この限りではない)
>>843 ふむ。で、基本的に拡張部分はそれに対応したバージョンにしか送らないようにするけど、
間違って自分が知らないコマンドが来た場合、「正しく無視する」必要がある。もちろんCrescentも。
基本的にセキュリティ的な意味で敢えて別な振る舞いにする場合は除いて、知らないコマンドは長さ0の
レスポンスを返すように努めるのがいいと思うのだけど、如何?
ところでちょっと聞きたいのだけど、新月の0.2とかで自分が既に持っているデータを送信する時に、
旧形式のIDをIDを現行の形式(ハッシュ)につけ直して送る、とかそれに類することやってる?
レコード0をしつこく取得する機能を入れてランニングしていたら、なんか旧形式のIDと新形式のIDと
両方のレコードが貯まっていくようなのだけど…それともCrescent側のバグなのかな。
ならば /head/0 を確認するまでもなく、
/get/0 または /get/0/ファイル名 ができるような気がするのだけど。
>知らないコマンドは長さ0のレスポンスを返す
それがよいと思います。
新月はよほどのことがなければ、そのように処理するはずです。
もし「エラーですよ」ということを明示したいのであれば、
HTTPヘッダに入れてもいいでしょうね(やりたければ、ですが)。
>旧形式のIDをIDを現行の形式(ハッシュ)につけ直して送る、
fuktommy.ddo.jpにあるmenu.datは置き換えました。
レコード0は実験的に(人手で)やったことがありますけど、
当時は「レコード0をしつこく取得する機能」は想定外でした。
ごめんなさい。
>>847 > ならば /head/0 を確認するまでもなく、
> /get/0 または /get/0/ファイル名 ができるような気がするのだけど。
それだとヘッダレコードを無駄に転送することになる。まあ大抵ヘッダは短いだろうけれど、常に短いとは限らないから。
というかあなたは自分が興味がないことは、とことんおざなりだね^^;
あ、ちょっと取り消し。私が前にいった「自分がレコード0を持っていない場合のみ相手にリクエストをする」という説明を元にしているのかな。
それならそう考えるのは尤もな話。
あれからあれこれ考えて自分が持っていないIDであれば取得した方がいいかなと思い直して、
常にレコード0を確認するような動作を今入れている。これは私自身迷いがあるんだけどね。
(´-`).。oO(暇になったらりんごっちにも対応してね・・・janny)
>>847 > >旧形式のIDをIDを現行の形式(ハッシュ)につけ直して送る、
> fuktommy.ddo.jpにあるmenu.datは置き換えました。
> レコード0は実験的に(人手で)やったことがありますけど、
> 当時は「レコード0をしつこく取得する機能」は想定外でした。
> ごめんなさい。
なるほど…
メニューについては、他のスレで「迷惑な話」と書いてしまったけど、よく考えたらファイル
そのものが2つ出来たわけじゃなくて、リンクが2重になっているだけだから、
それほど深刻なものではなかった。あれは私の早とちり。まあ表示がうっとうしいことには違いないが。
レコード0についてはファイル名とハッシュが一致しているファイルは一回それを取得できれば用がたりるけど、
そうでないファイルはとりあえず通信部分は常に取得を試みている(今私の手元にある版は)。複数合った場合
どちらを選ぶかはアプリに任せるようと思っていた。まあでも1個すでに持っていればいいのかな…
何かの拍子に最初に妙なデータをつかまされると二度と再取得しないという点に漠然とした抵抗を感じたのだが、
さほど合理的な根拠があるわけでもないし。
>>850 実は考えてはいる。あれがUTF-8だから、可能なら同時期にstrict対応かな。ただjannyはぐちゃぐちゃだからいじり出すと
集中しないと修正できない^^;ほんとにあれは泣けてくる…
レコード0については
(1) 持っていなければ(/headすることなく)/getしてみる
(2) ファイル名と照合して、おかしければ捨てる
という処理を漠然と考えていたけど、
ファイル名がそれに対応してないとうまくいかないんですね。
>まあ表示がうっとうしいことには違いないが。
あれ、2重に表示されますか?
というのは、240時間より古いレコードは取得しないというのを想定していたので。
(メニューは例外にしてるのかな?)
すみませんがうっとうしければ削除してください>all
>>853 > というのは、240時間より古いレコードは取得しないというのを想定していたので。
> (メニューは例外にしてるのかな?)
特にメニューを特別扱いはしてないけど。
2重になっているレコードを見ると、確かに古い形式も新しい形式もタイムスタンプはかなり昔になっているね。
原因は不明。ただこの240時間というパラメータは(Crescentでは固定だけど)新月はConfigで変更できるよね。
実際私はかなり長めに設定している(もしかして私が原因か?でも私の長めのパラメータでもまだ届かないのだがw)
240時間より古いレコードは取得しないというのはたまたまそうなっている、というだけで、それを前提に何かを
するのは危険だと思うけどね。
全体的にいえば、「レコード0は一度しか取得しない」「240時間以前のレコードは取得しない」というのはたまたま新月の実装が
そうなっているだけで、プロトコルとして規定されていないのだから、それを利用して小細工をするのはあまり賛成できないね。
小細工というのは大抵落とし穴ががあるものだから、なるべく使わない方がいい。あなたはデータフォーマットについては小細工的な拡張を
いやがって新フォーマットに切り替えたのに、こういう箇所では結構泥臭いことをするんだね。
質問なのだけど、書き込み時間に誤差を入れている件。
これは要するに書き込み時間の直後にあるノードからデータが送信されれば、そのノードがカキコした人のノードだろう、と推測されることを
防いでいるわけだよね。書き込み順序が狂うのはいやなので、書き込み時刻は正確にして、Updateの送信とGET、HEADによる取得可能になる
までのタイムラグをランダムに入れようと思う(考え方としては現在スレ立てで一定時間別ファイル扱いにしているのに近い)、これでも特に安全性は
低下しないよね?
>こういう箇所では結構泥臭いことをするんだね。
それは運用レベルの問題だからね。
システムから見た運用レベルでは「何を書いてもよく、何を削除してもよい」なので、
IDやリンクの名前が気にいらなければ直すもよく、
うっとうしければ削除するもよし。
>Updateの送信とGET、HEADによる取得可能になるまでのタイムラグ
「書き込み後、乱数時間が経過すると/updateが送信され、取得可能になる」なら
問題ないはずです。
もし「/updateが送信されたのち、乱数時間が経過すると取得可能になる」という意味なら
逆効果でしょう(念のため)。
これも当時考えたことで、そのときは書き込みに誤差を入れるデメリットと
書き込みの伝播のスタートが遅れるデメリットを比較し、
現在のやりかた(誤差を入れるかどうか選べる)にしたわけですが、
実際問題としてはどちらでもよいと思います。
厳密にいえば「書き込み後、ごく短時間で取得可能になった場合」には
中継していない可能性が高くなってしまいます。
これを問題視するかどうかはお任せします。
>>857 > それは運用レベルの問題だからね。
> システムから見た運用レベルでは「何を書いてもよく、何を削除してもよい」なので、
”新月のシステムが規定する”運用方法はその通り。私が今言っているのは”あなたが選択した運用方法”の妥当性。
つまりものの考え方の話。新月のプログラムは犯罪に利用することを制限していない。
しかし犯罪に使っていいという話ではないという話と同類のもの。
> もし「/updateが送信されたのち、乱数時間が経過すると取得可能になる」という意味なら
> 逆効果でしょう(念のため)。
もちろん。逆にupdateの送信を遅らせただけではその間にgetされる可能性があるから万全とはいえないね。
最初updateの送信の遅延だけで済まそうと思っていたのだけど。
>厳密にいえば「書き込み後、ごく短時間で取得可能になった場合」には
>中継していない可能性が高くなってしまいます。
なるほど、確かにちょっとまずい気がしてきた。
>>854 > 原因は不明。
原因が分かった。私のポカですな。現在リリースしているCrescentはhead/0が要求されると全てのヘッダを返す^^;
範囲指定の有無を開始と終了のタイムスタンプが0か否かで判別しているため。嗚呼恥ずかしい…
しかし困ったな。バグは既存のバージョンの方にあるから新たにリリースしても問題が解決しない(旧版がなくなるまでは)。
もっとも実害はheadのリクエストで余分なデータが返ってくるだけだから致命的ではないが…とりあえずhead/0を発行した場合、
スタンプが0でない情報が返ってきたら無視するかな^^;
>>859 そういえば新月の方で日付の偽造の話もしていましたが、それとも関連しますね。
つまり自分は過去のレコードを書き換えたり、
新しいレコードに過去の日付をつけたりするのは、
(システム上も運用上も)問題はない、と認識しているわけですが、
あなたはそれを問題視しているわけですね。
>>862 > そういえば新月の方で日付の偽造の話もしていましたが、それとも関連しますね。
現実の問題として考えているのは日付を署名対象に含め、配信のための便宜的なタイムスタンプと、
文章を書いた日時というアプリケーション上の日付をわける話のみ。その日付の生成や付け方の方法は
タイムスタンプで使用するものと同じもの(そっちをどうするかが問題なのだけど)にしようと思う。
もちろん配信側の日付に誤差が必要な状態でアプリケーション上の日付を正確に書いたらなんの意味もないから、
配信でやっぱり誤差が必要ならアプリの日付も誤差をつける。配信上誤差が不要ならアプリも正確なものを使う。
その他の話はとりとめなく考えているだけで、実装とするか否かとかいう具体的なレベルには全然なっていない。
> つまり自分は過去のレコードを書き換えたり、
> 新しいレコードに過去の日付をつけたりするのは、
> (システム上も運用上も)問題はない、と認識しているわけですが、
> あなたはそれを問題視しているわけですね。
例えば管理者の認定コマンドを実装するとなると署名付発言でも日付が改変できると、
1)AさんがBさんを準管理者に認定
2)Aさんはその後Bさんの認定を取り消し
という場面で、BさんはAさんの過去のコマンド(Bさんを準管理者と認定)を新しい日付で
自分で投稿することによって、
1)AさんがBさんを準管理者に認定
2)Aさんはその後Bさんの認定を取り消し
3)AさんがBさんを準管理者に認定
となり、再び準管理者になれる。これがちょっとまずい、という話。
一方、とりとめもなく書いた「Aさんが自分の過去の発言を捏造できる」という問題は、
今のところ実害はないし、書いた方法はあまりにも実装コストが大きすぎて現実的ではない。
ただ、もしその目的がどうしても必要ならああいった方法しか実現方法はないんじゃないかな、と考えた。
>「Aさんが自分の過去の発言を捏造できる」
その対応策を見て、IDのツリー構造を作って、
ファイル内でネットニューズやMLみたいな仕組みが提供できるかも、と思った。
管理者認定や取り消しなどは、確かに日付の偽造防止が必要ですね。
現在のトリップルーチンの強度では、投稿から数ヶ月の時間がたてば改竄の可能性が
無きにしも非ずです。それなりの機械で本気になった場合ですが。
2chの書き込みは、書き込み順番、日時、内容を、(管理人の信頼という形で)保護しています。
本来、何らかの発言というのは文脈に沿って解釈されるべきで、単独で保護しても誤解を招く恐れがあります。
Winnyのトリップもそうですが、内容のみの保護だったら、日時順番を狂わせて誤解を招かせることが
不可能ではありません。
簡単な対処法は、全体を保護してしまう、または関連部分をまとめて保護してしまうことですが、
素因数分解の困難性を利用している以上、(技術革新による分解速度向上のため)年単位の保護は無理です。
もし、スレッドの管理に使うつもりならば、本気になった人が、あるスレッドを改竄抹消する可能性が
原理的に存在するので気をつけてください。
本気で外す人はいないだろうという(クラッカーを)なめた桁数なので。
また、一応少しは対処入れましたが、あるアルゴリズムにとって分解しやすい素数に運悪くあたったりします。
>>865 >>865 > その対応策を見て、IDのツリー構造を作って、
> ファイル内でネットニューズやMLみたいな仕組みが提供できるかも、と思った。
2chブラウザの中には>>を追いかけてツリー表示する機能があるものもある。
OpenJaneにはないが、その拡張版のJaneViewにはその機能がついている。
Jannyはこれをベースにしているので、Jannyにもついている。メニュー-検索-ツリー表示でツリー形式の
表示がでる。ただし>>番号を元にツリー化するので、新月のスレッドは正しく表示されない。こういう機能も手直ししたいとは
思っているのだけど、なかなかね。
もちろんHTTPD側でそういう処理をするのも有りだとは思う。というか下位層がp2pの汎用掲示板があるといいんだけどね。
普通は下位層がOSのファイルシステムだけど、それがp2pの通信層。
>>867 > 現在のトリップルーチンの強度では、投稿から数ヶ月の時間がたてば改竄の可能性が
> 無きにしも非ずです。それなりの機械で本気になった場合ですが。
問題なのはスレッドの管理人のトリップが破られることだから、そこそこの時間でトリップを変えて
スレッドも立て直せばいいかな、と漠然と思っている。1024bitのトリップも場合によっては切り替えて使いたい、と
前にちらっといったのはこのことが頭にあったのだけど、まあ新月の作者さんじゃないけど運用面で工夫すれば
512bitでも当面は問題ないかな、とも思っている。
> 2chの書き込みは、書き込み順番、日時、内容を、(管理人の信頼という形で)保護しています。
> 本来、何らかの発言というのは文脈に沿って解釈されるべきで、単独で保護しても誤解を招く恐れがあります。
それはしばしばいわれることなのだけど、究極的には「時代背景」とかも文脈に含まれるよね?
結局何を発言の意味が損われない不可分の単位とするかは論理的には決められない問題だから、
低コストで実現可能なレベルを是とするしかなく、その意味でとりあえずレスが不可分というのは
低コストで実現可能だから、それでいいかな、と安直に思っているのだけどね。
スレッドとなると新月の場合スレッドの全てのデータが揃っている保証がないから難しい。
> Winnyのトリップもそうですが、内容のみの保護だったら、日時順番を狂わせて誤解を招かせることが
> 不可能ではありません。
そういえばWinnyも日付は署名対象外だね。偶然なのかな。まあ単に日付は通信層がつけるから、
署名の範囲に含めにくいだけかな(笑)。なので通信層とは別の日付がほしいな、と思っている。
ただアプリに日付をつけさせると、通信層がやっているような「わざと誤差を混ぜる」というのがやりにくい。
(あまりp2pを知らない人でもアプリ層のプログラムが書けるほうが門戸が広くなるから)なので、日付を
正確にして配信の方で工夫できないかな、とちょっと考えていたのだけど、もう少し考える必要がある。
> 簡単な対処法は、全体を保護してしまう、または関連部分をまとめて保護してしまうことですが、
結局の所スレッド内のレスが全て揃っている保証が新月ではないので、限界があるとは思っている。
ただこの緩やかなデータの同期というのは私は結構気に入っていて、その上でどういう事が可能かを
考えるのも面白いかな、と思っている。ガチガチにスレッド単位でノード間の同期を取るというのもちょっと
芸がない。それだとただのアクセスが遅いファイルシステムと同じだし、つまらない^^;
> 素因数分解の困難性を利用している以上、(技術革新による分解速度向上のため)年単位の保護は無理です。
> もし、スレッドの管理に使うつもりならば、本気になった人が、あるスレッドを改竄抹消する可能性が
> 原理的に存在するので気をつけてください。
ですな。ちょっと話が違うけど「削除」で本当にデータを抹消すべきではないと思っている。少なくとも自動削除とかでは。
アプリにはデータが存在しないと答え、ノード間のデータ同期の対象から外すだけで、実際のデータは消さない方がいい気がする。
つまり削除されたというフラグをつけるだけ。なによりソフトのバグでデータを消去してしまうのが怖いし^^;
> 本気で外す人はいないだろうという(クラッカーを)なめた桁数なので。
一定時間で新スレを立てて管理人のトリップを変えるとか、自動削除を悪用されても最悪人間が手動で復活できるような
形にするとか、「本気ではずす」価値のない形にするのがいいような気がしている。どれくらいの強度が必要かと聞かれた時に
数時間じゃ困るけど1ヶ月ならいいかな、と答えたのはこういうこと。とはいえ1024bitのトリップも作ってくれれば実装するけど^^
> また、一応少しは対処入れましたが、あるアルゴリズムにとって分解しやすい素数に運悪くあたったりします。
ふむふむ。
>>868 > もちろんHTTPD側でそういう処理をするのも有りだとは思う。というか下位層がp2pの汎用掲示板があるといいんだけどね。
> 普通は下位層がOSのファイルシステムだけど、それがp2pの通信層。
の補足。この場合通信層とアプリのインターフェイスはファイルベース。基本的にp2pアプリはdatファイルを直接読み取るだけ。
通信層への指示(レスの投稿とかレスの削除とか新スレの作成とか)はtodo.txtみたいな名前のファイルを作り、そこにコマンドと
データを追記していく。それを通信層のデーモンが読み取り、処理し、処理し終ればtodo.txtからはずす。
これならアプリを組む側はほとんどp2pを意識しなくていい。
私としては惜しむらくは、この形が力を発揮するのは恐らくperl版であってdelphi版ではないと思うこと^^;
トリップの強度といえば、いくら素数の桁数が大きくても、使う人間が「ありふれた文字列」をトリップ元文字列にしたり、
うっかり#とかをつけずに名前覧に書いてバレてしまったり(2chとかでたまにある)という面があるから、結局のところ完全な
乱数をタネにするとか、UIを工夫するとか、トータルで考えないとだめな部分もあるよね…
>>868 > 2chブラウザの中には>>を追いかけてツリー表示する機能があるものもある。
ちなみにこの機能は派手な割にあまり使われていない気がする。というのもJaneには>>番号にマウスを当てると
引用元の発言がポップアップする機能があるので、大抵はこれで用が足りるため。(余談だけど、NYchの管理人が
WinnyBBS用にjavascriptで同じ事をするプログラムを書いてる。javascriptを使いこなすとこんなことまでできるのか、と
感心した^^。WinnyのBBSデータにタグを貼るだけで実現できるというのがすばらしい)
>>873 乱数を種にしてしまうと、トリップキー1つで手軽に認証ができなくなるんだよな…
プログラム的にはそっちのほうが簡単だけど。
1024bitもほとんど変えなくていいから、やるだけならすぐにできるけど、せっかくやるのなら
速度面をちゃんと考えないといけないな…
乗算除算を真面目に書くと速くなるのかな
>>875 > 乱数を種にしてしまうと、トリップキー1つで手軽に認証ができなくなるんだよな…
なのでUIとトータルして考えないとならないという話。トリップは512bitのままにして、より強力な署名は別な手段で使うとか。
当初新月のために専用のモジュールを作ってくれる人が現れるとは夢にも思っていなかったで(これは嬉しい誤算)、最初は
既存のツールを組み合わせてトリップも実装する予定だった。その場合トリップを自分で選ぶことができる目処が立たなかったので、
ツールが生成した秘密鍵を自分のHDDに保存したりクッキーに保存したりという案を考えていた(まあこれも鍵の保存方法として
強度的にどうかと思うけど)。
新月内のどこかのスレでちょっと話題にしたことなのだけどリダイレクタの話。
新月へのURLを擬似的に一意の
http://shingetsu.p2p/gateway.cgi/aaaaaで表そうと思う。
現在新月が[[aaa]]というテキストを<a href="/gateway.cgi/aaa">[[aaa]]</a>と置き換えているように。
これは各p2pソフト間(winnyやringo)で表記を統一するのがねらい。
それぞれのソフトは自分のURLについては自分の都合のいいようにテキストを変換すればいいし、
自分の知らないURLについてはそのまま一般のページと同様にアクセスする。
ローカルPC上にxxx.p2pというドメインに反応できるリダイレクタが起動していればそれを介して目的の
p2pにリダイレクト可能になる。
Ringo(α2)のスレで話してみたら、そこそこ前向きなレスが得られた。
ただstrictとtraditionalで/gateway.cgi/MENUとしてもアクセスされるページが違うから、
shingetsu1.p2pとshingetsu2.p2pの2つURLを用いるしかないかな。
>>878 > 勝手に決めておいて「従え」みたいな印象を持たれると困りますので。
「ほとんど決めない」というのがいいかな、と思っている。この方法が要請するのは、各p2pソフトが
自分が自分の内部のデータの位置を指定する一意のURLを自己申告する点のみ。
いまのところ
p2pのソフト名.p2p
というネーミングを意識してはいるけれど、p2pという部分も必ずしもこれである必要はない。
またこのURLを各P2Pソフトがどう扱うかはそれぞれのソフトに任される。何もしないで一般の
ページと同様に扱うのもいいし、自前で解釈して飛ばすののでもいい。
> 個人的にはver1,2を区別するのであれば
>
http://v1.shingetsu.p2p/ と
http://v2.shingetsu.p2p/ の方がいいような気もする。
ん〜個人的には「好みにあわないけど」けど、その点はあまり重要ではないから妥協してもいい^^;
> そういえばVojtaはVojta特有の事情から
> vojta://example.com/BBS/foo/bar と書くことになってる。
> というのは、自分がfoo/barを持っていれば<a href="/BBS/foo/bar">でいいんだけど、
> 持っていなければ(新月のように取得するのではなく)別のゲートウェイ「example.com」
> にあるfoo/barを表示しなければならないため。
んとそのvojta:の部分は誰が解釈しているの?IEが解釈しているのではないよね?
基本的にこの方法はIEでも見れるページ同士(2ch、WinnyBBS、Shingetsu、Ringoなど)に使えるけれど
p2p内部で閉じているもの(例えばα1のBBS)は適用できない。
Vojtaはよく知らないんだけどIEでも見れるから同じ方法の延長でいいのかな、と思っていたのだけど。
>>878 とりあえずVojtaスレにカキコしてきた。ただ私あまりvojtaの動作をよく知らないので、できればヘルプして^^;
vojtaインストールしたけど動かし方が分からない…^^;
解放するポートとかはどこにあるの^^;
それにしてもjavaのRMIを使ってるんだ…なかなか本格的だが…重厚壮大な気が。
>>879 >ん〜個人的には「好みにあわないけど」けど、
>その点はあまり重要ではないから妥協してもいい^^;
自分も割とどっちでもいいです。
>「ほとんど決めない」というのがいいかな、と思っている。
それには賛成だけど、自由度が高い分、リダイレクタを実装するにあたって苦労しそう。
苦労するのは自分ではないので、割とどうでもいいけど。
>>882 conf/VojtaServantPreference.xml の<ServerPort>。
デフォルトは80
>>883 > それには賛成だけど、自由度が高い分、リダイレクタを実装するにあたって苦労しそう。
う、私は甘く考えてるかも。できれば懸念が予想されるところを教えてほしい^^;
今のところは前述のvojta.p2p/example.com:xxxx/BBS/foo/barで
自分がfoo/barを持っているかどうかの判定くらいしか思いつきません。
あと各開発者がURL表記の仕様を考えたり変更したりする度に
リダイレクタに反映させなければいけないので、
けっこう大変かもしれませんよ、と。
まあ、やってみないと何とも言えませんが。
>>885 > 今のところは前述のvojta.p2p/example.com:xxxx/BBS/foo/barで
> 自分がfoo/barを持っているかどうかの判定くらいしか思いつきません。
それはvojtaのサーバがやることだよね?(よく知らないので純粋に質問なんだけど)
ブラウザは別にそんなことを関知せずにそのURLにアクセスするのではだめなの?
もしそれがだめなのであれば、vojta内のデータを指定することがそもそもできないのだから、
原理的に今回の方法では対応できないと思う。今回の案はもともとp2p内のデータの位置表記が
http://ゲートウェイを指定する部分/ゲートウェイに依存しないデータの位置 となっているp2pに対して、「ゲートウェイを指定する部分」をリダイレクタで置き換えましょう、というものだから。
> あと各開発者がURL表記の仕様を考えたり変更したりする度に
> リダイレクタに反映させなければいけないので、
> けっこう大変かもしれませんよ、と。
そこがよく分からないのだけど。
私は自分に来た
GET /文字列
を
location:
http://自分が知っているドメイン:自分が知っているポート/文字列 に単純に置き換えればいいと思っているのだけど?このパターンでは対応できないものが予想されるということ?
>>886 あ、もしかして
> shingetsu1.p2p/gateway.cgi → /tradgw.cgi
> shingetsu2.p2p/gateway.cgi → /gateway.cgi
> shingetsu.p2pの場合はそれを表示しているゲートウェイと同じものを指します。
こういう部分の話のことかな。それはリダイレクタでは難しいと思うよ。まあやってできないものではないけど。
今回の案はあくまで「ゲートウェイに依存しない位置」が一意でなければならない。
v0.2系の新月で/gateway.cgi/MENUをアクセスした場合とv.0.1系で/gateway.cgi/MENUをアクセスした
場合とでは指定されるデータが異なるのだから、2つのソフトは見かけ上別のp2p扱いになる。異なるp2pで
同じデータを共有することはできない(できるようなものを考えるのもまた面白くはあるけど)から、
v.0.1系で/gateway.cgi/MENUとした時とv0.2系で/tradgw.cgi/MENUとした時のデータは(実際は同じでも)
リダイレクタはそれを同じだとは見なさない。
まあ私が作るリダイレクタは同じものと見なす処理を入れるかも知れないけど^^;
ついで。
> > shingetsu.p2pの場合はそれを表示しているゲートウェイと同じものを指します。
この処理は如何なものかと。例えばそのURLを含んだテキストが2chにコピペされた場合処理できない。
あくまで一つのURLは一つのデータを指し示していないとうまくいかない。
>>887 >それはvojtaのサーバがやることだよね?(よく知らないので純粋に質問なんだけど)
それが、違うんです。
datをhtmlに変換する際に vojta://example.com:8888/BBS/foo/bar とあれば
・自分がfoo/barを持っていれば href="/BBS/foo/bar"
・持っていなければ href="
http://example.com:8888/BBS/foo/bar"
となります。
新月との比較でおおざっぱにいうと、Vojtaは2chのサーバを分散し、
転送や中継で冗長性を持たせた、という感じです。
これを象徴的に表わすのが
http://fuktommy.ddo.jp:8887/ に接続した場合で、
メニューから板をクリックすると複数のゲートウェイからどれを見るかを選べます。
>>888 ん? 思ったより自由度が低いような(それはそれで良いことだと思いますが)。
0.2系の新月はshingetsu2.p2pだけをショートカットすればいいのですか?
でも一部のデータは0.1系の新月と共有しているわけだし、どうすればよいのでしょう?
# tradgw.cgiは適用対象外です。Crescentを別ポートで使ってください。
# というのがある意味すっきりしていますね。
# shingetsu.p2p, crescent.p2p と使いわければいいし。
リダイレクタの担当部分は foo.p2p/bar -> host:port/bar の変換、という解釈でいいのかな?
>>891 >これをするならば、localhost:8000/tradgw.cgiやlocalhost:8000/gateway.cgiまでを
>shingetsu1.p2pやshingetsu2.p2pに対応づけるしかない気もする。
まさにそのあたりが自分の心配していたことなんだけど。
自分としては「ぜひそこまでやってほしい」というわけじゃなくて、
どこまでをやるのか(例えば
>>892)を決めてくれれば、
それに沿う形で内部のショートカット処理をするつもり。
>>893 > まさにそのあたりが自分の心配していたことなんだけど。
なるほど。
> どこまでをやるのか(例えば
>>892)を決めてくれれば、
実のところ私も決めかねているのだけど、どっちがいいと思う?^^;
基本的に対応表の書き方をどこまで許すかという点なので、それは随時拡張されていいと思っている。
後はそのp2pソフトの作者側(この場合は私たちなのだけど)が内部のURLをどう対応づけるかだから。
マッチングのレベルは
1)ドメイン+ポート
2)ドメイン+ポート+パスの先頭(単純な文字列マッチング)
3)ドメイン+ポート+パスの先頭(正規表現によるマッチング)
4)マクロ^^;
が考えられ、とりあえず1)で済ますか、新月のようなパターンに対応するために2)ぐらいが適当かと思う。
対応表の書き方はそれほど面倒でもないかな。
winny.p2p localhost:7744
ringoch.p2p localhost:6000
shingetsu1.p2p/gateway.cgi localhost:8000/tradgw.cgi
shingetsu2.p2p/gateway.cgi localhost:8000/gateway.cgi
別な環境では
shingetsu1.p2p/gateway.cgi localhost:8001/gateway.cgi
shingetsu2.p2p/gateway.cgi localhost:8002/gateway.cgi
こんな感じかな。わりと現実的な気もする。
正直私は最初、文字列置き換えまではオーバースペックと思っていたのだけど、考えてみるとこの方法
(新月の作者さんが現在実装しているもの)が割と現実的な気がしてきた。なのでこのパターンでいいかな^^;
900
901 :
[名無し]さん(bin+cue).rar:04/03/01 13:56 ID:45yJeZp4
HOSTファイルに対応表を組み込むんじゃなかったんですか?
コメントの部分にポート番号を書くと、AlphaのWikiでみましたけど・・・
>>902 > vojtaも
http://vojta.p2p/CMD_BODY_CHOOSEGATEWAY/foo/bar なら書けるかと。
んと、vojtaの場合全体でデータを共有しているのではなくて、グループ毎にデータが共有されているんだよね?
となるとデータの一意性はグループ単位であってvojta全体ではないのではないかと思うのだけど。
丁度shingetsu1.p2pとshingetsu2.p2pの関係がvojtaのグループ毎に成立しているのかな、と。
で、どのグループがどのデータを持っているかはvojtaのサーバント自身しか知らないのであれば、
それに対してリダイレクタができることはない気がするのだけど。従ってグループ毎に疑似ドメイン
(test.vojta.p2pとかanothergroup.vojta.p2pとか)を 設定するしかないのでは?
もちろん文字列の置き換えでtest.vojta.p2pではなくてvojta.p2p/testを置き換え対象にするというのは
ありだけど、いずれにしても対応表はvojtaの個々のグループ毎になる。
>>899 > 関係ないけど、80/tcpをApacheとかですでに使っている人は
> リダイレクタをインストールするのではなく、Apacheの仕組みで
> 実装しないといけませんね。ちょっとやっかいかも。
うん。事実上無理だね…
日付がThu Jan 1 09:00:00 1970:になってるスレがあるんだけどなんでだろ?
>>903 そういう案は出てる。ただ基本的にこれはリダイレクタソフトの実装に依存する部分なので、
リダイレクトソフトによって「自分で専用の設定ファイルを持ちたい」というのもあれば、共通のファイル
(例えばhosts)にしたい、というのもありかと思う。で、共通のファイルにする場合はそのフォーマット
(hostsのコメントに書く形式とか)を検討する必要があり、それはこれからの話。
>>897は対応表に必要な情報を列挙したもので、それをどのファイル(各ソフトのiniファイルや
hostsファイル)にどういう形式で書くかは、今から検討すること。
私はどちらにすべきか(各ソフト個別ファイルかhostsファイルか)迷っているのだけど、どう思う?
もちろんIPをマップする必要からいずれにしてもhostsファイルを書き換えることは変わらない。
ポートや変換文字列もhostsファイルのコメントに書いてしまうか、それらはリダイレクタが個別に持つか…
hostsファイルのコメントに書くなら
>>897の部分がそのままコメント欄に書かれることになるかと。
127.0.0.1 winny.p2p # winny.p2p localhost:7744
127.0.0.1 ringoch.p2p # ringoch.p2p localhost:6000
127.0.0.1 ringoch.p2p # shingetsu1.p2p/gateway.cgi localhost:8000/tradgw.cgi
127.0.0.1 ringoch.p2p # shingetsu2.p2p/gateway.cgi localhost:8000/gateway.cgi
あるいは順序を逆にして、文字列を置き換えない時は省略出来る方がいいかな^^;
127.0.0.1 winny.p2p # localhost:7744
127.0.0.1 ringoch.p2p # localhost:6000
127.0.0.1 ringoch.p2p # localhost:8000/tradgw.cgi shingetsu1.p2p/gateway.cgi
127.0.0.1 ringoch.p2p # localhost:8000/gateway.cgi shingetsu2.p2p/gateway.cgi
>>906 「ファイルの中身がない(かヘッダのみ)が、時間が経つと取得される可能性がある」状態を示しています。
>>911 意義が薄いのはその通りなんだけど、
リダイレクタの枠組みの中で
できるだけのことをすればいいんじゃないかと思う。
それともvojtaのゲートウェイって自分が持っていないスレがリクエストされた場合、
ゲートウェイの選択画面がでて、ユーザーが選ぶと自動的にそのゲートウェイの指定されたスレッドに
自動的にリダイレクトしてくれるの?それならまた話は違うけど。
あ、もし私の理解が違ってたらいってね^^;
>>916 > Vojta全体では/BBS/computer/pc/25rL7wはユニークである。
> (ただし個々のサーバントがそのデータを持っているかどうかはわからない)
> つまり
http://vojta.p2p/BBS/computer/pc/25rL7wはユニークな > データを表わすことができる。
お互い面識のないグループがたまたま同じ名前で違うスレッドを作ることもない、という理解でいい?
すなわちこの場合vojta全体でcomputerという名前が表すグループは一意だし、そのグループの中で
pcという名前も重複しない、ということ?
私はグループにまたがるサーバント間の交渉はなくて、たまたま別々の人間がcomputerという名前の
グループを立ち上げてしまうこともあるのかな、と思ったのだけど。
もっとも理論上ありえても現実的にはそういうことは少ないという前提を立てるのも悪くはないね。
>たまたま別々の人間がcomputerという名前のグループを立ち上げてしまう
それはないはずです。
新月だって全く違う初期ノードを使い、
独立したネットワークを作ることができるわけですが、
現実的には重複はないと思います。
(明文化された仕様で規定されているわけではないので推測の域を出ませんが)
>自分がそのデータを持っている場合はそのまま表示される
>(持っていなければ何も表示されない)
その方がいいですね。
>>919 > それはないはずです。
いや、だから「ない」というのが理論上ないのか現実的にないのか、という話をその箇所の私の文章はしてるのだけど。
> 新月だって全く違う初期ノードを使い、
> 独立したネットワークを作ることができるわけですが、
その場合shingetsu3.p2pとかになるんじゃない?
私が常に意識しているのはプロトコルとかデータのフォーマットではなくて、URLの一意性だから。
その意味で言えば厳密にはxxxx.p2pというドメインはP2Pソフトに付けられた名前ではない。
一つのP2Pが全体で一つの名前空間を共有するのなら両者は一致するけれど、そうでない場合は
名前空間毎にドメインが存在する。
> (明文化された仕様で規定されているわけではないので推測の域を出ませんが)
> >自分がそのデータを持っている場合はそのまま表示される
> >(持っていなければ何も表示されない)
> その方がいいですね。
それをグループ毎にしたのが最初のtest.vojta.p2pとかpc.computer.vojta.p2pだったのだけどね。
>>920 > > 新月だって全く違う初期ノードを使い、
> > 独立したネットワークを作ることができるわけですが、
> その場合shingetsu3.p2pとかになるんじゃない?
とはいえ新月は積極的に他の名前空間のノードを拒否しているわけではないから、この点曖昧ではあるね。
どこかで偶然両者が出会ったが最後渾然一体となってしまうのだから、少なくともstrictの場合は全ての
ノードで単一の名前空間を共有しているといえる。
traditionalの場合は乱数とハッシュが偶然一致しない限り名前の重複はないから、必然的にURLの
一意性が維持される。
余談だけどスレッド名は最初から乱数だし、最近は板名も乱数なので、そうなるとmenu.datだけなぜ乱数じゃないのか?とも思う。
例えばlocalhost:8000/gateway.cgi/で開くindex.htmlをユーザーに開放し(現在でもCrescentの場合これは外部ファイルになっているから
解放しているようなものだけど)、そこに好きなmenuへのリンクを書いておけば、ユーザーは自分たちでトップページとそれに続くMENUを
選べる。それぞれ独自の世界を作ることが出来る。
>>920 >いや、だから「ない」というのが理論上ないのか現実的にないのか、
>という話をその箇所の私の文章はしてるのだけど。
>>919は文意があさってに行ってますが、
言いたかったのは「現実的には重複はないと思います。」
>それをグループ毎にしたのが最初のtest.vojta.p2pとか
>pc.computer.vojta.p2pだったのだけどね。
前にも書いたけど、この場合でいえば
「test.vojta.p2p」と「vojta.p2p/BBS/test」のどちらを使いますか、という話。
自分は判断しかねます。
>menu.datだけなぜ乱数じゃないのか?
後方互換性(w
メニューにはヘッダレコードもない。これも後方互換性(w
>例えばlocalhost:8000/gateway.cgi/で開くindex.htmlをユーザーに開放し
漠然とは考えていました。
新月の場合は設定ファイルでどのメニューをデフォルトにするかを選べるようになってます。
実際にはあまり使われることはないと思いますが。
>>922 > 前にも書いたけど、この場合でいえば
> 「test.vojta.p2p」と「vojta.p2p/BBS/test」のどちらを使いますか、という話。
> 自分は判断しかねます。
私が問題にしてたのは対応表をいくつ書くか?という点。結局グループの数だけ必要ということ。
何しろどのサーバントがどのグループに属しているかはリダイレクタは知りようがないので、ユーザーが
対応表に列挙して教える必要がある。(もちろんリダイレクタが内部でサーバントに問い合わせて…というのは別ね。)
> メニューにはヘッダレコードもない。これも後方互換性(w
ないんだよねえ、困ったことに…^^;
> 新月の場合は設定ファイルでどのメニューをデフォルトにするかを選べるようになってます。
そういえばそうだね^^
>>923 > 何しろどのサーバントがどのグループに属しているかは
ちょっと表現が正しくないかな。「どのサーバントがどのグループのデータを保持しているかは」が正しいのかな。
>私が問題にしてたのは対応表をいくつ書くか?という点。
それは実装寄りの問題ですよね。
(1)ユーザに対応表を書かせる
(2)localhostがデータを持っていなければ表示はあきらめる
(3)システムが頑張ってデータを持っているサーバントを探しだす
(4)複合
現段階で1つに決める必要はないかと思います。
さて本題。アドホックな手法ですが、
0.1系と0.2系で名前空間を共有できるようになりました。
/gateway.cgi/THREAD/aaaa のように、THREAD部分が大文字で開始する場合には
/tradgw.cgi/THREAD/aaaa にジャンプさせます。
こうすると google で検索したときに以前のURLでもシームレスにtradgwに辿りつけますし、
shingetsu.p2p/THREAD/aaaa, shingetsu.p2p/thread/aaaa という使いわけができます。
というわけで内部でのショートカットはshingetsu.p2pのみとし、
shingetsu{1,2}.p2p は廃止しました。
http://shingetsu.p2p/gateway.cgi/thread/%E6%96%B0%E6%9C%88%E6%9C%80%E6%96%B0%E7%89%88
>>925 > それは実装寄りの問題ですよね。
いや^^;いくらなんでも、
> (1)ユーザに対応表を書かせる
> (2)localhostがデータを持っていなければ表示はあきらめる
> (3)システムが頑張ってデータを持っているサーバントを探しだす
> (4)複合
このうちのどこまでの機能を提供するかは「実装」の問題として片づけられないと思うけど^^;
現実的に実装できないような仕様を決めても意味ないんだから。
> こうすると google で検索したときに以前のURLでもシームレスにtradgwに辿りつけますし、
なるほど。
> shingetsu.p2p/THREAD/aaaa, shingetsu.p2p/thread/aaaa という使いわけができます。
> というわけで内部でのショートカットはshingetsu.p2pのみとし、
> shingetsu{1,2}.p2p は廃止しました。
いや、だからMENUがそれだと処理できないよね。で、上の方でもMENUについてあれこれ「どうしたものか…」と思案しているわけ。
あ、私勘違いしてた。
v0.2のMENUはパスがgateway.cgi/MENUじゃなくてgateway.cgi/listなんだね。
それなら重複するURLはないから、一つにしてもいいかも。
>>927 >このうちのどこまでの機能を提供するかは
>「実装」の問題として片づけられないと思うけど^^;
今回考えてるのは「簡易HTTPDでLocationで飛ばす」ということだけど、
以前向こうで書いたようにプロキシによる実装もあるわけです。
まず決めるのは「あるリソースをユニークに表わす記述方式」であって、
次にそれをどう実現するかということじゃないでしょうか。
つまりある実装ではlocalhostにデータがなければそれで終わり、
別の実装では対応表を利用してある程度までは処理する、など。
その観点からするとtest.vojta.p2p/BBS/test/vojtaよりも
vojta.p2p/BBS/test/vojtaの方が簡潔でいいですね。
>いや、だからMENUがそれだと処理できないよね。
THREAD,BOARD,MENU,ATTACH,MOTD全部対応してますけど。
↓は念のため。
/gateway.cgi/MENUは/tradgw.cgi/MENUへのジャンプです(今回のもの)。
/tradgw.cgi/MENUは/tradgw.cgi/MENU/menuの別の表現です(以前から)。
記述の方式としては/tradgw.cgi/MENU/foobarなどが考えられ、
これはfoobar.datを参照します。
>>928 というか、大文字小文字で判別してます。
アドホックでしょ(w
>>929 > まず決めるのは「あるリソースをユニークに表わす記述方式」であって、
> 次にそれをどう実現するかということじゃないでしょうか。
うーん、基本的には正しいのだが、やっぱり実装のコストを無視して考えても意味ないと思うのだが。
「優れた仕様」の条件の中には「安価に実装できる」というファクターも含まれるわけで。
> つまりある実装ではlocalhostにデータがなければそれで終わり、
> 別の実装では対応表を利用してある程度までは処理する、など。
> その観点からするとtest.vojta.p2p/BBS/test/vojtaよりも
> vojta.p2p/BBS/test/vojtaの方が簡潔でいいですね。
どこが簡潔でいいのか分からない。前者はドメインの置き換えで済むが、後者は個々のp2pソフトのURLの
表記方法まで前提とするわけだから、あなたが最初に懸念していたようにp2pの仕様変更とかに影響されやすい。
この仕様は何も独立したリダイレクタツールのみならず他のツールや各p2pソフトも付帯的に処理することが
考えられる。
例えばJannyは単独でも(リダイレクタが動作していなくても)自分が知っているp2pソフトについては
自力で処理するつもり。(そもそもこの仕様は現在jannyが内部的に行っていることを表に出したもの。
現在のJannyはwinny1.、winny2、shingetsu.というドメインを内部で割り当てて処理している。)
その意味で多くのツールが対応してくれることを期待するなら、実装の安価さは割と重要だと思うのだけどね。
また正直、どういった仕様が妥当なのか私には読み切れない所があるので、出発点はシンプルなのがいい。
(まああなたはシンプルから出発して継ぎ足し継ぎ足しするようなやり方は好きじゃないのかも知れないけれど、
インターネット関係の技術はほとんどこうした形で発展している。この形こそが正しいw)
> >いや、だからMENUがそれだと処理できないよね。
> THREAD,BOARD,MENU,ATTACH,MOTD全部対応してますけど。
上で説明したとおり。v0.2のMENUのURLを私は/gateway.cgi/MENUだと思っていたから、
それではこのURLがv0.1なのかv0.2なのか区別できない、と考えたわけ。
>>930 > というか、大文字小文字で判別してます。
いや、そう言う話じゃないんだけど、まあいいや。ようするに私の勘違いで、あなたの案でよい、という事。
>自分が知っているp2pソフトについては自力で処理するつもり。
まさにこれですよ。
各実装は自分が知っている(=与えられた)処理だけを行なえばよい。
ただし、その処理をする、というのが仕様なのではなくて、
ある記述が何を意味するのかを定義するのが仕様。
dba5c910 :◆N/bHz7OnCro [] Wed Mar 3 05:34:19 2004 Crescent.zip (372KB)
Crescent v.0.0.15 実行ファイル
5e14f626 :◆N/bHz7OnCro [] Wed Mar 3 05:36:29 2004 src.zip (232KB)
Crescent v.0.0.15 ソースファイル
>>933 > 各実装は自分が知っている(=与えられた)処理だけを行なえばよい。
ん〜
test.vojta.p2p/BBS/test
test2.vojta.p2p/BBS/test2
と書くのと
vojta.p2p/BBS/test
vojta.p2p/BBS/test2
と書くのでは記述している情報量が違う。前者はtestとtest2が同じサーバにはない可能性が
あることをURLが語っているから、ツール自体はvojtaを知らなくても処理できる(その分ユーザが
対応表を書くわけだけど)。一方後者はtestとtest2が同じサーバにない可能性があることは、
そのツールがvojtaがどういうパスの管理をしているかを知らなければ分からない。
つまり上の形式ならvojtaを知らなくてもツールは処理できるが、下の形式はvojtaを知らなければ
処理できない(まあ正規表現の文字列置き換えパターンを対応表に書けばできるかもしれないけどね。)
> ただし、その処理をする、というのが仕様なのではなくて、
> ある記述が何を意味するのかを定義するのが仕様。
一般論としては正しいんだけど、それを個々の事例に適応させる段階に問題があるような^^;
結局リダイレクタの私のイメージはあくまで「ドメイン+ポート」の変換であって、P2Pのフロントエンドであるべきではないと思っている。
それはJannyみたいな別のツールでやればいいこと。まあこれが広まれば(そうあってほしいものだ)あれこれ当初の想定とは
異なることを要求されることもあるだろうけれど、それはその都度段階的に拡張していけばいいことだと思うけどね。
不確定要素の多いものを最初から包含しようとしても無駄になるどころかしばしば害になる。
52d14fe1 :◆N/bHz7OnCro [] Wed Mar 3 06:48:01 2004 Crescent.zip (372KB)
Crescent v.0.0.16 実行ファイル
実行ファイルのみリリース
・Jannyで書き込めなくなっていたのを修正。
リダイレクタの役割は「特殊なホスト名」→「ドメイン+ポート」の変換に絞る、ということですね。
新月の0.1系、0.2系を区別する必要がなくなりましたので、それでよいと思います。
本体が補助ツールに気を遣ってどうするんだよw
46a0858f :◆N/bHz7OnCro [] Thu Mar 4 11:58:56 2004 crescent-0.0.17-bin.zip (373KB)
Crescent v.0.0.17 実行ファイル
7affe4a7 :◆N/bHz7OnCro [] Thu Mar 4 11:59:59 2004 crescent-0.0.17-src.zip (81KB)
Crescent v.0.0.17 ソースファイル
943 :
[名無し]さん(bin+cue).rar:04/03/05 11:31 ID:fUK1K+Vi
,,.-‐'''''' ̄ ̄''''ー、、,
,.r":::::::::::::::::::::::::::::::::::::::ヽ,
./ ' .:::::::::::::::::::::::::::::::::::::::::::`、
/ ::...:::::::::::ハ:::::::::::::::::::::::::::::::::::::',
.!:::::::::::::;i:::;'. '、:::i、:::i、:::::::::::::::::::::::i
!::::::::/i:i.i::i'. '、:i ';::i.`;:::::::::::::::::::::i へ
.!:::::::i_,レ,,Lレ ,,リ,,_リ '、::::::::::::::::::|
i::::::::i ` ``'''''i::::::::::::::::| |
|:::::::! ̄``''' --─‐ i:::::::::::::::|
|:::::::'、 |:::::::::::::::! ち
|:::::::::::`ー、,,__r──-、,、r''i::::::::::::::::i
i:::::::::ハ::::::/ `''i''''''"" / .!:::::::;;::::::i ょ
'!:::::::i ヽ;/ヽ__ L,,,..-/ _,,,,!::::/ ∨
'、::::! i , `>>. ', / >>.レ' i
`' .i i `''=ヽ/=''" i
944 :
ひみつの文字列さん:2024/12/21(土) 02:06:52 ID:MarkedRes
日本国またはアメリカ合衆国、もしくはその両方の著作権法に触れる内容であると疑われることから表示できません。
?
??
(no name)ってスレと板が大量にあるんだが
>>947 昔はスレッドや板に名前をつけなくても投稿できたのです。
削除しても構わないと思います。
なるほど
イイヨイイヨー
なんかもう4スレぐらいたってる雰囲気だったけど
このスレまだ初代スレなんだな。意外
w
956 :
[名無し]さん(bin+cue).rar:04/03/13 19:08 ID:EA0ttKgT
次スレはこっそり立てようね♪
カバ
マカ
i/'" ̄ ̄ヾ:::::::::::i
|,,,,_ ,,,,,,_ |::::::::|
(三);(三)==r─、|
{ (__..:: / ノ′ツーリングしようぜ
. ', ==一 ノ |
!___/__|>、
rー―__―.' .-'' 々i
!  ̄`. ´  ̄` .ノ
.'- .ィ .「 , '
. | :。:: :。:: ! i
! ' ._ .!
.l l
l .l
l ;j .|
l !
ノ ヽ、
, ' ヽζζζζζ , ' ヽ
.{ _.ト、 Yl| |iY ,イ .}
'、 >.ト. ' U. ' イノ .ノ
' .,,_ ___ ノ-^-`、 ___.... - '