10

私は DropBox Mac クライアントを見てきましたが、現在、別のサービスに同様のインターフェイスを実装することを研究しています。

このようなファインダーとどのように正確にインターフェースしますか?フォルダーに表示されているこれらのオブジェクトが、読み込みのたびにダウンロードされる実際のドキュメントであるとは思えませんか? 必要に応じて動的にダウンロードする必要があります。では、実際のファイル システム オブジェクトを持たずに、これらのアイテムをファインダーに表示するにはどうすればよいでしょうか?

Mac OS Xでこれがどのように達成されるか知っている人はいますか?

または、ファインダーと同様の統合を持つApple APIまたは他のオープンソースプロジェクトへのポインターはありますか?

4

6 に答える 6

31

Dropbox は MacFUSE や WebDAV のいずれにも対応していませんが、これらはあなたが達成しようとしていることに完全に適したソリューションかもしれません。

これらの機能を備えていた場合、実際の情報を保存するためにサーバーに依存しているのに対し、Dropbox はそうではないため、接続されていないときは機能しません。Dropbox を終了して (メニュー項目から)、ネットから切断しても、ファイルは引き続き使用できます。これは、ファイルが実際に私のハード ドライブに保存されているためです。

また、ファイルは実際に私のマシンにここに保存されているため、「ロードごとにダウンロード」する必要がないことも意味します。代わりに、差分のみがネットワーク経由で送信され、Dropbox アプリケーション (バックグラウンドで実行中) がファイルに適切なパッチを適用します。逆に、Dropbox アプリケーションは Dropbox フォルダ内のファイルを監視し、ファイルが変更されると、適切なデルタをサーバーに送信し、サーバーはそれらを他のクライアントに伝達します。

このセットアップには、いくつかの決定的な利点があります。オフラインでも機能し、桁違いに高速であり、他のアプリはディスク上のファイルを見るだけなので透過的です。ただし、サーバーが唯一のコピーであり、すべての編集がその中央のコピーを変更する場合、マージの競合 (1 つまたは複数のクライアントがオフラインで簡単に発生する可能性があります) をどのように処理するかはわかりません。

Dropbox が本当に優れているのは、Dropbox フォルダ内のアイテムに現在の同期ステータスを示す追加のトリックがあることです。しかし、それはあなたがここで尋ねていることではありません。

当面の質問に関しては、MacFUSE と WebDAV を検討する必要があります。これは、問題に対する完璧な解決策である可能性があります。しかし、バックグラウンド アプリケーションがディスク上の実際のファイルを変更する Dropbox のやり方は、より良いトレードオフかもしれません。

于 2008-10-09T15:59:11.133 に答える
11

Dropboxは、ファイルシステムへの変更を監視するためにFSEventsを使用している可能性があります。これは優れたAPIであり、アプリの実行中に発生した変更をバンドルすることもできます。これは、Spotlightが使用するのと同じAPIです。メニューバーアプリは、実際にそれ自体を監視している可能性があります(たとえば、再起動すると、アップロードがハングしているのを修正できます)。

Dropboxを機能させるにはMacFUSEカーネル拡張機能をインストールする必要があるため、MacFUSEを使用する方法はありません。私は絶対にインストールしなかったので、彼らが使用していることは非常に疑わしいです。

于 2008-10-27T04:43:31.873 に答える
6

2 つの提案:

前者を使用すると、ファイル システムとして表示され、適切な処理をすべて実行するアプリを作成できます。後者では、すべてをサーバー側に移動でき、ユーザーはサービスをファイル共有としてマウントできます。

于 2008-10-09T01:06:27.707 に答える
3

クライアント上の Dropbox は Python で書かれています。クライアントは、sqlite3 データベースを使用してファイルのインデックスを作成しているようです。帯域幅の使用量を減らすために、Dropbox はファイルをチャンクに分割したと思います。ちなみに、2 人が同じファイルを持っている場合、お互いを知らなくても、サーバーは最適化してファイルを何度も転送することを回避し、サーバー側でコピーするだけです。

于 2010-06-23T13:59:46.403 に答える
2

File Conveyorを試すこともできます。inotifyこれは、FS の変更 (Linuxでは 、OS X ではFSEvents) を即座に検出し、ファイル処理して 1 つ以上の宛先に同期できる Python デーモンです。

サポートされているプロトコル: FTP、SFTP、Amazon S3 (CloudFront もサポートされています)、Rackspace Cloud Files。簡単に拡張できます。を使用しdjango-storagesます。

「ファイルの処理」: 例: 画像の最適化、ビデオのトランスコード — これは元々、ウェブサイトの高速化という文脈で静的アセットを CDN に送信するために使用されると考えられていました)

于 2011-08-23T09:05:27.383 に答える
2

私には、大幅に変更されたリビジョン管理システムのように感じます。すべての機能があります: デルタに基づいてファイルを更新し、ファイルの古いリビジョンを回復または復元するオプション。彼らは git ( GitFS ?)、または彼らが設計したファイルシステムを使用しているように感じます。

于 2009-02-26T07:56:49.847 に答える