Pregunta

He estado mirando el cliente de DropBox Mac y actualmente estoy investigando implementando una interfaz similar para un servicio diferente.

¿Cómo interactúan exactamente con un buscador como este? Dudo mucho que estos objetos representados en la carpeta sean documentos reales descargados en cada carga. Deben descargarse dinámicamente según sea necesario. Entonces, ¿cómo puede mostrar estos elementos en el buscador sin tener objetos reales del sistema de archivos?

¿Alguien sabe cómo se logra esto en Mac OS X?

¿O algún puntero a las API de Apple u otros proyectos de código abierto que tengan una integración similar con Finder?

¿Fue útil?

Solución

Dos sugerencias:

El primero le permitirá escribir una aplicación que aparece como un sistema de archivos y hace todo lo correcto; este último le permitirá mover todo del lado del servidor y le permitirá al usuario simplemente montar su servicio como un recurso compartido de archivos.

Otros consejos

Dropbox no funciona con MacFUSE o WebDAV, aunque esas podrían ser soluciones perfectamente buenas para lo que está tratando de lograr.

Si funcionara con esas cosas, no funcionaría cuando no estuvieras conectado, ya que ambos dependen del servidor para almacenar la información real y Dropbox no. Si salgo de Dropbox (hecho a través del elemento del menú) y me desconecto de la red, todavía puedo usar los archivos. Esto se debe a que los archivos están realmente almacenados aquí en mi disco duro.

También significa que no es necesario descargar los archivos en cada carga, "" ya que realmente están almacenados en mi máquina aquí. En cambio, solo los deltas se envían por cable, y la aplicación Dropbox (que se ejecuta en segundo plano) parchea los archivos de manera adecuada. En el otro sentido, la aplicación de Dropbox busca los archivos en la carpeta de Dropbox y, cuando cambian, envía los deltas apropiados al servidor, que los propaga a otros clientes.

Esta configuración tiene algunas ventajas decididas: funciona sin conexión, es un orden de magnitud más rápido y es transparente para otras aplicaciones, ya que solo ven archivos en el disco. Sin embargo, no tengo idea de cómo trata los conflictos de fusión (que podrían surgir fácilmente con uno o más clientes sin conexión), lo cual no es un problema si el servidor es la única copia y cada edición cambia esa copia central.

Donde Dropbox realmente brilla es que tienen un truco adicional que identifica los elementos en la carpeta de Dropbox con su estado de sincronización actual. Pero eso no es lo que estás preguntando aquí.

En cuanto a la pregunta en cuestión, definitivamente debería considerar MacFUSE y WebDAV, que podrían ser soluciones perfectas para su problema. Pero la forma de hacer las cosas de Dropbox, con una aplicación en segundo plano que cambia los archivos reales en el disco, podría ser una mejor compensación.

Dropbox probablemente esté usando FSEvents para vigilar cambios al sistema de archivos. Es una gran API e incluso puede agrupar los cambios que ocurrieron mientras su aplicación no se estaba ejecutando. Es la misma API que utiliza Spotlight. Es probable que la aplicación de la barra de menú realice la observación en sí misma (ya que al reiniciarla, se puede arreglar que las cargas se cuelguen, por ejemplo).

No hay forma de que estén usando MacFUSE, ya que eso requeriría instalar la extensión del núcleo de MacFUSE para que Dropbox funcione, y como definitivamente no lo instalé, dudo mucho que lo estén usando.

Dropbox en el cliente está escrito en python. El cliente parece usar una base de datos sqlite3 para indexar archivos. Supongo que Dropobox divide un archivo en trozos, para reducir el uso de ancho de banda. Por cierto, si dos personas tienen el mismo archivo, incluso si no se conocen, el servidor puede optimizar y evitar transferir el archivo más veces, solo copiándolo en el lado del servidor

Para mí, se siente como un sistema de control de revisión muy modificado. Tiene todas las características: actualiza archivos basados ??en deltas, opciones para recuperar o restaurar revisiones antiguas de archivos. Casi parece que están usando git ( GitFS ?), O algún sistema de archivos Ellos diseñaron.

También puede probar File Conveyor . Es un demonio Python capaz de detectar instantáneamente cambios FS (en Linux a través de inotify , en OS X a través de FSEvents ), procesando los archivos y sincronizándolos a uno o más destinos.

Protocolos compatibles: FTP, SFTP, Amazon S3 (también se admite CloudFront), Rackspace Cloud Files. Se puede extender fácilmente. Utiliza django-storages .

" procesando archivos " ;: p. optimización de imágenes, transcodificación de videos: & nbsp; esto se concibió originalmente para usarse para enviar activos estáticos a un CDN en el contexto de acelerar los sitios web)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top