Press "Enter" to skip to content

GOTO 2014 • Idioms for Building Distributed Fault-tolerant Applications with Elixir • José Valim


quindi grazie per essere venuto a questo discorso
sull’elisir solo per iniziare a dare un
idea di cosa parlino in questo modo
non parla di ricette per la costruzione
distribuito e fault tolerant
applicazioni è più di un discorso come
Alex qui quando si scrive software
elisir e anche il nostro link come te
avvicinarsi da un meccanismo diverso
e hai bisogno di software di progettazione in a
in modo da ottenere cose come la concorrenza
distribuzione e fault tolerance come a
conseguenza del tuo software design così
è fondamentalmente l’idioma che ha anche il
linguaggio che ti permette di ottenere quelli
le cose come conseguenza e stiamo andando
per rompere questo discorso in tre parti principali
il primo è molto veloce
introduzione come l’ elisir è diventato il
il secondo riguarda gli idiomi e come
loro avranno intenzione di influenzarti
sviluppatore e la terza parte è cosa
l’elisir specificamente è perché al akir
è un linguaggio di programmazione su cui gira
la prima nella macchina virtuale e altro
l’unica macchina virtuale della JVM
molte lingue che vengono eseguite in questo virtuale
macchina così che elixir sta portando a
il tavolo in questo da questa prospettiva
ok e allora se abbiamo tempo possiamo fare a
un po ‘ di domande di codifica dal vivo e
così via, iniziamo quindi a parlare
su come una conferenza è arrivata ad essere un po ‘
un po ‘della storia, dobbiamo andare a
un po ‘indietro nel tempo, sono anche nel
rails core team il framework web delle rotaie
e molto tempo fa a questo punto
2007 2008 abbiamo avuto un rilascio di rails 2.2
e una delle grandi cose in questo
il rilascio era che le rotaie erano finalmente thread
sicura a posto e l’intera idea di essere
thread safe è la squadra principale di rail sapeva
quella concorrenza stava diventando più e
più importante giusto così che cosa volevano
è questo
dovresti farle un’applicazione per i binari
distribuirlo in una macchina e se questo
la macchina ha otto core
dovrebbe essere in grado di utilizzare tutti i core
ok ma la cosa interessante del
il thread di parole salva che non è così
non si tratta di utilizzare tutti gli otto
core in modo efficiente si tratta di utilizzare tutti
gli otto core in un modo che non lo sono
andando a crash proprio come si può ottenere
il tuo codice funziona con core ed è
andando a lavorare bene non lo farà
crash e quindi abbiamo avuto questo nella versione
note e più tardi mi sono unito al nucleo delle rotaie
squadra e ho scoperto che questo
era un raggio menzogna non era realmente filettatura
sicuro perché è difficile come si fa
dì che qualcosa è sicuro per te
hai un sacco di heisenberg a cui provi
debug e quindi i bug non ci sono
più ma quando è in produzione
si presenta e per molte ragioni
a destra è stato un lavoro molto frustrante
è stato difficile eseguire il debug è stato difficile
pensare a buone soluzioni perché il
astrazioni che abbiamo qui loro te
sapere quando è più imperativo
lingue orientate agli oggetti che non sono
buono per risolvere quei problemi di concorrenza
e così sai che ero così 8 mi fermo e
iniziare a pensare a me stesso se la concorrenza
sta diventando sempre più importante
giusto o stiamo iniziando ad avere di più e
più CPU ho bisogno di trovare una buona soluzione
e sapevo che c’era una categoria
c’è una categoria di programmazione
lingue che risolvono veramente questo problema
davvero bene non ho detto va bene che voglio
indagare voglio andare più a fondo e poi
Ho iniziato a scrivere software funzionale
i linguaggi di programmazione li studiano esplorano
loro e fanno davvero concorrenza
più facile ok e ci sono molte ragioni per
quello e penso effettivamente quanto segue
parlare di questo riguarda l’immutabilità
coprirà alcuni importanti
aspetti giusti ma voglio solo concentrarmi
su due in questo momento, che è il primo
inclusione del linguaggio di programmazione noi
in genere hanno lo stato esplicito giusto
quindi stiamo parlando di oggetto
orientamento abbiamo come oggetti da avvolgere
intorno a uno stato e molti dei
problemi di concorrenza
vengono esattamente per esempio che hai
due pedate o con auto diverse per
Ad esempio cercano di cambiare lo stesso
posto nella memoria va bene in modo da ottenere un
segmentazione guasti cose che hanno corrotto
le cose non vanno come spettatore come
atteso perché due cose stanno provando
per andare in quello stesso posto va bene così e
è difficile capire queste cose
perché questo si nasconde dentro quelli
oggetti giusti ma se iniziamo a trattare
lo stato è più diviso, più facile
per vederti vedi oh ecco dove ho un
stato e posso vedere che due cose sono
forse cercando di cambiare qui al
allo stesso tempo diventa molto più facile ragionare
circa in modo che è un passo giusto, ma il
il passo più importante è che ci proviamo anche noi
per incontrare le cose il meno possibile
così invece di andare se ho un array
prova a mutare quella matrice in memoria da
aggiungendo un elemento non lo faccio
Penso alle trasformazioni che ho
array e poi se voglio aggiungere un
elemento a cui ottengo un nuovo array e
allora iniziamo a lavorare con i dati
strutture che funzionano molto bene
verso la trasformazione
invece di mutazione, quindi questo è stato davvero
interessante e quando sono arrivato a questo punto
e questa realizzazione ha detto che va bene così
è una buona direzione per farlo davvero
sentito identificato esattamente quelle soluzioni
perché molti dei problemi che ero
avendo lavorato con i binari come
esattamente perché non stai seguendo
proprio quelle linee guida e
alla fine ho continuato a esplorare il
apprendimento continuo e ho scoperto
Airlink
okay e dico che questo è quando sono caduto
in amore va bene chi sono da me chi è qui
familiarità con Airlink
va bene, quindi Airlink è una lingua
creato da Ericsson e Erickson è il
compagnia di telecomunicazioni Airlink presso
questo punto ha quasi 30 anni, va bene
e il cosa rende l’ apprendimento davvero
interessante è che quando hanno progettato
linguaggio come telecomunicazione telic
azienda avevano un insieme molto specifico di
utilizzare il caso in mente e requisiti così
immagina che loro abbiano ragione
è necessario costruire un interruttore telefonico
interruttore telefonico giusto deve essere in grado
per connettere la persona a alla persona B in modo che loro
può avere una conversazione ma tu vuoi un
interruttore telefonico per essere in grado di gestire come
molte connessioni allo stesso tempo, giusto
desidera ripristinare l’interruttore del telefono
da qualche parte e molte persone stanno andando
per parlare con i loro amici così loro sono
tutta la famiglia passa attraverso lo stesso interruttore
così comincio ad avere questa idea di essere
in grado di gestire giuste molte connessioni
contemporaneamente tutto allo stesso tempo
ed è anche necessario avere con
telefoni che hanno bisogno di avere questa idea
di distribuzione perché a volte tu
vuoi chiamare il tuo amico ma il tuo amico
sta già parlando con qualcun altro
qualcun altro attraverso un altro interruttore così
l’ interruttore è che devono essere in grado di
scambiare informazioni e dirti di sapere
non puoi parlare a quella persona che è occupato
in questo momento così hanno anche questa idea
dovrebbe essere molto facile per gli interruttori
comunicare tra loro e avere questo
idea di set di switch distribuiti
scambiando informazioni okay e loro
avere un sacco di altri interessanti
il mio preferito è quello che mi piace scherzare
riguardo è che non riceviamo il telefono
chiama direttamente dai nostri operatori o telefono
operatori che dicono che saremo
modalità di manutenzione da mezzanotte fino a
1:00, quindi per favore non usare il telefono
giusto non riceviamo questo tipo di
avvertimenti quindi hanno inventato il tutto
idea di come puoi aggiornare il tuo codice
produzione senza portare il sistema
ora e stiamo per esplorare una coppia
altre conseguenze che hai quando
le tue bellezze di ordinare un inverter
la macchina va bene, ma la cosa è che loro
costruire questa grande macchina virtuale e
era usato principalmente per le telecomunicazioni
per un lungo periodo di tempo ed è stato
quasi 2003 2004 che le persone si rendono conto
che questo caso d’uso è molto simile a
questo caso d’uso ha ragione tutto ciò che è
davvero facendo funzionare la rete in modo da avere un
server e può essere può essere un server
quello che sta facendo lo streaming video ha molto
dei clienti collegati e di cui hai bisogno
per inviare loro i dati ea volte voi
necessità di contattare endpoint interni a
ottenere informazioni o applicazioni web anche
più ora che stiamo andando
verso l’internet delle cose giuste
avere a un sacco di diversi dispositivi
parlando di protocolli diversi di cui hai bisogno
essere in grado di gestirne molti al
lo stesso tempo va bene così sai che le persone iniziano
sempre così se fosse buono
telecomunicazione probabilmente è molto
buono per questo caso d’uso – e lo sono
va bene così abbiamo aziende come
Amazon Facebook che usa i primi
macchina inverter nell’infrastruttura
società di telecomunicazioni come Eric
e il Motorola Creston
Sì, Cress non è qui, ma penso che lo sia
circa il 40% dei dati 3G in Europa
attraverso il nostro link passa a guadagnare a destra
macchine così è davvero interessante
e abbiamo anche startup come Heroku
se hai mai distribuito un’applicazione a
Heroku usi Erlang perché loro usano
guadagnando nel loro strato di routing e noi
avere anche dei database come il gruppo
di gente che sono qui può parlare con loro
su di esso che è implementato in Erlang
e così abbiamo un sacco di persone che usano
in produzione e uno di quelli
interessante di loro è whatsapp loro
acquisito all’inizio di questo
anno da parte di Facebook di 19 miliardi o
qualcosa e in tutta la loro storia
come una compagnia che hanno sempre dato
parla di come stanno usando l’aria che deposita
infrastruttura e come sono in grado di
sfruttare Erlang come parte del
infrastruttura e hanno rotolato uno di
quelli erano come se avessero ottenuto due milioni
connessioni su un singolo nodo quindi whatsapp
è un’applicazione che vedi sul tuo
telefono e puoi sapere che puoi
installa su iPhone Android Windows Nokia
qualunque cosa e tu puoi sapere scambio
parlare con i tuoi amici creare gruppi e
così via quindi è un’app di messaggistica quindi loro
stavano parlando dell’infrastruttura
e qui la cosa interessante è quella
stavano usando un potente
macchina proprio loro questa macchina aveva 24
core 96 gigabyte di RAM che non sono
utilizzando solo il 40% della macchina
le risorse venivano utilizzate ma è così
esattamente l’idea che vogliamo proprio io
voglio costruire un software che sta per
correre sulla mia macchina userà tutto
le quattro macchine su questa macchina proprio qui
ma quando mettiamo in produzione è
sarà in grado di utilizzare quei 24 core
nella produzione della macchina in modo efficiente
come possibile va bene e hanno discorsi o
dicono che sono arrivati ​​fino a un certo punto
tre milioni di connessioni su singolo
macchine e una delle cose che se
leggi l’annuncio sono i
le notizie quando sono stati acquisiti da
Facebook una delle cose che tutti
ha sottolineato come il loro team di ingegneri
era in realtà abbastanza piccolo da gestire tutto
la legge che loro lo gestiscono e
ancora gestito all’interno di Facebook così tu
lo so, questo è tutto molto interessante
va bene e così e questo è il
parte interrogativa del discorso va bene così
ora ti stai chiedendo bene così come quelli
le aziende sono in grado di sfruttare la compagnia aerea
scrivere questo tipo di applicazioni
applicazioni efficienti che sono
distribuito funziona molto bene contemporaneamente
quindi stiamo andando alla parte degli idiomi
giusto quindi quali sono gli idiomi?
il linguaggio richiede da te e come
dovresti progettare software e parlare
a questo proposito andremo ora
Alex, okay
quindi Alex Syria è un linguaggio di programmazione
che gira sulla stessa macchina virtuale di
guadagni quindi tutto ciò che ho detto finora
si applica così Alex signore va bene e se tu vai
il sito web che vedrai
elisir è una programmazione funzionale
linguaggio ma non mi piace stare con
questa descrizione perché alex è di più
di quello giusto è un concorrente
linguaggio di programmazione e non solo quello
è un linguaggio di programmazione distribuito
e questo è molto importante perché questo
è in realtà uno dei motivi per cui sono caduto
l’amore con la prima macchina inverter è
perché per me sono una specie di soluzione
il grande problema va bene loro sono come
gestire il grande elefante nella stanza
perché se torniamo indietro di 30 anni fa
stavamo progettando la macchina deviatrice
non sono preoccupati per la concorrenza
nessuno era preoccupato per la concorrenza in
gli anni Ottanta va bene, forse alcuni accademici
ma l’ industria in generale lì o no
e quello che volevano fare era in realtà
per costruire software distribuito ma quando
la concorrenza è diventata di più
più importante di quello che hanno capito
la concorrenza è un caso speciale di
distribuzione giusta perché quando hai
distribuzione hai quello che hai il tuo
codice in esecuzione su due macchine diverse
allo stesso tempo ma quando lo hai
concurrency solo un caso speciale in cui
tutto sembra essere in esecuzione il
stessa macchina giusta non sono sopra il
rete e poi si Whoa possiamo fare
la concorrenza davvero bene anche a destra
quindi come possiamo sfruttare tutto questo qui
se stai programmando la maggior parte di
lingue imperative orientate agli oggetti
questo è il tuo codice giusto per scrivere a
mucchio di codice sequenziale che sta per
eseguire istruzioni e la cosa
questo è difficile per noi che siamo noi
bisogno di pensare a discussioni come
interleaving del codice sequenziale
hai il codice sequenziale I
significa che devi pensare a come stanno andando
Interlacciala andando a mettere le serrature
tutti pensano in termini di questo sequenziale
codice e in una conferenza che abbiamo anche
codice sequenziale ok ma questo sequenziale
il codice è organizzato in cose molto piccole
che chiamiamo processi okay e quelli
i processi non sono il sistema operativo
i processi sono macchine virtuali
processi e sono leggeri
filo delle esecuzioni va bene
quindi eccoti se parli
idiomi questo molto importante abbiamo solo
imparato una nuova parola che hai appena aggiunto una nuova
parola al nostro vocabolario che è processo
va bene così quei processi sono molto piccoli
molto leggero, il che significa che possiamo
molti di loro stanno bene così quando al
momento in cui sai iniziare il tuo elisir
nodo sei vuoi andare al
la shell ha il diritto di digitare alcuni comandi o
essa ha come 50 processi in esecuzione ok
e tutti quei processi che sono
isolati l’uno dall’altro e la
l’isolamento ci rende molto interessanti
proprietà che vedrete dopo così
sai nel caso Whatsapp quando loro
stanno dicendo che ne avevano due milioni
connessioni ogni connessione era una
processo va bene così in realtà ne avevano due
milioni di processo più di 2 milioni
processi in esecuzione nello stesso momento in cui
caso è così leggero che sei tu
non dovrebbe preoccuparsi di creare
centinaia di migliaia di loro stanno bene così noi
creare tutti quei processi che sono
correlati e perché ci sono isolati
possiamo averli tutti in esecuzione al
Allo stesso tempo, così iniziamo ad avere questa idea
di concorrenza giusta perché se loro
bisogno di qualcosa da fare che fanno e basta
qualunque cosa abbiano bisogno di fare sono tutti
correndo allo stesso tempo e sempre
hai bisogno di scambiare informazioni o fare
qualche tipo di coordinamento lo fai
mandare messaggi correttamente così se voglio
dire a un processo che deve fare
qualcosa di particolare o è in attesa di
qualche input particolare lo mando appena a
messaggio va bene così sai che stiamo parlando
sui processi è la nostra nuova parola che siamo
parlando del messaggio che passa e di
scopri di più facci sapere facciamo lo zoom avanti
parliamo come quattro processi e proviamo
per vedere cosa stanno facendo bene e
immaginiamo che questo sia un server
giusto sta facendo qualcosa oltre il
Rete
quindi quei quattro processi che ho scelto noi
puoi immaginare che ne sia responsabile
comunicare con il database un altro
uno è responsabile dell’accettazione
richieste su TCP così responsabili per il
rete web parte abbiamo qualsiasi statistica
processo che è solo mantenere in diretta
statistiche su chi sta usando il tuo
applicazione che è connessa e così via
e abbiamo un processo di mailing okay
è responsabile di inviare una e-mail ogni
volta che abbiamo bisogno di fare qualcosa in
particolare quindi ecco l’ interessante
cosa se stai usando il linguaggio classico
è imperativo scrivere un budget orientato
hai una richiesta e poi vuoi
inviare una e-mail durante tale richiesta quanto
potrebbe effettivamente accadere che al momento
stai inviando la posta se qualcosa
si sbaglia quando si invia l’e-mail
web la cosa che è responsabile
accettare richieste può in realtà crash e
in realtà falliscono proprio così, se iniziamo
pensarci è davvero strano lo sai
come perché la cosa che mi manda oh se
quella scena si blocca come può portare il
tassa Reti che accettano richieste giuste
quindi cosa dobbiamo fare in quelle lingue
è che dobbiamo usare try catch write
è necessario quindi se vai al tuo server web
implementazione nella tua lingua o il
quadro qualsiasi cosa avvolgono il tuo freddo
in un enorme tentativo di cattura iniziare il salvataggio e
cose del genere perché, perché, se
qualcosa va storto con il tuo mailer
solo sapere non lasciarlo trapelare
permettergli di passare e portare
tutto ora e tu conosci questo insieme
idea ci piace dire oh si deve salvare
un’eccezione o un’eccezione questa
l’intera idea è strana, perché a
eccezione è il modo del nostro software per
Dì qualcosa è andato storto giusto qualcosa
supponiamo che accada l’eccezione e
Dico solo grazie, continua
facendo qualunque cosa tu stia facendo così
è un’idea molto strana quando inizi a farlo
mettere lo stato con tutto così in pratica cosa
potrebbe succedere che tu abbia il tuo codice
eseguirlo va in stato incoerente
e poi inizia ad aumentare le eccezioni e
eccezioni e così via e tu sei giusto
dicendogli di continuare a fare qualsiasi cosa
lo sta facendo qui perché tutto
è isolato proprio nel crash del mailer
non posso portare nessuna di quelle altre cose
ora e questa è una proprietà molto importante
perché cambia il modo in cui scrivi
software ciò che ci piace dire è che tu
sapere se qualcosa non va nel Manor
basta lasciarlo in crash mi è stato detto di non usare
lascia che si schianti espressione perché
a volte spaventa la gente va bene così abbiamo
anche dire fallire bene ok se roba no
bene con il mailer fallire velocemente e cosa
sta per succedere è quello che definiamo
supervisore va bene così questo è un nuovo tipo
di processo è un processo che
ha una responsabilità molto specifica di
supervisionare altri processi in modo che ciascuno di essi
di ogni processo in diversi colori qui
stanno per appartenere a diversi
supervisori quindi quello che succede è che se
la posta se qualcosa non va con il
mailer e si blocca questo Manor te
sapere che questo processo sta per morire e
poi il supervisore sta andando a notare
che il mailer si è bloccato e sta per
avviare un nuovo Manor per gestire il prossimo
le prossime richieste vanno bene così e questo è
molto importante perché inizia l’ avvio
portarci questa idea di colpa dell’edificio
applicazioni tolleranti perché la cosa
è non importa cosa lo fai
non importa bene qualunque lingua
tu scegli che le cose andranno male
cose inaspettate stanno andando bene
capita ancora di più quando includi
sistema di file di rete una sorta di terzo
le risorse di partito vanno bene così sai invece
di cercare di essere sulla difensiva e prevedere
tutti i casi possibili che non possiamo
dovrebbe piano per crash proprio al posto di
dicendo che sai che ho intenzione di gestire
caso possibile, basta lasciarlo andare e venire
con una strategia per il sistema di
auto-guarire per tornare a uno stato che è
garantito per funzionare ed è per questo che noi
avere questa intera idea di supervisori
perché se il surf si blocca, iniziamo
qualcosa di nuovo con lo stato iniziale
che sai che funziona è lo stesso
è la stessa cosa delle nostre macchine
a volte stai codificando e poi il nostro
la macchina inizia a farti sapere no
rispondere abbastanza bene non sta funzionando
abbastanza bene cosa facciamo, lo riavviamo
giusto torniamo allo stato iniziale
e poi improvvisamente è di nuovo buono tutto
giusto è la stessa idea torniamo indietro
a quello stato iniziale così così se lo sono
parlando di parole giuste e nuove
parole o vocaboli e idiomi che siamo
parlando di supervisori dei processi e
a volte i supervisori che hanno
supervisori – che potrebbero avere un supervisore
– così iniziamo a crearli
alberi di controllo a destra e ad un certo punto
la tua applicazione è pronta puoi definire il
albero di supervisione con la responsabilità
e cosa dovrebbe essere riavviato e noi
pacchetto anche se tutti questi all’interno di
l’applicazione e un’applicazione è così
tipo di componente giusto è qualcosa
che puoi iniziare e fermarti come un’unità così
è così che progettiamo il software e
tutti quelli che scrivono il codice di elisir sono come
hai intenzione di strutturare e progettare
il tuo software va bene così così quello che abbiamo
parlato di cui ho parlato finora
processi che sono isolati okay e noi
hanno anche supervisori che sono
processi che ha un aspetto molto specifico
responsabilità di supervisione di altri
processi e hanno strategie su
come dovrebbero reagire quando qualcosa
non va come previsto e loro sono
rimettendo costantemente il nostro sistema
questo stato non lineare è garantito
lavorare e quindi definiamo la supervisione
gli alberi vanno bene e li impacchettiamo dentro
applicazioni
e ogni volta che dobbiamo fare
comunicazione lo facciamo sempre con
passaggio del messaggio e abbiamo molte funzionalità
da te provi per questo tipo di Dio per
libero da questo disegno giusto così abbiamo ottenuto
la concorrenza concorrente non viene come
un ripensamento giusto non è come te
scrivi una salsa e poi hai bisogno di tutto me
è necessario renderlo concorrente e quindi lo sono
come ora sto rendendo il mio codice tutto brutto e
disordinato solo perché hanno bisogno di aggiungere
concurrence right sta camminando in elisir
va bene insieme al tuo
il design è una conseguenza del nostro design
così ora stiamo ottenendo concorrenza siamo
ora, parlando di fallire velocemente, va bene
un approccio diverso quando siamo
progettato il software che abbiamo riscontrato
tolleranza perché ora abbiamo il
supervisori con le loro strategie e
c’è una cosa che è in realtà il
titolo del discorso ma non abbiamo parlato
così lontano che è distribuito va bene che abbiamo ottenuto
tutte le cose ma come otteniamo
distribuzione di tutto questo quindi se noi
torna indietro un paio di diapositive, abbiamo detto
che tu sai che questo è tuo
software di elisir okay produzione in esecuzione
così tanti scambi di processi
messaggi e per qualche motivo come parte
di applicazione inizia ad avere a
aumentando il carico giusto come puoi
avere un un server di statistica, per esempio
per qualche ragione inizia ad avere un
aumentalo carico, quindi quello che puoi fare è
che puoi ottenere il nostro codice giusto e noi
avere qualcosa chiamato la versione
processo in cui è possibile creare diversi
rilascia con responsabilità diverse
così puoi ottenere parte del tuo codice giusto
e appena detto tu sai che io voglio correre questo
codice particolare in una macchina diversa
giusto così basta dividere mettendone due
macchine e tutto funzionerà
abbiamo solo bisogno di aggiornare il riferimento a
di chi vuoi inviare un messaggio
perché dal momento che i processi tutti
tutti comunicano con il messaggio
passando effettivamente la macchina virtuale
riassume il messaggio che passa per te così
non importa se stai inviando un
messaggio a questa elaborazione a questo
processo in questa macchina o in un processo in
un’altra macchina è completamente ostruita e
gestire per te e stiamo andando a vedere
alcuni esempi di distanza
Farò un po ‘di live coding e
inviare messaggi tra i nodi in modo che possiamo
avere una rapida panoramica quindi domande così
molto prima di entrare nella terza parte
va bene così va bene, questo è tutto interessante
giusto e come ho detto questo è tutto
proprietà di come il virtuale
la macchina è stata progettata così non solo
si applica alla teoria di alex ma a Erlang jaques
tutto ciò che è in esecuzione in questo
macchina virtuale quindi perché Alex qui va bene
perché dovrei usare Alex qui e abbiamo
e il modo migliore per dire perché dovresti
vai con Alex qui quando verrai
questa particolare macchina virtuale e quando
vuoi pensare a questo particolare
tipo di design del software nel modo migliore
a parlarne è quello di parlare del nostro
tre obiettivi nella lingua va bene e
sono estensibilità di compatibilità e
produttività quindi la compatibilità è il
facile, giusto, è tutto quello che ho
parlato fino ad ora, viene dal
macchina virtuale e siamo compatibili
e tutte le astrazioni sono le
lo stesso se si esegue malloc
Siri o se stiamo eseguendo il nostro link così per
esempio un elenco in Erlang è un elenco in
Anche qui Alex è un processo in Alex
un processo nel nostro link non c’è
costo di conversione e niente di simile
la compatibilità riguarda chi lo sa
rispettando questo fondamento dell’essere
distribuito e fault tolerant giusto e
non hai intenzione di sacrificarlo
questo è ciò che questo obiettivo sta dicendo
il secondo è l’ accessibilità e il meglio
modo che mi piace descrivere è questo po ‘è
con questa citazione di codice da ragazzi – è
uno dei miei discorsi preferiti di tutti i tempi
chiamato crescere una lingua e alla fine
del discorso che dice ora dobbiamo andare
importa ora dovremmo pensare a una lingua
progettare come un modello per il linguaggio
progetta uno strumento per creare più strumenti di
lo stesso tipo perché il campo di
l’informatica è diventata così ampia da farlo
è impossibile per una lingua – lo sai
nativamente
attacca tutti quei possibili campi a destra
quindi quello che dobbiamo fare è che dobbiamo
progetta un linguaggio che tu come a
sviluppatore puoi andare ed estenderlo e
portalo al dominio su cui stai lavorando
quindi puoi davvero essere produttivo e il
il modo in cui lo facciamo con la teoria di Aleks è quello
abbiamo un sistema macro che è molto
simile a come funzionano le macro Lisp
ecco un codice elettrico quindi in Aleks
sei in molti linguaggi di programmazione
avere se e a meno che siano gentili
di intromettersi con le loro parole chiave sono
qualcosa di speciale che la lingua
sa come gestire come compilare
e in Aleks qui quelle cose sono
solo i macro sono implementati con a
conferenza stessa che fondamentalmente significa
che se stiamo usando alex qui per
implementare la maggior parte delle funzionalità
nella lingua significa che tu te
puoi anche ottenere Alex qui e portarlo a
il dominio su cui stai lavorando
giusto non stiamo barando non ci sono
casi speciali tutti quelli sono nel
nucleo della lingua, quindi qual è l’idea
di una macro una macro per esempio analizza
è una macro che non riceve il
la valutazione di è numero x giusto non lo è
andando a valutare se X è un numero e
restituisce vero o falso a cui sta andando una macro
ricevere la rappresentazione di questo codice
proprio così una macro sta per ricevere il
rappresentazione del codice e quindi può
trasforma questo codice in qualcos’altro
poiché a meno che non sia il contrario di un if
non è negato se è esattamente ciò che noi
tradotto a destra fondamentalmente andiamo avanti
l’ ultimo e il trasformatore e ottieni
negato se così in cui questo possiamo
estendere il linguaggio e implementare la maggior parte di
la lingua usando una conferenza stessa così
alcuni esempi di cosa puoi fare con esso
giusto , ecco come scriveresti a
caso di test con Alex qui così definiamo a
modulo chiamato test di matematica e tutto il tuo
codice la prossima serie lascia dentro
moduli e puoi dire di sapere che voglio
per usare il case dell’unità X che è il nome
del nostro framework di test e ora ottieni
queste macro che ti permettono di esprimere
molto elegantemente quello che stai testando bene
quindi, stiamo testando un’operazione molto semplice
e tu sei sei solo affermando che
uno più uno è uguale a e il
cosa interessante è in funzione
il linguaggio che stai usando è una specie di
dire no no non farlo bene perché
a seconda del quadro di prova si utilizza
non si dovrebbe mai chiamare CERT perché se
qualcosa va storto sta andando una ricerca
per dire hey si aspettava vero avremo false
hai bisogno di usare cose come asserire uguali
asserire più di una certa corrispondenza con te
bisogno di andare in questa specifica API di
test delle unità, ma in Aleks che usi
asserire per tutto perché affermare è
una macro e una macro che può guardare
il codice e dire che posso vedere qui che
stanno cercando di confrontare due numeri
va bene e quando qualcosa va storto è
andando a darti una bella orale
segnalare cosa stanno cercando di fare ciò che è il
lato sinistro qual è il lato destro e perché
è fallito perché possiamo guardare il
codice al momento della compilazione e ottenere
informazioni su di esso tradurre al
l’altro in modo da questo esempio, il
altro esempio è che abbiamo una libreria
chiamato ecto che ti permette di scrivere
query da eseguire in un database sequel così
l’elisir è un linguaggio dinamico ok ma
agire oh è in realtà un tipico doppale okay così
se qui l’autore è una stringa ma se
tu provi a passare prova per confrontare altare
con un numero intero, ad esempio, l’auto lo farebbe
di ‘sai che quelle cose non lo sono
in realtà combacia e ne abbiamo un sacco
ispirazione dal link di dotnet e
link è la query integrata nella lingua
giusto è parte della lingua ma qui
è implementato solo usando la lingua
funzioni semplicemente usando le macro e possiamo
e possiamo fare molto possiamo estendere il
linguaggio per esempio a vorrei toccare per aggiungere
tipo di controllo possiamo garantire a chi lo cerca
non stanno andando per iniettare qualcosa che
può portare a un’iniezione sequel ed è
anche estremamente efficiente perché in
molti casi possiamo compilare la maggior parte del
interrogare per sequel durante il tempo di compilazione
Va bene, quindi non stai facendo molto
lavorare in fase di esecuzione riduciamo il lavoro
facciamo in fase di esecuzione è il minimo di
possibile okay quindi quelli sono tutti esempi
e possiamo vedere molti esempi nel
diritto della comunità di ricevere Alex
qui e si estende a tutti quei domini
e
il terzo obiettivo è la produttività e
la produttività è un po ‘difficile a destra – a
spiega come si dice che una lingua
è più produttivo di un altro e così
il modo in cui ci piace descrivere la produttività
in Aleks qui sei a conoscenza di utensili
per esempio o in prima classe
documentazione perché a volte essere
produttivo non è sempre una lingua
problema è un problema di comunità giusto come può
ottieni la comunità – tutti insieme
giusti strumenti molto buoni proprio bene
API e buona documentazione vanno bene così
c’è un focus sulla raccomandazione I
possiamo mostrare un po ‘ che abbiamo molto bene
attrezzo fuori dalla scatola così come te
installa la lingua che stai per ottenere
hai una buona struttura di test unitario
per ottenere una shell per iniziare a scrivere codice e
anche io ho questo strumento di creazione del mix
andando a mostrare e ultimamente abbiamo ottenuto un
gestore di pacchetti – quindi se inizi
lavorare con Alex Siri e qualcuno
già risolto il problema che vuoi
per lavorare su di te basta aggiungere una riga al tuo
file e stai andando a prendere il
dipendenza compilare e averlo disponibile
per te quindi se vuoi usarlo
codice attivo che ti ricompone
puoi semplicemente modificare la dipendenza e andare al lavoro
sul tuo problema va bene così da mostrare il
le cose in realtà facciamo molto velocemente
tempo di demo veloce, quindi cosa farò
ecco come ho detto quando tu quando tu
installa Alex qui, aspetta che sia
non quello che dovresti vedere
sì così quando si installa esteriormente
venire con esso viene fornito con questo disegno di legge –
chiamato mix che ti permette di crearne di nuovi
il progetto gestisce la compilazione delle dipendenze
li mettono alla prova e così via per quello che sono
sta andando a fare qui è che sto andando a
creare un nuovo progetto chiamato foo e uno
opzione che puoi passare quando sei
creare un nuovo progetto è l’opzione secondaria
che gli dice di creare una supervisione
albero così all’inizio diciamo no noi
avere gli alberi di supervisione che sono
all’interno delle applicazioni e sto passando questo
bandiera solo così possiamo avere un po ‘di tempo è
andando a generare un albero di supervisione per
noi così corriamo questo lo eseguiamo questo comando
creare il codice per noi e poi siamo in grado di
basta eseguire qualcosa come mix test e
sta andando a compilare ed eseguire tutto
per noi uno dei vantaggi del
la macchina virtuale della compagnia aerea è molto veloce
tempo di avvio quindi è sempre bello e ok
quindi diamo una rapida occhiata al codice
che ha generato in modo da poter vedere il
il progetto è davvero molto piccolo, arriva
con una directory di configurazione così tutti noi
sta dicendo che il runtime arriva
con questa idea di applicazioni giuste
viene anche l’idea di come stai
andando a configurare le applicazioni che è
davvero buono perché tutte le librerie in
il linguaggio seguono lo stesso
struttura su come sono configurati
giusto non useranno il
libreria e loro è configurato questo
modo e un altro ha configurato il
in altro modo tutto è una specie di standard
abbiamo questa idea di come tu
definire le applicazioni e configurarle
e abbiamo una directory Lib che viene
con un semplice file nella directory di test
quindi lasciami rimuovere i commenti, così possiamo
concentrarsi su ok quindi ecco qui, quindi definiamo
un modulo di nuovo il nostro codice lascia sempre
all’interno dei moduli tutti possono vedere bene dentro
la parte posteriore in modo che tutti del nostro codice è la definizione
moduli firmati e sto dicendo questo
modulo foo sta definendo un’applicazione
e cosa deve fare su un’applicazione
è definire una funzione di avvio quella
riceve due argomenti
e inizia un albero di supervisione così sei
dire no qui stiamo andando a definire
i nostri figli e in questo caso non lo facciamo
avere ancora qualcosa di giusto e definiamo
qual è la strategia così per il
supervisione quindi un supervisore one-to-one
significa che puoi averne molti
i bambini hanno ragione, uno per uno supervisiona
io sono questo se un bambino in particolare muore
lo riavvii appena ma puoi
ad esempio cose come una per tutte
se uno dei bambini muore, lo sai
fai la coda a tutto il resto e avvialo
di nuovo quindi ci sono diverse strategie
con cui possiamo giocare e solo per mostrare a
un po ‘come funziona facciamolo
definiamo un lavoratore che è un compito
e un compito è proprio quando vuoi
eseguire alcuni calcoli particolari come
manda una mail e questo compito stiamo andando
per definirlo con un modulo ok scusa
lo definiremo con un modulo
il modulo che vogliamo chiamare così dentro
questo caso sarò un po ‘
pigro e dire che il compito sta andando
essere definito lo stesso modulo del mio
applicazione la funzione che dovrebbe chiamare
quindi vado a fare un po ‘di lavoro e
gli argomenti non ne passeranno nessuno
argomento in questo caso va bene così qui io
definito un supervisore che ha esattamente
un bambino è un compito quindi definiamolo
esattamente questo compito in modo da avere la funzione
fare un po ‘di lavoro non ne riceve
argomento e tutto ciò che faremo qui
sto per stampare, iniziare a fare
un po ‘di lavoro e vado a dormire perché
basta simulare che stiamo facendo un po ‘
funziona bene quindi se tutto è andato bene
quello che posso fare ora è che posso iniziare il mio
applicazione e avviarla con una shell
e puoi vedere che lo ha creato bene
iniziato a fare un po ‘di lavoro e perché noi
ha avviato l’applicazione che è iniziata
l’albero di supervisione che ha avviato il
compito che sta iniziando a fare quelli
calcoli e quello che posso fare qui è
che il nostro supervisore aveva un nome se noi
tornare al file può dire che abbiamo dato
è un nome di food supervisor questo è
solo un identificatore può essere qualsiasi cosa
vuoi e posso posso chiederti di sapere
dammi tutti i bambini per il cibo
supervisore giusto e poi ritorna
questa informazione dice
bene qual è il modulo che è a
compito questo PID è questo identificatore di processo
giusto è solo identificando il processo
nel caso in cui vogliamo inviarlo messaggi e
così via ed è il tipo di un lavoratore e
il quarto argomento in cui lo usiamo
caso di ricarico freddo io non ho intenzione di
vai nei dettagli se vuoi saperne di più
possiamo chiedere più tardi nella parte domande
o discutere più tardi, quindi ho intenzione di fare
che sono interessato a questo PID okay così
Ho intenzione di modellare la partita su di esso solo
voglio il PID non mi interessa per il resto
giusto così ho intenzione di abbinare tutti quelli
cose e ottenere il PID e ciò che io
può fare è che ho intenzione di inviare un’uscita
segnale a questo processo dicendo che io
voglio ucciderlo e quello che succede qui è
che ha appena stampato iniziare a fare un po ‘
lavoro di nuovo perché ho ucciso quel processo
e uccidere quel processo è un modo in cui io
Sono un diritto fader milady di gestire che
quel processo stava facendo qualcosa e
poi si è schiantato qualcosa è andato storto e
poi il supervisore ha visto quel processo
si è schiantato e ha detto okay sto iniziando un nuovo
uno e puoi vedere che ha iniziato a
fare un po ‘di lavoro e la cosa qui è
è che tu sai se quel processo è stato
inviare una e-mail giusta e qualcosa
è andato storto quell’e-mail che conosci
di default se non aggiungi qualche tipo di
la persistenza è andata bene, ma l’idea
è che conosci sempre il tuo sistema
tornando a quello stato iniziale e
costruzione in cima allo strato di persistenza per
esempio per garantire che le e-mail sono
sempre consegnato è in realtà
semplice abbiamo una coppia
librerie nel nostro ecosistema che lo fanno
ma l’importante è tutta questa idea di
il supervisore riavvia e torna indietro
a quello stato iniziale che è garantito
lavorare a Joe Armstrong il creatore di aria
link giusto per dire che hanno sistemi
a Ericsson che corre con nove nove di
affidabilità che penso sia un secondo
o microsecondi offline per anno
giusto che è abbastanza fantastico, sì, noi
avere tempo quindi lasciami mostrare qualcos’altro
è davvero fantastico quello che sto andando
fare ora è che inizierò a
shell a destra
la shell interattiva interattiva di Alex
qui e ho intenzione di dargli un corto
nome e quando diamo un nome a shell
questo caso un nome di squalo ne consente altri
conchiglie o altre macchine che sono
eseguire la stessa rete per comunicare
quindi ho intenzione di dare questo al
nome di foo e puoi vederlo qui
cambia sta mostrando proprio ora il
nome di questo nodo questo foo @ gv va bene e
Ho intenzione di dare a questo il nome di
bar quindi se ho fam in questo guscio qui e io
definire un modulo come so che questo è un
un po ‘cliché ma ciao mondo
stampa ciao puoi vederlo definisce il
modulo su questo spettacolo e quindi posso dire
ciao punto Road e verrà stampato
ciao e torna ok che è il
risultato di chiamare I output così puoi
vedi che ciao è stato stampato qui, ma se io
vai nell’altra shell e digita ciao
Strada non funziona proprio perché questo
il modulo è stato definito solo nell’altro
quelli non disponibili qui, ma quello che posso
fare è che posso facilmente generare spawn a
processo nell’altro nodo, giusto io
Dite che so che voglio generare un processo
nel nodo chiamato foo @gv e oops e
ciò che questo processo andando a fare è solo
è acuta questa funzione che chiama ciao
dot Road e quando lo eseguo puoi vedere
che ora funziona e l’ interessante
cosa c’è ci sono due molto interessanti
le cose qui sono le prime di te
puoi vedere che ciao mondo non è stato stampato
qui di nuovo giusto quindi non è stampato
due volte ciao è stato stampato qui e allora
succede è che abbiamo iniziato a eseguire
il codice nell’altro nodo ma l’altro
nodo sa che questi nodi vogliono
che ha attivato la richiesta quindi se tu
voglio fare qualsiasi I / O che sta per inviare
indietro a destra e e lo usiamo dentro
produzione perché a volte hai un
la macchina che non si sta comportando bene è possibile
fai una shell remota a cui puoi connetterti
e inviare comandi ad esso e cercare di ottenere
informazioni su ciò che sta accadendo lì
giusto e puoi vedere qui che il PID
in questo caso inizia con un grande numero
i precedenti hanno sempre iniziato con
zero quindi è quello che inizia con zero
correndo nella nostra macchina e quelli che
non inizia con zero stanno correndo
su un altro nodo
è giusto e posso ottenere che potrei ottenere
questo PID e invia un messaggio da mangiare e
scambia informazioni okay lasciami andare
le ultime diapositive e quindi possiamo aprire per
domande quindi se hai davvero trovato Alex
molto interessante questo è il nostro sito e
puoi andare alla nostra guida introduttiva
in questo momento abbiamo due guide principali una
sta per iniziare letteralmente
ti presento i tipi di dati come te
faccio oh come lavori con le collezioni
e così via e abbiamo una guida avanzata
che costruisce un’applicazione reale usando
quei principi che tipo di parlato
qui ed è un valore-chiave distribuito
conservare bene un valore tubolare molto piccolo
negozio dove hai puoi avere le chiavi
essere memorizzati in diversi nodi e così via
su oh e se sei interessato a
vedendo alcuni casi di uso effettivo di persone
usa la produzione estrema così semplicemente
rilasciato elisir 1.0 tipo di come tre
settimane fa e due mesi fa abbiamo avuto il nostro
prima conferenza di elisir ad Austin e noi
avere un sacco di interessanti discorsi
conversazioni interessanti di persone
usando elisir per le applicazioni di gioco
servizi di telecomunicazione c’era
qualcuno sta parlando di avere un Bitcoin
server di scambio tutto costruito con Alex qui
e così puoi andare al al
chiamata elisir da conflitti e guardare
alcuni video è uno dei miei discorsi preferiti
uno sviluppatore che lavora presso una società di gioco
e costruiscono un gioco di poker giusto e
il campo e il gioco del poker durano
mediamente i loro venti minuti che significa
è davvero difficile per te smettere
il sistema per aggiornarlo giusto perché
quando una partita è nel mezzo un’altra
uno è l’inizio di un altro è
finendo così non hai davvero un
buon tempo come per i tempi di fermo giusto e
le persone suonano tutto il giorno
notte quindi diventa complicato e lui era dentro
il suo discorso stava dicendo come erano
utilizzando tutti questi aspetti distribuiti di
per correre per fare una codifica a caldo
aggiornamento giusto in modo che possano essere grandi
il loro software vive usando il
distribuzione e poi lui entra
come ha progettato l’intera applicazione
quindi nel loro caso ogni tavolo da poker è un
elaborare ogni giocatore è un processo e
sono scambiati informazioni del
tavolo da poker
e quando stai aggiornando il nostro codice dal vivo
in pratica muovono il tavolo da poker
un altro nodo ma hanno ancora i giocatori
qui così hanno una specie di set misto
installazione mi raccomando davvero è davvero
interessante e abbiamo un sacco di libri
se vai al sito qui ce ne sono alcuni
di loro e penso a questo punto
erano già stati aggiornati ad Alex qui
1.0 e quindi abbiamo molte risorse se
sai se inizi con un recupero
ha iniziato la guida e dire oh voglio
qualcosa di più profondo, proprio lì
diverse opzioni tra cui scegliere
abbiamo screencast in corso di pubblicazione e
è così voglio ringraziare la mia compagnia
questo mi permette di lavorare a questo punto che sono
lavora a tempo pieno e alla scadenza di a
anno e mezzo e davvero doloroso
perché permettimi di prendere la lingua per
dove siamo oggi è grazie
avere il tempo per le domande impressionante cosa
accadrebbe oggi è appena andato a destra
quindi la domanda è cosa succederà
capita al processo difettoso quando
quando il supervisore agisce correttamente, quindi se tu
ho qualcosa di simile a quello che userò
uno per sempre la strategia come esempio così
qualcosa si schianta bene e l’altro
quelli a causa della supervisione
strategia da quando hai intenzione di uccidere
l’altra e stiamo partendo riavvio
tutto di nuovo li uccidi
giusto è solo tu sai qualunque cosa
stanno facendo è il modo di essere interrotti
sta andando a tagliare e se ne sono andati
e la cosa interessante è che ero così
Dicendo solo per avere un’idea di come
questo impatto ha un impatto anche sulla progettazione di
la macchina virtuale e il linguaggio il
la cosa interessante è quella perché
sono isolati per i quali non abbiamo
esempio fermare la spazzatura del mondo
raccolta giusta perché il processo è
memoria non proprio sicura e questo è
davvero buono perché se qualcosa è
sbagliato e un processo fasullo sai
muore il netturbino, lo sai
va e va bene, ti ho restituito il ricordo
non ho bisogno di fare alcun controllo ed è
davvero buono anche per i casi di
WhatsApp giusto hai una connessione per
processo quando quella connessione è andata
perché i client sono collegati o perché
vuoi disconnetterti, basta recuperare
c’è che non hai intenzione di avere un
spazzino che passa attraverso tutto il
due milioni di connessioni allo stesso tempo
per vedere se c’è qualcosa di condiviso e
presto
ho risposto alla domanda se la prego di chiedere
Di Più
questo è qualcosa di più tardi e guardare
uno di quelli per uno e vedere cosa era
sbagliato , quindi questa è una domanda
che dire del bugging giusto e
qualcosa va storto quello che sto per fare
è così così ho intenzione di rispondere a due
cose diverse quindi la prima cosa è
che non abbiamo i debugger tradizionali
qui perché se si dispone di un sacco di
processi in esecuzione allo stesso tempo
e tu dici che voglio vedere cos’è
succede lì quando ti processano
dì stop fai un breakpoint per vedere cosa è
succede lì tutto il resto
tutta la strada continua a correre proprio ora
nessuno si fermerà per quello
particolare processo quindi se si imposta a
punto di interruzione in là si può avere altro
processo che stiamo aspettando un messaggio
da questa destra e poi sono
andando a ottenere un timeout perché loro
non ottenere una risposta, quindi non abbiamo un
tipico sistema di debug perché al
punto che si sta andando a digitare ciò che
voglio davvero vedere il tuo stato del sistema
cambialo completamente e poi lo siamo
sta per eseguire il debug di qualcosa
non pensare che sia così, come facciamo?
lavorare intorno a quello giusto il fatto che noi
non posso usare così tanto il debugger tradizionale
buoni strumenti di tracciamento che puoi fondamentalmente
tracciare qualsiasi evento che sta accadendo nel
macchina virtuale un processo iniziato a
processo crash hood voglio chiamare questo
funzione Voglio vedere se questa funzione
viene chiamato da questo processo con
questo argomento in particolare così è uno
cosa e verrebbe che spediamo con a
quadro di registrazione molto utile e da
default tutti i processi che stanno per
per registrare II si blocca l’ultimo messaggio I
è stato ricevuto questo era il mio particolare
stato e questo distrae la traccia dello stack
quindi proviamo con quegli strumenti e ed io
pensa che sia venuto l’intero linguaggio
da te lo sai dalla configurazione industriale
giusto così hanno dovuto capire questa roba
fuori come avere un buon login
comprensione del sistema così
punti di rottura e vorrei influenzare
qualcosa e scrivere alcune espressioni I
una volta chiesto significa che deve essere
cambiato il mio primo piede prima che tu cambiassi
perdonami per aver schierato te, ma tu
menzionato anche che mentre il
applicazioni come vorrei se ne avessi bisogno
cambia queste istruzioni di registrazione ok così
la domanda uno riguarda il codice caldo
caricamento e come stiamo facendo produzione
così in genere quello che farebbe è quello
una macchina è difettosa e tu
non vogliono abbatterlo per un po ‘
motivo per cui accederai a questo
macchina che probabilmente inizierai
fare qualche traccia e provare a vedere cosa
è sbagliato se i log non ti fanno bene
potrebbe iniziare con qualche tracciato per capire perché
i log non sono bravi esattamente a questo
succede lì e quando si individua se
se vuoi puoi sapere che hai te
vai al tag nel tuo codice sorgente
giusto che aveva una versione particolare
distribuito puoi cambiare quel modulo
compilare e dire alla macchina virtuale
per caricare questa nuova versione del modulo
ok, quindi questo è molto semplice
idea di come funziona non credo di averlo
come il tempo di mostrare esattamente come fare il
istituito per mostrare come avrebbe funzionato, ma noi
Ho detto come un paio di volte di andare a
parla che tutto il tuo codice lascia dentro
moduli giusti e non puoi avere il codice
fuori da un modulo e c’è
perché usiamo il modulo come principale
il principale si conosce il contenitore per il codice
perché lo usi anche per l’aggiornamento
la produzione di codice in modo da poter vedere
qui che quando definiamo il modulo
giusto restituisce una tupla che dice oh questo
è modulo questo il nome del modulo
e puoi vedere tutto questo con
un mucchio di parole senza senso qui è un binario
con il modulo bytecode va bene così per
esempio, quello che potrei fare è che potrei
in realtà io sono vedere se posso farlo
quindi sì, potrebbe non funzionare, quindi non trattenermi
ad esso ancora così
ciao dot roads no
definiscilo qui bene, quindi cosa sto andando
fare è così, se ottengo v1 sta per
dammi il contenuto del primo
espressione che era quel modulo
definito così se scrivo v1 mi dà cosa
era il valore definito qui proprio così
possiamo vedere che abbiamo il modulo il
nome e il binario e sono interessato
nel binario quindi voglio pattern match
su di esso solo per ottenere questo binario ok e
questo non sta andando a corrispondere loro se si
voglio così ora ho il binario qui così
Ho intenzione di fare è quello che ho intenzione di fare
una chiamata RPC alla barra del nodo su JV dammit
quali sono gli argomenti
si chiama load binary e ho bisogno di farlo
passare il nome del modulo al file che era
definito e il file binario vediamo se questo
lavori
oh ha funzionato così ora se vado all’altro
nodo ciao strada è qui giusto così io
ha iniziato a sudare, quindi questo è per esempio
come faresti bene, c’è un
un po ‘più di dettagli in più
ma fondamentalmente è l’ idea che può ottenere
il codice byte e dal virtuale
macchina diciamo hey ora quello che il
la macchina di ritorno ha che ha due
versioni dello stesso modulo che può avere
due versi nella stessa memoria del modulo così
hai il vecchio e il nuovo te
appena inviato e puoi dirlo ad alcuni
il codice esistente dice che volevo eseguire l’aggiornamento
la nuova versione giusta così questo tipo di
come si può fare una patch dal vivo in a
sistema di produzione oh siamo fuori tempo
per favore
ping me e grazie

Please follow and like us: