Press "Enter" to skip to content

GOTO 2018 • The Robustness of Go • Francesc Campoy


[Musica]
quindi prima di iniziare volevo solo
generale grida a Ashley McNamara chi
è nell’ospedale del medico e lo sono
indossa una maglietta super bella lei
progettato così se vede il video ciao
Ashley
cool , continuiamo , non ne ho abbastanza
tempo per qualsiasi altra cosa così oggi sono
parlerò della robustezza di
codice Propongo questo stock pensando che
andare era robusto e poi ho iniziato
pensando di più e ho intenzione di farlo
stai parlando di come in realtà forse no
che molto e poi, non appena ho iniziato
pensare era come se Co non lo fosse
robusto ciò che è robusto e ho twittato
su di esso e le persone erano come vedere e io
era come no per le persone reali in realtà
pensa che C sia robusto quale C
incredibile ma è anche super fragile e
è super facile da rompere le cose così
la gente allora era come se dovessi
dai un’occhiata alla nostra linea così saremo
parlando di queste due lingue e
i runtime e gli ambienti che parlano
robustezza quindi parleremo
circa prima cosa significa essere
robusto quali sono le caratteristiche robuste di
le caratteristiche che fanno andare qualcosa in
linguaggio di ballo che considero essere
abbastanza robusti quali sono quelli che
in realtà tipo di rompere quella robustezza
che è triste ma esistono allora lo faremo
rinunciare a cercare di fare robusto
programmi perché a chi importa comunque
e quindi in realtà Erlang è robusto
quindi parleremo di come è possibile che sia
il robusto a cui vado è un ottimo posto in cui parlare
a riguardo perché sai che Erlang era
creato da Joe Armstrong che cammina
lì intorno e poi parleremo di a
nuova speranza, non il film, quindi se vuoi
le diapositive lì online puoi seguire
puoi usare questo bellissimo codice QR I
dovrebbe aver pensato di utilizzare effettivamente
un link per quelli che leggono le lettere ma
è sul mazzo di altoparlanti sotto il mio nome utente
Campoy in modo da poter trovare lì e reale
veloce su di me sono Francis Campo I
ha funzionato anche se l’ho usato
lavorare su Google per un po ‘di tempo
Ero uno sviluppatore avvocato di Google
piattaforma che fa go and machine learning
e anche come qualcuno ha detto che Joseph funk è
un canale YouTube che pubblico ogni post
due settimane tranne quando il mio Mike Briggs
che è come l’ultima volta, quindi non ho postato
il video ma arriverà un giorno circa
CORBA perché odio la mia vita
okay, quindi cosa significa essere robusti
e questo è un po ‘ interessante
domanda, perché quando si pensa
robustezza ci sono molte cose che
potresti pensare come uno di loro
è come qualcosa di molto molto forte e
molto difficile da rompere a destra ma qualcosa
molto forte è molto difficile da rompere potrebbe
anche rompere per alcuni dei motivi
giusto così quando penso alla robustezza
nel contesto dell’apprendimento automatico di
informatica a cosa sto pensando
non si tratta davvero di come sia quando
le cose vanno bene ma come funziona quando
pensa che le cose vadano male
è l’affidabilità di quanto sia facile
rompere qualcosa intenzionalmente o
involontariamente giusto se eseguo a
programma quanto è facile per me scrivere
qualcosa che alla fine si romperà
stesso o come è per me scrivere a
programma che quando le cose vanno a buon fine
sbagliato la connessione I alla rete
connessione fallisce o un disco fallisce o
qualunque sia il mio programma ancora in esecuzione o fallito
graziosamente qualunque cosa ciò significhi
situazione e qual è il contrario di
robustezza al contrario di questo robusto
è la fragilità ed è quando quando le cose
sbagliare vanno anche peggio
l’esempio tipico è questo e se
hai mai visto questo tipo di errori
si è verificato un errore durante la visualizzazione di questo
errore Grazie, cosa hai intenzione di fare
su questo giusto come non si tratta
fare qualcosa che funzioni tutto il
tempo si tratta di lavorare sulla creazione
qualcosa che funziona la maggior parte del tempo
e quando le cose vanno male si maneggia
quelli meglio che è possibile
meglio di questo
quindi parliamo un po ‘di go
la prima cosa è se tu se tu
vai a Y vai esiste lo vedrai
è stato creato da un gruppo di tre
gli ingegneri Robert Whismur
Rob Pike e Ken Thompson mentre loro
stavano aspettando che C ++ compilasse quale sia
tipo di battuta ma un po ‘veritiero al
stesso tempo e una delle cose che
erano infastiditi dal fatto che il C ++ non lo fosse
necessariamente quanto tempo è necessario compilare
ma in realtà il fatto che ce ne siano molti
cose che sono molto fragili e uno di
è il modo in cui gestisci la memoria che è
molto facile da scrivere programmi che sono
sbagliato giusto in realtà c’è un ottimo
parla di B il linguaggio del ballo che
parlano di quanto sia difficile scrivere
fuori e in realtà robusto HelloWorld in
C ++ è incredibile in realtà è davvero
difficile come andare e ruggine cercare di risolvere il
stesso problema con approcci diversi
va come dice oh, vado
per proteggere fondamentalmente tutto intorno
a te stesso tutto sarà come
molto molto molto morbido e senza cuore no
spigoli così in quel modo non lo farai
ferire te stesso
la ruggine in realtà ce la farò
un po ‘più complicato quindi il
lingua il tipo il sistema di tipi del
il linguaggio eviterà questi problemi
giusto così ci sono diversi approcci a
risolvere lo stesso problema di sicurezza della memoria andare
ha puntatori ma non c’è alcun puntatore
aritmetica, ma questo significa bene
i puntatori sono utili perché se ne hai
un oggetto che è 1 mega compagno in
la memoria non si desidera copiare che
oggetto tutto il tempo giusto così forse
quello che vuoi fare è dire di te
so che ho intenzione di passare l’indirizzo a
quello è un puntatore sicuro di cosa si tratta
indirizzo più 4 che conosce bene così
è la cosa che non è consentita e andare
l’ aritmetica del puntatore della memoria è giusta
semplicemente non esiste se non si usa il
pacchetto e salvare che è chiamato pericoloso
per una buona ragione per cui non dovrebbe
usalo in generale c’è anche qualcosa
davvero fantastico che è analisi di fuga e
il scapin Alison è molto interessante
soprattutto per quelli che vengono da C
e C ++ risolve un problema molto specifico
problema che molti principianti in C e C ++
farà questo errore e le persone lo sono
ora i principianti finiranno anche loro
fallo così, lo mostrerò tra un minuto
inoltre c’è la raccolta dei rifiuti che
significa che non ci sono puntatori penzolanti
puntatore penzolante essendo a
sotto a questo hai ancora quel puntatore
ma quello che sta indicando non esiste
più o non è qualcosa che tu
dovrebbe essere a giocare con e automatico
assegni obbligazionari che è molto importante per
tutto ciò significa che è fondamentalmente
impossibile scrivere un codice di programmazione
questo corromperà la memoria che è
sorprende gli unici due modi per corrompere
la memoria ingo sta usando non sicuro usando c go
quale c andare non va, quindi non conta
e il terzo è avere un bug in
il diritto del compilatore che agisce sul
runtime che è abbastanza bello perché
significa che una volta che il bug è stato corretto
il problema è stato rimosso da tutti
lo screening dei problemi va bene così
fondamentalmente risolvendo classi di problemi a
un tempo piuttosto che risolvere un problema
così che cosa vuol dire che scape
analisi bene significa che quando tu
chiami nuovo e di allocare qualcosa che
non significa che questo è allocato in
l’ anca potrebbe essere l’allocazione dello stack
proprio qui, per esempio quello che siamo
sta facendo bene, stai chiamando Neil sicuro
ma poi tu sei quello che è sbagliato e io
non posso modificare perché non posso aggiungere edit okay I
non posso modificare quindi ti chiederò di farlo
immagina che in realtà stia tornando
stella V quindi restituisce il valore di
quale è il suo puntatore proprio sul puntatore
giusto il che significa che il puntatore
di per sé la memoria dell’occhio non lo fa
la fuga non è accessibile dall’altra
programma quindi che il valore può essere assestato
può essere memorizzato lì in pila
il che significa che il problema sarà
più veloce è buono per le prestazioni
l’altro lato se stai assegnando a
int interabile
42 sembra che tu sia qualcosa
trova nello stack giusto perché
non stai facendo di nuovo, ma se lo sei
restituire gli altri a quello che sarebbe
sii sbagliato se fai questa stessa cosa dentro
C che sarà sbagliato perché il puntatore
a V sarà un indirizzo che si dovrebbe
non accedere dopo la funzione
il valore è finito, quindi è un problema
e andare a fare quello che farà sarà
in realtà lo riconosco e solo semplicemente
assegnarlo automaticamente nello stack
non ti importa di quello che sai
pensateci, che è qualcosa di molto
bello da qualcuno che viene dalla classe dei sitios
e infine i controlli vincolati che sono
importante per la correttezza, se lo sei
facendo questo così fai una fetta di 256
byte interi e quindi si accede a
posizione 512, che sa quello che è così
questo in realtà andrà nel panico e dirà di no
no no questo non è corretto in questo preciso
significa che stai facendo controlli extra
tutto il tempo che non può portare
prestazioni un po ‘giù ma
in realtà la correttezza è molto di più
prestazioni importanti e in alcuni casi
il compilatore sarà in grado di dedurlo
questi controlli non sono necessari
e saranno rimossi dopo la memoria
sicurezza parliamo di sicurezza di tipo così
digitare sicurezza abbiamo la digitazione statica così come
molte altre lingue fondamentalmente una volta
dare un tipo a una variabile che non puoi
basta cambiarlo se una variabile è un
intero non puoi mettere una stringa lì dentro
che questo non funziona allo stesso modo di noi
non hanno conversione di tipo implicita per
in per i tipi numerici quindi se si dispone di a
float e un intero e tu provi ad aggiungere
quelli che non verranno compilati ma anche se
hai un 32 e 64 e ci provi
per aggiungerli che non si compilano se tu
vuoi aggiungerli devi dire
sto cercando esplicitamente di farlo
convertire questo valore in quell’altro tipo in
per avere due tipi che sono
compatibile questo è importante perché
che altrimenti avremmo tipo
la coercizione di tipo coercitivo è ciò che
javascript ha esattamente dove piace il cosa
i video sono fondamentalmente basati sul tipo
coercizione in cui hai una stringa più un
numero intero qualsiasi parola e un uomo stringa è un
intero è qualcosa di completamente
diverso che è sempre fonte di confusione
andare solo non lo consente più
le cose riguardano le interfacce che abbiamo
interfacce ma funzionano in gioco
lì la soddisfazione è fatta
implicitamente qualcosa come Python
fondamentalmente dove l’impatto sull’anatra
digitando dirai che se ne hai tutti
i metodi che richiede l’algoritmo
allora hai ragione, ma quello è
controllato a corsa
in oro che viene controllato una compilation
tempo diremo per esempio f println
aspetta il cavaliere quindi c’è un metodo
destra
se passi qualcosa che non ha
il metodo al tempo di calcolo lo farà
dì che puoi dedurre il tipo int come un
rider in argument f println no
implementare lo scrittore perché manca
il metodo di scrittura che è molto bello questo
è uno dei miei errori preferiti in go it’s
super facile da capire chiaro
allo stesso modo puoi fare qualcosa come in C
la stella vuota o il puntatore pazzo ha
Qualcuno ha usato vuoto stella a posto vuoto stella
in fondo quello che stai dicendo è giallo
di tipi è chissà cosa c’è
una volta che hai detto che è una stella vuota hai dimenticato
tutto su di esso proprio di andare abbiamo
l’interfaccia vuota che è tipo di
simile perché puoi mettere tutto dentro
in un’interfaccia vuota ma stiamo mantenendo
il tipo che manteniamo nel tipo di informazione
quindi dopo se provi a dire V quale
avevo 42 anni e ora lo userò intero
come un’interfaccia vuota, quindi ho dimenticato cosa
lo era e poi lo dirò e ora
Lo userò come una stringa che lo farà
non funziona e che non funziona ed è
sarà un controllo in fase di esecuzione no
tempo di compilazione perché sarebbe
praticamente impossibile da fare, ma corro
loro diranno no, non puoi non farlo
questo se scarichi il C ++ e lo faccia
cose come ho anche dimenticato il nome del
il cervello interpreta il cast di questo tipo di
le cose stavano fondamentalmente dicendo semplicemente
fatemi sapere io so quello che sto facendo mi permetta
fallo io so cosa sto facendo che puoi fare
anche lasciarlo andare e salvare di nuovo il pacchetto
un’altra cosa che anche se sembra
strano in realtà aiuta con
rilevare gli errori in anticipo è il fatto che
Ingo se non leggi mai una variabile a
variabile locale saprai compilare e
è interessante perché questo è un errore in
questo errore è qualcosa che molto
i principianti e vanno a scrivere molto spesso cosa
stai arrivando quando ti stai avvicinando
s che è una fetta e che è in realtà
un’immagine è una matrice, quindi stai eseguendo il ciclo
su questo e ne stai prendendo una copia
le righe e poi stai copiando sei
ottenere una copia della cella
quindi stai inviando qualcosa a questo
cell si scopre che quella è una copia
non è un riferimento, quindi quando provi a
scrivi qualcosa che in realtà non sei
modificando qualsiasi cosa così stai dichiarando a
variabile mai la lettura da esso che è
sospetto che non lo compili
l’errore è il tipo di cosa che se lo fosse
non era così sarebbe super difficile
vedi perché quando sto leggendo questo codice
questo sembra super bello, non ne vedo
problema con questo il compilatore dirà
tu allora la cosa famosa in oro
non ci sono eccezioni, invece usiamo
errori e se porti qualcosa, lo sai
se l’errore non è nulla, allora qualcosa va bene
così facciamo tali controlli di tutti i tempi
fanno parte di come scriviamo un buon codice
e questo è qualcosa che potrei dare
un intero discorso su di esso, ma non c’è
in realtà un discorso davvero intero su di esso
che è molto buono grazie alla chiamata di Dave Jenny
gestire gli errori con garbo che è a
davvero una bella chiacchierata spiega come noi
fare errori e andare la cosa importante per
la robustezza è ciò che accade quando hai
sono state fatte eccezioni ed eccezioni
Google per C ++ quindi non può fare
percepire che quando creano un nuovo linguaggio
hanno anche vietato le eccezioni, ma direttamente
non aggiungendoli alla programmazione
lingua se vedi questo codice dove
stai dicendo oh, sto andando a fornire
questa funzione dove qualunque cosa tu possa
andando a farlo lo farò dentro
un mutex a destra l’esclusione reciproca solo uno
la funzione alla volta potrebbe essere chiamata no
importa da quanti posti sei
eseguendo ciò che succede se F lancia un
eccezione
beh, il mythix non sarà mai sbloccato
il programma bloccherà per sempre e il
il sistema è giù giusto che è un serio
problema
ecco perché in go c’è no
eccezioni e se sai andare sarete
come, ma ci arriveremo più tardi, quindi cosa?
sui canali perché fanno parte di questo
robustezza scrittura corretta concorrenza
i programmi concorrenti sono davvero difficili
davvero molto difficile e lo direi
in realtà la strada va funziona e il
caratteristiche di concorrenza che fornisce
permette a Gopher di scrivere un codice migliore
è facilmente
corretto in modo molto veloce modo in cui
funziona è che abbiamo goroutine che sono
i golfisti carini i golfisti carini
comunicare tra loro usando
canali che sono di base come Linux
pipe ma sono digitati e contemporaneamente
sicuro da usare e poi ce n’è uno in più
cosa che è selezionata per quando vuoi
fare più cose sui canali
questi sono i tre concetti di cui hai bisogno
conosci la concorrenza e con questo tu
avere tutto bene così questi in realtà
va davvero bene quindi abbiamo parlato di tutto
delle cose che sono buone parliamo
le cose non sono così buone vogliono solo
per assicurarmi di essere in orario okay, sì, va bene
fresco quindi cerchiamo di parlare delle cose che
sono che rendono fragile lo stato mutabile
stato mutevole che è condivisa che è
molto molto male se ne chiedi qualsiasi
programmatore funzionale che ti diranno
quello stato mutabile condiviso è il peggiore
unica cosa che potresti avere in una straniera
lingua quindi cosa succede qui cosa noi
è che abbiamo una funzione ticker quella
ogni secondo sta stampando il valore di a
contatore e quindi abbiamo un endpoint web
per un server web che ogni volta
è colpito solo aggiunge qualcosa al
contatore così quando si esegue questo funziona
ma questo è sbagliato giusto perché è questo
sbagliato qualcuno sa che tu sai sì sì
ci sono due cose questo ogni singolo
la richiesta verrà gestita da un’altra persona
routine di ragazza in modo da poter avere due
diverse richieste di go aggiungerne una al
stesso tempo e solo uno di quelli lo farà
in realtà funziona ancora peggio il comportamento
potrebbe essere indefinito perché tutto a
all’improvviso ottieni una gara di dati allo stesso modo
tempo che potresti scrivere allo stesso modo
il tempo che il raccoglitore sta leggendo che è
anche diversi tipi di corsa dati ma
quando lo si esegue non si vede questo quando
lo vedi bene quando lo hai
abbastanza alto carico e tutto ad un tratto tu
inizia a perdere segnalini e buona fortuna
pensandoci bene per fortuna che abbiamo
quella gara che è la corsa dei dati
rivelatore che è molto bello e quando
tu quando esegui lo stesso programma con
la gara
rivelatore abilitato di cui hai solo bisogno
aggiungi – gara super semplice che otterrai
dati di allarme corrono e te lo diranno
esattamente dove stava leggendo dove
stava scrivendo o se per andare le routine erano
correndo allo stesso tempo le parole erano quelle
Linee
quali erano le ID della routine della ragazza
tutte queste cose per essere in grado
per capire cosa sta succedendo abbastanza
facilmente ora il problema è che i dati
la corsa non è gratis
è che rende il tuo amico andare più lento così
secondo la mia opinione personale dovresti correre
il tuo test con data race abilita tutti
single time non mi interessa se è lento
fare test più veloci non mi interessa dovrebbe
essere dati ragionevoli perché è davvero
importante e forse in produzione quando
stai schierando un conservificio che potresti
in realtà anche distribuire con le loro vie aeree
attivare vedere se funziona e una volta è
lavorare quindi ridistribuire con i dati è
abilitare e inviare correttamente il traffico di produzione
in questo modo ogni singola corsa di dati di avviso
questo è un problema che è qualcosa di te
bisogno di risolvere prima di distribuire a
Neo puntatori di produzione ho dato il tutto
parlare di puntatori neo
sono l’errore di 1 milione di dollari o 1
miliardi di dollari non li ho nemmeno
ricorda questo errore molto costoso
destra
ho dimenticato il nome della persona
puntatori inventati ora, ma ha detto
in realtà, puttana, sì, la vedi puttana lui lui
piegato i puntatori e ha detto che era il
il peggior errore che abbia mai fatto e poi
i creatori d’oro vengono e sono come
sai cosa non abbiamo unghie
puntatori ma anche neo taglia i canali
nuove mappe e malfunzionamenti tutti questi sono
sarà Neil, quindi tutto andrà
dite che ho dato un’intera discussione in cui fare finta di niente
2016
su questo e ti invito a guardarlo
l’intera idea di questo discorso è sì Neil
i puntatori hanno siti brutti ma in realtà
sono molto utili e vanno se ne hai uno
puntatore a un tipo che chiama una funzione in
non fallisce necessariamente che significa
che i valori di Neil sono effettivamente utili e
andare soprattutto per le fette e non
funziona ma fette e canali e
ricevitori e tutto questo
I valori di Neil sono assolutamente soddisfacenti per alcuni
altri come Neil Maps
sono in realtà così come sono
non sono grandi ma sono lì e
mancanza di generici, sì , non c’è
generici che è buono in alcuni siti in
alcuni modi perché rende il primario
linguaggio più facile da capire e
più semplice da imparare e tutte queste cose
che è grande ma quando non lo hai
i generici ci sono molte cose che sono
difficile da implementare uno di questi è berretti
un modo molto carino per gestire gli errori è vicino
usando Monat il monitor degli errori o il
forse Monad sono grandiosi per questo e per me
ha tenuto una conferenza alla porta nel 2015
tanto tempo fa, così nel 2015 ho tenuto un discorso
su cosa abbiamo provato a fare monadi e
vai così ho provato e funziona ma è così
doloroso che non ne valga la pena, è un
davvero pessima idea, ma il punto è
che l’API si finisce per avere
in realtà abbastanza bello quindi direi che se
andare con i farmaci generici che sono a portata di mano
sarebbe più bello e più facile da gestire
ci sarà un vecchio problema di svantaggio
il linguaggio primordiale essere più difficile da
capisco ma non so dove sono
non so cosa dovremmo fare , non lo sono
dicendo che dovremmo avere dei farmaci generici, sono solo
dicendo che ci sono cose buone su di loro ho
anche detto andare non ha eccezioni
invece eheh ha il panico sicuro di quello che sono
qual è la differenza non molto sono
in realtà sono praticamente gli stessi panici
la stessa cosa che sono le eccezioni
solo non chiamato eccezioni perché il panico
è più su questo è quando sei
Davvero in panico ci sta letteralmente
nient’altro che potresti fare bene così per
istanza che non so tu provi a
allocare memoria gira che non c’è
più memoria cosa hai intenzione di farti
può tornare ora e ciò fallirà in seguito
oppure potresti semplicemente fallire ora non c’è
punto non c’è alcun senso nel tentativo di
continua diritto in modo che il punto in cui
sei nel panico Mi piace dire che sono i panici
usato eccezionalmente mi piacciono le eccezioni
le eccezioni sono una cosa che vedi tutto
i panici del momento giusto sono davvero
e il modo in cui ti riprendi da loro è vicino
utilizzando la funzione di recupero il recupero
la funzione che farà è che saremo
chiamato sempre all’interno del primo
funzione che significa che sarà
chiamato alla N di main e alla funzione
lo stavi definendo, non importa cosa
giusto così anche se c’è il panico
verranno chiamate le funzioni differite
lì puoi andare a recuperare e così sarà
controlla se siamo arrivati ​​a causa di un panico
e quindi ti darebbe quel valore così
è così che puoi gestire questi errori
che è in anticipo perché poi significa
che sì abbiamo dei problemi, ma possiamo
riprenditi da loro così sai che possiamo
mantenere il nostro programma in esecuzione quale è
quello che vogliamo così un altro server HTTP questo
Il server HTTP è semplicemente ogni volta che chiami
quando riceve una richiesta HTTP
panico dicendo boo cosa succede
bene il pacchetto HTTP in realtà recupera
da quell’errore e stamperà a
messaggio dicendo hey c’era un panico ma
non ti preoccupare
andremo avanti , stiamo bene e basta
continua andando il server HTTP non lo farà
scendi bene ora fai questo andare in panico
boom ora il panico avviene in un altro andare
routine così la pila di chiamate che siamo
salendo non include l’HTTP
pacchetto che significa che non è così
includere un recupero che significa che il
il panico non verrà catturato, il che significa
che tutto crollerà per intero
Il server HTTP andrà in crash a destra, quindi no
importa quanto tranquillamente leggi il tuo codice
chiunque può scrivere va nel panico e prende il tuo
server down quindi go non è robusto quale è
triste ma allo stesso tempo se pensi
a riguardo non importa quanto robusto sia il tuo
il linguaggio brahmin è se il tuo computer
prende fuoco a chi importa e cattura
spara a nient’altro che dire prendere fuoco, ma io sono
collegare il computer alla rete
qualunque sia verso il basso potrebbe accadere al
nazione
o anche per qualche motivo la CPU si ferma
lavorare come queste cose accade bene
ha avuto se non accadono molto spesso
finché non ci sono miliardi di computer e
poi succede ogni secondo, quindi questi
sono cose che non puoi davvero fare
quindi non ha senso cercare di farlo
robustezza quindi dovremmo semplicemente rinunciare e
vai così, grazie
ora sto scherzando ora che questo è un
punto importante giusto perché non importa
quanto è buono la lingua principale è
non sarà robusto, non c’è modo
può farlo ma Erlang è robusto Joe
rispondere ha dato un discorso su come è possibile
fare programmi incredibilmente robusti che funzionano
per sempre guariti da se stessi sono incredibili
miracoli di informatica e non
solo quello, ma raggiungono nove nove di
disponibilità che è assolutamente totalmente
falso puoi cercarlo e trovarlo
questo non è corretto, ma anche se lo è
non nove nove ed è solo cinque nove
è ancora incredibile, quindi Erlang
ha ragione, quindi come fanno a farlo bene?
questi mi spendono un sacco di tempo a fare questo
photoshop di Joe Armstrong perché io
davvero la sua posizione su questa immagine che ho fatto
in realtà un gin scimpanzé, lo so davvero
come si pronuncia comunque c’è un
parla davvero bene che ha dato è
chiamato sistema la corsa per sempre auto collina
e scala e lo consiglio vivamente
tutti per andare a vederlo perché è uno
dei miei discorsi preferiti
è un cubo informativo e in quelli che parla
circa sei regole che ci sono
necessario per la lingua prom o un sistema
in generale per essere robusto il primo è
isolamento diritto che significa che se
qualcosa non funziona, va bene quel componente
fallirà ma il resto dovrebbe ancora essere
va bene così in movimento se hai un guru
i panici di esca e quello panico non sono tagliati
l’intero sistema va giù in modo da andare che è
non fornire l’ isolamento in modo da ottenere la concorrenza
Erlang fornisce la concorrenza che hanno
in lavorazione
che sono in realtà molto simili a
minacce di scusarsi per minacciare di andare
routine super economiche e puoi correre
migliaia di milioni di diamanti in a
singolo in una singola macchina questo è molto
bello il sistema di concorrenza è a
un po ‘diverso e andare abbiamo
canali compagnia aerea ha attori Pro è che
se c’è un’intervista davvero buona che
Ho dimenticato di aggiungere, ma c’è un ottimo
intervista a due con Joe e Joe
Armstrong e il creatore dell’attore
Modello Proctor parlando di come
il modello dell’attore è migliore della comunicazione
processi sequenziali che è quello
con i canali perché è possibile implementare
canali con attori e non l’altro
in modo che sia abbastanza potente
sono molto simili quindi direi di andare
Concurrency fallimenti abbastanza buoni
rilevamento così quando qualcosa va storto
lo notiamo proprio in Erlang, tu hai
cose come monitor così in pratica quando a
processo non riesce è possibile ottenere una notifica
da qualche altra parte dicendo hey quello
è caduto giusto e quindi puoi farlo
ignoralo o puoi fare qualcosa
va bene lo rileviamo perché il
spero che l’intero programma fallisca proprio così
è facile da rilevare ma non c’è molto
più di quello
avranno l’ identificazione dei guasti e
anche un diverso identificativo errato
abbastanza interessante perché non lo è
di sapere che qualcosa è caduto
di sapere perché è caduto e questo è
abbastanza interessante perché così via
potresti analizzare il panico come forse lo sono io
non consiglio di provare a farlo a
tutto come per favore fatto in Erlang quando tu
pan quando si verifica un errore in un processo
può effettivamente dire hey sto fallendo questo è
il motivo per cui potrebbe essere qualcosa
da una traccia di stack a una stringa o qualsiasi
altro valore Joe Armstrong e T star
parla di te potresti inviare un intero
database che non raccomando neanche
ma tu fai e poi puoi agire
va bene , non è proprio il let
la vita ha ottenuto l’aggiornamento questo è qualcosa che
Non l’ho mai usato con Erlang, ma è così
fondamentalmente
di essere in grado di distribuire una nuova porzione di a
programma mentre è in esecuzione e non prendere
giù e basta aggiornarli aggiornando
codice basta continuare a correre che davvero
mi ricorda questa immagine perché è
sembra davvero pericoloso ma è così
in realtà funziona molto bene non andare
fai questo non mi piace nemmeno pensare
di avere questo mai non penso
che qualcuno vuole usare andare così non puoi
fai questo qual è il punto di questo bene se
è necessario interrompere il programma per l’aggiornamento
significa che tra quella parte
dove lo fermi e ricominci
potresti perdere richieste in modo da avere a
piccoli tempi di fermo lì dentro, giusto così
perché l’aggiornamento del codice live è importante
e infine ha anche parlato stabile
deposito e mi piacerebbe parlare con lui
su questo perché in realtà non sono quello
sicuro di cosa intenda stalla stabile
è una memoria che ti permette di
fondamentalmente fare le transazioni così quando lo fai
qualcosa su di esso o funziona
completamente o entrambi o non riesce
completamente ma non è come me carne
rimane proprio così, per esempio se ne hai
sequel database quando si fa a
transazione che hai se hai
altri database che potresti avere lo stesso
ma ad esempio se ne indossi due
se si sta eseguendo su un disco rigido a meno che
è un file system transazionale molto
spesso se il programma fallisce potresti finire
con corretti file corrotti giusto
non è stabile, quindi lo spazio di archiviazione è stabile
importante avere un sistema distribuito
questo è solido in tutti questi sei
le regole ti permettono quindi di dirlo
incidente che è qualcosa che Erlang
propone di dire se qualcosa non va
solo crash grazie
se qualcosa è sbagliato, basta crash no
preoccuparsi che qualcun altro risolverà il problema
pasticcio destra questo è solo lo si può fare
una volta che hai davvero capito
le sei regole prima che l’ oro non lo faccia
quindi lasciarlo perdere è un brutto
strategia
quindi chi vince Erlang contro va bene o a
nove contro andare bene ho detto alla fine
rilevamento del riempimento sì perché
la vita di keine ha ottenuto l’ aggiornamento quindi non in
stoccaggio stabile
Intendo lei come un magazzino stabile perché
usano in Asia, che è un database in
vai puoi anche usare quel database così per
giusto perchè non mi piace, va bene per me
libro che significa che abbiamo stabilità
deposito per te e questo il mio meglio
diapositiva guarda questo lavoro, vieni ora
c’era una bella animazione lì dentro
aspetta un secondo che tu vada
Grazie a voi ho speso un sacco di tempo a fare
questo quindi perché la nuova speranza è la nuova speranza
è kubernetes perché bene perché con
kubernetes sei in grado di farlo
soddisfare il resto delle regole che vanno
non porta da sé kubernetes così
installazione fornita da Kubernetes
soluzione si molti come ovunque
prima di tutto funziona su container quindi se
un contenitore va giù non si preoccupa
chiunque altro
ci sono spazi dei nomi così puoi persino
isolare quei contenitori da
interagendo con l’altro che hai
più nodi quindi se una macchina si ferma
a nessuno interessa perché ce n’è dell’altro
macchine e non solo, ma tu hai
più cluster quindi se un intero paese
perde elettricità, ce n’è un’altra
Paese in cui si hanno altri dati
centro che trovi giusto quindi installazione
perfetta concorrenza stupefacente
beh, ce l’avevamo già con go fondamentalmente
l’unica cosa che stiamo ottenendo è che tu abbia
più parallelismo sarai in grado di correre
più repliche su macchine diverse
e cose del genere, ma non proprio
aggiungere altro da quel punto di vista fallimento
individuazione questi in realtà dove
kubernetes è incredibile perché lo farà
controlla i tuoi contenitori gratuitamente
giusto così verrai effettivamente controllato
tutto il tempo stai bene stai bene
stai bene non stai bene con quello nuovo
giusto questo è quello che vuoi se qualcosa
fallisce sarà appena riavviato
automaticamente quale è anche la compagnia aerea
fa anche riavviare le politiche consentono di
anche rilevare quelle cose e fare le cose
di conseguenza quando qualcosa lo fallisce
non ha bisogno che dovrebbe essere riavviato
automaticamente forse vuoi farlo
qualcos’altro si può anche fare quelli
l’identificazione di guasti di cose
Fai fortuna , quindi puoi leggere il
registra no non farlo
Intendo roba Locke di sicuro ma non farlo
leggere il registro in modo che la tecnologia, ma succede come
con una macchina che è davvero pessima
sì, io considero ma c’è una definizione
registro che non avevo idea esistesse ma
quando un contenitore va giù puoi scrivere
a quel file e che sarà parte di
le specifiche del contenitore del tuo piatto
effettivamente così se un piatto va giù puoi
proprio lì e poi chiedi a hey quel piatto
è caduto quello che è successo e otterrete il
messaggio in modo da ottenere esattamente la stessa idea di
in Erlang hai questo concetto di essere
in grado di lasciare un messaggio che sto per morire
ma questo è il motivo per cui è necessario aggiornare il codice in tempo reale
certo che abbiamo liners Pro pro liveness
e sonde del raggio e la vita in esecuzione
aggiorna cos’è che stiamo facendo rotolare
aggiornamenti che significa che puoi sì io
capito , puoi migrare da v1 a v2 o
essere 11.2 v1 punto dicendo dicendo hey che ho avuto
tre parti nella prima versione e voglio
finire con tre parti sulla versione
vero per favore capisci cosa sta succedendo
fare è iniziare un nuovo pod per la seconda versione
e una volta non è solo vivo, ma pronto
immaginate di avere un sistema che
richiede un minuto per iniziare è in esecuzione
ma ancora non pronto a rispondere alle richieste
questa è la differenza tra leggerezza
e prontezza così una volta che sarà pronto lo farà
abbattere uno dei versione uno allora
inizia una nuova attesa per lo stop di prontezza
uno e continuare così significa questo
che se per qualsiasi motivo c’è qualcosa
sbagliato il deploy si fermerà così da te
non avrà alcun problema di downtime
perché una nuova versione è rotta
a meno che non sia anche la tua sonda di prontezza
rotto e poi sei fuori di fortuna e
stoccaggio finalmente stabile, certo che già
ce l’ aveva prima quindi perché no ma anche
kubernetes viene fornito con quel CD che è un
ottimo esempio di archiviazione stabile
può anche usare database sequel o altri
altro è quello che vuoi
quindi in conclusione quindi compagnia aerea e via
se li paragoni o come vince chiaramente
ma Erlang non è un raggio robusto sì e se
ti converti in quello e confronti err
sdraiato in cima al raggio contro andare sopra
Kubernetes vedrai che non lo faccio
sapere come fare animazioni, ma secondo
che è in realtà esattamente robusto come
fascio così kubernetes non è qualcosa
rivoluzionario per quelli che erano
già usando il raggio se lo stai usando
compagnia aerea o utilizzando un mixer che è sorprendente
stai già usando un sistema che ha
stato incredibilmente robusto per molti
anni ma per quelli che corrono diversi
programma le lingue straniere quindi basta andare ma
potresti anche scrivere un altro
linguaggio letteralmente potresti scrivere
in Java si potrebbe essere scrivendo a
JavaScript kubernetes lo fornirà
livello extra che consente ai tuoi programmi di
essere più robusto mi piace finire per ringraziare
due donne che mi hanno aiutato a scrivere questo discorso
Veronica e Miriam Veronica sono davvero
bravo un po ‘, signore, Miriam è davvero bravo
alla sua linea e hanno fatto molto parlare
meglio così grazie a loro e ho finito
quindi grazie mille e ne abbiamo alcuni
tempo per le domande
[Applausi]
va bene si grazie Francesca oh e
sì, se qualcuno ha l’app sentirsi libero di farlo
inviare domande attraverso il go to
App di Chicago o alza la mano se tu
ho qualcosa da chiedere, ne ho uno da calciare
E ‘solo perché non conosco l’ONG
ecosistema ben al di sopra della tua testa
cosa pensi che sia il più robusto
programma go comunemente usato o anche solo
che hai visto come sai puoi
arrivare a cinque 9 con un go davvero buono
programma quindi direi che probabilmente
kubernetes il fatto che lui sta portando
andare all’ascesso, andrei con un busto a qualcuno
non per il divertimento che sta portando go
potrebbe piovere in qualsiasi altro
lingua e ancora essere robusto perché
è l’ architettura che conta giusto
kubernetes è una riscrittura open source
versione di una versione interna su
sistema interno in Google chiamato
board che sta portando C ++ giusto così è
non riguardo la robustezza della lingua
di per sé riguarda l’architettura
Scrivi
fantastico, abbiamo una domanda sull’app
chiedendo una sorta di dipendenza
gestione e versioning e vai in qualche modo
confronto con come nodejs o maven o
qualcosa del genere e si chiede perché non l’ha fatto
vai ad abbracciare il tipo di no
pensa no, penso che le cose stiano andando in un
direzione diversa ora perché non è andata
dovrebbe fare la scelta che molto
altre lingue che uscirono nel
primi anni 2000 ad avere così versione
dipendenze e fonte distribuita
controllo e tutto così credo che il
la cosa più importante da sapere è che noi
non ho ancora deciso
abbiamo suonato così tanto tempo
tempo di avere un sistema di gestione delle versioni
perché proviene da Google dove noi
avere un pronti contro termine quindi non abbiamo versioni
è abbastanza facile in questo momento no
tutti dovrebbero farlo è un non molto
buona idea se hai più squadre e
non avere molti ingegneri da mantenere
il tuo repo quindi abbiamo iniziato a farlo
vending perché è il modo più semplice
dove hai tutto il potere di fare
qualunque cosa tu voglia basicamente copi
quel pezzo di codice che dipendete
si mette all’interno del repository e
allora vuoi aggiornarti bene, vai tu
ottenere una nuova versione e si inserisce lì il
il problema è che l’aggiornamento può essere
doloroso quindi è per questo che creiamo strumenti
intorno a quello DEP è lo strumento che io ancora
usa personalmente quello che ti permette di gestire
questo in un modo molto semplice fondamentalmente
puoi dire hey trovare tutti i
dipendenze che ho una volta che porti
il tuo programma li memorizzerà e poi
quando vuoi aggiornare a qualcosa
vicino a te hai appena aggiunto un file che dice
in realtà voglio aggiungere per andare al prossimo
versione e lo farà da solo
c’è una nuova cosa chiamata Vigo che è
quello che tutti dovrebbero provare
fuori ora non ho ancora provato e
è un’idea simile ma la più bella
la differenza importante è che no js ‘e
MPM e tutti questi gestori di pacchetti molto
spesso quello che fanno è che tu sia
avere molta potenza su quale versione tu
voglio correre ma il default è
l’ultima versione che è pericolosa così
a Vigo quello che facciamo è l’altro modo
in giro quindi diresti se dici 2.10 ma
a un punto niente di che andremo a
prova a usare zero finchè è
disponibile e se si desidera eseguire l’aggiornamento a
qualcosa di più alto quindi dillo perché
altrimenti cosa succede se una nuova versione
vieni appena schierato e senza
anche notando che stai implementando un nuovo codice
proprio così Vigo e lì il principale
la differenza è che Vigo è molto di più
conservatore per le persone che non lo sanno
bene l’ecosistema diresti che c’è
un discorso o un post sul blog da qualche parte su come
hey queste sono le migliori pratiche questo è
come dovresti effettivamente usare come no
azzeccato Vigo così per quello che direi che ho fatto
la documentazione di ciò è sorprendente ma
inoltre c’è stata una bella conversazione da parte di
creatore dell’app che ho dimenticato il suo
nome mi ucciderà Sam Boyer lui
ha dato un keynote gopher con l’anno scorso
su questo spiegando come è successo
e la decisione presa durante il
processo e cose del genere molto buone
parlare per Vigo c’è un vero post sul blog
marchio di Russ Cox dal team di go che
lo ha spiegato molto bene
tutte le altre domande del pubblico
Ne ho uno quindi immaginiamolo
il go-to esce e ha stile Erlang
come scambiare codice a caldo sì, si potrebbe
funzione di swap magica
implementazioni su una routine di live go o
Qualcosa si userebbe quell’idea
si e si si è un terribile nel
Direi di sì, ma avrei sicuramente usare
perché io amo così sono sicuro che anche tu
sonic PI quindi sono un PI basato sull’idea
che puoi effettivamente aggiornare una funzione
e continua a correre in Dio che è
impossibile semplicemente impossibile in questo momento
Mi piacerebbe essere in grado di farlo perché
questo statico un sì compilato e abbiamo
plugin ma questi plugin sono caricati
in modo dinamico ma solo una volta
così poi ho rotto quella cosa che è
disgustoso
quindi per favore non ho nemmeno intenzione di dire
cos’è ma fondamentalmente quello che dice è
ogni volta che si tenta di caricare sul vostro file,
dirà che ho intenzione di compilarlo e
caricarlo e ho intenzione di dare
hai un nome casuale in modo che tu abbia un
nuova cosa il problema è che, naturalmente
non ci sono garbage collection per questo
quindi dopo un paio di minuti la tua
il programma si blocca ma va bene, sì, molto
di persone davvero lode va come piccola
uscite binarie statiche per cose come
Costruire come file di finestra mobile di scratch che
è roba così carina sì, ti senti?
come se fosse il futuro
un carico leggermente più dinamico come il caricamento a caldo
la cosa ha benefici come benefici reali
per una specie di futuro, quindi i sistemi che ho
ho visto un sistema che mi ha davvero emozionato
che è così va e il suo tempo di esecuzione ha a
API abbastanza chiara e che cosa qualcuno
stava proponendo stava dicendo bene perché no
usiamo questa API e i fratelli di runtime
vedi dicono che è un runtime di Windows o a
Linux run time o qualunque cosa sia
runtime distribuito giusto così è
programma ogni volta che stai eseguendo un nuovo
routine di ragazza
La routine della ragazza di Danny potrebbe essere in esecuzione a
macchina diversa che non avremmo fatto
vai più come Erlang / raggio che è
super interessante ma è una ricerca
problema adesso
quindi se è successo penso che sia davvero
interessante perché poi permetterebbe
andare ad essere forte come andare Plus kubernetes
senza bisogno di kubernetes e penso
che il runtime di seguito potrebbe effettivamente funzionare
essere kubernetes che è una specie di ADA ma
potrebbe funzionare e penso che sia super
interessante questo è qualcosa che io
piacerebbe vedere un giorno così simile
i kubernetes diventerebbero fondamentalmente un go
scheduler di routine e da nessuna parte si si
e sa tutto così, se lo hai
canali tra due routine perché
stanno per comunicare così tu
dovrebbe essere in esecuzione la stessa macchina se
possibile e cose come questa qual è il
il nome di quel progetto è in realtà
qualcosa che ho sentito internamente
Google ma era open source e lo so
Posso parlarne perché non lavoro
a Google lo so ma anche perché era un
post sul blog pubblico ma non ricordo
il nome è bello, grazie mille
Buon Francesco
tu

Please follow and like us: