Открыто

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

Тема в разделе "Курсы по программированию", создана пользователем Топикстартер, 3 сен 2025.

Цена: 16500р.-84%
Взнос: 2476р.

Основной список: 8 участников

  1. 3 сен 2025
    #1
    Топикстартер
    Топикстартер ЧКЧлен клуба

    Складчина: Асинхронное программирование [Тимур Шемсединов]

    04f9d811-2386-4671-bb3a-6bd1e147a025.png

    Для 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 долларов)
    Скрытая ссылка
     
    Последнее редактирование модератором: 6 сен 2025
    2 пользователям это понравилось.
  2. Последние события

    1. mumbulue
      mumbulue не участвует.
      13 сен 2025 в 19:30
    2. skladchik.com
      Статский советник организатор.
      13 сен 2025 в 10:57
    3. Статский советник
      Статский советник участвует.
      13 сен 2025 в 10:57
    4. Денис Гуру
      Денис Гуру участвует.
      8 сен 2025 в 00:26

    Последние важные события

    1. skladchik.com
      Статский советник организатор.
      13 сен 2025 в 10:57