Press "Enter" to skip to content

GOTO 2013 • Everything – But the Kitchen – Syncs • Drew McCormack


okay, tutti possono sentirmi, quindi okay
quindi chissà chi sono due persone
il pubblico sa chi è e abbastanza
alcune persone non tutti questo non è un
conferenza degli sviluppatori iOS questo è un questo
è Craig Federighi e grande difensore
Ricky è una persona importante in Apple
in questi giorni ha detto executive top
executive di Apple è in realtà quello
il soft il vicepresidente senior di
l’ingegneria del software praticamente è dentro
carica di tutti i software per il Mac per
iOS e
quindi penso che tutti qui probabilmente
già lo sapevo già quasi di più
persone ma forse quello che non sapevi è
che Craig è davvero un bravo
ingegnere e lo sta facendo davvero
per molto tempo e in effetti lo era
prima che lui fosse ad Apple, in realtà lo è
dopo con Steve Jobs e lui
ha lavorato su un framework chiamato
quadro di oggetti aziendali che è
è fondamentalmente un o RN ed è davvero
il predecessore di indovinare i dati di base
che è quello che se usi iOS in questi giorni
sai quali sono i dati di base e lui
effettivamente sviluppato nel 1995 sviluppa a
classificare il cordato di persone correlate
gli sviluppatori sanno davvero bene e questo è
il contesto dell’oggetto gestito da ns, quindi lui
in realtà è venuta l’idea per questo
cosa in realtà si sviluppa anche così
quello era importante è importante
classe di punti distinti nei dati principali e
in realtà è abbastanza abbastanza
diverso dagli altri o dai nostri fini, credo
potresti dire circa 20 anni dopo ora
così potresti farlo nel 1995, 20 anni dopo
abbiamo problemi diversi, giusto
abbiamo ottenuto complicazioni
situazione che ora abbiamo il peso
abbiamo più dispositivi multipli
negozi e dobbiamo capire modi
di mantenere fondamentalmente due o più gestiti
contesto oggetto in sincronizzazione proprio attraverso a
rete molto traballante senza fondamentalmente
senza alcuna linea di comunicazione diretta
e questo è un problema difficile e questo
è fondamentalmente ciò di cui voglio parlare
oggi
quindi qual è il mio interesse per la sincronizzazione che sviluppo
un’app chiamata caso mentale è un’app
per gli studenti fondamentalmente è una flashcard
studia e ho iniziato a sviluppare questo
app nel 2006, penso di sì ed ero per il
mac giusto così è un’app per Mac 2006
iniziato come un hobby lentamente si trasformò in
affari e poi l’ iphone è arrivato
e più tardi l’ipad e io sviluppammo
un’app per iOS intorno al 2008-2009 e lo è stata
chiaro fin dall’inizio che questi due
dovrebbe sincronizzare correttamente sarebbe carino
pazzo se avessi il mac up che hai fatto
alcune carte di studio sul mac e it
non è sincronizzato con il tuo dispositivo iOS
sin dall’inizio ho avuto la sincronizzazione ma
Ero un tipo di lavandino vecchio stile
che avevi con itunes e ipod giuro
sai che Itunes fondamentalmente otterrebbe
qualcosa di nuovo dall’ipod e poi
ha sostituito le cose sull’ipod e quello
è stato così che ho fatto a non temere l’USB ma
temo la connessione Wi-Fi, quindi era una diretta
tipo di sincronizzazione in cui i due i due
i dispositivi stavano parlando direttamente a uno
un altro e inviare scambiare informazioni
così ho avuto tutto questo giusto questo è
questo lavandino e dopo qualche anno circa
due o tre anni fa ho iniziato a vedere
sempre più feedback una recensione in più
seguendo queste linee sai cosa è il perché
non ci sono sincronizzazione cloud in questa app che conosci
perché l’abbiamo chiesto perché non lo abbiamo?
Sincronizzazione Wi-Fi sai perché devo
connettersi alla stessa rete Wi-Fi che è
ridicolo in questo giorno ed età e il
perenne sapere che anno è giusto
così in altre parole i clienti hanno iniziato
per richiedere la sincronizzazione del cloud alle persone attese
sincronizzazione del cloud e questo è stato il caso
negli ultimi anni e così ho iniziato a
pensaci e al momento c’era
una specie di elefante nella stanza di
termini di sincronizzazione per i dati principali e così è stato
La soluzione di Apple ha avuto proprio Apple
ha annunciato iCloud
e I cloud è venuto con un dato fondamentale
la componente di sincronizzazione in pratica era l’idea
con poche righe di codice il tuo core
l’app di dati potrebbe sincronizzarsi su tutti i dispositivi
era sembrava fantastico giusto ho pensato che
passare un paio di mesi su questo lo farò
avere un’app cloud e affondare magnificamente
e tutto sarà risolto e di
corso ho trascorso circa sei mesi su di esso
e non sono mai arrivato al punto in cui ero
soddisfatto di poter spedire la nave
il prodotto e durante quel tempo
in realtà ha scritto molto sul blog
ci sono circa cinque o sei post del blog
su come i dati di base vengono sincronizzati su cloud
funziona davvero perché Apple ha scritto
pochissima documentazione a riguardo
c’è se tu se sei interessato a
set di dati di base I cloud chiamato fuori sincrono
questi post del blog sono ancora piuttosto utili
anche se adesso hanno pochi anni
fare dettagli andando un bel po ‘ di dettagli
su come funziona sotto le coperte
e cosa dovresti cambiare nel tuo codice
e cose del genere ma come ho detto anche io
con tutto quello sforzo che non ho mai avuto
il punto in cui ho pensato che potevo
spedisci questa cosa al pubblico e così io
alla fine ha risolto il problema e
Parlerò un po ‘più tardi
almeno per ora e così prima io
voglio parlare di sink in generale I
voglio tornare un po ‘e dire
ok, dove siamo?
la sincronizzazione e un sacco di gente
vorrei pensare che io penso che lo siamo
in quello che è noto come il
errore onnipresente proprio dove i tuoi dati
è ovunque su ogni dispositivo tutto
si sincronizza magnificamente e quindi alcuni dispositivi
questo è assolutamente vero alcune canzoni
su app che sono vere cose che tu
la femmina per esempio funziona molto bene
Twitter tutto ciò che google tende a fare
lavorare davvero bene in termini di
sincronizzazione ma per molte app
non è affatto vero e se prendi un
app generale qualsiasi app nell’App Store e
puoi guardare e vedere se è così
sembra Penso che ci sia una buona probabilità che
non a meno che non sia un’app Web o
qualcosa
e francamente penso che siamo nel pre
aria onnipresente nel momento in cui siamo solo
in quel pezzo prima che tutto sia
onnipresente e non ce l’abbiamo proprio
c’è ancora e basta smettere di preoccuparsi
richiederà di preoccuparsi molto a riguardo
per cominciare, questo è fantastico
cito da jen arnold ma l’ho rubato
il codice colto con il nostro blog e it
descrive molte cose in ingegneria
ma penso che sia veramente descrive la sincronizzazione
al momento giusto per molti di noi è
un mal di testa è qualcosa che ci trattiene
sveglio di notte e come certamente può essere
gli ultimi due anni della mia vita sono
piuttosto orribile e io non sono l’ unico
ci sono alcuni grandi nomi che
sono stati alle prese con la sincronizzazione
sincronizzazione del cloud di sincronizzazione
Codice colta è nome molto noto
fanno un’app chiamata “cose ​​è una”
elenco di cose da fare che hanno scritto su di esso
e e e hanno fatto che erano almeno
con due anni di ritardo
la ricerca del cloud lo aveva promesso per anni
e anni ed è stato solo un difficile
problema e tutto ciò che cercano solo
non ha funzionato nel modo in cui si aspettavano
e alla fine hanno escogitato un
soluzione ma era tanto tempo
comingbone coming ha una app chiamata
Yojimbo e anche loro hanno appena rilasciato
L’amministratore delegato Jim prima, ma era di nuovo di più
di un anno in anticipo e la ragione
hanno provato a utilizzare iCloud Core Data Sync
e non hanno funzionato risparmiando
lo stesso del piss me e del pixel nero
sviluppo in questi giorni sono ancora
non ho spedito la versione codificata di utilizzo della rete
filo con un’opzione di sincronizzazione che sono stato
promettendo a lungo quindi potrebbe anche
stiamo cercando di utilizzare i dati di base in questo modo
così molte persone hanno problemi molto
di persone che hanno problemi con questo questo
problema
quindi diamo un’occhiata per vedere se un pisolino e
sei dentro un’app di dati di base e per iOS
e vuoi che questa cosa si sincronizzi
quali sono le tue opzioni oggi come oggi
puoi scrivere un’app web completa a destra
puoi scrivere fondamentalmente un server in modo intelligente
chiamiamo il server chiamandolo intelligente
server che sai che contiene tutto il
dati nel cloud e che i tuoi clienti
parla al tipo di tecnologie che puoi
usa i loro conosci solo ogni lato del server
tecnologia PHP Rotaie Java Django nodejs
Google App Engine ti fa scegliere
un sacco di tecnologie che puoi usare
ora questo è perfettamente legittimo
una grande quantità di aziende fanno questo
percorso ci sono anche molti professionisti
la cosa molto buona in termini di platine
ed è un centesimo che hai un centro
la verità va bene così così se è molto improbabile
che le tue app client usciranno
sincronizzazione possono sempre dire ok
server dimmi quali sono gli ultimi dati
e significa che sei molto improbabile
per ottenere davvero molto lontano dalla sincronizzazione di te
può sempre stabilizzarsi così
la verità centrale è importante è
multipiattaforma se stai eseguendo un
App per Android e stai scrivendo un iOS
app e anche una web app web quindi puoi
anche questo è un modo perfetto per risolverlo
problema giusto e non c’è blocco in te
può togliere la tua app per rotaie da Amazon
e mettilo su rackspace se non lo sei
felice con amazon giusto quindi non c’è no
vero e proprio blocco, non lo sai forzato
stare con una compagnia particolare o
fornitore ci sono alcuni contro e questo
è più per me, credo più piccolo più piccolo
le aziende possono essere ragionevolmente costose
dipende ovviamente dalla tua app ma tu
devono ospitare tutti i dati di destra e
se hai se la tua app sembra essere
un’app che ha utilizzato un bel po ‘di dati
lo ospiterà molto
ogni singolo utente sta andando
per avere i dati nel tuo nel tuo account
e c’è anche qualche sforzo duplicato
ci sono buone probabilità che tu sia un iOS
sviluppatore se sei uno sviluppatore iOS
ci sono buone probabilità che tu non sia così
bravo su binari o conosci un web
sviluppatore e non sono così tanti
persone che possono fare
davvero bene, quindi probabilmente andrai
avere bisogno di essere in una piccola squadra almeno
probabilmente non puoi non farlo sul tuo
va bene così tu non vuoi che tu non lo faccia
vuoi percorrere quella strada che non vuoi
segui il percorso di un’app web completa
c’è in questi giorni che hai qualcosa
questo è in qualche modo tra questo è ciò che io
chiamare un negozio riposante o strutturato
negozio e tipo di servizi sto parlando
a proposito di passato calmo asia inverno microsoft’s
soluzione per dropbox di servizi mobili
ho appena rilasciato una nuova API chiamata
datastore API e questo è fondamentalmente questo
un negozio riposante solo un negozio strutturato
di dati ce ne sono alcuni più piccoli
wasabi sink è una soluzione basata esclusivamente sui dati
simpy reham dalle persone che fanno
semplice nota che è un cordato anche come a
aspetto dei dati di base e da cui proviene Helios
Heroku che ti permette di usare heroku come
il tuo backend mobile quindi questi sono tutti
soluzioni che semplificano la tua conoscenza
quel componente server è solo
fondamentalmente mette un negozio nel
cloud e puoi scrivere solo cose
il negozio quindi non è particolarmente
indagine intelligente è una specie di a
server semplice
e ci sono pro e contro di questo
giusto così hai ancora il tuo centro
la verità è che è utile il
il server è davvero semplice, quindi chiunque può farlo
non devi essere un web esperto
sviluppatore e dovrebbe scalare pure
e tu sai che ce l’hai
sforzo duplicato di dover essere un rubino
sullo sviluppatore di rails e su iOS
sviluppatore ancora gentile di costosi
Devo memorizzare tutti i dati che ancora
devi memorizzare i dati che hai se hai
ho un po ‘di blocco del venditore qui
perché è molto difficile spostarsi da
l’uno all’altro se ti sei impegnato come
hai una API diversa fino a
un’altra compagnia come Dropbox, così faresti
devi riscrivere il tuo codice un po ‘per
spostati tra di loro in modo da bloccarti
con chi scegli e alcuni di loro
non hanno diritto all’integrazione dei dati di base
quindi dovresti collegare i dati principali
ora quello su cui voglio concentrarmi è
in realtà nessuno di questi è è questo
uno qui file servizi di sincronizzazione va bene
questi tutti abbiamo familiarità con il file
servizi di sincronizzazione penso che il tipo di
il servizio di cui sto parlando qui è iCloud
Dropbox è uno di omni grid put
onnipresenza Google Drive Amazon Cloud
Guida tutti hanno uno di questi diritti
Microsoft cloud SkyDrive e anche colpito
torrent farlo in questi giorni giusto
BitTorrent ti consente di sincronizzare una cartella
tutto ciò che inserisci nella cartella andrà
attraverso la rete BitTorrent al tuo
altri dispositivi quindi queste cose sono
ovunque ognuno ha uno di questi
sai che penso che tutti sappiamo come
loro lavorano tu metti cose in una cartella
e finisce attraversando attraversando
il server all’altra cartella sul
altro dispositivo è fondamentalmente molto semplice
stai inviando dati avanti e indietro e
quindi è in realtà il tipo più semplice di
server a cui puoi pensare
quindi i professionisti sono pro diversi
indovina gli altri pro-one pro per a
sviluppatore come me è solo un piccolo
la compagnia è che queste cose sono
efficacemente per me libero giusto il
l’utente o il consumatore sviluppatore potrebbe finire
a pagare Dropbox per il servizio o o
Apple, ma non devo elaborare nessuno
eventuali commissioni o qualsiasi cosa per fornire la sincronizzazione
va bene, ecco che per me è un
banca di impedimenti Non devo ospitare
tutti i dati sono ospitati da Apple o
Dropbox o Microsoft o chiunque altro
fornire il servizio non è reale
bloccando perché queste cose si sincronizzano
le cartelle di quello dei file così così sarebbe
essere abbastanza facile da spostare da Dropbox
su iCloud o su qualsiasi altra cosa e non c’è
codice lato server o questo è il server
semplicemente spostando i dati più rotondi ora
c’erano anche alcuni svantaggi
non esiste più una verità centrale giusta
quindi non c’è nessun posto dove non puoi parlare
qualsiasi server e dire okay dimmelo a questo
punto nel tempo quali sono i file correnti
hai ragione non puoi farlo che puoi guardare
localmente e dico ok ho questi
file ma non so localmente non l’ho fatto
sapere cosa sta succedendo su altri dispositivi
giusto così se potessi avere un complimento
immagine incompleta di tutti i dati e
ciò significa che è un grande rischio di divergenza
se vai in questo modo devi essere molto
attento come si elaborano i dati
altrimenti riceverai piccole modifiche
ogni dispositivo e anche se il punto e
è brutto quando stai affondando
giusto e non è ben stabilito
quadro in termini di ricerca di base
i dati per fare questo ci sono pochi
opzioni parlerò di quelli, ma io
direi nessuno di loro davvero bene
stabilito e risolvere bene il problema
ora quello che voglio fare è che voglio dire
questi servizi di sincronizzazione file ti voglio
smettere di pensare nel maggior numero di file
sincronizzazione dei servizi e pensarli come
reti peer-to-peer e in realtà
dispositivi di comunicazione peer-to-peer
giuste reti di comunicazione e questo è
il modo in cui stiamo andando a pensarci
da qui in poi pensateci come suoi
bene volendo inviare Mac
un messaggio e invia un messaggio al mac
sotto forma di un file che inserisce
il suo file e il Mac vuole inviare
qualcosa indietro invia cinque ciò che è a
archiviare come un messaggio, quindi ci penso
in questo modo è probabilmente il modo migliore per farlo
pensaci da qui in poi a
peer-to-peer ok quindi vogliamo
utilizzare questi servizi di sincronizzazione file per la sincronizzazione
i dati principali direttamente dal coordinatore utilizzano a
database giusto è fondamentalmente un sequel
come database sotto e questo è un
problema difficile in realtà da sincronizzare
i database temono i file o temono che i bambini si appuntino
lavora la prima cosa che probabilmente sei
pensando che ho appena messo il database in
Dropbox giusto problema risolto a destra
sfortunatamente questo è un quadrato piolo rotondo
situazione di fessura del buco non puoi realmente
davvero farlo e farla franca per
molto a lungo hai molte probabilità di prenderne un po ‘
una sorta di corruzione dei dati, ma tu sai a
il database avrà ragione sul tuo database
mentre stai usando l’app o lo sei
andando semplicemente a perdere dati ma
non c’è fusione dei dati il
il database arriverà e sostituirà qualsiasi
le modifiche che hai appena fatto quindi questo è
davvero un brutto modo di avvicinarsi al
situazione non puoi semplicemente prendere il tuo
database e metterlo in dropbox o in
iCloud cosa devi fare e tutto il
soluzioni che ho visto fondamentalmente
gestirlo in questo modo è dividere il tuo
database in quel registro delle transazioni o
i delta che compongono il database così
Immagina che questa tazza qui sia un database
è composto da partite in questo caso e
ogni partita rappresenta una piccola operazione
sul database che costruisce la coppa
così in un aggiornamento per un inserimento o
cancellazione proprio come su uno standard
database quello che facciamo è prendere il
database e l’abbiamo diviso in questi
partite lo dividiamo in cui lo scomporiamo
tutti i cambiamenti che sono andati in costruzione
il database tutti i delta o
transazioni che lo hanno fatto e quindi cosa
sono queste queste partite di cui sto parlando
solo per darti un aspetto più concreto
idea
quello che sono qui è un po ‘di JSON che
rappresenta forse potrebbe rappresentare sup one
di questi questi cambiamenti in un’app film così
stiamo scrivendo in un’app per i film
entità qui si chiama film ha un
ID globale in modo che possiamo riconoscerlo su tutti
i dispositivi che sono lo stesso oggetto è
andando a digitare in questo caso è un
l’inserimento potrebbe anche essere un aggiornamento
o una cancellazione, naturalmente, e poi abbiamo
ha un sacco di proprietà il nome di
il film in questo caso stravolge il cast
sarebbe probabilmente una relazione con a
un sacco di attori quindi abbiamo un attore
ID lì, quindi questo è l’io questo è
l’idea di questi delta cosa facciamo
è che inviamo questi delta li mettiamo in a
file o più file a cui vanno incontro
l’altro dispositivo e poi ricostruiamo il nostro
database con questi delta va bene così
li ripetiamo e costruiamo un clone di
il database sull’altra macchina va bene
quindi questo è come lo fai come fai
potrebbe farlo con quello con i file
sincronizzazione dei database con i file ora come
Ho detto che in realtà ce ne sono un paio
soluzioni a tutto questo già e ho
accennato uno di loro che è già
Soluzione Apple iCloud Core Data Sync
fa esattamente quello che ho appena descritto giusto
sta trasformando le cose in transazioni
mandandoli attraverso e poi ricostruendo
il database
ma come ho detto anche ce ne sono alcuni
problemi con i dati principali di iCloud e
un sacco di persone sono state avendo
guai con esso è stato per i primi due
anni almeno molto buggy che è un
vero problema quando parli
dati non è che non è un problema tecnico nel loro
interfaccia utente che puoi ordinare
aggirare questo è dati della gente e
quando quando perdono dati ottengono le persone
arrabbiato giusto quindi è qualcosa che davvero
è che non è qualcosa che vuoi avere
bug in qualcosa che riguarda i dati
quindi era buggy e così era
un grosso problema ma ce ne sono altri
problemi e alcuni di loro sono davvero
ah inevitabile è una scatola nera giusta
il suo software proprietario proprietario
è il software Apple non puoi vedere cosa
stanno facendo loro non ti dicono cosa
stanno facendo loro non ti dicono come
funziona come dovrebbe funzionare cosa
aspetto ma ti dico una cosa del genere
quindi stai sempre tirando a indovinare
se la pagina è corretta o cosa
succede quando c’è un conflitto non lo è
non documentato giusto qualunque Z
la validazione fallisce non documentata lo fa
chiama nel tuo codice in qualsiasi momento no
documentato nessuno destra di questo è stato
documentato ho pensato ad alcuni degli orsi
sul mio blog se riesci a trovarlo sul mio
blog ma non è documentato da Apple
dicono solo che sai che funziona e
sfortunatamente non è generalmente buono
abbastanza il pacchetto che fa la scatola nera
è molto difficile provare che non puoi
fondamentalmente il test coinvolge due dispositivi
e poi aspettando che le cose si trasferiscano
e questo rende i tuoi cicli di debug molto
a lungo a destra si cambia su uno
dispositivo si aspetta per pochi minuti come
che trasferisce su un altro dispositivo e
poi vedi cosa succede e poi
cerchi di riprodurlo così tuo
il ciclo di debug è lungo minuti se lo sei
fortunato se lanci troppi dati a
iCloud ti ridurrà effettivamente il tuo
trasferimenti e puoi dimenticarlo per il
il resto del giorno puoi andare a casa così
non avete intenzione di ottenere qualsiasi altro sincronizzazione
fatto quel giorno
è un’esperienza piuttosto orribile che ho
mai avuto un debug così orribile
sperimenta ora alcune di queste cose
i programmi annuali di rilascio sono quindi Apple se
Apple trova un bug e lo risolve
questi bug ovviamente sono bloccati su un
programma di rilascio annuale per la maggior parte del tempo
loro sanno che hanno messo via per il prossimo
Aggiornamento del SO a cui talvolta è permesso
se sei un percorso molto importante
una versione intermedia intima ma
è abbastanza difficile davvero
parlato con le persone in apple e questo è
in realtà non è facile da fare devi
convincere la gente che è davvero così
importante da inserire in uno sapete a
in sette punti cosa o cosa così in realtà
di solito stai aspettando un anno se
c’è un bug che aspetti da un anno
per vederlo fisso e ovviamente lo è
mito fortunato niente di tutto questo è documentato
non è open source se si decide
non sei soddisfatto di iCloud su iCloud
soluzione devi rivedere a
codice completamente perché non è possibile utilizzare
c’è ne funziona solo con Apple
iCloud back-end fondamentalmente così se tu
decido che voglio usare troppo Dropbox
c’è ancora un problema con iCloud
dati di base e questo è ancora qualcosa
che Apple non può davvero controllare che sia
quando un’azienda come Apple o Google
di queste grandi aziende si trasferiscono in a
spazio come in questo caso di sincronizzazione
database di dati di base creano un vuoto
giusto perché nessuno sta andando a gareggiare
con quello che nessuno proverà a
competere con Apple facendo una soluzione per
sincronizzare i dati fondamentali proprio così quando Apple
rilasciarlo quando Apple è venuto con una soluzione
devono prenderlo , non devo ottenere
è assolutamente giusto se non lo fanno
che abbiamo un problema perché c’è
nessun altro ha intenzione di fare un open
progetto di origine per risolvere il problema o
fare un’offerta commerciale concorrente o
qualcosa del genere così che è in realtà
la situazione per cui siamo stati in giro
due o tre anni ma nessuno è arrivato
con qualcosa di nuovo
c’è un altro quadro che ho appena detto
che abbiamo fatto non abbiamo nulla di nuovo
è ancora vero che c’è un altro
quadro puoi provare e questo è un
il framework open source il motivo
abbiamo questo quadro è semplicemente questo
è stato scritto prima che io facessi il cloud
annunciato bene, sono sicuro che se io claire
era stato annunciato prima che iniziassero
si sarebbero fermati immediatamente
chiamato T icds, significa Tim y usted
chiama la sincronizzazione dei dati Tim è il ragazzo che ha scritto
è un progetto open source MIT
la licenza sviluppata per la prima volta da T lo mancò
è in questi giorni è gestito da NOFA
software non primo dei ragazzi che
ha fatto bene questo prodotto bene
forse potresti aver sentito là fuori
che il proprietario dell’azienda è
Kevin più caldo e lui è spesso su
podcast e cose pure
questo ha supporto sia da iCloud
e Dropbox come backend e lo è
effettivamente là fuori spedizione e navi in
la mia app è ciò che alla fine ho usato
spedisci il mio caso mentale e anche in
I dottori di Kevin danno soldi, quindi è così
in realtà in natura ma non è tutto
rose qui o la squadra dei creatori
invece non è più coinvolto, lavora
ora per Apple non gli è permesso
contribuisci in modo che sia abbastanza serio
problema già lì il codice era
come ho detto prima di scrivere era cloud
intorno è probabilmente quattro o cinque anni
vecchio alcuni degli obiettivi-c è vecchio alcuni
delle decisioni di progettazione che conosci perché
si trattava di una sorta di lavoro pionieristico alcune delle
probabilmente le decisioni avrebbero potuto essere
reso migliore ora ma con il senno di poi il
beneficio del senno di poi ma um sì sì il
design ha alcuni problemi uno dei
i problemi è ad esempio che carica
una copia completa del tuo negozio per ogni
singolo dispositivo giusto così così se hai
tre dispositivi che affondano sta caricando
tre copie complete del tuo negozio e
potrebbe essere un bel po ‘di dati
a seconda della tua app può essere piuttosto lento
usa internamente i dati di base, che è ok
ma non lo sta usando in modo molto efficiente
sta facendo il recupero di oggetti singoli e
cose del genere la cosa peggiore è quella
non c’è nessuna garanzia reale
che i tuoi negozi rimarranno sincronizzati
l’uso dell’algoritmo non è non è abbastanza
abbastanza sofisticato da garantire il make
la garanzia quindi in vari in certo
circostanze è possibile che le cose
uscirà dalla sincronizzazione e quello non è un
buona cosa
così è dove siamo al momento
abbiamo due soluzioni iCloud e T
icds e nessuno di loro lo sono
particolarmente invitante direi così
se andiamo da qui bene II tipo di
speravo per un po ‘che qualcun altro
farebbe una libreria come il pixel nero
pixel nero che si lamenta così ho pensato
forse faranno qualcosa e io ho
ho aspettato un po ‘e ho deciso
all’inizio dell’anno che io che nessuno
altro stava per risolvere questo problema quindi io
dovrebbe andare nel vuoto di
Spazio Apple Apple e sì contribuire
qualcosa così ho un po ‘di
la storia con l’ open source l’ ho fondata
progetto open source chiamato trama che è
un framework di invasatura per iOS e così via
andando ancora abbastanza bene non sono quello
coinvolti in questi giorni ma è ancora
attivamente sviluppato quindi ti voglio oggi
presentarti un nuovo nuovo open source
progetto per risolvere questo problema che io
chiama in ensemble e un corto per core
insieme di dati che è solo per
coordinatore è una licenza MIT metonimista
quadro open source possibilmente più tardi
Aggiungerò licenze commerciali con
meglio con te una maggiore funzionalità
e codice sorgente e cose come extra
codice sorgente e cose ma per ora solo
open source e sarà sempre un
componente open source l’idea, ovviamente
è sincronizzare le porte di sequel di coredata di luci
e dovrebbe funzionare su Mac e iOS e il
concetto più importante in questo quadro
è l’idea di un negozio persistente
ensemble se conosci i dati principali che hai
sentito parlare di un negozio persistente e l’idea
è aggiungere un altro concetto a quello
importa un ensemble di negozi persistente
che accoppia insieme i negozi degli assistenti
e quelle porte di persistenza potrebbero essere accese
diversi dispositivi ma potrebbero anche esserlo
sullo stesso dispositivo non è vero?
possono essere negozi qualsiasi, no
requisito che siano diversi
dispositivi o qualcosa del genere quindi è a
meccanismo di accoppiamento in pratica è così
che è una componente, ma sto cercando di
scrivi quindi ho avuto qualche limitazione di design
i vincoli ho detto su me stesso in modo efficace
quando ho iniziato a fare questo ho iniziato
Aprile è solo Ho appena fatto che
nel mio tempo libero quindi non ho fatto un
a tempo pieno e voglio passare attraverso alcuni
di quei vincoli di progettazione prima il
per prima cosa doveva essere non invasivo
quello che intendo è che non dovresti
devi modificare il tuo modello che non dovresti
devi sottoclasse ed è riuscito a esserlo
il contesto pubblico non dovrebbe avere
sottoclasse nel suo oggetto gestito tu
non dovrebbe dover cambiare il tuo oggetto
il vostro personale a tutti veramente giusto il vostro core
stack di dati dovresti doverlo strappare
giù e costruisci e questo è quello che
devi fare con la ricerca di iCloud
devi renderlo piuttosto invasivo
devi cambiare un sacco di cose
l’idea era di renderla non invasiva
il più possibile, quindi dovrei semplicemente attaccarmi
la tua struttura esistente e e giusta
lavorare con speranza
dovrebbe essere indietro agnostico che dovrebbe
funziona con qualsiasi tipo di trasferimento di file
meccanismo di sincronizzazione file Dropbox alto
cloud se vuoi creare il tuo s3
back end perché forse sei un
compagnia che non ti è permesso di farti
pubblico migliore scrivi solo il tuo s3
di nuovo non è un grosso problema, è un
un paio di centinaia di righe alla maggior parte del codice
onnipresenza e vuoi da Omni
gruppo webdav uno più vecchio ma ancora
intorno a ftp corretto dovrebbe uno qualsiasi di questi
lavoro non sto dicendo che ho intenzione di sostenere
loro tutta quella scatola ma tutto ciò che si muove
intorno al file dovrebbe funzionare in effetti esso
dovrebbe funzionare anche con la ricerca Wi-Fi
una connessione diretta con il Wi-Fi dove tu
scambia file allo stesso modo di iTunes
potrebbe farlo anche dovrebbe essere possibile
è solo un altro modo di sincronizzare
File
e infatti ho già incorporato
supporto per un file system locale che conosco
sembra abbastanza folle, giusto perché lo farebbe
affondi il timore del file system locale perché
vogliamo solo fare bene quello che fa
è molto più controllabile proprio
app e il framework sono molto di più
testabile quando non si ha questo debug
ciclo di minuti che puoi eseguire il debug
in tempo reale, puoi venderne due
copia la tua app su un unico dispositivo
può cercare paura il file system locale e
puoi testare in tempo reale, giusto
questo è un grande questo è stato un vero attaccamento
punto per me tutto ciò che il dolore mi ha portato a
questo ed è in realtà piuttosto carina
importante e vorrei che tu potessi farlo
per esempio con iCloud va bene così ti dico
voglio aggiungere uno di questi file system
cosa devi fare per farlo
aggiungi di nuovo il s3 back-end custom s3
è fondamentalmente solo una questione di
implementando un mucchio di budget di protocollo
metodi questi metodi sembrano molto simili
i metodi del suo file manager vanno bene
la grande distinzione però è quella
sono tutti asincroni giusto perché
di solito abbiamo coinvolto il networking
è abbastanza piuttosto semplice
l’hai appena implementato per qualsiasi cosa tu
voglio avere bisogno di fare file esiste un percorso te
Devo essere in grado di rispondere a questo e a te
rispondi chiamando un blocco di completamento
contenuto della directory di completamento del percorso
è creare un buon percorso quindi c’è un
molti di questi li implementano e
sei tornato praticamente fatto è
circa 200 linee penso 100 a 200 linee
perché conosci Dropbox o iCloud I
penso di aver fatto il cloud dell’altro giorno
forse ora al lavoro e probabilmente era acceso
qui per cacciare leoni
l’altra cosa è che ho detto che lo era
testabile è anche testato proprio io
sviluppato il tutto con unità
testare così ho ragione dal non in realtà
dall’inizio ho iniziato senza di esso
Mi sono reso conto che questo si farà davvero male
e meno meno che l’unità di test e così via
da allora ho uh sono stato unitario
testare tutto il modo ed è così
Ho sviluppato ogni componente
fondamentalmente unità di prova come vado in modo che il
il momento è che ce ne sono abbastanza di migliaia
linee di test unitari voglio menzionare ah
come si va a fondere perché si fondono
è in realtà piuttosto complicato in a
situazione peer-to-peer decentralizzata
come questo vediamo così, trattiamo il
prima fidiamoci di reit centralizzato
caso va bene così hai ottenuto hai un
server centrale da qualche parte e tu
può bloccare quel server in modo che un cliente parli
al server ogni volta che vai
verità centrale, questo è il caso
la maggior parte delle persone ha a che fare quindi
succede allora hai così hai un
dispositivo uno e un dispositivo per e sono
fare salvataggi e ogni blocco qui è tutto
le modifiche in un salvataggio vanno bene così puoi
vedi il dispositivo uno ha fatto tre salvare
dispositivo operativo a ha fatto due e
il tempo sta andando così faremo un
nuovo salvataggio su ogni dispositivo e questi sono
sarà concomitante ma succederà
fondamentalmente nello stesso momento giusto questi sono
due nuovi salvataggi modifiche simultanee e
immagina ora che entrambi trovino
la loro strada attraverso la rete e
sono entrambi ora e dispositivo uno e
il dispositivo uno deve ora guardare a questi nuovi
cambia e decide cosa fare con loro
cos’è un conflitto, per esempio cos’è
in conflitto cosa è cambiato
e penserà che va bene cosa faccio
devo considerare che devo considerare cosa
Ho fatto dall’ultima fusione e cosa
gli altri sistemi fatti dall’ultimo
ponte in altre parole solo una roba nuova
solo bisogno di guardare i nuovi blocchi e
Ho bisogno di vedere quali sono in conflitto
e risolverli nel termine deterministico
giustamente questa è una procedura standard
questo è il modo in cui, ad esempio, l’ ICD
funziona funziona benissimo quanto tu hai
ha un server di blocco centralizzato giusto
prendiamo il caso decentrato ora
le cose sono un po ‘più complicate che abbiamo
stati diversi su diversi dispositivi
giusto così ora il dispositivo uno è sulla sinistra
qui e quello di destra ha tutte le
dati e dispositivo mancano un blocco
manca quel terzo blocco dal dispositivo uno
giusto è forse ancora in transito è
sul server sta ancora arrivando
Non è ancora arrivato ed entrambi fanno il
Lo stesso diceva prima del dispositivo giusto
uno fa è un dispositivo per farlo salva
contemporaneamente dispositivi allo stesso tempo
blocco di tues trova la sua strada al dispositivo uno
ora il dispositivo uno è troppo malato per farlo
unire il dispositivo ok si guarda a quello che è
capito ora cosa dovrà fare
includi in questa unione che blocca a destra
sembra che sia la stessa situazione noi
avuto prima sembra che sembra che
la stessa situazione ma è la stessa
situazione non posso semplicemente prendere quelle nuove
due blocchi e diciamo che ci uniremo
quei due bene no, in realtà
prendi quei blocchi quei tre blocchi e
la ragione è che questo secondo blocco
questo blocco dal dispositivo non è mai stato
rispetto al blocco dal terzo
blocco dal dispositivo 1 giusto sciatic voi
includere alcuni vecchi dati in
nel confronto quindi questo è quello di fare questo
quando hai chiamato un orologio vettoriale
devi fondamentalmente istantanee del tutto
sistema ogni volta che fai un salvataggio in modo che il
più tardi puoi ricostruirlo
stato e capire okay questo era
in concomitanza con questo puoi capire
fuori ciò che deve essere incluso in
l’unione va bene quindi è in realtà a
passo più difficile standard migliore
cercando un server
Devo dire che ho un sacco di idee per
questo da questo bellissimo post sul blog da
Millen Jumera da qui chiaro mangiare
cosa scrivono questa grande mela chiara
App Elenco delle cose da fare che è molto popolare e
hanno fatto un ottimo post sul blog su come
fanno la sincronizzazione con chiaro e questo ha dato
ho un sacco di idee su questi vettori
orologi e molti indicatori da indossare
impara di più perché in realtà non lo faccio mai
ha funzionato e quel genere di cose prima di così
sì grande grazie per questo e quello è
un bel post sul blog se sei interessato
in come fare questi decentralizzati
fondamentalmente ok, come si fa?
usa quello che sai non indosserà qualche fonte
codice come si usa questo quanto difficile
è per usare bene questa struttura?
un po ‘di codice sorgente per mostrare a mostrare
come lo si imposta in pratica ci sono
due cose è necessario impostare il
lascia quel file proprio come quello che chiamo
sto utilizzando il file system cloud in questo caso
iCloud quindi ho appena creato un file iCloud
oggetto del sistema, io passo l’ubiquità
identificativo del contenitore che è giusto
identificatore della clodia standard I non l’ho fatto
renderlo insieme e per quell’insieme i
dare a questo file system anche bisogno di farlo
passare il modello oggetto gestito e il
percorso del tour luci sequel mappa e
c’è anche un identificativo globale
identificatore univoco globale per questo
insieme ho impostato il delegato
ora che è tutto ciò di cui hai bisogno
fondamentalmente ora il veloce ora che ora
che l’ensemble può essere in un paio di
stati diversi ma quando quando tu
prima fallo e non hai ancora finito
qualsiasi cosa sia e ciò che chiamo un accordo
ogni stato giusto quindi non viene lisciviato
gli altri negozi quindi hai questo così tu
puoi chiedere l’ensemble sei sanguisuga se
non sei lisciviato, ok, inizia il
processo di sbiancamento e devi fare
questa volta bene la prima volta che tu
inizia ad affondare e questo imposterà a
un sacco di file locali fanno qualcosa
il server se c’è un server o
qualunque sia principalmente l’inizializzazione di
il buco e più tardi una volta già
sono leached tutto quello che devi fare per fare a
Unisci solo chiamato unione con completamento
a destra e che farà quello sguardo alla
nuovo personale ucciso insieme e aggiornato
il tuo database che è effettivamente il
metodo di sincronizzazione l’unico altro
cosa dovresti considerare sono
questi due metodi qui sono questi
sono metodi delegati ogni volta che si ha a
salva sfondo di un oggetto gestito
contesto con dati di base che devi unire
quei risultati quindi devi chiamare
questo per assicurarti che sia gestito
il contesto oggetto sa di quelli nuovi
cambia così sì, tu lo vuoi
sicuramente voglio fare questo giusto e
questo è opzionale questo ti permette
per fornire globale identifica quattro
oggetti ed efficacemente ciò significa
il framework importa automaticamente
la tua biblioteca senza di te
qualsiasi cosa fintanto che ha il suo globale
ID
questo è tutto il codice ce ne sono 20
linee di codice e stai affondando
giusto parliamo di qualcosa fatto
è così facile davvero così al corrente
stato ottenuto circa seimila righe di
il nostro codice di finzione codifica tre metà
mille righe di test unitari quindi è così
circa 10.000, credo tutti insieme io
solo la prima sincronizzazione completa eseguita
una settimana fa quindi è abbastanza nuovo, giusto io
stava davvero spingendo per raggiungere questa scadenza
ma avevo molti componenti ma loro
non stavano lavorando insieme ma ma
è fatto almeno nella prima fase
è fatto sta affondando almeno così è dove
il codice in realtà ha dato un discorso
simile a questo circa un mese fa e a
quella volta ho solo dovuto dire che è così
vapore dove rimani sintonizzato ma oggi io
in realtà è davvero importante
giorno ma perché effettivamente ho un
codice ora e quindi quello che mi piacerebbe fare è
se ho rete vorrei cercare di
spingere questo per farla così che cosa ottiene
un master di origine push
Maestro
per qualsiasi auto hai ok quindi è fatto bene
Farò l’autostop praticamente così eccolo lì
bersagliarlo ora, ragazzi, vieni chiuso, sono bambini
ora il vecchio stile del
il pubblico è un URL, quindi se lo sei
interessato che dovrebbe essere dove è
ora a meno che non lo spinga davvero da qualche parte
non è diverso, quindi sì, il mio nome utente
critico a github in alcune palle
sì, questo è tutto ciò che ho
devo parlare di questo potrebbe portare a casa
è ancora piuttosto presto per davvero
è il pensiero di database decentrato
un problema difficile ce ne sono alcuni
soluzioni già là fuori da iCloud
Apple e TDS ma nemmeno realmente
soddisfacente a mio avviso TR ce ds is
probabilmente l’opzione migliore che hai
il momento e spero che il
gli ensemble di chordate saranno il prossimo passo
praticamente imparando ho imparato molto
le cose da TDS lo imparo molto
cose dalla soluzione Apple e ho
ho cercato di ottenere le cose migliori da entrambi
e aggiusta le cose che pensavo andassero
giusto e spero che questo sia il prossimo passo
coredata su qualcosa quindi dai un’occhiata
se sei interessato e alcuni
l’attribuzione imposta tutto così grazie mille
per quanto riguarda i problemi di sicurezza con l’affondamento
governo dei servizi che controlla il tuo
la spalla è adatta solo per
non sensibile a qualcuno della NSA
è qui adesso è una buona domanda
e come ho detto tutta questa cosa è a
back-end agnostico giusto per poter scrivere
un server sicuro come piace a tutti
sarebbe molto facile stavo solo pensando
su questo punto esatto stamattina lo farebbe
essere molto facile da far decorare
un modello di progettazione se è come voi ragazzi
tutti dovrebbero sapere che uno per prendere dire io
file system di nuvole e semplicemente avvolgere
in un sistema di crittografia che richiede
il file lo crittografa prima di inserirlo
un iPad ma dovrebbe essere letteralmente 50
linee di codice dipende dal tuo
sistema di crittografia forse, ma sta chiamando
in biblioteca o qualcosa che dovrebbe
essere molto facile da fare, quindi è possibile aggiungere
qualsiasi crittografia ti piace al punto esso
non gli importa finché torna indietro
nella biblioteca quando lo legge di nuovo
dentro e torna in un criptato di
Certo, hai ancora intenzione di essere
dati di base quindi sì sì, non ti vedo
davvero un problema se vuoi
criptare questo punto decimale davvero se tu
vuoi fare una consuetudine nel tuo matrimonio
il proprio server si desidera che il proprio
crittografia qualunque cosa dovrebbe essere davvero
facile da fare con te stesso e te
non posso farlo senza quello giusto è
solo che non è un altro problema con I
che non si dispone di questa opzione in modo che
era una prima domanda
potremmo accendere l’ aria molto fredda
condizionamento alternative va bene solo
ha chiamato una luce di seguito yeah bene di
Certo, sì, ho un’app per i coordinatori
quindi volevo scrivere volevo qualcosa
per i dati di base e penso che ci sia
un vantaggio nell’uso di coordinator e
anche se non ti piace
tutto ciò che riguarda i dati di base che pensi
è un po ‘ lento o qualunque cosa ci sia
vantaggio per tutte e due le persone che lavorano
la stessa cosa posso scrivere a
quadro di affondamento per i dati di base e voi
può usare il preferito che affonda per il core
dati considerando che per altre soluzioni se
hai intenzione di creare le tue cose personali
il proprio modello di livello su un’unica vita per
esempio che molte persone penso
crea la propria versione dei dati principali
allora dovrai scrivere il
affondare te stesso giusto così
c’è un vantaggio nello stare insieme
su di te sai di avere uno standard in questo
caso su iOS penso che Cordain sia un buono
soluzione di esempio statico stanza quindi sì
Certo che potresti prendere tutte le cose
che ho inserito in questo quadro e
e applicarli a strutture che affondano
luce uguale e c’è effettivamente lì
è in realtà uno c’è in realtà a
sequel come una società che fa sequel
luce che affonda come qualcuno sa che il
non nominare i dardi che ho sentito su di loro a
pochi mesi fa e che sembrano
sono buoni ma ce ne sono uno
società giusta quindi devi aver fiducia in questo
quella compagnia, ma ancora così lo stesso
stesse tecniche che ho usato sono
tecniche di base fondamentalmente generali
e potresti applicare le stesse cose a a
sequel light sinking framework se tu
volerlo fare
quali sono gli algoritmi e le strutture dati
stai usando per affondare io uso il core
i dati internamente è perché lo so
e immagino che le persone che verranno a farlo lo faranno
lo so anche se le persone che quando
sto cercando il codice probabilmente non core
dati perché utilizzano i dati principali
giusto così internamente io uso i dati di base in
termini degli algoritmi che ho menzionato
brevemente il problema principale con il
gli algoritmi lo stanno solo cercando
problema di causalità cose giuste farebbero
succede contemporaneamente sai cosa c’è
prima quando due cose accadono quasi il
nello stesso tempo puoi prenderti il tuo tempo
inumidisci ti fidi del timestamp quindi io
non mi fido del passo temporale che è
il ballerino che uso un orologio vettoriale per
assicurati che le cose su ogni dispositivo
accade esattamente lo stesso ordine giusto
questo è importante e non mi fido del tempo
francobolli ma timestamp utilizzati per l’ordinamento
certe cose ma non sono um
non sono il principale meccanismo di smistamento I
usa un sistema diverso per quello che è
prelevato da computer distribuiti
la scienza quindi è definita un bloccante migliore
in fondo, ma sì è piuttosto interessante
area di informatica e non ho mai
ascoltato per essere onesto con te a capire
fuori che ora è il primo a essere vera
pezzi
come fa la tua testa è come gestiamo noi
cambiamento reso offline perfettamente bene
non c’è alcun server qui proprio che sia esso
solo salverà le modifiche localmente e
quindi proverà a contattare il tuo cloud
servizio di sincronizzazione e se la tua classe
il servizio di pensiero non è contattabile
avrà solo un errore e la prossima volta
ci riproverà Matt quindi prendi semplicemente
in pratica incolla localmente le modifiche
e poi quando ottiene una connessione
li caricherà così sì no
problema con offline che è quello
questo è molto importante, certo
un altro penso che ci sia come fa il tuo
la libreria gestisce le modifiche fatte uguali
domanda esattamente uguale a un minuto
fa sì sì sì ma è così sì
altre domande um cocoapods yeah
sì, pensavo che scrivessi il codice che potrei
ottenere quella domanda dopo questa è
più facile parlare yeah ora sto andando a
sicuramente aggiungo che è proprio così
è fresco è proprio ottenere che questo è un
Betty sì, dovrei esserlo anch’io presumo sia così
non è difficile, basta scrivere
una specifica qualcosa sì, ho usato iPod a
un po ‘come un utente ma mai effettivamente fatto a
pod così e per la parte di crittografia che abbiamo
ho un discorso successivo giusto Dio dovrebbe essere occupato
sulla roba del file system in questo momento si
abbiamo tempo per un’ultima domanda, penso
o più debole della sua testa, quindi ricordati di farlo
voto e grazie grazie molto

Please follow and like us: