Press "Enter" to skip to content

Streams – FunFunFunction #13


buon lunedì mattina è divertente e divertente
funzione uno spettacolo del lunedì mattina dove noi
cercare di diventare più entusiasti e sicuri
sulla programmazione esplorando vecchi
saggezza di idee selvagge e divertimento per i flussi
sono davvero proprio quello che sembra un
flusso di dati puoi pensarlo come un
uno schermo reale della vita reale con il
barili galleggianti su di esso o qualcosa del genere
dove puoi attaccare un oggetto alla fine
del flusso per gestire ogni individuo
barile di dati a cui puoi anche pensare
flusso come il risultato di promessa e
array avendo un bambino un array che è un
questa è una serie di oggetti multipli
sono già lì, mentre una promessa è una
nozione di un singolo oggetto che potrebbe essere
lì alla fine un flusso è un lancio di
valori che arriveranno ogni volta che
solo maledettamente bene sentirsi solo per ottenere
giù e sporco davvero in fretta siamo
andando a guardare il più semplice
implementazione di un flusso che potrei
pensa normalmente ti chiederei di
metti in pausa il video e dai un’occhiata a questo
prima di proseguire ma diciamocelo
non sei vuoi fare che così invece ho
lascerà questa stanza per 30 secondi e
lascia che tu contempli questo codice
solitudine prima di dirti cosa penso
di esso
tu
tu
questo è stupido numero stream è un
oggetto che contiene una serie di numeri
che arriverà in futuro a
iscriviti al flusso che passiamo a
funzione di callback in questo caso console
punto log per ogni metodo del flusso
e quello non sorprenderà registrare il
numeri fuori al flusso console
biblioteche come quello integrato in
nodejs o rxjs o bacon o Highland
oggetti hanno tutti una moltitudine di
altra funzionalità ma alla fine quella
è l’ essenza principale di ciò che è un flusso
è solo un modo di modellare un flusso di
valori che arrivano ogni volta che li
sentirsi come ma qual è il punto di
urla per cosa usiamo i flussi per
storicamente il caso d’uso più comune
per i flussi è quando è necessario elaborare
una pila di dati che è così grande che tu
non può adattarsi tutto in memoria e tu
bisogno di fare una sorta di trasformazione
su ogni riga se leggi quei dieci
gigabyte di dati nella memoria che vorresti
probabilmente a corto di memoria e anche se
avevi tutto il ricordo che sarebbe rimasto
prendere tonnellate di tempo per leggere in realtà in su
nella memoria prima di poter iniziare
elaborarla un modo migliore per affrontare
questo problema è leggere una riga in a
tempo e processarli individualmente
modellate il file di grandi dimensioni come un file
flusso e quindi si allega un gestore a
la fine dello schermo e l’elaborazione
ogni riga individualmente finché non hai finito
Ti mostrerò un esempio da tenere
questo da ottenere troppo astratto, facciamo
immagina di avere questo enorme file di
clienti che è separato da virgole in modo
ha Matias qui e ne ha fatti due
ordina questo trimestre o qualsiasi altra cosa
i candidati hanno fatto sei e il re Mukla
ha fatto bene quattro, quindi è nostro
file abbiamo bisogno di leggerlo in e per
che avremo bisogno di tirare dentro
Il filo dello spazio dei nomi di FS si raffredda e poi noi
stanno per creare un flusso di lettura
ah dai clienti punto CSV e digitazione è
difficile ora questo restituirà un appunto
stream ma le stringhe di hmm note sono buone e
tutto ma vogliamo qualcosa di più potente
quindi stiamo andando a tirare in Highland e
Highland SCS questi hub a portata di mano
biblioteca e ci alzeremo in piedi lui
Intendo terra alta stallo che stiamo ottenendo
alcuni avvertimenti qui perché non ho
un package.json nella mia directory desktop
dove stiamo giocando con questo ma
non importa basta solo chiaro che
modo ora per fare questa nota
flusso in un flusso di Highland abbiamo solo
chiama Highland tutto in quello e ora è così
Flusso dell’altopiano e possiamo chiamare il
funzionare ogni su questo e abbiamo solo andando
passalo al console dot log e guarda
ciò che questo risulta essere ed eseguirlo
okay, nessun file o directory di questo tipo va bene
i suoi clienti proviamo di nuovo, va bene
stiamo ricevendo solo un buffer e questo è
perché non stiamo passando nessuna stringa
la codifica oggi leggi lo streaming non lo è
assumerà qualsiasi cosa e semplicemente ci darà
l’ offerta di byte ma che non ci aiuta
molto quindi aggiungeremo utf-8 e lo siamo
buona BAM, quindi stiamo ricevendo i contenuti
del file qui non sono sicuro se lo siamo
ottenendo questo come una stringa o come
singole righe dal flusso di lettura
qualcosa ha solo intenzione di aggiungere un
piccolo qualcosa qui ogni X e vedere
cosa si scopre
Ho cominciato a vedere, vedete qui, stiamo ottenendo questo
come una grande stringa e non vogliamo questo
lo vogliamo come lime quindi facciamolo solo a
dividi qui vedi cosa si rivela figo
ora lo stiamo prendendo come un filo
al prossimo vogliamo trasformarlo in
qualche tipo di oggetti reali più a portata di mano
invece di questi questi separati da virgola
le stringhe prima credo che vogliamo
dividerli e creare una gara di
delle stringhe quindi vado e basta
mappare ogni valore e chiamerò
diviso su ogni valore e lo faremo
diviso per virgola vedi cosa ci offre
non proprio quello che mi aspettavo, penso che sia
perché questa X è quando io più questi due
li concatenerà così bene
sembra migliore
gli array sono un po ‘scomodi da gestire
quindi voglio renderlo corretto
oggetto dati con proprietà e cose così
proviamo a tirare quel cuore che siamo
ottenere chiamando questi ho intenzione di chiamare
che una matrice di parti allora siamo noi
andando a restituire un nuovo oggetto che sto aggiungendo
queste qui queste parentesi in più
altrimenti
volontà interpretativa JavaScript
interpretare questo come un blocco funzione ma io
voleva interpretarlo come un oggetto e
stiamo andando a chiamare il primo nome
e poi parti qui e poi me ne vado
chiamare gli acquisti num qui una chiamata
che di nuovo la parte si ferma quella corsa
e vediamo cosa stiamo bene ora che siamo
arrivando da qualche parte qui abbiamo ciascuno
oggetto qui sembra piuttosto giusto ma
Matias Qui vogliamo filtrare lui fuori essere
non è un progetto
solo clienti davvero interessanti
per acquistare questo trimestre, quindi vado a
chiama un filtro su di lui e lo faremo
perchè così il filtro Marwa è il meno utile
i clienti che acquistano dot nam quando
questo è l’unico bene che i clienti
avere più di due acquisti che dà
noi sì questi due e sì per sempre
misura vogliamo solo avere i nomi così
Farò un nome personalizzato e sarebbe così
dacci solo i nomi cosa ti voglio
togliere questo codice è che noi
stanno solo lavorando con molto semplice
funzioni qui che fanno quasi nulla
e non hanno effetti collaterali e quello
rende davvero facile ragionare sul nostro
codificare un altro caso d’uso per i flussi che
hanno iniziato a guadagnare trazione nel
gli anni recenti sono di fronte allora
programmare dove cose come
input della tastiera o movimenti del mouse o
i clic del mouse possono essere modellati come flussi
degli eventi che tocchi funziona come
gestori alla fine di questi flussi e
di solito finiscono per manipolare il
stato dell’applicazione e applicazione
lo stato è spesso implementato come un
un flusso in modo da avere altre parti del
applicazione spesso la funzione di rendering
ascoltando quello stato e giusto
rendering ogni volta che lo stato cambia
questo è diventato popolare perché lo è
davvero bello avere la maggior parte delle tue
l’applicazione è priva di stato perché stato
è una delle principali cause di bug che hanno stato
contenuto in uno o due posti
rende molto più facile ragionare
la tua applicazione e impedisce di altro
bug diamo un’occhiata a uno dei
esempi sul cotto su J s da
bekandjesse paziente è uno streaming
libreria di generi
quello che vediamo qui è un semplice contatore
widget di vedere qui che quando si preme su esso
sale e quando premo il tasto il
Contro qui non scende niente di strano
su questo e tu vedi che su
pulsante qui è il pulsante su qui
e il pulsante giù è giù questo
giù identifica qui e il contatore qui
questo è il contatore qui così vedi
che chiamiamo stream di eventi qui e noi
sono interessati agli eventi flick così su
e giù ora saranno flussi di eventi
quello che li vediamo fare qui è che loro
chiama il metodo NAP in alto
flusso e mappano quel flusso in una sola volta
così ora ogni volta otteniamo un clic
evento che si tradurrà in trasformazione
– una volta che la voce della colonna sarebbe, ma noi siamo
andiamo a guardarlo freddo qui
prima, quindi quello che fanno è che chiamano
la mappa sul down stream ricorda giù è
un flusso di clic sul pulsante giù così
ognuno di questi clic sarà trasformato in
un valore -1 e ora chiameranno il passaggio
che trasmettono il flusso di tutte le menti
quelli e unire quello con l’altro
in streaming tutti i flussi di quelli il
In più e ora tutta questa cosa qui
questa intera linea sarà ora a
nuovo stream con tutti i nostri Plus
e meno uno e quello che stiamo andando a
fare sta per chiamare la scansione
quel flusso e scansionarlo è così
fondamentalmente solo una versione di tre me di
ridurlo fa esattamente esattamente cosa
riduci ottiene il
ah prende l’ultimo valore e il nuovo
valore che ottiene e li aggiunge
insieme e emetterà il nuovo il
il nuovo numero che viene chiesto aggiunge valore così
questo contrasterà in modo efficace
flusso che è anche lo stream tornerà
o emettere costantemente il nuovo valore del contatore
e se dai un’occhiata a quello che fanno
con contatore qui è che essi assegnano
quel valore o i valori che sono
emesso continuamente dal contatore
li assegneranno al testo
proprietà dell’elemento contatore che è
è così che tutto lega insieme cosa
Penso che dovremmo togliere
gli ultimi due esempi sono le urla
componi bene insieme mi sento davvero come
Sto tornando alla composizione tutto il
momento in cui sto parlando di funzionale
programmazione ma è davvero al centro
di quale programmazione funzionale è quando
modelliamo i nostri clic come flussi di eventi
abbiamo accesso a tutti questi strumenti di streaming
che possiamo usare sugli strumenti di streaming
non importa davvero di cosa si tratta
flusso di non sa che si tratta di clic
o anche che si tratta di eventi che solo conosce
che è un flusso di valori tutto qui
ha bisogno di aiutarci con
modellando flussi e gestendo cose come
mappare e filtrare e riempire di essi così via
una mano hai queste semplici funzioni
senza effetti collaterali prendono solo un
valore e fanno qualcosa con esso e
restituiscono un nuovo valore d’altra
lato hai pile di input che potrebbe
essere un grande file di 10 gigabyte
o potrebbe essere il clic del mouse se si modella
il tuo mouse fa clic o il tuo file come
stream puoi effettivamente avere il flusso
essere questo adattatore che ti permette di usare
e riutilizzare tutti quelli
funzioni semplici su entrambi i tipi
di eventi e questo è così fondamentale per
programmazione funzionale abbiamo input
qui i nostri dati qui e abbiamo il nostro
le funzioni qui sono separate in modo che
possiamo riutilizzarli il più possibile
dati e le funzioni sono separati sono
arrancare insieme come sono dentro
programmazione orientata agli oggetti è così
per oggi abbiamo imparato che un flusso
come un flusso di valori che arriverà
ogni volta che ne hanno voglia, se lo desidera
inizia a giocare con questo ci sono a
coppia le librerie di streaming là fuori le nostre
Rxjs bacon e Highland e io ci vado
link alcuni di loro nella descrizione come
al solito il prossimo episodio di divertimento divertente
la funzione verrà rilasciata lunedì
mattina 8:00 ora GMT da non perdere
mi iscrive su Twitter fino al
Il prossimo lunedì mattina resta curioso
Please follow and like us: