Press "Enter" to skip to content

GOTO 2013 • Why Code in Node.js often gets Rejected by SoundCloud • Phil Calcado


ciao a tutti grazie per essere grazie
per avermi
il mio nome è Phil, ho lavorato per un’azienda
chiamato SoundCloud a Berlino e sono qui
parlare un po ‘di come abbiamo avuto
SoundCloud ha esperienza di ciò che è nostro
esperienza con la community node.js in
generale e cosa penso e non è un
la canzone ha chiamato le cose come poche cose
potrebbe o dovrebbe essere fatto a ciascuno di alcuni di
i dolori che abbiamo avuto durante il tentativo di non
solo la bellezza sembra in node.js ma anche
chiedi a node.js di unirti a noi e di essere
produttivo in Gerico così il primo
cosa solo brevemente su di me nel 2011 I
ho deciso che non volevo essere un
più consulente in cui ho lavorato
consultandosi con i forwards per quattro a
cinque anni e la consulenza è molto divertente
si viaggia molto si fa un sacco di
cose diverse ma diventa il palcoscenico
dove vuoi quel cliente per un anno
e quando le cose cominciano davvero a farsi
bene quando i prodotti e gli utenti
inizia a usarlo sei fuori dal tuo
contratto e tu sei tornato a casa e poi
torni da un altro cliente e inizi
ancora e ancora e ancora quale
tipo mi ha un po ‘stanco e ho deciso
che sarebbe meglio andare a costruire un
prodotto così ho letteralmente saputo che volevo
andare a Berlino, perché e io letteralmente
andato a costruire start.com jobs.com che
è davvero un bel sito web e
ho finito per trovare questo corso completo su
nuvola così una nuvola è la più grande
repository di ordine sul web che possiamo
pensaci un po ‘come YouTube per il
web e le cose incredibili che quando io
prima mi rivolgo per un po ‘di cloud
non ho mai sentito parlare di qualche nuvola ma è così
è successo lo stesso di quando mia sorella ha detto
io ero incinta lei sa che lei ha chiamato
io sono come oh sono incinta e
congratulandomi con lei sono uscito dal
casa e immediatamente tutte le donne intorno
io ero incinta , è solo che inizi
rendendola conto e nel momento in cui ho applicato
per SoundCloud sono andato al Guardian
pagina Sono andato alla pagina Billboard e io
visto che c’erano giocatori da
SoundCloud ovunque siamo noi siamo un po ‘
di una piattaforma o eravamo abituati a essere ora
più di un sito web di destinazione ma noi
è cresciuto come una piattaforma
e il tuo pelvico ne abbiamo più di otto
ore di musica e parlato sonori caricati
ogni minuto quindi non puoi
ascolta tutto il nostro archivio anche se tu
fermati per il resto della tua vita e noi
avere circa 200 milioni di utenti al mese
sia sulle nostre proprietà mobili
siti Web siti web tutto e il
altri posti in cui i nostri widget sono simili
il sito web del Guardian New York Times
casa bianca e le cose diverse io
avere dalla Casa Bianca per Obama a
Skrillex abbiamo anche alcune cose strane
come il suono dei pipistrelli che fanno sesso che
a me sembra molto simile a Skrillex ma
è una piattaforma e stiamo crescendo
molto ma una cosa proveniente da a
prospettiva di consulenza una consulenza
sfondo una cosa che sapevo era davvero
molto importante per ottenere il diritto eravamo io
penso che quando mi sono iscritto avevamo circa 40 anni
sviluppatori e che è una grande startup
ma lei era piccola per questo ragazzo sempre
storia e un processo di reclutamento è stato un
casino mi ricordo di aver fatto Skype Skype
interviste da Londra a costruire poi
volando a Billy e nella stessa
interviste di nuovo e poi le persone no
Assicurarsi quindi ho dovuto venire in una Domenica e
era veramente cattivo e sono davvero appassionato
sul reclutamento e il tutto
processo di assunzione e impertinente pure
come trovare le persone mie perché ho avuto
questo sfondo come un consulente e
quando lavori molte persone che lavorano
consultando ciò che stavano consultando cosa
lo fai è vendere il tempo delle persone in salsa
trovi le persone esattamente una parte fondamentale di
il tuo business perché è quello che sei
andando a vendere in esso così sono venuto con questo
mentalità e ho dedicato molto tempo
nel lavoro con la mia squadra e le persone delle risorse umane
nel tentativo di ottenere un processo di reclutamento
quello succherebbe un po ‘di meno e ispirato
pesantemente su ciò che eravamo abituati a vestire o
lavori veniamo con un abbiamo creato un
Abbiamo un modello molto semplice in questo modello
una divertente intervista in cui qualcuno schermi
si solo per assicurarsi che le aspettative
sono in partita abbiamo un sacco di persone che dicono
oh Ho molta voglia di lavorare in un ordine
chiamato un nuovo formato di codec audio questo
non è quello che uno sviluppatore back-end
SoundCloud abbiamo alcune persone
lavorando su diverse parti di questo ma
se hai intenzione di lavorare come back-end
lo sviluppatore non è molto probabile che lo faccia
quella
quindi potremmo aver bisogno di impostare delle aspettative
in anticipo e la seconda parte è il
revisione del codice in modo da inviarti un problema
risolverlo dovrebbe richiedere circa tre ore
per uno sviluppatore esperto per fare Dula
e il difensore centrale
abbiamo almeno tre persone che guardano
il tuo codice e un sentimento che proviamo
per dare feedback alle persone quando il codice
non era non ha incontrato qualsiasi criterio noi
pensavo che dovresti incontrarti e poi se tu
se ci riesci, allora vieni per
interviste e il caso peggiore un’ora voi
avremmo avuto sei interviste
abbiamo avuto il massimo con solo due o tre
e l’offerta è l’ultima tappa e
come manager in questo momento il mio uno dei miei principali
le preoccupazioni è assicurarsi che questo ciclo
va molto velocemente perché è davvero
difficile trovare persone buone quando si trova
qualcuno che vuoi solo assicurarti
prendi questa persona prima che io li abbia
e perché sono anche molto preoccupato
su come convincere le persone che effettivamente sanno
come stanno facendo davvero
valuta questo passaggio a cui il codice valuta
questa è la cosa più importante di noi
può andare d’ accordo con te molto probabilmente
noi non siamo esattamente lo stesso tipo di
persone così avremo un po ‘di rozzo
bordo da percorrere durante la comunicazione
ma se io se assumo qualcuno per scrivere il codice
e non ho visto niente di queste persone
questa persona ha scritto prima che suoni
un po ‘fuori di me quindi tendo davvero
apprezzo davvero questa parte del processo
e una cosa interessante che abbiamo avuto quando io
prima aderito a questo è stato letteralmente il
email che ho ricevuto con la mia sfida allora
che è quello di costruire un sito Web con uno
cosa è un pulsante di caricamento e a
barra di avanzamento in modo da poter caricare
qualsiasi cosa e come renderlo disponibile in
un URL e l’unico vero trucco su questo
la sfida della codifica è la barra di avanzamento
perché devi sincronizzare questo e
deve lavorare in i6 quindi devi
sincronizzalo con ciò che stai leggendo
nel back-end ed è un po ‘complicato
dipende da cosa fai in particolare
supportare più client allo stesso tempo
tempo ma non è non è troppo
complicato ma sì
è quello che abbiamo avuto e la prima volta
In realtà ho dato questo discorso è il secondo
il tempo II ha raccolto alcuni dati su tutti
invii che abbiamo avuto anche
Ho valutato e cerco di capire
quali lingue utilizzare prima di inviare
le loro soluzioni in noi non sono davvero
richiede una lingua specifica Soundcloud
eravamo un negozio di rubini in questi giorni
spostarsi sempre più è stata una JVM
negozio che un sacco di sistemi in Scala e
chiusura ma non l’abbiamo mai detto
devi usare questa lingua oh tu hai
conosci anche Ruby e l’unico vincolo
avrà avremo Vince che hai è
dovresti minimizzare le dipendenze
idealmente dovresti solo dipendere
runtime della lingua e questo è un po ‘
complicato con un linguaggio come Ruby
siamo come tutto è nel runtime
ma questo non dovresti
richiedi una biblioteca, se pensi
hai davvero bisogno di questa libreria
ma solo bianco a destra di un paragrafo
spiegando perché pensi che sia necessario
tra il 2011 e il 2012 è stato gentile
della distribuzione che avevamo avuto
enormemente ha un sacco di Ruby molto
nodejs
qualche Java qualche C e piacere e da
questi contributi sono in percentuale
questi il verde rappresenta noi persone
effettivamente invitato per interviste dopo di esso
e questo non è che la persona è stata assunta
solo che in realtà abbiamo detto oh tu
sapere cosa dovremmo venire in ufficio e
dovremmo chattare prima di parlare
sui diversi valori uno
cosa che ho davvero odiato
sfida l’ ho odiato mentre stavo facendo
Mi è stato presentato, la mia soluzione per farlo Mi
odiava che stava rivedendo il codice perché
Il 99% del caso è così semplice qualcuno
otterrebbe qualcosa di simile a binari un lampo
uploader metterli insieme e inviare
a voi a volte ci sarà un intero
progetto completamente appagante del cosa
è stato chiesto ma c’era come uno o due
linee di codice che il Candido aveva
in realtà scritto tutto il resto era
solo mettendo insieme quadri e
facendo alcune cose è arrivato ad una fase in cui
Ho iniziato a inviare e- mail alla gente dicendo Ciao
Sono un nome, e io sto recensendo il tuo
codice puoi vederti usare il flash
caricato so che non dovremmo dire
ma quello non è quello che siamo
in cerca di voglio provare di nuovo senza
facendo ciò ha funzionato un paio di volte
Le persone delle risorse umane non sono così felice che eri tu
conoscere
ma abbiamo almeno due persone che
presentare una soluzione molto migliore una volta noi
erano chiari con i nostri limiti ma anche
ad essere onesti il problema del caricamento
e lo streaming per noi è piuttosto morbido
la transcodifica è un po ‘un dolore perché
abbiamo un sacco di upload di scale e e
in streaming vedremo i fini in
s3 quindi abbiamo qualcosa nel mezzo
che lo suona sai che basta fare
certo va tutto bene, ma a ciascuno di noi
negozio lì è al sicuro lì la nostra villa
siamo affidabili come Amazon in questo
senso così invece di farlo mi piaci
si sono riuniti come un sacco di squadre
insieme e ho cercato di pensare a qualcosa di meglio
sfida per questo e per quello che siamo venuti
era con riguardo agli eventi così siamo
proponendo stiamo chiedendo agli utenti o
candidati ora per fare questo server socket
è un sistema che le persone dovrebbero costruire
dove riceve gli eventi in una presa
e gli eventi sono user a be used
l’utente essere seguito si vede alcuna differenza
come l’utente a invia un messaggio o trasmesso
messaggio che dovrebbe ricevere solo il loro
seguaci e il tuo sistema deve solo
capire cosa sta succedendo lì
una cosa che forniamo è anche un test
suite per voi per controllare quindi c’è un
c’è un file di programma che esegui
contro il tuo programma prima di essere stato
inviandoci per assicurarci che tu
probabilmente una soluzione è giusta o sbagliata
non ho alcun problema a parlare
questo accordo e vorrei che lo desiderassi
rendere questo open source a un certo punto
perché non li penso davvero
le cose dovrebbero essere un segreto o il segreto su
questo lavoro ma comunque siamo arrivati ​​al nostro
distribuzione e una cosa per questo
nuova sfida e una cosa è che ho visto
questo passaggio nell’ultimo anno che vedi
qui abbiamo preso il controllo di C che abbiamo usato
per ricevere un sacco di contributi ora noi
vedere un sacco di presentazioni di go non lo so
come leggere che facciamo un sacco di ragazze
in particolare i nostri team di infrastruttura
forse è perché qualcuno ha letto il blog
post su di esso non lo faccio ma non penso
penso di aver ricevuto una sottomissione in do
l’anno scorso tutto il resto era in giro
queste lingue ed era per il numero di
persone che hanno invitato per le interviste
molto simile a questo
quindi non è molto molto basso
generale se potessi effettivamente farlo
la seconda fase dell’intervista e
solo una cosa che la prima volta
dai questo discorso e quando parlo
nodejs nella nostra esperienza sappiamo scacchi
con le persone che è una volta che non lo fanno
fraintendetemi siamo da Berlino siamo
fianchi è quello che ci piace parlare di
lingue straniere Amiamo parlare
le strutture amano discutere – tutto
che non hai sentito parlare di se stesso bello
e non abbiamo progetti di jazz attuali
il sito web mobile è praticamente tutto per tutti
il retro termina basato su e basso jeaious a
molto del nostro sito di streaming di eventi
il sistema non era un caso, ma lo eravamo
un po ‘spaventato perché ci saremmo diretti
per questo nuovo progetto che doveva
sostituire la nostra API pubblica con simboli con
qualcosa che più o meno riceve
le richieste non hp richiedono cinque richieste
il backend che li combina insieme
in qualche modo e restituisce questo è il perfetto
caso per sapere gli scacchi soprattutto se tu
considerato che tutto sia Jason ma noi
erano come possiamo effettivamente costruire
qualcosa con questi due e trovare persone
quello può mantenere e mantenere quello che va
e andando in una buona forma non troppo sicuro
abbiamo deciso di decidere in realtà
costruisci questo nuovo inserimento del progetto
ma i motivi principali che il codice
ricevuto sono per lo più come questo è questo
in realtà non è una sottomissione
qualcosa che ho avuto su internet e
cercando di offuscare perché lo farei
per il secondo appuntamento, ma questo non è tutto questo
nessuna funzione è solo male per Sirocco
questo ifs ovunque è bandiere
dappertutto non si sa cosa sta succedendo
sai cosa stai facendo funziona in un certo senso
in ogni chiamata indietro c’è un blob di
JavaScript è impossibile da leggere
duplicare le righe bla bla bla così
la cosa principale che trovi nel
node.js per miniatura ora nel Ruby
anche la comunità è se qualcosa
viene da qualche altra lingua Java C
un piccolo discorso acuto va bene, ma credo
come se qualcosa venisse dal tempo al
range non è buono ora amico questo non lo è
Giava
non fare non provare a spingere il nostro
la complessità qui modella i tuoi modelli
tutto su di noi JavaScript Ruby
qualunque cosa avessero avuto un linguaggio semplice loro
non ne ho bisogno e quel codice me lo dice
che questo non è vero
non dovremmo buttare via anni e anni
anni di cultura dello sviluppo e
a volte anche un po ‘ di scienza
solo perché pensiamo che il nostro linguaggio sia
più semplice di un singolo linguista è meglio così
questi sono come alcuni libri che in realtà
avere una teoria su come gli oggetti
comportarsi in come disegno e circo I
penso che molti di loro siano in C ++ alla fine
uno in iPhone quindi dovremmo essere quale
applicare questo tipo di cose di questo tipo
conoscenza della tecnologia incantesimo mix giocattolo
Il codice JavaScript si basa bene, suppongo ma
il grande problema è che javascript è
molto flessibile nel modo in cui
nodo nel modo in cui è possibile tracciare
la tua domanda e io non ho visto a
buon libro o riferimento su come si dovrebbe
posare l’ altra applicazione che si dovrebbe
crea il disegno principale che penso
siamo evoluti nell’industria in un certo senso
quel codice e progetta un bel po ‘il
stessa cosa ora con gli svantaggi che
abbiamo smesso di scrivere libri e consumare
design del materiale molto prima che lo usassimo
per avere un po ‘più di libri astratti dove
i moduli si parlano in questo modo erano
discusso ora abbiamo un libro su
questa libreria un libro su questa API ma non
così tanto su come deporre un
applicazione devi spendere un sacco di
tempo di lettura tramite codice open source a
capire cosa fanno le persone in realtà
costruire questa roba così la cosa principale di
tu su JavaScript in questo senso
sebbene sia che ce ne siano almeno tre
modi per costruire un lodge come JavaScript anche
l’applicazione uno è usare decente
le procedure per mangiare la mattina al peccato pensano
sui codici procedurali che manteniamo
ascoltare questo procedimento come se lo fosse
una cosa brutta non è una cosa cattiva di salah
c’è un sacco di persone che hanno investito a
molto tempo prima della maggior parte delle persone in questo
la stanza è nata per capire e per
creare buoni schemi attorno alle procedure
il codice che è possibile fare puoi spendere
il tuo tempo a leggere libri come questo e
quindi disegnare diagrammi come questo che
non devi davvero ma questo è
questo descrive come i moduli interagiscono con
a vicenda con bandiere e dati dove
vengono e non arrivano c’è un
molta tecnica e ce ne sono molte
schemi che puoi usare quando scrivi
codice procedurale codice procedurale non è un
blob di cose messe insieme in cosa
essere una funzione che dovrebbe essere un metodo
questo non deve essere cattivo ma essere
onesto ci vuole un sacco di sforzo
letteratura non è aggiornata in termini di
tecnologia in modo da vedere come le persone usate
disegnare un diagramma come questo quindi scrivere
il codice quindi potrebbe scrivere pseudocodice
quindi scrivere il codice in modo che non lo facciamo
più è un po ‘difficile ma potresti farlo
si potrebbe totalmente farlo e l’ altro
l’opzione è oggetti, quindi tutti odiano
oggigiorno questi giorni apparentemente questo è
questa è una cosa carina da fare anche io
anche se ho fatto funzionale
programmazione e lingue Lisp per un po ‘
Mi piace molto l’orientamento agli oggetti e
a volte questo mi rende strano
nella stanza non vedo alcun problema
con quello penso che va bene, ovviamente
qui la teoria è imperfetta qui ma
poi di nuovo quello che non è, ma si potrebbe
JavaScript anche con oggetti in effetti
il nostro sito principale è un’app per una sola pagina
c’è un post sul blog che lo descrive che
è praticamente orientato agli oggetti e lo è
bene funziona bene abbiamo un sacco di gente
contribuendo a questo codebase abbiamo a
molte modifiche ogni giorno che cosa va bene il
il codice è leggibile, i codici significano
mantenibile non è non corre alcun js’ eventuali
browser ma potresti applicare lo stesso
principio da qualche altra parte, ma il modo in cui io
piace scrivere JavaScript sia in basso
sedie senza che tu sappia ma anche nel
browser anche se ho molto
varianza nella parte posteriore e poi nel
front end è quello di utilizzare le funzioni e quando io
dite le funzioni usate che cosa significa
proprio come gli oggetti al blocco
di una funzione di sistema orientata agli oggetti
diventare il mattone di base che uso così
tutto non tutto ma solo la maggior parte
le cose saranno modellate dopo
funzioni Ti mostrerò alcuni esempi più tardi
ma uno perché dovresti usare qualcuno?
funziona con JavaScript in questo senso
perché non andare per l’oggetto si avvicina a te
molto popolare bene le prime cose che
non è che mi riferisca al nodojs
torna domani se usi molto meglio
il suo passaggio in cui un approccio funzionale
poi qualsiasi altro approccio ho provato questo
è lo stesso con Ruby uno dei primi
progetti di cui ho fatto parte
SoundCloud era il nostro sistema di notifica
la cosa che ti manda a spingere
notifiche e – mail e notifiche
tutto questo ed è proprio questo il sistema
elabora molte transazioni per a
secondo
abbiamo iniziato a costruirlo nella macchina degli eventi
che se conosci Ruby se non lo fai
già è un è un’implementazione del
schema del reattore perché eravamo noi Ruby
ho deciso di farlo davvero
orientato agli oggetti e abbiamo finito con a
molti oggetti che implementano il
schema di comando cioè sono solo
funzioni o procedure e abbiamo cablato
loro insieme e facciamo un sacco di cose
ogni giorno e come ragazzo se hai appena avuto
come reso un disegno sorta funzionale
un design orientato agli oggetti che salveremmo
un sacco di righe di codice e un sacco di oh
mio Dio, dove va di nuovo?
Mi fondo solo su quel particolare
aveva il reattivo e poi il callback
abiti modello e un approccio funzionale
molto meglio e si scopre che c’è
un sacco di cose online comprese queste
famoso post di Brandon Wright the
JavaScript inventivo è oh davvero
JavaScript è molto attento a ciò che dico ora
è un po ‘come uno schema perché alcune persone
sono grandi, alcune persone sono d’accordo
le persone si uccidono a vicenda dopo questo e
è anche qualcuno che ha fatto comunemente
schema di rotazione molto penso che sono io
penso di poter vedere un sacco di schemi
quando scrivo JavaScript e vedo molto
di come posso farlo seguendo lo schema
modelli e se le persone pensano al nostro schema
è estremamente funzionale e questi e
che in realtà mi scusi ha un sacco di
mutazione tutti usano solo questi
funziona in un modo molto migliore e io
piace seguirlo ma non voglio
entrare nelle guerre religiose di
JavaScript è tutte queste paure, no, no
penso che sia una lisc credo, ma quello
non significa che non possiamo usare quello che noi
sapere da queste lingue nel
JavaScript stesso ora come possiamo farlo
usiamo quindi queste lingue come facciamo noi
ottenere i concetti da lingue come
Lisp Suppongo che potresti usarne un altro
lingua pure e applicarli in
JavaScript come ho detto un po ‘ prima di me
penso che sia abbastanza sfortunato che il nostro
l’industria è arrivata a una fase in cui abbiamo
codifica questo design molto ben consolidato
nella nostra testa ma non stiamo discutendo
progettare così tanto da imprecare
linee di codice in dieci righe di codice
indipendentemente dal fatto se e anche e e possa
forse appendere sulla forse jumpy da dieci
linee di codice a come distribuirli
globalmente in scala orizzontale ma
non stiamo discutendo il livello medio
architettura
come i moduli parlano tra loro come
dovrebbero essere modellati, penso che abbiamo solo
ha deciso che l’iniettore di dipendenza non lo è
bene una buona cosa ma poi non l’abbiamo fatto
sostituire con qualsiasi cosa e c’è molto
di dipendenze hard-coded essere iniettato
ovunque
e questo, ma penso davvero che questo sia un
un po ‘sfortunato e dovremmo lavorare
quella
ma quando stavo pensando a questo
problema su come strutturare un’applicazione
un modo funzionale che qualcuno ha suggerito a
prenota per me che è liberamente disponibile
online si chiama come progettare pro
il programma di progettazione della casa è davvero buono e
è il modo in cui ti ha fatto attraversare molti
cose diverse ma penso al succo di
o quello che vorrei che le persone io
lavorare con e persone che stanno facendo domanda
perché il campionatore ne prenda è roba
come questo questo paragrafo qui dove
crea una funzione per aggiungere tre numeri
giusto quindi non essere spaventato
le parentesi giuro che è l’ultimo
tempo di vedere Lisp in questa presentazione
ma cosa abbiamo in turco e io
scusa per essere stato così alto così
definisce la funzione di rete , quindi definiscila
diverso definendo una funzione l’add
la funzione prende una X e poi ritorna
una funzione chiamata X addizionatore quindi se vedi
c’è un altro blocco che definisce dentro a
funzione la parola chiave locale c’è a
un po ‘come in JavaScript e poi così
restituisce questa funzione in modo che tu riceva
hai una funzione che ritorna
riceve X e restituisce una funzione
somma X con qualcos’altro se vuoi
questo in un repository è quello che ti danno
definisco che ho definito la mia variabile
sommatore e dicendo che è il contenuto
di AD plus 7 poi applico aggiungi a 10 e
Ottengo 70 quindi se questo non ha fatto un sacco di
senso a causa delle parentesi è
all’incirca equivalente a questo JavaScript
è anche molto alto, quindi se ottengo ho un
funzione aggiungi che ritorna alla ricezione
X il risultato restituisce una funzione
somme questo aggiungere questa X con un altro y e
poi ne creo un altro e lo aggiungo
il tavolo e qui hai del cromo
vassoio di uscita
ora questo è solo usando un ordine superiore
funzioni e ciò che viene talvolta indicato
come combinazioni per fornire alcuni a
aggiungere funzionalità al tuo codice e
ci sono molti modi diversi che puoi
applica questo e questo è come penso questo
è il nocciolo del nostro libro e di così tanti
tanta parte della letteratura specialmente su
Il tipo Lisp ti dice che vedi
scrivi il codice in questo modo e lo farai
hanno molti vantaggi quindi che tipo di
Benefici vediamo tre esempi
di come questo può essere applicato al mondo reale
JavaScript per qualche mondo reale valido ma
come possiamo andare a scuola, possiamo essere cool
e così ottieni un beneficio ciao prima
esempio è il passaggio di funzioni attorno ad esso
molto molto comune avere un codice come questo
almeno nella sottomissione di Coe
ricevere e ora il nodojs in particolare
codice Ho visto questi questi sono due
funzioni alla traccia e all’utente che
basta ricevere un utente un oggetto traccia e
salvarli nel database o eseguirli
qualche operazione nel database cosa
loro entrambi hanno una connessione
trasmettendo le credenziali che entrambi eseguono
il che significa che la teoria è una funzione
esegue alcuni lavori alcuni sequel nel
connessione al database e gestiscono
errore in modo Ovviamente c’è un sacco di
codice duplicato lì e perché tu
può avere una di queste funzioni per ciascuno
entità nel tuo sistema ti ritrovi con a
molto codice in lingue orientate agli oggetti
puoi farlo in molti diversi
i modi più comuni è avere un
metodo del modello attorno a questo ma se tu
se hai usato Spring JDBC e tutto il resto
lo sai che può davvero diventare realtà
male ma anche tu potresti provare a essere fantasioso e
obiettivo è aspetti per esso quali
mai veramente ha funzionato molto bene ma sparo
lì e cose diverse da rimuovere
questo codice duplicato anche in
il linguaggio orientato agli oggetti è un po ‘difficile
è tutto ok
è fattibile ma è difficile in a
modo procedurale non sono troppo sicuro di come
fallo ma comunque quando parli
funzioni e tutto è funzionale
programmazione c’è un modo semplice per fare
quello almeno qualcosa che diventa
facile dopo un po ‘che è il primo
cosa è che estrai
comune e questo è uno schema che stiamo andando
per vedere più e più e più volte
nei programmi funzionali cosa stai facendo
programmi funzionali che estrai il
protocollo lì l’interazione dal
ciò che viene effettivamente fatto, quindi cosa
stiamo facendo qui è che creiamo a
la funzione viene eseguita con la connessione
riceve una funzione da eseguire e
argomenti e poi creerà a
connessione al database e basta chiamare
quella funzione o gestire lì stesso
Questo è molto semplice, che è molto facile ri
in realtà è successo a fare molto di questo
roba nel browser ma per qualche motivo
non tanto nel back – end quando scrivi
JavaScript ma poi una volta che hai finito
questo puoi scrivere la tua traccia aggiunta e
aggiungere funzioni utente come quelle in modo che loro
basta eseguire solo chiamare execute
passando nel database e vedono
quello che vogliono fare questo codice rate
dovrebbe essere molto più semplice se segui
questo modello e il modo in cui focalizzi il
operazioni come quella che chiami eseguire
con la connessione si passa alla funzione
quindi quando stavo parlando della funzione di
essere l’elemento fondamentale è quello che io
inteso in un design orientato agli oggetti tu
ti passerebbe oggetti intorno in a
design funzionale che spesso stai passando
funzioni intorno e qualche volta queste
funziona bene spesso questi
funzioni stanno per essere funzioni pure
come questo in cui non è veramente
cambia stato anche se chiama una funzione
in qualsiasi momento, ma è diverso
domanda
e riceve un argomento quindi questo è quello
sii onesto per quello che ho visto
incluso quel campione che avevo prima
semplifica molto ciò che le persone sono
cercando di fare intorno alla gestione delle risorse
perché la gente non lo fa non lo faccio davvero
so così un’altra cosa è che chiusure
non sono solo per oggetti in JavaScript
tendiamo ad usare chiusure per emulare
il design orientato agli oggetti in realtà non lo è
una brutta cosa fare un sacco di lingue
che un sacco di linguaggio ha l’oggetto
sistema costruito in quel modo ed è divertente
meme attorno a un oggetto dissapointment
chiusura una chiusura è un oggetto boomin
questo è ok va bene, ma noi
può fare di più con quello anche se non lo fai
vuoi usare gli oggetti puoi usare chiusure
in un modo che ti aiuterà a costruire un
programma in um di
modo funzionale anche con funzioni pure
che sono buoni per altri motivi, ma tu
alcuni hanno abbastanza semplicità così uno
esempio che arriva anche io no
lavorato in qualsiasi sito web di alto profilo che
non è stato attaccato
ogni singolo giorno in cui hai lavorato per a
un po ‘in un sito web di relazioni che conosci
questo tipo di trovare un partner che conosco e
quello era quello il più
orribile quando si tratta di essere abusato
ogni singolo giorno dalle persone che cercano di
trova l’ex-ragazzo lì e anche a
roba pazzesca nel nostro caso ne abbiamo un sacco
spam quindi cosa facciamo se vai in alcuni
Calma ora e se ne scrivi qualcuno
JavaScript che non ha senso
Penso che un no 10 messaggi in un minuto
stai per ricevere il tuo avvertimento dire
Ehi, aspetta, fermati qui
tu stai facendo troppe cose al
allo stesso tempo, noi siamo perché ti pensiamo
A proposito abbiamo un sacco di persone che cercano di
vendere commedie e commenti in suoni voi
devono combattere contro di loro
quindi questo è il tipo di codice che uno
significa che finisce per scrivere così la funzione
il commento giusto tiene conto della tassa alfa
sollievo che conta più di tre
getta solo un errore che non scrive
il commento altrimenti salva il
commenta e restituisce l’in incrementato
contare perché restituisce un incremento
conta perché volevo dare questo
funzione pura, quindi non volevo che tu lo facessi
salva stato da qualche parte quindi sto tornando
Sto facendo tutto ciò che devo fare e
restituendo le informazioni che avevo lì
no cap stato non c’è stato cambiamento di stato
che è tutto molto buono e grande tranne
questo è il modo di chiamare quella funzione ora
è un po ‘come quello nel blocco
qui sotto dove ho un contro start
zero e che devo mantenere manualmente
il contenuto del contatore da qualche parte e
positivo e ovviamente questo è un
esempio esagerato questo codice potrebbe essere
ovunque e come si tiene traccia di
il contatore di come si può fare in modo che
il conteggio è sempre usato mai cancellato da
errore questo è questo è davvero difficile da
tenere traccia di ma non deve essere
come quella cosa che puoi fare è prima
puoi mantenere il tuo codice di commento di scrittura
esattamente come se non fosse necessario
per cambiare tutto va bene direi
quella
tenere traccia dei conteggi e della scrittura
il commento stesso è probabilmente due
cose diverse e forse dovremmo
separarli in diverse funzioni ma
non si hanno a che fare questo è forse
questa è un’altra iterazione nella nostra
refactoring ma quello che puoi fare è farlo
creare una seconda funzione che ho chiamato
qui fai funzione di commento di scrittura perché
Sono un nome orribile che riceve un
autore e poi cosa fa questa funzione
è che dà alle chiusure
mantiene una chiusura immutabile per il
autore e uno mutevole per il contatore
e la funzione che restituisce è legata a
il contatore lassù così ora non lo fai
bisogno di non aver bisogno di tenere traccia di
il valore di ritorno perché una volta tu
chiama questa funzione lo farà
mutare l’ immutabile verbale nel frattempo
la tua funzione interna è per la tua scrittura
funzione di commento in zuppa qui ed è
probabilmente è più facile collegarne un altro
le cose una cosa interessante di questo
il design è che non puoi avere
la logica contraria è possibile astrarre questo
protocollo ulteriormente e avendo il
Contro invece di farti scrivere
te stesso breve mi dispiace fare il secondo
funzione invece di chiamare la scrittura stessa
riceve solo un’altra funzione
è fattibile e questo è probabilmente quello che tu
voglio fare a lungo termine, ma nel complesso
dovrebbe andare bene dovrebbe funzionare e il
il modo in cui invochi ora è un po ‘diverso quindi
si crea un telefono si crea una variabile
auto attuale con commento sui diritti degli utenti
chiamare rendere affascinante il commento di scrittura
perché ro e poi ogni volta che vuoi
chiamare invece di chiamare quello
prima funzione chiamiamo la funzione tu
basta avere qualsiasi variabile qualsiasi funzione esso
funziona esattamente come quello precedente se il
stato tenuto in una chiusura è un po ‘te
finirà per dipendere da ciò che conservi
si possono avere problemi a che, ad esempio
non si può mangiare il più semplice dispiace non si può come
facile prendere questo ragazzo, ma ci sono modi
di farlo e solo un esempio minimo
di cosa intendo mettendo le chiusure
nei tuoi stati nelle chiusure e
un altro il terzo esempio che è
un po ‘di ripetizione dei precedenti
ma con un po ‘ più di azione che sta usando
le funzioni sono ovunque
hai un sacco di questi codici come
bene dove hai eliminato utente e
attivare utente ed è molto comune che
un’azione come cancellare o attivare
attiva intendo come quando ricevi un
email per favore clicca qui per
attiva il tuo account che voglio ricevere
questo tipo di email che vogliamo essere sicuri
che la persona che attiva l’account
è l’utente o qualcuno che ha
i diritti di accesso per farlo ad esempio a
admin e questo piccolo nel nostro codice base
nel nostro codice base credo di averlo fatto
afferrato per questa linea laggiù se
attuale utente blah blah blah ma dentro
e -mail e penso che qualunque numero di
controllori abbiamo almeno i 2/3 del
i controller hanno copiato questo robot
boom incollato
copia incolla boom boom copia incolla abbiamo
riuscito a estrarre con un sacco di test
e conservatori rilascia perché è Ruby
è davvero difficile sapere quando tu
cambiato il suo raggio non lo vuole nemmeno veramente
per cambiare qualcosa che non sai mai
quello che sta per rompere ma siamo riusciti a
ridurlo e almeno farli chiamare
la stessa funzione così ora invece di solo
avendo questo significa che abbiamo un ACL ish
implementazione ma è questo
estremamente comune e di nuovo se si guarda
a questo e se ricordi il primo
esempio avevamo probabilmente quello che dovevamo
essere puntando qui è quello di estrarre ciò che è
comune al protocollo esattamente in modo da estrarre
il protocollo comune con un altro
rendono orribili le funzioni della funzione immagine
funzione di verifica dell’autorizzazione che
riceve una funzione così che cosa è questo ragazzo
sta per fare è che lo farà
esattamente la stessa cosa che avevamo prima
ma invece di chiamare l’esatto
funzione che vogliamo fare approvare utente
cancella l’utente a cui chiama la funzione
eseguire se hanno avuto successo e poi
ancora una volta potresti probabilmente
ricevere l’elenco degli utenti sono dimostrato di
fai questa e quella operazione che potresti fare
passalo o forse anche meglio di te
potrebbe passare in una tale autorizzazione
funzione che fa qualunque cosa controllare
cosa sta succedendo e poi quando lo fai
che tu elimini e attivi l’utente
le funzioni diventano un po ‘più simili
che sono veramente piccoli e tutti loro
fare è effettivamente fare il compito il
stregoneria in contrasto con un sacco di colpi
e
boilerplate e come lo si usa è come
allo stesso modo che abbiamo fatto prima di fare
la tua funzione di controllo della transizione
passando la funzione che vuoi tu
ricevere una funzione indietro e questo è il
funzione che continui a usare ovunque
cosa interessante che viene quando molti
stai parlando di applicazioni web
perché mantengo queste funzioni perché se
sono dinamici come va
richieste di eliminazione li creano
funzioni non ho mai avuto davvero problemi
con quello
Ho sentito persone che lo fanno particolarmente
JavaScript nel front-end quindi per
browser che ha problemi con questo tipo
di cose e anche felice di cache
funzioni e fa molto di diverso
le cose non sono davvero specialista in come
fino a me stesso o il browser così io
non saprei se questo è effettivamente
andando a causare problemi o no
prima per la maggior parte dei nostri
infrastruttura che non ha mai
naturalmente in nessun linguaggio ma Ruby questo
ha causato problemi in Ruby perché il
la raccolta dei rifiuti è divertente devi
fai cose diverse ma questo funziona bene
e alla fine puoi chiedere
te stesso ho bisogno di questo questo te
ragazzi lassù
in modo da iniziare quando si inizia a questo
in questo modo quando inizi a separare il
protocollo le come le cose interagiscono da
le cose stesse iniziano ad avere
più potresti provare almeno a
dominio molto più puro e in ogni e
descrizione di ciò che stai facendo il
il problema principale è che ho scritto
dalla lista di tamiya, sì, non lo so
perché ancora una volta non abbiamo de lis
tanto il nostro blog Rafi e il lavoro attorno
come progettare programmi ho solo il tipo
del libro che ho effettivamente finire con
alcune delle domande filosofiche nella mia
vai su come modellare un dominio oggetto
usando anche le funzioni se sai che ho
ho usato questo per molto tempo
Penso che tendono a cadere di nuovo al vecchio
modello di oggetto e quindi provare a tirarmi
backup usiamo molto Scala in alcuni
chiama il tipo di tentativi per abbinarli entrambi
modello a oggetti nel modello funzionale I
pensa che tende a spingerti più verso
il modello a oggetti quando fai il dominio
modellando facciamo anche molta chiusura
che era molto severo in ciò che
i tipi di dati sono come funzioni e tipo
di dati strutturati ma ora è molto
Di Più
si tratta di protocolli e cose che puoi
così penso che il problema principale con questo
l’approccio è che non c’è no
lavoro di progettazione basato sul dominio per questo alcuni
la gente prova a pensare a quel libro
ho parlato di come scrivere
programmi come questo genere di cose ma io
non ho visto nessun equivalente a questo
libro di come come dis come modellare
il tuo dominio usando le funzioni tranne quando
parli di te che conosci matematico
domini e cose facilmente allineandoli
funziona da solo ma sto andando a parlare
l’ utente ha una traccia che ha una traccia simile
queste cose in cui non ho visto nessuno
buon grande esempio da applicare dritto
via così è uno penso che il principale
asporto Vorrei che voi ragazzi era che
malattia c’è un sacco di codice c’è a
molte volte che siamo noi siamo anche il
modo e sappiamo tutti che sono abbastanza sicuro
ogni singola conferenza dei parlamenti è
gonna dire queste parole esatte che reinventano
la ruota è troppo ma penso anche di più
di quello che pensiamo solo quello che noi
avere nelle nostre mani è diverso perché lo è
non è solo che abbiamo abbastanza
ignorante su quello che è successo lo so
prima che io nascessi, so di sapere che sono e
ogni volta che usi la ricerca
modelli per costruire i programmi del genere
perché non sai cos’è un quat
termini per cercare o cosa – guarda cosa
si sa che cosa andiamo a fare in realtà è
davvero difficile trovare qual è il cosa
qualcuno equivalente ha usato temp a 20 anni
fa
la mia raccomandazione oggi, ci provo
leggere libri che sono allo stesso modo inutili
a te in ogni momento come la struttura
libri di analisi probabilmente nessuno di voi è
andando a usare nel tuo lavoro a meno che non lavori
per una banca
forse ma ti darà ancora molto
di intuizione e ti insegnerà alcune parole
che forse puoi provare a mappare a
il tuo dominio ma quando si tratta di no js ‘
in JavaScript ha fatto il framework
avevamo lì solo due o due cose
le tecniche estraggono il protocollo da
quello che stai facendo e usa il mutable economico
Stato in recinti questo è più o meno
come ho scritto chiusura e schema
da qualche tempo e funziona molto bene
e JavaScript ha lavorato anche per
negli ultimi anni penso che sia così
abbastanza buono ma una cosa interessante
quella
quello che ho cercato di evitare all’interno del nostro
esempi e quando si discute di
i problemi è usare queste paurose parole
parole paurose come monadi perché ogni
quello che succederà è che lo sei
inizierò a scrivere questi codici come
questo e alla fine si sta andando a
inizierai a pensarlo
in realtà i tuoi protocolli hanno anche un
protocollo conosci la risorsa
protocollo di allocazione per il database
che in realtà può essere anche astratto
inoltre e tutte queste cose possono essere
astratto astratto astratto e poi
andrai in Stack Overflow
e stai per dire mmm sto pensando
di questi in questi giorni e il primo
rispondi sarà oh dovresti
guardare totalmente il mio tutorial OneNote e
vai a guardare la storia del burrito o
qualunque cosa abbiano scritto, ed è
ci vorrà un po ‘per finire
capisci che dovrai scrivere il tuo
Tutorial Nona perché è la cosa giusta
lo fai e inizierai davvero
usandolo un po ‘di più ma non ce l’ hai
a te puoi iniziare solo con questi due
cose che stavo parlando solo estratto
il protocollo dalla cosa reale
è stato fatto perché sarà così
ripetuto più e più volte è a
diciamo solo che non penso
quando vai più verso il funzionale
margine di cui hai bisogno come molti della vecchia scuola
funzionale mi dispiace orientato agli oggetti
i pattern funzionano più in programmazione
ha i suoi modelli non lascia a nessuno
ingannarti ma non ne hai bisogno
più si ricrea o non hanno bisogno
perché quelli saranno soddisfatti dal più alto
seguace di funzione di ordine elevato di loro e
alla fine lo scoprirai
un altro di alcuni altri schemi e questo
un sacco di cose da imparare per come ero
dire la maggior parte di questi libri mi piace molto
possedere libri II non hanno un Kindle
perché mi piacevano questi ganci maschili e quando
Mi sono trasferito per la prima volta dall’Australia all’Europa
come il pezzo più grande c’erano cinque scatole piene
di roba di questi libri e lo faccio
consiglio di iniziare l’acquisto e la
cercando di leggere anche se non ne hai idea
che cosa hai intenzione di usarlo per causa
specialmente come questi tavoli questi
immagini molto ricche nel senso di cose
Io stesso ho comprato pensando di non andare mai
per usarlo ma che diavolo ho questo
settimana e poi eventualmente quella mappa al mio
esperienza nella costruzione di sistemi in molti
lingue diverse anche in Java che
Farò ancora un bel pezzo che puoi vedere
almeno tu puoi capire perché le persone
lamentarsi di
Jonica è per questo che in JavaScript Ruby
Chiusura in pitone, ovviamente in Scala
c’è molto da imparare da questo libri che ho
solo non aver paura della lingua
usano perché a volte tutto per
un pubblico diverso ma chiedi di andare
il secondo flusso va e chiedi a qualcuno di puntare
che voi due avete fatto un tutorial ma
anche nella comunità JavaScript lì
è un movimento verso non è con
sottolineato sì , perché ho dovuto
ripeti questo discorso ho iniziato a leggerlo
libro e iniziando a leggere intendo io
effettuare un ordine in Amazon e questo è
questo è anche pieno di interessanti
concetti e cercando di fuggire dalla
per intero conosci la categoria colori Huskers
teoria follia non è necessario che si
potresti aver bisogno che probabilmente ne avrai bisogno
a un certo punto ma non ne avrai bisogno
per ottenere il tuo codice molto meglio
forma ora se hai deciso di andare in un altro
modo funzionale con JavaScript ma
poi di nuovo solo per rinforzarlo
non devi farlo
è javascript orientato agli oggetti è
perfettamente bene se sai cosa sei
facendo particolarmente con nodejs non lo faccio
pensa il modo migliore ma ce n’è un sacco
gente che lo fa e abbastanza divertente quando
Ho mostrato il grafico loro – solo persone
Ho assunto che ho fatto un’offerta al ragazzo
non ha risposto che e altri sono stati
lavorare con noi per un po ‘di mesi
ora sono vere solo le persone che in realtà
non aveva avuto richieste di Jessup in loro
JavaScript Java orientato agli oggetti e it
andava bene era di preferenza l’aiuto di New York
erano un gran bel codice e abbiamo preso il
ragazzi in così sì questo uno ha parlato con te
per cui hai tempo per le domande
domande
quindi rispondi, perché non usi la chat?
SoundCloud sì, se hai l’altro
domande appena arrivato mi afferrare dopo la
la ragione che usiamo in Odessa SoundCloud è
divertente perché ho parlato con te
parlare con un sacco di gente da Twitter
e Netflix e diverse società
facendo praticamente la stessa cosa e
quello che facciamo molto è avere micro
servizi nella parte posteriore e una sorta di
controllando l’ API nella parte anteriore, ad esempio
abbiamo preso una decisione discutibile sull’andare
con l’API pubblica per il nostro back-end per
per il nostro sito web ora stiamo soffrendo
un sacco di quello se vai su soundcloud
ora apri il fuoco ma premi F5 e guarda il
burocrati della natura che sono fatti di te
andando impazzire una cosa che vogliamo fare
è avere questi ragazzi che parlano con a
back-end che possiedono e che cosa questo back-end
fa come ottenere una richiesta qui ottenere
sparsi in molti servizi diversi
è un po ‘di programmazione del flusso di dati che
farà eco e poi tutto ritorna
a volte non ci interessa se
qualcosa non ritorna noi li schiacciamo
insieme restituiamo una risposta al
browser o tre dispositivi mobili che sono
persino peggio
caricaci è perfetto per questo tipo di
cosa è solo davvero buono
non si hanno veramente a pensare
su cui sono basate molte delle librerie
è fantastico che abbiamo iniziato a usarlo di più
e altro ancora, ma alla fine per questo
alla fine colpiamo il muro con assunzioni
troviamo persone che potrebbero davvero
livelli in su in quel senso in come utilizzare
node.js e perché abbiamo iniziato
diventando sempre più vicino a quello che
ragazzi come Twitter Tumblr e altri
le persone stanno usando su Foursquare
stiamo usando ci siamo mossi verso di esso
che è una pila che è un finocchio come a
quadro costruito da tweet di tutti questi
le persone usano questo è molto quello che faccio
ora ma un’altra cosa che usiamo node.js
pesantemente per ora è la segmentazione degli utenti
che è fortemente basato su eventi precedenti
avevi avuto una sorta di sistema
dove segmentazione era come qual è il
fascia d’età di questo utente o non lo so
che cosa c’è di quel tipo di tracce?
questa persona ha ascoltato in passato
sei mesi nel tipo di mondo che abbiamo
oggi la segmentazione deve essere molto di più
in tempo reale per sapere cosa consigliare a
tu che cosa mostrarti ho davvero bisogno di
sai cosa hai ascoltato fino a cinque
minuti fa e per questi
molti dei nostri sistemi conosci Jess entrambi
quelli che cercano di farti rimanere nel
lato e quelli stanno cercando di farti tornare
di lato perché ovviamente c’è qualcuno
sito web pubblico di fronte a molte persone
chi si iscrive perché volevano
ascoltare una cosa e non l’hanno mai fatto
tornare come hanno anche dimenticato ciò che il
il sito Web è stato chiamato per iniziare con e
allora devi cercare di ottenere queste persone
indietro NES significa spam all’inferno
fuori da loro cerchiamo di non farlo ma con questi
sistemi di te conoscono solo in questi giorni il
cellulare indietro il back-end per il cellulare
sito web ora è stata la Commissione e
sostituito con l’altra visita della soluzione
pila spiritosa di cui stavo parlando proprio così
che abbiamo lo stesso stack per tutti
per tutti i nostri sistemi è funzionale
JavaScript più veloce di orientare l’ oggetto
orientato non Jess in realtà non so se
qualcuno ha un punto di riferimento e vuole
condividere che sarebbe bello ma non lo faccio
pensa che molte ragioni per loro di non farlo
comportarsi in modo molto simile, ma non ho mai davvero
ho dovuto misurare questo molto di ciò che è
veramente un oggetto definisce una funzione e
la funzione restituisce la funzione che è a
ottima domanda ma l’oggetto
identificare la definizione ma direi
la definizione ha più operazioni
collegato ad esso e ha solo una funzione
una funzione operativa ne fa solo una
cosa così una funzione che crea un
funzione è solo una funzione è giusto
succede al ritorno è il suo ritorno è un
funzione stessa così mentre l’oggetto ha
un intero protocollo allegato ai dati
e come un linguaggio come la chiusura prova a
rendi questo un protocollo invece della classe
e oggetto una funzione solo questa la
altra cosa quindi è molto più è
molto meno grossa a un problema
che causa ciò che non ho vissuto
così tanto in JavaScript, ma io sì
esperienza molto in chiusura è come
organizzi queste funzioni che hanno messo
tutte le mie funzioni relative all’utente in uno
spazio dei nomi che usiamo per disperderli
da come quale parte del orizzontale
strato si siedono in non so
questa è ancora aperta una domanda aperta in
la mia testa
va bene perché i topi colorano perché questo
così bene in realtà penso che sia perché
loro sanno che cosa usiamo ma
Devo dire che quelli che non lo fanno
molto bene, molto orribile ma giusto
perché siamo con questo puoi trovare
su di te si sente se si applica per alcuni
nuvolosità i compiti che puoi trovare
fuori tipo di stack che usiamo quindi penso
le persone tendono a semplificare ma noi abbiamo avuto
abbiamo avuto alcune persone piuttosto brave
respinto nel processo solo perché no
si potrebbe capire il codice che hanno scritto
e il codice ha funzionato bene e tutto
bello ma cosa diavolo faccio
non ringraziarti

Please follow and like us: