├── .github └── FUNDING.yml ├── Archive ├── 2013-2016.md ├── 2017-Archive.md ├── 2017-Summer-school.md ├── 2018-Archive.md ├── 2018-Summer-school.md ├── 2019-2020 │ ├── Calendar.md │ ├── IP9X.md │ └── NodeUA.md └── WeeklyCall.md ├── Calendar └── Calendar.md ├── Courses ├── Advanced-2025.md ├── Advanced.md ├── AlgAndData.md ├── Architecture-2025.md ├── Architecture.md ├── Async-2024.md ├── Async-2025.md ├── Async.uk.md ├── Asynchronous-timecodes.md ├── Asynchronous.md ├── Beginners.md ├── Databases.md ├── Functional-timecodes.md ├── Functional.md ├── Fundamentals-2021-2022.md ├── Fundamentals-2022-2023.md ├── Fundamentals-2023.md ├── Fundamentals-2024.md ├── Fundamentals-timecodes.md ├── Fundamentals.md ├── GRASP.md ├── Highload.md ├── Introduction.md ├── Metaprogramming.md ├── Metarhia-Club.md ├── Metarhia.md ├── Network.md ├── NodeJS-2022-2023.md ├── NodeJS-2024.md ├── NodeJS-2025.md ├── NodeJS-timecodes.md ├── NodeJS.md ├── OOP.md ├── OS.md ├── Paradigms-timecodes.md ├── Paradigms.md ├── Parallel.md ├── Patterns-2024-ru.md ├── Patterns-2024-ua.md ├── Patterns-2024.md ├── Patterns-timecodes.md ├── Patterns.md ├── Proposal-2023.md ├── Quality.md ├── Roadmap-min.md ├── Roadmap.md ├── Security.md ├── Seminars.md ├── Short.md ├── Special.md ├── Specialties.md ├── System.md ├── Talks.md ├── Tools.md ├── UI-UX.md └── Web.md ├── LICENSE ├── Links.md ├── Practice ├── Index.md ├── Projects.md ├── SEF1.ru.md ├── SEF2.ru.md ├── SEF3-4.ru.md └── SEF5-6.ru.md └── README.md /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | patreon: tshemsedinov 2 | -------------------------------------------------------------------------------- /Archive/2013-2016.md: -------------------------------------------------------------------------------- 1 | ## Доклады 2013-2016 2 | 3 | - [2016 - Куда движется программная инженерия?](https://youtu.be/DNx9NhVdO-8) 4 | - [2016 - О чем говорит "Черное зеркало". Кибернетика и будущее. Сергей Одарыч](https://youtu.be/wiZcaba3dMI) 5 | - [2015 - Как исправить ошибку в NodeJS и поднять производительность в 2 раза](https://youtu.be/As4XV-dtgeg) 6 | - [2015 - Архитектура программных систем на Node.js](https://youtu.be/Try7lmWikao) 7 | - [2014 - Примеры быстрой разработки API на масштабируемом сервера приложений](https://youtu.be/f6McffaVq78) 8 | - [2013 - Сервера приложений Impress для Node.js](https://youtu.be/Zr_1YrcXtkE) 9 | -------------------------------------------------------------------------------- /Archive/2017-Archive.md: -------------------------------------------------------------------------------- 1 | ## Семинары и доклады 2017 2 | 3 | ### Семинары весной 2017 4 | 5 | - [Архив 2017 - Чудесный мир конвенций кода - Алексей Орленко](https://youtu.be/Igbs4BrIhKY) 6 | - [Архив 2017 - О важности последовательного стиля кодирования - Денис Отришко](https://youtu.be/eRrJbyY-ipY) 7 | - [Архив 2017 - Про технологический стек Metarhia - Тимур Шемсединов](https://youtu.be/x5-dl1vKa-8) 8 | - [Архив 2017 - Процесс разработки - Алексей Орленко](https://youtu.be/FMFRl1xkhjU) 9 | - [Архив 2017 - JSTP JavaScript Transfer Protocol - Алексей Орленко](https://youtu.be/So-y0TGSjtI) 10 | - [Архив 2017 - MetaSync - Тимур Шемсединов](https://youtu.be/xNfOv9I1MDk) 11 | - [Архив 2017 - GlobalStorage - Тимур Шемсединов](https://youtu.be/BMtDj5dP3e0) 12 | - [Архив 2017 - Impress Application Server - Тимур Шемсединов](https://youtu.be/ymueF-9FDCs) 13 | - [Архив 2017 - Масштабирование Node.js для высоких нагрузок - Тимур Шемсединов - JS Conference 2017](https://youtu.be/-yJWLaJ31NI) 14 | 15 | ### Выступление и разное 16 | 17 | - [Асинхронное программирование на JS и Node.js](https://youtu.be/VdRhAXnfrd0) 18 | - [Epic invitation to #OdessaJS2017](https://youtu.be/Ysnl6Ex1OZw) 19 | - [Ваше положение таково, что понять вам его невозможно](https://youtu.be/fbhwG3KwmUY) 20 | -------------------------------------------------------------------------------- /Archive/2017-Summer-school.md: -------------------------------------------------------------------------------- 1 | ## Летняя школа 2017 2 | 3 | Архив исторических лекций 2016-2017 учебного года, когда курс только 4 | формировался, в ютюбе не было ничего, а в гитхабе было всего несколько 5 | репозиториев, два раза в году на школы и собиралось по 600 человек в 7 6 | корпусе КПИ. Конечно было душно и шумно, да и материал с того времени 7 | сильно улучшился, но Летняя школа 2017 по JavaScript и NodeJS многим 8 | запомнилась, как важное событие. Есть еще видео с 2015-2016 учебного 9 | года и очень жаль, что с 2014-2015 не осталось видео. 10 | 11 | - [1. Обзор курса и обсуждение структуры курса](https://youtu.be/gKttsTvLmFI) 12 | - [2. Настройка среды: git, node, npm, eslint, ci](https://youtu.be/cDcJ5uVsWX0) 13 | - [3. JavaScript, как ассемблер нашего времени](https://youtu.be/dKRbXGwXiwg) 14 | - [4. Введение в Node js и серверный JavaScript](https://youtu.be/iT1oDAyhybQ) 15 | - [5. Замыкания, примеси, обертки, функторы, события](https://youtu.be/8_aKQBhzpl8) 16 | - [6. Файлы, потоки, буферы, сеть, сокеты, ошибки](https://youtu.be/Cvsv672Lbvk) 17 | - [7. Внедрение зависимостей DI, Firebase, Angular, SPA, React, Обработка ошибок](https://youtu.be/LaxV_CDdV5c) 18 | - [8. Асинхронное программирование](https://youtu.be/81tXZUP7tBY) 19 | - [9. Песочницы, IoC, DI, IPC, структура приложений](https://youtu.be/fjAUssuzTm4) 20 | - [10. Архитектура приложений и метапрограммирование](https://youtu.be/aDtKUEKkzKs) 21 | -------------------------------------------------------------------------------- /Archive/2018-Archive.md: -------------------------------------------------------------------------------- 1 | ## Выступления 2018 2 | 3 | - [Карта знаний инженера программиста](https://youtu.be/_s2WkaZJ0xQ) 4 | - [Свобода от выбора или почему нет ничего возможного](https://youtu.be/rYjf_PmCvQA) 5 | -------------------------------------------------------------------------------- /Archive/2018-Summer-school.md: -------------------------------------------------------------------------------- 1 | ## Летняя школа 2018 в Одессе 2 | 3 | Архив летней школы на конференции Odessa.js. Лекции читают: Тимур Шемсединов, 4 | Алексей Голиков и Алексей Орленко. 5 | 6 | - [Часть 1: Введение и парадигмы программирования](https://youtu.be/UHl_BPEfc_M) 7 | - [Часть 2: Стиль, парадигмы, функции](https://youtu.be/HWOdjxUqVmY) 8 | - [Часть 3: Частичное применение, каррирование, замыкания, чеининг](https://youtu.be/OBTYfpCRABA) 9 | - [Часть 4: Обертки и мемоизация](https://youtu.be/Lij_ne_DvZU) 10 | - [Часть 5: EventEmitter, Symbol, Proxy](https://youtu.be/UwhOIFJX4Ok) 11 | - [Часть 6: Композиция функций](https://youtu.be/0ldgoRKoTuo) 12 | - [Часть 7: Коллекции: Array, Object, Map, Set, weak & typed, итераторы](https://youtu.be/1CFCvFGk4fM) 13 | - [Часть 9: Event loop, асинхронность, таймеры, колбеки, промисы, async/await](https://youtu.be/jUCJfLv48yc) 14 | - [Часть 10: Наблюдение за файловой системой и динамическая подгрузка в Node.js](https://youtu.be/0EQQZvNM_uo) 15 | - [Часть 11: Структуры данных: связные списки, деревья структур в JavaScript](https://youtu.be/XNliOCBhYRY) 16 | - [Часть 12: Графы на JavaScript (структуры данных)](https://youtu.be/eD1A7V-Jzow) 17 | - [Часть 13: Асинхронное программирование в JavaScript и Node.js](https://youtu.be/gHrw05mH7d8) 18 | - [Часть 14: Коллекторы данных, композиция асинхронных функций в JavaScript и Node.js](https://youtu.be/q-75nBM365Y) 19 | - [Часть 15: адаптеры callbackify, promisify, асинхронная очередь для Node.js и JavaScript](https://youtu.be/b0XwgMkDo14) 20 | - [Часть 16: Обзор технологии Node.js от контрибьютеров и мемы про JavaScript](https://youtu.be/NTs-wc_Pk8M) 21 | - [Часть 17: Потоки (Streams) в Node.js](https://youtu.be/3ZRkNvs_SaE) 22 | - [Часть 18: HTTP сервер в Node.js,req, res, сокеты и потоки (streams)](https://youtu.be/PDR5hcV4a_0) 23 | - [Часть 20: Процессы, кластеризация и балансировка в Node.js](https://youtu.be/YPoiltzkUXI) 24 | -------------------------------------------------------------------------------- /Archive/2019-2020/Calendar.md: -------------------------------------------------------------------------------- 1 | # Расписание на весну 2020 2 | 3 | ## Запланированные 4 | 5 | - вт 25 фев - Структуры или записи (struct, record) 6 | - вт 25 фев - Объектно-ориентированное программирование 7 | - чт 27 фев - Введение в SQL/DDL: CREATE, ALTER, DROP, ключи, индексы 8 | - чт 27 фев - PostgreSQL: установка, настройка, консоль 9 | - вт 03 мар - ООП: абстракция, инкапсуляция, наследование, полиморфизм 10 | - чт 05 мар - SQL: SELECT (продолжение), функции, алиасы, limit, with, into 11 | - чт 05 мар - SQL: ERD, IDEF1x 12 | - вт 17 мар - ООП: принципы GRASP 13 | - чт 19 мар - SQL: INSERT, DELETE 14 | - вт 24 мар - ООП: принципы SOLID: SRP (принцип единственной ответственности) 15 | - вт 24 мар - ООП: принципы SOLID: OCP (Open Closed Principle) 16 | - чт 26 мар - SQL: JOINS 17 | - вт 31 мар - ООП: принципы SOLID: ISP (Interface Segregation Principle) 18 | - вт 31 мар - ООП: принципы SOLID: DIP (Dependency Inversion Principle) 19 | 20 | ## Очередь 21 | 22 | - Списки: односвязные, двусвязные, циклические, развернутые 23 | - Стек, очередь, дэк, графые структуры 24 | - Наборы данных в памяти 25 | - Автоматное программирование: конечные автоматы (машины состояний) 26 | - Работа с файлами 27 | - Оценка сложности алгоритмов 28 | - Неизменяемые структуры данных (immutable) 29 | - Абстракция и инкапсуляция в ООП 30 | - Сокрытие в ООП и особенности на JavaScript 31 | - Интерфейсы и наследование в ООП 32 | - Полиморфизм в ООП 33 | - Порождающие, структурные и поведенческие шаблоны 34 | - Шаблон: Цепочка обязанностей 35 | - Шаблон: Прокси 36 | - Шаблон: Абстрактная фабрика 37 | - Шаблон: Фабричный метод 38 | - Шаблон: Состояние 39 | - Шаблон: Строитель 40 | - Шаблон: Мост 41 | - Шаблон: Посетитель 42 | - Логирование в Node.js приложениях 43 | - Конфигурирование приложений на Node.js 44 | - Схемы для API, структур данных и баз данных 45 | - Контрактное программирование 46 | - Протекающие абстракции (Leaky abstractions) 47 | - Node.js для IoT (Internet of Things) 48 | - Отправка Email из Node.js, GeoIP в Node.js 49 | - Обзор Web API (Часть 2) 50 | - Антипаттерны функционального программирования 51 | - Immutable - неизменяемые структуры данных 52 | - Lock-free структуры данных 53 | - CRDT - Conflict-free data types 54 | - Динамическое программирование 55 | - CAP-теорема 56 | - Конечные автоматы (Машины состояний) 57 | - Состояние гонки и взаимные блокировки в асинхронном программировании 58 | - Состояние гонки и взаимные блокировки в параллельном программировании 59 | - Обзорная лекция: Парсинг, компиляция и интерпретация кода 60 | - Семинар: Как устроен ИТ-бизнес 61 | - Семинар: Как получить первый практический опыт 62 | - Семинар: Какие бы языки и технологии еще освоить 63 | -------------------------------------------------------------------------------- /Archive/2019-2020/IP9X.md: -------------------------------------------------------------------------------- 1 | # Материалы курса IP9X: Основы инженерии программного обеспечения 2 | 3 | Внимание, материалы на этой странице устарили, обновленная версия программы 4 | курса тут: https://github.com/HowProgrammingWorks/Index/blob/master/Courses/Fundamentals.md 5 | 6 | ## Ссылки 7 | 8 | - Автор: https://github.com/tshemsedinov 9 | - Канал в телеграме: https://t.me/HowProgrammingWorks 10 | - Группа (чат): https://t.me/Programming_IP9X 11 | - Задачи по курсу: https://github.com/HowProgrammingWorks/Index/blob/master/Practice/SEF1.ru.md 12 | - Словарь терминов: https://github.com/HowProgrammingWorks/Dictionary 13 | 14 | ## Программа на 1й семестр 2019-2020 15 | 16 | - вт 03 cен 16:10: [Введение в программирование](https://youtu.be/5Gt61EX6HZ4) 17 | - вт 03 cен 14:15: [Основы программирования для групп ИП-93, 94, 95](https://youtu.be/jaWu5DoMcZw) 18 | (это для студентов КПИ 1 курса) 19 | - вт 03 сен 17:30: [Семинар: Обсуждение плана и материалов курса](https://youtu.be/bQMTbRWrteU) 20 | - видео: [Настройка среды: Node.js, npm, git, eslint](https://youtu.be/hSyA7tcNaCE) 21 | (смотреть выборочно, что не понятно - пропускайте) 22 | - настройка среды: [Exercises.ru.md](https://github.com/HowProgrammingWorks/Introduction/blob/master/Exercises.ru.md) 23 | - видео: [Базовый синтаксис JavaScript](https://youtu.be/xJn3k1f4BiM) 24 | - примеры и задачи: 25 | [Reusable](https://github.com/HowProgrammingWorks/Reusable/blob/master/Exercises.ru.md), 26 | [Cheatsheet](https://github.com/HowProgrammingWorks/Cheatsheet) 27 | - видео: [Базовый синтаксис JavaScript, продолжение](https://youtu.be/qa-XleqA0JU) 28 | - примеры и задачи: 29 | [DataTypes](https://github.com/HowProgrammingWorks/DataTypes/blob/master/Exercises.ru.md), 30 | [Conditional](https://github.com/HowProgrammingWorks/Conditional) 31 | - вт 10 cен 14:15: [Семинар: Автоматическая проверка лабораторных работ](https://youtu.be/M4KpG0LEAyA) 32 | - вт 10 сен 15:00: [Семинар: Базовый синтаксис языка JavaScript](https://youtu.be/PGqjTXQe_qw) 33 | - вт 10 сен 16:10: [Введение в программирование, продолжение](https://youtu.be/PzlLXQ3RaDs) 34 | - видео: [Функции, лямбды, контексты, замыкания в JavaScript](https://youtu.be/pn5myCmpV2U) 35 | - видео: [Массивы, объекты, классы, прототипы в JavaScript](https://youtu.be/VBMGnAPfmsY) 36 | - вт 17 сен 16:10: [Языки программирования](https://youtu.be/enHA1CRkJe0) 37 | - вт 17 сен 17:30: [Семинар: JavaScript, ответы на вопросы](https://youtu.be/wqkQ6eslyzY) 38 | - видео: [Композиция, каррирование, частичное применение в JavaScript](https://youtu.be/ND8KQ5xjk7o) 39 | - видео: [Функции высшего порядка, колбеки, события на JavaScript](https://youtu.be/1vqATwbGHnc) 40 | - вт 24 сен 16:10: [История развития программирования](https://youtu.be/qqz0VSaNxuw) 41 | - вт 24 сен 17:30: [Парадигмы программирования](https://youtu.be/Yk1sxLVHfjs) 42 | - видео: [Работа со строками, шаблонами и юникодом в JavaScript](https://youtu.be/GcopcHQkA8M) 43 | - видео: [Примеси, обертки, декораторы, мемоизация в JavaScript](https://youtu.be/oRQ0kQr1N-U) 44 | - вт 01 окт 16:10: [Антипаттерны общие для всех парадигм](https://youtu.be/NMUsUiFokr4) 45 | - видео: [Консоль и командная строка в JavaScript и Node.js](https://youtu.be/5aSZyKi5BmE) 46 | - видео: [Чеининг функций и объектов, обработка ошибок в JavaScript](https://youtu.be/PfuEfIiLX34) 47 | - видео: [Рекурсия: косвенная и хвостовая, стек, выход](https://youtu.be/W2skCjIgVKE) 48 | - видео: [Итерирование, циклы и итераторы в JavaScript](https://youtu.be/lq3b5_UGJas) 49 | - вт 08 окт 16:10: [Антипаттерны процедурного программирования](https://youtu.be/cTv7V22mkwE) 50 | - вт 08 окт 14:15: [Ответы на вопросы по курсу "Основы программирования"](https://youtu.be/TY6nDW7aYys) 51 | - видео: [Таймеры, таймауты и EventEmitter](https://youtu.be/LK2jveAnRNg) 52 | - видео: [Функциональное программирование на JavaScript](https://youtu.be/0JxSs_GcvbQ) 53 | - видео: [Реактивное программирование на JavaScript](https://youtu.be/7MH8-qQc-48) 54 | - вт 15 отк 16:10: [Семинар: выполнение лабораторных работ по курсу](https://youtu.be/ikUOyFPzdJw) 55 | - вт 15 отк 17:00: [Массивы в JavaScript: методы Array](https://youtu.be/D1kfYBkX9FE) 56 | - примеры и задачи: 57 | [Function](https://github.com/HowProgrammingWorks/Function/blob/master/Exercises.ru.md), 58 | [Iteration](https://github.com/HowProgrammingWorks/Iteration/blob/master/Exercises.ru.md) 59 | - видео: [Проекции и отображения наборов данных в JavaScript](https://youtu.be/lwJCq9inky8) 60 | - видео: [Коллекции, множества, хештаблицы в JavaScript](https://youtu.be/hN0wsq5LNOc) 61 | - вт 22 отк 16:10: [Code Review: как это и зачем](https://www.youtube.com/watch?v=EKL6NiIQ6ZU) 62 | - вт 22 окт 17:30: [Семинар: Code Review, ответы на вопросы](https://www.youtube.com/watch?v=AgH4OAKbmkM) 63 | - видео: [Структуры данных: списки, стек, очередь, дэк в JavaScript](https://youtu.be/9KvA4hDDSjk) 64 | - вт 29 отк 16:10: [Мономорфный и полиморфный код, инлайн-кэш, скрытые классы](https://www.youtube.com/watch?v=9JUY3prnCQ4) 65 | - видео: [Сериализация и десериализация в JavaScript и Node.js](https://youtu.be/GtKPniOEzh8) 66 | - вт 05 ноя 16:10: [Рефакторинг: причины, цели, техники и процесс](https://youtu.be/z73wmpdweQ4) 67 | - чт 07 ноя 16:10: [Семинар: Выбор направления в программировании](https://youtu.be/1gL627DQF4A) 68 | - видео: [Proxy и Symbol в JavaScript](https://youtu.be/UjZjSDyi9AM) 69 | - видео: [Регулярные выражения и парсинг в JavaScript](https://youtu.be/-ef2E0ozxao) 70 | - вт 19 ноя 15:00: [Композиция: pipe, compose](https://youtu.be/xS9FicVrOTI) 71 | - вт 19 ноя 16:10: [Примеси: mixin, extend, Object.assign, class λ-mixin](https://youtu.be/NZMrJ2adEyY) 72 | - вт 19 ноя 16:40: [Прототипное программирование и прототипное наследование](https://youtu.be/SzaXTW2qcJE) 73 | - вт 19 ноя 17:20: [Мемоизация: memoize](https://youtu.be/H6S8QJo2Qxg) 74 | - видео: [Фабрики и пулы объектов в JavaScript, factorify, poolify](https://youtu.be/Ax_mSvadFp8) 75 | - вт 26 ноя 16:10: [Функции-обертки: wrappers](https://www.youtube.com/watch?v=En7pWi2fSzs) 76 | - видео: [Типизированные массивы в JavaScript](https://youtu.be/tTNcqxbxhfY) 77 | - вт 03 дек 16:10: [Новое в JavaScript](https://youtu.be/fUjHLj8bq_Y) 78 | - вт 10 дек 14:15: Семинар: Обзор материала и как готовиться к экзамену 79 | -------------------------------------------------------------------------------- /Archive/2019-2020/NodeUA.md: -------------------------------------------------------------------------------- 1 | # Расписание NodeUA на 2019-2020 2 | 3 | - чт 05 сен: [Node.js в 2019 году](https://youtu.be/CUU49jjHloM) 4 | - чт 12 сен: [Graceful Shutdown в Node.js](https://youtu.be/ZstnowFeCe0) 5 | - чт 19 сен: [Отдача статики в Node.js](https://youtu.be/n_AdKIzbpBc) 6 | - чт 26 сен: [Применение EventSourcing](https://youtu.be/kFNtKiK2SPs) 7 | - чт 03 окт: [Progressive Web Applications PWA и ServiceWorkers](https://youtu.be/s7AIwZMTVPs) 8 | - чт 10 отк: [JavaScript в браузере: Web API (часть 1)](https://youtu.be/6O8SBJsNeNw) 9 | - чт 17 отк: [Принцип единственной ответственности и закон Конвея](https://youtu.be/o4bQywkBKOI) 10 | - чт 31 отк: [Ассоциация, Агрегация и Композиция](https://youtu.be/tOIcBrzezK0) 11 | - чт 07 ноя: [Принцип подстановки Барбары Лисков](https://youtu.be/RbhYxygxroc) 12 | - чт 21 ноя: [Антипаттерны объектно-ориентированного программирования](https://youtu.be/9d5TG1VsLeU) 13 | - чт 28 ноя: [Безопасность приложений Node.js](https://youtu.be/Pdfo1G-gI6s) 14 | - чт 05 дек: [Serverless Clouds (FaaS) и изоляция контекстов запросов в Node.js](https://youtu.be/x-Rd6fPV6L8) 15 | -------------------------------------------------------------------------------- /Calendar/Calendar.md: -------------------------------------------------------------------------------- 1 | # Расписание 2 | -------------------------------------------------------------------------------- /Courses/Advanced-2025.md: -------------------------------------------------------------------------------- 1 | # Programming Fundamentals (part 2) 2 | 3 | - JavaScript and TypeScript machinery 4 | - Timers: https://github.com/HowProgrammingWorks/Timers 5 | - Typed Arrays: https://github.com/HowProgrammingWorks/TypedArrays 6 | - Generators: https://github.com/HowProgrammingWorks/Generator 7 | - Async generators: https://github.com/HowProgrammingWorks/AsyncGenerator 8 | - Iterator: https://github.com/HowProgrammingWorks/Iterator 9 | - Async iterator: https://github.com/HowProgrammingWorks/AsyncIterator 10 | - Fundamentals 11 | - Generics: https://github.com/HowProgrammingWorks/Generics 12 | - Modularity, Layers and Low Coupling 13 | - Function composition: https://github.com/HowProgrammingWorks/Composition 14 | - Memoization: https://github.com/HowProgrammingWorks/Memoization 15 | - Lists: https://github.com/HowProgrammingWorks/LinkedList 16 | - Queue and Dqueue: https://github.com/HowProgrammingWorks/Dequeue 17 | - Functional programming: https://github.com/HowProgrammingWorks/FunctionalProgramming 18 | - Functor and Monad: https://github.com/HowProgrammingWorks/Functor 19 | - Async Programming 20 | - Asynchronous programming: https://github.com/HowProgrammingWorks/AsynchronousProgramming 21 | - Reactive programming: https://github.com/HowProgrammingWorks/ReactiveProgramming 22 | - Promise: https://github.com/HowProgrammingWorks/Promise 23 | - Async/await: https://github.com/HowProgrammingWorks/AsyncAwait 24 | - EventEmitter: https://github.com/HowProgrammingWorks/EventEmitter 25 | - EventTarget: https://github.com/HowProgrammingWorks/Events 26 | - Principles and Techniques 27 | - GRASP: Information expert 28 | - GRASP: Low coupling and High cohesion 29 | - Decomposition, Instantiation, Encapsulation, Delegation 30 | - Class composition (Aggregation, Composition, Association) 31 | - SOLID 32 | - Single responsibility principle: https://github.com/HowProgrammingWorks/SingleResponsibility 33 | - Open/closed principle: https://github.com/HowProgrammingWorks/OpenClosed 34 | - Liskov substitution principle: https://github.com/HowProgrammingWorks/LiskovSubstitution 35 | - Interface segregation principle: https://github.com/HowProgrammingWorks/InterfaceSegregation 36 | - Dependency inversion principle: https://github.com/HowProgrammingWorks/DependencyInversion 37 | - Basic patterns 38 | - Singleton: https://github.com/HowProgrammingWorks/Singleton 39 | - Decorator: https://github.com/HowProgrammingWorks/Decorator 40 | - Adapter: https://github.com/HowProgrammingWorks/Adapter 41 | - Wrapper: https://github.com/HowProgrammingWorks/Wrapper 42 | - Proxy: https://github.com/HowProgrammingWorks/ProxyPattern 43 | - Factory: https://github.com/HowProgrammingWorks/Factory 44 | - Factory Method: https://github.com/HowProgrammingWorks/FactoryMethod 45 | - Object Pool: https://github.com/HowProgrammingWorks/Pool 46 | - Strategy: https://github.com/HowProgrammingWorks/Strategy 47 | - FSM: https://github.com/HowProgrammingWorks/Automata 48 | - Metaprogramming 49 | - Introspection: https://github.com/HowProgrammingWorks/Introspection 50 | - Reflect API: https://github.com/HowProgrammingWorks/Reflect 51 | - Reflection: https://github.com/HowProgrammingWorks/Reflection 52 | 53 | ## Books 54 | 55 | - «Design Patterns: Elements of Reusable Object-Oriented Software» Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides 56 | - «Refactoring: Improving the Design of Existing Code Edition Unstated» Martin Fowler, Kent Beck, John Brant, William Opdyke, Don Roberts, Erich Gamma 57 | - «Patterns of Enterprise Application Architecture» Martin Fowler 58 | - «Clean Architecture: A Craftsman's Guide to Software Structure and Design» Robert C. Martin 59 | - «Clean Code: A Handbook of Agile Software Craftmanship» Robert C. Martin 60 | - «The Clean Coder: A Code of Conduct for Professional Programmers» Robert C. Martin 61 | - «Designing Object Oriented C++ Applications Using The Booch Method» Robert C. Martin 62 | - «Agile Software Development, Principles, Patterns, and Practices» Robert C. Martin 63 | - «Agile Principles, Patterns, And Practices in C#» Robert C. Martin 64 | - «UML for Java Programmers» Robert C. Martin 65 | - «Working Effectively with Legacy Code» Robert C. Martin 66 | - «Clean Agile: Back to Basics» Robert C. Martin 67 | - «Clean Craftsmanship: Disciplines, Standards, and Ethics» Robert C. Martin 68 | - «Functional Design: Principles, Patterns, and Practices» Robert C. Martin 69 | -------------------------------------------------------------------------------- /Courses/Advanced.md: -------------------------------------------------------------------------------- 1 | # Вторая часть курса 2 | 3 | Модули SEF2 и SEF3 4 | 5 | ## Асинхронное программирование 6 | 7 | ### Повторение 8 | 9 | - [Функции высшего порядка, колбеки, события на JavaScript](https://youtu.be/1vqATwbGHnc) 10 | - Функции высшего порядка: https://github.com/HowProgrammingWorks/HigherOrderFunction 11 | - Функции обратного вызова: https://github.com/HowProgrammingWorks/Callbacks 12 | - [Асинхронное программирование на callback`ах](https://youtu.be/z8Hg6zgi3yQ) 13 | - Примеры кода: https://github.com/HowProgrammingWorks/AsynchronousProgramming 14 | - Библиотека do: https://github.com/metarhia/do 15 | - [Таймеры, таймауты и EventEmitter](https://youtu.be/LK2jveAnRNg) 16 | - Таймеры: https://github.com/HowProgrammingWorks/Timers 17 | - EventEmitter: https://github.com/HowProgrammingWorks/EventEmitter 18 | - События: https://github.com/metarhia/common/blob/master/lib/events.js 19 | 20 | ### Обзор асинхронного программирования 21 | 22 | - [Асинхронное программирование (обзор)](https://youtu.be/hY6Z6qNYzmc) 23 | 24 | ### Лекции 25 | 26 | - [Асинхронность с библиотекой async.js](https://youtu.be/XQ94wQc-erU) 27 | - Примеры кода: https://github.com/HowProgrammingWorks/AsynchronousProgramming 28 | - Библиотека async.js: https://caolan.github.io/async/ 29 | - [Асинхронность на промисах](https://youtu.be/RMl4r6s1Y8M) 30 | - Примеры кода: https://github.com/HowProgrammingWorks/Promise 31 | 32 | ## Технологический стек Node.js 33 | -------------------------------------------------------------------------------- /Courses/AlgAndData.md: -------------------------------------------------------------------------------- 1 | # Алгоритмы и структуры данных 2 | 3 | - Встроенные коллекции: массивы и объекты 4 | - [Коллекции, множества, хештаблицы в JavaScript](https://youtu.be/hN0wsq5LNOc) 5 | - Коллекции: https://github.com/HowProgrammingWorks/Collections 6 | - Хеш таблицы: https://github.com/HowProgrammingWorks/Map 7 | - Множества: https://github.com/HowProgrammingWorks/Set 8 | - [Структуры данных: списки, стек, очередь, дэк в JavaScript](https://youtu.be/9KvA4hDDSjk) 9 | - Списки: https://github.com/HowProgrammingWorks/LinkedList 10 | - Очереди: https://github.com/HowProgrammingWorks/Dequeue 11 | - Деревья: бинарные деревья и иерархические многосвязные структуры 12 | - [Графы и запросы к графовым структурам на JavaScript](https://youtu.be/a0W0T8Yqw3s) 13 | - Примеры кода: https://github.com/HowProgrammingWorks/Graph 14 | - Буферизация: бубферы, списки буферов, циклические буферы 15 | - Immutable - неизменяемые структуры данных (готовится) 16 | - Lock-free структуры данных (готовится) 17 | - CRDT - Conflict-free data types (готовится) 18 | - Динамическое программирование (готовится) 19 | -------------------------------------------------------------------------------- /Courses/Architecture-2025.md: -------------------------------------------------------------------------------- 1 | # Software Structure & Architecture 2 | 3 | 1. Introduction 4 | 2. Layered (onion), DDD, Clean architecture 5 | 3. App structure, Modularity, DI, unittesting 6 | 4. DTOs, models, race conditions 7 | 5. Hexagonal Architecture, ports and adapters architecture 8 | 6. Clustering, Parallel, Distributed systems, CAP, ACID, BASE, Locking, CQRS 9 | 7. Actor Model 10 | 8. Databases, data modeling 11 | 9. Domain Specific Languages: DSL, AST, LISP 12 | 10. Command, QueryObject, CQS, CQRS, EventSourcing 13 | 11. Messaging: MQ, Pub/Sub, Pull 14 | 12. System integration and topology: API, bus, brocker, MQ 15 | 13. Communication styles: data, call, event, log sync, p2p, blockchain 16 | 14. Feature-Sliced Design 17 | 15. Architecture for Web: DDD for Frontend and Backend 18 | 16. Data access patterns 19 | 17. Asynchronous programming 20 | 18. Imperative shell, Functional core 21 | 19. Multi-paradigm programming in Architecture 22 | 20. Metaprogramming 23 | 24 | ## Students seminar topics 25 | 26 | Timing: 30-60 min + discussion (min 30 min) 27 | Requirements: PDF or MD file in github repo, presentation google docs 28 | Topic: please propose before call in 3-7 days 29 | 30 | - Pipeline architecture 31 | - SOA: web services, microservices, serverless 32 | - One of noSQL db solution 33 | - Task and resource schedulers 34 | - Testing, quality assessments 35 | - Infrastructure, deployment, CI/CD 36 | - DB Migration 37 | - DB Balancing and sharding 38 | - DB replication 39 | - DB Backups and recovery 40 | - API Balancing 41 | - Application and system logging 42 | - Law of Demeter (LoD) // See comments in next section 43 | - DAL (data access layer) 44 | - Dependency injection & Inversion of Control (for your language) 45 | - DDD: Value object, Null object, DTO, Active Record, Data access object, Data mapper 46 | - Blockchain: voting system for decision making and specialist selecting; registers; distributed data storage // Andrii Schavinskyi 47 | - Object-relational mismatch (from Kleppmann) 48 | - Cache strategies 49 | - Indexing structures 50 | - Serialization formats comparison and evolution: binary files, xml, yml, json, protobuf, v8 ser format, etc. 51 | - DB ACID // Fowler 52 | - Locking and offline concurrency patterns // Fowler 53 | - Sessions: session token, JWT token 54 | 55 | ## Books 56 | 57 | - «Patterns of Enterprise Application Architecture» Martin Fowler 58 | - «Designing Data-intensive Applications» Martin Kleppmann 59 | - «Clean Architecture: A Craftsman's Guide to Software Structure and Design» Robert C. Martin 60 | - «Refactoring: Improving the Design of Existing Code Edition Unstated» Martin Fowler, Kent Beck, John Brant, William Opdyke, Don Roberts, Erich Gamma 61 | - «Working Effectively with Legacy Code» Robert C. Martin 62 | - «Clean Agile: Back to Basics» Robert C. Martin 63 | - «Clean Craftsmanship: Disciplines, Standards, and Ethics» Robert C. Martin 64 | - «Functional Design: Principles, Patterns, and Practices» Robert C. Martin 65 | - Computation theory: Turing, von Neumann, Curry, Church 66 | - Ludwig Wittgenstein  67 | - Avram Noam Chomsky- A Pattern Language: Towns, Buildings, Construction // Christopher W. Alexander 68 | - Cybernetics: Norbert Wiener and Victor Mikhailovich Glushkov 69 | - System approach: Ludwig von Bertalanffy, William Ross Ashby 70 | - Stafford Beer 71 | 72 | ## Additional topics 73 | 74 | - Pipeline architecture 75 | - SOA: web services, microservices, serverless 76 | - Data warehouses and DBMS: relational, noSQL, columnar, key-value 77 | - API Design 78 | - Corporate integration buses (exchange with external subsystems) 79 | - Task and resource schedulers 80 | - Testing, quality assessments, continuous integration 81 | - Infrastructure, deployment, update, migration, reengineering 82 | - Balancing, replication, sharding, resharding, backups and recovery 83 | - Security, authorization, authentication, application firewall 84 | - Application and system logging, incident investigation 85 | - Analysis and reengineering of business processes 86 | - Law of Demeter (LoD) - Principle of Least Knowledge or Don't Talk to Strangers 87 |   - Low Coupling (LC): The goal of LoD is to reduce coupling by reducing the knowledge of a class about other classes. 88 |   - Tell, Don't Ask/Information Expert (TdA/IE): LoD is more specific than TdA/IE because TdA/IE can be applied in a wider context (e.g. for responsibility assignment). Applying TdA leads to solutions which are good according to LoD. Note that the reverse is not true: According to LoD you may get and set values from an object passed as a parameter to a method. 89 |   - A method of an object should invoke only the methods of the following kinds of objects: 90 |     - itself 91 |     - its parameters 92 |     - any objects it creates/instantiates 93 |     - its direct component objects 94 | 95 | ## Old lectures 96 | 97 | - [Архитектурный подход к программированию](https://youtu.be/d_vyO2CkiOc) 98 | - [Слои, связанность и связность кода](https://youtu.be/A3RpwNlVeyY) 99 |   - Примеры кода: https://github.com/HowProgrammingWorks/Abstractions 100 | - [Модули, слои, структура проекта, песочницы в JavaScript и Node.js](https://youtu.be/O7A9chb573E) 101 |   - Пример проекта: https://github.com/HowProgrammingWorks/Project 102 |   - Абстрактные слои: https://github.com/HowProgrammingWorks/AbstractionLayers 103 |   - Песочницы: https://github.com/HowProgrammingWorks/Sandboxes 104 | - [Инверсия управления и внедрение зависимостей в Node.js](https://youtu.be/Fz86Fdjz-LM) 105 |   - Инверсия управления: https://github.com/HowProgrammingWorks/InversionOfControl 106 |   - Внедрение зависимостей: https://github.com/HowProgrammingWorks/DependencyInjection 107 | - [Межпроцессовое взаимодействие в Node.js](https://youtu.be/2OXWZFMvfbc) 108 |   - Примеры кода: https://github.com/HowProgrammingWorks/InterProcessCommunication 109 | - [Высоконагруженные распределенные приложения на Node.js](https://youtu.be/7tfZDABPvVs) 110 | - [Слой доступа к данным, курсор, транзакция](https://youtu.be/CRcSWtWVvrA) 111 |   - Примеры кода: https://github.com/HowProgrammingWorks/Transaction 112 | - [Разработка API на Node.js (клиент и сервер)](https://youtu.be/-az912XBCu8) 113 |   - Примеры кода: https://github.com/HowProgrammingWorks/API 114 | - [CQS, CQRS, Event Sourcing - Разделение запросов и модификации данных](https://youtu.be/T2tRc80Q8Qw) 115 |   - CQS: https://github.com/HowProgrammingWorks/CQS 116 |   - CQRS: https://github.com/HowProgrammingWorks/CQRS 117 |   - EventSourcing: https://github.com/HowProgrammingWorks/EventSourcing 118 | - [Применение EventSourcing](https://youtu.be/kFNtKiK2SPs) 119 |   - https://github.com/HowProgrammingWorks/EventSourcing 120 |   - https://github.com/HowProgrammingWorks/CQRS 121 |   - https://github.com/HowProgrammingWorks/Command 122 | - [Serverless Clouds (FaaS) и изоляция контекстов запросов в Node.js](https://youtu.be/x-Rd6fPV6L8) 123 |   - Слайды: https://www.slideshare.net/tshemsedinov/serverless-clouds-faas-and-request-context-isolation-in-nodejs 124 | -------------------------------------------------------------------------------- /Courses/Architecture.md: -------------------------------------------------------------------------------- 1 | # Архитектура информационных систем 2 | 3 | ## Структура курса 4 | 5 | - Обзор задач, компонентный, модульный и многослойный подходы к проектированию 6 | - Классификация ИС: ERP, SCM, CRM, MRP, BI, B2B и B2C 7 | - Слоистая архитектура и многозвенная архитектура для монолитных ИС 8 | - Типы взаимодействия: общие данные, вызов процедур, передача событий 9 | - Двух и трех-звенные приложения, многозвенные, пайплайн топология 10 | - Сервисный подход: веб-сервисы и микросервисы, серверлес 11 | - Хранилища данных и СУБД: реляционные, noSQL, колоночные, ключ-значение 12 | - CQS, CQRS и Event-Sourcing 13 | - Топологии распределенных ИС: звезда, шина, кольцо, конвейер, полносвязная 14 | - Проектирование API интерфейсов 15 | - Корпоративные интеграционные шины (обмен с внешними подсистемами) 16 | - Шины трансляции событий и очереди событий (MQ системы) 17 | - Планировщики отложенных задач и ресурсов, очереди исполнения 18 | - Тестирование, оценки качества, непрерывная интеграция 19 | - Инфраструктура, развертывание, обновление, миграции, реинженеринг 20 | - Балансировка, репликации, шардинг, решардинг, бекапы и восстановление 21 | - Безопасность, авторизация, аутентификация, прикладной фаервол 22 | - Прикладное и системное логирование, расследование инцидентов 23 | - Анализ и реинженеринг бизнес-процессов 24 | 25 | ## Видео-лекции 26 | 27 | - [Архитектурный подход к программированию](https://youtu.be/d_vyO2CkiOc) 28 | - [Слои, связанность и связность кода](https://youtu.be/A3RpwNlVeyY) 29 | - Примеры кода: https://github.com/HowProgrammingWorks/Abstractions 30 | - [Модули, слои, структура проекта, песочницы в JavaScript и Node.js](https://youtu.be/O7A9chb573E) 31 | - Пример проекта: https://github.com/HowProgrammingWorks/Project 32 | - Абстрактные слои: https://github.com/HowProgrammingWorks/AbstractionLayers 33 | - Песочницы: https://github.com/HowProgrammingWorks/Sandboxes 34 | - [Инверсия управления и внедрение зависимостей в Node.js](https://youtu.be/Fz86Fdjz-LM) 35 | - Инверсия управления: https://github.com/HowProgrammingWorks/InversionOfControl 36 | - Внедрение зависимостей: https://github.com/HowProgrammingWorks/DependencyInjection 37 | - [Межпроцессовое взаимодействие в Node.js](https://youtu.be/2OXWZFMvfbc) 38 | - Примеры кода: https://github.com/HowProgrammingWorks/InterProcessCommunication 39 | - [Высоконагруженные распределенные приложения на Node.js](https://youtu.be/7tfZDABPvVs) 40 | - [Слой доступа к данным, курсор, транзакция](https://youtu.be/CRcSWtWVvrA) 41 | - Примеры кода: https://github.com/HowProgrammingWorks/Transaction 42 | - [Разработка API на Node.js (клиент и сервер)](https://youtu.be/-az912XBCu8) 43 | - Примеры кода: https://github.com/HowProgrammingWorks/API 44 | - [CQS, CQRS, Event Sourcing - Разделение запросов и модификации данных](https://youtu.be/T2tRc80Q8Qw) 45 | - CQS: https://github.com/HowProgrammingWorks/CQS 46 | - CQRS: https://github.com/HowProgrammingWorks/CQRS 47 | - EventSourcing: https://github.com/HowProgrammingWorks/EventSourcing 48 | - [Применение EventSourcing](https://youtu.be/kFNtKiK2SPs) 49 | - https://github.com/HowProgrammingWorks/EventSourcing 50 | - https://github.com/HowProgrammingWorks/CQRS 51 | - https://github.com/HowProgrammingWorks/Command 52 | - [Serverless Clouds (FaaS) и изоляция контекстов запросов в Node.js](https://youtu.be/x-Rd6fPV6L8) 53 | - Слайды: https://www.slideshare.net/tshemsedinov/serverless-clouds-faas-and-request-context-isolation-in-nodejs 54 | -------------------------------------------------------------------------------- /Courses/Async.uk.md: -------------------------------------------------------------------------------- 1 | # Асинхронне програмування 2 | 3 | - Автор: https://github.com/tshemsedinov 4 | - Умовні позначення: 5 | - ✨ - Обов'язкові лекції 6 | - 🧑‍💻 - Приклади коду 7 | - 🧩 - Необов'язкові лекції 8 | - 🕑 - Застарілі лекції (не актуальні чи історічні) 9 | 10 | ## Програма курсу 11 | 12 | - ⭐ [Вступ та організаційні питання](https://youtu.be/vfEyRijm83g) 13 | - ⭐ [Q&A семінар для усіх курсів](https://youtu.be/Wm7wclbv1Ik) 14 | - ✨ [Асинхронне програмування (огляд)](https://youtu.be/hY6Z6qNYzmc) 15 | - ✨ [Таймери, таймаути та EventEmitter](https://youtu.be/LK2jveAnRNg) 16 | - 🧑‍💻 Таймери: https://github.com/HowProgrammingWorks/Timers 17 | - 🧑‍💻 EventEmitter: https://github.com/HowProgrammingWorks/EventEmitter 18 | - 🧑‍💻 Події: https://github.com/metarhia/common/blob/master/lib/events.js 19 | - ✨ [Асинхронне програмування на callback`ах](https://youtu.be/z8Hg6zgi3yQ) 20 | - 🧑‍💻 Приклади коду: https://github.com/HowProgrammingWorks/AsynchronousProgramming 21 | - 🧑‍💻 Бібліотека do: https://github.com/metarhia/do 22 | - 🕑 [Неблокуюче асинхронне ітерування](https://youtu.be/wYA2cIRYLoA) 23 | - 🧑‍💻 Приклади коду: https://github.com/HowProgrammingWorks/NonBlocking 24 | - 🕑 [Асинхронність із бібліотекою async.js](https://youtu.be/XQ94wQc-erU) 25 | - 🧑‍💻 Приклади коду: https://github.com/HowProgrammingWorks/AsynchronousProgramming 26 | - 🧑‍💻 Бібліотека async.js: https://caolan.github.io/async/ 27 | - ✨ [Асинхронність на промісах](https://youtu.be/RMl4r6s1Y8M) 28 | - 🧑‍💻 Приклади коду: https://github.com/HowProgrammingWorks/Promise 29 | - ✨ [Асинхронні функції, async/await, thenable, обробка помилок](https://youtu.be/Jdf_tZuJbHI) 30 | - 🧑‍💻 Приклади коду: https://github.com/HowProgrammingWorks/AsyncAwait 31 | - 🧩 [Асинхронні адаптери: promisify, callbackify, asyncify](https://youtu.be/76k6_YkYRmU) 32 | - 🧑‍💻 Приклади коду: https://github.com/HowProgrammingWorks/AsyncAdapter 33 | - ✨ [Асинхронні колектори даних](https://youtu.be/tgodt1JL6II) 34 | - 🧑‍💻 Приклади коду: https://github.com/HowProgrammingWorks/Collector 35 | - 🧑‍💻 Бібліотека metasync: https://github.com/metarhia/metasync 36 | - 🧩 [Необроблені помилки у промісах](https://youtu.be/1Ml5NE2fsZ8) 37 | - 🧑‍💻 Приклади коду: https://github.com/HowProgrammingWorks/PromiseError 38 | - 🕑 [Проблема асинхронного стектрейса](https://youtu.be/pfiHTx3j87Y) 39 | - 🧑‍💻 Приклади коду: https://github.com/HowProgrammingWorks/StackTrace 40 | - ✨ [Генератори та асинхронні генератори](https://youtu.be/kvNm9D32s8s) 41 | - 🧑‍💻 Генератори: https://github.com/HowProgrammingWorks/Generator 42 | - 🧑‍💻 Асинхронные генераторы: https://github.com/HowProgrammingWorks/AsyncGenerator 43 | - ✨ [Ітератори та асинхронні ітератори](https://youtu.be/rBGFlWpVpGs) 44 | - 🧑‍💻 Итератори: https://github.com/HowProgrammingWorks/Iterator 45 | - 🧑‍💻 Асинхронные итераторы: https://github.com/HowProgrammingWorks/AsyncIterator 46 | - 🕑 [Скасування асинхронних операцій](https://youtu.be/T8fXlnqI4Ws) 47 | - 🧑‍💻 Приклади коду: https://github.com/HowProgrammingWorks/Cancelable 48 | - ⭐ Буде нова лекція: AbortController та AbortSygnal - Скасування асинхронних операцій 49 | - 🧩 [Асинхронна композиція функцій](https://youtu.be/3ZCrMlMpOrM) 50 | - 🧑‍💻 Приклади коду: https://github.com/HowProgrammingWorks/AsyncCompose 51 | - 🧩 [Thenable та легкий await](https://youtu.be/DXp__1VNIvI) 52 | - 🧑‍💻 Приклади коду: https://github.com/HowProgrammingWorks/Thenable 53 | - 🧩 [Конкурентна асинхронна черга](https://youtu.be/Lg46AH8wFvg) 54 | - 🧑‍💻 Приклади коду: https://github.com/HowProgrammingWorks/ConcurrentQueue 55 | - 🧩 [Паттерн відкритий конструктор (Revealing Constructor)](https://youtu.be/leR5sXRkuJI) 56 | - 🧑‍💻 Приклади коду: https://github.com/HowProgrammingWorks/RevealingConstructor 57 | - 🧩 [Future: Асинхронність на ф'ючерах без стану](https://youtu.be/22ONv3AGXdk) 58 | - 🧑‍💻 Приклади коду: https://github.com/HowProgrammingWorks/Future 59 | - 🕑 [Deferred: Асинхронність на диферах зі станом](https://youtu.be/a2fVA1o-ovM) 60 | - 🧑‍💻 Приклади коду: https://github.com/HowProgrammingWorks/Deferred 61 | - 🧩 [Модель акторів (Actor Model)](https://youtu.be/xp5MVKEqxY4) 62 | - 🧑‍💻 Приклади коду: https://github.com/HowProgrammingWorks/ActorModel 63 | - 🧩 [Паттерн Спостерігач (Observer + Observable)](https://youtu.be/_bFXuLcXoXg) 64 | - 🧑‍💻 Приклади коду: https://github.com/HowProgrammingWorks/Observer 65 | - ✨ [Асинхронність на RxJS та потоки подій](https://youtu.be/0kcpMAl-wfE) 66 | - 🧑‍💻 Приклади коду: https://github.com/HowProgrammingWorks/Rx 67 | - ⭐ Буде нова лекція: Async hooks 68 | - 🧩 [Пам'ять, що доступна з багатьох тредів у Node.js](https://youtu.be/KNsm_iIQt7U) 69 | - 🧩 [Асинхронний пул для worker thread pool у Node.js](https://youtu.be/Jj5KZRq4wYI) 70 | - ✨ Асинхронне програмування з лекції [введення в Node.js](https://www.youtube.com/watch?v=mRvzgBGLVyM) 71 | -------------------------------------------------------------------------------- /Courses/Asynchronous-timecodes.md: -------------------------------------------------------------------------------- 1 | # Таймкоды к курсу "Асинхронное программирование" 2 | 3 | Общее оглавление курса тут: [Asynchronous.md](Asynchronous.md) 4 | 5 | ## [Асинхронное программирование в Node.js и JavaScript](https://youtu.be/hY6Z6qNYzmc) 6 | 7 | - [05:45 Callbacks](https://youtu.be/hY6Z6qNYzmc?t=345) 8 | - [10:00 Async.js or analogues](https://youtu.be/hY6Z6qNYzmc?t=600) 9 | - [15:47 Events](https://youtu.be/hY6Z6qNYzmc?t=947) 10 | - [18:00 Promise](https://youtu.be/hY6Z6qNYzmc?t=1080) 11 | - [25:20 async/await](https://youtu.be/hY6Z6qNYzmc?t=1520) 12 | - [27:10 Functor + Chaining + composition](https://youtu.be/hY6Z6qNYzmc?t=1630) 13 | - [30:49 Problems of callback, async.js, Proimise, async/await](https://youtu.be/hY6Z6qNYzmc?t=1849) 14 | - [34:00 Add timeout to any function](https://youtu.be/hY6Z6qNYzmc?t=2040) 15 | - [36:55 Make function cancelable](https://youtu.be/hY6Z6qNYzmc?t=2215) 16 | - [37:59 More wrappers](https://youtu.be/hY6Z6qNYzmc?t=2279) 17 | - [39:22 Promisify and Callbackify](https://youtu.be/hY6Z6qNYzmc?t=2362) 18 | - [48:47 Sync function to async](https://youtu.be/hY6Z6qNYzmc?t=2927) 19 | - [41:43 Sync function to Promise](https://youtu.be/hY6Z6qNYzmc?t=2503) 20 | - [43:17 Convertors](https://youtu.be/hY6Z6qNYzmc?t=2597) 21 | - [43:31 Metasync](https://youtu.be/hY6Z6qNYzmc?t=2611) 22 | - [45:26 Function composition](https://youtu.be/hY6Z6qNYzmc?t=2726) 23 | - [47:09 Asynchronous function composition](https://youtu.be/hY6Z6qNYzmc?t=2829) 24 | - [47:58 Flow communication like in electronics](https://youtu.be/hY6Z6qNYzmc?t=2878) 25 | - [50:06 Collectors](https://youtu.be/hY6Z6qNYzmc?t=3006) 26 | - [59:17 Queue](https://youtu.be/hY6Z6qNYzmc?t=3557) 27 | 28 | ## [Таймеры, таймауты, EventEmitter в JavaScript и Node.js](https://youtu.be/LK2jveAnRNg) 29 | 30 | - [00:30 callback sync/async](https://youtu.be/LK2jveAnRNg?t=30) 31 | - [01:35 временная задержка sleep.js](https://youtu.be/LK2jveAnRNg?t=95) 32 | - [05:35 await-sleep.js](https://youtu.be/LK2jveAnRNg?t=335) 33 | - [08:40 sleep-then.js](https://youtu.be/LK2jveAnRNg?t=520) 34 | - [09:30 order.js](https://youtu.be/LK2jveAnRNg?t=570) 35 | - [18:38 precision.js](https://youtu.be/LK2jveAnRNg?t=1118) 36 | - [22:13 blocking.js](https://youtu.be/LK2jveAnRNg?t=1333) 37 | - [22:50 timers.js](https://youtu.be/LK2jveAnRNg?t=1370) 38 | - [29:35 ref-unref.js](https://youtu.be/LK2jveAnRNg?t=1775) 39 | - [32:05 enroll.js](https://youtu.be/LK2jveAnRNg?t=1925) 40 | - [34:57 eventloop.txt](https://youtu.be/LK2jveAnRNg?t=2097) 41 | - [37:37 eventEmitter](https://youtu.be/LK2jveAnRNg?t=2257) 42 | - [44:32 simple.js](https://youtu.be/LK2jveAnRNg?t=2672) 43 | - [47:48 usage.js](https://youtu.be/LK2jveAnRNg?t=2868) 44 | - [48:30 enhanced.js](https://youtu.be/LK2jveAnRNg?t=2910) 45 | - [50:18 star-fix.js](https://youtu.be/LK2jveAnRNg?t=3018) 46 | - [51:10 usage.js](https://youtu.be/LK2jveAnRNg?t=3070) 47 | - [53:15 closure.js](https://youtu.be/LK2jveAnRNg?t=3195) 48 | - [54:50 fp.js](https://youtu.be/LK2jveAnRNg?t=3290) 49 | - [57:10 methods.js](https://youtu.be/LK2jveAnRNg?t=3430) 50 | - [1:06:35 min.js](https://youtu.be/LK2jveAnRNg?t=3995) 51 | - [1:12:31 prod.js](https://youtu.be/LK2jveAnRNg?t=4351) 52 | 53 | ## [Асинхронное программирование на callback`ах в JavaScript](https://youtu.be/z8Hg6zgi3yQ) 54 | 55 | - [01:20 пример callback функции](https://youtu.be/z8Hg6zgi3yQ?t=80) 56 | - [02:40 пример последовательного исполнения callback функций](https://youtu.be/z8Hg6zgi3yQ?t=160) 57 | - [05:52 пример параллельного исполнения async функций c использованием wrapAsync](https://youtu.be/z8Hg6zgi3yQ?t=352) 58 | - [15:18 пример последовательного исполнения async функций c использованием wrapAsync](https://youtu.be/z8Hg6zgi3yQ?t=918) 59 | - [19:05 chain исполнение async функций](https://youtu.be/z8Hg6zgi3yQ?t=1145) 60 | - [41:16 где можно встретить асинхронные функции](https://youtu.be/z8Hg6zgi3yQ?t=2476) 61 | 62 | ## [Неблокирующее асинхронное итерирование в JavaScript](https://youtu.be/wYA2cIRYLoA) 63 | 64 | - [01:02 блокирующее итерирование по массиву](https://youtu.be/wYA2cIRYLoA?t=62) 65 | - [03:24 блокирующее итерирование с помощью for await](https://youtu.be/wYA2cIRYLoA?t=204) 66 | - [04:47 неблокирующее итерирование с помощью setTimeout](https://youtu.be/wYA2cIRYLoA?t=287) 67 | - [06:45 неблокирующее итерирование с помощью for await](https://youtu.be/wYA2cIRYLoA?t=405) 68 | - [08:20 неблокирующее итерирование без задержки](https://youtu.be/wYA2cIRYLoA?t=500) 69 | - [13:00 неблокирующее итерирование без задержки с помощью for await](https://youtu.be/wYA2cIRYLoA?t=780) 70 | - [19:30 использование асинхронного итерирования для обычных массивов](https://youtu.be/wYA2cIRYLoA?t=1170) 71 | 72 | ## [Асинхронность с библиотекой async.js](https://youtu.be/XQ94wQc-erU) 73 | 74 | ## [Асинхронность на промисах, Promise, all, then, catch, race](https://youtu.be/RMl4r6s1Y8M) 75 | 76 | ## [Асинхронные функции, async/await, thenable, обработка ошибок](https://youtu.be/Jdf_tZuJbHI) 77 | 78 | ## [Асинхронные адаптеры: promisify, callbackify, asyncify...](https://youtu.be/76k6_YkYRmU) 79 | 80 | ## [Асинхронные коллекторы данных](https://youtu.be/tgodt1JL6II) 81 | 82 | ## [Необработанные ошибки в промисах на Node.js](https://youtu.be/1Ml5NE2fsZ8) 83 | 84 | ## [Проблема асинхронного стектрейса в JavaScript и Node.js](https://youtu.be/pfiHTx3j87Y) 85 | 86 | ## [Генераторы и асинхронные генераторы в JavaScript](https://youtu.be/kvNm9D32s8s) 87 | 88 | - [00:00 Способы объявления генераторов](https://youtu.be/kvNm9D32s8s?t=0) 89 | - [10:41 Пример генератора с yield](https://youtu.be/kvNm9D32s8s?t=641) 90 | - [15:54 Пример генератора с yield и return](https://youtu.be/kvNm9D32s8s?t=954) 91 | - [18:47 Получение значений из генератора циклом for...of](https://youtu.be/kvNm9D32s8s?t=1127) 92 | - [21:04 Получение значений из генератора spead - оператором](https://youtu.be/kvNm9D32s8s?t=1264) 93 | - [21:50 Метод next](https://youtu.be/kvNm9D32s8s?t=1310) 94 | - [23:30 Пример генератора с yield * возвращающего итерируемые объекты](https://youtu.be/kvNm9D32s8s?t=1410) 95 | - [25:05 Пример генератора с yield * возвращающего другие генераторы](https://youtu.be/kvNm9D32s8s?t=1505) 96 | - [26:18 Метод return](https://youtu.be/kvNm9D32s8s?t=1578) 97 | - [28:11 Метод throw](https://youtu.be/kvNm9D32s8s?t=1691) 98 | - [29:05 Обобщение](https://youtu.be/kvNm9D32s8s?t=1745) 99 | 100 | ## [Итераторы и асинхронные итераторы в JavaScript](https://youtu.be/rBGFlWpVpGs) 101 | 102 | ## [Отмена асинхронных операций, cancellable callback and Promise в JavaScript](https://youtu.be/T8fXlnqI4Ws) 103 | 104 | ## [Асинхронная композиция функций на JavaScript](https://youtu.be/3ZCrMlMpOrM) 105 | 106 | ## [Thenable и легковесный await в JavaScript](https://youtu.be/DXp__1VNIvI) 107 | 108 | ## [Конкурентная асинхронная очередь на JavaScript](https://youtu.be/Lg46AH8wFvg) 109 | 110 | ## [Паттерн Revealing Constructor - открытый конструктор](https://youtu.be/leR5sXRkuJI) 111 | 112 | ## [Future: Асинхронность на фьючерах без состояния](https://youtu.be/22ONv3AGXdk) 113 | 114 | ## [Deferred: Асинхронность на диферах с состоянием](https://youtu.be/a2fVA1o-ovM) 115 | 116 | ## [Модель акторов для параллельных вычислений](https://youtu.be/xp5MVKEqxY4) 117 | 118 | ## [Паттерн Наблюдатель (Observer + Observable)](https://youtu.be/_bFXuLcXoXg) 119 | 120 | ## [Асинхронность на RxJS и потоки событий](https://youtu.be/0kcpMAl-wfE) 121 | 122 | ## [Асинхронный пул для worker thread pool в Node.js](https://youtu.be/Jj5KZRq4wYI) 123 | -------------------------------------------------------------------------------- /Courses/Asynchronous.md: -------------------------------------------------------------------------------- 1 | # Асинхронное программирование 2 | 3 | Объем материала: 26 лекции, 28 репозиториев с примерами кода. 4 | 5 | [Для части лекций есть таймкоды и подробное оглавление](Asynchronous-timecodes.md) 6 | 7 | ## Видео-лекции 8 | 9 | - [Асинхронное программирование (обзор)](https://youtu.be/hY6Z6qNYzmc) 10 | - [Таймеры, таймауты и EventEmitter](https://youtu.be/LK2jveAnRNg) 11 | - Таймеры: https://github.com/HowProgrammingWorks/Timers 12 | - EventEmitter: https://github.com/HowProgrammingWorks/EventEmitter 13 | - События: https://github.com/metarhia/common/blob/master/lib/events.js 14 | - [Асинхронное программирование на callback`ах](https://youtu.be/z8Hg6zgi3yQ) 15 | - Примеры кода: https://github.com/HowProgrammingWorks/AsynchronousProgramming 16 | - Библиотека do: https://github.com/metarhia/do 17 | - [Неблокирующее асинхронное итерирование](https://youtu.be/wYA2cIRYLoA) 18 | - Примеры кода: https://github.com/HowProgrammingWorks/NonBlocking 19 | - [Асинхронность с библиотекой async.js](https://youtu.be/XQ94wQc-erU) 20 | - Примеры кода: https://github.com/HowProgrammingWorks/AsynchronousProgramming 21 | - Библиотека async.js: https://caolan.github.io/async/ 22 | - [Асинхронность на промисах](https://youtu.be/RMl4r6s1Y8M) 23 | - Примеры кода: https://github.com/HowProgrammingWorks/Promise 24 | - [Асинхронные функции, async/await, thenable, обработка ошибок](https://youtu.be/Jdf_tZuJbHI) 25 | - Примеры кода: https://github.com/HowProgrammingWorks/AsyncAwait 26 | - [Асинхронные адаптеры: promisify, callbackify, asyncify](https://youtu.be/76k6_YkYRmU) 27 | - Примеры кода: https://github.com/HowProgrammingWorks/AsyncAdapter 28 | - [Асинхронные коллекторы данных](https://youtu.be/tgodt1JL6II) 29 | - Примеры кода: https://github.com/HowProgrammingWorks/Collector 30 | - Библиотека: https://github.com/metarhia/metasync 31 | - [Необработанные ошибки в промисах](https://youtu.be/1Ml5NE2fsZ8) 32 | - Примеры кода: https://github.com/HowProgrammingWorks/PromiseError 33 | - [Проблема асинхронного стектрейса](https://youtu.be/pfiHTx3j87Y) 34 | - Примеры кода: https://github.com/HowProgrammingWorks/StackTrace 35 | - [Генераторы и асинхронные генераторы](https://youtu.be/kvNm9D32s8s) 36 | - Генераторы: https://github.com/HowProgrammingWorks/Generator 37 | - Асинхронные генераторы: https://github.com/HowProgrammingWorks/AsyncGenerator 38 | - [Итераторы и асинхронные итераторы](https://youtu.be/rBGFlWpVpGs) 39 | - Итераторы: https://github.com/HowProgrammingWorks/Iterator 40 | - Асинхронные итераторы: https://github.com/HowProgrammingWorks/AsyncIterator 41 | - [Отмена асинхронных операций](https://youtu.be/T8fXlnqI4Ws) 42 | - Примеры кода: https://github.com/HowProgrammingWorks/Cancelable 43 | - [Асинхронная композиция функций](https://youtu.be/3ZCrMlMpOrM) 44 | - Примеры кода: https://github.com/HowProgrammingWorks/AsyncCompose 45 | - [Thenable и легковесный await](https://youtu.be/DXp__1VNIvI) 46 | - Примеры кода: https://github.com/HowProgrammingWorks/Thenable 47 | - [Конкурентная асинхронная очередь](https://youtu.be/Lg46AH8wFvg) 48 | - Примеры кода: https://github.com/HowProgrammingWorks/ConcurrentQueue 49 | - [Паттерн открытый конструктор (Revealing Constructor)](https://youtu.be/leR5sXRkuJI) 50 | - Примеры кода: https://github.com/HowProgrammingWorks/RevealingConstructor 51 | - [Future: Асинхронность на фьючерах без состояния](https://youtu.be/22ONv3AGXdk) 52 | - Примеры кода: https://github.com/HowProgrammingWorks/Future 53 | - [Deferred: Асинхронность на диферах с состоянием](https://youtu.be/a2fVA1o-ovM) 54 | - Примеры кода: https://github.com/HowProgrammingWorks/Deferred 55 | - [Модель акторов (Actor Model)](https://youtu.be/xp5MVKEqxY4) 56 | - Примеры кода: https://github.com/HowProgrammingWorks/ActorModel 57 | - [Паттерн Наблюдатель (Observer + Observable)](https://youtu.be/_bFXuLcXoXg) 58 | - Примеры кода: https://github.com/HowProgrammingWorks/Observer 59 | - [Асинхронность на RxJS и потоки событий](https://youtu.be/0kcpMAl-wfE) 60 | - Примеры кода: https://github.com/HowProgrammingWorks/Rx 61 | - Асинхронные обработчики событий и AsyncEmitter 62 | - Async hooks 63 | - [Разделяемая память в многопоточном Node.js](https://youtu.be/KNsm_iIQt7U) 64 | - [Асинхронный пул для worker thread pool в Node.js](https://youtu.be/Jj5KZRq4wYI) 65 | - Асинхронное программирование из [лекции введения в Node.js](https://www.youtube.com/watch?v=mRvzgBGLVyM) 66 | -------------------------------------------------------------------------------- /Courses/Beginners.md: -------------------------------------------------------------------------------- 1 | # Основы программирования 2 | 3 | - Автор: https://github.com/tshemsedinov 4 | - Новости в телеграм канале: https://t.me/HowProgrammingWorks 5 | - Для вопросов группа в телеграме: https://t.me/MetarhiaHPW 6 | - Youtube: https://www.youtube.com/@MetatechEducation/playlists 7 | 8 | ## Оглавление 9 | 10 | - ⭐ [Введение](https://youtu.be/2DM5I2CI4gY) 11 | - ⭐ [Идентификаторы: переменные и константы](https://youtu.be/fb318yXGwxo) 12 | - ⭐ [Запись значений и типы данных](https://youtu.be/B1Y00zN31Yg) 13 | - ⭐ [Функции и блоки, область видимости, контексты](https://youtu.be/JdscRDLG9A4) 14 | - ⭐ [Условия и ветвление](https://youtu.be/O_EJ0StSnac) 15 | - ⭐ [Циклы: for, for..of и for..in](https://youtu.be/_Jxe-WacgUs) 16 | - ⭐ [Циклы while и do..while](https://youtu.be/wDVQrZx2dKU) 17 | - ⭐ [Коллекции: массивы и объекты - Array и Object](https://youtu.be/dZJ97DMu2cA) 18 | - ⭐ [Объекты: примеси и сериализация](https://youtu.be/zRr-WZB7AK8) 19 | - 🧑‍💻 [Задачи 1-5](https://github.com/HowProgrammingWorks/Book/blob/master/content/ru/2-9-Tasks.md) 20 | - 🧑‍💻 [Разбор решения задач 1-5](https://youtu.be/WNNJfjL3h3s) 21 | - ⭐ [Коллекции: Множества Set и хеш-таблицы Map](https://youtu.be/OE9DxIBu-8I) 22 | - ⭐ [Callback - функции обратного вызова и Таймеры](https://youtu.be/6eg-WMDejSM) 23 | - ⭐ [Замыкания (closure) функция и контекст](https://youtu.be/LUd-cFkhCrY) 24 | - ⭐ [Async/await - асинхронные функции](https://youtu.be/DrOiZBcWlKg) 25 | - ⭐ [Ошибки (Error), исключения (exceptions), баги, throw, try/catch](https://youtu.be/MF8u1Oj64Dk) 26 | - ⭐ [Системы модульности: ESM (ECMAScript Modules) та CJS (CommonJS)](https://youtu.be/roinnSNNgjs) 27 | - ⭐ [Декомпозиция программы на модули](https://youtu.be/7S6TrUbFMlQ) 28 | - ⭐ [Рекурсия (recursion), выход из нее и стек вызовов (call stack)](https://youtu.be/c1rJema94iY) 29 | - 🧑‍💻 [Задачи: 38 примеров плохого кода для переписывания](https://github.com/HowProgrammingWorks/Exams/tree/master/Tasks) 30 | 31 | Продолжение будет... 32 | 33 | Более сложные лекции можно найти тут: https://github.com/HowProgrammingWorks/Index/blob/master/Courses/Fundamentals.md 34 | 35 | ## Рекомендации по решению задач 36 | 37 | 🧑‍💻 Задачи: https://github.com/HowProgrammingWorks/Exams/tree/master/Tasks 38 | 39 | - Код изначально работает, и выдает правильный результат, вам нужно исправлять файл, но не сломать код 40 | - Используйте тесты из каталога `Tests` для проверки решений. 41 | - Ваша задача улучшить: понятность кода, стиль, простоту 42 | - Тут чеклист частых ошибок (они точно должны быть исправлены): 43 | - Не модифицируйте входные параметры функций 44 | - Предпочитайте стрелочные функции 45 | - Используйте eslint и prettier с нашими настройками (см. в корне репозитория [NodejsStarterKit](https://github.com/HowProgrammingWorks/NodejsStarterKit)) 46 | - Предпочтительно использовать `for..of`, реже `Array/map`, реже `for` по переменной, избегайте `for..in` и `forEach` 47 | - Используйте промежуточные идентификаторы разделяя длинные выражения 48 | - Предпочитайте `const`, реже используйте `let`, но никогда не используйте `var` 49 | - Преобразуйте все магические значения в константы 50 | - Придерживайтесь правил именования идентификаторов 51 | - Хорошо подумайте над именами идентификаторов, чтобы при прочтении кода всем было понятно их содержимое 52 | - Не делайте слишком длинных функций 53 | - Не делайте большую стопку if-выражений, вместо этого используйте массивы и объекты 54 | - Важно не переписать с нуля, а именно пошагово улучшать 55 | 56 | 👉 Индекс других курсов: https://github.com/HowProgrammingWorks/Index 57 | -------------------------------------------------------------------------------- /Courses/Databases.md: -------------------------------------------------------------------------------- 1 | # Проектирования баз данных 2 | 3 | - [Базы данных в 2020 (введение, история, состояние)](https://youtu.be/8RjT2VYBWNQ) 4 | - Слайды: https://www.slideshare.net/tshemsedinov/2020-228734914 5 | - [Введение в SQL: SELECT](https://youtu.be/Z679c8S0d7I) 6 | - Слайды: https://www.slideshare.net/tshemsedinov/sql-structured-query-language-228735217 7 | - [Введение в SQL: CREATE, ALTER, DROP, ключи, индексы](https://youtu.be/QF0v29ZneYE) 8 | - [PostgreSQL: установка, настройка, консоль](https://youtu.be/Fm6yLb8qCh4) 9 | - [Базы данных: ER, ERD, IDEF1x, сущность-связь](https://youtu.be/ByWfj3e0HnE) 10 | - [SQL SELECT: math functions, aliases, limit, with, into](https://youtu.be/lle4Yp58z6k) 11 | - SQL JOINS: CROSS, INNER, LEFT, RIGHT, FULL 12 | - Нормальные формы 13 | - [Слой доступа к данным, курсор, транзакция](https://youtu.be/CRcSWtWVvrA) 14 | - Примеры кода: https://github.com/HowProgrammingWorks/Transaction 15 | - [Работа с базами данных в Node.js на примере PostgreSQL](https://youtu.be/2tDvHQCBt3w) 16 | - Примеры кода: https://github.com/HowProgrammingWorks/Databases 17 | - [CQS, CQRS, Event Sourcing - Разделение запросов и модификации данных](https://youtu.be/T2tRc80Q8Qw) 18 | - CQS: https://github.com/HowProgrammingWorks/CQS 19 | - CQRS: https://github.com/HowProgrammingWorks/CQRS 20 | - EventSourcing: https://github.com/HowProgrammingWorks/EventSourcing 21 | - Трехзвенные приложения баз данных 22 | - Инъекции SQL и защита от них 23 | - [Применение EventSourcing](https://youtu.be/kFNtKiK2SPs) 24 | - https://github.com/HowProgrammingWorks/EventSourcing 25 | - https://github.com/HowProgrammingWorks/CQRS 26 | - https://github.com/HowProgrammingWorks/Command 27 | - [Безопасность приложений Node.js](https://youtu.be/Pdfo1G-gI6s) 28 | - Слайды: https://www.slideshare.net/tshemsedinov/nodejs-security-199004963 29 | -------------------------------------------------------------------------------- /Courses/Functional-timecodes.md: -------------------------------------------------------------------------------- 1 | # Таймкоды к курсу "Функциональное программирование" 2 | 3 | Общее оглавление курса тут: https://github.com/HowProgrammingWorks/Index/blob/master/Courses/Functional.md 4 | 5 | ## [Функции, лямбды (стрелочные функции), контексты, замыкания в JavaScript](https://youtu.be/pn5myCmpV2U) 6 | 7 | - [00:00:00 Введение](https://youtu.be/pn5myCmpV2U?t=0) 8 | - [00:11:22 Функция объявление (Declaration)](https://youtu.be/pn5myCmpV2U?t=682) 9 | - [00:12:46 Функция выражение (Expression)](https://youtu.be/pn5myCmpV2U?t=766) 10 | - [00:16:07 Лямбда-выражение (Lambda expression) или функция-стрелка (Arrow function)](https://youtu.be/pn5myCmpV2U?t=967) 11 | - [00:16:43 Лямбда-функция (Lambda function)](https://youtu.be/pn5myCmpV2U?t=1003) 12 | - [00:18:45 Область видимости (Scope)](https://youtu.be/pn5myCmpV2U?t=1125) 13 | - [00:25:00 Функции, как абстракции](https://youtu.be/pn5myCmpV2U?t=1500) 14 | - [00:26:43 Методы функции (name, length, toString( ) )](https://youtu.be/pn5myCmpV2U?t=1603) 15 | - [00:31:26 Значения по умолчанию у функции](https://youtu.be/pn5myCmpV2U?t=1886) 16 | - [00:36:46 Rest-оператор (...args)](https://youtu.be/pn5myCmpV2U?t=2206) 17 | - [00:41:49 Способ определения функции, через new Function](https://youtu.be/pn5myCmpV2U?t=2509) 18 | - [00:44:46 Функции внутри объекта](https://youtu.be/pn5myCmpV2U?t=2686) 19 | - [00:50:42 Обращение к полям объекта из привязанной функции, через this](https://youtu.be/pn5myCmpV2U?t=3042) 20 | - [00:55:24 История синтаксиса создания контекстов, через самовызывающиеся функции ( IIFE)](https://youtu.be/pn5myCmpV2U?t=3324) 21 | - [00:58:30 Методы функции, наследуемой от объекта (call, apply)](https://youtu.be/pn5myCmpV2U?t=3510) 22 | - [01:00:53 Комментирование функций](https://youtu.be/pn5myCmpV2U?t=3653) 23 | - [01:01:27 Задание декомпозиции функции](https://youtu.be/pn5myCmpV2U?t=3687) 24 | - [01:04:24 Замыкание: context](https://youtu.be/pn5myCmpV2U?t=3864) 25 | - [01:08:41 Замыкание: chainning](https://youtu.be/pn5myCmpV2U?t=4121) 26 | - [01:11:55 Замыкание: summator](https://youtu.be/pn5myCmpV2U?t=4315) 27 | - [01:14:16 Замыкание: recursion](https://youtu.be/pn5myCmpV2U?t=4456) 28 | 29 | ## [Частичное применение и каррирование в JavaScript ( Partial application )](https://youtu.be/ND8KQ5xjk7o) 30 | 31 | - [00:00:00 Замыкание](https://youtu.be/ND8KQ5xjk7o?t=0) 32 | - [00:04:54 Лямбда- функция](https://youtu.be/ND8KQ5xjk7o?t=294) 33 | - [00:06:06 Метод bind](https://youtu.be/ND8KQ5xjk7o?t=366) 34 | - [00:08:30 Абстрагированный пример функции](https://youtu.be/ND8KQ5xjk7o?t=510) 35 | - [00:13:42 Абстрагированный пример функции (расширение)](https://youtu.be/ND8KQ5xjk7o?t=822) 36 | - [00:15:47 Неправильная реализация каррирования](https://youtu.be/ND8KQ5xjk7o?t=947) 37 | - [00:22:22 Правильная реализация каррирования](https://youtu.be/ND8KQ5xjk7o?t=1342) 38 | - [00:28:54 Правильная реализация каррирования (расширение)](https://youtu.be/ND8KQ5xjk7o?t=1734) 39 | - [00:31:41 Функциональные абстракции (superposition)](https://youtu.be/ND8KQ5xjk7o?t=1901) 40 | - [00:38:02 Функциональные абстракции, с сохранением выражений (composition)](https://youtu.be/ND8KQ5xjk7o?t=2282) 41 | - [00:45:05 Композиция с 2 функциями](https://youtu.be/ND8KQ5xjk7o?t=2705) 42 | - [00:46:05 Композиция с n - функциями, при помощи метода reduce](https://youtu.be/ND8KQ5xjk7o?t=2765) 43 | - [00:51:25 Композиция с n - функциями, при помощи цикла](https://youtu.be/ND8KQ5xjk7o?t=3085) 44 | - [00:54:29 Композиция с n - функциями, при помощи рекурсии](https://youtu.be/ND8KQ5xjk7o?t=3269) 45 | - [00:57:40 Композиция асинхронных функций](https://youtu.be/ND8KQ5xjk7o?t=3460) 46 | - [01:01:27 Обобщение](https://youtu.be/ND8KQ5xjk7o?t=3687) 47 | 48 | ## [Функции высшего порядка, колбеки, события на JavaScript (HigherOrderFunctions, callbacks, events)](https://youtu.be/1vqATwbGHnc) 49 | 50 | - [00:00:00 Определение](https://youtu.be/1vqATwbGHnc?t=0) 51 | - [00:02:03 Математическая функция](https://youtu.be/1vqATwbGHnc?t=123) 52 | - [00:05:57 Функция обратного вызова (callback)](https://youtu.be/1vqATwbGHnc?t=357) 53 | - [00:09:33 Замыкание](https://youtu.be/1vqATwbGHnc?t=573) 54 | - [00:10:51 Цепочка вызовов](https://youtu.be/1vqATwbGHnc?t=651) 55 | - [00:12:40 Сохранение кэша с помощью замыкания](https://youtu.be/1vqATwbGHnc?t=760) 56 | - [00:18:29 Добавление функции поведение логирования](https://youtu.be/1vqATwbGHnc?t=1109) 57 | - [00:21:45 Обобщение](https://youtu.be/1vqATwbGHnc?t=1305) 58 | - [00:22:45 Сallback](https://youtu.be/1vqATwbGHnc?t=1365) 59 | - [00:25:32 Сallback асинхронной функции считывание файла](https://youtu.be/1vqATwbGHnc?t=1532) 60 | - [00:28:36 Сallback именованный](https://youtu.be/1vqATwbGHnc?t=1716) 61 | - [00:33:01 Сallback-timer](https://youtu.be/1vqATwbGHnc?t=1981) 62 | - [00:36:20 Сallback-timer-curry](https://youtu.be/1vqATwbGHnc?t=2180) 63 | - [00:38:59 Listener](https://youtu.be/1vqATwbGHnc?t=2339) 64 | - [00:41:10 Listener-timer](https://youtu.be/1vqATwbGHnc?t=2470) 65 | - [00:46:59 Event](https://youtu.be/1vqATwbGHnc?t=2819) 66 | - [00:53:45 Event-imitter](https://youtu.be/1vqATwbGHnc?t=3225) 67 | - [00:57:48 Deferred object (отложенный объект)](https://youtu.be/1vqATwbGHnc?t=3468) 68 | - [01:01:31 Errors](https://youtu.be/1vqATwbGHnc?t=3691) 69 | 70 | ## [Примеси, обертки, декораторы, мемоизация в JavaScript (Wrappers)](https://youtu.be/oRQ0kQr1N-U) 71 | 72 | - [00:00:00 Синхронная функция-обертка](https://youtu.be/oRQ0kQr1N-U?t=0) 73 | - [00:02:55 Синхронная универсальная функция-обертка](https://youtu.be/oRQ0kQr1N-U?t=175) 74 | - [00:08:28 Асинхронная универсальная функция-обертка](https://youtu.be/oRQ0kQr1N-U?t=508) 75 | - [00:15:50 Синхронная функция-обертка, которая добавляет поведение (timeout)](https://youtu.be/oRQ0kQr1N-U?t=950) 76 | - [00:22:45 Асинхронная функция-обертка, которая добавляет поведение (timeout)](https://youtu.be/oRQ0kQr1N-U?t=1365) 77 | - [00:25:38 Функция-обертка, которая ограничивает вызов функции до одного вызова (once)](https://youtu.be/oRQ0kQr1N-U?t=1538) 78 | - [00:27:36 Функция-обертка, которая ограничивает вызов функции до n-го вызова (limit)](https://youtu.be/oRQ0kQr1N-U?t=1656) 79 | - [00:29:50 Функция-обертка, которая отменяет вызов функции (cancel)](https://youtu.be/oRQ0kQr1N-U?t=1790) 80 | - [00:32:29 Функция-обертка с методами timeout, limit, cancel](https://youtu.be/oRQ0kQr1N-U?t=1949) 81 | - [00:39:03 Функция-обертка с методами timeout, limit, cancel (оптимизированная)](https://youtu.be/oRQ0kQr1N-U?t=2343) 82 | - [00:42:28 Функция-обертка, которая ограничивает один вызов за 200 мс (throttle)](https://youtu.be/oRQ0kQr1N-U?t=2548) 83 | - [00:45:47 Примесь поля через точку](https://youtu.be/oRQ0kQr1N-U?t=2747) 84 | - [00:51:35 Примесь поля через функцию extend](https://youtu.be/oRQ0kQr1N-U?t=3095) 85 | - [00:57:35 Примесь поля через object.assign( )](https://youtu.be/oRQ0kQr1N-U?t=3455) 86 | - [00:59:18 Примесь поведения](https://youtu.be/oRQ0kQr1N-U?t=3558) 87 | - [01:02:23 Примесь изменения класса](https://youtu.be/oRQ0kQr1N-U?t=3743) 88 | - [01:06:50 Определение](https://youtu.be/oRQ0kQr1N-U?t=4010) 89 | - [01:07:30 Реализация простой мемоизации](https://youtu.be/oRQ0kQr1N-U?t=4050) 90 | - [01:14:43 Реализация простой мемоизации с проверкой скорости](https://youtu.be/oRQ0kQr1N-U?t=4483) 91 | - [01:20:43 Удаление накопленного кэша](https://youtu.be/oRQ0kQr1N-U?t=4843) 92 | - [01:25:35 Асинхронная мемоизация](https://youtu.be/oRQ0kQr1N-U?t=5135) 93 | - [01:31:10 Преобразование аргументов и ключей в hash-функцию](https://youtu.be/oRQ0kQr1N-U?t=5470) 94 | - [01:33:32 Реализация сложной мемоизации](https://youtu.be/oRQ0kQr1N-U?t=5612) 95 | 96 | ## [Чеининг функций и объектов, обработка ошибок в JavaScript](https://youtu.be/PfuEfIiLX34) 97 | 98 | - [00:00:00 Введение](https://youtu.be/PfuEfIiLX34?t=0) 99 | - [00:01:10 Чеининг через синтаксис вызова функций](https://youtu.be/PfuEfIiLX34?t=70) 100 | - [00:02:12 Prototype](https://youtu.be/PfuEfIiLX34?t=132) 101 | - [00:05:45 Сlass](https://youtu.be/PfuEfIiLX34?t=345) 102 | - [00:06:11 Functor](https://youtu.be/PfuEfIiLX34?t=371) 103 | - [00:11:54 Mutable](https://youtu.be/PfuEfIiLX34?t=714) 104 | - [00:16:34 Iterator](https://youtu.be/PfuEfIiLX34?t=994) 105 | - [00:26:18 Promise](https://youtu.be/PfuEfIiLX34?t=1578) 106 | - [00:26:35 Test](https://youtu.be/PfuEfIiLX34?t=1595) 107 | - [00:37:08 Compare](https://youtu.be/PfuEfIiLX34?t=2228) 108 | - [00:39:45 Benchmark](https://youtu.be/PfuEfIiLX34?t=2385) 109 | - [00:40:48 Запуск и анализ тестов](https://youtu.be/PfuEfIiLX34?t=2448) 110 | - [01:03:48 Первый способ возвращение ошибок в синхронном коде](https://youtu.be/PfuEfIiLX34?t=3828) 111 | - [01:09:24 Второй способ возвращение ошибок в синхронном коде](https://youtu.be/PfuEfIiLX34?t=4164) 112 | - [01:12:26 Возвращение ошибок в асинхронном коде](https://youtu.be/PfuEfIiLX34?t=4346) 113 | - [01:16:14 Корректное возвращение ошибок](https://youtu.be/PfuEfIiLX34?t=4574) 114 | - [01:20:03 Обработка ошибок c promise](https://youtu.be/PfuEfIiLX34?t=4803) 115 | - [01:23:58 Обработка ошибок c async-await](https://youtu.be/PfuEfIiLX34?t=5038) 116 | 117 | ## [Функциональное программирование на JavaScript](https://youtu.be/0JxSs_GcvbQ) 118 | 119 | 120 | ## [Функциональные объекты, функторы и монады в JavaScript](https://youtu.be/3Z7f0Gi8pxw) 121 | 122 | - [00:00:00 Определение функтора](https://youtu.be/3Z7f0Gi8pxw?t=0) 123 | - [00:01:40 Функтор из прототипа](https://youtu.be/3Z7f0Gi8pxw?t=100) 124 | - [00:08:17 Функтор из прототипа (упрощенный)](https://youtu.be/3Z7f0Gi8pxw?t=497) 125 | - [00:09:14 Функтор из замыкания](https://youtu.be/3Z7f0Gi8pxw?t=554) 126 | - [00:11:49 Функтор из замыкания с тернарным оператором](https://youtu.be/3Z7f0Gi8pxw?t=709) 127 | - [00:12:44 Аппликативный функтор из прототипа](https://youtu.be/3Z7f0Gi8pxw?t=764) 128 | - [00:18:08 Аппликативный функтор из замыкания (монада)](https://youtu.be/3Z7f0Gi8pxw?t=1088) 129 | - [00:23:11 Пример применения монады](https://youtu.be/3Z7f0Gi8pxw?t=1391) 130 | - [00:28:37 Функциональный объект](https://youtu.be/3Z7f0Gi8pxw?t=1717) 131 | - [00:39:44 Пример применения функционального объекта](https://youtu.be/3Z7f0Gi8pxw?t=2384) 132 | - [00:45:27 Обобщение](https://youtu.be/3Z7f0Gi8pxw?t=2727) 133 | 134 | ## [Отмена асинхронных операций, cancellable callback and Promise в JavaScript](https://youtu.be/T8fXlnqI4Ws) 135 | 136 | 137 | ## [Future: Асинхронность на фьючерах без состояния](https://youtu.be/22ONv3AGXdk) 138 | 139 | 140 | ## [Примеси, обертки, декораторы, мемоизация](https://youtu.be/2h9syXN5wO0) 141 | 142 | - [00:00:00 Синхронная функция-обертка](https://youtu.be/2h9syXN5wO0?t=0) 143 | - [00:02:55 Синхронная универсальная функция-обертка](https://youtu.be/2h9syXN5wO0?t=175) 144 | - [00:08:28 Асинхронная универсальная функция-обертка](https://youtu.be/2h9syXN5wO0?t=508) 145 | - [00:15:50 Синхронная функция-обертка, которая добавляет поведение (timeout)](https://youtu.be/2h9syXN5wO0?t=950) 146 | - [00:22:45 Асинхронная функция-обертка, которая добавляет поведение (timeout)](https://youtu.be/2h9syXN5wO0?t=1365) 147 | - [00:25:38 Функция-обертка, которая ограничивает вызов функции до одного вызова (once)](https://youtu.be/2h9syXN5wO0?t=1538) 148 | - [00:27:36 Функция-обертка, которая ограничивает вызов функции до n-го вызова (limit)](https://youtu.be/2h9syXN5wO0?t=1656) 149 | - [00:29:50 Функция-обертка, которая отменяет вызов функции (cancel)](https://youtu.be/2h9syXN5wO0?t=1790) 150 | - [00:32:29 Функция-обертка с методами timeout, limit, cancel](https://youtu.be/2h9syXN5wO0?t=1949) 151 | - [00:39:03 Функция-обертка с методами timeout, limit, cancel (оптимизированная)](https://youtu.be/2h9syXN5wO0?t=2343) 152 | - [00:42:28 Функция-обертка, которая ограничивает один вызов за 200 мс (throttle)](https://youtu.be/2h9syXN5wO0?t=2548) 153 | - [00:45:47 Примесь поля через точку](https://youtu.be/2h9syXN5wO0?t=2747) 154 | - [00:51:35 Примесь поля через функцию extend](https://youtu.be/2h9syXN5wO0?t=3095) 155 | - [00:57:35 Примесь поля через object.assign( )](https://youtu.be/2h9syXN5wO0?t=3455) 156 | - [00:59:18 Примесь поведения](https://youtu.be/2h9syXN5wO0?t=3558) 157 | - [01:02:23 Примесь изменения класса](https://youtu.be/2h9syXN5wO0?t=3743) 158 | - [01:06:50 Определение](https://youtu.be/2h9syXN5wO0?t=4010) 159 | - [01:07:30 Реализация простой мемоизации](https://youtu.be/2h9syXN5wO0?t=4050) 160 | - [01:14:43 Реализация простой мемоизации с проверкой скорости](https://youtu.be/2h9syXN5wO0?t=4483) 161 | - [01:20:43 Удаление накопленного кэша](https://youtu.be/2h9syXN5wO0?t=4843) 162 | - [01:25:35 Асинхронная мемоизация](https://youtu.be/2h9syXN5wO0?t=5135) 163 | - [01:31:10 Преобразование аргументов и ключей в hash-функцию](https://youtu.be/2h9syXN5wO0?t=5470) 164 | - [01:33:32 Реализация сложной мемоизации](https://youtu.be/2h9syXN5wO0?t=5612) 165 | 166 | ## [Мемоизация функций: memoize в JavaScript](https://youtu.be/H6S8QJo2Qxg) 167 | 168 | 169 | ## [Композиция функций (pipe, compose) в JavaScript](https://youtu.be/xS9FicVrOTI) 170 | -------------------------------------------------------------------------------- /Courses/Functional.md: -------------------------------------------------------------------------------- 1 | # Функциональное программирование 2 | 3 | - [Функции, лямбды, контексты, замыкания в JavaScript](https://youtu.be/pn5myCmpV2U) 4 | - Функции: https://github.com/HowProgrammingWorks/Function 5 | - Замыкания: https://github.com/HowProgrammingWorks/Closure 6 | - [Композиция, каррирование, частичное применение в JavaScript](https://youtu.be/ND8KQ5xjk7o) 7 | - Частичное применение: https://github.com/HowProgrammingWorks/PartialApplication 8 | - Композиция: https://github.com/HowProgrammingWorks/Composition 9 | - [Функции высшего порядка, колбеки, события на JavaScript](https://youtu.be/1vqATwbGHnc) 10 | - Функции высшего порядка: https://github.com/HowProgrammingWorks/HigherOrderFunction 11 | - Функции обратного вызова: https://github.com/HowProgrammingWorks/Callbacks 12 | - [Чеининг функций и объектов, обработка ошибок в JavaScript](https://youtu.be/PfuEfIiLX34) 13 | - Чеининг: https://github.com/HowProgrammingWorks/Chaining 14 | - Обработка ошибок: https://github.com/HowProgrammingWorks/Errors 15 | - [Рекурсия: косвенная и хвостовая, стек, выход](https://youtu.be/W2skCjIgVKE) 16 | - Примеры кода: https://github.com/HowProgrammingWorks/Recursion 17 | - [Функциональное программирование на JavaScript](https://youtu.be/0JxSs_GcvbQ) 18 | - Примеры кода: https://github.com/HowProgrammingWorks/FunctionalProgramming 19 | - [Реактивное программирование на JavaScript](https://youtu.be/7MH8-qQc-48) 20 | - Примеры кода: https://github.com/HowProgrammingWorks/ReactiveProgramming 21 | - [Проекции и отображения наборов данных в JavaScript](https://youtu.be/lwJCq9inky8) 22 | - Примеры кода: https://github.com/HowProgrammingWorks/Projection 23 | - [Функциональные объекты, функторы и монады в JavaScript](https://youtu.be/3Z7f0Gi8pxw) 24 | - Примеры кода: https://github.com/HowProgrammingWorks/Functor 25 | - [Асинхронные функции и обработка ошибок](https://youtu.be/Jdf_tZuJbHI) 26 | - Примеры кода: https://github.com/HowProgrammingWorks/AsyncAwait 27 | - [Линзы в JavaScript - функциональные аналоги геттера и сеттера](https://youtu.be/IBF5gFU6G-o) 28 | - Примеры кода: https://github.com/HowProgrammingWorks/Lenses 29 | - [Асинхронная композиция функций](https://youtu.be/3ZCrMlMpOrM) 30 | - Примеры кода: https://github.com/HowProgrammingWorks/AsyncCompose 31 | - [Принцип подстановки Барбары Лисков](https://youtu.be/RbhYxygxroc) 32 | -------------------------------------------------------------------------------- /Courses/Fundamentals-2023.md: -------------------------------------------------------------------------------- 1 | # Основи програмування 2 | 3 | - Автор: https://github.com/tshemsedinov 4 | - Завдання з курсу: https://github.com/HowProgrammingWorks/Index/blob/master/Practice/SEF1.ru.md 5 | - Словник термінів: https://github.com/HowProgrammingWorks/Dictionary 6 | - Умовні позначення: 7 | - ⭐ - Нові спрощені лекції 8 | - ✨ - Старі але важливі лекції 9 | - 🧑‍💻 - Приклади коду 10 | - 🧩 - Необов'язкові лекції 11 | 12 | ## Перший семестр 13 | 14 | - Введення та огляд метеріалу 15 | - ⭐ [Новий вступ](https://youtu.be/1lU7G46S4FA) 16 | - ⭐ [Q&A для усіх курсів](https://youtu.be/Wm7wclbv1Ik) 17 | - 🧩 [Введення у програмування](https://youtu.be/5Gt61EX6HZ4) 18 | - 🧩 [Введення у програмування, продовження](https://youtu.be/PzlLXQ3RaDs) 19 | - 🧩 [Мови програмування](https://youtu.be/enHA1CRkJe0) 20 | - 🧩 Семінар: [JavaScript, відповіді на запитання](https://youtu.be/wqkQ6eslyzY) 21 | - 🧩 [История развития языков программирования](https://youtu.be/qqz0VSaNxuw) 22 | - 🧩 [Парадигмы программирования](https://youtu.be/Yk1sxLVHfjs) 23 | - ✨ [Базовий синтаксис JavaScript](https://youtu.be/xJn3k1f4BiM) 24 | - ✨ [Базовий синтаксис JavaScript, продовження](https://youtu.be/qa-XleqA0JU) 25 | - 🧩 Семінар: [Базовий синтаксис мови JavaScript](https://youtu.be/PGqjTXQe_qw) 26 | - 🧑‍💻 Абстракції та їх перевикористання: https://github.com/HowProgrammingWorks/Reusable 27 | - 🧑‍💻 Основні конструкції: https://github.com/HowProgrammingWorks/Cheatsheet 28 | - Ідентифікатори та значення 29 | - ⭐ [Ідентифікатори, змінні та константи](https://youtu.be/Ljj8HyUIPUA) 30 | - ⭐ [Літарали, значення та типи даних](https://youtu.be/yf58Lmr_J90) 31 | - 🧑‍💻 Типи даних: https://github.com/HowProgrammingWorks/DataTypes 32 | - Функції 33 | - ⭐ [Функції, блоки та область видимості змінних](https://youtu.be/h5IvZh5QHEM) 34 | - ✨ [Функції, стрілочні функції, контексти, замикання JavaScript](https://youtu.be/pn5myCmpV2U) 35 | - 🧑‍💻 Функції: https://github.com/HowProgrammingWorks/Function 36 | - Умови 37 | - ⭐ [Умови та розгалудження, оператор if](https://youtu.be/dhurClkDGrc) 38 | - 🧑‍💻 Приклади коду: https://github.com/HowProgrammingWorks/Conditional 39 | - Ітерування 40 | - ⭐ [Цикли for, for..of, for..in](https://youtu.be/Ph-luU2sbdg) 41 | - ⭐ [Цикли while, do..while](https://youtu.be/3ZC4O5dM5pY) 42 | - ✨ [Ітерування, цикли та ітератори](https://youtu.be/lq3b5_UGJas) 43 | - 🧑‍💻 Приклади коду: https://github.com/HowProgrammingWorks/Iteration 44 | - Колекції 45 | - ⭐ [Колекції — Array, Object](https://youtu.be/SqGoKGOZu40) 46 | - 🧑‍💻 Масиви: https://github.com/HowProgrammingWorks/Arrays 47 | - ✨ [Масиви, об'єкти, класи, прототипи JavaScript](https://youtu.be/VBMGnAPfmsY) 48 | - ✨ [Массивы в JavaScript, методы Array](https://youtu.be/D1kfYBkX9FE) 49 | - 🧑‍💻 Структури даних: https://github.com/HowProgrammingWorks/DataStructures 50 | - ⭐ [Домішки (mixin), JSON серіалізація (serialization)](https://youtu.be/rMUB78bs26w) 51 | - ⭐ [Множини (Set) та хеш-таблиці (Map)](https://youtu.be/1avvpS_Hqms) 52 | - ✨ [Коллекции, множества, хеш таблицы в JavaScript](https://youtu.be/hN0wsq5LNOc) 53 | - 🧑‍💻 Колекції: https://github.com/HowProgrammingWorks/Collections 54 | - 🧑‍💻 Хеш таблиці: https://github.com/HowProgrammingWorks/Map 55 | - 🧑‍💻 Множини (Set): https://github.com/HowProgrammingWorks/Set 56 | - Практичні завдання 57 | - ⭐ [Нові практичні завдання 1-5](https://youtu.be/4I2iL3JjFdM) 58 | - ✨ [Налаштування середовища: Node.js, npm, git, eslint](https://youtu.be/hSyA7tcNaCE) Дивитись вибірково, що не зрозуміло – пропускайте 59 | - ✨ Старий семінар: [Автоматична перевірка лабораторних робіт](https://youtu.be/M4KpG0LEAyA) 60 | - ✨ Семінар: [Виконання лабораторних робіт з курсу](https://youtu.be/ikUOyFPzdJw) 61 | - 🧑‍💻 Підготовка середовища виконання завдань: [Exercises.ru.md](https://github.com/HowProgrammingWorks/Introduction/blob/master/Exercises.ru.md) 62 | - 🧑‍💻 Завдання: [SEF1.ru.md](https://github.com/HowProgrammingWorks/Index/blob/master/Practice/SEF1.ru.md) 63 | - Callbacks, timers 64 | - ⭐ [Функції зворотнього виклику (callbacks) та таймери](https://youtu.be/MFG3NaEwu70) 65 | - 🧑‍💻 Функції зворотнього виклику: https://github.com/HowProgrammingWorks/Callbacks 66 | - ✨ [Функції вищого порядку, колбеки, події](https://youtu.be/1vqATwbGHnc) 67 | - 🧑‍💻 Функції вищого порядку: https://github.com/HowProgrammingWorks/HigherOrderFunction 68 | - ✨ [Таймеры, таймауты и EventEmitter](https://youtu.be/LK2jveAnRNg) 69 | - 🧑‍💻 Таймери: https://github.com/HowProgrammingWorks/Timers 70 | - 🧑‍💻 EventEmitter: https://github.com/HowProgrammingWorks/EventEmitter 71 | - 🧑‍💻 Події: https://github.com/metarhia/common/blob/master/lib/events.js 72 | - Замикання (closures) 73 | - ⭐ [Замикання closures, (функції + контексти)](https://youtu.be/_FranqU7420) 74 | - ✨ [Функції, стрілочні функції, контексти, замикання JavaScript](https://youtu.be/pn5myCmpV2U) 75 | - 🧑‍💻 Замикання (closures): https://github.com/HowProgrammingWorks/Closure 76 | - 🧩 [Часткове застосування та curry](https://youtu.be/ND8KQ5xjk7o) 77 | - 🧑‍💻 Часткове застосування: https://github.com/HowProgrammingWorks/PartialApplication 78 | - Асинхронність 79 | - ⭐ [Асинхронні функції, async, await](https://youtu.be/_3rRFN3iwsg) 80 | - Обробка помилок 81 | - ⭐ [Помилки (Error), та обробка exception](https://youtu.be/UmpMa-f7dM4) 82 | - Модульність 83 | - ⭐ [Системи модульності ESM (ECMAScript) та CJS (CommonJS)](https://youtu.be/MQepk3r41Rc) 84 | - ⭐ [Декомпозиція програми на модулі](https://youtu.be/4SLMmET8ARM) 85 | - Рекурсія 86 | - ⭐ [Рекурсія, вихід з рекурсії та stack trace](https://youtu.be/bRgUmZgmXAg) 87 | - ✨ [Рекурсія: непряма та хвостова, стек, вихід](https://youtu.be/W2skCjIgVKE) 88 | - 🧑‍💻 Рекурсія: https://github.com/HowProgrammingWorks/Recursion 89 | - ✨ [Робота з рядками, шаблонами та юнікодом](https://youtu.be/GcopcHQkA8M) 90 | - 🧑‍💻 Приклади коду: https://github.com/HowProgrammingWorks/String 91 | - ✨ [Антипатерни загальні для всіх парадигм](https://youtu.be/NMUsUiFokr4) 92 | - 🧑‍💻 Приклади коду: https://github.com/HowProgrammingWorks/Antipatterns/tree/master/JavaScript/01-Common 93 | - ✨ [Консоль та командний рядок у JavaScript та Node.js](https://youtu.be/5aSZyKi5BmE) 94 | - 🧑‍💻 Приклади коду: https://github.com/HowProgrammingWorks/CommandLine 95 | - 🧩 [Чеининг функций и объектов, обработка ошибок](https://youtu.be/PfuEfIiLX34) 96 | - 🧑‍💻 Чеінінг: https://github.com/HowProgrammingWorks/Chaining 97 | - 🧑‍💻 Обробка помилок: https://github.com/HowProgrammingWorks/Errors 98 | - ✨ [Антипатерни процедурного програмування](https://youtu.be/cTv7V22mkwE) 99 | - 🧑‍💻 Приклади коду: https://github.com/HowProgrammingWorks/Antipatterns/tree/master/JavaScript/02-Procedural 100 | - ✨ [Code Review: как это и зачем](https://youtu.be/EKL6NiIQ6ZU) 101 | - 🧑‍💻 Приклади коду: https://github.com/HowProgrammingWorks/CodeReview 102 | - Семинар: [Code Review, ответы на вопросы](https://youtu.be/AgH4OAKbmkM) 103 | - ✨ [Структури даних: списки, стек, черга, дек](https://youtu.be/9KvA4hDDSjk) 104 | - 🧑‍💻 Списки: https://github.com/HowProgrammingWorks/LinkedList 105 | - 🧑‍💻 Черги: https://github.com/HowProgrammingWorks/Dequeue 106 | - ✨ [Сериализация и десериализация в JavaScript и Node.js](https://youtu.be/GtKPniOEzh8) 107 | - 🧑‍💻 Приклади коду: https://github.com/HowProgrammingWorks/Serialization 108 | - ✨ [Рефакторинг: причины, цели, техники и процесс](https://youtu.be/z73wmpdweQ4) 109 | - 🧑‍💻 Приклади коду: https://github.com/HowProgrammingWorks/Refactoring 110 | - 🧑‍💻 Пример проекта: https://github.com/tshemsedinov/node-mysql-utilities 111 | - 🧩 Семінар: [Вибір напряму у програмуванні](https://youtu.be/1gL627DQF4A) 112 | - 🧩 [Proxy та Symbol](https://youtu.be/UjZjSDyi9AM) 113 | - 🧑‍💻 Проксі: https://github.com/HowProgrammingWorks/Proxy 114 | - 🧑‍💻 Символи: https://github.com/HowProgrammingWorks/Symbol 115 | - ✨ [Регулярні вирази та парсинг у JavaScript](https://youtu.be/-ef2E0ozxao) 116 | - 🧑‍💻 Примеры кода: https://github.com/HowProgrammingWorks/RegExp 117 | - ✨ [Композиція: pipe, compose](https://youtu.be/xS9FicVrOTI) 118 | - 🧑‍💻 Приклади коду: https://github.com/HowProgrammingWorks/Composition 119 | - ✨ [Домішки: mixin, extend, Object.assign, class-mixin](https://youtu.be/NZMrJ2adEyY) 120 | - 🧑‍💻 Приклади коду: https://github.com/HowProgrammingWorks/Mixin 121 | - 🧩 Стара версія лекцій: https://youtu.be/2h9syXN5wO0 122 | - 🧩 [Прототипне програмування та прототипне успадкування](https://youtu.be/SzaXTW2qcJE) 123 | - 🧑‍💻 Приклади коду: https://github.com/HowProgrammingWorks/PrototypeChain 124 | - ✨ Прототипи: https://github.com/HowProgrammingWorks/Prototype 125 | - 🧩 [Мемоізація: memoize](https://youtu.be/H6S8QJo2Qxg) 126 | - 🧑‍💻 Приклади коду: https://github.com/HowProgrammingWorks/Memoization 127 | - 🧑‍💻 Стара версія лекцій: https://youtu.be/2h9syXN5wO0 128 | - 🧩 [Фабрики та пули об'єктів у JavaScript, factorify, poolify](https://youtu.be/Ax_mSvadFp8) 129 | - 🧑‍💻 Фабрики: https://github.com/HowProgrammingWorks/Factory 130 | - 🧑‍💻 Пули об'єктів: https://github.com/HowProgrammingWorks/Pool 131 | - 🧩 [Функції-обгортки: wrappers](https://youtu.be/En7pWi2fSzs) 132 | - 🧑‍💻 Приклади коду: https://github.com/HowProgrammingWorks/Wrapper 133 | - 🧩 Стара версія лекцій: https://youtu.be/2h9syXN5wO0 134 | - 🧩 [Типізовані масиви JavaScript](https://youtu.be/tTNcqxbxhfY) 135 | - 🧑‍💻 Приклади коду: https://github.com/HowProgrammingWorks/TypedArrays 136 | - 🧩 [Нове у JavaScript](https://youtu.be/fUjHLj8bq_Y) 137 | - 🧑‍💻 Приклади коду: https://github.com/HowProgrammingWorks/ESNext 138 | -------------------------------------------------------------------------------- /Courses/Fundamentals-2024.md: -------------------------------------------------------------------------------- 1 | # Основи програмування 2 | 3 | - Автор: https://github.com/tshemsedinov 4 | - [Практичні завдання](https://github.com/HowProgrammingWorks/Index/blob/master/Courses/Fundamentals-2024.md#практичні-завдання) 5 | - Словник термінів: готується для публікації 6 | - Умовні позначення: 7 | - ⭐ - Нові спрощені лекції 8 | - ✨ - Старі але важливі лекції 9 | - 🧑‍💻 - Приклади коду 10 | - 🧩 - Необов'язкові лекції 11 | 12 | ## Перший семестр 13 | 14 | - Введення та огляд метеріалу 15 | - ⭐ Новий вступ курсу 2024 (готується) 16 | - ⭐ [Вступ курсу 2023](https://youtu.be/1lU7G46S4FA) 17 | - ⭐ [Базовий JavaScript українською (8 годин)](https://youtu.be/FlXsGI7rzWE) 18 | - ⭐ [Скорочений переклад базового JavaScrtipt руською (4 години)](https://youtu.be/HetL0ETbN6Y) 19 | - ⭐ [Q&A для усіх курсів](https://youtu.be/Wm7wclbv1Ik) 20 | - 🧩 [Введення у програмування](https://youtu.be/5Gt61EX6HZ4) 21 | - 🧩 [Введення у програмування, продовження](https://youtu.be/PzlLXQ3RaDs) 22 | - 🧩 [Мови програмування](https://youtu.be/enHA1CRkJe0) 23 | - 🧩 Семінар: [JavaScript, відповіді на запитання](https://youtu.be/wqkQ6eslyzY) 24 | - 🧩 [Історія розвитку мов програмування](https://youtu.be/qqz0VSaNxuw) 25 | - 🧩 [Парадигми програмування](https://youtu.be/Yk1sxLVHfjs) 26 | - ✨ [Базовий синтаксис JavaScript](https://youtu.be/xJn3k1f4BiM) 27 | - ✨ [Базовий синтаксис JavaScript, продовження](https://youtu.be/qa-XleqA0JU) 28 | - 🧩 Семінар: [Базовий синтаксис мови JavaScript](https://youtu.be/PGqjTXQe_qw) 29 | - 🧑‍💻 Абстракції та їх перевикористання: https://github.com/HowProgrammingWorks/Reusable 30 | - 🧑‍💻 Основні конструкції: https://github.com/HowProgrammingWorks/Cheatsheet 31 | - Ідентифікатори та значення 32 | - ⭐ [Ідентифікатори, змінні та константи](https://youtu.be/Ljj8HyUIPUA) 33 | - ⭐ [Літарали, значення та типи даних](https://youtu.be/yf58Lmr_J90) 34 | - 🧑‍💻 Типи даних: https://github.com/HowProgrammingWorks/DataTypes 35 | - Функції 36 | - ⭐ [Функції, блоки та область видимості змінних](https://youtu.be/h5IvZh5QHEM) 37 | - ✨ [Функції, стрілочні функції, контексти, замикання JavaScript](https://youtu.be/pn5myCmpV2U) 38 | - 🧑‍💻 Функції: https://github.com/HowProgrammingWorks/Function 39 | - Умови 40 | - ⭐ [Умови та розгалудження, оператор if](https://youtu.be/dhurClkDGrc) 41 | - 🧑‍💻 Приклади коду: https://github.com/HowProgrammingWorks/Conditional 42 | - Ітерування 43 | - ⭐ [Цикли for, for..of, for..in](https://youtu.be/Ph-luU2sbdg) 44 | - ⭐ [Цикли while, do..while](https://youtu.be/3ZC4O5dM5pY) 45 | - ✨ [Ітерування, цикли та ітератори](https://youtu.be/lq3b5_UGJas) 46 | - 🧑‍💻 Приклади коду: https://github.com/HowProgrammingWorks/Iteration 47 | - Колекції 48 | - ⭐ [Колекції — Array, Object](https://youtu.be/SqGoKGOZu40) 49 | - 🧑‍💻 Масиви: https://github.com/HowProgrammingWorks/Arrays 50 | - ✨ [Масиви, об'єкти, класи, прототипи JavaScript](https://youtu.be/VBMGnAPfmsY) 51 | - ✨ [Масиви у JavaScript, методи Array](https://youtu.be/D1kfYBkX9FE) 52 | - 🧑‍💻 Структури даних: https://github.com/HowProgrammingWorks/DataStructures 53 | - ⭐ [Домішки (mixin), JSON серіалізація (serialization)](https://youtu.be/rMUB78bs26w) 54 | - ⭐ [Множини (Set) та хеш-таблиці (Map)](https://youtu.be/1avvpS_Hqms) 55 | - ✨ [Коллекції, множини, хеш таблиці у JavaScript](https://youtu.be/hN0wsq5LNOc) 56 | - 🧑‍💻 Колекції: https://github.com/HowProgrammingWorks/Collections 57 | - 🧑‍💻 Хеш таблиці: https://github.com/HowProgrammingWorks/Map 58 | - 🧑‍💻 Множини (Set): https://github.com/HowProgrammingWorks/Set 59 | - Практичні завдання 60 | - ⭐ [Нові практичні завдання 1-5](https://youtu.be/4I2iL3JjFdM) 61 | - ✨ [Налаштування середовища: Node.js, npm, git, eslint](https://youtu.be/hSyA7tcNaCE) Дивитись вибірково, що не зрозуміло – пропускайте 62 | - ✨ Старий семінар: [Автоматична перевірка лабораторних робіт](https://youtu.be/M4KpG0LEAyA) 63 | - ✨ Семінар: [Виконання лабораторних робіт з курсу](https://youtu.be/ikUOyFPzdJw) 64 | - 🧑‍💻 Підготовка середовища виконання завдань: [Exercises.ru.md](https://github.com/HowProgrammingWorks/Introduction/blob/master/Exercises.ru.md) 65 | - 🧑‍💻 [Практичні завдання](https://github.com/HowProgrammingWorks/Index/blob/master/Courses/Fundamentals-2024.md#практичні-завдання) 66 | - Callbacks, timers 67 | - ⭐ [Функції зворотнього виклику (callbacks) та таймери](https://youtu.be/MFG3NaEwu70) 68 | - 🧑‍💻 Функції зворотнього виклику: https://github.com/HowProgrammingWorks/Callbacks 69 | - ✨ [Функції вищого порядку, колбеки, події](https://youtu.be/1vqATwbGHnc) 70 | - 🧑‍💻 Функції вищого порядку: https://github.com/HowProgrammingWorks/HigherOrderFunction 71 | - ✨ [Таймери, таймаути та EventEmitter](https://youtu.be/LK2jveAnRNg) 72 | - 🧑‍💻 Таймери: https://github.com/HowProgrammingWorks/Timers 73 | - 🧑‍💻 EventEmitter: https://github.com/HowProgrammingWorks/EventEmitter 74 | - 🧑‍💻 Події: https://github.com/metarhia/common/blob/master/lib/events.js 75 | - Замикання (closures) 76 | - ⭐ [Замикання closures, (функції + контексти)](https://youtu.be/_FranqU7420) 77 | - ✨ [Функції, стрілочні функції, контексти, замикання JavaScript](https://youtu.be/pn5myCmpV2U) 78 | - 🧑‍💻 Замикання (closures): https://github.com/HowProgrammingWorks/Closure 79 | - 🧩 [Часткове застосування та curry](https://youtu.be/ND8KQ5xjk7o) 80 | - 🧑‍💻 Часткове застосування: https://github.com/HowProgrammingWorks/PartialApplication 81 | - Асинхронність 82 | - ⭐ [Асинхронні функції, async, await](https://youtu.be/_3rRFN3iwsg) 83 | - Обробка помилок 84 | - ⭐ [Помилки (Error), та обробка exception](https://youtu.be/UmpMa-f7dM4) 85 | - Модульність 86 | - ⭐ [Системи модульності ESM (ECMAScript) та CJS (CommonJS)](https://youtu.be/MQepk3r41Rc) 87 | - ⭐ [Декомпозиція програми на модулі](https://youtu.be/4SLMmET8ARM) 88 | - Рекурсія 89 | - ⭐ [Рекурсія, вихід з рекурсії та stack trace](https://youtu.be/bRgUmZgmXAg) 90 | - ✨ [Рекурсія: непряма та хвостова, стек, вихід](https://youtu.be/W2skCjIgVKE) 91 | - 🧑‍💻 Рекурсія: https://github.com/HowProgrammingWorks/Recursion 92 | - ✨ [Робота з рядками, шаблонами та юнікодом](https://youtu.be/GcopcHQkA8M) 93 | - 🧑‍💻 Приклади коду: https://github.com/HowProgrammingWorks/String 94 | - ✨ [Антипатерни загальні для всіх парадигм](https://youtu.be/NMUsUiFokr4) 95 | - 🧑‍💻 Приклади коду: https://github.com/HowProgrammingWorks/Antipatterns/tree/master/JavaScript/01-Common 96 | - ✨ [Консоль та командний рядок у JavaScript та Node.js](https://youtu.be/5aSZyKi5BmE) 97 | - 🧑‍💻 Приклади коду: https://github.com/HowProgrammingWorks/CommandLine 98 | - 🧩 [Чеінінг функцій та об'єктів, обробка помилок](https://youtu.be/PfuEfIiLX34) 99 | - 🧑‍💻 Чеінінг: https://github.com/HowProgrammingWorks/Chaining 100 | - 🧑‍💻 Обробка помилок: https://github.com/HowProgrammingWorks/Errors 101 | - ✨ [Антипатерни процедурного програмування](https://youtu.be/cTv7V22mkwE) 102 | - 🧑‍💻 Приклади коду: https://github.com/HowProgrammingWorks/Antipatterns/tree/master/JavaScript/02-Procedural 103 | - ✨ [Code Review: як це і навіщо](https://youtu.be/EKL6NiIQ6ZU) 104 | - 🧑‍💻 Приклади коду: https://github.com/HowProgrammingWorks/CodeReview 105 | - Семінар: [Code Review, відповіді та питання](https://youtu.be/AgH4OAKbmkM) 106 | - ✨ [Структури даних: списки, стек, черга, дек](https://youtu.be/9KvA4hDDSjk) 107 | - 🧑‍💻 Списки: https://github.com/HowProgrammingWorks/LinkedList 108 | - 🧑‍💻 Черги: https://github.com/HowProgrammingWorks/Dequeue 109 | - ✨ [Сериализация и десериализация в JavaScript и Node.js](https://youtu.be/GtKPniOEzh8) 110 | - 🧑‍💻 Приклади коду: https://github.com/HowProgrammingWorks/Serialization 111 | - ✨ [Рефакторінг: причини, цілі, техніки та процес](https://youtu.be/z73wmpdweQ4) 112 | - 🧑‍💻 Приклади коду: https://github.com/HowProgrammingWorks/Refactoring 113 | - 🧑‍💻 Приклад проекту: https://github.com/tshemsedinov/node-mysql-utilities 114 | - 🧩 Семінар: [Вибір напряму у програмуванні](https://youtu.be/1gL627DQF4A) 115 | - 🧩 [Proxy та Symbol](https://youtu.be/UjZjSDyi9AM) 116 | - 🧑‍💻 Проксі: https://github.com/HowProgrammingWorks/Proxy 117 | - 🧑‍💻 Символи: https://github.com/HowProgrammingWorks/Symbol 118 | - ✨ [Регулярні вирази та парсинг у JavaScript](https://youtu.be/-ef2E0ozxao) 119 | - 🧑‍💻 Приклади коду: https://github.com/HowProgrammingWorks/RegExp 120 | - ✨ [Композиція: pipe, compose](https://youtu.be/xS9FicVrOTI) 121 | - 🧑‍💻 Приклади коду: https://github.com/HowProgrammingWorks/Composition 122 | - ✨ [Домішки: mixin, extend, Object.assign, class-mixin](https://youtu.be/NZMrJ2adEyY) 123 | - 🧑‍💻 Приклади коду: https://github.com/HowProgrammingWorks/Mixin 124 | - 🧩 Стара версія лекцій: https://youtu.be/2h9syXN5wO0 125 | - 🧩 [Прототипне програмування та прототипне успадкування](https://youtu.be/SzaXTW2qcJE) 126 | - 🧑‍💻 Приклади коду: https://github.com/HowProgrammingWorks/PrototypeChain 127 | - ✨ Прототипи: https://github.com/HowProgrammingWorks/Prototype 128 | - 🧩 [Мемоізація: memoize](https://youtu.be/H6S8QJo2Qxg) 129 | - 🧑‍💻 Приклади коду: https://github.com/HowProgrammingWorks/Memoization 130 | - 🧑‍💻 Стара версія лекцій: https://youtu.be/2h9syXN5wO0 131 | - 🧩 [Фабрики та пули об'єктів у JavaScript, factorify, poolify](https://youtu.be/Ax_mSvadFp8) 132 | - 🧑‍💻 Фабрики: https://github.com/HowProgrammingWorks/Factory 133 | - 🧑‍💻 Пули об'єктів: https://github.com/HowProgrammingWorks/Pool 134 | - 🧩 [Функції-обгортки: wrappers](https://youtu.be/En7pWi2fSzs) 135 | - 🧑‍💻 Приклади коду: https://github.com/HowProgrammingWorks/Wrapper 136 | - 🧩 Стара версія лекцій: https://youtu.be/2h9syXN5wO0 137 | - 🧩 [Типізовані масиви JavaScript](https://youtu.be/tTNcqxbxhfY) 138 | - 🧑‍💻 Приклади коду: https://github.com/HowProgrammingWorks/TypedArrays 139 | - 🧩 [Нове у JavaScript](https://youtu.be/fUjHLj8bq_Y) 140 | - 🧑‍💻 Приклади коду: https://github.com/HowProgrammingWorks/ESNext 141 | 142 | ## Практичні завдання 143 | 144 | Запис семінарів про виконання та перевірку лабораторних робіт: 145 | - [Семінар: автоматична перевірка лабораторних робіт](https://youtu.be/M4KpG0LEAyA) 146 | - [Семінар: виконання лабораторних робіт з курсу "Основи програмування"](https://youtu.be/ikUOyFPzdJw) 147 | 148 | Репозитории с задачами: 149 | 150 | 0. [Налаштування середовища](https://github.com/HowProgrammingWorks/Introduction) 151 | 1. [Змінні та типи даних](https://github.com/HowProgrammingWorks/DataTypes) 152 | 2. [Базовий синтаксис JavaScript](https://github.com/HowProgrammingWorks/Reusable) 153 | 3. [Функції та методи](https://github.com/HowProgrammingWorks/Function) 154 | 4. [Цикли та ітерування](https://github.com/HowProgrammingWorks/Iteration) 155 | 5. [Closures та чеїнінг](https://github.com/HowProgrammingWorks/Closure) 156 | 6. [Композиція функцій](https://github.com/HowProgrammingWorks/Composition) 157 | 7. [Робота з масивами](https://github.com/HowProgrammingWorks/Arrays) 158 | 8. [Функції вищого порядку](https://github.com/HowProgrammingWorks/HigherOrderFunction) 159 | -------------------------------------------------------------------------------- /Courses/Fundamentals.md: -------------------------------------------------------------------------------- 1 | # Основы программирования 2 | 3 | Модули [SEF1](#%D0%BC%D0%BE%D0%B4%D1%83%D0%BB%D1%8C-sef1) и [SEF2](#%D0%BC%D0%BE%D0%B4%D1%83%D0%BB%D1%8C-sef2) 4 | 5 | [Для части лекций есть таймкоды и подробное оглавление](Fundamentals-timecodes.md) 6 | 7 | ## Ссылки 8 | 9 | - Автор: https://github.com/tshemsedinov 10 | - Канал в телеграме: https://t.me/HowProgrammingWorks 11 | - Группа (чат): https://t.me/Programming_IP9X 12 | - Задачи по курсу: https://github.com/HowProgrammingWorks/Index/blob/master/Practice/SEF1.ru.md 13 | - Словарь терминов: https://github.com/HowProgrammingWorks/Dictionary 14 | 15 | ## Модуль SEF1 16 | 17 | Объем материала: 36 лекций (из них 4 вводные лекции, 8 лекций по языку JS, 18 | 18 лекций по фундаментальным понятиям теории программирования, 6 лекций по 19 | инструментам и процессу разработки), 8 семинаров, 9 лабораторных работ, 20 | 47 репозиториев с примерами кода. 21 | 22 | - [Введение в программирование](https://youtu.be/5Gt61EX6HZ4) 23 | - Абстракция, модель, алгоритм, программа, синтаксис, повторное использование 24 | - Значение, идентификатор, переменная и константа, литерал, присвоение 25 | - Типы данных, скалярные, ссылочные и структурные типы 26 | - Оператор и выражение, блок кода, функция, цикл, условие 27 | - Слайды: https://www.slideshare.net/tshemsedinov/1-168855278 28 | - [Введение в программирование, продолжение](https://youtu.be/PzlLXQ3RaDs) 29 | - Процедуры и функции, стек и куча, коллекции, модули, компоненты, библиотеки 30 | - Языки и парадигмы программирования, технологические стеки 31 | - Среда разработки и отладка кода 32 | - Семинар: [Обсуждение плана и материалов курса](https://youtu.be/bQMTbRWrteU) 33 | - [Настройка среды: Node.js, npm, git, eslint](https://youtu.be/hSyA7tcNaCE) 34 | - Смотреть выборочно, что не понятно - пропускайте 35 | - Задания: [Exercises.ru.md](https://github.com/HowProgrammingWorks/Introduction/blob/master/Exercises.ru.md) 36 | - [Базовый синтаксис JavaScript](https://youtu.be/xJn3k1f4BiM) 37 | - Абстракции и их переиспользование: https://github.com/HowProgrammingWorks/Reusable 38 | - Основные конструкции: https://github.com/HowProgrammingWorks/Cheatsheet 39 | - Типы данных: https://github.com/HowProgrammingWorks/DataTypes 40 | - [Базовый синтаксис JavaScript, продолжение](https://youtu.be/qa-XleqA0JU) 41 | - Типы данных: https://github.com/HowProgrammingWorks/DataTypes 42 | - Условия: https://github.com/HowProgrammingWorks/Conditional 43 | - Семинар: [Базовый синтаксис языка JavaScript](https://youtu.be/PGqjTXQe_qw) 44 | - Семинар: [Автоматическая проверка лабораторных работ](https://youtu.be/M4KpG0LEAyA) 45 | - [Функции, стрелочные функции, контексты, замыкания в JavaScript](https://youtu.be/pn5myCmpV2U) 46 | - Функции: https://github.com/HowProgrammingWorks/Function 47 | - Замыкания: https://github.com/HowProgrammingWorks/Closure 48 | - [Массивы, объекты, классы, прототипы в JavaScript](https://youtu.be/VBMGnAPfmsY) 49 | - Структуры данных: https://github.com/HowProgrammingWorks/DataStructures 50 | - Итерирование: https://github.com/HowProgrammingWorks/Iteration 51 | - Прототипы: https://github.com/HowProgrammingWorks/Prototype 52 | - [Языки программирования](https://youtu.be/enHA1CRkJe0) 53 | - Семинар: [JavaScript, ответы на вопросы](https://youtu.be/wqkQ6eslyzY) 54 | - [Частичное применение и каррирование в JavaScript](https://youtu.be/ND8KQ5xjk7o) 55 | - Примеры кода: https://github.com/HowProgrammingWorks/PartialApplication 56 | - [Функции высшего порядка, колбеки, события на JavaScript](https://youtu.be/1vqATwbGHnc) 57 | - Функции высшего порядка: https://github.com/HowProgrammingWorks/HigherOrderFunction 58 | - Функции обратного вызова: https://github.com/HowProgrammingWorks/Callbacks 59 | - [История развития языков программирования](https://youtu.be/qqz0VSaNxuw) 60 | - Слайды: https://www.slideshare.net/tshemsedinov/programming-languages-comparison-history-future 61 | - [Парадигмы программирования](https://youtu.be/Yk1sxLVHfjs) 62 | - [Работа со строками, шаблонами и юникодом в JavaScript](https://youtu.be/GcopcHQkA8M) 63 | - Примеры кода: https://github.com/HowProgrammingWorks/String 64 | - [Антипаттерны общие для всех парадигм](https://youtu.be/NMUsUiFokr4) 65 | - Примеры кода: https://github.com/HowProgrammingWorks/Antipatterns/tree/master/JavaScript/01-Common 66 | - [Консоль и командная строка в JavaScript и Node.js](https://youtu.be/5aSZyKi5BmE) 67 | - Примеры кода: https://github.com/HowProgrammingWorks/CommandLine 68 | - [Чеининг функций и объектов, обработка ошибок в JavaScript](https://youtu.be/PfuEfIiLX34) 69 | - Чеининг: https://github.com/HowProgrammingWorks/Chaining 70 | - Обработка ошибок: https://github.com/HowProgrammingWorks/Errors 71 | - [Рекурсия: косвенная и хвостовая, стек, выход](https://youtu.be/W2skCjIgVKE) 72 | - Примеры кода: https://github.com/HowProgrammingWorks/Recursion 73 | - [Итерирование, циклы и итераторы в JavaScript](https://youtu.be/lq3b5_UGJas) 74 | - Примеры кода: https://github.com/HowProgrammingWorks/Iteration 75 | - [Антипаттерны процедурного программирования](https://youtu.be/cTv7V22mkwE) 76 | - Примеры кода: https://github.com/HowProgrammingWorks/Antipatterns/tree/master/JavaScript/02-Procedural 77 | - Семинар: [Ответы на вопросы по курсу "Основы программирования"](https://youtu.be/TY6nDW7aYys) 78 | - [Таймеры, таймауты и EventEmitter](https://youtu.be/LK2jveAnRNg) 79 | - Таймеры: https://github.com/HowProgrammingWorks/Timers 80 | - EventEmitter: https://github.com/HowProgrammingWorks/EventEmitter 81 | - События: https://github.com/metarhia/common/blob/master/lib/events.js 82 | - Семинар: [Выполнение лабораторных работ по курсу](https://youtu.be/ikUOyFPzdJw) 83 | - [Массивы в JavaScript: методы Array](https://youtu.be/D1kfYBkX9FE) 84 | - Примеры кода: https://github.com/HowProgrammingWorks/Arrays 85 | - [Коллекции, множества, хеш таблицы в JavaScript](https://youtu.be/hN0wsq5LNOc) 86 | - Коллекции: https://github.com/HowProgrammingWorks/Collections 87 | - Хеш таблицы: https://github.com/HowProgrammingWorks/Map 88 | - Множества: https://github.com/HowProgrammingWorks/Set 89 | - [Code Review: как это и зачем](https://youtu.be/EKL6NiIQ6ZU) 90 | - Примеры: https://github.com/HowProgrammingWorks/CodeReview 91 | - Семинар: [Code Review, ответы на вопросы](https://youtu.be/AgH4OAKbmkM) 92 | - [Структуры данных: списки, стек, очередь, дэк в JavaScript](https://youtu.be/9KvA4hDDSjk) 93 | - Списки: https://github.com/HowProgrammingWorks/LinkedList 94 | - Очереди: https://github.com/HowProgrammingWorks/Dequeue 95 | - [Сериализация и десериализация в JavaScript и Node.js](https://youtu.be/GtKPniOEzh8) 96 | - Примеры кода: https://github.com/HowProgrammingWorks/Serialization 97 | - [Рефакторинг: причины, цели, техники и процесс](https://youtu.be/z73wmpdweQ4) 98 | - Примеры кода: https://github.com/HowProgrammingWorks/Refactoring 99 | - Пример проекта: https://github.com/tshemsedinov/node-mysql-utilities 100 | - Семинар: [Выбор направления в программировании](https://youtu.be/1gL627DQF4A) 101 | - [Proxy и Symbol в JavaScript](https://youtu.be/UjZjSDyi9AM) 102 | - Прокси: https://github.com/HowProgrammingWorks/Proxy 103 | - Символы: https://github.com/HowProgrammingWorks/Symbol 104 | - [Регулярные выражения и парсинг в JavaScript](https://youtu.be/-ef2E0ozxao) 105 | - Примеры кода: https://github.com/HowProgrammingWorks/RegExp 106 | - [Композиция: pipe, compose](https://youtu.be/xS9FicVrOTI) 107 | - Примеры кода: https://github.com/HowProgrammingWorks/Composition 108 | - [Примеси: mixin, extend, Object.assign, class-mixin](https://youtu.be/NZMrJ2adEyY) 109 | - Тема class-mixin из этой лекции не обязательна для модуля SEF1 110 | - Примеры кода: https://github.com/HowProgrammingWorks/Mixin 111 | - Старая версия лекции: https://youtu.be/2h9syXN5wO0 112 | - [Прототипное программирование и прототипное наследование](https://youtu.be/SzaXTW2qcJE) 113 | - Примеры кода: https://github.com/HowProgrammingWorks/PrototypeChain 114 | - Слайды: https://www.slideshare.net/tshemsedinov/prototype-programming-in-javascript 115 | - [Мемоизация: memoize](https://youtu.be/H6S8QJo2Qxg) 116 | - Примеры кода: https://github.com/HowProgrammingWorks/Memoization 117 | - Старая версия лекции: https://youtu.be/2h9syXN5wO0 118 | - [Фабрики и пулы объектов в JavaScript, factorify, poolify](https://youtu.be/Ax_mSvadFp8) 119 | - Фабрики: https://github.com/HowProgrammingWorks/Factory 120 | - Пулы объектов: https://github.com/HowProgrammingWorks/Pool 121 | - [Функции-обертки: wrappers](https://youtu.be/En7pWi2fSzs) 122 | - Примеры кода: https://github.com/HowProgrammingWorks/Wrapper 123 | - Старая версия лекции: https://youtu.be/2h9syXN5wO0 124 | - [Типизированные массивы в JavaScript](https://youtu.be/tTNcqxbxhfY) 125 | - Примеры кода: https://github.com/HowProgrammingWorks/TypedArrays 126 | - [Новое в JavaScript](https://youtu.be/fUjHLj8bq_Y) 127 | - Не все в темы обязательны для модуля SEF1, что поймете, то и хорошо 128 | - Слайды: https://www.slideshare.net/tshemsedinov/javascript-esnext-ecmascript-2020-es11-es10-es9-es8-es7-es6-es2020-es2019 129 | - Примеры кода: https://github.com/HowProgrammingWorks/ESNext 130 | 131 | ## Модуль SEF2 132 | 133 | - [Объектно-ориентированное программирование](https://youtu.be/r4ReQlVtfgQ) 134 | - [Структуры (struct) или записи (record)](https://youtu.be/Wb7o_kK4aH4) 135 | - [Карта специальности инженер-программист](https://youtu.be/SE5aXH-yf0I) 136 | - [Подход к изучению программирования](https://youtu.be/zMU4ir10DMg) 137 | - Списки: односвязные, двусвязные, циклические, развернутые 138 | - [Графы и запросы к графовым структурам данных](https://youtu.be/a0W0T8Yqw3s) 139 | - Примеры кода: https://github.com/HowProgrammingWorks/Graph 140 | - [Проекции и отображения наборов данных в JavaScript](https://youtu.be/lwJCq9inky8) 141 | - Примеры кода: https://github.com/HowProgrammingWorks/Projection 142 | - [Мономорфный и полиморфный код, инлайн-кэш, скрытые классы](https://youtu.be/9JUY3prnCQ4) 143 | - Примеры кода: https://github.com/HowProgrammingWorks/Monomorphism 144 | - [Функциональное программирование](https://youtu.be/0JxSs_GcvbQ) 145 | - Смотрите обзорно, это не обязательная лекция, попробуйте уловить суть парадигмы 146 | - Примеры кода: https://github.com/HowProgrammingWorks/FunctionalProgramming 147 | - [Реактивное программирование](https://youtu.be/7MH8-qQc-48) 148 | - Примеры кода: https://github.com/HowProgrammingWorks/ReactiveProgramming 149 | - Оценка сложности алгоритмов 150 | - [Измерение производительности кода и оптимизация](https://youtu.be/sanq2X7Re8o) 151 | - Примеры кода: https://github.com/HowProgrammingWorks/Benchmark 152 | - [Асинхронное программирование на callback`ах](https://youtu.be/z8Hg6zgi3yQ) 153 | - Примеры кода: https://github.com/HowProgrammingWorks/AsynchronousProgramming 154 | - [Асинхронное программирование на promise`ах](https://youtu.be/RMl4r6s1Y8M) 155 | - Примеры кода: https://github.com/HowProgrammingWorks/Promise 156 | - [Асинхронные функции, async/await, thenable, обработка ошибок](https://youtu.be/Jdf_tZuJbHI) 157 | - Примеры кода: https://github.com/HowProgrammingWorks/AsyncAwait 158 | - Неизменяемые структуры данных (immutable) 159 | - [Автоматное программирование: конечные автоматы (машины состояний)](https://youtu.be/mxz7_zcip0c) 160 | - Примеры кода: https://github.com/HowProgrammingWorks/Automata 161 | - [Антипаттерны объектно-ориентированного программирования](https://youtu.be/9d5TG1VsLeU) 162 | - https://github.com/HowProgrammingWorks/Antipatterns/tree/master/JavaScript/03-OOP 163 | - [Шаблон Singleton (синглтон) в JavaScript](https://youtu.be/qdJ5yikZnfE) 164 | - Примеры кода: https://github.com/HowProgrammingWorks/Singleton 165 | - [Функциональные объекты, функторы и монады в JavaScript](https://youtu.be/3Z7f0Gi8pxw) 166 | - Примеры кода: https://github.com/HowProgrammingWorks/Functor 167 | - [Генераторы и асинхронные генераторы](https://youtu.be/kvNm9D32s8s) 168 | - Генераторы: https://github.com/HowProgrammingWorks/Generator 169 | - Асинхронные генераторы: https://github.com/HowProgrammingWorks/AsyncGenerator 170 | - [Итераторы и асинхронные итераторы](https://youtu.be/rBGFlWpVpGs) 171 | - Итераторы: https://github.com/HowProgrammingWorks/Iterator 172 | - Асинхронные итераторы: https://github.com/HowProgrammingWorks/AsyncIterator 173 | - [Перечислимый тип (enum) в JavaScript и TypeScript](https://youtu.be/BXiKebOIAGI) 174 | - Примеры кода: https://github.com/HowProgrammingWorks/Enum 175 | - [Дженерики и обобщенное программирование](https://youtu.be/r6W2z3DQhoI) 176 | - Примеры кода: https://github.com/HowProgrammingWorks/Generics 177 | - [Тестирование: юниттесты с примерами](https://youtu.be/CszugIag2TA) 178 | - Тестирование: https://github.com/HowProgrammingWorks/Testing 179 | - Юниттесты: https://github.com/HowProgrammingWorks/Unittesting 180 | - [Тестирование: системное и интеграционное тестирование](https://youtu.be/OuKu_6H_6gE) 181 | - Примеры кода: https://github.com/HowProgrammingWorks/IntegrationTesting 182 | - [Интроспекция и рефлексия в JavaScript](https://youtu.be/yvW1PjUVeM0) 183 | - Интроспекция: https://github.com/HowProgrammingWorks/Introspection 184 | - Reflect API: https://github.com/HowProgrammingWorks/Reflect 185 | - Рефлексия: https://github.com/HowProgrammingWorks/Reflection 186 | - [Почему хорошее ИТ-образование невостребовано рыночком](https://youtu.be/nvIJE6xMpiI) 187 | -------------------------------------------------------------------------------- /Courses/GRASP.md: -------------------------------------------------------------------------------- 1 | # GRASP: принципы распределения ответственности 2 | 3 | - [GRASP принципы с адаптацией для JavaScript и Node.js](https://youtu.be/ExauFjYV_lQ) 4 | - [Принцип информационный эксперт / Information Expert](https://youtu.be/cCHL329_As0) 5 | - Примеры кода: https://github.com/HowProgrammingWorks/InformationExpert 6 | - [Зацепление и связность / Coupling and Cohesion](https://youtu.be/IGXdPOZ3Fyk) 7 | - Примеры кода: https://github.com/HowProgrammingWorks/CouplingCohesion 8 | - [Чистая выдумка / Pure Fabrication](https://youtu.be/CV577a0RHBM) 9 | - Примеры кода: https://github.com/HowProgrammingWorks/PureFabrication 10 | - [Пример декомпозиции класса](https://youtu.be/4AMVQ2-2DcM) 11 | - Примеры кода: https://github.com/metarhia/impress/blob/v2.0.0/lib/application.js 12 | -------------------------------------------------------------------------------- /Courses/Highload.md: -------------------------------------------------------------------------------- 1 | # Высоконагруженные и масштабируемые системы 2 | 3 | - [Высоконагруженные распределенные приложения на Node.js](https://youtu.be/7tfZDABPvVs) 4 | - [Serverless Clouds (FaaS) и изоляция контекстов запросов в Node.js](https://youtu.be/x-Rd6fPV6L8) 5 | - Слайды: https://www.slideshare.net/tshemsedinov/serverless-clouds-faas-and-request-context-isolation-in-nodejs 6 | -------------------------------------------------------------------------------- /Courses/Introduction.md: -------------------------------------------------------------------------------- 1 | # Введение и обзор знаний 2 | 3 | - [Почему хорошее ИТ-образование невостребовано рыночком (выступление на Глушков Fest 2019)](https://youtu.be/nvIJE6xMpiI) 4 | - [Подход к изучению программирования](https://youtu.be/zMU4ir10DMg) 5 | - [Карта специальности инженер-программист](https://youtu.be/SE5aXH-yf0I) 6 | - [Node.js Введение в технологию](https://youtu.be/WBcHgaoHh1k) 7 | -------------------------------------------------------------------------------- /Courses/Metaprogramming.md: -------------------------------------------------------------------------------- 1 | # Метапрограммирование и мультипарадигменное программирование 2 | 3 | - [Метапрограммирование с примерами на JavaScript](https://youtu.be/Ed9onRv4G5Y) 4 | - [Проекции и отображения наборов данных в JavaScript](https://youtu.be/lwJCq9inky8) 5 | - Примеры кода: https://github.com/HowProgrammingWorks/Projection 6 | - [Интроспекция и рефлексия в JavaScript](https://youtu.be/yvW1PjUVeM0) 7 | - Примеры интроспекции: https://github.com/HowProgrammingWorks/Introspection 8 | - Примеры рефлексии: https://github.com/HowProgrammingWorks/Reflect 9 | - [Скаффолдинг для API, UI и данных](https://youtu.be/lipkLQVqDd8) 10 | - Примеры кода: https://github.com/HowProgrammingWorks/Scaffolding 11 | -------------------------------------------------------------------------------- /Courses/Metarhia-Club.md: -------------------------------------------------------------------------------- 1 | # Metarhia Club 2 | 3 | - ⭐ Community calls (2 hours call, 1 per week) 4 | - ⭐ Recordings (over 170 videos) 5 | - ⭐ Telegram group for alumnis (over 700 specialists) 6 | 7 | [💳 Buy annual membership](https://www.paypal.com/ncp/payment/YUJ56VENW6LJG) 8 | -------------------------------------------------------------------------------- /Courses/Metarhia.md: -------------------------------------------------------------------------------- 1 | # Технологический стек Metarhia 2 | 3 | # Презентации 4 | 5 | - [Для владельцев и руководителей проектов](https://youtu.be/dEqJj8M0ke0) 6 | - Для архитекторов и руководителей групп разработки 7 | - [Node.js in 2021: новости платформы и вызовы на следующее десятилетие](https://youtu.be/nnB7ADYso8s) 8 | - Слайды: https://www2.slideshare.net/tshemsedinov/nodejs-in-2021 9 | - Семинар с ответами на вопросы и обсуждением: https://youtu.be/zYRDhxj0zhQ 10 | - Metarhia Roadmap 2021 11 | 12 | ## Для разработчиков 13 | 14 | - Структура приложений 15 | - Конфигурирование сервера приложений 16 | - Подключение зависимостей 17 | - Вертикальное масштабирование на базе потоков 18 | - Авторелоад кода 19 | - Роутинг запросов, http и websocket, пример web hooks 20 | - [Разработка API на Node.js и технологическом стеке Metarhia](https://youtu.be/gppFXK1YzPA) 21 | - Семинар с ответами на вопросы и обсуждением: https://youtu.be/R7TwKnImNiY 22 | - [Сессии и контексты на Node.js и технологическом стеке Metarhia](https://youtu.be/5u8imY9SJiQ) 23 | - Работа с базами данных Postgres и Redis 24 | - Обработка и логирование ошибок 25 | - Аутентификация OAuth 2.0 26 | - Передача файлов по metacom: upload, download 27 | - Валидация и проверка типов: API контракты 28 | - Валидация в браузере: формы 29 | - Планировщик задач в impress 30 | - Модель предметной области и схемы баз данных 31 | - Миграции и версионирование схем 32 | - Тестирование юнит, системное, интеграционное 33 | - Асинхронные очереди 34 | - Очереди с надежным хранением 35 | - Непрерывное развертывание 36 | - Горизонтальное масштабирование 37 | 38 | ## Вебинары Node.js: Выйди и зайди нормально 39 | 40 | - [Часть 1: Обзор новых возможностей, история и изоляция](https://youtu.be/GJY2dyE6328?t=480) 41 | - Слайды: https://www.slideshare.net/tshemsedinov/nodejs-in-2020-part-1 42 | - [Часть 2: Проблемы и как они связаны с фундаментальными CS](https://youtu.be/r1u-dGocm1c) 43 | - Слайды: https://www.slideshare.net/tshemsedinov/nodejs-in-2020-part-2 44 | - [Часть 3: Структура и архитектура проекта, Node.js Starter Kit](https://youtu.be/ZXB5OTRld1w) 45 | - Слайды: https://www.slideshare.net/tshemsedinov/nodejs-in-2020-part-3 46 | -------------------------------------------------------------------------------- /Courses/Network.md: -------------------------------------------------------------------------------- 1 | # Проектирование сетевых протоколов и сервисов 2 | 3 | - [Клиент-сервер на Node.js TCP и UDP, DNS](https://youtu.be/bHn-wTlTTR0) 4 | - Примеры кода: https://github.com/HowProgrammingWorks/Socket 5 | - [HTTP сервер на Node.js (routing, cluster, IP sticky)](https://youtu.be/7Ufxj0oTaUo) 6 | - Примеры кода: https://github.com/HowProgrammingWorks/NodeServer 7 | - [Высоконагруженные распределенные приложения на Node.js](https://youtu.be/7tfZDABPvVs) 8 | - [WebSocket сервер на Node.js (электронные таблицы и чат)](https://youtu.be/Sf7ln3n16ws) 9 | - Вебсокеты: https://github.com/HowProgrammingWorks/WebsocketChat 10 | - Чат: https://github.com/HowProgrammingWorks/LiveTable 11 | - [HTTP запросы в браузере и Node.js: XMLHttpRequest, fetch](https://youtu.be/wMMki2FEYGY) 12 | - Примеры кода: https://github.com/HowProgrammingWorks/HttpRequest 13 | - [Разработка API на Node.js (клиент и сервер)](https://youtu.be/-az912XBCu8) 14 | - Примеры кода: https://github.com/HowProgrammingWorks/API 15 | - [CQS, CQRS, Event Sourcing - Разделение запросов и модификации данных](https://youtu.be/T2tRc80Q8Qw) 16 | - CQS: https://github.com/HowProgrammingWorks/CQS 17 | - CQRS: https://github.com/HowProgrammingWorks/CQRS 18 | - EventSourcing: https://github.com/HowProgrammingWorks/EventSourcing 19 | - [Применение EventSourcing](https://youtu.be/kFNtKiK2SPs) 20 | - https://github.com/HowProgrammingWorks/EventSourcing 21 | - https://github.com/HowProgrammingWorks/CQRS 22 | - https://github.com/HowProgrammingWorks/Command 23 | -------------------------------------------------------------------------------- /Courses/NodeJS-2022-2023.md: -------------------------------------------------------------------------------- 1 | # Технологический стек Node.js 2023 2 | 3 | Объем материала: 20 часов лекций, еженедельно 2 часа семинары в течении года, репозитории с примерами кода. 4 | Что нужно знать на входе: 5 | - [Синтаксис JavaScript без всяких триков](https://github.com/HowProgrammingWorks/Index/blob/master/Courses/Fundamentals.md) 6 | - [Основы асинхронного программирования](https://github.com/HowProgrammingWorks/Index/blob/master/Courses/Asynchronous.md) 7 | - Уверенно владеть git, иметь github аккаунт 8 | - Желательно docker, иметь рабочую машину на linux или mac 9 | - Любая среда разработки, IDE или редактор 10 | 11 | Ссылки на старый курс: 12 | - [Структура со ссылками на видео и репозитории с примерами кода](NodeJS.md) 13 | - [Для части лекций есть таймкоды и подробное оглавление](NodeJS-timecodes.md) 14 | 15 | Чем это курс не является: это не чтение документации, не курс по фреймворкам, не курс по Metarhia, не повторение старого курса, не лайвкодинг и не мастеркласс, не стрим. Новый курс - это максимально сконцентрированная информация и практические задачи по разработке на чистой ноде но с хорошей архитектурой и использованием всех современных возможностей Node.js 16 | 17 | 👉 Patreon: Подписаться: https://www.patreon.com/tshemsedinov 18 | 👉 Видео обзор курса: https://youtu.be/UGGzSEfCjPU 19 | 20 | ## Содержание 21 | 22 | - Node.js Введение в технологию, обзор API, основные идеи: за счет чего реализована экономия памяти, cpu, I/O 23 | - Системы модулей CJS (`CommonJS`) and ESM (`ECMAScrip modules`), особенности в Node.js, зависимости и пакеты `npm` 24 | - Асинхронное программирование: `event loop`, `async hooks`, `race condition`, `callbacks`, `async/await`, `thenable`, `promises` 25 | - Параллельное программирование: `threads`, `semaphore`, `mutex`, `spin locks`, `Atomics`, `SharedArrayBuffer`, Web Locks API 26 | - Реактивное программирование: `Observer`, `EventEmitter`, `RxJS`, асинхронные и конкурентные очереди, `async collectors` 27 | - Изоляция кода и данных в Node.js: `vm`, `v8`, защита `global`, контекстов, модулей и прототипов от патчинга 28 | - Работа с файлами: `fs`, `Buffer`, `Stream`, `pipe`, `backpressure`, Web streams API, наблюдение за файловой системой 29 | - Структура и архитектура проекта, слои, `DDD`, `Clean architecture`, связанность и связность кода, протекание абстракций 30 | - Принципы `GRASP` и `SOLID` в `JavaScript` с адаптацией для Node.js, `IoC` (инверсия управления) и `DI` (внедрение зависимостей) 31 | - Сетевые протоколы: `HTTP(S)`, `HTTP2`, `TCP`, `UDP`, `TLS`, `Websocket`, `SSE`, `HTTP/3` (`QUIC`) 32 | - Принципы взаимодействия систем: `REST`, `RPC`, `Pipeline`, `Event-bus`, `Event-broker`, клиент-сервер, `peer-to-peer` 33 | - API на принципах транспорт-агностик и фреймворк-агностик, контракты, реализация сессий и сервиса аутентификации 34 | - Приложения, приближенные к реальному времени, интерактивность и коллаборативные приложения на вебсокетах 35 | - Распространенные паттерны и антипаттерны в приложениях на Node.js 36 | - Распределенные системы, высоконагруженные системы, балансировка нагрузки, кластеризация и масштабирование, IP sticky 37 | - Вопросы безопасности: `DoS`, `XSS`, `Path traversal`, `CSRF`, `SQL`-инъекции 38 | - Работа с базами данных, слой доступа к данным, описание структуры данных, доступ к данным, `postgres`, `redis`, `in-memory` 39 | - Сравнение подходов `domain in the middle`, `ORM`, `active record`, `repository`, `data mapper`, схемы данных, `query builder` 40 | - Утечки памяти и ресурсов, количественная оценка надежности, устойчивости, доступности, гибкости, качества 41 | - Инфраструктура и инструментарий: логирование, тестирование, линтеры, отладка, CI/CD, встроенный testing framework 42 | - `Performance hooks`, телеметрия ресурсов и оптимизация: I/O bound, CPU bound, memory bound, профилирование 43 | - `Graceful shutdown` в Node.js, работа с ошибками и исключениями, `unhandled exceptions`, `stack trace` 44 | - Встроенная криптография в Node.js (`openssl`), `addons`, `plugins`, `Node-API` (ранее `N-API`), `WASI` (Webassembly) 45 | - `Serverless` и облачные `FaaS` решения на базе Node.js 46 | - Практическое использование интроспекции, рефлекcии и скаффолдинга 47 | 48 | # Доступ 49 | 50 | План «Expert» на 1 год за $204 (+ локальные налоги) на Patreon. 51 | Помесячная подписка «Expert» не дает доступа. 52 | Доступ к матераиалам курса остается и после завершения подписки. 53 | 54 | 👉 Подписаться: https://www.patreon.com/tshemsedinov 55 | 56 | ## Дополнительные материалы 57 | 58 | - [Байки про JavaScript и Node.js с Тимуром Шемсединовым](https://youtu.be/hoKKYKMadQs) 59 | - [Стратегия входа Node.js в корпоративный сектор](https://youtu.be/FLcBrP1KFYk) 60 | - [Node.js Middleware – никогда больше!](https://youtu.be/RS8x73z4csI) 61 | -------------------------------------------------------------------------------- /Courses/NodeJS-2024.md: -------------------------------------------------------------------------------- 1 | # Технологический стек Node.js в 2024 2 | 3 | Объем материала: 20 часов основного материала + 20 часов по выбору, еженедельно 4 часа (2 раза по 2 часа) созвоны с ревью кода и ответами на вопросы в течении года, репозитории с примерами кода. 4 | 5 | Что нужно знать на входе: 6 | - 🔗 [Синтаксис JavaScript без всяких триков](https://github.com/HowProgrammingWorks/Index/blob/master/Courses/Fundamentals.md) 7 | - 🔗 [Основы асинхронного программирования](https://github.com/HowProgrammingWorks/Index/blob/master/Courses/Asynchronous.md) 8 | - 💡 Уверенно владеть git, иметь github аккаунт 9 | - 💡 Желательно docker, иметь рабочую машину на linux или mac 10 | - 💡 Любая среда разработки, IDE или редактор 11 | 12 | Ссылки на старый курс: 13 | - 🔗 [Структура со ссылками на видео и репозитории с примерами кода](NodeJS.md) 14 | - 🔗 [Для части лекций есть таймкоды и подробное оглавление](NodeJS-timecodes.md) 15 | 16 | Чем этот курс не является: это не чтение документации, не курс по фреймворкам, не курс по Metarhia, не повторение старого курса, не лайвкодинг и не мастеркласс, не стрим. Новый курс - это максимально сконцентрированная информация и практические задачи по разработке на чистой ноде но с хорошей архитектурой и использованием всех современных возможностей Node.js 17 | 18 | 👉 Patreon: https://www.patreon.com/tshemsedinov 19 | 👉 Видео обзор курса: https://youtu.be/moH8df67zAM 20 | 👉 Вопросы на интервью: https://github.com/tshemsedinov/NodeJS-Interview-Questions 21 | 22 | ## Содержание 23 | 24 | - ⭐ [Введение в технологию 🚀](https://youtu.be/mRvzgBGLVyM) 25 | - 🧑‍💻 [HTTP сервер для статики](https://github.com/HowProgrammingWorks/NodeServer/tree/master/native-2022) 26 | - 🔗 [Таблица поддержки возможностей в версиях ноды](https://node.green/) 27 | - 🔗 [Автоматизация проверки безопасности кода](https://snyk.io/) 28 | - 🔗 [Встроенный в npm аудит безопасности](https://docs.npmjs.com/cli/v8/commands/npm-audit) 29 | - 🧩 [Сравнение кластеризации HTTP, TCP и UDP на процессах и потоках](https://youtu.be/dum4b4EZktY) 30 | - 🧩 [Стрим про асинхронность и фазы ивентлупа](https://youtu.be/ND5HNHicACI) 31 | - ⭐ Структура приложений: системы модульности, пакеты и зависимости 32 | - 💻 [Системы модульности, CommonJS, ESModules, реализация своей системы модульности](https://github.com/HowProgrammingWorks/Modularity) 33 | - 💻 [Пакеты и их загрузка в разных системах модульности](https://github.com/HowProgrammingWorks/Packages) 34 | - ⭐ Архитектура приложений: слои и внедрение зависимостей 35 | - 💻 [Пошаговый рефакторинг от мидлварей до слоеной архитектуры](https://github.com/HowProgrammingWorks/DDD) 36 | - 🧩 [Почему мидлвари это плохо](https://youtu.be/RS8x73z4csI) 37 | - ⭐ Layers and Low Coupling на примере конфига и транспорта 38 | - 💻 [Примеры кода "A", "B" и "C" к лекции](https://github.com/HowProgrammingWorks/DDD) 39 | - ⭐ Базы данных, модель, заголовки .d.ts и линтеры 40 | - ⭐ Криптография: crypto, хеширование паролей с солью, session token, UUID, случайные числа 41 | - 💻 Реализация `randomPrefetcher` из библиотеки `metautil`: https://github.com/metarhia/metautil/blob/v3.7.0/lib/crypto.js 42 | - 💻 Упрощенное хеширование: https://github.com/HowProgrammingWorks/DDD/blob/master/JavaScript/d-messenger/lib/common.js 43 | - 💻 Полноценное хеширование: https://github.com/metatech-university/NodeJS-Pure/blob/main/lib/common.js 44 | - 💻 Генерация UUID: https://nodejs.org/api/crypto.html#cryptorandomuuidoptions 45 | - 🔗 Документация по `node:crypto`: https://nodejs.org/api/crypto.html 46 | - ⭐ [Применение Chat GPT в оптимизации JavaScript для Node.js](https://youtu.be/Ebrzqj8cGUY) 47 | - 💻 [Chunk encode/decode with typed arrays](https://github.com/HowProgrammingWorks/ChatGPT/tree/main/JavaScript/1-Chunk) 48 | - 💻 [Promise chain and async code optimization](https://github.com/HowProgrammingWorks/ChatGPT/tree/main/JavaScript/2-Promise) 49 | - 💻 [Crypto random prefetcher](https://github.com/HowProgrammingWorks/ChatGPT/tree/main/JavaScript/3-Prefetcher) 50 | - ⭐ Структура классов сервера и GoF паттерны в Node.js 51 | - ⭐ Подсистема `Authentication` 52 | - ⭐ Подсистема `Role Based Access Control` 53 | - Системы прав ACL, ABAC, RBAC, и проектирование нашей системы прав для курса 54 | - ⭐ Стримы Readable, Writable, Transform, открытый конструктор, буферизация, backpressure 55 | - 💻 Примеры кода: https://github.com/HowProgrammingWorks/Streams/tree/master/JavaScript 56 | - ⭐ Инфраструктура и инструментарий: тайпинги, тестирование, линтеры, CI/CD, встроенный testing framework 57 | - ⭐ Работа с ошибками и исключениями, `Graceful shutdown` в Node.js, `unhandled exceptions`, `async stack trace` 58 | - 💻 Async stack trace: https://github.com/HowProgrammingWorks/StackTrace/blob/master/JavaScript/6-pass-through.js 59 | - 💻 Graceful shutdown: https://github.com/HowProgrammingWorks/GracefulShutdown 60 | - ⭐ Асинхронное, реактивное и параллельное программирование 61 | - ✨ Обзор асинхронного программирования в Node.js: https://youtu.be/hY6Z6qNYzmc 62 | - 💻 Разные контракты: https://github.com/HowProgrammingWorks/AsynchronousProgramming 63 | - 💻 Таймеры: https://github.com/HowProgrammingWorks/Timers 64 | - 💻 EventEmitter: https://github.com/HowProgrammingWorks/EventEmitter 65 | - 💻 Промисы: https://github.com/HowProgrammingWorks/Promise 66 | - 💻 Async/await: https://github.com/HowProgrammingWorks/AsyncAwait 67 | - 💻 Асинхронные адаптеры: https://github.com/HowProgrammingWorks/AsyncAdapter 68 | - 💻 Асинхронные итераторы: https://github.com/HowProgrammingWorks/AsyncIterator 69 | - 💻 Thenable: https://github.com/HowProgrammingWorks/Thenable 70 | - 💻 Асинхронная очередь: https://github.com/HowProgrammingWorks/ConcurrentQueue 71 | - 💻 Паттерн открытый конструктор (Revealing Constructor): https://github.com/HowProgrammingWorks/RevealingConstructor 72 | - ⭐ Работа с файлами и файловыми потоками, наблюдение за файловой системой 73 | - ✨ Работа с файлами, буферами и файловыми потоками: https://youtu.be/eQGBS15vUac 74 | - 💻 Работа с файлами: https://github.com/HowProgrammingWorks/Files 75 | - 💻 Файловые потоки: https://github.com/HowProgrammingWorks/Streams 76 | - 💻 Буферы: https://github.com/HowProgrammingWorks/Buffers 77 | - 💻 Наблюдение за файлами: https://github.com/HowProgrammingWorks/FilesystemWatch 78 | - ⭐ Принципы `GRASP` и `SOLID` в `JavaScript` с адаптацией для Node.js 79 | - ✨ GRASP принципы с адаптацией для JavaScript и Node.js: https://youtu.be/ExauFjYV_lQ 80 | - 💻 Information Expert: https://github.com/HowProgrammingWorks/InformationExpert 81 | - 💻 Coupling and Cohesion: https://github.com/HowProgrammingWorks/CouplingCohesion 82 | - 💻 Pure Fabrication: https://github.com/HowProgrammingWorks/PureFabrication 83 | - 💻 Single responsibility: https://github.com/HowProgrammingWorks/SingleResponsibility 84 | - 💻 Liskov substitution: https://github.com/HowProgrammingWorks/LiskovSubstitution 85 | - 💻 IoC and DI: https://github.com/HowProgrammingWorks/InversionOfControl 86 | - ⭐ Вопросы безопасности: `DoS`, `XSS`, `Path traversal`, `CSRF`, `SQL`-инъекции 87 | - ✨ Безопасность приложений Node.js: https://youtu.be/Pdfo1G-gI6s 88 | - 🔗 Слайды: https://www.slideshare.net/tshemsedinov/nodejs-security-199004963 89 | - ⭐ C/C++ Addons, Node-API (n-api), WebAssembly: Rust, WAT, C++, AssemblyScript 90 | - 💻 N-API examples for C++ and Rust: https://github.com/HowProgrammingWorks/Node-API 91 | - 💻 WebAssembly for C++, Rust, WAT, and AssemblyScript https://github.com/HowProgrammingWorks/WebAssembly 92 | - 💻 In-place callback solution: https://github.com/tshemsedinov/wasm-import 93 | - ⭐ Трекинг асинхронных контекстов: AsyncLocalStorage, AsyncResource 94 | - 💻 Примеры использования AsyncLocalStorage и AsyncResource: https://github.com/HowProgrammingWorks/AsyncContextTracking 95 | - ⭐ Проектирование API и проверка контрактов в рантайме 96 | - ✨ Контрактное программирование: https://youtu.be/K5_kSUvbGEQ 97 | - 💻 Примеры кода: https://github.com/HowProgrammingWorks/Contract 98 | - ⭐ Вынесение подсистем как отдельных микросервисов 99 | - ⭐ `Performance hooks`, телеметрия ресурсов и оптимизация: I/O bound, CPU bound, memory bound, профилирование 100 | - ⭐ `Serverless` и облачные `FaaS` решения на базе Node.js 101 | - ✨ Serverless Clouds (FaaS) и изоляция контекстов запросов в Node.js: https://youtu.be/x-Rd6fPV6L8 102 | - 🔗 Слайды: https://www.slideshare.net/tshemsedinov/serverless-clouds-faas-and-request-context-isolation-in-nodejs 103 | - ⭐ Приложения, приближенные к реальному времени, Websocket, интерактивность и коллаборативные приложения 104 | - 💻 Серверная реализация 105 | - 💻 Клиентская реализация на C++ для Node.js 21 106 | - 💻 Интерактивность и коллоборативные приложения 107 | - ⭐ Распределенные системы, высоконагруженные системы, балансировка нагрузки, кластеризация и масштабирование, IP sticky 108 | - ✨ Доклад по высоконагруженным системам: https://youtu.be/7tfZDABPvVs 109 | - ✨ HTTP сервер на Node.js (routing, cluster, IP sticky): https://youtu.be/7Ufxj0oTaUo 110 | - 💻 Примеры серверов: https://github.com/HowProgrammingWorks/NodeServer 111 | - ⭐ Изоляция кода и данных в Node.js: `vm`, `v8`, защита `global`, контекстов, модулей и прототипов от патчинга 112 | - ⭐ Структура и архитектура проекта, слои, `DDD`, `Clean architecture`, связанность и связность кода, протекание абстракций 113 | - ⭐ Реализация HTTP Proxy 114 | - 📢 [Разбор примеров кода Timur Sevimli](https://youtu.be/4yF6hlxiIic) 115 | - 💻 Примеры кода из видео: https://github.com/HowProgrammingWorks/ProxyHTTP 116 | - ⭐ Сборка Node.js приложений в single executable 117 | - ⭐ Автоматическая перезагрузка процессов с --watch 118 | - ⭐ Обзор Web API портированнного в Node.js: Web Crypro, Web Streams, Intl 119 | - ⭐ Встроенная система Permissions для ограничения доступа к файловой системе, сети, другим API 120 | 121 | План курса формируется. Тут появится еще много тем в ближайшее время. 122 | 123 | ## Задания 124 | 125 | - 🧑‍💻 Блок заданий №1 126 | - Создание структуры проекта, системы модульности, фреймворк-агностик 127 | - Организация служебных вещей: логирование, конфигурирование, запуск, 128 | - Проектирование API, организация роутинга и транспорт-агностик подхода 129 | - 🧑‍💻 Блок заданий №2 130 | - Проектирование предметной области, использование схем, ERD, IDEf1x 131 | - Организация слоя доступа к базе данных, query builder, паттерн репозиторий 132 | - Защита от SQL-injection, параметрические запросы 133 | - 🧑‍💻 Блок заданий №3 134 | - Сетевые протоколы, сериализация, организация сессий 135 | - Принципы взаимодействия: REST, RPC, трансляция событий 136 | - Безопасность, CORS, потоковое вещание, partial-content, upload/download файлов 137 | - 🧑‍💻 Блок заданий №4 138 | - Применение `GRASP` и `SOLID` для Node.js приложений 139 | - Использование паттернов и рефакторинг с применением паттернов 140 | - 🧑‍💻 Блок заданий №5 141 | - Использование потоков Readable, Writable, Transform, работа с файлами 142 | - Корректная обработка ошибок и исключений 143 | - Рефакторинг асинхронного кода и стыковка контрактов 144 | - 🧑‍💻 Блок заданий №6 145 | - Организация клиентского кода, прозрачность вызовов серверного API через async/await 146 | - Межсерверное взаимодействие, прозрачность вызовов через async/await (как и для клиентского кода) 147 | - Интеграция подсистем по принципу единого адресного пространства 148 | - 🧑‍💻 Блок заданий №7 149 | - Реализация системы прав (аккаунты, пароли, роли, пермишены, применение ACL, ABAC, RBAC) 150 | - Система сессий: хранимое состояние, состояние соединений, состояние прикрепленное к вызову 151 | - Безопасность (`DoS`, `XSS`, `Path traversal`, `CSRF`, и т.д.) 152 | 153 | # Доступ 154 | 155 | 💳 Сейчас на курс можно записаться по плану «NodeJS 2024» годовая подписка на Patreon - полный курс. Матераиалы курса остаются и после завершения подписки (не нужно ее продлять все время, я не забираю доступ). 156 | 💳 Второй вариант: вместе с курсом по ассинхронному программированию «Node + Async» годовая подписка на Patreon. Программа курса «Async 2024»: https://github.com/HowProgrammingWorks/Index/blob/master/Courses/Async-2024.md 157 | 158 | 🎫 Регистрация: https://www.patreon.com/tshemsedinov 159 | 160 | 🎉 После того, как Вы взяли курс, в течении суток я добавляю вам права на репозиторий в Github, добавляю в календарь на созвоны через google-meet, и придут ссылки на все нужные ресурсы в почту. Может попаст в спам, проверьте. 161 | 162 | 👉 Подписывайтесь на https://t.me/metarhia и https://www.youtube.com/@TimurShemsedinov чтобы следить за новостями. 163 | -------------------------------------------------------------------------------- /Courses/NodeJS-2025.md: -------------------------------------------------------------------------------- 1 | # Технологический стек Node.js в 2025 2 | 3 | Что нужно знать на входе: 4 | - 🔗 [Синтаксис JavaScript без всяких триков](https://github.com/HowProgrammingWorks/Index/blob/master/Courses/Fundamentals.md) 5 | - 🔗 [Основы асинхронного программирования](https://github.com/HowProgrammingWorks/Index/blob/master/Courses/Asynchronous.md) 6 | - 💡 Уверенно владеть git, иметь github аккаунт 7 | - 💡 Желательно docker, иметь рабочую машину на linux или mac 8 | - 💡 Любая среда разработки, IDE или редактор 9 | 10 | Ссылки на старый курс: 11 | - 🔗 [Структура со ссылками на видео и репозитории с примерами кода](NodeJS.md) 12 | - 🔗 [Для части лекций есть таймкоды и подробное оглавление](NodeJS-timecodes.md) 13 | 14 | Чем этот курс не является: это не чтение документации, не курс по фреймворкам, не курс по Metarhia, не повторение старого курса, не лайвкодинг и не мастеркласс, не стрим. Новый курс - это максимально сконцентрированная информация и практические задачи по разработке на чистой ноде но с хорошей архитектурой и использованием всех современных возможностей Node.js 15 | 16 | 👉 Patreon: https://www.patreon.com/tshemsedinov 17 | 👉 Видео обзор курса: https://youtu.be/moH8df67zAM 18 | 👉 Вопросы на интервью: https://github.com/tshemsedinov/NodeJS-Interview-Questions 19 | 20 | ## Содержание 21 | 22 | - ⭐ [Введение в технологию 🚀](https://youtu.be/mRvzgBGLVyM) 23 | - 🧑‍💻 [HTTP сервер для статики](https://github.com/HowProgrammingWorks/NodeServer/tree/master/native-2022) 24 | - 🔗 [Таблица поддержки возможностей в версиях ноды](https://node.green/) 25 | - 🔗 [Автоматизация проверки безопасности кода](https://snyk.io/) 26 | - 🔗 [Встроенный в npm аудит безопасности](https://docs.npmjs.com/cli/v8/commands/npm-audit) 27 | - 🧩 [Сравнение кластеризации HTTP, TCP и UDP на процессах и потоках](https://youtu.be/dum4b4EZktY) 28 | - 🧩 [Стрим про асинхронность и фазы ивентлупа](https://youtu.be/ND5HNHicACI) 29 | - ⭐ Структура приложений: системы модульности, пакеты и зависимости 30 | - 💻 [Системы модульности, CommonJS, ESModules, реализация своей системы модульности](https://github.com/HowProgrammingWorks/Modularity) 31 | - 💻 [Пакеты и их загрузка в разных системах модульности](https://github.com/HowProgrammingWorks/Packages) 32 | - ⭐ Архитектура приложений: слои и внедрение зависимостей 33 | - 💻 [Пошаговый рефакторинг от мидлварей до слоеной архитектуры](https://github.com/HowProgrammingWorks/DDD) 34 | - 🧩 [Почему мидлвари это плохо](https://youtu.be/RS8x73z4csI) 35 | - ⭐ Layers and Low Coupling на примере конфига и транспорта 36 | - 💻 [Примеры кода "A", "B" и "C" к лекции](https://github.com/HowProgrammingWorks/DDD) 37 | - ⭐ Базы данных, модель, заголовки .d.ts и линтеры 38 | - ⭐ Криптография: crypto, хеширование паролей с солью, session token, UUID, случайные числа 39 | - 💻 Реализация `randomPrefetcher` из библиотеки `metautil`: https://github.com/metarhia/metautil/blob/v3.7.0/lib/crypto.js 40 | - 💻 Упрощенное хеширование: https://github.com/HowProgrammingWorks/DDD/blob/master/JavaScript/d-messenger/lib/common.js 41 | - 💻 Полноценное хеширование: https://github.com/metatech-university/NodeJS-Pure/blob/main/lib/common.js 42 | - 💻 Генерация UUID: https://nodejs.org/api/crypto.html#cryptorandomuuidoptions 43 | - 🔗 Документация по `node:crypto`: https://nodejs.org/api/crypto.html 44 | - ⭐ [Применение Chat GPT в оптимизации JavaScript для Node.js](https://youtu.be/Ebrzqj8cGUY) 45 | - 💻 [Chunk encode/decode with typed arrays](https://github.com/HowProgrammingWorks/ChatGPT/tree/main/JavaScript/1-Chunk) 46 | - 💻 [Promise chain and async code optimization](https://github.com/HowProgrammingWorks/ChatGPT/tree/main/JavaScript/2-Promise) 47 | - 💻 [Crypto random prefetcher](https://github.com/HowProgrammingWorks/ChatGPT/tree/main/JavaScript/3-Prefetcher) 48 | - ⭐ Структура классов сервера и GoF паттерны в Node.js 49 | - ⭐ Подсистема `Authentication` 50 | - ⭐ Подсистема `Role Based Access Control` 51 | - Системы прав ACL, ABAC, RBAC, и проектирование нашей системы прав для курса 52 | - ⭐ Стримы Readable, Writable, Transform, открытый конструктор, буферизация, backpressure 53 | - 💻 Примеры кода: https://github.com/HowProgrammingWorks/Streams/tree/master/JavaScript 54 | - ⭐ Инфраструктура и инструментарий: тайпинги, тестирование, линтеры, CI/CD, встроенный testing framework 55 | - ⭐ Работа с ошибками и исключениями, `Graceful shutdown` в Node.js, `unhandled exceptions`, `async stack trace` 56 | - 💻 Async stack trace: https://github.com/HowProgrammingWorks/StackTrace/blob/master/JavaScript/6-pass-through.js 57 | - 💻 Graceful shutdown: https://github.com/HowProgrammingWorks/GracefulShutdown 58 | - ⭐ Асинхронное, реактивное и параллельное программирование 59 | - ✨ Обзор асинхронного программирования в Node.js: https://youtu.be/hY6Z6qNYzmc 60 | - 💻 Разные контракты: https://github.com/HowProgrammingWorks/AsynchronousProgramming 61 | - 💻 Таймеры: https://github.com/HowProgrammingWorks/Timers 62 | - 💻 EventEmitter: https://github.com/HowProgrammingWorks/EventEmitter 63 | - 💻 Промисы: https://github.com/HowProgrammingWorks/Promise 64 | - 💻 Async/await: https://github.com/HowProgrammingWorks/AsyncAwait 65 | - 💻 Асинхронные адаптеры: https://github.com/HowProgrammingWorks/AsyncAdapter 66 | - 💻 Асинхронные итераторы: https://github.com/HowProgrammingWorks/AsyncIterator 67 | - 💻 Thenable: https://github.com/HowProgrammingWorks/Thenable 68 | - 💻 Асинхронная очередь: https://github.com/HowProgrammingWorks/ConcurrentQueue 69 | - 💻 Паттерн открытый конструктор (Revealing Constructor): https://github.com/HowProgrammingWorks/RevealingConstructor 70 | - ⭐ Работа с файлами и файловыми потоками, наблюдение за файловой системой 71 | - ✨ Работа с файлами, буферами и файловыми потоками: https://youtu.be/eQGBS15vUac 72 | - 💻 Работа с файлами: https://github.com/HowProgrammingWorks/Files 73 | - 💻 Файловые потоки: https://github.com/HowProgrammingWorks/Streams 74 | - 💻 Буферы: https://github.com/HowProgrammingWorks/Buffers 75 | - 💻 Наблюдение за файлами: https://github.com/HowProgrammingWorks/FilesystemWatch 76 | - ⭐ Принципы `GRASP` и `SOLID` в `JavaScript` с адаптацией для Node.js 77 | - ✨ GRASP принципы с адаптацией для JavaScript и Node.js: https://youtu.be/ExauFjYV_lQ 78 | - 💻 Information Expert: https://github.com/HowProgrammingWorks/InformationExpert 79 | - 💻 Coupling and Cohesion: https://github.com/HowProgrammingWorks/CouplingCohesion 80 | - 💻 Pure Fabrication: https://github.com/HowProgrammingWorks/PureFabrication 81 | - 💻 Single responsibility: https://github.com/HowProgrammingWorks/SingleResponsibility 82 | - 💻 Liskov substitution: https://github.com/HowProgrammingWorks/LiskovSubstitution 83 | - 💻 IoC and DI: https://github.com/HowProgrammingWorks/InversionOfControl 84 | - ⭐ Вопросы безопасности: `DoS`, `XSS`, `Path traversal`, `CSRF`, `SQL`-инъекции 85 | - ✨ Безопасность приложений Node.js: https://youtu.be/Pdfo1G-gI6s 86 | - 🔗 Слайды: https://www.slideshare.net/tshemsedinov/nodejs-security-199004963 87 | - ⭐ C/C++ Addons, Node-API (n-api), WebAssembly: Rust, WAT, C++, AssemblyScript 88 | - 💻 N-API examples for C++ and Rust: https://github.com/HowProgrammingWorks/Node-API 89 | - 💻 WebAssembly for C++, Rust, WAT, and AssemblyScript https://github.com/HowProgrammingWorks/WebAssembly 90 | - 💻 In-place callback solution: https://github.com/tshemsedinov/wasm-import 91 | - ⭐ Трекинг асинхронных контекстов: AsyncLocalStorage, AsyncResource 92 | - 💻 Примеры использования AsyncLocalStorage и AsyncResource: https://github.com/HowProgrammingWorks/AsyncContextTracking 93 | - ⭐ Проектирование API и проверка контрактов в рантайме 94 | - ✨ Контрактное программирование: https://youtu.be/K5_kSUvbGEQ 95 | - 💻 Примеры кода: https://github.com/HowProgrammingWorks/Contract 96 | - ⭐ Вынесение подсистем как отдельных микросервисов 97 | - ⭐ `Performance hooks`, телеметрия ресурсов и оптимизация: I/O bound, CPU bound, memory bound, профилирование 98 | - ⭐ `Serverless` и облачные `FaaS` решения на базе Node.js 99 | - ✨ Serverless Clouds (FaaS) и изоляция контекстов запросов в Node.js: https://youtu.be/x-Rd6fPV6L8 100 | - 🔗 Слайды: https://www.slideshare.net/tshemsedinov/serverless-clouds-faas-and-request-context-isolation-in-nodejs 101 | - ⭐ Приложения, приближенные к реальному времени, Websocket, интерактивность и коллаборативные приложения 102 | - 💻 Серверная реализация 103 | - 💻 Клиентская реализация на C++ для Node.js 21 104 | - 💻 Интерактивность и коллоборативные приложения 105 | - ⭐ Распределенные системы, высоконагруженные системы, балансировка нагрузки, кластеризация и масштабирование, IP sticky 106 | - ✨ Доклад по высоконагруженным системам: https://youtu.be/7tfZDABPvVs 107 | - ✨ HTTP сервер на Node.js (routing, cluster, IP sticky): https://youtu.be/7Ufxj0oTaUo 108 | - 💻 Примеры серверов: https://github.com/HowProgrammingWorks/NodeServer 109 | - ⭐ Изоляция кода и данных в Node.js: `vm`, `v8`, защита `global`, контекстов, модулей и прототипов от патчинга 110 | - ⭐ Структура и архитектура проекта, слои, `DDD`, `Clean architecture`, связанность и связность кода, протекание абстракций 111 | - ⭐ Реализация HTTP Proxy 112 | - 📢 [Разбор примеров кода Timur Sevimli](https://youtu.be/4yF6hlxiIic) 113 | - 💻 Примеры кода из видео: https://github.com/HowProgrammingWorks/ProxyHTTP 114 | - ⭐ Сборка Node.js приложений в single executable 115 | - ⭐ Автоматическая перезагрузка процессов с --watch 116 | - ⭐ Обзор Web API портированнного в Node.js: Web Crypro, Web Streams, Intl 117 | - ⭐ Встроенная система Permissions для ограничения доступа к файловой системе, сети, другим API 118 | 119 | План курса формируется. Тут появится еще много тем в ближайшее время. 120 | 121 | # Доступ 122 | 123 | 🎫 Регистрация: Следите за новостями, когда откроется регистрация, на курс можно будет подписаться тут https://www.patreon.com/tshemsedinov 124 | 125 | 👉 Подписывайтесь на https://t.me/metarhia и https://www.youtube.com/@TimurShemsedinov чтобы следить за новостями. 126 | -------------------------------------------------------------------------------- /Courses/NodeJS.md: -------------------------------------------------------------------------------- 1 | # Технологический стек Node.js 2 | 3 | Объем материала: 48 лекций + 9 докладов и вебинаров, 37 репозиториев с примерами кода, 4 PDF со слайдами. 4 | Перед основной частью курса по Node.js нужно сначала освоить хоть частично курс 5 | по асинхронному программированию: https://github.com/HowProgrammingWorks/Index/blob/master/Courses/Asynchronous.md 6 | 7 | - [Для части лекций есть таймкоды и подробное оглавление](NodeJS-timecodes.md) 8 | - [Новый курс Node.js 2023](https://github.com/HowProgrammingWorks/Index/blob/master/Courses/NodeJS-2022-2023.md) 9 | 10 | ## Доклады и выступления 11 | 12 | - [Node.js Middleware – никогда больше!](https://youtu.be/RS8x73z4csI) 13 | - Слaйды: https://www2.slideshare.net/tshemsedinov/nodejs-middleware-never-again 14 | - [Байки про JavaScript и Node.js с Тимуром Шемсединовым](https://youtu.be/hoKKYKMadQs) 15 | - [Стратегия входа Node.js в корпоративный сектор](https://youtu.be/FLcBrP1KFYk) 16 | 17 | ## Вебинары Node.js: Выйди и зайди нормально 18 | 19 | - [Часть 1: Обзор новых возможностей, история и изоляция](https://youtu.be/GJY2dyE6328?t=480) 20 | - Слайды: https://www.slideshare.net/tshemsedinov/nodejs-in-2020-part-1 21 | - [Часть 2: Проблемы и как они связаны с фундаментальными CS](https://youtu.be/r1u-dGocm1c) 22 | - Слайды: https://www.slideshare.net/tshemsedinov/nodejs-in-2020-part-2 23 | - [Часть 3: Структура и архитектура проекта, Node.js Starter Kit](https://youtu.be/ZXB5OTRld1w) 24 | - Слайды: https://www.slideshare.net/tshemsedinov/nodejs-in-2020-part-3 25 | 26 | ## Вебинары Node.js for Enterprise 27 | 28 | - [Часть 1: DDD, слои транспорт-агностик подход](https://youtu.be/L7Yge5Ph0z4) 29 | - [Часть 2: Изоляция кода и внедрение зависимостей](https://youtu.be/GRg4BmV1uYI) 30 | - [Часть 3: Применение GRASP, SOLID, DDD, LoD, GoF](https://youtu.be/EiSbiQWt5tM) 31 | 32 | ## Введение и основы 33 | 34 | - [Node.js Введение в технологию](https://youtu.be/mRvzgBGLVyM) 35 | - [Node.js in 2021: новости платформы и вызовы на следующее десятилетие](https://youtu.be/nnB7ADYso8s) 36 | - Слайды: https://www2.slideshare.net/tshemsedinov/nodejs-in-2021 37 | - Семинар с ответами на вопросы и обсуждением: https://youtu.be/zYRDhxj0zhQ 38 | - [Node.js в 2019 году](https://youtu.be/CUU49jjHloM) 39 | - Слайды: https://www.slideshare.net/tshemsedinov/nodejs-in-2019 40 | - [Асинхронное программирование в Node.js](https://youtu.be/hY6Z6qNYzmc) 41 | - Это только обзорная лекция, ссылка на курс по асинхронному программированию 42 | находится выше, перед оглавлением 43 | - [Обзор встроенного Node.js API](https://youtu.be/sOkjR-N6IAs) 44 | - Ссылка на документацию: https://nodejs.org/api/documentation.html 45 | - [Настройка среды: Node.js, npm, git, eslint](https://youtu.be/hSyA7tcNaCE) 46 | - Репозиторий с инструментами: https://github.com/HowProgrammingWorks/Tools 47 | - [Работа с файлами, буферами и файловыми потоками в Node.js](https://youtu.be/eQGBS15vUac) 48 | - Работа с файлами: https://github.com/HowProgrammingWorks/Files 49 | - Файловые потоки: https://github.com/HowProgrammingWorks/Streams 50 | - Буферы: https://github.com/HowProgrammingWorks/Buffers 51 | - [Наблюдение за файловой системой в Node.js](https://youtu.be/29QINR9rruQ) 52 | - Файловая система в Node.js: https://github.com/HowProgrammingWorks/Files 53 | - Наблюдение за файлами: https://github.com/HowProgrammingWorks/FilesystemWatch 54 | - [Консоль и командная строка в JavaScript и Node.js](https://youtu.be/5aSZyKi5BmE) 55 | - Примеры кода: https://github.com/HowProgrammingWorks/CommandLine 56 | 57 | ## Структура и архитектура приложений на Node.js 58 | 59 | - [Архитектурный подход к программированию](https://youtu.be/d_vyO2CkiOc) 60 | - [Модули, слои, структура проекта, песочницы в JavaScript и Node.js](https://youtu.be/O7A9chb573E) 61 | - Пример проекта: https://github.com/HowProgrammingWorks/Project 62 | - Абстрактные слои: https://github.com/HowProgrammingWorks/AbstractionLayers 63 | - Песочницы: https://github.com/HowProgrammingWorks/Sandboxes 64 | - [Node.js модули: ECMA, Common.js, Module API](https://youtu.be/CJr2vS3hjMU) 65 | - Примеры кода: https://github.com/HowProgrammingWorks/Modularity 66 | - [Модули и пакеты, использование package.json и node_modules](https://youtu.be/31sX_3IbXs4) 67 | - Примеры кода: https://github.com/HowProgrammingWorks/Packages 68 | - [Инверсия управления и внедрение зависимостей в Node.js](https://youtu.be/Fz86Fdjz-LM) 69 | - Инверсия управления: https://github.com/HowProgrammingWorks/InversionOfControl 70 | - Внедрение зависимостей: https://github.com/HowProgrammingWorks/DependencyInjection 71 | - [Межпроцессовое взаимодействие в Node.js](https://youtu.be/2OXWZFMvfbc) 72 | - Примеры кода: https://github.com/HowProgrammingWorks/InterProcessCommunication 73 | - [Слои, связанность и связность кода](https://youtu.be/A3RpwNlVeyY) 74 | - Примеры кода: https://github.com/HowProgrammingWorks/Abstractions 75 | - [GRASP принципы](https://github.com/HowProgrammingWorks/Index/blob/master/Courses/GRASP.md) 76 | 77 | ## Разработка серверов приложений и API на Node.js 78 | 79 | - [Клиент-сервер на Node.js TCP и UDP, DNS](https://youtu.be/bHn-wTlTTR0) 80 | - Примеры кода: https://github.com/HowProgrammingWorks/Socket 81 | - [HTTP сервер на Node.js (routing, cluster, IP sticky)](https://youtu.be/7Ufxj0oTaUo) 82 | - Примеры кода: https://github.com/HowProgrammingWorks/NodeServer 83 | - [HTTP сессии и cookies на чистом Node.js](https://youtu.be/T_wKXuWW4Wo) 84 | - Примеры кода: https://github.com/HowProgrammingWorks/Session 85 | - [HTTP запросы в браузере и Node.js: XMLHttpRequest, fetch](https://youtu.be/wMMki2FEYGY) 86 | - Примеры кода: https://github.com/HowProgrammingWorks/HttpRequest 87 | - [Разработка API на Node.js (клиент и сервер)](https://youtu.be/-az912XBCu8) 88 | - Примеры кода: https://github.com/HowProgrammingWorks/API 89 | - [WebSocket сервер на Node.js (электронные таблицы и чат)](https://youtu.be/Sf7ln3n16ws) 90 | - Вебсокеты: https://github.com/HowProgrammingWorks/WebsocketChat 91 | - Чат: https://github.com/HowProgrammingWorks/LiveTable 92 | - [Скаффолдинг для API, UI и данных](https://youtu.be/lipkLQVqDd8) 93 | - Примеры кода: https://github.com/HowProgrammingWorks/Scaffolding 94 | - [Высоконагруженные распределенные приложения на Node.js](https://youtu.be/7tfZDABPvVs) 95 | - [Отдача статики в Node.js](https://youtu.be/n_AdKIzbpBc) 96 | - Примеры кода и задачи: https://github.com/HowProgrammingWorks/ServeStatic 97 | 98 | ## Работа с базами данных на Node.js 99 | 100 | - [Слой доступа к данным, курсор, транзакция](https://youtu.be/CRcSWtWVvrA) 101 | - Примеры кода: https://github.com/HowProgrammingWorks/Transaction 102 | - [Работа с базами данных в Node.js на примере PostgreSQL](https://youtu.be/2tDvHQCBt3w) 103 | - Примеры кода: https://github.com/HowProgrammingWorks/Databases 104 | 105 | ## Лекции по CQRS и Event Sourcing 106 | 107 | - [Паттерн Команда (Command) действие и параметры как объект](https://youtu.be/vER0vYL4hM4) 108 | - Этот паттерн понадобится для следующей лекции 109 | - Примеры кода: https://github.com/HowProgrammingWorks/Command 110 | - [CQS, CQRS, Event Sourcing - Разделение запросов и модификации данных](https://youtu.be/T2tRc80Q8Qw) 111 | - CQS: https://github.com/HowProgrammingWorks/CQS 112 | - CQRS: https://github.com/HowProgrammingWorks/CQRS 113 | - EventSourcing: https://github.com/HowProgrammingWorks/EventSourcing 114 | - [Применение EventSourcing](https://youtu.be/kFNtKiK2SPs) 115 | - См. примеры из предыдущей лекции 116 | - [Модель акторов (Actor Model)](https://youtu.be/xp5MVKEqxY4) 117 | - Примеры кода: https://github.com/HowProgrammingWorks/ActorModel 118 | 119 | ## Управление памятью и параллельное программирование 120 | 121 | - [Утечки памяти в Node.js и JavaScript, сборка мусора и профилирование](https://youtu.be/0oZa64SB2wM) 122 | - Примеры кода: https://github.com/HowProgrammingWorks/MemoryLeaks 123 | - [Atomics, SharedArrayBuffer, worker_threads в Node.js](https://youtu.be/zLm8pnbxSII) 124 | - Потоки: https://github.com/HowProgrammingWorks/Threads/ 125 | - Атомарные операции: https://github.com/HowProgrammingWorks/Atomics/ 126 | - [Семафоры и мьютексы в JavaScript и Node.js](https://youtu.be/JNLrITevhRI) 127 | - Семафоры: https://github.com/HowProgrammingWorks/Semaphore 128 | - Мьютексы: https://github.com/HowProgrammingWorks/Mutex 129 | - [Разделяемая память в многопоточном Node.js](https://youtu.be/KNsm_iIQt7U) - 130 | доклад на конференции JS Fest 2019 Spring 131 | - Слайды: https://www.slideshare.net/JSFestUA/js-fest-2019-nodejs 132 | - [Web Locks API in Node.js and browser](https://youtu.be/auMM-uV12F0) 133 | - Слайды: https://www.slideshare.net/tshemsedinov/web-locks-api 134 | 135 | ## Безопасность, надежность, развертывание и управление инфраструктурой 136 | 137 | - [Необработанные ошибки в промисах](https://youtu.be/1Ml5NE2fsZ8) 138 | - Примеры кода: https://github.com/HowProgrammingWorks/PromiseError 139 | - [Проблема асинхронного стектрейса в JavaScript и Node.js](https://youtu.be/pfiHTx3j87Y) 140 | - Примеры кода: https://github.com/HowProgrammingWorks/StackTrace 141 | - [Логирование на Node.js и JavaScript](https://youtu.be/4DkZj2Cdokc) 142 | - Примеры кода: https://github.com/HowProgrammingWorks/Logging 143 | - [Graceful Shutdown в Node.js](https://youtu.be/ZstnowFeCe0) 144 | - Примеры кода и задачи: https://github.com/HowProgrammingWorks/GracefulShutdown 145 | - [Безопасность приложений Node.js](https://youtu.be/Pdfo1G-gI6s) 146 | - Слайды: https://www.slideshare.net/tshemsedinov/nodejs-security-199004963 147 | - [Serverless Clouds (FaaS) и изоляция контекстов запросов в Node.js](https://youtu.be/x-Rd6fPV6L8) 148 | - Слайды: https://www.slideshare.net/tshemsedinov/serverless-clouds-faas-and-request-context-isolation-in-nodejs 149 | 150 | ## Вспомогательные темы 151 | 152 | - [Асинхронный пул для worker thread pool в Node.js](https://youtu.be/Jj5KZRq4wYI) 153 | 154 | 👉 [Новый курс Node.js 2023](https://github.com/HowProgrammingWorks/Index/blob/master/Courses/NodeJS-2022-2023.md) 155 | -------------------------------------------------------------------------------- /Courses/OOP.md: -------------------------------------------------------------------------------- 1 | # Объектно-ориентированное программирование 2 | 3 | - [Объектно-ориентированное программирование](https://youtu.be/r4ReQlVtfgQ) 4 | - [Структуры (struct) или записи (record)](https://youtu.be/Wb7o_kK4aH4) 5 | - Примеры кода: https://github.com/HowProgrammingWorks/Struct 6 | - [ООП: построение абстракций, инкапсуляция и сокрытие](https://youtu.be/sQwF6-bYeDM) 7 | - Принципы ООП: https://github.com/HowProgrammingWorks/ObjectOrientedProgramming 8 | - Сокрытие: https://github.com/HowProgrammingWorks/InformationHiding 9 | - [ООП: наследование и полиморфизм](https://youtu.be/8OuzIAuMfjw) 10 | - Принципы ООП: https://github.com/HowProgrammingWorks/ObjectOrientedProgramming 11 | - Наследование: https://github.com/HowProgrammingWorks/Inheritance 12 | - Полиморфизм: https://github.com/HowProgrammingWorks/Polymorphism 13 | - [Have Objects Failed? Или что не так с ООП?](https://youtu.be/4yO5OS0vPSw) 14 | - [Дженерики и обобщенное программирование](https://youtu.be/r6W2z3DQhoI) 15 | - Примеры кода: https://github.com/HowProgrammingWorks/Generics 16 | - [Шаблоны проектирования](Patterns.md) 17 | - [Ассоциация, агрегация и композиция объектов](https://youtu.be/tOIcBrzezK0) 18 | - Примеры кода: https://github.com/HowProgrammingWorks/Association 19 | - [Принцип единственной ответственности и закон Конвея](https://youtu.be/o4bQywkBKOI) 20 | - Примеры кода: https://github.com/HowProgrammingWorks/SingleResponsibility 21 | - [Принцип подстановки Барбары Лисков](https://youtu.be/RbhYxygxroc) 22 | - Примеры кода: https://github.com/HowProgrammingWorks/LiskovSubstitution 23 | - [Антипаттерны объектно-ориентированного программирования](https://youtu.be/9d5TG1VsLeU) 24 | - Примеры кода: https://github.com/HowProgrammingWorks/Antipatterns/tree/master/JavaScript/03-OOP 25 | - [GRASP принципы](https://github.com/HowProgrammingWorks/Index/blob/master/Courses/GRASP.md) 26 | - Принцип информационный эксперт / Information Expert 27 | - Зацепление и связность / Coupling and Cohesion 28 | - Чистая выдумка / Pure Fabrication 29 | - Пример декомпозиции класса 30 | -------------------------------------------------------------------------------- /Courses/OS.md: -------------------------------------------------------------------------------- 1 | # Операционные системы 2 | 3 | - [Межпроцессовое взаимодействие в Node.js](https://youtu.be/2OXWZFMvfbc) 4 | - Примеры кода: https://github.com/HowProgrammingWorks/InterProcessCommunication 5 | -------------------------------------------------------------------------------- /Courses/Paradigms-timecodes.md: -------------------------------------------------------------------------------- 1 | # Таймкоды к курсу "Парадигмы программирования" 2 | 3 | Общее оглавление курса тут: https://github.com/HowProgrammingWorks/Index/blob/master/Courses/Paradigms.md 4 | 5 | ## [Объектно-ориентированное программирование](https://youtu.be/r4ReQlVtfgQ) 6 | 7 | - [00:00 Введение](https://youtu.be/r4ReQlVtfgQ?t=0) 8 | - [01:32 Основные понятия](https://youtu.be/r4ReQlVtfgQ?t=92) 9 | - [16:42 Принципы ООП](https://youtu.be/r4ReQlVtfgQ?t=1002) 10 | - [16:49 Принципы GRASP](https://youtu.be/r4ReQlVtfgQ?t=1009) 11 | - [29:04 Принципы SOLID](https://youtu.be/r4ReQlVtfgQ?t=1744) 12 | - [41:29 Паттерны GoF](https://youtu.be/r4ReQlVtfgQ?t=2489) 13 | 14 | ## [Структуры (struct) или записи (record)](https://youtu.be/Wb7o_kK4aH4) 15 | 16 | 17 | ## [Дженерики и обобщенное программирование](https://youtu.be/r6W2z3DQhoI) 18 | 19 | 20 | ## [Have Objects Failed? Или что не так с ООП?](https://youtu.be/4yO5OS0vPSw) 21 | 22 | - [1:46 Присвоенные идеи ООП](https://youtu.be/4yO5OS0vPSw?t=106) 23 | - [11:47 Притянутые достоинства ООП](https://youtu.be/4yO5OS0vPSw?t=707) 24 | - [22:06 Проблемы ООП](https://youtu.be/4yO5OS0vPSw?t=1326) 25 | - [39:56 Как жить с ООП](https://youtu.be/4yO5OS0vPSw?t=2396) 26 | - [56:44 Подходящие области для ООП](https://youtu.be/4yO5OS0vPSw?t=3404) 27 | - [1:03:51 Неподходящие области для ООП](https://youtu.be/4yO5OS0vPSw?t=3831) 28 | - [1:11:30 Заключение](https://youtu.be/4yO5OS0vPSw?t=4290) 29 | 30 | ## [Функциональное программирование на JavaScript](https://youtu.be/0JxSs_GcvbQ) 31 | 32 | 33 | ## [Реактивное программирование на JavaScript](https://youtu.be/7MH8-qQc-48) 34 | 35 | - [0:00 введение](https://youtu.be/7MH8-qQc-48?t=0) 36 | - [3:00 imperative.js](https://youtu.be/7MH8-qQc-48?t=180) 37 | - [4:00 set-get.js](https://youtu.be/7MH8-qQc-48?t=240) 38 | - [7:15 proxy.js](https://youtu.be/7MH8-qQc-48?t=435) 39 | - [23:07 observer.js](https://youtu.be/7MH8-qQc-48?t=1387) 40 | 41 | ## [Асинхронное программирование в Node.js и JavaScript](https://youtu.be/hY6Z6qNYzmc) 42 | 43 | - [5:45 Callbacks](https://youtu.be/hY6Z6qNYzmc?t=345) 44 | - [10:00 Async.js or analogues](https://youtu.be/hY6Z6qNYzmc?t=600) 45 | - [15:47 Events](https://youtu.be/hY6Z6qNYzmc?t=947) 46 | - [18:00 Promise](https://youtu.be/hY6Z6qNYzmc?t=1080) 47 | - [25:20 async/await](https://youtu.be/hY6Z6qNYzmc?t=1520) 48 | - [27:10 Functor + Chaining + composition](https://youtu.be/hY6Z6qNYzmc?t=1630) 49 | - [30:49 Problems of callback, async.js, Proimise, async/await](https://youtu.be/hY6Z6qNYzmc?t=1849) 50 | - [34:00 Add timeout to any function](https://youtu.be/hY6Z6qNYzmc?t=2040) 51 | - [36:55 Make function cancelable](https://youtu.be/hY6Z6qNYzmc?t=2215) 52 | - [37:59 More wrappers](https://youtu.be/hY6Z6qNYzmc?t=2279) 53 | - [39:22 Promisify and Callbackify](https://youtu.be/hY6Z6qNYzmc?t=2362) 54 | - [48:47 Sync function to async](https://youtu.be/hY6Z6qNYzmc?t=2927) 55 | - [41:43 Sync function to Promise](https://youtu.be/hY6Z6qNYzmc?t=2503) 56 | - [43:17 Convertors](https://youtu.be/hY6Z6qNYzmc?t=2597) 57 | - [43:31 Metasync](https://youtu.be/hY6Z6qNYzmc?t=2611) 58 | - [45:26 Function composition](https://youtu.be/hY6Z6qNYzmc?t=2726) 59 | - [47:09 Adynchronous function composition](https://youtu.be/hY6Z6qNYzmc?t=2829) 60 | - [47:58 Flow communication like in electronics](https://youtu.be/hY6Z6qNYzmc?t=2878) 61 | - [50:06 Collectors](https://youtu.be/hY6Z6qNYzmc?t=3006) 62 | - [59:17 Queue](https://youtu.be/hY6Z6qNYzmc?t=3557) 63 | 64 | ## [Модель акторов для параллельных вычислений](https://youtu.be/xp5MVKEqxY4) 65 | -------------------------------------------------------------------------------- /Courses/Paradigms.md: -------------------------------------------------------------------------------- 1 | # Парадигмы программирования 2 | 3 | [Таймкоды и подробное оглавление для части лекций](Paradigms-timecodes.md) 4 | 5 | ## Видео-лекции 6 | 7 | - Процедурное программирование 8 | - [Объектно-ориентированное программирование](https://youtu.be/r4ReQlVtfgQ) 9 | - [Структуры (struct) или записи (record)](https://youtu.be/Wb7o_kK4aH4) 10 | - [Дженерики и обобщенное программирование](https://youtu.be/r6W2z3DQhoI) 11 | - Примеры кода: https://github.com/HowProgrammingWorks/Generics 12 | - [Have Objects Failed? Или что не так с ООП?](https://youtu.be/4yO5OS0vPSw) 13 | - [Функциональное программирование на JavaScript](https://youtu.be/0JxSs_GcvbQ) 14 | - Примеры кода: https://github.com/HowProgrammingWorks/FunctionalProgramming 15 | - [Реактивное программирование на JavaScript](https://youtu.be/7MH8-qQc-48) 16 | - Примеры кода: https://github.com/HowProgrammingWorks/ReactiveProgramming 17 | - [Асинхронное программирование (обзор)](https://youtu.be/hY6Z6qNYzmc) 18 | - [Модель акторов (Actor Model)](https://youtu.be/xp5MVKEqxY4) 19 | - Примеры кода: https://github.com/HowProgrammingWorks/ActorModel 20 | -------------------------------------------------------------------------------- /Courses/Parallel.md: -------------------------------------------------------------------------------- 1 | # Параллельное программирование 2 | 3 | ## Структура курса 4 | 5 | - Разделяемая память и потоки, атомарные операции, memory mapped files 6 | - Проблемы и понятия: race condition, deadlock, livelock, синхронизация, critical section 7 | - Подходы к решению задач: локинг, потокобезопасные и потоконезависимые структуры данных 8 | - Примитивы параллельного программирования в операционных системах 9 | - Мьютексы, Фьютексы и семафоры в том числе бинарные, рекурсивные и легковесные 10 | - Условные переменные, сравнение их с семафорами, оптимизация параллельных программ 11 | - Барьерная синхронизация, спинлоки и синхронизация в юзерспейсе 12 | - Read-write блокировки (много параллельно читают, но только один эксклюзивно пишет) 13 | - Другие подходы: транзакционная память, модель акторов, map/reduce, сети петри 14 | - Другие подходы: асинхронное программирование, реактор, корутины, фьючеры и монады 15 | - Практическое применение Java Threads, C# Tasks 16 | - Параллельное программирование на OpenMP и MPI 17 | - Алгоритмы консенсуса, CAP-теорема и распределенные системы 18 | 19 | ## Видео-лекции 20 | 21 | - [Межпроцессовое взаимодействие в Node.js](https://youtu.be/2OXWZFMvfbc) 22 | - Примеры кода: https://github.com/HowProgrammingWorks/InterProcessCommunication 23 | - [Atomics, SharedArrayBuffer, worker_threads в Node.js](https://youtu.be/zLm8pnbxSII) 24 | - Потоки: https://github.com/HowProgrammingWorks/Threads/ 25 | - Атомарные операции: https://github.com/HowProgrammingWorks/Atomics/ 26 | - [Семафоры и мьютексы в JavaScript и Node.js](https://youtu.be/JNLrITevhRI) 27 | - Семафоры: https://github.com/HowProgrammingWorks/Semaphore 28 | - Мьютексы: https://github.com/HowProgrammingWorks/Mutex 29 | - [Модель акторов (Actor Model)](https://youtu.be/xp5MVKEqxY4) 30 | - Примеры кода: https://github.com/HowProgrammingWorks/ActorModel 31 | - [Разделяемая память в многопоточном Node.js](https://youtu.be/KNsm_iIQt7U) 32 | -------------------------------------------------------------------------------- /Courses/Patterns-2024.md: -------------------------------------------------------------------------------- 1 | # 🚀 Patterns 2024 Training 2 | 3 | ***Rethinking GRASP, SOLID, and GoF for JavaScript and Node.js*** 4 | 5 | > Translations: [EN](./Patterns-2024.md), [UA](./Patterns-2024-ua.md), [RU](./Patterns-2024-ru.md) 6 | 7 | Practical training for rethinking and applying **GRASP**, **SOLID**, **GoF** patterns in asynchronous programming and JavaScript for application and system developers, backend and frontend, Node.js and browser applications. 8 | 9 | ***🗓️ Next onboarding will start 1 October 2024*** 10 | 11 | Understanding these concepts can't just be extracted from a box (or book) and placed into your maind. It varies greatly for different languages and platforms. 12 | Blindly transferring knowledge and practices from C++ or Java to **JavaScript** and C# results in dead ceremonies. 13 | However, they can be revived through practice, tied to realities, and rethought to avoid becoming monstrous and horrors. 14 | 15 | ## 💡 Ultimate Uniqueness 16 | 17 | From the author of the first course on asynchronous programming in JavaScript (17 years ago, KPI University), many conference talks and lectures on Node.js. Over the years, a lot of experience, code reviews, and practices have been collected and analized to rework the course almost every year, absorbing the best practices. Timur Shemsedinov is also a contributor to many platforms and libraries in open source, including Node.js, Metarhia, geoip-lite, MDN, HowProgrammingWorks, metasync... Timur is one of the first who began to port parallel programming abstractions from C++, C#, Java, Go and other languages ​​to JavaScript. 18 | 19 | Here's what I suggest learning and practicing: 20 | 21 | * 📂 Module Systems, Dependency Injection, and Inversion of Control 22 | * 📦 Decomposition of Abstractions and GRASP Principles 23 | * 🧩 Gang of Four patterns rethinked for JavaScript realities 24 | * 🔮 Principles of Isolation and SoC (Separation of Concerns) 25 | * 👷🏻‍♂️ Separation of Applied and System Code 26 | * 🧩 SOLID principles: Single Responsibility, OCP, ISP, DIP, LSP 27 | * 🌟 Multi-Paradigm Programming and Domain-Specific Languages 28 | * 🧩 Contract Programming and Modeling with Schemas 29 | * 🏛️ Clean Architecture and Layered Architecture 30 | 31 | ## Tariff plans 32 | 33 | * Minimal: learning in a common group without a mentor but with interactive calls 34 | * Standard: training with mentor in small groups (up to 10 people) 35 | * Professional: training with mentor, 1-on-1, groups, and additional materials 36 | * Exclusive: personalized training track with a couse author 37 | 38 | ## Training format 39 | 40 | - 🗓️ 12 weeks (3 months) + onboarding (1 week) + secret module 41 | - 👍 You will get access to course materials forever 42 | - 🕑 Every week (mandatory): 1 hour of lectures + 2 hours of calls + 2 hours of independent work 43 | - 🥋 Training and group work with mentors, not just watching videos and reading 44 | - 🙋‍♂️ Optional: for deep dive +3 hours of additional materials on senior plans 45 | - 🏅 You receive a certificate upon completion of the course 46 | - 💬 Languages: RU for lectures; UA, TR, EN, RU for seminars, mentorship and Q&A sessions 47 | - ⚠️ Requirements: basic JavaScript + practical programming experience is recommended 48 | - 🙅 Not for: beginners, look for free materials for beginners at Timur's Youtube and Github 49 | - 💳 Payment plan: full payment or monthly payment for all plans except minimum 50 | - 🗺️ After the course, participation in the community (thousands of people around the world) 51 | 52 | [👉 Buy: https://nodeua.com/Patterns-2024-buy.html](https://nodeua.com/Patterns-2024-buy.html) 53 | 54 | ## 📖 Course Structure 55 | 56 | ### 📦 Unit 1: Structure and Modularity 57 | 58 | Why do we need rethinking and adapting GoF, SOLID, and GRASP for JavaScript/TypeScript realities. How to do it? 59 | 60 | **🗓️ Week 1: Code Characteristics and Optimization Strategies** 61 | 62 | > There is a path that leads to radical improvement of the structure and 63 | characteristics of your code. GoF, SOLID, GRASP principles and 64 | patterns, how to apply them and what do we get. Code characteristics: 65 | readability (understanding), reliability, testability, 66 | maintainability, reusability, flexibility, security. Optimal use of 67 | computing resources: processor, memory, input-output and cognitive 68 | resources of developers. 69 | 70 | **🗓️ Week 2: Native features in language and platforms** 71 | 72 | > JavaScript has built-in contracts: Thenable, Iterable, AsyncIterator, 73 | Callback-last, Callable, Cancelable, Observable, but the culture of 74 | developing through contracts and interfaces is not popular enough in 75 | the community. How can we improve development performance with 76 | Knowledge-driven approach. How patterns may help us in this direction: 77 | to delivery quick and effective, to be performant, to make everydays 78 | work interesting, to be motivated and never burnout. 79 | 80 | **🗓️ Week 3: Instantiation: Creational Patterns and Techniques** 81 | > Creational patterns: Constructor, Singleton, Factory, Pool, Builder, 82 | Prototype, Flyweight, other patterns and techniques. Let’s find 83 | related principles and rethink applied importance of GRASP: Creator; 84 | GRASP: Polymorphism, SOLID: ISP; Aggregation and Composition. How to 85 | Save memory and other resources; how to use optimizations and caching. 86 | How to develop extremely quick and low-latency code for any devices 87 | we need to support and make this code clear for colleagues. 88 | 89 | **🗓️ Week 4: Isolation and Separation of Concerns** 90 | 91 | > SoC is a general engineering principle to build flexible, reliable, 92 | and easy-modifying systems. We may use GoF patterns: Mediator, Bridge, 93 | Abstract factory, Strategy (JavaScript-specific implementation: 94 | Map); Modularity; GRASP: Information 95 | Expert, Indirection, and Protected variations principles; SOLID: SRP; 96 | This will improve code testability and reduce integration expenses. 97 | 98 | ### 📦 Unit 2: Execution and Contracts 99 | 100 | Working with application modules/components integration we need 101 | contract programming; it allows us to develop parts independently; 102 | scale the team; improve project manageability and make a development 103 | plan much predictable. 104 | 105 | **🗓️ Week 5: Contracts: Interfaces for Component Interaction** 106 | 107 | > Patterns: Adapter (Wrapper), Facade, Bridge, Composite, Proxy, 108 | Promisify; Front controller; GRASP: Low Coupling and High Cohesion; 109 | SOLID: LSP (Liskov); and SOLID: OCP (Open-Closed); It opens 110 | the possibility of step-by-step refactoring, overcoming technical debt 111 | and increasing subsystem stability; reducing influence (coupling) 112 | between layers and modules. At the top level this makes possible to 113 | scale the team, manage priorities, and make architectural decisions. 114 | 115 | **🗓️ Week 6: Decoupling with Events and Messaging** 116 | 117 | > Next great approach is event-based programming. This is useful in UIs, 118 | distributed systems, shared resources cooperative access. Async and 119 | event-driven programming made Node.js the ultimate solution for 120 | non-blocking I/O. We will consider GRASP: Pure Fabrication and Low 121 | Coupling; AsyncQueue and queueing systems, Async collections, etc. 122 | 123 | **🗓️ Week 7: Streams: Data Flows and Transformations** 124 | 125 | > Reactive programming has become a separate paradigm; Streams and 126 | Signals are based on GRASP: Pure Fabrication and Event-driven approach 127 | with data transformation operators it is widely used in network 128 | protocols, file system and data access, game dev and financial and 129 | analytical systems, embedded devices control and telemetry; other 130 | subject areas. It gives expressive syntax, higher level of 131 | abstraction, flexibility and performance for better user experience. 132 | 133 | **🗓️ Week 8: Handling Errors: Exceptions and Soft Failures** 134 | 135 | > We will explore error-handling best practices using both 136 | exceptions and domain-specific (soft errors). Gracefully recover and 137 | soft failures will increase whole system performance. We will use 138 | Chain of Responsibility, SOLID, Promises, fallback mechanisms to 139 | handle non-critical errors; GRASP: Protected Variations and Custom 140 | JavaScript-specific AggregateError and Error.prototype.cause and 141 | error serialization for network transmission. 142 | 143 | ### 📦 Unit 3: Runtime for Applications 144 | 145 | Bringing everything together under real-world conditions. In this unit, 146 | we'll explore how the foundational concepts of structure, contracts, and 147 | patterns translate into running, scalable applications. This part will 148 | focus on how runtime considerations shape architectural decisions. 149 | 150 | **🗓️ Week 9: Semantics: Expressive DSLs** 151 | 152 | > To improve code expressiveness and clearer semantics; any complex 153 | software needs to invent DSL (domain-specific language). For DSL we 154 | can use well-known syntax, JSON, JSON5, Markdown, and even JavaScript 155 | itself. We will consider patterns: Command, Interpreter, State, 156 | Strategy, Visitor. DSLs makes code readable for domain experts, 157 | analytics and even experienced users. It enhances communication and 158 | understanding, speeds up development, adapt easily to new 159 | requirements, simplify onboarding and knowledge transfer, hides 160 | technical complexity, allows specialists to focus on certain field, 161 | improving project predictability. 162 | 163 | **🗓️ Week 10: All-agnostic as a Default Strategy** 164 | 165 | > Developing frameworks-agnostic, platform-agnostic, protocol-agnostic, 166 | database-agnostic, cloud-agnostic systems as a default approach to 167 | ensure flexibility and free architectural solutions; removes vendor 168 | lock, etc. We certainly don't need to implement all aspects of 169 | agnostic approach, but some of them will bring valuable benefits in 170 | system scaling and during system operation. We will use isolation, 171 | GRASP: Controller; SOLID: DIP; using IoC and DI; using interfaces and 172 | Strategy pattern to decouple from implementations. 173 | 174 | **🗓️ Week 11: Scaling Applications and Architectural Styles** 175 | 176 | > This week we'll explore how to design systems that can scale and 177 | evolve efficiently by leveraging different architectural styles: such 178 | as DDD, Layered Architecture, SOA, Microservices, Event-Driven, 179 | Monolithic, Ports and Adapters, Clean Architecture, Event-Sourcing, 180 | CQRS, Pipeline, Peer-to-Peer, Client-Server Architecture and how 181 | SOLID, GRASP and GoF can help us in implementing architecture. 182 | 183 | **🗓️ Week 12: Methodology: How to Start Applying Concepts** 184 | 185 | > The final part of the program focuses on practical application. 186 | We will go over how to start implementing the concepts and patterns 187 | covered in the course in real-world projects. This session provides 188 | actionable strategies to build a roadmap for adoption. How to identify 189 | the need for patterns and principles. Refactoring legacy Systems, 190 | Introduction of new development techniques and activities; How to 191 | building a Roadmap: Planning your own learning and team development 192 | using the course principles. 193 | 194 | ## Tariff plans 195 | 196 | * Minimal: learning in a common group without a mentor but with interactive calls 197 | * Standard: training with mentor in small groups (up to 10 people) 198 | * Professional: training with mentor, 1-on-1, groups, and additional materials 199 | * Exclusive: personalized training track with a couse author 200 | 201 | [👉 Buy: https://nodeua.com/Patterns-2024-buy.html](https://nodeua.com/Patterns-2024-buy.html) 202 | -------------------------------------------------------------------------------- /Courses/Patterns-timecodes.md: -------------------------------------------------------------------------------- 1 | # Таймкоды к курсу "Шаблоны проектирования" 2 | 3 | Общее оглавление курса тут: https://github.com/HowProgrammingWorks/Index/blob/master/Courses/Patterns.md 4 | 5 | ## [Шаблон Singleton (синглтон) в JavaScript](https://youtu.be/qdJ5yikZnfE) 6 | 7 | - [00:00:00 Singleton через конструктор прототипа](https://youtu.be/qdJ5yikZnfE?t=0) 8 | - [00:03:27 Singleton через замыкания](https://youtu.be/qdJ5yikZnfE?t=207) 9 | - [00:06:10 Пример singleton через замыкания](https://youtu.be/qdJ5yikZnfE?t=370) 10 | - [00:08:15 Пример singleton через замыкания в функциональном стиле](https://youtu.be/qdJ5yikZnfE?t=495) 11 | - [00:09:23 Пример singleton через замыкания в функциональном стиле (упрощенный)](https://youtu.be/qdJ5yikZnfE?t=563) 12 | - [00:10:32 Создание singleton в JS](https://youtu.be/qdJ5yikZnfE?t=632) 13 | 14 | ## [Фабрики и пулы объектов в JavaScript, factorify, poolify](https://youtu.be/Ax_mSvadFp8) 15 | 16 | - [00:00:00 Введение](https://youtu.be/Ax_mSvadFp8?t=0) 17 | - [00:02:38 Фабрика ( factory )](https://youtu.be/Ax_mSvadFp8?t=158) 18 | - [00:05:44 Фабрика прототипов](https://youtu.be/Ax_mSvadFp8?t=344) 19 | - [00:10:48 Фабрика классов](https://youtu.be/Ax_mSvadFp8?t=648) 20 | - [00:12:28 Фабрика функций](https://youtu.be/Ax_mSvadFp8?t=748) 21 | - [00:15:55 Фабричные методы](https://youtu.be/Ax_mSvadFp8?t=955) 22 | - [00:16:55 Превращение функций в фабрику ( factorify)](https://youtu.be/Ax_mSvadFp8?t=1015) 23 | - [00:19:44 Пул ( pool )](https://youtu.be/Ax_mSvadFp8?t=1184) 24 | - [00:23:05 Работа с пулом](https://youtu.be/Ax_mSvadFp8?t=1385) 25 | - [00:23:04 Обобщенный пул](https://youtu.be/Ax_mSvadFp8?t=1384) 26 | - [00:24:55 Пулифицирование фабрики ( poolify )](https://youtu.be/Ax_mSvadFp8?t=1495) 27 | - [00:28:50 Улучшеная пулифицированная фабрика](https://youtu.be/Ax_mSvadFp8?t=1730) 28 | - [00:32:10 Ассинхронная работа с пулом](https://youtu.be/Ax_mSvadFp8?t=1930) 29 | - [00:45:25 Одновременное использование factorify и poolify](https://youtu.be/Ax_mSvadFp8?t=2725) 30 | - [00:51:54 Обобщение](https://youtu.be/Ax_mSvadFp8?t=3114) 31 | 32 | ## [Фасад - петтерн для скрытия сложности](https://youtu.be/oJtBO7CystE) 33 | 34 | 35 | ## [Адаптер (Adapter) - паттерн достижения совместимости](https://youtu.be/cA65McLQrR8) 36 | 37 | - [0:00 введение](https://youtu.be/cA65McLQrR8?t=0) 38 | - [1:30 adapter на prototype](https://youtu.be/cA65McLQrR8?t=90) 39 | - [3:57 adapter на class](https://youtu.be/cA65McLQrR8?t=237) 40 | - [4:23 adapter на function](https://youtu.be/cA65McLQrR8?t=263) 41 | - [6:15 adapter на классе-обертке (boxing)](https://youtu.be/cA65McLQrR8?t=375) 42 | - [7:08 adapter на замыканиях (closure)](https://youtu.be/cA65McLQrR8?t=428) 43 | - [8:10 adapter на interface](https://youtu.be/cA65McLQrR8?t=490) 44 | - [13:45 adapter на events](https://youtu.be/cA65McLQrR8?t=825) 45 | - [16:00 выводы](https://youtu.be/cA65McLQrR8?t=960) 46 | 47 | ## [Стратегия (Strategy) - выбор взаимозаменяемого поведения](https://youtu.be/hO8VSVv0NqM) 48 | 49 | - [0:00 введение](https://youtu.be/hO8VSVv0NqM?t=0) 50 | - [3:40 strategy на class](https://youtu.be/hO8VSVv0NqM?t=220) 51 | - [15:04 strategy на prototype](https://youtu.be/hO8VSVv0NqM?t=904) 52 | - [16:14 strategy на function](https://youtu.be/hO8VSVv0NqM?t=974) 53 | - [20:22 strategy с примером работы над массивом](https://youtu.be/hO8VSVv0NqM?t=1222) 54 | - [24:07 обобщение](https://youtu.be/hO8VSVv0NqM?t=1447) 55 | 56 | ## [Паттерн Команда (Command) действие и параметры как объект](https://youtu.be/vER0vYL4hM4) 57 | 58 | 59 | ## [Паттерн Revealing Constructor - открытый конструктор](https://youtu.be/leR5sXRkuJI) 60 | 61 | 62 | ## [Паттерн Наблюдатель (Observer + Observable)](https://youtu.be/_bFXuLcXoXg) 63 | 64 | 65 | ## [Принцип единственной ответственности и закон Конвея](https://youtu.be/o4bQywkBKOI) 66 | 67 | 68 | ## [Ассоциация, агрегация и композиция объектов в JavaScript](https://youtu.be/tOIcBrzezK0) 69 | 70 | 71 | ## [Принцип подстановки Барбары Лисков](https://youtu.be/RbhYxygxroc) 72 | 73 | 74 | ## [Антипаттерны ООП (часть 1) c примерами на JavaScript](https://youtu.be/9d5TG1VsLeU) 75 | -------------------------------------------------------------------------------- /Courses/Patterns.md: -------------------------------------------------------------------------------- 1 | # Patterns for JavaScript and Typescript 2 | 3 | GRASP, SOLID, and GoF patterns for Frontend & Backend modern development 4 | 5 | - SOLID 6 | - Single responsibility principle: https://github.com/HowProgrammingWorks/SingleResponsibility 7 | - Open/closed principle: https://github.com/HowProgrammingWorks/OpenClosed 8 | - Liskov substitution principle: https://github.com/HowProgrammingWorks/LiskovSubstitution 9 | - Interface segregation principle: https://github.com/HowProgrammingWorks/InterfaceSegregation 10 | - Dependency inversion principle: https://github.com/HowProgrammingWorks/DependencyInversion 11 | - Instantiation: Creational Patterns and Techniques 12 | - Decomposition, Instantiation, Encapsulation, Aggregation, Composition, Association, Delegation 13 | - Class composition (association, aggregation) 14 | - GRASP: Information expert 15 | - GRASP: Creator 16 | - Abstract factory: https://github.com/HowProgrammingWorks/AbstractFactory 17 | - Builder: https://github.com/HowProgrammingWorks/Builder 18 | - Factory method: https://github.com/HowProgrammingWorks/Factory 19 | - Object pool: https://github.com/HowProgrammingWorks/Pool 20 | - Prototype: https://github.com/HowProgrammingWorks/PrototypePattern 21 | - Do not confuse Prototype with Prototype-programming: https://github.com/HowProgrammingWorks/Prototype 22 | - Singleton: https://github.com/HowProgrammingWorks/Singleton 23 | - Revealing Constructor 24 | - Flyweight: https://github.com/HowProgrammingWorks/Flyweight 25 | - Isolation and Separation of Concerns 26 | - Contracts and Contract programming, Interfaces 27 | - Modularity, Layers and Low Coupling 28 | - GRASP: Low coupling 29 | - GRASP: High cohesion 30 | - GRASP: Controller 31 | - GRASP: Indirection 32 | - Adapter: https://github.com/HowProgrammingWorks/Adapter 33 | - Bridge: https://github.com/HowProgrammingWorks/Bridge 34 | - Decorator: https://github.com/HowProgrammingWorks/Decorator 35 | - Wrapper: https://github.com/HowProgrammingWorks/Wrapper 36 | - Facade: https://github.com/HowProgrammingWorks/Facade 37 | - Chain of responsibility: https://github.com/HowProgrammingWorks/ChainOfResponsibility 38 | - Mediator: https://github.com/HowProgrammingWorks/Mediator 39 | - Visitor: https://github.com/HowProgrammingWorks/Visitor 40 | - Proxy: https://github.com/HowProgrammingWorks/Proxy 41 | - Decoupling with Events and Messaging 42 | - EventTarget and EventEmitter: https://github.com/HowProgrammingWorks/Events 43 | - EventEmitter: https://github.com/HowProgrammingWorks/EventEmitter 44 | - Observer: https://github.com/HowProgrammingWorks/Observer 45 | - Streams: Data Flows and Transformations 46 | - RxJS and Event streams 47 | - Actor model 48 | - State and data manipulations 49 | - Command: https://github.com/HowProgrammingWorks/Command 50 | - State: https://github.com/HowProgrammingWorks/State 51 | - Iterator: https://github.com/HowProgrammingWorks/Iterator 52 | - Composite: https://github.com/HowProgrammingWorks/Composite 53 | - Memento: https://github.com/HowProgrammingWorks/Memento 54 | - Automata, Finite-state machine 55 | - Related topics 56 | - Error handling, Exceptions, Soft Failures, Logging 57 | - DSL, AST with Pattern Interpreter, LISP 58 | - Service Locator 59 | - Interpreter: https://github.com/HowProgrammingWorks/Interpreter 60 | - Strategy: https://github.com/HowProgrammingWorks/Strategy 61 | - Template method: https://github.com/HowProgrammingWorks/TemplateMethod 62 | - GRASP: Polymorphism 63 | - GRASP: Protected variations 64 | - GRASP: Pure fabrication 65 | 66 | ## Books 67 | 68 | - «Design Patterns: Elements of Reusable Object-Oriented Software» Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides 69 | - «Refactoring: Improving the Design of Existing Code Edition Unstated» Martin Fowler, Kent Beck, John Brant, William Opdyke, Don Roberts, Erich Gamma 70 | - «Patterns of Enterprise Application Architecture» Martin Fowler 71 | - «Clean Architecture: A Craftsman's Guide to Software Structure and Design» Robert C. Martin 72 | - «Clean Code: A Handbook of Agile Software Craftmanship» Robert C. Martin 73 | - «The Clean Coder: A Code of Conduct for Professional Programmers» Robert C. Martin 74 | - «Designing Object Oriented C++ Applications Using The Booch Method» Robert C. Martin 75 | - «Agile Software Development, Principles, Patterns, and Practices» Robert C. Martin 76 | - «Agile Principles, Patterns, And Practices in C#» Robert C. Martin 77 | - «UML for Java Programmers» Robert C. Martin 78 | - «Working Effectively with Legacy Code» Robert C. Martin 79 | - «Clean Agile: Back to Basics» Robert C. Martin 80 | - «Clean Craftsmanship: Disciplines, Standards, and Ethics» Robert C. Martin 81 | - «Functional Design: Principles, Patterns, and Practices» Robert C. Martin 82 | 83 | ## Old lectures 84 | 85 | - Singleton: https://youtu.be/qdJ5yikZnfE 86 | - Factory and Pool: https://youtu.be/Ax_mSvadFp8 87 | - Facade: https://youtu.be/oJtBO7CystE 88 | - Adapter: https://youtu.be/cA65McLQrR8 89 | - GoF Strategy: https://youtu.be/hO8VSVv0NqM 90 | - GoF Command: https://youtu.be/vER0vYL4hM4 91 | - Revealing Constructor: https://youtu.be/leR5sXRkuJI 92 | - GoF Observable + Observer: https://youtu.be/_bFXuLcXoXg 93 | - Single responsibility principle: https://youtu.be/o4bQywkBKOI 94 | - Association, aggregation, composition: https://youtu.be/tOIcBrzezK0 95 | - Liskov substitution principle: https://youtu.be/RbhYxygxroc 96 | - Iterator and AsyncIterator: https://youtu.be/rBGFlWpVpGs 97 | - Thenabe: https://youtu.be/Jdf_tZuJbHI https://youtu.be/DXp__1VNIvI 98 | - Observer + Observable: https://youtu.be/_bFXuLcXoXg 99 | -------------------------------------------------------------------------------- /Courses/Proposal-2023.md: -------------------------------------------------------------------------------- 1 | ## Мультипарадигмене програмування 2 | 3 | 1. Імперативний та декларативний підхід 4 | 2. Структуроване та неструктуроване програмування 5 | 3. Процедурне програмування 6 | 4. Функціональне програмування 7 | 5. Програмування на базі подій та реактивне програмування 8 | 6. Об'єктно-орієнтоване програмування 9 | 7. Прототипне програмування 10 | 8. Узагальнене програмування та дженеріки 11 | 9. Автоматне програмування, скінченні автомати (машини станів) 12 | 10. Модель акторів 13 | 11. Спеціалізовані мови для предметних областей (DSL) 14 | 12. Програмування на потоках даних 15 | 13. Метапрограмування 16 | 14. Динамічна інтерпретація метамоделей 17 | 15. Мультипарадигмене програмування та поєднання декількох парадигм 18 | 16. Контрактне прорамування 19 | 17. Компонентний підхід 20 | 18. Паралельне та асинхронне програмування 21 | 22 | ## Веб програмування для бекенд та фронтенд 23 | 24 | 1. Базові концепції, синтаксис та семантика мов JavaScript та TypeScript 25 | 2. Стан застосунку, структури даних та колекції 26 | 3. Підходи до роботи зі станом: stateful and stateless 27 | 4. Структури даних у JavaScript: стек, черга, дек, дерева та графи 28 | 5. Проекції та відображення наборів даних 29 | 6. Оцінка обчислювальної складності та оптимізація виконання у v8 30 | 7. Що таке технологічний стек та огляд стеків для веб 31 | 8. Середовище розробки та налагодження коду 32 | 9. Ітерування: рекурсія, ітератори та генератори 33 | 10. Структура додатку: файли, модулі, компоненти, системи модульності 34 | 11. Об'єкт, прототип та клас 35 | 12. Часткове застосування та каррування, композиція функцій у JavaScript 36 | 13. Чейнінг для методів та функцій, домішки (mixins), мемоізація, фабрики 37 | 14. Залежності та бібліотеки, зачеплення та зв'язність коду 38 | 15. Антипатерни, ревью коду та рефакторинг 39 | 16. Угоди та стандарти, контракти 40 | 17. Тестування для бекенд та фронтенд 41 | 18. Події, таймери, лісенери 42 | 19. Регулярні вирази та BNF 43 | 20. Інтроспекція та рефлексія, серіалізація та десеріалізація 44 | 45 | ## Асинхронне програмування 46 | 47 | 1. Огляд паралельного програмування, загальна пам'ять та примітиви синхронізації 48 | 2. Асинхронність на колбеках (функції зворотнього виклику) 49 | 3. Блокуючі та неблокуючі операції, I/O (введення-виведення) 50 | 4. Паттерни EventEmitter та AsyncEmitter 51 | 5. Асинхронні примітиви: Thenable, Promise, Future, Deferred 52 | 6. Співпрограми, горутіни, async/await 53 | 7. Адаптери між асинхронними контрактами: promisify, callbackify, asyncify 54 | 8. Асинхронна та паралельна сумісність 55 | 9. Підхід до передачі повідомлень та модель акторів 56 | 10. Асинхронна черга та асинхронні колекції 57 | 11. Асинхронні коллектори даних 58 | 12. Асинхронні генератори та ітератори 59 | 13. Обробка помилок та відміна асинхронних операцій 60 | 14. Асинхронна композиція функцій 61 | 15. Паттерн відкритий конструктор (Revealing Constructor) 62 | 16. Паттерн спостерігач (Observer + Observable) 63 | 17. Async hooks для Node.js 64 | 18. Shared memory у режимі багатопоточності Node.js 65 | 19. Асинхронний pool для worker thread у Node.js 66 | 20. Lock-free структури даних 67 | 68 | ## Архітектура програмних систем 69 | 70 | 1. Декомпозиція, іменування та зв'язування 71 | 2. Взаємодія між компонентами ПЗ 72 | 3. Зв'язування через простори імен 73 | 4. Взаємодія за допомогою викликів та колбеків 74 | 5. Взаємодія за допомогою подій та повідомлень 75 | 6. Інтерфейси, протоколи та контракти 76 | 7. Цибулева (onion) або багатошарова архітектура 77 | 8. Аналіз ризиків, слабкі сторони, нефункціональні вимоги 78 | 9. Координація та корегування процесу 79 | 10. Безперервна інтеграція та розгортання 80 | 11. Багатоаспектна оптимізація 81 | 12. Основи паралельних обчислень 82 | 12. Бази даних та постійне зберігання 83 | 13. Ключ-значення та інші абстрактні структури даних 84 | 14. Реляційна модель даних та ER-діаграми 85 | 15. Безсхемні, об'єктно- та документо-орієнтовані бази даних 86 | 16. Ієрархічна модель даних та графові бази даних 87 | 17. Колонкові бази даних та in-memory бази даних 88 | 18. Розподілені системи 89 | 19. Міжпроцесна взаємодія 90 | 20. Безконфліктні репліковані типи даних (CRDT) 91 | 21. Узгодженість, доступність та розподіленість 92 | 22. Стратегії вирішення конфліктів 93 | 23. Протоколи консенсусу 94 | 24. CQRS, EventSourcing 95 | 96 | ## Корпоративні інформаційні системи 97 | 98 | 1. Введення в технологію Node.js, огляд вбудованого API 99 | 2. Асинхронне програмування в Node.js 100 | 3. Робота з файлами, буферами та файловими потоками в Node.js 101 | 4. Спостереження за файловою системою в Node.js 102 | 5. Структура та архітектура додатків 103 | 6. Модулі ECMA, Common.js, Module API 104 | 7. Модулі та пакети, використання package.json та node_modules 105 | 8. Міжпроцесна взаємодія (IPC), воркер-треди 106 | 9. Domain Driven Design для інформаційних систем 107 | 10. Фреймворк-агностік та транспорт-агностік підходи 108 | 11: Ізоляція коду та впровадження залежностей 109 | 12: Застосування принципів GRASP, SOLID, DDD, LoD, GoF 110 | 13. Розробка серверів додатків і API на Node.js 111 | 14. Клієнт-сервер на Node.js, протоколи TCP і UDP, DNS 112 | 15. Сервер HTTP, HTTP/2, HTTP/3: маршрутизація, кластер, IP sticky 113 | 16. HTTP сесії і файли cookie, fetch API, WebSocket, віддача статики 114 | 17. Скаффолдинг для API, UI та даних 115 | 18. Високонавантажені та розподілені додатки 116 | 19. Робота з базами даних, шар доступу до даних, курсор, транзакція 117 | 20. Memory leaks в Node.js і JavaScript, збірка мусора і профілювання 118 | 21. Atomics, SharedArrayBuffer, worker_threads в Node.js 119 | 22. Безпека, надійність та управління інфраструктурою 120 | 23. Тулінг: логування, graceful shutdown, CI, CD 121 | 24. Serverless хмари (FaaS) та ізоляція контекстів 122 | -------------------------------------------------------------------------------- /Courses/Quality.md: -------------------------------------------------------------------------------- 1 | # Качество, тестирование и надежность ПО 2 | 3 | - [Измерение производительности кода и оптимизация в JavaScript и Node.js](https://youtu.be/sanq2X7Re8o) 4 | - Примеры кода: https://github.com/HowProgrammingWorks/Benchmark 5 | - [Тестирование: юнит-тесты с примерами на JavaScript](https://youtu.be/CszugIag2TA) 6 | - Примеры кода: https://github.com/HowProgrammingWorks/Testing 7 | - Примеры кода: https://github.com/HowProgrammingWorks/Unittesting 8 | - [Тестирование: системное и интеграционное тестирование на JavaScript](https://youtu.be/OuKu_6H_6gE) 9 | - Примеры кода: https://github.com/HowProgrammingWorks/Unittesting 10 | -------------------------------------------------------------------------------- /Courses/Roadmap-min.md: -------------------------------------------------------------------------------- 1 | # Roadmap 2 | 3 | ![Roadmap](https://user-images.githubusercontent.com/4405297/192468178-5f77ce2c-b536-468c-aad0-16aabd3abd27.png) 4 | 5 | ## Programming Fundamentals 6 | 7 | - [Основы JavaScript: облегченный курс для начинающих](https://www.youtube.com/playlist?list=PLpmhTzMVLuROAIey9vW3pyRSpHfknLssu) 8 | - [MDN JavaScript Guide](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide) 9 | 10 | ## Asynchronous programming 11 | 12 | - [Асинхронное программирование](./Asynchronous.md) 13 | - [Таймкоды к курсу](./Asynchronous-timecodes.md) 14 | 15 | ## Node.js 16 | 17 | - [Технологический стек Node.js](./NodeJS.md) 18 | - [Таймкоды к курсу](./NodeJS-timecodes.md) 19 | 20 | -------------------------------------------------------------------------------- /Courses/Roadmap.md: -------------------------------------------------------------------------------- 1 | # Roadmap 2 | 3 | ![Roadmap](https://user-images.githubusercontent.com/4405297/192525334-665c5969-4957-4cb8-884c-b31b440ba7ad.png) 4 | 5 | Варианты роадмапа для разных специальностей: https://github.com/HowProgrammingWorks/Index/blob/master/Courses/Specialties.md 6 | 7 | ## Programming Fundamentals 8 | 9 | - [Основы JavaScript: облегченный курс для начинающих](https://www.youtube.com/playlist?list=PLpmhTzMVLuROAIey9vW3pyRSpHfknLssu) 10 | - [Углубленный JavaScript: старый курс](./Fundamentals.md) 11 | - [MDN JavaScript Guide](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide) 12 | - [Парадигмы программирования](./Paradigms.md), [метапрограммирование и мультипарадигменное программирование](./Metaprogramming.md) 13 | 14 | ## Web and Frontend 15 | 16 | - [Курс по верстке: HTML, CSS от Евгения Андриканича](https://www.youtube.com/playlist?list=PLM6XATa8CAG4F9nAIYNS5oAiPotxwLFIr) 17 | - [План развития фронтендера от Евгения Андриканича](https://miro.com/app/board/uXjVOeSIAPo=/) 18 | 19 | ## Asynchronous programming 20 | 21 | - [Асинхронное программирование](./Asynchronous.md) 22 | - [Таймкоды к курсу](./Asynchronous-timecodes.md) 23 | 24 | ## OOP, GRASP, SOLID, GoF 25 | 26 | - [Шаблоны проектирования](./Patterns.md) 27 | - [Объектно-ориентированное программирование](./OOP.md) 28 | - [GRASP принципы с адаптацией для JavaScript и Node.js](./GRASP.md) 29 | - [Архитектура информационных систем](./Architecture.md) 30 | - [Стратегия входа Node.js в корпоративный сектор](https://youtu.be/FLcBrP1KFYk) 31 | - [Как Node.js разработчику подготовиться к проектам корпоративного уровня](https://youtu.be/DghzF_OmodY) 32 | - [Как GRASP и SOLID защитят ваш Node.js код от мидлварей и протекания абстракций](https://youtu.be/p063fy3fHZM) 33 | 34 | ## Node.js 35 | 36 | - [Технологический стек Node.js](./NodeJS.md) 37 | - [Таймкоды к курсу](./NodeJS-timecodes.md) 38 | - [Новый курс Node.js 2022-23](./NodeJS-2022-2023.md) 39 | 40 | ## Architecture and Enterprise Information Systems 41 | 42 | - [Проектирование сетевых протоколов и сервисов](./Network.md) 43 | - [Архитектура информационных систем](./Architecture.md) 44 | - [Проектирование баз данных](./Databases.md) 45 | - [Высоконагруженные и масштабируемые системы](./Highload.md) 46 | - [Безопасность информационных систем](./Security.md) 47 | 48 | # Seminars, Interviews, Public talks 49 | 50 | - [Индекс докладов, интервью и других выступлений](./Talks.md) 51 | - [Публичные собеседования](https://www.youtube.com/watch?v=tlBg-vwYpbs&list=PLHhi8ymDMrQZIC0Py5pekvdH49rkXH_MJ) 52 | - Записи семинаров (скоро будет плейлист за все годы) 53 | -------------------------------------------------------------------------------- /Courses/Security.md: -------------------------------------------------------------------------------- 1 | # Безопасность информационных систем 2 | 3 | - [SQL Injection](https://youtu.be/Pdfo1G-gI6s) 4 | - https://github.com/HowProgrammingWorks/SQLInjection 5 | - [Path Traversal Attack](https://youtu.be/Pdfo1G-gI6s) 6 | - https://github.com/HowProgrammingWorks/PathTraversal 7 | - Cross-Site Request Forgery (CSRF) 8 | - https://github.com/HowProgrammingWorks/CSRF 9 | - Cross-site Scripting (XSS) 10 | - https://github.com/HowProgrammingWorks/XSS 11 | - Denial of Service (DoS) 12 | - https://github.com/HowProgrammingWorks/DoS 13 | -------------------------------------------------------------------------------- /Courses/Seminars.md: -------------------------------------------------------------------------------- 1 | # Семинары: основы программирования, JavaScript и другие языки 2 | 3 | - [JavaScript семинар #1 по курсу HowProgrammingWorks](https://youtu.be/eYjf_WrYAqk) 4 | - [JavaScript семинар #2 по курсу HowProgrammingWorks](https://youtu.be/05iTAT_t6cI) 5 | - [JavaScript семинар #3 по курсу HowProgrammingWorks](https://youtu.be/CtwTMX6wZpY) 6 | - [JavaScript семинар #8 по курсу HowProgrammingWorks](https://youtu.be/T7e9D4sAYWY) 7 | - [💻 JavaScript семинар #10: рефакторинг и ревью кода](https://youtu.be/efb7sAOeMPQ) 8 | - [💻 JavaScript семинар #11: рефакторинг и ревью кода](https://youtu.be/kLBR2dkebGk) 9 | - [💻 JavaScript семинар #12: рефакторинг и ревью кода](https://youtu.be/s2gAKg9CtsI) 10 | - [💻 Семинар #14: ревью проектов на JavaScript и Java](https://youtu.be/l-joOy1Y2SI) 11 | - [💻 JavaScript семинар #15: ревью кода](https://youtu.be/XcFfpbkYxlg) 12 | -------------------------------------------------------------------------------- /Courses/Short.md: -------------------------------------------------------------------------------- 1 | # Программная инженерия 2 | 3 | Программа на 1й, 2й и 3й курс. 4 | 5 | ## Основы программирования: 1 семестр 1 курса 6 | 7 | - Абстракция, модель, алгоритм, программа, синтаксис 8 | - Значение, идентификатор, переменная и константа, литерал, присвоение 9 | - Типы данных, скалярные, ссылочные и структурные типы 10 | - Оператор и выражение, блок кода, функция, цикл, условие 11 | - Процедуры и функции, стек и куча 12 | - Модули, компоненты, библиотеки 13 | - Языки и парадигмы программирования, технологические стеки 14 | - Отладка, обработка ошибок, линтеры, трансляторы и компиляторы 15 | - Системы контроля версий и пакетные менеджеры, git, npm 16 | - Функции первого класса, лямбды, контексты, замыкания 17 | - Массивы, объекты, классы, прототипы 18 | - Частичное применение и каррирование, функции высшего порядка, колбеки 19 | - Работа со строками, шаблонами и юникодом, регулярные выражения и парсинг 20 | - Антипаттерны процедурного программирования и общие для всех парадигм 21 | - Консоль и командная строка 22 | - Чеининг функций и объектов 23 | - Рекурсия: косвенная и хвостовая, стек, выход 24 | - Таймеры, EventEmitter, события 25 | - Коллекции, множества, хештаблицы 26 | - Сериализация и десериализация 27 | - Code Review, рефакторинг: причины, цели, техники и процесс 28 | - Композиция: pipe, compose 29 | - Примеси: mixin, extend, Object.assign, class λ-mixin 30 | - Прототипное программирование и наследование 31 | - Функции-обертки, мемоизация 32 | - Фабрики и пулы объектов 33 | 34 | ## Основы программирования: 2 семестр 1 курса 35 | 36 | - Списки: односвязные, двусвязные, циклические, развернутые 37 | - Стек, очередь, дэк, графые структуры 38 | - Записи (struct) 39 | - Проекции и отображения наборов данных 40 | - Неизменяемые структуры данных (immutable) 41 | - Работа с файлами 42 | - Генераторы и асинхронные генераторы 43 | - Итераторы и асинхронные итераторы 44 | - Оценка сложности алгоритмов 45 | - Измерение производительности кода и оптимизация 46 | - Обзор парадигмы: Объектно-ориентированное программирование 47 | - Принципы: абстрагирование, инкапсуляция, наследование, полиморфизм 48 | - Сокрытие в ООП и особенности на JavaScript 49 | - Интерфейсы vs наследование в ООП 50 | - Информационный эксперт, закон деметры, создатель, контроллер, чистая выдумка 51 | - Слабое зацепление и высокая связность 52 | - Посредник, устойчивость к изменениям 53 | - Ассоциация, агрегация и композиция объектов 54 | - Антипаттерны объектно-ориентированного программирования 55 | - Дженерики и обобщенное программирование 56 | - Обзор парадигмы: Функциональное программирование 57 | - Функциональные объекты, функторы и монады 58 | - Обзор парадигмы: Реактивное программирование 59 | - Обзор парадигмы: Автоматное программирование 60 | - Асинхронное программирование на callback-ах и async/await 61 | - Тестирование: юниттесты, системное и интеграционное тестирование 62 | - Мономорфный и полиморфный код, инлайн-кэш, скрытые классы 63 | - Интроспекция и рефлексия 64 | 65 | ## 1 семестр 2 курса 66 | 67 | Я предлагаю тут еще раз пройтись по GRASP более углубленно, а так же дать SOLID 68 | и GoF: порождающие, структурные и поведенческие шаблоны, плюс контрактное 69 | программирование. 70 | 71 | - GRASP принципы с адаптацией для JavaScript и Node.js 72 | - Принцип информационный эксперт / Information Expert 73 | - Зацепление и связность / coupling and cohesion 74 | - Чистая выдумка / Pure Fabrication 75 | 76 | ## Асинхронное программирование: 2 семестр 2 курса 77 | 78 | - Введение в асинхронное программирование и неблокирующий ввод-вывод 79 | - Таймеры, таймауты и EventEmitter и AsyncEmitter 80 | - Асинхронное программирование на функциях обратного вызова (callback) 81 | - Неблокирующее асинхронное итерирование 82 | - Асинхронность с библиотекой async.js (надстройки и утилиты над callback) 83 | - Асинхронность на промисах и обработка ошибок, асинхронный стектрейс 84 | - Асинхронные функции (async / await) и обработка ошибок 85 | - Контракт Thenable и легковесный await 86 | - Необработанные ошибки в промисах 87 | - Отмена асинхронных операций: callback, Promise, композиции функций 88 | - Асинхронные адаптеры: promisify, callbackify, asyncify 89 | - Асинхронные коллекторы данных и конкурентная асинхронная очередь 90 | - Генераторы, итераторы и асинхронные генераторы и асинхронные итераторы 91 | - Асинхронная композиция функций и асинхронное функциональное программирование 92 | - Другие методы: Future, Deferred, Модель акторов (Actor Model) 93 | - Паттерн Наблюдатель (Observer + Observable), асинхронность на RxJS и потоки событий 94 | 95 | ## Технологический стек Node.js: 1 семестр 3 курса 96 | 97 | - Node.js Введение в технологию 98 | - Обзор встроенного Node.js API 99 | - Работа с файлами, буферами и файловыми потоками 100 | - Наблюдение за файловой системой 101 | - Структура и архитектура приложений, слоеная архитектура 102 | - Модули, структура проекта, песочницы 103 | - Инверсия управления и внедрение зависимостей 104 | - Межпроцессовое взаимодействие 105 | - Логирование в Node.js приложениях 106 | - Конфигурирование приложений на Node.js 107 | - Разработка серверов приложений и API 108 | - Клиент-сервер на Node.js TCP и UDP, DNS 109 | - HTTP сервер на Node.js (routing, cluster, IP sticky) 110 | - HTTP сессии и cookies на чистом Node.js 111 | - HTTP запросы в браузере и Node.js: XMLHttpRequest, fetch 112 | - Отдача статики в Node.js 113 | - Разработка API на Node.js (клиент и сервер) 114 | - WebSocket сервер на Node.js (электронные таблицы и чат) 115 | - Скаффолдинг для API, UI и данных 116 | - Высоконагруженные распределенные приложения 117 | - Распределенные системы и CAP-теорема 118 | 119 | ## Технологический стек Node.js: 2 семестр 3 курса 120 | 121 | - Работа с базами данных на Node.js 122 | - Слой доступа к данным, курсор, транзакция 123 | - Работа с базами данных в Node.js на примере PostgreSQL 124 | - Паттерн Команда (Command) действие и параметры как объект 125 | - CQS, CQRS, Event Sourcing - Разделение запросов и модификации данных 126 | - Модель акторов (Actor Model) в Node.js 127 | - Схемы для API, структур данных и баз данных 128 | - Управление памятью и параллельное программирование 129 | - Утечки памяти в Node.js и JavaScript, сборка мусора и профилирование 130 | - Состояние гонки и взаимные блокировки в асинхронном программировании 131 | - Состояние гонки и взаимные блокировки в параллельном программировании 132 | - Потоки worker_threads, Атомарные операции (Atomics), SharedArrayBuffer 133 | - Семафоры и мьютексы в JavaScript и Node.js 134 | - Разделяемая память в многопоточном Node.js 135 | - Безопасность, надежность, развертывание и управление инфраструктурой 136 | - Необработанные ошибки в промисах и проблема асинхронного стектрейса 137 | - Graceful Shutdown в Node.js 138 | - Безопасность приложений в Node.js 139 | - Serverless Clouds (FaaS) и изоляция контекстов запросов в Node.js 140 | - Node.js для IoT (Internet of Things) 141 | -------------------------------------------------------------------------------- /Courses/Special.md: -------------------------------------------------------------------------------- 1 | # Special Course for Information System Security 2 | 3 | ## Web programming and technologies 4 | 1. [JavaScript Syntax (Day 1)](https://github.com/HowProgrammingWorks/Reusable/tree/master/JavaScript) 5 | - Variables, data types, typeof, instanceof 6 | - Functions, arrays, objects 7 | - Difference between literals and references 8 | - Loop statements: for, for...of, for...in 9 | 2. Environment setup for practical tasks (Day 2) 10 | - Tools: node, npm, git, eslint (install if not installed) 11 | - How to use MDN documentation and find solutions 12 | - Clone repository, install dependencies and run tests 13 | ``` 14 | git clone https://github.com/HowProgrammingWorks/Reusable 15 | cd Reusable 16 | npm i 17 | npm t 18 | ``` 19 | - Open tasks in file: `./Exercises.en.md` 20 | - Find tasks stubs in directory `./Exercises` 21 | - Implement and run tests: `npm t` 22 | 3. Project structure (Day 3) 23 | - Functions, closures 24 | - Modules, import and export 25 | - Prototypes and classes 26 | - Patterns overview 27 | 4. Practical tasks (Day 4) 28 | 5. Data structures and collections (Day 5) 29 | - Arrays, Object, Map, Set 30 | - Lists, graphs, trees, queue 31 | 32 | ## Creating server-side application 33 | 1. Node.js and server-side JavaScript Introduction (Day 5) 34 | - Node.js projects, package.json, dependencies, global namespace 35 | - Event loop, Async I/O, Timers 36 | - Process arguments, console, CLI 37 | 2. Node.js web servers (Day 6) 38 | 3. Practical tasks (Day 7) 39 | 4. Working with databases from Node.js (Day 8) 40 | 41 | ## Final contest 42 | 1. Application structure, Prepare contest (Day 9) 43 | 2. API implementation (Day 10) 44 | 3. Contest day (Day 11) 45 | -------------------------------------------------------------------------------- /Courses/Specialties.md: -------------------------------------------------------------------------------- 1 | # Roadmap: варианты роадмапа для разных специальностей 2 | 3 | ## Общая схема 4 | 5 | ![Roadmap common)](https://user-images.githubusercontent.com/4405297/192536927-36a20aea-d19e-4a68-9087-fd9343027c76.png) 6 | 7 | ## Роадмап для Backend 8 | 9 | ![Roadmap Backend](https://user-images.githubusercontent.com/4405297/192537072-9ff87e51-52c2-4686-b401-5372e8a02814.png) 10 | 11 | ## Роадмап для Frontend 12 | 13 | ![Roadmap Frontend](https://user-images.githubusercontent.com/4405297/192537239-ce531a3c-b76a-4fc1-a598-a57099fbf794.png) 14 | 15 | ## Роадмап для специалиста по доменной логике и бизнес-анализу 16 | 17 | ![Roadmap Domain](https://user-images.githubusercontent.com/4405297/192537433-48228dfb-9c04-4e39-bb5c-8fead555e2ad.png) 18 | 19 | ## Роадмап для лоукодера 20 | 21 | ![Roadmap Lowcode](https://user-images.githubusercontent.com/4405297/192537488-52db0b54-964a-48ff-af84-c280a2130d36.png) 22 | -------------------------------------------------------------------------------- /Courses/System.md: -------------------------------------------------------------------------------- 1 | # Системное программирование 2 | -------------------------------------------------------------------------------- /Courses/Tools.md: -------------------------------------------------------------------------------- 1 | # Инструменты разработки и жизненного цикла ПО 2 | 3 | - [Настройка среды: Node.js, npm, git, eslint](https://youtu.be/hSyA7tcNaCE) 4 | - Непрерывная интеграция 5 | - Компиляция, интерпретация, оптимизация 6 | - Системы контроля версий и пакетные менеджеры 7 | - IDE, RAD 8 | - CLI - command-line interface tools 9 | - Бенчмаркинг 10 | - [Измерение производительности кода и оптимизация в JavaScript и Node.js](https://youtu.be/sanq2X7Re8o) 11 | - https://github.com/HowProgrammingWorks/Benchmark 12 | -------------------------------------------------------------------------------- /Courses/UI-UX.md: -------------------------------------------------------------------------------- 1 | # Проектирование пользовательских интерфейсов 2 | -------------------------------------------------------------------------------- /Courses/Web.md: -------------------------------------------------------------------------------- 1 | # Веб-технологии 2 | 3 | - [HTTP сервер на Node.js (routing, cluster, IP sticky)](https://youtu.be/7Ufxj0oTaUo) 4 | - Примеры кода: https://github.com/HowProgrammingWorks/NodeServer 5 | - [WebSocket сервер на Node.js (электронные таблицы и чат)](https://youtu.be/Sf7ln3n16ws) 6 | - Вебсокеты: https://github.com/HowProgrammingWorks/WebsocketChat 7 | - Чат: https://github.com/HowProgrammingWorks/LiveTable 8 | - [HTTP сессии и cookies на чистом Node.js](https://youtu.be/T_wKXuWW4Wo) 9 | - Примеры кода: https://github.com/HowProgrammingWorks/Session 10 | - [HTTP запросы в браузере и Node.js: XMLHttpRequest, fetch](https://youtu.be/wMMki2FEYGY) 11 | - Примеры кода: https://github.com/HowProgrammingWorks/HttpRequest 12 | - [Разработка API на Node.js (клиент и сервер)](https://youtu.be/-az912XBCu8) 13 | - Примеры кода: https://github.com/HowProgrammingWorks/API 14 | - [Progressive Web Applications PWA и ServiceWorkers](https://youtu.be/s7AIwZMTVPs) 15 | - Примеры кода: https://github.com/HowProgrammingWorks/ServiceWorker 16 | - [JavaScript в браузере: Web API (часть 1)](https://youtu.be/6O8SBJsNeNw) 17 | - [Отдача статики в Node.js](https://youtu.be/n_AdKIzbpBc) 18 | - Примеры кода и задачи: https://github.com/HowProgrammingWorks/ServeStatic 19 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2017-2023 How.Programming.Works contributors 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /Links.md: -------------------------------------------------------------------------------- 1 | # Индекс каналов и групп сообщества Метархия 2 | 3 | Подпишитесь на то, что вас интересует и отпишитесь от остального. Пожалуйста, 4 | придерживайтесь тематики в группах, выбирайте ближайшую подходящую группу, если 5 | нет полного совпадения или группу с наиболее общей тематикой. Во всех группах 6 | запрещена реклама и объявления, в том числе о вакансиях или об участии в 7 | проектах, кроме проектов сообщества Метархия. 8 | 9 | ## Общая тематика 10 | 11 | Любые вопросы программирования, технологии и языки, инженерия, архитектура, 12 | обучение, новости, как для новичков, так и для профессионалов. 13 | 14 | - Телеграм канал [HowProgrammingWorks](https://t.me/HowProgrammingWorks) 15 | тут публикуются объявления о лекциях, митапах и семинарах, все новые видео и 16 | другие материалы 17 | - Телеграм группа [MetarhiaHPW](https://t.me/MetarhiaHPW) 18 | - Телеграм канал [Metaeducation](https://t.me/metaedu) 19 | - Подписка на митапы [HowProgrammingWorks](https://www.meetup.com/HowProgrammingWorks/) 20 | по общим темам программирования, по JavaScript и для начинающих, тут лежит 21 | календарь событий, можно регистрироваться и оставлять отзывы 22 | - Канал на ютюбе: https://www.youtube.com/TimurShemsedinov 23 | 24 | ## Для начинающих 25 | 26 | - Телеграм группа для начинающих [IP9X](https://t.me/Programming_IP9X) 27 | - Подписка на митапы [HowProgrammingWorks](https://www.meetup.com/HowProgrammingWorks/) 28 | тут лежит календарь событий, можно регистрироваться и оставлять отзывы 29 | 30 | ## Node.js 31 | 32 | - Телеграм канал [Metarhia](https://t.me/metarhia) 33 | - Телеграм группа [NodeUA](https://t.me/nodeua) 34 | - Подписка на митапы [NodeUA](https://www.meetup.com/NodeUA/) 35 | - Старая группа митапов [KievNodeJS](https://www.meetup.com/KievNodeJS/) 36 | -------------------------------------------------------------------------------- /Practice/Index.md: -------------------------------------------------------------------------------- 1 | # Практика и проекты 2 | 3 | - Модуль [SEF1](SEF1.ru.md) (1 курс, 1 семестр) 4 | - Модуль [SEF2](SEF2.ru.md) (1 курс, 2 семестр) 5 | - Модули [SEF3 и SEF4](SEF3-4.ru.md) (2 курс) 6 | - Модули [SEF5 и SEF6](SEF5-6.ru.md) (3 курс) 7 | -------------------------------------------------------------------------------- /Practice/Projects.md: -------------------------------------------------------------------------------- 1 | # Practical projects 2 | 3 | - Abstractions (class, prototype, function, functor, module, pattern, on other complex abstraction) for: 4 | - Data structures: specific lists, trees, or graphs with methods for traversal and iteration 5 | - Algorithms: implementation of known math or physics calculations, data manipulations, etc. 6 | - Access to I/O devices, operation system, other applications, timers and different sensors 7 | - Syntax sugar for any programming language to express domain processes in expressive and simple way 8 | - DSL (Domain specific language) runtime, interpreter, compiler, linter, style fixers and tools 9 | - Games: web, console, mobile of any kind but with good patterns, project structure and code style 10 | - Parsing tools for any formal or informal language 11 | - Crawler and search engines 12 | - Examples, tests and documentation for lectures, frameworks, and libraries 13 | - Fixes, contribution, features, and bug-reproduction reports for open-source projects 14 | - System programming 15 | - Data access abstractions, repository implementation, query builder for persistent queue, column or relational db 16 | - Network protocols for message passing, rpc, api, rest or stateful, 17 | - Reactive abstractions 18 | - Asynchronous programming abstractions 19 | - Parallel programming abstractions 20 | - Applied applications, their subsystems, or separate modules 21 | - CRM, ERP, SCM, Warehouse systems, 22 | - Medical information systems 23 | - Production automation and management information systems 24 | - Any other custom-made information systems 25 | - Your own project 26 | -------------------------------------------------------------------------------- /Practice/SEF1.ru.md: -------------------------------------------------------------------------------- 1 | # Практические задания 2 | 3 | Запись семинаров про выполнение и проверку лабораторных работ: 4 | - [Семинар: автоматическая проверка лабораторных работ](https://youtu.be/M4KpG0LEAyA) 5 | - [Семинар: выполнение лабораторных работ по курсу "Основы программирования"](https://youtu.be/ikUOyFPzdJw) 6 | 7 | Репозитории с задачами: 8 | 9 | 0. [Настройка среды](https://github.com/HowProgrammingWorks/Introduction/blob/master/Exercises.ru.md) 10 | 1. [Переменные и типы данных](https://github.com/HowProgrammingWorks/DataTypes/blob/master/Exercises.ru.md) 11 | 2. [Базовый синтаксис JavaScript](https://github.com/HowProgrammingWorks/Reusable/blob/master/Exercises.ru.md) 12 | 3. [Функции и методы](https://github.com/HowProgrammingWorks/Function/blob/master/Exercises.ru.md) 13 | 4. [Циклы, итерирование](https://github.com/HowProgrammingWorks/Iteration/blob/master/Exercises.ru.md) 14 | 5. [Замыкания и чеининг](https://github.com/HowProgrammingWorks/Closure/blob/master/Exercises.ru.md) 15 | 6. [Композиция функций](https://github.com/HowProgrammingWorks/Composition/blob/master/Exercises.ru.md) 16 | 7. [Работа с массивами](https://github.com/HowProgrammingWorks/Arrays/blob/master/Exercises.ru.md) 17 | 8. [Функции высшего порядка](https://github.com/HowProgrammingWorks/HigherOrderFunction/blob/master/Exercises.ru.md) 18 | -------------------------------------------------------------------------------- /Practice/SEF2.ru.md: -------------------------------------------------------------------------------- 1 | # Практика и проекты 2 | 3 | ## Возможные варианты организации работ: 4 | 5 | - Контрибьюшен в любой open-source проект или библиотеку. 6 | - Контрибьюшен в [Metarhia](https://github.com/metarhia). 7 | - Проект студенческой группы или общественный проект в открытом коде. 8 | - Собственный open-source проект. 9 | 10 | ## Что разрешено и что запрещено: 11 | 12 | - Можно использовать любой язык и все встроенные в него библиотек. 13 | - Нельзя использовать сторонние библиотеки, устанавливаемые из npm, GitHub и т.д. 14 | - Репозиторий обязательно размещается на https://github.com в открытом доступе. 15 | - Нужно развить навыки групповой работы, для этого студенты объединяются в группы 16 | по 2-5 человек; группа может писать один общий проект или сделать перекрестный 17 | ревью кода индивидуальных проектов каждого участника группы. Пересмотрите: 18 | - [Что такое ревью кода](https://youtu.be/EKL6NiIQ6ZU) 19 | - [Семинар: по ревью кода](https://youtu.be/AgH4OAKbmkM) 20 | - Проект не может быть одномоментно залит на гитхаб за день до сдачи, его нужно 21 | вести в гитхабе на протяжении нескольких месяцев, чтобы была видна работа, 22 | история коммитов и PR (pull request). Хорошо, если можно будет проследить 23 | улучшение кодовой базы, рефакторинг и оптимизацию. Пересмотрите: 24 | - Общие [антипаттерны для всех парадигм](https://youtu.be/NMUsUiFokr4), и 25 | - Антипаттерны [процедурного программирования](https://youtu.be/cTv7V22mkwE); 26 | - Лекция про [рефакторинг](https://youtu.be/z73wmpdweQ4). 27 | - Хорошее ведение репозитория: issues, pull requests, milestones (см. кнопки на 28 | закладках issues и pr в github), discussions (не обязательно), kanban (средство 29 | планирования проекта, ищите на закладке project в github), wiki (не обязательно). 30 | - В каждом проекте должны быть юниттесты для проверки работоспособности. 31 | - Репозиторий должен включать: 32 | - Лицензию и список контрибьютеров 33 | - Файл `README.md` с кратким (1-2 страницы) описанием проекта. Никакие папки 34 | с бумагами не нужны, все только в электронном виде без бюрократии. 35 | - Настроенный линтер (а если кода на JavaScript, еще и prettier). Пример проекта 36 | с конфигурацией тут: https://github.com/HowProgrammingWorks/NodejsStarterKit 37 | - Файл `package.json` в котором в разделе `scripts` есть команда `lint` 38 | - Файлы `.eslintrc.json`, `.eslintignore` и `.prettierrc` 39 | - Перед каждым коммитом запускайте из командной строки: `npm run lint` 40 | (часть проблем автоматически исправляется, остальные - правим руками). 41 | - Дотфайлы для системы контроля версий и менеджера пакетов. 42 | 43 | ## Примеры тем: 44 | 45 | - Библиотека для работы с IPv4 и IPv6 адресами: парсер, сравнение, манипуляции, 46 | работа с масками и диапазонами, сериализаци в виде строки и числа, любые другие 47 | операции, которые вы придумаете. 48 | - Парсер HTML, CSS, JSON, YAML или любого другого формата файлов. 49 | - Разработать универсальный класс для кэширования: вычислений, операций 50 | ввода/вывода, запросов к базе данных или других операций, требующих ускорения при 51 | помощи кешировани (на выбор). Содержащий конфигурируемый кеш с такими 52 | характеристиками: определенный размер в количестве записей или объеме памяти, 53 | время вытеснения из кеша, приоритеты вытеснения. 54 | - Реализовать машинную проверку правильности синтаксиса и стиля кода. Отдельная 55 | тема может быть по исправлению простейших синтаксических ошибок. И еще одна тема 56 | по автоформатированию кода, приведению его к соглашениям по стилю. 57 | - Усовершенствованный EventEmitter, например, с такими возможностями: одноразовая 58 | и N-разовая подписка, автоматическая отписка после таймаута или отправки 59 | специального события, ожидание событий на синтаксисе async/await и др. 60 | - Проекция структур данных в памяти. Можно сделать специальный синтаксис (язык 61 | проекции), что уже сделано на JavaScript в репозитории 62 | https://github.com/HowProgrammingWorks/Projection 63 | - Разработать простую Key-value (ключ-значение) in-memory СУБД (систему 64 | управления базами данных, которая хранит все в оперативной памяти). В самом 65 | простом случае это хеш-таблица. Пример реализации Redis, Memcached или MongoDB, 66 | можно взять их интерфейсы за основу и модифицировать. 67 | - Разработать планировщик задач в виде класса или прототипа, который умеет 68 | повторять выполнение метода по расписанию, например: по пятницам в 2 ночи или 69 | каждый второй понедельник месяца в 12:30 по UTC. Он создает необходимые для этого 70 | таймеры и исполняет задачи. 71 | - Утилиты для интерфейса командной строки. 72 | 73 | ## Регистрация тем 74 | 75 | - Нужно заполнить форму: https://forms.gle/u7v7nUFxamcgJ2aQ6 76 | - И дать мне права на репозиторий, мой аккаунт: https://github.com/tshemsedinov 77 | -------------------------------------------------------------------------------- /Practice/SEF3-4.ru.md: -------------------------------------------------------------------------------- 1 | # Практика и проекты 2 | 3 | ## Возможные варианты: 4 | 5 | - Контрибьюшен в любой open-source проект или библиотеку 6 | - Контрибьюшен в [Metarhia](https://github.com/metarhia) 7 | - Проект студенческой группы или общественный проект в открытом коде 8 | - Собственный open-source проект 9 | 10 | ## Что разрешено и что запрещено: 11 | 12 | - Любой язык. 13 | - Любой технологический стек. 14 | - Можно использовать любые зависимости. 15 | - Репозиторий обязательно размещается на https://github.com в открытом доступе. 16 | - Желательно делать групповые работы, для этого студенты объединяются в группы 17 | по 2-5 человек (могут быть внешние участники с других курсов, факультетов и 18 | вообще не из КПИ); группа может писать один общий проект или сделать перекрестный 19 | ревью кода индивидуальных проектов каждого участника группы. Пересмотрите: 20 | - [Что такое ревью кода](https://youtu.be/EKL6NiIQ6ZU) 21 | - [Семинар: по ревью кода](https://youtu.be/AgH4OAKbmkM) 22 | - Проект не может быть одномоментно залит на гитхаб за день до сдачи, его нужно 23 | вести в гитхабе на протяжении нескольких месяцев, чтобы была видна работа, 24 | история коммитов и PR (pull request). Хорошо, если можно будет проследить 25 | улучшение кодовой базы, рефакторинг и оптимизацию. Пересмотрите: 26 | - Общие [антипаттерны для всех парадигм](https://youtu.be/NMUsUiFokr4), и 27 | - Антипаттерны [процедурного программирования](https://youtu.be/cTv7V22mkwE); 28 | - Лекция про [рефакторинг](https://youtu.be/z73wmpdweQ4). 29 | - Хорошее ведение репозитория: issues, pull requests, milestones (см. кнопки на 30 | закладках issues и pr в github), discussions (не обязательно), kanban (средство 31 | планирования проекта, ищите на закладке project в github), wiki (не обязательно). 32 | 33 | ## Если вы делаете свой репозиторий, то он обязательно должен включать: 34 | 35 | - Юниттесты (по желанию системные, интеграционные и нагрузочные тесты) 36 | - CI (например: TravisCI, Github Actions) 37 | - Лицензию и список контрибьютеров 38 | - Хорошее ведение репозитория: issues, pull requests, (желательно milestones) 39 | - Семантическое версионирование: https://semver.org/ 40 | - Ведем CHANGELOG.md 41 | - И выпускаем версии в виде тегов 42 | - Настроенный линтер (для js еще и prettier) 43 | - Дотфайлы для системы контроля версий и менеджера пакетов 44 | 45 | ## Проекты, в которые можно конрибьютить: 46 | 47 | - Рекурсивное наблюдение за файловой системой: https://github.com/metarhia/metawatch 48 | - Утилиты для интерфейса командной строки: https://github.com/metarhia/metacommand 49 | - Хелпер (обертка) для node.js модуля vm: https://github.com/metarhia/metavm 50 | - Query builder и миграции для Postgres: https://github.com/metarhia/metasql 51 | - Сетевой протокол: https://github.com/metarhia/metacom 52 | - Библиотека для логирования: https://github.com/metarhia/metalog 53 | - Шаблонизатор: https://github.com/metarhia/tickplate 54 | - Web-locks API (блокировки): https://github.com/metarhia/web-locks 55 | - Библиотека для асинхронного программирования: https://github.com/metarhia/metasync 56 | - Простые асинхронные абстракции: https://github.com/metarhia/do 57 | - Буферизация для Writable Stream: https://github.com/metarhia/metastreams 58 | - Библиотека для цветов в консоли: https://github.com/metarhia/concolor 59 | - Загрузчик конфигурации: https://github.com/metarhia/config 60 | - Фреймворк тестирования: https://github.com/metarhia/metatests 61 | - Общие утилиты: https://github.com/metarhia/common 62 | - Общие утилиты (облегченная): https://github.com/metarhia/metautil 63 | 64 | ## Регистрация тем 65 | 66 | - Нужно заполнить форму: https://forms.gle/u7v7nUFxamcgJ2aQ6 67 | - И дать мне права на репозиторий, мой аккаунт: https://github.com/tshemsedinov 68 | -------------------------------------------------------------------------------- /Practice/SEF5-6.ru.md: -------------------------------------------------------------------------------- 1 | # Практика и проекты 2 | 3 | ## Возможные варианты: 4 | 5 | - Контрибьюшен в любой open-source проект или библиотеку 6 | - Контрибьюшен в [Metarhia](https://github.com/metarhia) 7 | - Проект студенческой группы или общественный проект в открытом коде 8 | - Собственный open-source проект 9 | 10 | ## Что разрешено и что запрещено: 11 | 12 | - Любой язык. 13 | - Любой технологический стек. 14 | - Можно использовать любые зависимости. 15 | - Репозиторий обязательно размещается на https://github.com в открытом доступе. 16 | - Проект не может быть одномоментно залит на гитхаб за день до сдачи, его нужно 17 | вести в гитхабе на протяжении нескольких месяцев, чтобы была видна работа, 18 | история коммитов и PR (pull request). Хорошо, если можно будет проследить 19 | улучшение кодовой базы, рефакторинг и оптимизацию. 20 | 21 | ## Если вы делаете свой репозиторий, то он обязательно должен включать: 22 | 23 | - Юниттесты, системные и интеграционные (по желанию нагрузочные тесты) 24 | - CI (например: TravisCI, Github Actions) 25 | - Лицензию и список контрибьютеров 26 | - Хорошее ведение репозитория: issues, pull requests, (желательно milestones) 27 | - Семантическое версионирование: https://semver.org/ 28 | - Ведем CHANGELOG.md 29 | - И выпускаем версии в виде тегов 30 | - Настроенный линтер (для js еще и prettier) 31 | - Дотфайлы для системы контроля версий и менеджера пакетов 32 | 33 | ## Проекты, в которые можно конрибьютить: 34 | 35 | - Рекурсивное наблюдение за файловой системой: https://github.com/metarhia/metawatch 36 | - Утилиты для интерфейса командной строки: https://github.com/metarhia/metacommand 37 | - Хелпер (обертка) для node.js модуля vm: https://github.com/metarhia/metavm 38 | - Query builder и миграции для Postgres: https://github.com/metarhia/metasql 39 | - Сетевой протокол: https://github.com/metarhia/metacom 40 | - Библиотека для логирования: https://github.com/metarhia/metalog 41 | - Шаблонизатор: https://github.com/metarhia/tickplate 42 | - Web-locks API (блокировки): https://github.com/metarhia/web-locks 43 | - Библиотека для асинхронного программирования: https://github.com/metarhia/metasync 44 | - Простые асинхронные абстракции: https://github.com/metarhia/do 45 | - Буферизация для Writable Stream: https://github.com/metarhia/metastreams 46 | - Библиотека для цветов в консоли: https://github.com/metarhia/concolor 47 | - Загрузчик конфигурации: https://github.com/metarhia/config 48 | - Фреймворк тестирования: https://github.com/metarhia/metatests 49 | - Общие утилиты: https://github.com/metarhia/common 50 | - Общие утилиты (облегченная): https://github.com/metarhia/metautil 51 | 52 | ## Регистрация тем 53 | 54 | - Нужно заполнить форму: https://forms.gle/u7v7nUFxamcgJ2aQ6 55 | - И дать мне права на репозиторий, мой аккаунт: https://github.com/tshemsedinov 56 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Индекс и состояние курсов 2 | 3 | Книга по большей части материала (в разработке): https://github.com/HowProgrammingWorks/Book 4 | 5 | - [Индекс каналов и групп сообщества Метархия](Links.md) 6 | - [Индекс докладов, интервью и других выступлений](Courses/Talks.md) 7 | - [Индекс практических заданий](Practice/Index.md) 8 | - [Индекс созвонов сообщества](Archive/WeeklyCall.md) 9 | 10 | ## Базовый курс инженерии программного обеспечения 11 | 12 | - [Введение и обзор знаний](Courses/Introduction.md) а так же [семинары](Courses/Seminars.md) 13 | - [Основы программирования для начинающих](https://www.youtube.com/watch?v=2DM5I2CI4gY&list=PLpmhTzMVLuROAIey9vW3pyRSpHfknLssu) 14 | - [Основы программирования, модули (1 год обучения)](Courses/Fundamentals.md) [(с таймкодами)](Courses/Fundamentals-timecodes.md) 15 | - [Программирование (2 год обучения)](Courses/Advanced.md) 16 | 17 | ## Отдельные специализированные курсы 18 | 19 | - [Асинхронное программирование](Courses/Asynchronous.md) 20 | (курс готов, регулярно обновляется) 21 | [(с таймкодами)](Courses/Asynchronous-timecodes.md) 22 | - [Технологический стек Node.js](Courses/NodeJS.md) 23 | (курс готов, регулярно обновляется) 24 | [(с таймкодами)](Courses/NodeJS-timecodes.md) 25 | - [Технологический стек Metarhia](Courses/Metarhia.md) 26 | (готовность 5%) 27 | - [Шаблоны проектирования](Courses/Patterns.md) 28 | (готовность 50%) 29 | - [Парадигмы программирования](Courses/Paradigms.md) 30 | (готовность 70%) 31 | - [Метапрограммирование и мультипарадигменное программирование](Courses/Metaprogramming.md) 32 | (готовность 50%) 33 | - [Алгоритмы и структуры данных](Courses/AlgAndData.md) 34 | (готовность 20%) 35 | - [Проектирование сетевых протоколов и сервисов](Courses/Network.md) 36 | (готовность 50%) 37 | - [Инструменты разработки и жизненного цикла ПО](Courses/Tools.md) 38 | (есть несколько видео-лекций, нужно расширять) 39 | - [Функциональное программирование](Courses/Functional.md) 40 | (готовность 20%) 41 | - [Объектно-ориентированное программирование](Courses/OOP.md) 42 | (готовность 20%) 43 | - [GRASP принципы с адаптацией для JavaScript и Node.js](Courses/GRASP.md) 44 | (готовность 40%) 45 | - [Операционные системы](Courses/OS.md) 46 | (нужно сформировать программу) 47 | - [Системное программирование](Courses/System.md) 48 | (нужно сформировать программу) 49 | - [Архитектура информационных систем](Courses/Architecture.md) 50 | (готовность 40%) 51 | - [Веб-технологии](Courses/Web.md) 52 | (готовность 25%) 53 | - [Параллельное программирование](Courses/Parallel.md) 54 | (готовность 10%) 55 | - [Проектирование баз данных](Courses/Databases.md) 56 | (готовность 25%) 57 | - [Высоконагруженные и масштабируемые системы](Courses/Highload.md) 58 | (готовность 20%) 59 | - [Проектирование пользовательских интерфейсов](Courses/UI-UX.md) 60 | (нужно сформировать программу) 61 | - [Безопасность информационных систем](Courses/Security.md) 62 | (нужно сформировать программу) 63 | - [Качество, тестирование и надежность ПО](Courses/Quality.md) 64 | (готовность 5%) 65 | --------------------------------------------------------------------------------