Объем материала: 20 часов основного материала + 20 часов по выбору, еженедельно 4 часа (2 раза по 2 часа) созвоны с ревью кода и ответами на вопросы в течении года, репозитории с примерами кода.
Что нужно знать на входе:
- 🔗 Синтаксис JavaScript без всяких триков
- 🔗 Основы асинхронного программирования
- 💡 Уверенно владеть git, иметь github аккаунт
- 💡 Желательно docker, иметь рабочую машину на linux или mac
- 💡 Любая среда разработки, IDE или редактор
Ссылки на старый курс:
- 🔗 Структура со ссылками на видео и репозитории с примерами кода
- 🔗 Для части лекций есть таймкоды и подробное оглавление
Чем этот курс не является: это не чтение документации, не курс по фреймворкам, не курс по Metarhia, не повторение старого курса, не лайвкодинг и не мастеркласс, не стрим. Новый курс - это максимально сконцентрированная информация и практические задачи по разработке на чистой ноде но с хорошей архитектурой и использованием всех современных возможностей Node.js
👉 Patreon: https://www.patreon.com/tshemsedinov
👉 Видео обзор курса: https://youtu.be/moH8df67zAM
👉 Вопросы на интервью: https://github.com/tshemsedinov/NodeJS-Interview-Questions
- ⭐ Введение в технологию 🚀
- ⭐ Структура приложений: системы модульности, пакеты и зависимости
- ⭐ Архитектура приложений: слои и внедрение зависимостей
- ⭐ Layers and Low Coupling на примере конфига и транспорта
- ⭐ Базы данных, модель, заголовки .d.ts и линтеры
- ⭐ Криптография: crypto, хеширование паролей с солью, session token, UUID, случайные числа
- 💻 Реализация
randomPrefetcher
из библиотекиmetautil
: https://github.com/metarhia/metautil/blob/v3.7.0/lib/crypto.js - 💻 Упрощенное хеширование: https://github.com/HowProgrammingWorks/DDD/blob/master/JavaScript/d-messenger/lib/common.js
- 💻 Полноценное хеширование: https://github.com/metatech-university/NodeJS-Pure/blob/main/lib/common.js
- 💻 Генерация UUID: https://nodejs.org/api/crypto.html#cryptorandomuuidoptions
- 🔗 Документация по
node:crypto
: https://nodejs.org/api/crypto.html
- 💻 Реализация
- ⭐ Применение Chat GPT в оптимизации JavaScript для Node.js
- ⭐ Структура классов сервера и GoF паттерны в Node.js
- ⭐ Подсистема
Authentication
- ⭐ Подсистема
Role Based Access Control
- Системы прав ACL, ABAC, RBAC, и проектирование нашей системы прав для курса
- ⭐ Стримы Readable, Writable, Transform, открытый конструктор, буферизация, backpressure
- ⭐ Инфраструктура и инструментарий: тайпинги, тестирование, линтеры, CI/CD, встроенный testing framework
- ⭐ Работа с ошибками и исключениями,
Graceful shutdown
в Node.js,unhandled exceptions
,async stack trace
- 💻 Async stack trace: https://github.com/HowProgrammingWorks/StackTrace/blob/master/JavaScript/6-pass-through.js
- 💻 Graceful shutdown: https://github.com/HowProgrammingWorks/GracefulShutdown
- ⭐ Асинхронное, реактивное и параллельное программирование
- ✨ Обзор асинхронного программирования в Node.js: https://youtu.be/hY6Z6qNYzmc
- 💻 Разные контракты: https://github.com/HowProgrammingWorks/AsynchronousProgramming
- 💻 Таймеры: https://github.com/HowProgrammingWorks/Timers
- 💻 EventEmitter: https://github.com/HowProgrammingWorks/EventEmitter
- 💻 Промисы: https://github.com/HowProgrammingWorks/Promise
- 💻 Async/await: https://github.com/HowProgrammingWorks/AsyncAwait
- 💻 Асинхронные адаптеры: https://github.com/HowProgrammingWorks/AsyncAdapter
- 💻 Асинхронные итераторы: https://github.com/HowProgrammingWorks/AsyncIterator
- 💻 Thenable: https://github.com/HowProgrammingWorks/Thenable
- 💻 Асинхронная очередь: https://github.com/HowProgrammingWorks/ConcurrentQueue
- 💻 Паттерн открытый конструктор (Revealing Constructor): https://github.com/HowProgrammingWorks/RevealingConstructor
- ⭐ Работа с файлами и файловыми потоками, наблюдение за файловой системой
- ✨ Работа с файлами, буферами и файловыми потоками: https://youtu.be/eQGBS15vUac
- 💻 Работа с файлами: https://github.com/HowProgrammingWorks/Files
- 💻 Файловые потоки: https://github.com/HowProgrammingWorks/Streams
- 💻 Буферы: https://github.com/HowProgrammingWorks/Buffers
- 💻 Наблюдение за файлами: https://github.com/HowProgrammingWorks/FilesystemWatch
- ⭐ Принципы
GRASP
иSOLID
вJavaScript
с адаптацией для Node.js- ✨ GRASP принципы с адаптацией для JavaScript и Node.js: https://youtu.be/ExauFjYV_lQ
- 💻 Information Expert: https://github.com/HowProgrammingWorks/InformationExpert
- 💻 Coupling and Cohesion: https://github.com/HowProgrammingWorks/CouplingCohesion
- 💻 Pure Fabrication: https://github.com/HowProgrammingWorks/PureFabrication
- 💻 Single responsibility: https://github.com/HowProgrammingWorks/SingleResponsibility
- 💻 Liskov substitution: https://github.com/HowProgrammingWorks/LiskovSubstitution
- 💻 IoC and DI: https://github.com/HowProgrammingWorks/InversionOfControl
- ⭐ Вопросы безопасности:
DoS
,XSS
,Path traversal
,CSRF
,SQL
-инъекции- ✨ Безопасность приложений Node.js: https://youtu.be/Pdfo1G-gI6s
- 🔗 Слайды: https://www.slideshare.net/tshemsedinov/nodejs-security-199004963
- ⭐ C/C++ Addons, Node-API (n-api), WebAssembly: Rust, WAT, C++, AssemblyScript
- 💻 N-API examples for C++ and Rust: https://github.com/HowProgrammingWorks/Node-API
- 💻 WebAssembly for C++, Rust, WAT, and AssemblyScript https://github.com/HowProgrammingWorks/WebAssembly
- 💻 In-place callback solution: https://github.com/tshemsedinov/wasm-import
- ⭐ Трекинг асинхронных контекстов: AsyncLocalStorage, AsyncResource
- 💻 Примеры использования AsyncLocalStorage и AsyncResource: https://github.com/HowProgrammingWorks/AsyncContextTracking
- ⭐ Проектирование API и проверка контрактов в рантайме
- ✨ Контрактное программирование: https://youtu.be/K5_kSUvbGEQ
- 💻 Примеры кода: https://github.com/HowProgrammingWorks/Contract
- ⭐ Вынесение подсистем как отдельных микросервисов
- ⭐
Performance hooks
, телеметрия ресурсов и оптимизация: I/O bound, CPU bound, memory bound, профилирование - ⭐
Serverless
и облачныеFaaS
решения на базе Node.js- ✨ Serverless Clouds (FaaS) и изоляция контекстов запросов в Node.js: https://youtu.be/x-Rd6fPV6L8
- 🔗 Слайды: https://www.slideshare.net/tshemsedinov/serverless-clouds-faas-and-request-context-isolation-in-nodejs
- ⭐ Приложения, приближенные к реальному времени, Websocket, интерактивность и коллаборативные приложения
- 💻 Серверная реализация
- 💻 Клиентская реализация на C++ для Node.js 21
- 💻 Интерактивность и коллоборативные приложения
- ⭐ Распределенные системы, высоконагруженные системы, балансировка нагрузки, кластеризация и масштабирование, IP sticky
- ✨ Доклад по высоконагруженным системам: https://youtu.be/7tfZDABPvVs
- ✨ HTTP сервер на Node.js (routing, cluster, IP sticky): https://youtu.be/7Ufxj0oTaUo
- 💻 Примеры серверов: https://github.com/HowProgrammingWorks/NodeServer
- ⭐ Изоляция кода и данных в Node.js:
vm
,v8
, защитаglobal
, контекстов, модулей и прототипов от патчинга - ⭐ Структура и архитектура проекта, слои,
DDD
,Clean architecture
, связанность и связность кода, протекание абстракций - ⭐ Реализация HTTP Proxy
- 📢 Разбор примеров кода Timur Sevimli
- 💻 Примеры кода из видео: https://github.com/HowProgrammingWorks/ProxyHTTP
- ⭐ Сборка Node.js приложений в single executable
- ⭐ Автоматическая перезагрузка процессов с --watch
- ⭐ Обзор Web API портированнного в Node.js: Web Crypro, Web Streams, Intl
- ⭐ Встроенная система Permissions для ограничения доступа к файловой системе, сети, другим API
План курса формируется. Тут появится еще много тем в ближайшее время.
- 🧑💻 Блок заданий №1
- Создание структуры проекта, системы модульности, фреймворк-агностик
- Организация служебных вещей: логирование, конфигурирование, запуск,
- Проектирование API, организация роутинга и транспорт-агностик подхода
- 🧑💻 Блок заданий №2
- Проектирование предметной области, использование схем, ERD, IDEf1x
- Организация слоя доступа к базе данных, query builder, паттерн репозиторий
- Защита от SQL-injection, параметрические запросы
- 🧑💻 Блок заданий №3
- Сетевые протоколы, сериализация, организация сессий
- Принципы взаимодействия: REST, RPC, трансляция событий
- Безопасность, CORS, потоковое вещание, partial-content, upload/download файлов
- 🧑💻 Блок заданий №4
- Применение
GRASP
иSOLID
для Node.js приложений - Использование паттернов и рефакторинг с применением паттернов
- Применение
- 🧑💻 Блок заданий №5
- Использование потоков Readable, Writable, Transform, работа с файлами
- Корректная обработка ошибок и исключений
- Рефакторинг асинхронного кода и стыковка контрактов
- 🧑💻 Блок заданий №6
- Организация клиентского кода, прозрачность вызовов серверного API через async/await
- Межсерверное взаимодействие, прозрачность вызовов через async/await (как и для клиентского кода)
- Интеграция подсистем по принципу единого адресного пространства
- 🧑💻 Блок заданий №7
- Реализация системы прав (аккаунты, пароли, роли, пермишены, применение ACL, ABAC, RBAC)
- Система сессий: хранимое состояние, состояние соединений, состояние прикрепленное к вызову
- Безопасность (
DoS
,XSS
,Path traversal
,CSRF
, и т.д.)
💳 Сейчас на курс можно записаться по плану «NodeJS 2024» годовая подписка на Patreon - полный курс. Матераиалы курса остаются и после завершения подписки (не нужно ее продлять все время, я не забираю доступ).
💳 Второй вариант: вместе с курсом по ассинхронному программированию «Node + Async» годовая подписка на Patreon. Программа курса «Async 2024»: https://github.com/HowProgrammingWorks/Index/blob/master/Courses/Async-2024.md
🎫 Регистрация: https://www.patreon.com/tshemsedinov
🎉 После того, как Вы взяли курс, в течении суток я добавляю вам права на репозиторий в Github, добавляю в календарь на созвоны через google-meet, и придут ссылки на все нужные ресурсы в почту. Может попаст в спам, проверьте.
👉 Подписывайтесь на https://t.me/metarhia и https://www.youtube.com/@TimurShemsedinov чтобы следить за новостями.