Archivos, descargas y transferencias
La mayor parte de lo que parece arbitrario en los archivos de un iPhone se deriva de una regla sobre el aislamiento, y la mayor parte de lo que hace fiables las descargas se deriva de una característica de HTTP. Estas son ambas cosas, además de las formas en que los archivos pasan de un dispositivo a otro.
-
Sandbox
-
La regla de que cada app solo puede ver su propio almacenamiento. Es por eso que una app no puede abrir las descargas de otra, y por qué "el archivo está al lado del vídeo" no es algo que exista en iOS.
Cada aplicación obtiene un directorio privado y no puede ver el de nadie más. Los archivos se mueven entre aplicaciones solo a través de actos deliberados (una hoja para compartir, un selector de documentos, un arrastre), cada uno de los cuales es una decisión que tomó la persona en lugar de que una aplicación se ayudara a sí misma.
El costo aterriza en lugares pequeños. Los reproductores de escritorio encuentran automáticamente
film.srtjunto afilm.mkv; en iOS no hay "al lado", por lo que se debe entregar un archivo de subtítulos a propósito y la aplicación debe ser la que recuerde el emparejamiento.Ver también: Grupo de appsMarcador con ámbito de seguridad
-
Grupo de apps
-
En un contenedor compartido se pueden abrir dos aplicaciones del mismo desarrollador: la única grieta autorizada en la zona de pruebas. Así es como una extensión compartida entrega un archivo a la aplicación a la que pertenece.
Una extensión para compartir es un programa independiente de la aplicación de la que parece formar parte, con su propia zona de pruebas y una vida muy corta. No puede escribir en el almacenamiento de la aplicación principal.
Entonces escribe en un contenedor que ambos pueden ver y la aplicación drena ese contenedor la próxima vez que se abre. Nada cruza los límites del desarrollador y nada cruza sin un toque explícito.
Ver también: Sandbox
-
Marcador con ámbito de seguridad
-
Un token que recuerda el permiso a una carpeta fuera del entorno limitado (un disco externo, una carpeta en iCloud) para que la aplicación pueda volver a abrirla más tarde sin volver a preguntar.
Cuando eliges una ubicación a través del selector de archivos del sistema, el permiso otorgado es para ese momento. Un marcador lo conserva durante los lanzamientos y la aplicación debe iniciar y dejar de usar explícitamente el acceso que representa.
Es lo que hace posible navegar por un SSD externo sin copiar nada, y se limita exactamente a lo que tú elegiste: un marcador a una carpeta no otorga nada sobre su vecina.
Ver también: Sandbox
-
Solicitud de rango
-
Solicitar a un servidor una porción específica de un archivo (bytes 5.000.000 a 5.999.999) en lugar de todo. Es lo que hace que una descarga se pueda reanudar y lo que permite que varias conexiones obtengan un archivo a la vez.
Un servidor que admite rangos responde con 206 Contenido parcial y la porción pedida. Uno que no los admite responde 200 y envía todo desde el principio, que es la diferencia entre reanudar una descarga y reiniciarla.
Todo lo interesante de un motor de descarga se basa en esta característica HTTP. Sin él, no hay reanudación después de una conexión interrumpida, no hay reanudación después de un reinicio y no hay forma de usar más de una conexión.
Ver también: Descarga reanudableConexiones paralelas
-
Descarga reanudable
-
Una transferencia que continúa exactamente desde donde se detuvo en lugar de comenzar de nuevo, registrando cuántos bytes se han comprometido y preguntando por el resto.
El requisito es que el número registrado nunca sea optimista. Un byte contado como escrito pero que aún se encuentra en un búfer se convierte en un agujero en el archivo cuando se cierra la aplicación, y un agujero en medio de un video es una corrupción que solo aparece una hora después de verlo.
Es por eso que el recuento debe seguir a la escritura en el disco en lugar de a la lectura de la red, y por qué cada transferencia entre transferencia en primer plano y en segundo plano debe coincidir en un número.
Ver también: Solicitud de rangoTransferencia de fondo
-
Conexiones paralelas
descarga fragmentada y multiconexión -
Dividir un archivo en rangos y descargar varios a la vez. Ayuda cuando lo que limita es una sola conexión, y no hace absolutamente nada cuando el cuello de botella es tu propia línea.
A un servidor que limita la velocidad de cada conexión a menudo se le puede sacar más en total repartiéndolo entre varias. Aquí es donde las descargas multiconexión ganan su fama.
No es magia, y se malinterpreta a menudo. Si tu conexión ya está saturada, más conexiones se limitan a dividir la misma capacidad en trozos más pequeños y añaden sobrecarga. Algunos servidores también rechazan o limitan varias solicitudes desde una misma dirección.
Ver también: Solicitud de rangoDescarga reanudable
-
Transferencia de fondo
-
Una descarga que se entrega al sistema operativo para que siga después de cerrar la app. El sistema decide cuándo, y ese es el precio a cambio de que la termine.
Una app de iOS deja de ejecutarse poco después de que la cierras. Una transferencia entregada al servicio de segundo plano del sistema sobrevive a eso, sobrevive a que se elimine la app y se reanuda después de un reinicio.
Lo que se sacrifica es el control. El sistema agrupa estas transferencias según su propia visión de la batería y la red, así que una descarga en segundo plano puede pausarse y reanudarse de formas en que una descarga dentro de la app no lo haría, pero terminará.
Ver también: Descarga reanudableSandbox
-
WebDAV
-
Una extensión de HTTP que convierte un servidor web en un servidor de archivos: enumerar, leer, escribir, mover, eliminar. Es de lo que hablan Nextcloud y ownCloud, y lo que ofrecen la mayoría de cajas NAS.
Debido a que es HTTP, WebDAV funciona a través de la misma infraestructura que cualquier otra cosa en la web (sin puertos especiales, sin protocolo de cliente especial), razón por la cual sobrevivió mientras que los protocolos de archivos más elaborados no lo hicieron.
Para alguien que prefiere no colocar archivos en la nube de una empresa, es la alternativa práctica: su propio servidor, sus propias credenciales, estándares comunes.
Ver también: Almacenamiento en la nube
-
Almacenamiento en la nube
-
Archivos guardados en el servidor de otra persona, a los que se accede a través de la API de esa empresa: Dropbox, OneDrive, Box, pCloud. Cada uno tiene su propia interfaz, por lo que las aplicaciones los admiten uno a la vez.
No existe un protocolo de nube universal. Cada proveedor diseñó su propia API y su propio flujo de inicio de sesión, por lo que agregar un proveedor a una aplicación es un trabajo real en lugar de una entrada de configuración.
El inicio de sesión suele ser OAuth, lo que significa que la aplicación nunca ve la contraseña: el proveedor autentica a la persona y le devuelve un token que puede ser revocado desde la configuración del proveedor en cualquier momento.
Ver también: WebDAV
-
WebRTC
-
Un estándar para conectar dos dispositivos directamente, sin un servidor entre ellos una vez que existe la conexión. Es lo que utiliza la transferencia de dispositivo a dispositivo para mover un archivo por la habitación.
Un pequeño servidor de señalización presenta los dos dispositivos entre sí (para eso sirve el código de seis dígitos) y luego se retira. El archivo viaja directamente entre los dispositivos y no se almacena en ningún lugar intermedio.
En la misma red es tan rápido como esa red lo permite. En Internet depende de si se puede llegar directamente a ambos lados, que es donde las conexiones ocasionalmente fallan por razones que ningún dispositivo puede ver.
Ver también: Servidor HTTP local
-
Servidor HTTP local
-
Una app que responde a solicitudes web en tu propia red, de modo que un navegador en tu ordenador puede abrir una página que sirve tu teléfono. Así es como funciona la transferencia por Wi-Fi, sin cable y sin cuenta.
El teléfono muestra una dirección; el ordenador la abre; la página que recibe la sirve el propio teléfono. Los archivos se mueven directamente por la red local y nunca salen de ella.
Como cualquiera en la misma red puede acceder a esa dirección, hace falta un candado: un código que introducir, permisos concedidos por operación y las opciones destructivas desactivadas salvo que las actives a propósito.
Ver también: WebRTC