Press "Enter" to skip to content

GOTO 2016 • Adventures in Elm • Jessica Kerr


buon pomeriggio grazie per essere venuto a
avventure in L che esploreremo
questo linguaggio di programmazione oggi siamo
andando a fare un viaggio da Hello World a
quasi il picco dell’architettura di Elm
e lungo la strada vedrai cosa fa
questo linguaggio di programmazione diverso e
come ha fatto questo linguaggio di programmazione
io diverso perché c’è molto
cose nell’elemento che hanno
mi ha sorpreso e mi ha fatto interrogare alcuni
delle mie quattro idee su ciò che è buono come codice
andiamo attraverso vedrete non solo la
linguaggio di programmazione ma in un
architettura che è all’interno di Alma così uniforme
se non si utilizza mai Elm sé il
l’architettura è indicativa di molti
altre architetture che stanno emergendo
in questi giorni sia in sistemi distribuiti
e nel web quindi penso che lo troverai
questo piuttosto utile sono Jesse Tron che lavoro
con strisce e strisce mi ricorda di Elm
perché stanno entrambi prendendo qualcosa
davvero difficile e così facile
è possibile dove non era prima dentro
il caso di M che è lo sviluppo nel
browser e app che fanno davvero
cose complicate senza pagare e
sono mantenibili nel caso di
rafforza i pagamenti che rendiamo possibile
per le persone per costruire siti Web e iniziare
accettare pagamenti senza aspettare due
mesi per l’approvazione di una banca che è
davvero fantastico in stripe non scrivo
su I scrivo in Ruby Scala go Python bash
e qualsiasi cosa abbia bisogno di fare perché il mio
passione come lo sviluppatore è di prendere un
sistema che è utile e lo rende uniforme
più utile quindi manterrò qualunque cosa come
uno sviluppatore di manutenzione davvero
apprezzo davvero Elm perché non lo è
JavaScript e si concentra davvero sul mio
sentimenti come persona sia adesso
mentre sto scrivendo il codice e anche
dopo
quando leggo il codice e quando sono
cambiando il codice, lo adoro
la prima cosa di questo mi lascia
fare ciò che non potevo fare prima o non volevo
essere disturbati è perfettamente funzionale
programma e dalla programmazione funzionale I
significa praticamente dati e dati fuori
significa che ho una funzione che è il verde
scatola
riceve alcuni parametri che sono
dati produce un output che è
dati e questo è ora i grandi cambiamenti
nel mondo che lo circonda e ogni volta
dai lo stesso dato che ottieni lo stesso
risultati quindi è estremamente utile
prevedibile riproducibile testabile che è
è fantastico ma si rivela essere
davvero difficile da fare nella maggior parte dei programmi
gli scenari sono al cento per cento il codice di olmo
al cento per cento perfettamente funzionante
e ciò che mi sorprende è che lo fa
quello nell’interfaccia utente e io sono come cosa perché
questo è quello che mi sembra il codice UI
la mia esperienza con app come Java swing
e come riconciliamo questi due
quando il mio amico Richard mi ha parlato di come
quando eravamo come seduti accanto a ciascuno
altri a un matrimonio ero come il perché sono
stai parlando di come puoi essere ma a
parte della funzione e funzionale e
UI bene concettualmente è un po ‘come
questo il tuo codice è una funzione di
tutto ciò che è mai accaduto
ti importa di tutto ciò che il server ha
mai detto a te ogni pulsante l’utente
ha spinto e l’output è quello che tu
voglio che l’interfaccia utente assomigli proprio ora no
l’interfaccia utente reale ma i dati che dicono che desidero
l’interfaccia utente sembra così e poi L dice
oh vuoi che l’interfaccia utente appaia così bene
in questo momento sembra così, così sono
andando a fare questi come prestazioni eccellenti
aggiornamenti minimi ottimizzati e renderlo
guarda esattamente come si voleva e poi
dirò oh è qualcos’altro
c’è un nuovo tutto ciò che conta
e dirai oh, vorrei che assomigliasse
questo e lo farò solo accadere
quindi Elm non è l’unica programmazione
lingua corrente che utilizza questo
particolare paradigma sul lato di
rendendo l’espressione delle interfacce utente
dati e quindi il framework sottostante
fa sì che una pagina web sia effettivamente visualizzata
come quello è l’esempio più popolare
reagire per reagire all’interno dei lavori JavaScript
in modo simile non è la stessa cosa
codice ma è idee simili dove tu
emetti quello che vuoi che il cane guardi
come sono i dati e reagire rende in realtà
sembra così e in effetti se usi
la libreria Redux in cima a quella quindi
stai usando l’ architettura di Elm
perché Redux è l’annullamento dell’iscrizione
interamente basato su Elm, quindi vedi anche se tu
non usare proprio tu puoi ancora usare l’aiuto
ci sono altri modi per scrivere lo stesso
l’architettura puoi farlo in chiusura
script e si chiama ijs entrambi
compilare a JavaScript questo a proposito è
discord discord è un personaggio in My
Little Pony e lui è il mio preferito
personaggio perché posso discordare
manipola la realtà e può fare qualsiasi
delle sue vittorie si avvera che può cambiare
qualsiasi cosa sul mondo, ma la maggior parte di
quello che fa è fare il caos così lui
rappresenta JavaScript
– no hai chiuso la sceneggiatura e Scala
jsut davvero questi sono questi sono abbastanza
molti livelli su JavaScript per elm
devi conoscere pochissimo JavaScript
molto poco perché concettualmente è oh
non sta cercando di essere un transpiler JavaScript
il fatto che compili su JavaScript
ora è un dettaglio di implementazione una volta
webassembly è un Big L compilato come
il web assembly e l’elm sono più di un semplice
linguaggio è un sistema di tutto il linguaggio così
una delle cose che lo rende possibile
per me fare la programmazione dell’interfaccia utente totalmente a
sviluppatore back-end e averlo 15 anni
ma non devo imparare il tutto
Ecosistema JavaScript
Non ho bisogno di gulp e grunt e node e
ok bene, forse faccio un po ‘ di NPM
umm, ma non ho bisogno di phantom Jas e la
migliaia di cose che costruiamo
le nostre app JavaScript sono necessarie
il sistema di linguaggio degli elementi e quello è
molto più piccolo perché è così
questo è un modo in cui Ella lo fa
possibile per me fare l’interfaccia utente quando non potevo
prima abbassa davvero così barriera
l’altra cosa è che mi permette di fare l’interfaccia utente
senza odiarmi perché in te olmo
non è possibile ottenere il tuo alfa
non definito non è una funzione che non può
succede in elfo tutti gli errori sono compilati
errori li vedi che i tuoi utenti no
sai che puoi risolvere bug che puoi avere
logica incasinata a cui può averlo detto
fai la cosa giusta ma non puoi accedere
un campo che non esiste non puoi provare
per chiamare undefined odio questo errore è
un tale incubo questo non è quello che voglio
JavaScript Voglio andare, cosa eri tu
cercando di trovare
da dove viene e L compila
gli errori mi danno quello sul funzionale
lato c’è un altro incubo che Elmo
mi salva e questo è l’apprendimento
fastidio quindi questo è Michael Bernstein
descrivendo la sua esperienza di anni la sua
è come tre anni di apprendimento di Haskell
bene M è un linguaggio di compassione e
Evan che scrive oh lui non ti vuole
sopportare anni di sofferenza e insicurezza
solo per usare questo linguaggio Elm è un
linguaggio delle persone è un
linguaggio illuminato che vuole il
il più grande bene per il maggior numero
e non intendo il maggior numero di
persone che sono abbastanza intelligenti e intelligenti
ho scelto di imparare la teoria delle categorie I
significa persone che esistono nel mondo oggi
sacco di sviluppatori JavaScript un sacco di
sviluppatori back-end come me e molto
di persone che non hanno fatto lo sviluppo
tuttavia Elm è per noi quindi L è nella stessa situazione
famiglia di lingue come Haskell è
sono entrambi linguaggi ML quindi condivide
alcune caratteristiche di Elm hanno istanze
di una lista come baaaad e forse ma è così
non ha il generico di von che ha
tipi parametrizzati quando hai una lista
hai una lista di qualcosa di simile
generici in Java, ma non ha
più alto tipo nei tipi che sono anche quelli
il punto è che non devi preoccuparti che io sia
andando a trattare con il nostro tipo di tipi in
Scala, ma in realtà sono nemici della sporcizia
ogni volta che c’è una funzionalità in
lingua come considera ok quanto utile
è questo e quanta complessità lo fa
aggiungi all’apprendimento della lingua e se è così
aggiunge molta complessità e puoi farlo tu
non posso usarlo se sei solo disposto a farlo
digita un po ‘di più le mie dita funzionano e
Preferirei lavorare un po ‘di più con il mio
le dita e meno lavoro con il mio cervello
perché voglio essere in grado di salvare il mio
potere decisionale per la mia attività attuale
logica e quello che voglio il mio programma
fa tutto bene e quando torno e
leggi quel codice che voglio essere in grado di
capire cosa sta facendo senza
capire tutte quelle lingue
funzioni ok
sto parlando delle caratteristiche delle leggende
fare codice in tempo reale ma sarebbe maleducato
per farlo senza andare oltre la sintassi
quindi sai quali sono i simboli
Sto scrivendo bene così sintassi L in a
in poche parole questa è una definizione di funzione
il nome della funzione viene SUBSTRING e
ha due parametri quantità e forza
l’implementazione di esso posso chiamarlo
domanda fornendo i parametri così
qui sto definendo un valore impalatore
posizione che è il risultato della sottostringa
con tre e STL 48 questo rappresenta
come un con un nome di macchina come un server
quello che sembra essere nella st. Louis
il datacenter è il numero 48 um che lo nota
non ci sono virgole qui o simili
tra parentesi basta allineare i parametri
su e loro marciano nella funzione in a
elenca però ecco una lista letterale è
ottenuto le parentesi quadre intorno e
ci sono commenti tra le voci dell’elenco L
è un linguaggio tipicamente molto statico
fa tutta la sua magia è magica come no
avendo degli errori controllandone il tipo
non devi dichiarare i tipi che
farà tipo di inferenza ma se vuoi
per dichiarare i tipi e io quasi sempre
fare uno per la leggibilità troppo così
il compilatore dovrebbe darti l’errore in
come il luogo più localizzato dove io
incasinato fai così
prima che gli uguali stiano fornendo il
definizione e il colon può fornire il
tipo e questo è un tipo dall’aspetto strano così
questo è un tipo di funzione e il tuo
funzioni rappresentative tali che se
puoi uomo int poi ti darò
qualcosa di simile che se mi dai un
stringa quindi ti darà una scala
quindi i due parametri sono qui e qui
e quindi il risultato è l’ultima cosa
e questo rappresenta quelle funzioni e L
sono tutti al curry che significa che puoi pensare
di una funzione a
ha un parametro che potrebbe solo
capita di restituire una funzione che ha
un altro parametro e così via
significa che non hai mai a te
devono fornire tutti i parametri in
per qualificare merda così posso definire a
codice di posizione della funzione come sottostringa
dove la quantità è tre ma quella
l’altra stringa non è specificata in modo che
il tipo di codice di localizzazione è una funzione
di strana corda perché hai
questo va bene e sei rimasto con un
stringa a stringa, quindi è come il
significato di questo strano tipo di funzione
la sintassi della dichiarazione va bene e poi
questo ha il tipo di stringa e la lista
la lista qui è una stringa della lista dei tipi
per ascoltare digitare da solo ha bisogno di a
digita il parametro devi dirgli cosa
tipo di cose nella lista e non ci può
solo essere un tipo di cosa nella lista
e non può essere nessuno o oggetto perché
quelle non sono cose per sapere che devi
impegnarsi in un tipo che sarà in
la lista e devono essere tutti dentro
questo caso ho una lista di stringhe
vedremo in pochi secondi come mettere
cose di tipi disparati in una lista va bene
un’altra cosa per la sintassi della chiamata di una funzione
c’è questo altro modo di chiamare a
funzione che si può prendere l’ultima
parametro che stai per passare
inizia con quello e usa questa pipa
operatore per inviarlo attraverso la funzione
quindi queste due sintassi ti equivalgono
posso pensarlo come l’operatore di pipe in
UNIX piace se prendi qualcosa e
digita quello memorizzato qualunque esso sia
ottimo per concatenare le funzioni insieme
ok dato che abbiamo questa posizione
codice da distorsione stringa questi sono i
cose di allontanarmi bene mi piacerebbe
essere più specifico di una semplice stringa
considera stringa quasi un odore di codice
specialmente in Java, quindi posso dargli un
digita alias e posso dargli un nome e
Posso dire che il codice località è equivalente a
stringa questo non mi troverà
compilare errori perché sono davvero
equivalente ma posso cambiare le stringhe
dovresti codificare ovunque intendo
il codice di posizione è davvero espressivo
Mi piace che e super facile il tipo
l’alias non sta creando un nuovo tipo è
solo dando un nome a un tipo e questo è
ancora più utile quando abbiamo il nostro
tipi complicati come i record così
record su cose come JavaScript
gli oggetti, ad eccezione si è mai andare a
casualmente chiamalo fuori i vecchi bit
lì perché il compilatore non ti lascerà
quindi ha membri e quei membri ciascuno
hanno determinato tipo così penso
hai lasciato cadere qualcosa di tipo macchina
qui usando la stessa scienza per fornire
i valori per ognuno dei campi e se io
dichiaralo come una macchina come il
il compilatore dirà oh una macchina ha questo
e questo e se non avessi fornito quello di
che poi otterrei un errore di compilazione
immediatamente e non eseguire l’errore orario tutto
giusto ma forse voglio truccarmi
la mia macchina come non la conosco
roba che calcolo in anticipo quindi
Voglio calcolare la mia posizione nel mio
vasca e poi restituirli qui e
nove il record ben in olmo non c’è
tale cosa come questa affermazione
dichiarazioni di assegnazione ci sono solo
espressioni quindi non posso dire di inviare il
messaggio laggiù e restituiscilo
non farlo
non lo fai ma spesso vuoi
per dare i nomi delle cose così per una somma in
in particolare puoi usare un’espressione let
o un blocco della gamba e diciamo okay
qui viene dai nomi che sto per fare
dai nomi alle cose e lo fai e
allora puoi usare quei nomi nel
singola espressione che è il corpo di
la funzione che ogni corpo di funzione è a
singola espressione che restituisce i dati
è come è perfettamente funzionante e
Mi ci volle un po ‘per ottenere il mio cervello al lavoro
in questo modo questo è vantaggioso per imparare di nuovo
modo di pensare e, soprattutto, è
gli alias di tipo completamente testabili vanno bene
non creare nuovi tipi che danno solo
nomi per tipi esistenti, tuttavia è possibile
crea un nuovo tipo con la parola chiave type
e questo sta creando un tipo di unione, quindi guarda
Sto arrivando
messaggi da qualche parte e ognuno
sta per contenere la posizione
codice o il numero della macchina e
Li metterò insieme più tardi, se voglio
mettere quei due tipi disparati in a
elenca quindi posso creare un tipo di unione
la macchina Batum rappresenta uno di questi
cose e ha come due tipi di
tipi di rapper può essere o il
posizione con il codice di localizzazione in esso o
può essere un numero con un numero intero e
Ho creato due costruttori qui
Posso usare per avvolgere ceppi in numeri rap
e poi possono andare nella stessa lista
perché questo elenco di dati macchina è
uno di quei giorni e finalmente siamo
andando a dover essere in grado di fare qualcosa
con quegli articoli nella lista così abbiamo
essere in grado di ottenere questi valori da
il piccolo involucro digita lì
quello con pattern matching così forse io
ho una funzione che sto facendo una funzione
descritto che non può girare ho aperto a
dati macchina in una stringa lungo o
qualcosa e lo faccio con un caso
affermazione quindi dico ok andiamo a
stiamo andando a scambiare in base a quale tipo
dei dati delle cose è forse è un luogo
In tal caso avrai un codice e
vai a mettere quello nella stringa forse è un
numero puoi mettere quella stringa così ciascuno
tipo separato che è un dato macchina
viene convertito in una stringa qui va bene così
è così che puoi mettere le cose dentro e fuori
dei tuoi tipi che hai definito
tempo per un po ‘di mondo ok, ecco qui
una directory vuota vuota s puoi
vedi questo nella parte posteriore ok
abbastanza bene ho intenzione di iniziare facendo
un modulo elm chiamato ciao e cercando di
fai in modo che ciao mondo di questo inizio ok
la parola chiave del modulo lo chiami lo stesso
come il file e quindi devi dire
quali funzioni espone in questo caso
Ho intenzione di esporre l’ok principale lo farò
di solito in ciao mondo ti piace
ritalin o qualcosa di buono non c’è
stampa Linnell che sarebbe una dichiarazione
sarebbe come un effetto che possiamo solo
restituire i dati, quindi forse possiamo solo tornare
ciao mondo è la forza che sarà
lavoro Oh
avviso quando premo save
mi piace come spostato la mia funzione verso il basso a
piccolo
ama gli spazi bianchi e muove questo
giù che viene fatto da uno strumento chiamato
Formato LM che fa parte di quello stesso
il sistema linguistico in formato L dice che lo farai
non discutere di spazi bianchi più spaziati
o nuove linee Y spazi importanza in
elementi è uno spazio bianco significativo
linguaggio
non devi discutere di spazi o tabs
errore di sintassi delle tasse e anche tu canti
discutere se indentare con due
o quattro spazi che stai per andare
scrivere in formato e non sta andando
al bianco se ti piace uno stupido lintero
lo aggiusterò solo per quello che ho
l’editor qui esegue il formato L al salvataggio
va bene
se andiamo qui ho installato L on
il mio computer che è l’ unico
prerequisito per questo bene un formato olmo
del plugin dell’editor sono separati ma io
voglio fare ciò che significa compilare questo
modulo ok ecco che Elm è tutto simile
programmazione funzionale su di me quando chiedo
per fare qualcosa che esce e fa
decisioni su cosa dovrebbe fare e
quindi prende quei dati e li presenta
per me e dice okay vorresti che lo facessi
ho questi effetti che ho deciso o
necessario bene si lo farei quindi
tirando qualcuno proprio ora che scarico
roba e in realtà ha fatto il
compilazione e abbiamo un reclamo
perché la stringa non è popolata ma è
non dice semplicemente esumare di brutto nome
no in L con gli errori di compilazione
molto progettato per essere tuo amico I
può fare un sacco di compilatore o guidato
sviluppo in Elm
mi dà abbastanza lontano in questo caso per
esempio non si limita a dire stringa è
non va bene dice che mi hai dato uno spago ma
Ho bisogno di questo o questo
quindi ho bisogno di generare dati HTML
struttura o SVG se ho intenzione di fare un
immagine o un programma che vedremo
poi va bene ho intenzione di scegliere HTML
perché voglio la cosa più semplice che
è un po ‘statico
femmina è quello che dovrebbe essere il mio mondo ciao
essere al fine di usare quello che devo ottenere
pacchetto elton installa elm lang helm H a
il nostro HTML e si potrebbe essere come attesa ho
devo installare un pacchetto solo per piacere
fare qualsiasi cosa con la lingua sì sì
devi scegliere stai facendo HTML o
SVG perché non ho intenzione di incorporare
il codice per entrambi sono automaticamente
andando a cercare di mantenere il tuo JavaScript
file più piccolo quindi ne scegliamo uno sì è
molto modulare di M e diciamo se l
il pacchetto è un altro membro della l
ecosistema ed è importante un
un importante fammi um vedere se posso
scorrere verso l’alto per un titolo da rendere
certo che è il pacchetto LM ok top
installazione dice vai a prenderlo e L lo fa
stare dove va va bene
Mi piace guardare in giro e vedere cosa
la situazione è dirti cosa devo fare
e la prima cosa che deve fare è L
il pacchetto JSON è il file che era
creato da quel primo L può aver dimenticato di
mostra che contiene tutto il mio
dipendenze e vuole aggiungermi
la tua dipendenza da dichiarare quella
ho appena chiesto di installare un grande avviso
che vuole aggiungerlo con il
La gamma di versioni è importante per cui la L
gestore di pacchetti è l’amico del
principale e il nemico dell’autore della biblioteca
chi vuole solo pubblicare qualcosa in
zero punto X perché non rilascerà la pubblicazione
a zero X quando pubblichi un pacchetto
mostrato che stai impegnando in una API e
inizierai con 100 che è ironico
perché il linguaggio del sé non è 0,17
dal ancora così come un pacchetto altro voi
devi impegnarti e quando fai il rilascio
avversione che stai commettendo a un’API e
L può essere sicuro che qualcosa di più alto
rispetto alla versione attuale che è 100
perché questo è appena caduto due settimane fa
e più piccola della prossima versione principale
sta andando a lavorare con il mio codice dal lavoro I
significa compilare perché è il proprio
il gestore di pacchetti applica la semantica
versioning se admin nella sua pubblicazione Minh
HTML fa una correzione di bug o prestazioni
miglioramento non ha rilasciato 101 che è
bene, ma se aggiunge un nuovo metodo esposto
allora quello deve essere uno oh no
lascia che non incrementi la versione secondaria
e se cambia o cancella qualsiasi esposto
tipo o funzione che è 2.0 o lui
non posso rilasciarlo affatto così l’API è
tenuto da studio dal gestore del pacchetto Elm
che è consapevole dei tipi che sono nuovi
i moduli hanno esposto pagandolo per questo
piacerà anche a ciò che costringe
documentazione su tutti i metodi esposti
e a loro piace nella parte superiore del file e
un sacco di cose che ti piacciono
tutto quello che volevo pubblicare questo, ma no
perché ciò che conta non è l’unico
persona che pubblica tanto quanto il
si spera che migliaia di persone lo usino
giusto così un gestore di pacchetti è mio amico
e posso fare come salari e versioni in
per di qua
è come se avessi questo nel mio
pacchetto e qualcuno importa la mia libreria
e importa anche un’altra libreria
dipende da HTML 1 1 3 o superiore a
bene quelli sono le gamme sovrapposte elfin
risultato che erano felici se la lingua
non si sovrapponevano non me lo permettevano
importa quei due in modo che non si possa rovinare
le tue dipendenze transitive ok si
oh puoi aggiungerlo alla mia penna JSON e
allora puoi scaricarlo e quando lo fai
lo scarica anche a transitive
dipendenza virtuale Dom e ho intenzione di
avere entrambi quelli nel mio pozzo nel mio
directory di roba che è dove L si attacca
tutto quello
non commettete cose di elm, commettete che lo farò
pacchetto questo è una definizione questo è
costruisci l’output giusto così ho intenzione di avere
rituali su cose mie ma non lo sono
andando a essere in grado di chiamare funzioni in
il primo Bulldog dal mio codice non vedrà
loro sarà come che non è una cosa che ho
Chiamerò le funzioni del cane virtuale
per il mio codice devo dichiarare è il mio
dipendenza e metterlo nel mio pacchetto
quindi nessuna dipendenza subdolo transitiva usata
in LB mi piace che sia stato molto
dichiarativo e specifico va bene così ora noi
avere il pacchetto UML di elementi che possiamo usare
possiamo importare in HTML e nella scatola principale
restituire il più semplice HTML
testo okay questo potrebbe funzionare davvero, lo farò
fare buoni compila e ora quello che otteniamo
è un indice di studio HTML per campo predefinito
indice di output del compilatore punto HTML cuz
questo è il percorso migliore per aprire la pagina web
ciao mondo
e possiamo ispezionarlo e vedere che il
il corpo contiene un piccolo pezzo di JavaScript
c’è molto di più sulla testa che dice
olmo ciao a schermo intero che chiama il
Olmo per popolare il resto del corpo
con quel semplice testo va bene
illustra come questa traduzione
funziona un po ‘di più che ho intenzione di mettere
che in un div div hai una lista di
attributi che è vuoto e un elenco di
bambini che è solo questo e possiamo
siamo sicuri che funzionerà ora
compilare aggiornamento okay, quindi ora dice ciao
punto esclamativo mondiale e anche tu
può vedere il div proprio qui in modo che
c’è una traduzione molto diretta
tra la struttura dei dati che il tuo
il programma sta uscendo e l’HTML è così
appare nella tua pagina
in effetti è così diretto che esiste
una cosa come il programma HTML a L
in cui puoi semplicemente scrivere cose em
o incolla il tuo HTML qui e
appare in L per te e poi puoi
copia gli elementi nel codice così
se vuoi convertire una pagina web
ad Elm puoi semplicemente iniziare con
traduzione diretta anche questo è un
espressione di uno dei miei principi
Ho avuto una domanda è la generazione di codice I
pensavo che fosse sporco ma poi
tipo di mi è venuto in mente che mi piace
compilatori quindi la generazione del codice non è male
e in effetti un elemento è un’abitudine
di generare del codice per iniziare con I
non inserire la generazione del codice nella mia build
passo di noi abbiamo un compilatore
oh ma faccio generoso il codice per iniziare
con e poi andrò a modificarlo
cose come la serializzazione e
deserializzazione a JSON in un ospedale simile
o scala useresti classi di tipi da creare
quella versione estinta l non ha tipo
classi perché quelle sono davvero
complicato così invece tu fai il
codice di serializzazione davvero esplicito quale
può essere un dolore ma hey c’è un JSON
JSON o messo lì c’è un altro di
questi programmi che genera il
codice di serializzazione per me e poi quando
Voglio cambiare, cambio solo che è no
grande affare
così la cogenerazione non è una cosa così brutta io
Non ci ho pensato io anche fare un sacco di
cogenerazione in Java con IntelliJ in
l’IDE può fare che non siamo ancora arrivati
nel pulsante ID Elm potrebbe essere a posto
giusto così HTML è un bel modo diretto
traduzione Ho intenzione di refactoring questo a
piccolo
per recuperare il metodo che produce questo
e poi chiamerò solo i quattro principali
assicurati che compili se compila
funzionerà ma di solito è vero
a casa per il mio servizio di pagina ora voglio
questa funzione è attualmente vista della
digita HTML tranne nella nuova versione di
L’album 17 HTML ha un parametro di tipo tu
devo dirgli che tipo di cosa sarebbe
torni nel tuo programma se loro
cliccato un pulsante o digitato in un modulo
campo o cose del genere
quindi devi dargliene un tipo
tipo di che io o potrei semplicemente dire come
mai perché non succede qui
e io continuerò a lavorare oh e potrei
qualificarlo e dire HTML HTML punto ma
questo è fastidioso
Va bene che hai, ma questo non è ciò che
Voglio che risponda al mondo
intorno a me
Voglio che la mia funzione di visualizzazione sia basata su
la posizione del mouse forse è così
qualcosa che potrei entrare è a
posizione del mouse in HTML di sì
succede a lavorare se lo dico che se tu
spingere il pulsante si ottiene questo tipo
indietro ma in realtà non si preme il pulsante
quindi non succede, capiamo?
quella posizione del mouse che è un record
con X & Y in esso ho potuto fare di registrazione
ristrutturazione nella lista degli argomenti e
allora come dire cose come x equivalgono a
stringa x devi fare la conversione
esplicitamente non sta per typecast
per te è uguale
rotola e poi aggiungeremo la stringa y2 Y
e poi in questo modo saremo in grado di
avere una pagina che in qualche modo reagisce a
il mondo quindi dovremmo avere X e X y
e poi per gli antipasti passiamo e basta
1000 quindi possiamo verificarlo funziona
ok, torna indietro oh non è un errore
messaggio oh, va bene, questo è uno dei nostri
messaggio non riusciamo a trovare la posizione del mouse
bene il mouse e mouse supporto è sufficiente
di quelle cose di cui non hai bisogno
ogni LM quindi non ha intenzione di darlo a
per impostazione predefinita verrà installato il pacchetto
come Mouse fai sì sì scarica il
cose
grazie Wi-Fi e ora otteniamo il
compilatore volevo venire qui e volevo
per fare questo perché questo è il mio preferito
tipo di compilatore in realtà ho fatto
un certo punto è vero il mio secondo preferito
compilatore perché il mio primo preferito è se
hai delle dipendenze circolari che ottieni
Arte ASCII quindi è il mio numero uno
compilatore preferito ma il numero due è questo
uno e questo è per motivi personali
perché a Evan importa così tanto del
compilatori che ti aiutano che c’è un
intero repository dedicato a dirmi
come rendere questo compilatore importante come
bravo un compilatore che sei stato
più utile per te e nel mio caso lo sono
passare da una lingua all’altra così spesso
che sì va bene così ho provato a usare più a
concatenazione di stringhe ma vantaggi per
numeri di lunghezza e come sai quando
capito, devo andare a cercare solo te
bevi un tunisino e gli elfi quindi penso
è come se avessi inviato il problema a
il repository e ha detto che questo è un
errore veramente comune che sto per aggiungere un
caso speciale nel compilatore per rendere il
vive meglio così quaggiù in fondo
dice che devi usare plus plus
operatore non più per aggiungere stringhe e
aiuta così ora devo salvarmi un viaggio a
la documentazione piuttosto frequentemente
e sono felice e posso prendere plus plus
quindi non mi dice solo che lo ero
sbagliato
dice che è quello che ho sbagliato penso
potrebbe essere perché ha fatto forse dovresti
prova questa cosa qui e poi facciamo
prova quella cosa qui e compila
e possiamo aggiornare e otteniamo zero zero
perché abbiamo avuto un costante va bene lo è
tempo per rispondere effettivamente al reale
posizione del mouse e per questo abbiamo bisogno
qualcosa di diverso da un HTML ci serve a
programma abbiamo bisogno del nostro principale per restituire a
programma okay principale il tuo programma Gumby
il programma ha anche un parametro di tipo che è
il tipo di argomenti che tu
aspettarsi di ottenere da JavaScript quando il tuo
il programma è invocato quindi in questo caso lo sono
il cannone è tornato che userò
un disco vuoto e le componenti del mio
programma ho intenzione di esprimere questo record
quindi ci saranno alcune funzioni noi
lo so e ci sarà
un valore iniziale di quella posizione del mouse
che è questo e poi l’interessante
un po ‘ci sarà un input
fonte e che viene dal mouse
pacchetto è mosse del mouse e questo è
andando a fornire la posizione del mouse e
cosa avrei intenzione di fare con questo programma
sta per prendere certe iniziali
un passaggio che alla vista per ottenere il
immagine iniziale, ma poi ogni volta che
riceve un segnale dal mouse si muove ogni
tempo che muovo il mouse sta per avere un
nuovo valore nella posizione del mouse ed è
andando a passare a quello nella mia funzione V
e produrre la nuova versione della vista
e poi lo farà
magia per aggiornare le viste esistenti cosa
Ho voluto che fosse a posto
il solito modo di creare il programma
Sto ricevendo che quel tipo di programma è quello
chiama l’app HTML in questo caso con
appartamenti che è il tipo più complicato
di programma che si può fare sul posto, ma io
non voglio iniziare con la maggior parte
tipo complicato di programma che tipo di
vogliono costruire ad esso così ho tipo di
ingannato e ho fatto ho fatto un modulo che
mi permetterò di convertire questo più semplice
componenti del programma che voglio in a
Programma di app HTML con appartamenti così è
andando da inserire una vista per un ingresso
e ho intenzione di portare questo file in e
ottenere C stiamo andando ad avere bisogno il programma
qui e ho intenzione di portare il mio piccolo
non prestare attenzione alla funzione dietro
la tenda
bene, compiliamo questo oh dolce dis
compilare bene quindi ora abbiamo un programma
quello dovrebbe rispondere a qualcosa esso
che inizia a zero zero, ma non appena ho
muovi il mouse ok
le cose cambiano bene così ora abbiamo
mosse elemento di cui voglio parlare
modularità un elemento come mi piace sub
componenti e come faccio un po ‘di codice
organizzazione per farlo ho bisogno
più di un componente sullo schermo
e anche questa pagina web non ha
quasi abbastanza foto successiva è come
interesse che il mio patrimonio commette ha tutte le immagini
adesso abbiamo tre foto del mio
figlia e andremo al MIT okay the
la vista diventa solo la vista della posizione
la posizione è un componente in questo web
pagina nella vita reale avrebbe avuto il suo
file per questo metodo ma è piccolo
abbastanza questa funzione, ma è piccola
abbastanza e questa è una demo è Stan qui
avremo anche una visualizzazione delle immagini
che è anche una posizione del mouse per HTML
e la vista dell’immagine a cui importa solo
l’ esposizione o volontà per ora possiamo
chiedilo per fare un’immagine l’immagine no
bambini ma ha un attributo HTML
attributi in modo che sappiano che è una fonte
attributo e che accetta una stringa
che è il nome del file e di cui ho bisogno
per importare HTML oh sì
improvvisare importante
Oh No non riesce a trovare i diritti di vista variabile
perché ho bisogno di leggere la funzione di visualizzazione
la funzione di visualizzazione di livello superiore che
combina questi due così là otteniamo il
puntatore del mouse e creiamo un div che
mette insieme queste due cose
la vista di posizione che viene a sapere
sulla posizione del mouse
otteniamo la vista dell’immagine che arriva
conosci la posizione del mouse e tu
funziona di nuovo ammucchia tutto bene, va bene
abbiamo tecnicamente un’immagine che non è
molto carina quindi abbiamo chiaramente bisogno di alcuni CSS
che approccio centre lo CSS va bene, quindi perché?
ha fatto tutto il vecchio indice delle uscite del compilatore
punto HTML nella vita reale non ho mai voluto
faccio voglio che il mio proprio indice dot HTML
per favore, quindi ho intenzione di completare il tuo
e voglio creare il mio e io sono
andando a incollare le basi in là
dove vanno bene le mie arance più pensabili
ecco un file HTML di base che
fa riferimento al CSS per usare l’elemento qui
bisogno di aggiungere due cose l’origine di script
– Ho intenzione di far compilare un compilatore
ljs invece di index.html e in poi
tutto ciò di cui ho bisogno è quel piccolo script
tag script molto buona
via e nei loro album aperti ah ciao
perché quello è il mio modulo a schermo intero
perché voglio che sia a schermo intero
puoi fare parte elemento del tuo schermo
non devi impegnarti per tutto
ma qui faremo fullscreen
va bene che è tutto tranne che ora devo
compilare e specificherò che voglio il
uscita per andare a ljs e poi no
sovrascrivere il mio index.html che sarà
un bel po ‘ho anche bisogno di quel file CSS
check out ok ok è il mio lavoro yay ok
chi è il disastro perché la posizione è
così rispondendo al mouse vedi il mio
figlia questa è Linda meglio conosciuta come
dieter indicando facciamo una foto
rispondere al puntatore del mouse perché
questo rende il modo più divertente, magari facciamolo
vedere qual è il mezzo al centro
circa 200 ok, quindi diciamo se X è inferiore
di 200 poi voglio usare andremo a
a sinistra e inserirò questo
un file immagine equivale al segno che devo fare
mettilo nel registro di sinistra in modo che possiamo lasciarlo
il file di immagine uguale questo ya è uguale a tua
lasciato non puoi mai avere un se senza un
altrimenti perché in nessuno dei due casi è necessario
restituire lo stesso tipo perché è solo
dati quindi ha sempre un altro e in
questo caso avremo Peter o proprio ora
è uno degli altri oh che ha fallito
quale campo di formato medio che significa
non compila il compilatore darà
me un vero utile
1:32 Ho un extra che hai un figlio
a che età oh grazie sì
fare molti più figli
Grazie, va bene, va bene
dice ragazzo laggiù senza non mettere su
lì laggiù
e punto laggiù ok, va bene così ora
l’immagine e la posizione sono entrambe
rispondendo al movimento di massa c’è
un po ‘di refactoring che sento il bisogno
perché qui, um, fingi che sia così
complicata logica di business e io davvero
non voglio che a mio avviso sia così
non è la funzione che la mia logica aziendale
appartiene a I would really really my view
essere come bene quale direzione vogliamo
puntare e se è rimasto , useremo
quella foto e se è giusta allora noi
usa quella foto è quello che mi piacerebbe
scrivi e vorrei solo ricevere
la direzione invece della X così io
potrebbe farlo se al posto del mouse
posizione e ho avuto come un tipo personalizzato
lo chiameremo modello e faremo un
digitare alias per questo rappresenta così
la mia applicazione indica la mia attività
importante stato di applicazione, quindi il modello
può ancora avere la posizione X e Y.
perché la posizione per te sarà necessaria
quello ma poi può anche avere il
direzione che è bene cosa va bene
è una direzione in cui posso farcela
la direzione è andata via tutto bene
sì sì sì il miglior cappuccio mi piacerebbe
avere per la mia funzione di vista per fare
che dovrò avere qualcosa che
converte il puntatore del mouse nella corrente
valore della posizione del mouse sul mio modello
e in questo caso diremo ok
bene
ha ottenuto la posizione del mouse e come messaggio
quindi possiamo ottenere la sua X, possiamo averla due volte
e avremo bisogno di venire con alcuni
la direzione fa bloccare e qui noi
dirò 2 è uguale e ora possiamo dire
se X è inferiore a 200, che ha lasciato il resto
destra in modo da non abbiamo saper
mostra sinistra e destra, ma abbiamo appena
il concetto di business se lei sta indicando
a sinistra o lei sta indicando il
è grandioso
Ho un paio di dettagli non su
questo metodo di progettazione è il mio punto di vista
modello in HTML sia per farlo che per il
l’ultima cosa è portare quel bello
decidere il metodo nel flusso del programma I
può farlo nel programma, quassù
c’è un meccanismo per questo nel mio caso
Devo solo dire e decidere perché
Ho una funzione per questo particolare
set di configurazione e che potrebbe
in realtà funziona così ora stiamo andando da
l’input su cui si muove il mouse
il decidere oh eccetto il nostro modello iniziale
qui non ha più abbastanza informazioni
questo non è un messaggio iniziale , è un
stato iniziale e quindi dobbiamo fornire
una direzione, ho deciso cosa usare
quella foto di nuovo va bene, se lo è
sta per essere una direzione, allora meglio aggiungere
un caso qui e se aggiungo un caso qui il
il compilatore si lamenterà se non gestisco
quaggiù quindi abbiamo bisogno di un altro uno dei
questi che sale e si presenta e
dimmi perché non riesco a trovare la variabile X okay
perché penso che sia come un messaggio punto
X o qualcosa a quel punto sì
ovviamente non puoi accedere a qualcosa
non ho tutto bene dieter ora cosa fare
okay, inizia a salire o è zero
questo è lo stato iniziale e non appena
Sposto il mouse
sì le decisioni sono prese e dieter
punti qui
buon lavoro dieter va bene così ora ho il
decidere e noi stiamo prendendo decisioni
separatamente dal punto di vista e mi piace
ma stiamo ancora solo rispondere alla
posizione che abbiamo sono più
messaggio recente che abbiamo ricevuto il
posizione attuale del mouse non lo siamo
rispondendo a tutto ciò che ha sempre
successo che mi potrebbe interessare tutto okay
Diciamo che non vogliamo dieter solo
rispondere al movimento del mouse che vogliamo
come fare clic su un pulsante per farla girare
sinistra o destra
questo ci darà un’altra fonte di
input per fare un pulsante
abbiamo bisogno di questo andremo giù al
immagine e invece di solo un
immagine avremo bisogno di un div che non ha
attribuisce che ha alcuni bambini che
includi l’ immagine ma includi anche a
pulsante il pulsante avrà il figlio di
Texas è a sinistra e ha bisogno di un onclick
evento così quando io quando gli chiedo di avere un
su evento click che al clic evento esso
prende come argomento il messaggio che esso
dovrebbe rimandare bene quello che veramente
Volevo rispedire è lasciato che mi piacerebbe
per dire che abbiamo convertito il mio ritorno di
direzione ma il problema è tutto il
messaggi in arrivo che stanno per colpire
decido chi deve essere lo stesso mio
decidere che la funzione deve essere dello stesso tipo
e sinistra e la posizione del mouse sono due
tipi disparati quindi devo creare un
tipo di sindacato va bene per quanto riguarda le prove
a sinistra dicono che il punto rimanente sarebbe
che a me piacerebbe avere un senso
commento e andremo avanti e fare il
tasto destro come bene e sta andando a
salva il punto giusto che avrebbe senso
e il formato di Allen ha aggiunto un mucchio di
lo spazio verticale ora ha due pulsanti
vogliono andare da sinistra a destra, ho bisogno di
essere in grado di restituire un messaggio personalizzato
tipo che può essere o direzione o
Posizione del mouse così bene che posso avere punti
in una direzione o hey il mouse si è mosso
e è andato oltre la posizione del mouse qui
ottimo quindi ora tutto il mio codice HTML sta tornando
messaggi che stai restituendo un messaggio
bene tu non provi a pensare a cosa se tu
sarebbe stato un messaggio che deciderò
il metodo non richiede più solo un mouse
posizione può avere uno di questi
messaggi e può decidere cosa fare
basato su bene potrebbe arrivare solo a puntare
in una direzione nel qual caso nei razzi
non sapremo cosa X è allora
Non ho intenzione di sapere cosa sia Y ma a
almeno conosco un punto di direzione e a
questo punto se otteniamo una mossa del mouse allora
non sapremo quale sia la posizione di X e noi
non perché è, ma non sappiamo cosa
direzione da seguire per quanto riguarda tutto ciò che riguarda
questo sta a posto uno dei possiamo necessario
fare è assicurarsi tutto ciò che noi
entrare è un messaggio che dirò
loro mandano il puntino del mouse muove il movimento
informazioni attraverso il movimento del mouse
costruttore per il messaggio e ora noi
dovremmo iniziare con un modello che otteniamo due
diversi tipi di messaggi dai pulsanti
o dal movimento del mouse vediamo cosa
il teatro deve prima essere importato
lei non ci attira come forse
si
okay, questo è più ciò che è il mio oh io
totalmente non ho fatto solo quello che ho
lo sporco va bene, che linea è quella tre
La direzione è uguale a quella che chiamerei il
la direzione è andata bene
no sì ci sono i pulsanti ma se clicco
il pulsante mi dimentico del mouse
posizione altrimenti mi dimentico che whoo
bummer um grande quindi quello di cui ho bisogno è per il mio
funzione laterale per avere un ulteriore
argomento che è il valore precedente di
il modello e questo sarà precedente tale
quella direzione è quella e posso ottenere il
direzione fuori dal precedente che lo farà
essere così conveniente per fortuna questo è
anche cotto bene nell’architetto Elm
non è una fortuna solo questo fuori si
in realtà funziona bene in direzione precedente
e questo viene ad essere chiamato
aggiornamento e questo punto siamo molto vicini
per l’ architettura naturale di Elmar tranne
che abbiamo solo un input e noi no
fare qualcosa in JavaScript rendere Chrome
e ho bisogno di aggiornare i dati ok okay noi
possiamo muovere il mouse facendo clic su hop sinistro
ricorda che il puntatore ricorda a
posizione possiamo fare clic su OK, va bene il
solo altre cose tra qui e il
L’architettura degli olmi è il tema che vorrebbe
prendere le bandiere come argomento l’input
può variare in base al modello che puoi
deciderlo più tardi e possiamo entrambi inserirci
un aggiornamento può passare i comandi delle cose
richiede JavaScript e il sì
volevamo parlare della struttura di Chris
ma in realtà non ho davvero tempo
i componenti hanno ciascuno di questi pezzi
e viene organizzato in file e ottenere
assemblato
il dominio non è penetrato con il programma
perché una cosa che ho notato è che io
non posso avere messaggi come me
e poi dopo la modella ma non posso avere
chiamate funzioni dagli altri moduli
e questo viola l’ incapsulamento, ma quello
è improvvisamente diventato ok ora perché se
Cambio l’ingranaggio del compilatore
proteggimi e assicurati tutto
va bene così faccio pezzi molto più grandi e
Sono al sicuro a causa dei tipi e dei
immutabilità e non sono come
impassibile ma funziona anche
Ho rinunciato a volere il mio codice per
suono naturale da leggere come l’inglese I
non voglio che legga come l’inglese I
voglio che ora legga come codice facendo Ruby
non contento di quello che ho io il
la lingua sono molto felice con il lavoro è
davvero divertente come molto di più per il
struttura ed esplicita di alan
non c’è eredità non c’è magia
per niente non ci sono classi di tipo
nulla di subdolo succede ad ogni funzione
la chiamata va esattamente in un posto quindi io davvero
penso che potremmo ottenere molto di più dalle nostre
editori questa è la mia sensazione istintiva
lo stato LY ecosistema, a questo punto
la comunità è davvero buona, c’è una
un sacco di unix anche in chicago quando
la prima conferenza è in settembre
e st. Lewis è un pre-conferenza troppo
strano ciclo di chiamate per le proposte in corso
presto ma generalmente è molto divertente
e l’ architettura ha valore al di fuori
c’è la mia foto preferita va bene questo è
Hugh è un personaggio di Star Trek che
può anche piegare la realtà al suo capriccio e io
mi sento come un olmo. Vado a vivere in Q’s
mondo posso vivere e iniziare con il
la prossima generazione dove posso ottenere un
tazza di tè da una cosa nel muro
ogni volta che voglio ti ricordi di cosa
la cosa si chiama Io vado a vivere nel
futuro dove tutto è organizzato e
ha senso e di tanto in tanto se io davvero
ho bisogno di un pony che riesca a raggiungere
questo portale e stringere la mano
JavaScript quindi questo è ciò che Elm
ha fatto per me mi permette di vivere
futuro e fare abbastanza saggio, sono justa
trama se vuoi imparare andrò qui
una guida online il codice per questo
la presentazione è come la striscia di Github
assunzione ovviamente ma non per grazie

Please follow and like us: