P2Pアップローダー
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
03/12/13 13:20ID:QWue63eshttps://sourceforge.jp/projects/skypeer/files/?release_id=7249#7249
0002nobodyさん
03/12/13 13:28ID:???ブローカー型P2PのWebアップローダーです。
●仕組み
・用語
1.ホストID:最初の起動時に生成されるホストを識別するランダムな文字列
2.ホスト情報:ホストIDとIPアドレス、ポート、回線速度などの情報
3.所有者情報:ホストIDと所有ファイルのファイル名のペア
4.ファイル情報:ファイル名、サイズ、ファイル内容に関するコメントなどの情報
5.中央サーバー:これらの情報を保持するサーバー。
・起動
1.最初にサーバントを起動すると .hostid ファイルにホストIDが保存されます。
2.サーバントは起動中、定期的に中央サーバーと通信し、ホスト情報をデータ
ベースに登録します。
3.中央サーバーはデータベースにオンラインホストのホスト情報を保持します。
0003nobodyさん
03/12/13 13:34ID:???1.ローカルのサーバントのアップローダー画面
http://localhost:14714/upload
にアクセスしファイルをローカルディスクにアップロードします。
アップロードされたファイルのURLは
http://localhost:14714/data/dbdc4454b5723e9a88310d40165317c2.jpg
のようになります。
2.サーバントはアップロードされたファイルのファイル名(ハッシュ.拡張子)と
ホストIDのペア(所有者情報)を中央サーバーのデータベースに登録します。
3.中央サーバーはデータベースに所有者情報を保持します。
・ファイル情報の編集
1.ローカルに持っているファイルにコメントをつけることができます。また、
そのコメントを中央サーバーに登録して共有したり、逆に中央サーバーに
あるコメントをローカルに反映させることができます。
・ダウンロード
1.以下のようなローカルホストのURL
http://localhost:14714/data/dbdc4454b5723e9a88310d40165317c2.jpg
にブラウザからアクセスすると、サーバントはローカルにそのファイルがあ
るかをチェックします。
2.ファイルが存在する場合、サーバントは通常のWebサーバと同じように、その
ままそのファイルをブラウザに送ります。
3.ローカルに要求されたファイルが存在しない場合は、サーバントは中央サーバー
に問い合わせ、ファイルを所有しているホストのIPアドレスのリストをもらいます。
4.サーバントは、もらったIPアドレスのリストにあるホストに順番に問い合わせ、
ファイルが見つかった場合はダウンロードします。この時、相手側のホストは
普通のWebサーバの様にふるまいます。
0004nobodyさん
03/12/13 13:35ID:???0005nobodyさん
03/12/13 13:54ID:???は、ファイルをローカルディスクに保存し、中央サーバーに所有情報を登録します。
6.5で正しいファイルが見つかった場合は2と同様にファイルをブラウザに送ります。
最後までファイルが見つからなかった場合は Not Found になります。
7.中央サーバーにファイル情報があれば取得します。
・終了
1.サーバント終了時に中央サーバーのデータベースから自分のホスト情報と所有
者情報を削除します。
●メリット
・普通のブラウザからアップローダーのファイルにアクセスする要領で使えます。
jpgなどの画像ファイルなら2chブラウザ付属のビューアでも見れます。
・自分のアップローダーを持つことになるので、サイズ制限やファイルタイプを気
にしてアップローダーを探す必要はありません。
・アップロードしたファイルはアクセスしてきた他のノードにも保存されるので
アクセスを分散させることができます。
・これまでのアップローダのように「アクセスしてみたら既に Not Found だった」
なんてことは減ると思います。
・ファイル名にハッシュを使っているので、同じファイルを何度もダウンロードす
るようなことを防げます。
・ファイル名とファイル情報を関連つけることで、無意味なファイル名で内容が
分からないということが減ると思います。
・ファイル情報を共有できるので、いちいち自分でコメントをつけて整理する手間
が省けるかもしれません。
0006nobodyさん
03/12/13 14:01ID:???おもしろ画像や爆笑Flashなど、サイズが小さく、あまり重要ではないけれど
ときどき、ふっとまた見たくなるようなファイルの共有、保存に適しています。
・例えば「あのFlashうpしてください」といったケースでは、これまでは、要求する側
の人は掲示板などで依頼し、提供する側の人はローカルディスクから目的のファイ
ルを探し、アップローダーにアップロードしてURLを教えてあげるといった手続き
が必要でした。アップローダーのファイルが削除されたら、また同じ手続きが
必要になります。
SkyPeer を使えば、要求する側の人は中央サーバーで検索すれば目的のファイルの
URLを見つけることができ、オンラインのホストのどれかがそのFlashを持っていれ
ばダウンロードすることができます。提供する側の人は、そのFlashのローカルの
URLを教えてあげるだけで済み、新たにアップロードする必要はありません。
●デメリット
・ポート(デフォルトで14714)を開く必要があります。
・P2Pですが、ノード間は直接通信するので匿名性はありません。
・HTTPなのでサイズの大きなファイルの共有には向きません。
・一応自鯖を立てることになるのでセキュリティなどの問題が出るかもしれません。
・違法なファイルやウィルスをダウンロードしてしまった場合、今度は自分が
それらを公開してしまうといったことがあるかも知れません。
・2chブラウザに固有の画像キャッシュ機能がある場合、2倍のディスクスペースを使う
ことになります。
・ある程度ユーザがいないと使いものになりません。
・ダウンロードツールのレジューム機能などは使えません。
・Rubyなので基本的に動作おもいです。
0007nobodyさん
03/12/13 14:05ID:???・Ruby1.8.1
http://www.ruby-lang.org/ja/
・amrita
http://www.brain-tokyo.jp/research/amrita/index_ja.html
●インストール
・Rubyをインストールする。
・Amritaをインストールし、クラスライブラリのサーチパスを通す。
・skypeerのtar.gzを適当な場所に展開する。
●使い方
・必要に応じて skypeer.conf に手を入れる。
・"./prepare.rb skypeer.conf" を実行して必要なファイルとディレクトリを作る。
・ポートを開けてない場合は開ける。(デフォルトで 14714 番です)
・"./skypeer.rb" を実行すると起動します。
・http://localhost:14714/list にアクセス。
・終了時は "kill `cat skypeer.pid`" とかしてください。
0008nobodyさん
03/12/13 14:08ID:???http://localhost:14714/data/d2691ad1ff0bccfa1661328096701b5b.jpg
0009nobodyさん
03/12/13 18:18ID:QGqU/2dF0010nobodyさん
03/12/13 21:23ID:8wNTNb0d0013nobodyさん
03/12/14 07:17ID:???昔板よりPVがすくないと分かったときはちょっとショックだった。
0014nobodyさん
03/12/14 13:59ID:???skypeer.rb:44:in `fork': The fork() function is unimplemented on this machine
(NotImplementedError)
って言われちゃって動かなかった。
どうしたらいいんだYO ヽ(`Д´)ノプンカプンカ
0015nobodyさん
03/12/14 14:43ID:???全くの想像だけど、rubyの種類によってうまくいったりうまくいかなかったりするのでは?
なるべく最新版を使うとか、それでも駄目ならCygwin版かなあ??
0016nobodyさん
03/12/14 14:48ID:GJ6hmrnS1.cygwin をインストールしてない場合はインストールします。
このサイトを参考にインストールしてください。
http://www.mars.dti.ne.jp/~sohda/cygwin/setup.html
パッケージ選択のところで、全部 Default になってますが、 とりあえず Devel は
Default から Install にしてください。
(これで Ruby1.8.0 がインストールされるみたいですが、1.8.1を使います。)
2.Ruby1.8.1とamrita1.0.2をダウンロード。
・Ruby1.8.1
http://www.ruby-lang.org/ja/
・amrita
http://www.brain-tokyo.jp/research/amrita/index_ja.html
0017nobodyさん
03/12/14 14:57ID:GJ6hmrnSダウンロードした ruby-1.8.1-preview3.tar.gz と amrita-1.0.2.tar.gz を移動。
4.cygwin を起動。
ruby-1.8.1-preview3.tar.gz と amrita-1.0.2.tar.gz があるか確認。
$ ls
ruby-1.8.1-preview3.tar.gz amrita-1.0.2.tar.gz
4.ruby-1.8.1-preview3.tar.gz を展開。
$ tar -xzvf ruby-1.8.1-preview3.tar.gz
5.ruby-1.8.1 ディレクトリに移動
$ cd ruby-1.8.1
6.README.ja を見ればインストール法がかいてありますが、やることは
$ ./configure
$ make
$ make test
$ make install
です。make は時間かかります。
0018nobodyさん
03/12/14 15:01ID:GJ6hmrnS$ /usr/local/bin/ruby --version
とかして確認してください。
7.amritaもインストールします。
$ cd
$ tar -xzvf amrita-1.0.2.tar.gz
$ cd amrita-1.0.2
/usr/local の方にインストールしたいので、そのままコピーしちゃいます。
$ cp -r lib/amrita /usr/local/lib/ruby/site_ruby/1.8
8.あとは、skypeer を展開して >>7 の「使い方」のようにするだけです。
$ cd
$ tar -xzvf skypeer-0.1.tar.gz
$ cd skypeer-1.0
$ ./prepare.rb skypeer.conf
$ ./skypeer.rb
0020nobodyさん
03/12/14 15:11ID:???すみません。cygwinで、しかも本家のソースからコンパイルしたやつしか
動作テストしてません。よろしければ>>16-18の方法で試してみてください。
あと、うちのPCが異音を出し始めたのでAM10:00〜PM15:00くらいまで
シャットダウンしてました。>>8がNot Foundだった人今一度お試しください。
0021八頭身 ◆8TOsndGdDo
03/12/14 15:26ID:???先をコサレテシマタヨ−。
こりゃがんばらないと。
0022八頭身 ◆8TOsndGdDo
03/12/14 15:28ID:???exerbで動くか試してミルヨ。
0023八頭身 ◆8TOsndGdDo
03/12/14 15:41ID:???先を越されてしまったぶん文句は言えないけど。
中央鯖がP2Pで稼働してる所は違うけど。
0024nobodyさん
03/12/14 21:18ID:???0025nobodyさん
03/12/15 22:20ID:Y90P+zaWいっちょ試してみるか・・・
0026nobodyさん
03/12/15 23:21ID:???これでいいのか?
http://localhost:14714/data/245f632812fe60743bff824610730bb8.jpg
■ このスレッドは過去ログ倉庫に格納されています