質問

DropBox Macクライアントを見てきましたが、現在調査中です別のサービスに同様のインターフェースを実装します。

このように、ファインダとどのようにインターフェイスしますか?フォルダーに表示されているこれらのオブジェクトは、実際のドキュメントがすべてのロードでダウンロードされているのではないでしょうか?必要に応じて動的にダウンロードする必要があります。それでは、実際のファイルシステムオブジェクトがなくても、これらのアイテムをファインダーでどのように表示できますか?

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

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

役に立ちましたか?

解決

2つの提案:

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

他のヒント

DropboxはMacFUSEまたはWebDAVのいずれでも動作しませんが、これらはあなたが達成しようとしていることに対する完璧な解決策かもしれません。

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

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

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

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

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

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

Dropboxを動作させるためにMacFUSEカーネル拡張機能をインストールする必要があるため、彼らがMacFUSEを使用する方法はありません。

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

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

File Conveyor を試すこともできます。これは、FSの変更を即座に検出できるPythonデーモン(Linuxでは inotify 、OS Xでは FSEvents )、ファイルの処理、およびそれらの同期を可能にします。 1つまたは複数の宛先に。

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

"ファイルの処理&quot ;:例画像の最適化、動画のトランスコード— これはもともと、Webサイトの高速化のコンテキストで静的アセットをCDNに送信するために使用されると考えられていました)

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top