Press "Enter" to skip to content

Streams — FunFunFunction #13


хорошее утро в понедельник это весело
функцию утреннего шоу в понедельник, где мы
постарайтесь стать более возбужденными и уверенными
о программировании , исследуя старые
мудрость диких идей и с удовольствием потоки
действительно только что это звучит как
поток данных , вы можете думать о нем , как
реальный экран реальной жизни с
бочки, плавающие на нем или что-то
где вы можете прикрепить штуку в конце
потока для обработки каждого отдельного пользователя
бочку данных вы также можете думать о
поток в результате обещания и
массив, имеющий ребенка , массив, который является
это серия из нескольких объектов, которые
уже есть в то время как обещание является
понятие одного объекта, который может быть
есть в конечном итоге поток бросок
ценности , которые прибудут всякий раз, когда они
просто чертовски хорошо, как просто получить
вниз и грязно, очень быстро мы
посмотрим на самые простые
реализация потока, который я мог бы
я обычно спрашиваю вас
приостановите видео и взгляните на это
прежде чем двигаться дальше, но давайте посмотрим правде в глаза
ты не собираешься это делать , вместо этого я
выйдут из этой комнаты на 30 секунд и
позвольте вам рассмотреть этот код в
одиночество, прежде чем я скажу вам, что я думаю
этого
вы
вы
это глупый номерный поток, это
объект, содержащий ряд чисел
которые прибудут в будущем в
подписаться на поток, который мы передаем
функция обратного вызова в этом случае консоль
dot log для каждого метода потока
и это неудивительно , регистрирует
числа из к потоку консоли
библиотеки, такие как встроенные в
nodejs или rxjs или бекон или Highland
объекты, все они имеют множество
другой функциональности, но в конце
является основной сутью того, что поток
это всего лишь способ моделирования потока
значения, которые поступают всякий раз, когда они
чувствую себя, но в чем смысл
кричит, что мы используем для
исторически наиболее распространенный вариант использования
для потоков, когда вам нужно обработать
огромная совокупность данных, которая настолько велика, что вы
не может вместить все это в память, и вы
нужно сделать какое-то преобразование
на каждой строке, если вы прочтете эти десять
гигабайт данных в память вы бы
вероятно, заканчивается память, и даже если
у вас была такая память, что все равно
потратьте немного времени, чтобы действительно прочитать его
в память, прежде чем вы сможете начать
обработки его лучший способ иметь дело с
эта проблема состоит в том, чтобы прочитать одну строку на
время и процесс каждого из них индивидуально
вы моделируете чтение большого файла как
поток, а затем вы прикрепляете обработчик в
конец экрана и процесс
каждая строка индивидуально, пока вы не закончите
Я собираюсь показать вам пример, чтобы
это от слишком абстрактного давайте
представьте себе , что у нас есть этот огромный файл
клиентов , разделенных запятыми, чтобы мы
здесь есть Матиас, и он сделал два
заказывает этот квартал или что-то еще
заявители сделали шесть и короля мукла
сделал четыре правых, так что это наш
файл, мы должны прочитать это в
что мы собираемся нужно тянуть в
FS простенький эфир FS прохладно, а затем мы
собираются создать поток чтения
ах от клиентов dot CSV и ввод текста
теперь трудно вернуть записку
поток, но hmm примечания строки хороши и
все, но мы хотим чего-то более мощного
поэтому мы будем тянуть в Хайленд и
Highland SCS эти концентраторы удобные потоки
библиотеки, и мы собираемся встать
Я имею в виду лазут высокой земли, которую мы получаем
некоторые предупреждения здесь, потому что у меня нет
package.json в моем рабочем каталоге
где мы играем с этим, но
что не имеет значения , просто как раз ясно , что
теперь, чтобы сделать это примечание
поток в горный ручей мы просто
вызовите Хайленд все в этом, и теперь это
Высокий поток, и мы можем назвать
каждый из них работает, и мы просто собираемся
перейдите к консольному журналу точек и посмотрите
что это оказывается и запустить его
хорошо, нет такого файла или каталога в порядке
его клиенты снова попробуют его
мы получаем только буфер, и это
потому что мы не передаем ни одной строки
кодирование сегодня читать поток это не
собираюсь взять что-нибудь и просто дать нам
предложение байта, но это нам не помогает
так что мы собираемся добавить utf-8, и мы
хороший БАМ, поэтому мы получаем содержимое
файла здесь я не уверен, если мы
получая это как одну строку или как
отдельные строки из потока чтения
что-то просто собиралось добавить
немного чего-то здесь, каждого Х и см.
то , что получается
Я начал видеть, что мы получаем это
как одна большая строка, и мы не хотим, чтобы
мы хотим, чтобы это как лаймы, давайте просто сделаем
раскол здесь, посмотрим, что получится круто
теперь мы получаем это как строки, поэтому
Затем мы хотим превратить это в
некоторые более удобные фактические объекты
вместо этих разделенных запятыми
Сначала я предполагаю, что мы хотим
разделить их и создать расу
из строк, поэтому я просто пойду и
сопоставьте каждое значение, и я собираюсь позвонить
разделить на каждое значение, и мы собираемся
разделить по запятой посмотреть, что это дает нам
не совсем то, что я ожидал, я думаю, что это
потому что это X, когда я плюс эти два
он собирается сгладить их так правильно
это выглядит лучше
массивы немного громоздки, чтобы иметь дело с
поэтому я хочу сделать это правильно
объект данных со свойствами и вещи так
давайте попробуем и потянем за то, что мы
получение вызова этого я буду называть
что эта часть массива тогда мы
собирается вернуть новый объект , я добавляю
эти вот дополнительные скобки
в противном случае
интерпретация JavaScript будет
интерпретировать это как функциональный блок, но я
хотел интерпретировать его как объект и
мы будем называть первое имя
а затем части тут и потом я иду
для вызова покупки num здесь вызов
что снова часть останавливает один проход, который
и посмотрим, что получилось хорошо, теперь мы
где-то здесь мы имеем
объект здесь выглядит довольно хорошо, но
Матиас здесь мы хотим , чтобы отфильтровать его быть
это не проект
действительно интересные клиенты сделали
чтобы купить этот квартал, поэтому я собираюсь
назовите фильтр на него, и мы собираемся сделать
Потому что Марва фильтрует наименее полезный
клиенты покупают точечные покупки, когда
это единственные хорошие клиенты, которые
имеют более двух покупок, что дает
нас да эти два и да навсегда
мы хотим получить только имена, поэтому
Я собираюсь сделать обычное имя, и это будет
просто дай нам имена, что я хочу тебя
убрать этот код, так это то, что мы
просто работают с очень простым
функции, которые почти ничего не делают
и у них нет побочных эффектов, и что
позволяет легко рассуждать о наших
введите другой вариант использования для потоков, которые
начали набирать силу в
последние годы впереди
программирования, где такие вещи, как
ввод клавиатуры или движения мыши или
щелчки мыши могут быть смоделированы как потоки
событий, которые вы касаетесь функций как
обработчиков в конце этих потоков и
они обычно в конечном итоге манипулируют
состояние приложения и приложение
государство также часто реализуется как
поток, поэтому у вас есть другие части
приложение часто выполняет функцию рендеринга
слушая это состояние и просто
рендеринга при изменении состояния
это популярно, потому что это
действительно приятно иметь большую часть вашего
приложение будет апатридом, потому что состояние
является основной причиной ошибок, имеющих состояние
содержащихся только в одном или двух местах
намного легче рассуждать о
ваше приложение и предотвращает от других
ошибки, давайте взглянем на один из
примеры на выпечке на J s из
пациент bekandjesse является потоковым
библиотека сортов
то, что мы видим здесь, является простым счетчиком
виджет видит, что когда я нажимаю его
поднимается, и когда я нажимаю на него
счетчик здесь никуда не годится
об этом, и вы видите, что вверх
здесь здесь есть кнопка вверх
и кнопка вниз — это
вниз здесь и счетчик здесь
вот этот счетчик, так что вы видите
которую мы называем потоком событий здесь, и мы
заинтересованы в событиях flick, так что
и вниз будут потоки событий
мы видим, что они здесь делают, что они
вызовите метод NAP на на подъеме
поток, и они отображают этот поток до одного раза
поэтому теперь каждый раз, когда мы получаем щелчок
событие, которое приведет к трансформации
— после ввода столбца, но мы
собираюсь посмотреть на это холодно здесь
сначала, так что они делают то, что они называют
карта в нисходящем потоке запоминает вниз
поток кликов по кнопке «вниз», чтобы
каждый такой клик будет преобразован в
значение -1, и теперь они вызовут пропуск
которые текут поток всех умов
и объединить это с другим
передавать все потоки те
Плюс, и теперь все это здесь
вся эта линия теперь будет
новый поток со всеми нашими плюсами
и минус те , и то , что мы собираемся
сделать это они собираются вызвать просканировать
этот поток и сканирование это
в основном всего лишь три версии
это просто делает именно то, что
уменьшить, получает ли он
ah берет последнее значение, а новое
значение, которое получает, и оно добавляет их
вместе, и это испустит новый
новый номер, который запрашивается, добавляет значение так
это будет эффективно постоянно противодействовать
поток , который также поток вернется
или постоянно испускать новое значение счетчика
и если вы посмотрите, что они делают
при этом здесь встречается то, что они назначают
это значение или значения, которые
постоянно излучается с прилавка
они назначат их тексту
свойство элемента счетчика, которое
то есть , как это все взаимосвязано , что
Я думаю, что мы должны отнять
Последние два примера является то , что вопли
хорошо сойдутся, мне действительно нравится
Я возвращаюсь к композиции все
время, когда я говорю о функциональных
программирование, но оно действительно находится в ядре
от какого функционального программирования
мы моделируем наши клики как потоки событий
мы получаем доступ ко всему этому инструменту потока
которые мы можем использовать на потоковой оснастке
все равно, что это такое
поток не знает, что это клики
или даже, что это события, которые он просто знает
что это поток ценностей , это все
это необходимо для того, чтобы помочь нам с
моделирование потоков и запуск таких вещей, как
карта и фильтр и прочее на них так далее
с одной стороны, у вас есть эти простые функции
без побочных эффектов они просто берут
ценности, и они что-то делают с этим и
они возвращают новое значение с другой стороны
у вас есть груды входных данных, которые могли бы
большой файл размером 10 гигабайт
или это могут быть щелчки мыши, если вы моделируете
щелчки мышью или ваш файл как
поток , на самом деле вы можете иметь поток
быть этот адаптер , который позволяет использовать
и повторно использовать все эти
простые функции на обоих этих типах
события , и это настолько фундаментально для
функциональное программирование мы имеем вход
здесь наши данные здесь, и у нас есть
функции здесь, они разделены, так что
мы можем использовать их как можно больше
данные и функции являются отдельными, они
объединять друг друга, как в
объектно-ориентированное программирование это все
на сегодняшний день мы узнали, что поток
как поток ценностей, которые прибудут
когда им хочется, если вы хотите
начать играть с этим, есть
пара потоковой библиотеки там наши
rxjs bacon и Highland, и я собираюсь
связать некоторые из них в описании как
обычный следующий эпизод веселья
функция будет выпущена в понедельник
утром 8:00 по Гринвичу не пропустите
он подписывается на меня в Twitter до тех пор, пока
следующий понедельник утром останется любопытным
Please follow and like us:

Be First to Comment

Добавить комментарий