Domanda

Ho esaminato il DropBox client Mac e sto attualmente effettuando ricerche implementare un'interfaccia simile per un servizio diverso.

Come si interfacciano esattamente con finder in questo modo? Dubito fortemente che questi oggetti rappresentati nella cartella siano veri e propri documenti scaricati ad ogni carico? Devono scaricare dinamicamente quando sono necessari. Quindi, come puoi visualizzare questi elementi nel finder senza avere veri e propri oggetti del file system?

Qualcuno sa come questo è ottenuto in Mac OS X?

O qualche puntatore alle API di Apple o ad altri progetti open source che hanno un'integrazione simile con finder?

È stato utile?

Soluzione

Due suggerimenti:

Il primo ti permetterà di scrivere un'app che appare come un filesystem e fa tutte le cose giuste; quest'ultimo ti consentirà di spostare tutto sul lato server e consentire all'utente di montare il tuo servizio come condivisione di file.

Altri suggerimenti

Dropbox non è alimentato da MacFUSE o WebDAV, anche se potrebbero essere delle soluzioni perfette per quello che stai cercando di realizzare.

Se fosse alimentato da queste cose, non funzionerebbe quando non si è connessi, poiché entrambi si affidano al server per memorizzare le informazioni effettive e Dropbox no. Se esco da Dropbox (fatto tramite la voce di menu) e mi disconnetto dalla rete, posso ancora usare i file. Questo perché i file sono effettivamente archiviati qui sul mio disco rigido.

Significa anche che non è necessario scaricare " i file su ogni carico, " dal momento che sono effettivamente memorizzati sul mio computer qui. Al contrario, solo i delta vengono inviati via cavo e l'applicazione Dropbox (in esecuzione in background) corregge i file in modo appropriato. D'altro canto, l'applicazione Dropbox cerca i file nella cartella Dropbox e, quando cambiano, invia i delta appropriati al server, che li propaga a qualsiasi altro client.

Questa configurazione presenta alcuni vantaggi decisivi: funziona quando è offline, è un ordine di grandezza più veloce ed è trasparente per altre app, poiché vedono solo i file sul disco. Tuttavia, non ho idea di come gestisca i conflitti di unione (che potrebbero facilmente sorgere con uno o più client offline), che non rappresentano un problema se il server è l'unica copia e ogni modifica cambia quella copia centrale.

Dove Dropbox brilla davvero è che hanno un trucco aggiuntivo che identifica gli elementi nella cartella Dropbox con il loro stato di sincronizzazione corrente. Ma non è quello che stai chiedendo qui.

Per quanto riguarda la domanda a portata di mano, dovresti assolutamente esaminare MacFUSE e WebDAV, che potrebbero essere soluzioni perfette per il tuo problema. Ma il modo Dropbox di fare le cose, con un'applicazione in background che modifica i file effettivi sul disco, potrebbe essere un compromesso migliore.

Probabilmente Dropbox sta utilizzando FSEvents per cercare modifiche al file system. È un'API eccezionale e può persino raggruppare le modifiche avvenute mentre l'app non era in esecuzione. È la stessa API utilizzata da Spotlight. L'app della barra dei menu probabilmente esegue l'osservazione effettiva (dal momento che il riavvio può correggere il blocco dei caricamenti, ad esempio).

Non usano in alcun modo MacFUSE, poiché ciò richiederebbe l'installazione dell'estensione del kernel MacFUSE per far funzionare Dropbox, e dato che sicuramente non l'ho installato, dubito fortemente che lo stiano usando.

Dropbox sul client è scritto in Python. Il client sembra utilizzare un database sqlite3 per indicizzare i file. Suppongo che Dropobox abbia diviso un file in blocchi, per ridurre l'utilizzo della banda. A proposito, due persone hanno lo stesso file, anche se non si conoscono, il server può ottimizzare ed evitare di trasferire il file più volte, copiandolo solo sul lato server

Per me sembra un sistema di controllo di revisione fortemente modificato. Ha tutte le funzionalità: aggiorna i file in base a delta, opzioni per ripristinare o ripristinare le vecchie revisioni dei file. Sembra quasi che stiano usando git ( GitFS ?) O alcuni filesystem hanno progettato.

Puoi anche provare File Conveyor . È un demone Python in grado di rilevare istantaneamente le modifiche di FS (su Linux tramite inotify , su OS X tramite FSEvents ), elaborando i file e sincronizzandoli verso una o più destinazioni.

Protocolli supportati: FTP, SFTP, Amazon S3 (è supportato anche CloudFront), Rackspace Cloud Files. Può essere facilmente esteso. Utilizza django-storages .

"elaborazione dei file": ad es. ottimizzazione delle immagini, transcodifica di video

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top