Содержание курса
1. Введение
5 уроков
96
78
9м
8
Закрытый
1.1
github-репозиторий рассматриваемых примеров
↗
5
5
-
0
Закрытый
1.2
Разница между процессом, потоком и изолятом
↗
40
22
3м 34с
2
Закрытый
1.3
Разница между конкурентным и параллельным выполнением кода
↗
18
18
2м 35с
2
Закрытый
1.4
Асинхронное программирование
↗
16
16
1м 0с
2
Закрытый
1.5
Event Loop архитектура в Dart
↗
17
17
4м 20с
2
2. Future API, async и await
12 уроков
119
92
30м
3
Закрытый
2.1
Введение
↗
16
16
4м 56с
1
Закрытый
2.2
Базовые методы Future API
↗
17
10
15м 14с
1
Закрытый
2.3
Механизм async/await
↗
14
14
2м 57с
0
Закрытый
2.4
Варианты создания экземпляра Future
↗
10
9
2м 13с
0
Закрытый
2.5
Completer – низкоуровневый способ создания Future
↗
10
8
3м 48с
0
Закрытый
2.6
«Отмена» выполнения Future средствами Completer
↗
11
5
4м 40с
0
Закрытый
2.7
Вспомогательные статические методы для работы с Future
↗
7
5
-
0
Закрытый
2.8
FutureOr – костыль или серебряная пуля?
↗
7
6
-
0
Закрытый
2.9
Состояние гонки за ресурсами (Race Condition)
↗
8
5
-
1
Закрытый
2.10
Резюме по главе и вопросы для самопроверки
↗
6
5
-
0
Закрытый
2.11
Тесты на Future
↗
7
5
-
0
Закрытый
2.12
Задачи на Future
↗
6
4
-
0
3. Потоки (Streams)
10 уроков
44
40
0м
0
Закрытый
3.1
Кратко, но емко о Stream
↗
7
5
-
0
Закрытый
3.2
Что за зверь такой этот ваш StreamSubscription?
↗
5
5
-
0
Закрытый
3.3
Использование Stream при объявлении генераторных функций
↗
5
5
-
0
Закрытый
3.4
Варианты создания экземпляра Stream
↗
4
4
-
0
Закрытый
3.5
StreamController – «швейцарский нож» в работе с потоками
↗
4
4
-
0
Закрытый
3.6
StreamIterator – инструмент для любителей работать ручками
↗
4
4
-
0
Закрытый
3.7
Вспомогательные методы для работы с экземпляром Stream
↗
4
3
-
0
Закрытый
3.8
StreamTransformer
↗
4
3
-
0
Закрытый
3.9
Реализация паттерна «Наблюдатель» с использованием потоков
↗
4
4
-
0
Закрытый
3.10
Резюме по главе и вопросы для самопроверки
↗
3
3
-
0
4. Зоны (Zones)
13 уроков
55
50
0м
1
Закрытый
4.1
Введение
↗
6
6
-
1
Закрытый
4.2
Концепция работы механизма Zone
↗
6
5
-
0
Закрытый
4.3
ZoneSpecification. Переопределение функции print
↗
4
4
-
0
Закрытый
4.4
ZoneSpecification. Перехват необработанных исключений
↗
4
4
-
0
Закрытый
4.5
ZoneSpecification. Переопределение поведения таймеров
↗
5
5
-
0
Закрытый
4.6
ZoneSpecification. Перехват регистрации асинхронных функций
↗
4
4
-
0
Закрытый
4.7
ZoneSpecification. Перехват выполняемых асинхронных функций
↗
4
4
-
0
Закрытый
4.8
ZoneSpecification. Перехватываем вызов scheduleMicrotask
↗
4
4
-
0
Закрытый
4.9
Варианты использования: защита от необработанных исключений
↗
4
3
-
0
Закрытый
4.10
Варианты использования: контекстно-ориентированное програм-ие
↗
4
4
-
0
Закрытый
4.11
Варианты использования: логирование
↗
5
3
-
0
Закрытый
4.12
Варианты использования: профилирование и трассировка
↗
3
2
-
0
Закрытый
4.13
Резюме по главе и вопросы для самопроверки
↗
2
2
-
0
5. Изоляты и изоляционные группы
15 уроков
21
19
0м
0
Закрытый
5.1
Введение
↗
2
2
-
0
Закрытый
5.2
Щелкаем одноразовые задачи с Isolate.run
↗
2
1
-
0
Закрытый
5.3
Isolate.spawn как инструмент для запуска фоновых изолятов
↗
1
1
-
0
Закрытый
5.4
Управление жизненным циклом долгоживущего изолята
↗
1
1
-
0
Закрытый
5.5
Isolate.new и класс Capability, как инструмент ограничений
↗
2
1
-
0
Закрытый
5.6
Создание и использование новой изоляционной группы
↗
1
1
-
0
Закрытый
5.7
[Тонкости] Уникальный идентификатор объекта
↗
1
1
-
0
Закрытый
5.8
[Тонкости] Объявление переменной или имени?
↗
1
1
-
0
Закрытый
5.9
[Тонкости] Жизненный цикл объекта
↗
2
2
-
0
Закрытый
5.10
[Тонкости] Общая память изоляционной группы
↗
3
3
-
0
Закрытый
5.11
[Тонкости] Глубоко неизменяемые экземпляры и типы данных
↗
1
1
-
0
Закрытый
5.12
[Тонкости] Разница в передаче сообщений разных типов
↗
1
1
-
0
Закрытый
5.13
[Тонкости] Создание изолята из другого изолята
↗
1
1
-
0
Закрытый
5.14
Изоляционно-плагинная архитектура приложения
↗
1
1
-
0
Закрытый
5.15
Резюме по главе и вопросы для самопроверки
↗
1
1
-
0
6. «Под капотом» изолятов и Garbage Collector Dart VM
8 уроков
12
10
0м
0
Закрытый
6.1
Класс ThreadPool и MutatorThreadPool
↗
2
2
-
0
Закрытый
6.2
Класс Worker
↗
2
2
-
0
Закрытый
6.3
Класс Task
↗
1
1
-
0
Закрытый
6.4
Связь между пользовательским изолятом и MutatorThreadPool
↗
1
1
-
0
Закрытый
6.5
Управление жизненным циклом потоков-мутаторов и изолятов
↗
1
1
-
0
Закрытый
6.6
Garbage Collector Dart VM
↗
2
1
-
0
Закрытый
6.7
Флаги конфигурации работы сборщика мусора и потоков-мутаторов
↗
2
1
-
0
Закрытый
6.8
Резюме по главе и вопросы для самопроверки
↗
1
1
-
0
7. Проект: шахматная МАС с реактивными агентами (текстовая-версия)
9 уроков
17
13
0м
0
Закрытый
7.1
Введение
↗
3
3
-
0
Закрытый
7.2
Архитектура системы, алгоритм работы и структура проекта
↗
2
2
-
0
Закрытый
7.3
Разработка моделей данных
↗
2
1
-
0
Закрытый
7.4
Разработка функционала доски
↗
3
1
-
0
Закрытый
7.5
Разработка функционала агента
↗
2
1
-
0
Закрытый
7.6
Разработка парсера FEN-строки и пакета утилит
↗
2
2
-
0
Закрытый
7.7
Разработка функционала виртуальной среды
↗
1
1
-
0
Закрытый
7.8
Разработка консольного UI
↗
1
1
-
0
Закрытый
7.9
Запуск мультиагентной системы
↗
1
1
-
0
8. Проект: шахматная МАС с реактивными агентами (видео-версия)
7 уроков
15
10
146м
7
Открытый
8.1
Архитектура разрабатываемой МАС
↗
5
3
14м 31с
1
Закрытый
8.2
Разработка классов данных
↗
1
1
22м 11с
1
Закрытый
8.3
Разработка функционала доски и парсера нотации
↗
1
1
42м 30с
1
Закрытый
8.4
Разработка функционала агента
↗
1
1
13м 31с
1
Закрытый
8.5
Разработка функционала environment
↗
1
1
36м 23с
1
Закрытый
8.6
Разработка консольного интерфейса
↗
1
1
15м 0с
1
Открытый
8.7
Добавление классов фигур
↗
5
2
5м 42с
1
9. Задания на модификацию проекта
3 урока
3
3
0м
0
Закрытый
9.1
Легкий уровень
↗
1
1
-
0
Закрытый
9.2
Средний уровень
↗
1
1
-
0
Закрытый
9.3
Для любителей «пожестче»
↗
1
1
-
0