+ 1. Node.js: Node != JavaScript
- V8 под капотом
- libuv
- Фишки JavaScript
- Node's коммандная строка и REPL
- Объекты Global, Process, и Buffer
- Системы модулей: CommonJS и ESM
- Как require() работает на самом деле
- Кеширование модулей
- JSON и C++ аддоны
- Пакетные менеджеры: NPM и Yarn
+ 2. Node.js: Concurrency модель и цикл событий
- Синхронный JavaScript
- Что такое I/O?
- Цикл событий и не блокирующее асинхронное выполнение
- Стек вызовов
- Обработка медленных операций
- Работа с колбеками
- Как колбеки работают на самом деле
- Работа с таймерами
- setImmediate и process.nextTick
+ 3. Node.js: Событийная архитектура
- Колбеки, промисы, и async/await
- Работа с событиями
- Как работает Event Emitter в Node.js
- Наследование от Event Emitter
- Аргументы, ошибки, и порядок выполнения слушателей
- Особенности работы с Event Emitter
+ 4. Node.js: Работа со стримами
- Стримы наше всё
- Streams 101
- Имплементация Readable и Writable стримов
- Duplex и Transform стримы
+ 5. Node.js: Основные встроенные модули Node.js
- Работа с модулем OS
- Path: модуль для работы с директориями и путями
- Process: контроль процесса Node.js
- Решение задач криптографии с модулем Crypto
+ 6. Node.js: Работа с файловой системой
- Получить информацию о файле с fs.Stats
- Read и Write операции с fs.ReadStream и fs.WriteStream классами
- Базовые операции с файлами
- Базовые операции с директориями
- Постоянный мониторинг с классом fs.FSWatcher
+ 7. Node.js: Сети в Node.js
- TCP сеть с модулем net
- Разница между TCP Socket и WebSocket
- Работа с множеством TCP сокетов
- Модуль DNS
- UDP Datagram сокеты
+ 8. Node.js: Тестирование, дебаг и логирование
- Работа с дебаггером
- Замена console.log пакетом debug
- Дебаг Node.js приложения при помощи ndb пакета и Chrome DevTools
- Конифгурация Visual Studio Code для дебага
- Конифгурация WebStorm для дебага
- Тестирование производительности при помощи специального инструмента MemoryUsage
- Тестирование приложения с Jest
- Что такое логирование приложения?
- Какие настоящие причины для настройки приложения в логировании?
- Что нужно логировать?
- Начало работы с Winston
- Агрегация логов
- Подключение Winston к сервису Loggly
+ 9. Express: REST & маршруты
- Введение в RESTful API
- REST API ограничения
- Лучшие практики при разработке RESTful API's
- Методы маршрутов
- Эндпоинты маршрутов
- Параметры маршрутов
- Обработчики маршрутов
- Хедеры Request и Response объектов
- Методы Request и Response объектов
+ 10. Express: Middleware
- Middleware уровня приложения
- Middleware уровня маршрутов
- Middleware для обработки ошибок
- Встроенные middleware
- Middleware сторонних разработчиков
- Пользовательские middleware
+ 11. Express: Обработка ошибок, дебаг и PM2
- Перехват ошибок в приложении
- Обработчик ошибок по умолчанию
- Пользовательский обработчик ошибок
- Режим debug в Express приложении
- Продвинутый менеджер процессов PM2
- Zero downtime при работе с PM2
- Работа с множеством процессов в PM2
- Деплой приложения при помощи PM2
- Пользователськие метрики в PM2
+ 12. Express: Аутентификация
- JSON веб токены — JWT
- Использование JWT в Express приложении
- Middleware для аутентификации
- Рабта с Passport.js
- Рабта с Cookies
- Рабта с Sessions
+ 13. Express: Лучшие практики и рекомендации: Безопасность
- Версии Express которые имеют уязвимости и как это проверить
- Использование TLS в Express приложении
- Пакет Helmet
- Работа с CORS
- Работа с CSRF
- Безопасное использование cookies
- Обеспечение безопасности для зависимостей проекта
- Проверка пакетов на известные уязвимости
- Дополнительные рекомендации
+ 14. Express: Тестирование Express приложения
- Работа с Jest
- Создание заглушек Node.js модулей с пакетом mock-require
- Тестирование API с пакетом supertest
- Тестирование внешних API запросов с пакетом nock
+ 15. MongoDB: Оболочка
- Введение в MongoDB
- Первый запуск
- Опции командной строки
- База данных и неймспейсы
- Роль оболочки в экосистеме
- Режимы оболочки
- Синтаксис вызова оболочки
- Испоьзование Eval
- Важные скрипты
- Выполнение скриптов перед входом в оболочку
- Многострочное редактирование
- Интеграция внешних редакторов
- Загрузка скриптов извне
- Использование RC файла
- Основные советы по безопасности
- Альтернативы дефолтной оболочке
+ 16. MongoDB: Управление данными
- Хранилище MongoDB
- BSON
- Сохранение документов
- Коллекции
- Идентификатор документа — _id
- ObjectId
- Вставка данных
- Вставка данных с указанием _id
- Сложные докмунты в MongoDB
- Тип данны — массив
- Почему метод save опасен
- Обновлене документов
- Оператор $set
- Оператор $unset
- Оператор $rename
- Оператор $push
- Оператор $pull
- Оператор $pop
+ 17. MongoDB: Поиск документов
- find()
- findOne()
- sort()
- limit()
- skip()
- Обращение к вложенным полям документа через точку
- Под-документы
- Наполнение документов из разных коллекций
- Сравнение документов
- Оператор $and
- Оператор $not
- Оператор $in
- Оператор $nin
- null и оператор $exists
- Курсор
+ 18. MongoDB: Индексирование
- Почему Scan это плохо
- Индексы в теории
- Сортировка использует индексы
- Создание индекса
- Коллекция system.indexes
- Метод explain()
- Свойство nscanned
- Сложные запросы
- Количество просканированных и возвращённых документов
- dropIndex()
- Вложенные поля
- Индексация массивов в MongoDB
- Сортировка
- Индекс уникальности
- Частичный индекс — экономим место
- Составные индексы
- Направление сортировки
- Как работает covering индекс
- Мертвый вес индексов
- Создание индексов в фоне
- Имя индекса
+ 19. Mongoose: Создание схемы и модели
- Подключение Mongoose к MongoDB
- Сравнение — RDBMS схем
- Простая схема
- Разрешенные типы данных
- Сложные схемы
- Наша первая модель
- Документы
- Под-документы
- Сохранение документов и другие действия
+ 20. Mongoose: Опции
- autoIndex
- bufferCommands
- capped
- collection
- minimize
- read
- writeConcern
- safe
- shardKey
- strict
- strictQuery
- toJSON
- toObject
- typeKey
- validateBeforeSave
- versionKey
- collation
- skipVersioning
- timestamps
- selectPopulatedPaths
- storeSubdocValidationError
+ 21. Mongoose: Запросы
- Выборка документов
- Сортировка документов
- Лимитирование количества выбранных документов
- Виртуальные поля
- Документы и их хелпер методы
- Преобразование Mongoose документов в обычные объекты
+ 22. Mongoose: Транзакции
- Наполнение документов: refs
- Установка полей для наполнения
- Наполнение документов: фильтрация полей для наполнения
- Множественное наполнение полей документа
- Наполнение документов: дополнительные условия
- Наполнение документов: Refs к дочерним документам
- Наполнение существующих документов
- Наполнение множества существующих документов
- Наполнение на разных уровнях документа
- Наполнения документов из разных баз данных
- Наполнение документов: динамические ссылки с refPath
- Наполнение виртуальных полей
- Наполнение в middleware
- Обзор транзакций
- Базовые транзакции
- Транзакции при работе с агрегацией данных
+ 23. Mongoose: Валидация
- Встроенные валидаторы
- Middleware для валидации
- Пользовательские валидаторы
- Обработка ошибок валидации
+ 24. Mongoose: Планины и дискриминаторы
- Обзор существующих плагинов
- Пользовательские плагины
- Discriminators: Обзор наследования схем
- Discriminators: Расширение базовой схемы
- Discriminators: Особенности пользовательского интерфейса