File, download e trasferimento
Quasi tutto ciò che sembra arbitrario nei file su un iPhone discende da una sola regola sull'isolamento, e quasi tutto ciò che rende affidabili i download discende da una sola funzione di HTTP. Qui ci sono entrambe, più i modi in cui i file passano da un dispositivo all'altro.
-
Sandbox
-
La regola per cui ogni app può vedere solo il proprio spazio. È il motivo per cui una app non può aprire i download di un'altra, e per cui «il file è accanto al video» è una cosa che su iOS non esiste.
Ogni app riceve una cartella privata e nessuna vista su quella degli altri. I file si spostano tra le app solo attraverso atti deliberati — un foglio di condivisione, un selettore di documenti, un trascinamento — ognuno dei quali è una decisione presa da una persona e non una app che si è servita da sola.
Il costo si sente nelle cose piccole. I player desktop trovano
film.srtaccanto afilm.mkvin automatico; su iOS non esiste un «accanto», quindi un file di sottotitoli va consegnato di proposito e deve essere la app a ricordarsi l'abbinamento.Vedi anche: App groupSegnalibro con ambito di sicurezza
-
App group
-
Un contenitore condiviso che due app dello stesso sviluppatore possono entrambe aprire — l'unica crepa autorizzata nella sandbox. È così che un'estensione di condivisione consegna un file alla app a cui appartiene.
Un'estensione di condivisione è un programma separato dalla app di cui sembra far parte, con la sua sandbox e una vita molto breve. Non può scrivere nello spazio della app principale.
Così scrive in un contenitore che entrambe hanno il permesso di vedere, e la app lo svuota la volta successiva che si apre. Niente attraversa il confine di uno sviluppatore, e niente attraversa senza un tocco esplicito.
Vedi anche: Sandbox
-
Segnalibro con ambito di sicurezza
-
Un token che ricorda il permesso su una cartella fuori dalla sandbox — un disco esterno, una cartella in iCloud — così la app può riaprirla più tardi senza chiedere di nuovo.
Quando scegli una posizione con il selettore di file di sistema, il permesso concesso vale per quel momento. Un segnalibro lo conserva tra un avvio e l'altro, e la app deve esplicitamente iniziare e smettere di usare l'accesso che rappresenta.
È ciò che rende possibile sfogliare un SSD esterno senza copiare dentro niente, ed è limitato esattamente a ciò che hai scelto — un segnalibro su una cartella non concede niente sulla cartella vicina.
Vedi anche: Sandbox
-
Range request
-
Chiedere a un server una fetta precisa di un file — i byte da 5.000.000 a 5.999.999 — invece dell'intera cosa. È ciò che rende un download riprendibile e ciò che permette a più connessioni di scaricare un file insieme.
Un server che supporta gli intervalli risponde con 206 Partial Content e la fetta richiesta. Uno che non li supporta risponde 200 e manda tutto dall'inizio, che è la differenza tra riprendere un download e ricominciarlo.
Tutto ciò che è interessante in un motore di download poggia su questa unica funzione di HTTP. Senza, non c'è ripresa dopo una connessione caduta, né ripresa dopo un riavvio, né modo di usare più di una connessione.
Vedi anche: Download riprendibileConnessioni parallele
-
Download riprendibile
-
Un trasferimento che continua esattamente da dove si era fermato invece di ripartire, registrando quanti byte sono stati confermati e chiedendo il resto.
Il requisito è che il numero registrato non sia mai ottimista. Un byte contato come scritto ma ancora fermo in un buffer diventa un buco nel file quando la app viene chiusa a forza — e un buco in mezzo a un video è una corruzione che salta fuori solo dopo un'ora che lo guardi.
È per questo che il conteggio deve seguire la scrittura su disco e non la lettura dalla rete, e per questo ogni passaggio di consegne tra trasferimento in primo piano e in background deve accordarsi su un unico numero.
Vedi anche: Range requestTrasferimento in background
-
Connessioni parallele
multi-connessione, download a blocchi -
Dividere un file in intervalli e scaricarne più d'uno insieme. Aiuta quando una singola connessione viene limitata, e non serve assolutamente a niente quando il collo di bottiglia è la tua linea.
Un server che mette un tetto alla velocità di ogni connessione spesso si lascia convincere a consegnare di più in totale su più connessioni. È qui che il download multi-connessione si guadagna la sua fama.
Non è magia e viene frequentemente frainteso. Se la tua connessione è già satura, più connessioni dividono la stessa capacità in pezzi più piccoli e aggiungono lavoro inutile. Alcuni server inoltre rifiutano o rallentano richieste multiple dallo stesso indirizzo.
Vedi anche: Range requestDownload riprendibile
-
Trasferimento in background
-
Un download affidato al sistema operativo così che continui dopo la chiusura della app. È il sistema a decidere i tempi, ed è lo scambio in cambio del fatto che continui.
Una app iOS smette di girare poco dopo che la lasci. Un trasferimento dato al servizio di background del sistema sopravvive a questo, sopravvive alla app chiusa a forza e riprende dopo un riavvio.
Quello a cui rinuncia è il controllo. Il sistema raggruppa questi trasferimenti secondo la sua idea di condizioni di energia e di rete, quindi un download in background può fermarsi e riprendere in modi che uno dentro la app non farebbe — e arriverà in fondo.
Vedi anche: Download riprendibileSandbox
-
WebDAV
-
Un'estensione di HTTP che trasforma un server web in un server di file: elencare, leggere, scrivere, spostare, eliminare. È quello che parlano Nextcloud e ownCloud, e che offre la maggior parte dei NAS.
Siccome sotto c'è HTTP, WebDAV funziona attraverso la stessa infrastruttura di qualsiasi altra cosa sul web — nessuna porta speciale, nessun protocollo client speciale — ed è per questo che è sopravvissuto mentre protocolli di file più elaborati no.
Per chi preferirebbe non mettere i file nel cloud di un'azienda, è l'alternativa pratica: il tuo server, le tue credenziali, standard normali.
Vedi anche: Archiviazione cloud
-
Archiviazione cloud
-
File tenuti sul server di qualcun altro, raggiunti tramite l'API di quell'azienda — Dropbox, OneDrive, Box, pCloud. Ognuno ha la sua interfaccia, ed è per questo che le app li supportano uno alla volta.
Non esiste un protocollo cloud universale. Ogni provider ha progettato la sua API e il suo flusso di accesso, quindi aggiungere un provider a una app è lavoro vero e non una voce di configurazione.
L'accesso normalmente è OAuth, il che vuol dire che la app non vede mai la password: il provider autentica la persona e restituisce un token che si può revocare dalle impostazioni del provider in qualsiasi momento.
Vedi anche: WebDAV
-
WebRTC
-
Uno standard per collegare due dispositivi direttamente, senza un server in mezzo una volta che la connessione esiste. È quello che usa il trasferimento da dispositivo a dispositivo per spostare un file attraverso la stanza.
Un piccolo server di segnalazione presenta i due dispositivi l'uno all'altro — è a questo che serve il codice a sei cifre — e poi si ritira. Il file viaggia direttamente tra i dispositivi e non viene conservato da nessuna parte nel mezzo.
Sulla stessa rete è veloce quanto quella rete permette. Attraverso internet dipende da se entrambe le parti siano raggiungibili direttamente, ed è lì che ogni tanto le connessioni falliscono per ragioni che nessuno dei due dispositivi può vedere.
Vedi anche: Server HTTP locale
-
Server HTTP locale
-
Una app che risponde a richieste web sulla tua rete, così un browser sul tuo computer può aprire una pagina servita dal tuo telefono. È così che funziona il trasferimento via Wi-Fi, senza cavo e senza account.
Il telefono mostra un indirizzo; il computer lo apre; la pagina che riceve è servita dal telefono stesso. I file si spostano direttamente sulla rete locale e non la lasciano mai.
Siccome chiunque sulla stessa rete può raggiungere quell'indirizzo, serve una serratura — un codice da inserire, permessi concessi per singola operazione, e quelle distruttive spente se non le accendi apposta.
Vedi anche: WebRTC