Що нового?

Придбаний Асинхронное программирование [Тимур Шемсединов]

Інформація про покупку
Тип покупки: Складчина
Ціна: 11000 ГРН
Учасників: 0 з 14
Організатор: Відсутній
Статус: Набір учасників
Внесок: 817.1 ГРН
0%
Основний список
Резервний список

Gadzhi

Модератор
Асинхронное программирование [Тимур Шемсединов]



Для JavaScrip и TypeScript. 9 часов основного материала и более 45 часов дополнительного.
Лекции на двух языках: русском и украинском.

Этому курсу уже 15 лет, я обновляю его каждый год, и за это время он стал самым крупным и полным сборником знаний об асинхронном программировании. В интернете полно устаревших материалов по JavaScript, и даже то, как люди писали асинхронный код 5–7 лет назад, уже мало похоже на современные практики. В открытом доступе есть все материалы, записанные до 2020 года: открытый курс сообщества Metarhia по асинхронному программированию. Старый курс стал слишком громоздким, но его материалы также включены в этот курс как дополнительные и исторические, поскольку поддержку легаси никто не отменял.
  • Обзор контрактов и абстракций
  • Обзор асинхронного программирования на украинском языке
  • Обзор параллельного программирования
Следует также отметить, что в системном и прикладном коде асинхронное программирование должно выглядеть принципиально по-разному. Полностью скрыть от продуктового разработчика сложность асинхронного кода за абстракциями не получится, потому что он в любом случае будет работать с таймерами, событиями, стримами, fetch и другими асинхронными API, но его можно писать в десятки раз проще, чем асинхронный код на системном уровне. Что касается системного уровня, то здесь необходимо использовать теорию очередей (системы массового обслуживания), модель акторов, часть абстракций из параллельного программирования (семафоры, рандеву, атомарные операции).

Краткое содержание

Для написания прикладного кода достаточно знаний из первого столбца таблицы. Второй столбец полезен в качестве дополнительных знаний. Для бэкенда на Node нужно освоить два первых столбца. Третий столбец содержит системные сведения, которые нужны для разработки инструментов, платформ и библиотек. Четвертый столбец — это дополнительные абстракции, которые можно изучать выборочно. Они понадобятся не всем, но если вы работаете в проектах, где много функционального и/или реактивного программирования, пятый столбец — это вещи, которые морально устарели и могут рассматриваться как интересный антиквариат.

Акцент на практическом применении (примеры кода из реальных проектов)
  • Актуальность и соответствие стандартам по состоянию на 2023–2025 годы
  • Задачи и разбор их решений, семинары, ревью кода (курс — это не только видео)
  • Рекомендации по выбору стиля и абстракций асинхронности в зависимости от задачи
  • Внимание к корректной обработке ошибок во всех стилях асинхронности
  • Акцент на надёжность, поддерживаемость, тестируемость, снижение зацепления
  • Примеры и задачи по исправлению скрытых проблемных состояний и гонок данных
Что нужно знать и уметь на входе:
  • Синтаксис JavaScript без всяких хитростей
  • Уверенно владейте git, у вас должен быть аккаунт на github
  • Любая среда разработки, IDE или редактор
Чем этот курс не является: это не чтение документации, не курс по библиотекам и фреймворкам, не повторение старого курса, не лайвкодинг и не мастер-класс, не стрим. Новый курс — это максимально концентрированная информация и практические задания как для прикладного, так и для системного программирования со сравнением этих подходов.

Содержание:
  • Контракты асинхронности на базе callback
  • Минимально необходимое понимание рантайма
  • Паттерны Actor, Reactor, Proactor
  • Контракты на базе событий
  • Абстракция потоков Stream
  • Контракт Thenable
  • Контракт Promise
  • Контракт асинхронных функций async/await
  • Контракт сигналов Signals
  • Обработка ошибок
  • Асинхронная очередь AsyncQueue
  • Асинхронный пул AsyncPool
  • Асинхронная коллекция Collector
  • Паттерн "цепочка ответственности"
  • Конвертеры контрактов asyncify, callbackify
  • Предотвращение состояния гонки
  • Async Generator и Async Iterator
  • Абстракции портированные из параллельного программирования
  • Абстракции параллельного программирования
  • Асинхронная композиция compose callbacks & async compose
  • Асинхронность на потоках событий RxJS
  • Модель акторов actor model
  • Функциональное асинхронное программирование, контракт Future
  • Асинхронность на синхронных генераторах function*/yield
  • Контракты семейства Deferred
  • Async.js
  • Коллекция асинхронных абстракций Metasync
  • Трекинг асинхронных контекстов
  • Принципы и паттерны
Контракты асинхронности на базе callback
Контракты Callback и Callback-last-error-first
Примеры кода
Задания по колбекам и созвон с разбором заданий
Функции высшего порядка, колбеки, события на JavaScript
Асинхронное программирование на callback`ах в JavaScript
V8: оптимизируем возврат из функции в JavaScript через return, resolve, callback — Деми Мурыч

Минимально необходимое понимание рантайма: Event loop, I/O, таймеры
Фазы Event-loop в V8 и Node.js
Стрим с разбором Event loop и асинхронности
Примеры кода
Задания по таймерам
Event loop, асинхронность, таймеры, колбеки, промисы, async/await
Асинхронное программирования в JavaScript, Node.js: callback, promise, thenable, async/await

Паттерны Actor, Reactor, Proactor
Паттерны Actor, Reactor, Proactor
Actor + Actor Compose (композиция актора и состояния)
Паттерн Reactor (реактор): как устроен Event Loop в Node.js
Паттерн Proactor
Семинар: Паттерны Actor, Reactor, Proactor для JavaScript и TypeScript

Контракты на базе событий
События: EventTarget, EventEmitter
GoF Pattern Observer
Примеры кода по событиям
Задания по событиям
EventEmitter из старой лекции
Примеры кода из старой лекции по EventEmitter
Code review: Observable, EventEmitter, EventTarget

Абстракция потоков Stream
Стримы Readable, Writable, Transform, открытый конструктор, буферизация, backpressure
Web Streams — браузерное API для потоков событий
Примеры кода
Паттерн открытый конструктор (Revealing Constructor)
Примеры кода
Потоки (Streams) в Node.js
HTTP сервер в Node.js, req, res, сокеты и потоки (streams)

Контракт Thenable
Контракт Thenabe
Thenable из старой лекции
Thenable и легковесный await
Примеры кода
Задания по Thenabe и созвон с разбором заданий

Контракт Promise
Promise: then/catch/finally и методы класса all, allSettled, race, any
Асинхронность на промисах из старой лекции
Примеры кода
Задания по Promise и созвон с разбором заданий

Контракт асинхронных функций async/await
Асинхронные функции
Асинхронные функции из старой лекции
Примеры кода
Задания по async/await

Контракт сигналов Signals
Сигналы: signal, computed, effect
Примеры кода
Задания по сигналам

Обработка ошибок, их выявление и решение проблем со стекрейсом
Обработка ошибок, логирование и аггрегирование
Семинар: Errors, exceptions, operational, soft, hard, recovery, logging
Реализация Graceful shutdown в Node.js, unhandled exceptions, async stack trace
Обработка ошибок из старой лекции
Asyns stask trase
Graceful shutdown
Примеры кода
Задания по обработке ошибок

Асинхронная очередь AsyncQueue
Семинар: Асинхронная очередь — AsyncQueue, ConcurrentQueue
Node.js Queue optimized for JavaScript V8: Circular Buffer, Unrolled List, Unrolled Queue
Конкурентная асинхронная очередь из старой лекции
Примеры кода

Асинхронный пул AsyncPool
Паттерн Factory Method
Паттерны: Object Pool, Factory
Асинхронный Pool
Семинар: Creator, Factory, Factory Method, Object Pool
Асинхронный пул для worker thread pool в Node.js
Фабрики и пулы объектов в JavaScript, factorify, poolify
Примеры кода: Factory, Factory Method
Примеры кода Pool, AsynsPool

Асинхронная коллекция Collector
Асинхронные коллекции (собираем значения до готовности)
Асинхронные коллекторы данных
Примеры кода

Паттерн "цепочка ответственности"
Pattern: Chain of responsibility
Примеры кода

Конвертеры контрактов asyncify, callbackify
GoF Patterns: Adapter
Асинхронные адаптеры
Семинар по адаптерам для Node.js и асинхронного программирования
Node.js ревью кода promisify — Тимур Шемсединов и Деми Мурыч
Асинхронные адаптеры из старой лекции
Примеры кода

Предотвращение состояния гонки по данным и управлению в асинхронном коде
Отмена асинхронных операций: AbortController, AbortSignal
Документация на MDN
Async Generator и Async Iterator
Generator, iterator, iterable
Async generator, Async iterator, Async iterable
Генераторы и асинхронные генераторы из старой лекции
Генераторы
Асинхронные генераторы
Итераторы и асинхронные итераторы из старой лекции
Итераторы
Асинхронные итераторы

Абстракции портированные из параллельного программирования в асинхронное
Семафоры и мьютексы в JavaScript и Node.js
Асинхронные абстракции: Semaphore, Mutex
Блокировки WebLocks API
MDN блокировки - WebLocks API
Блокировки Lock, Spin Lock

Абстракции параллельного программирования
Многопоточность в Node.js
Web Locks API in Node.js and browser
Потоки и процессы в JavaScript, асинхронное и параллельное программирование на Node.js и в браузере
Потоки та процеси українською для Web та Node.js, Atomics/CAS, шарена пам'ять, блокування
Межпроцессовое взаимодействие в Node.js
Межпроцессовое и межпотоковое взаимодействие, MessageChannel, BroadcastChannel
Корутины coroutines

Асинхронная композиция compose callbacks & async compose
Асинхронная композиция: compose, pipe — функциональное программирование
Асинхронная композиция функций
Примеры кода

Асинхронность на потоках событий RxJS
Асинхронность на RxJS из старой лекции
Примеры кода

Модель акторов actor model
Модель акторов українською
Примеры кода

Библиотека do

Функциональное асинхронное программирование, контракт Future

Асинхронность на фьючерах без состояния
Примеры кода

Асинхронность на синхронных генераторах function*/yield

Мидлвары middleware как антипаттерн

Node.js Middleware – никогда больше!
Примеры кода

Контракты семейства Deferred
Deferred: Асинхронность на диферах с состоянием
Примеры кода

Async.js
Легаси код на библиотеке Async.js
Примеры кода

Коллекция асинхронных абстракций Metasync
Архивная лекция

Трекинг асинхронных контекстов
AsyncLocalStorage, AsyncResource
Примеры использования AsyncLocalStorage и AsyncResource

Принципы и паттерны с адаптацией для JavaScript, TypeScript, Node.js и асинхронного программирования
Принципы SOLID
Паттерны GRASP
Контрактное программирование
Задания по паттерну Adapter
Цена 16500 руб. (200 долларов)
https://www.patreon.com/tshemsedinov/shop/async-2025-675252
 
Угорі