From bb0d25eea7e39403c1a54f81a845206882d3879c Mon Sep 17 00:00:00 2001 From: SurkinK Date: Thu, 7 Jan 2021 00:56:53 +0500 Subject: [PATCH 001/308] Update Fundamentals.md update links --- Courses/Fundamentals.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Courses/Fundamentals.md b/Courses/Fundamentals.md index 0c4dc8e..dc27fa9 100644 --- a/Courses/Fundamentals.md +++ b/Courses/Fundamentals.md @@ -164,8 +164,8 @@ - Генераторы: https://github.com/HowProgrammingWorks/Generator - Асинхронные генераторы: https://github.com/HowProgrammingWorks/AsyncGenerator - [Итераторы и асинхронные итераторы](https://youtu.be/rBGFlWpVpGs) - - Итераторы: https://github.com/HowProgrammingWorks/AsyncIterator - - Асинхронные итераторы: https://github.com/HowProgrammingWorks/Iterator + - Итераторы: https://github.com/HowProgrammingWorks/Iterator + - Асинхронные итераторы: https://github.com/HowProgrammingWorks/AsyncIterator - [Перечислимый тип (enum) в JavaScript и TypeScript](https://youtu.be/BXiKebOIAGI) - Примеры кода: https://github.com/HowProgrammingWorks/Enum - [Дженерики и обобщенное программирование](https://youtu.be/r6W2z3DQhoI) From 9cdaba3a58f89ef271d7259e51949a830e9b825b Mon Sep 17 00:00:00 2001 From: Dmytro Pashchenko Date: Wed, 13 Jan 2021 23:20:19 +0200 Subject: [PATCH 002/308] fixed typo --- Practice/SEF3.ru.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Practice/SEF3.ru.md b/Practice/SEF3.ru.md index 84377a7..958d63d 100644 --- a/Practice/SEF3.ru.md +++ b/Practice/SEF3.ru.md @@ -29,7 +29,7 @@ - Шаблонизатор: https://github.com/metarhia/tickplate - Web-locks API (блокировки): https://github.com/metarhia/web-locks - Библиотека для асинхронного программирования: https://github.com/metarhia/metasync -- Простые асинхронные абстрации: https://github.com/metarhia/do +- Простые асинхронные абстракции: https://github.com/metarhia/do - Буферизация для Writable Stream: https://github.com/metarhia/metastreams - Библиотека для цветов в консоли: https://github.com/metarhia/concolor - Загрузчик конфигурации: https://github.com/metarhia/config From 27efcba151bd37bb559980061d1d109a23c4756d Mon Sep 17 00:00:00 2001 From: Dmitry Date: Sat, 16 Jan 2021 17:59:43 +0500 Subject: [PATCH 003/308] Added space (hash table) --- Courses/Fundamentals.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Courses/Fundamentals.md b/Courses/Fundamentals.md index dc27fa9..f56c931 100644 --- a/Courses/Fundamentals.md +++ b/Courses/Fundamentals.md @@ -80,7 +80,7 @@ - Семинар: [Выполнение лабораторных работ по курсу](https://youtu.be/ikUOyFPzdJw) - [Массивы в JavaScript: методы Array](https://youtu.be/D1kfYBkX9FE) - Примеры кода: https://github.com/HowProgrammingWorks/Arrays -- [Коллекции, множества, хештаблицы в JavaScript](https://youtu.be/hN0wsq5LNOc) +- [Коллекции, множества, хеш таблицы в JavaScript](https://youtu.be/hN0wsq5LNOc) - Коллекции: https://github.com/HowProgrammingWorks/Collections - Хеш таблицы: https://github.com/HowProgrammingWorks/Map - Множества: https://github.com/HowProgrammingWorks/Set From 8bce43ffd1a8d4f7fee4c0b98e701f2fcea1e8f2 Mon Sep 17 00:00:00 2001 From: Alexander Date: Sun, 17 Jan 2021 13:29:07 +0200 Subject: [PATCH 004/308] Update SEF3.ru.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit опечатка: ганрузочные тесты нужно заменить на нагрузочные тесты --- Practice/SEF3.ru.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Practice/SEF3.ru.md b/Practice/SEF3.ru.md index 958d63d..fa1689c 100644 --- a/Practice/SEF3.ru.md +++ b/Practice/SEF3.ru.md @@ -11,7 +11,7 @@ - Любой технологический стек ## Если вы делаете свой репозиторий, то он обязательно должен включать: -- Юниттесты (возможно, системные и ганрузочные тесты) +- Юниттесты (возможно, системные и нагрузочные тесты) - CI (например: TravisCI, Github Actions) - Лицензию и список контрибьютеров - Хорошее ведение репозитория: issues, pull requests, milestones From 05365f31907c1d188f2d2c67c075319b89391af9 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Tue, 19 Jan 2021 21:11:47 +0200 Subject: [PATCH 005/308] Add Node.js 2021 review --- Courses/NodeJS.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Courses/NodeJS.md b/Courses/NodeJS.md index 7682594..5571b28 100644 --- a/Courses/NodeJS.md +++ b/Courses/NodeJS.md @@ -16,6 +16,8 @@ ## Введение и основы - [Node.js Введение в технологию](https://youtu.be/WBcHgaoHh1k) +- [Node.js in 2021: новости платформы и вызовы на следующее десятилетие](https://youtu.be/nnB7ADYso8s) + - Слайды: https://www2.slideshare.net/tshemsedinov/nodejs-in-2021 - [Node.js в 2019 году](https://youtu.be/CUU49jjHloM) - Слайды: https://www.slideshare.net/tshemsedinov/nodejs-in-2019 - [Асинхронное программирование в Node.js](https://youtu.be/hY6Z6qNYzmc) From e0ecbda768221370f00b7cf11a183a4481a44c32 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Tue, 19 Jan 2021 21:15:08 +0200 Subject: [PATCH 006/308] Add Metarhia tech stack --- Courses/Metarhia.md | 14 ++++++++++++++ README.md | 2 ++ 2 files changed, 16 insertions(+) create mode 100644 Courses/Metarhia.md diff --git a/Courses/Metarhia.md b/Courses/Metarhia.md new file mode 100644 index 0000000..b5508f2 --- /dev/null +++ b/Courses/Metarhia.md @@ -0,0 +1,14 @@ +# Технологический стек Metarhia + +- [Node.js in 2021: новости платформы и вызовы на следующее десятилетие](https://youtu.be/nnB7ADYso8s) + - Слайды: https://www2.slideshare.net/tshemsedinov/nodejs-in-2021 +- [Разработка API на Node.js и технологическом стеке Metarhia](https://youtu.be/gppFXK1YzPA) + +## Вебинары Node.js: Выйди и зайди нормально + +- [Часть 1: Обзор новых возможностей, история и изоляция](https://youtu.be/GJY2dyE6328?t=480) + - Слайды: https://www.slideshare.net/tshemsedinov/nodejs-in-2020-part-1 +- [Часть 2: Проблемы и как они связаны с фундаментальными CS](https://youtu.be/r1u-dGocm1c) + - Слайды: https://www.slideshare.net/tshemsedinov/nodejs-in-2020-part-2 +- [Часть 3: Структура и архитектура проекта, Node.js Starter Kit](https://youtu.be/ZXB5OTRld1w) + - Слайды: https://www.slideshare.net/tshemsedinov/nodejs-in-2020-part-3 diff --git a/README.md b/README.md index bad299c..9b8e0fd 100644 --- a/README.md +++ b/README.md @@ -19,6 +19,8 @@ (есть 97% примеров кода и видео-лекции) - [Технологический стек Node.js](Courses/NodeJS.md) (есть 95% кода и видео-лекций) +- [Технологический стек Metarhia](Courses/Metarhia.md) + (есть 5% примеров и видео-лекций) - [Шаблоны проектирования](Courses/Patterns.md) (есть 50% примеров кода и видео-лекций) - [Парадигмы программирования](Courses/Paradigms.md) From 0c06f66f8848f319f373231cb6fd6fccc229c4bf Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Sat, 23 Jan 2021 19:41:56 +0200 Subject: [PATCH 007/308] Add Node.js in 2021 seminar link --- Courses/Metarhia.md | 1 + Courses/NodeJS.md | 1 + 2 files changed, 2 insertions(+) diff --git a/Courses/Metarhia.md b/Courses/Metarhia.md index b5508f2..56d2ebe 100644 --- a/Courses/Metarhia.md +++ b/Courses/Metarhia.md @@ -2,6 +2,7 @@ - [Node.js in 2021: новости платформы и вызовы на следующее десятилетие](https://youtu.be/nnB7ADYso8s) - Слайды: https://www2.slideshare.net/tshemsedinov/nodejs-in-2021 + - Семинар с ответами на вопросы и обсуждением: https://youtu.be/zYRDhxj0zhQ - [Разработка API на Node.js и технологическом стеке Metarhia](https://youtu.be/gppFXK1YzPA) ## Вебинары Node.js: Выйди и зайди нормально diff --git a/Courses/NodeJS.md b/Courses/NodeJS.md index 1821b13..5eb0422 100644 --- a/Courses/NodeJS.md +++ b/Courses/NodeJS.md @@ -23,6 +23,7 @@ - [Node.js Введение в технологию](https://youtu.be/WBcHgaoHh1k) - [Node.js in 2021: новости платформы и вызовы на следующее десятилетие](https://youtu.be/nnB7ADYso8s) - Слайды: https://www2.slideshare.net/tshemsedinov/nodejs-in-2021 + - Семинар с ответами на вопросы и обсуждением: https://youtu.be/zYRDhxj0zhQ - [Node.js в 2019 году](https://youtu.be/CUU49jjHloM) - Слайды: https://www.slideshare.net/tshemsedinov/nodejs-in-2019 - [Асинхронное программирование в Node.js](https://youtu.be/hY6Z6qNYzmc) From 794620f8b88238ea75c19399c606c3ef913a4688 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Sun, 31 Jan 2021 11:56:30 +0200 Subject: [PATCH 008/308] Add link to Metarhia seminag #1 --- Courses/Metarhia.md | 1 + 1 file changed, 1 insertion(+) diff --git a/Courses/Metarhia.md b/Courses/Metarhia.md index 56d2ebe..1bf311e 100644 --- a/Courses/Metarhia.md +++ b/Courses/Metarhia.md @@ -4,6 +4,7 @@ - Слайды: https://www2.slideshare.net/tshemsedinov/nodejs-in-2021 - Семинар с ответами на вопросы и обсуждением: https://youtu.be/zYRDhxj0zhQ - [Разработка API на Node.js и технологическом стеке Metarhia](https://youtu.be/gppFXK1YzPA) + - Семинар с ответами на вопросы и обсуждением: https://youtu.be/R7TwKnImNiY ## Вебинары Node.js: Выйди и зайди нормально From 7661a0d2594b08e5b36bdfd4923b8fc65e8418eb Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Fri, 5 Feb 2021 22:38:23 +0200 Subject: [PATCH 009/308] Add video about sessions and contexts --- Courses/Metarhia.md | 1 + 1 file changed, 1 insertion(+) diff --git a/Courses/Metarhia.md b/Courses/Metarhia.md index 1bf311e..ee23f1c 100644 --- a/Courses/Metarhia.md +++ b/Courses/Metarhia.md @@ -5,6 +5,7 @@ - Семинар с ответами на вопросы и обсуждением: https://youtu.be/zYRDhxj0zhQ - [Разработка API на Node.js и технологическом стеке Metarhia](https://youtu.be/gppFXK1YzPA) - Семинар с ответами на вопросы и обсуждением: https://youtu.be/R7TwKnImNiY +- [Сессии и контексты на Node.js и технологическом стеке Metarhia](https://youtu.be/5u8imY9SJiQ) ## Вебинары Node.js: Выйди и зайди нормально From 88a02d0e321897d09df2e77bb5d0b02e8c1bed14 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Mon, 8 Feb 2021 20:15:52 +0200 Subject: [PATCH 010/308] Add Metarhia presentation video --- Courses/Metarhia.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/Courses/Metarhia.md b/Courses/Metarhia.md index ee23f1c..2188953 100644 --- a/Courses/Metarhia.md +++ b/Courses/Metarhia.md @@ -1,8 +1,12 @@ # Технологический стек Metarhia +# Презентации +- [Для владельцев и руководителей проектов](https://youtu.be/dEqJj8M0ke0) - [Node.js in 2021: новости платформы и вызовы на следующее десятилетие](https://youtu.be/nnB7ADYso8s) - Слайды: https://www2.slideshare.net/tshemsedinov/nodejs-in-2021 - Семинар с ответами на вопросы и обсуждением: https://youtu.be/zYRDhxj0zhQ + +## Для разработчиков - [Разработка API на Node.js и технологическом стеке Metarhia](https://youtu.be/gppFXK1YzPA) - Семинар с ответами на вопросы и обсуждением: https://youtu.be/R7TwKnImNiY - [Сессии и контексты на Node.js и технологическом стеке Metarhia](https://youtu.be/5u8imY9SJiQ) From c29bfb2943292cd9fca5d50e6b9186448042e62e Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Mon, 8 Feb 2021 22:03:52 +0200 Subject: [PATCH 011/308] Metarhia videos plan --- Courses/Metarhia.md | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/Courses/Metarhia.md b/Courses/Metarhia.md index 2188953..ccb8b8c 100644 --- a/Courses/Metarhia.md +++ b/Courses/Metarhia.md @@ -2,14 +2,29 @@ # Презентации - [Для владельцев и руководителей проектов](https://youtu.be/dEqJj8M0ke0) +- Для архитекторов и руководителей групп разработки - [Node.js in 2021: новости платформы и вызовы на следующее десятилетие](https://youtu.be/nnB7ADYso8s) - Слайды: https://www2.slideshare.net/tshemsedinov/nodejs-in-2021 - Семинар с ответами на вопросы и обсуждением: https://youtu.be/zYRDhxj0zhQ +- Metarhia Roadmap 2021 ## Для разработчиков +- Структура приложений +- Конфигурирование сервера приложений +- Подключение зависимостей +- Роутинг запросов, http и websocket, пример web hooks - [Разработка API на Node.js и технологическом стеке Metarhia](https://youtu.be/gppFXK1YzPA) - Семинар с ответами на вопросы и обсуждением: https://youtu.be/R7TwKnImNiY - [Сессии и контексты на Node.js и технологическом стеке Metarhia](https://youtu.be/5u8imY9SJiQ) +- Работа с базами данных Postgres и Redis +- Обработка и логирование ошибок +- Аутентификация OAuth 2.0 на примере Google +- Передача файлов по metacom: upload, download +- Валидация и проверка типов: API контракты +- Валидация в браузере: формы +- Планировщик задач в impress +- Модель предметной области и схемы баз данных +- Миграции и версионирование схем ## Вебинары Node.js: Выйди и зайди нормально From 93bab638bd51573770e825a6ba7378b6b629b13d Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Mon, 8 Feb 2021 22:55:57 +0200 Subject: [PATCH 012/308] Add more Metarhia topics --- Courses/Metarhia.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/Courses/Metarhia.md b/Courses/Metarhia.md index ccb8b8c..cb1bcd7 100644 --- a/Courses/Metarhia.md +++ b/Courses/Metarhia.md @@ -1,6 +1,7 @@ # Технологический стек Metarhia # Презентации + - [Для владельцев и руководителей проектов](https://youtu.be/dEqJj8M0ke0) - Для архитекторов и руководителей групп разработки - [Node.js in 2021: новости платформы и вызовы на следующее десятилетие](https://youtu.be/nnB7ADYso8s) @@ -9,9 +10,12 @@ - Metarhia Roadmap 2021 ## Для разработчиков + - Структура приложений - Конфигурирование сервера приложений - Подключение зависимостей +- Вертикальное масштабирование на базе потоков +- Авторелоад кода - Роутинг запросов, http и websocket, пример web hooks - [Разработка API на Node.js и технологическом стеке Metarhia](https://youtu.be/gppFXK1YzPA) - Семинар с ответами на вопросы и обсуждением: https://youtu.be/R7TwKnImNiY @@ -25,6 +29,11 @@ - Планировщик задач в impress - Модель предметной области и схемы баз данных - Миграции и версионирование схем +- Тестирование юнит, системное, интеграционное +- Асинхронные очереди +- Очереди с надежным хранением +- Непрерывное развертывание +- Горизонтальное масштабирование ## Вебинары Node.js: Выйди и зайди нормально From 840e45da10ebb63845bf7d85da7944dcd3bd9492 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Sun, 14 Feb 2021 11:55:40 +0200 Subject: [PATCH 013/308] Add stream at Foxminded channel --- Courses/NodeJS.md | 3 ++- Courses/Talks.md | 3 ++- Courses/Tools.md | 1 + 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/Courses/NodeJS.md b/Courses/NodeJS.md index 5eb0422..d3aa547 100644 --- a/Courses/NodeJS.md +++ b/Courses/NodeJS.md @@ -4,10 +4,11 @@ Перед основной частью курса по Node.js нужно сначала освоить хоть частично курс по асинхронному программированию: https://github.com/HowProgrammingWorks/Index/blob/master/Courses/Asynchronous.md -## Доклады на конференциях +## Доклады и выступления - [Node.js Middleware – никогда больше!](https://youtu.be/RS8x73z4csI) - Слaйды: https://www2.slideshare.net/tshemsedinov/nodejs-middleware-never-again +- [Байки про JavaScript и Node.js с Тимуром Шемсединовым](https://youtu.be/hoKKYKMadQs) ## Вебинары Node.js: Выйди и зайди нормально diff --git a/Courses/Talks.md b/Courses/Talks.md index e89bff3..7a0dd58 100644 --- a/Courses/Talks.md +++ b/Courses/Talks.md @@ -1,4 +1,4 @@ -# Доклады на конференциях +# Доклады и выступления - [JavaScript fwdays'20 autumn online conference](https://fwdays.com/en/event/javascript-fwdays-2020) - Доклад: [Node.js Middleware: Never again! 2020 Sep 22, 19:30](https://fwdays.com/en/event/javascript-fwdays-2020/review/nodejs-middleware) @@ -15,3 +15,4 @@ - Слайды: https://www.slideshare.net/tshemsedinov/js-fest-2019-nodejs-antipatterns - [Разделяемая память в многопоточном Node.js. Тимур Шемсединов. JS Fest 2019 Spring](https://youtu.be/KNsm_iIQt7U) - Слайды: https://www.slideshare.net/tshemsedinov/shared-memory-and-multithreading-in-nodejs-timur-shemsedinov-jsfest19 +Байки про JavaScript и Node.js с Тимуром Шемсединовым diff --git a/Courses/Tools.md b/Courses/Tools.md index 0422b3f..b0bba4d 100644 --- a/Courses/Tools.md +++ b/Courses/Tools.md @@ -9,3 +9,4 @@ - Бенчмаркинг - [Измерение производительности кода и оптимизация в JavaScript и Node.js](https://youtu.be/sanq2X7Re8o) - https://github.com/HowProgrammingWorks/Benchmark +- [Байки про JavaScript и Node.js с Тимуром Шемсединовым](https://youtu.be/hoKKYKMadQs) From d8ed13865552d29a30e9649307050fe7d4d54125 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Wed, 24 Feb 2021 22:24:32 +0200 Subject: [PATCH 014/308] Fix vedeo naming --- Courses/Asynchronous.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Courses/Asynchronous.md b/Courses/Asynchronous.md index a069c59..15375e9 100644 --- a/Courses/Asynchronous.md +++ b/Courses/Asynchronous.md @@ -19,7 +19,7 @@ - Библиотека async.js: https://caolan.github.io/async/ - [Асинхронность на промисах](https://youtu.be/RMl4r6s1Y8M) - Примеры кода: https://github.com/HowProgrammingWorks/Promise -- [Асинхронные функции и обработка ошибок](https://youtu.be/Jdf_tZuJbHI) +- [Асинхронные функции, async/await, thenable, обработка ошибок](https://youtu.be/Jdf_tZuJbHI) - Примеры кода: https://github.com/HowProgrammingWorks/AsyncAwait - [Асинхронные адаптеры: promisify, callbackify, asyncify](https://youtu.be/76k6_YkYRmU) - Примеры кода: https://github.com/HowProgrammingWorks/AsyncAdapter From 4f4f9b7aedcf83e9d47818bf9942c484baa2838a Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Wed, 24 Feb 2021 22:25:51 +0200 Subject: [PATCH 015/308] Sync vedeo naming --- Courses/Fundamentals.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Courses/Fundamentals.md b/Courses/Fundamentals.md index f56c931..97c31c5 100644 --- a/Courses/Fundamentals.md +++ b/Courses/Fundamentals.md @@ -150,7 +150,7 @@ - Примеры кода: https://github.com/HowProgrammingWorks/Benchmark - [Асинхронное программирование на callback`ах](https://youtu.be/z8Hg6zgi3yQ) - Примеры кода: https://github.com/HowProgrammingWorks/AsynchronousProgramming -- [Асинхронные функции async, await, thenable, обработка ошибок](https://youtu.be/Jdf_tZuJbHI) +- [Асинхронные функции, async/await, thenable, обработка ошибок](https://youtu.be/Jdf_tZuJbHI) - Примеры кода: https://github.com/HowProgrammingWorks/AsyncAwait - Неизменяемые структуры данных (immutable) - Автоматное программирование: конечные автоматы (машины состояний) From e9a5c9cfd4241df7dbc266024497cb1c56669639 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Wed, 24 Feb 2021 22:36:20 +0200 Subject: [PATCH 016/308] Add Math.random() meetup about Node.js --- Courses/NodeJS.md | 1 + Courses/Talks.md | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/Courses/NodeJS.md b/Courses/NodeJS.md index d3aa547..d4d0549 100644 --- a/Courses/NodeJS.md +++ b/Courses/NodeJS.md @@ -9,6 +9,7 @@ - [Node.js Middleware – никогда больше!](https://youtu.be/RS8x73z4csI) - Слaйды: https://www2.slideshare.net/tshemsedinov/nodejs-middleware-never-again - [Байки про JavaScript и Node.js с Тимуром Шемсединовым](https://youtu.be/hoKKYKMadQs) +- [Стратегия входа Node.js в корпоративный сектор](https://youtu.be/FLcBrP1KFYk) ## Вебинары Node.js: Выйди и зайди нормально diff --git a/Courses/Talks.md b/Courses/Talks.md index 7a0dd58..d4bf506 100644 --- a/Courses/Talks.md +++ b/Courses/Talks.md @@ -15,4 +15,4 @@ - Слайды: https://www.slideshare.net/tshemsedinov/js-fest-2019-nodejs-antipatterns - [Разделяемая память в многопоточном Node.js. Тимур Шемсединов. JS Fest 2019 Spring](https://youtu.be/KNsm_iIQt7U) - Слайды: https://www.slideshare.net/tshemsedinov/shared-memory-and-multithreading-in-nodejs-timur-shemsedinov-jsfest19 -Байки про JavaScript и Node.js с Тимуром Шемсединовым +- [Стратегия входа Node.js в корпоративный сектор](https://youtu.be/FLcBrP1KFYk) From 332d7e0543072853a2ae6b7c28e6e76d8619cb64 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Wed, 24 Feb 2021 22:37:50 +0200 Subject: [PATCH 017/308] Add foxminded video --- Courses/Talks.md | 1 + 1 file changed, 1 insertion(+) diff --git a/Courses/Talks.md b/Courses/Talks.md index d4bf506..e078a11 100644 --- a/Courses/Talks.md +++ b/Courses/Talks.md @@ -15,4 +15,5 @@ - Слайды: https://www.slideshare.net/tshemsedinov/js-fest-2019-nodejs-antipatterns - [Разделяемая память в многопоточном Node.js. Тимур Шемсединов. JS Fest 2019 Spring](https://youtu.be/KNsm_iIQt7U) - Слайды: https://www.slideshare.net/tshemsedinov/shared-memory-and-multithreading-in-nodejs-timur-shemsedinov-jsfest19 +- [Байки про JavaScript и Node.js с Тимуром Шемсединовым](https://youtu.be/hoKKYKMadQs) - [Стратегия входа Node.js в корпоративный сектор](https://youtu.be/FLcBrP1KFYk) From 75cd7368609d571c48e5721862e6dea6f5b1c335 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Fri, 26 Feb 2021 14:36:44 +0200 Subject: [PATCH 018/308] Add GRASP course --- Courses/GRASP.md | 4 ++++ Courses/NodeJS.md | 2 ++ Courses/OOP.md | 2 ++ README.md | 2 ++ 4 files changed, 10 insertions(+) create mode 100644 Courses/GRASP.md diff --git a/Courses/GRASP.md b/Courses/GRASP.md new file mode 100644 index 0000000..f93fffc --- /dev/null +++ b/Courses/GRASP.md @@ -0,0 +1,4 @@ +# GRASP: принципы распределения ответственности + +- [GRASP принципы с адаптацией для JavaScript и Node.js](https://youtu.be/ExauFjYV_lQ) +- [Принцип информационный эксперт с адаптацией](https://youtu.be/cCHL329_As0) diff --git a/Courses/NodeJS.md b/Courses/NodeJS.md index d4d0549..e8a1a16 100644 --- a/Courses/NodeJS.md +++ b/Courses/NodeJS.md @@ -59,6 +59,8 @@ - Примеры кода: https://github.com/HowProgrammingWorks/InterProcessCommunication - [Слои, связанность и связность кода](https://youtu.be/A3RpwNlVeyY) - Примеры кода: https://github.com/HowProgrammingWorks/Abstractions +- [GRASP принципы с адаптацией для JavaScript и Node.js](https://youtu.be/ExauFjYV_lQ) +- [Принцип информационный эксперт с адаптацией](https://youtu.be/cCHL329_As0) ## Разработка серверов приложений и API на Node.js diff --git a/Courses/OOP.md b/Courses/OOP.md index c503dba..c140335 100644 --- a/Courses/OOP.md +++ b/Courses/OOP.md @@ -18,3 +18,5 @@ - Примеры кода: https://github.com/HowProgrammingWorks/LiskovSubstitution - [Антипаттерны объектно-ориентированного программирования](https://youtu.be/9d5TG1VsLeU) - Примеры кода: https://github.com/HowProgrammingWorks/Antipatterns/tree/master/JavaScript/03-OOP +- [GRASP принципы с адаптацией для JavaScript и Node.js](https://youtu.be/ExauFjYV_lQ) +- [Принцип информационный эксперт с адаптацией](https://youtu.be/cCHL329_As0) diff --git a/README.md b/README.md index 9b8e0fd..ca33ba9 100644 --- a/README.md +++ b/README.md @@ -37,6 +37,8 @@ (есть 20% примеров кода и несколько видео-лекций) - [Объектно-ориентированное программирование](Courses/OOP.md) (есть 20% примеров кода и несколько видео-лекций) +- [GRASP принципы с адаптацией для JavaScript и Node.js](Courses/GRASP.md) + (есть 50% материала, записано 20% лекций) - [Операционные системы](Courses/OS.md) (нужно сформировать программу) - [Системное программирование](Courses/System.md) From 506b938a16808a5661ae0bd0a515d963a4fdc691 Mon Sep 17 00:00:00 2001 From: Dmytro Pashchenko Date: Sun, 7 Mar 2021 12:29:08 +0200 Subject: [PATCH 019/308] fixed typo --- Practice/SEF3.ru.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Practice/SEF3.ru.md b/Practice/SEF3.ru.md index fa1689c..5f59f02 100644 --- a/Practice/SEF3.ru.md +++ b/Practice/SEF3.ru.md @@ -6,7 +6,7 @@ - Проект студенческой группы или общественный проект в открытом коде - Собственный open-source проект -## Разрешается (при зазумном обосновании выбора): +## Разрешается (при разумном обосновании выбора): - Любой язык - Любой технологический стек From cfc98de8eac152e9931edc9b006dedac43526c45 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Mon, 8 Mar 2021 12:08:07 +0200 Subject: [PATCH 020/308] Add SEF2 practical projects requirements and recomendations --- Practice/SEF2.ru.md | 71 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 71 insertions(+) create mode 100644 Practice/SEF2.ru.md diff --git a/Practice/SEF2.ru.md b/Practice/SEF2.ru.md new file mode 100644 index 0000000..500995c --- /dev/null +++ b/Practice/SEF2.ru.md @@ -0,0 +1,71 @@ +# Практика и проекты + +## Возможные варианты организации работ: + +- Контрибьюшен в любой open-source проект или библиотеку. +- Контрибьюшен в [Metarhia](https://github.com/metarhia). +- Проект студенческой группы или общественный проект в открытом коде. +- Собственный open-source проект. + +## Что разрешено и что запрещено: + +- Можно использовать любой язык и все встроенные в него библиотек. +- Нельзя использовать сторонние библиотеки, устанавливаемые из npm, githib и т.д. +- Репозиторий обязательно размещается на https://github.com в открытом доступе. +- Нужно развить навыки групповой работы, для этого студенты объединяются в группы +по 2-5 человек; группа может писать один общий проект или делать перекретсный +ревью кода индивидуальных проектов каждого участника группы. Пересмотрите: + - [Что такое ревью кода](https://youtu.be/EKL6NiIQ6ZU) + - [Семинар: по ревью кода](https://youtu.be/AgH4OAKbmkM) +- Проект не может быть одномоментно залит на гитхаб за день до сдачи, его нужно +вести в гитхабе на протяжении нескольких месяцев, чтобы была видна работа, +история коммитов и PR (pull request). Хорошо, если можно будет проследить +улучшение кодовой базы, рефакторинг и опритизацию. Пересмотрите: + - Общие [антипаттерны для всех парадигм](https://youtu.be/NMUsUiFokr4), и + - Антипаттерны [процедурного программирования](https://youtu.be/cTv7V22mkwE); + - Лекция про [рефакторинг](https://youtu.be/z73wmpdweQ4). +- Хорошее ведение репозитория: issues, pull requests, milestones (см. кнопки на +закладках issues и pr в github), discussions (не обязательно), kanban (средство +планирования проекта, ищите на закладке project в github), wiki (не обязательно). +- В каждом проекте должны быть юниттесты для проверки работоспособности. +- Репозиторий должен включать: + - Лицензию и список контрибьютеров + - Файл `README.md` с кратким (1-2 страницы) описанием проекта. Ни какие папки + с бумагами не нужны, все только в электронном виде без бюрократии. + - Настроенный линтер (а если кода на JavaScript, еще и prettier). + - Дотфайлы для системы контроля версий и менеджера пакетов. + +## Примеры тем: + +- Библиотека для работы с IPv4 и IPv6 адерсами: парсер, сравнение, манипуляции, +работа с масками и диапазонами, сериализаци в виде строки и числа, любые другие +операции, которые вы придумаете. +- Парсер HTML, CSS, JSON, YAML или любого другого формата файлов. +- Разработать универсальный класс для кэширования: вычислений, операций +ввода/вывода, запросов к базе данных или других операций, требующих ускорения при +помощи кешировани (на выбор). Содержащий конфигурируемый кеш с такими +характеристиками: определенный размер в количестве записей или объеме памяти, +время вытеснения из кеша, приоритеты вытеснения. +- Реализовать машинную проверку правильности синтаксиса и стиля кода. Отдельная +тема может быть по исправлению простейших синтаксических ошибок. И еще одна тема +по автоформатированию кода, приведению его к соглашениям по стилю. +- Усовершенствованный EventEmitter, например, с такими возможностями: одноразовая +и N-разовая подписка, автоматическая отписка после таймаута или отправки +специального события, ожидание событий на синтаксисе async/await и др. +- Проекция структур данных в памяти. Можно сделать специальный синтаксис (язык +проекции), что уже сделано на JavaScript в репозитории +https://github.com/HowProgrammingWorks/Projection +- Разработать простую Key-value (ключ-значение) in-memory СУБД (систему +управления базами данных, которая хранит все в оперативной памяти). В самом +простом случае это хеш-таблица. Пример реализации Redis, Memcached или MongoDB, +можно взять их интерфейсы за основу и модифицировать. +- Разработать планировщик задач в виде класса или прототипа, который умеет +повторять выполнение метода по расписанию, например: по пятницам в 2 ночи или +кадый второй понедельник месяца в 12:30 по UTC. Он создает необходимые для этого +таймеры и исполняет задачи. +- Утилиты для интерфейса командной строки. + +## Регистрация тем + +- Нужно заполнить форму: https://forms.gle/u7v7nUFxamcgJ2aQ6 +- И дать мне права на редозиторий, мой аккаунт: https://github.com/tshemsedinov From 4030fa9cbc0b956edb21f163c211e9f026a41445 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Mon, 8 Mar 2021 12:20:51 +0200 Subject: [PATCH 021/308] Fix spelling --- Practice/SEF3.ru.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Practice/SEF3.ru.md b/Practice/SEF3.ru.md index fa1689c..5f59f02 100644 --- a/Practice/SEF3.ru.md +++ b/Practice/SEF3.ru.md @@ -6,7 +6,7 @@ - Проект студенческой группы или общественный проект в открытом коде - Собственный open-source проект -## Разрешается (при зазумном обосновании выбора): +## Разрешается (при разумном обосновании выбора): - Любой язык - Любой технологический стек From 10e7fa3503a369c9ab23adf789b705396c4ffda2 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Mon, 8 Mar 2021 12:25:18 +0200 Subject: [PATCH 022/308] Fix spelling --- Practice/SEF2.ru.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/Practice/SEF2.ru.md b/Practice/SEF2.ru.md index 500995c..961e881 100644 --- a/Practice/SEF2.ru.md +++ b/Practice/SEF2.ru.md @@ -13,14 +13,14 @@ - Нельзя использовать сторонние библиотеки, устанавливаемые из npm, githib и т.д. - Репозиторий обязательно размещается на https://github.com в открытом доступе. - Нужно развить навыки групповой работы, для этого студенты объединяются в группы -по 2-5 человек; группа может писать один общий проект или делать перекретсный +по 2-5 человек; группа может писать один общий проект или сделать перекрестный ревью кода индивидуальных проектов каждого участника группы. Пересмотрите: - [Что такое ревью кода](https://youtu.be/EKL6NiIQ6ZU) - [Семинар: по ревью кода](https://youtu.be/AgH4OAKbmkM) - Проект не может быть одномоментно залит на гитхаб за день до сдачи, его нужно вести в гитхабе на протяжении нескольких месяцев, чтобы была видна работа, история коммитов и PR (pull request). Хорошо, если можно будет проследить -улучшение кодовой базы, рефакторинг и опритизацию. Пересмотрите: +улучшение кодовой базы, рефакторинг и оптимизацию. Пересмотрите: - Общие [антипаттерны для всех парадигм](https://youtu.be/NMUsUiFokr4), и - Антипаттерны [процедурного программирования](https://youtu.be/cTv7V22mkwE); - Лекция про [рефакторинг](https://youtu.be/z73wmpdweQ4). @@ -30,14 +30,14 @@ - В каждом проекте должны быть юниттесты для проверки работоспособности. - Репозиторий должен включать: - Лицензию и список контрибьютеров - - Файл `README.md` с кратким (1-2 страницы) описанием проекта. Ни какие папки + - Файл `README.md` с кратким (1-2 страницы) описанием проекта. Никакие папки с бумагами не нужны, все только в электронном виде без бюрократии. - Настроенный линтер (а если кода на JavaScript, еще и prettier). - Дотфайлы для системы контроля версий и менеджера пакетов. ## Примеры тем: -- Библиотека для работы с IPv4 и IPv6 адерсами: парсер, сравнение, манипуляции, +- Библиотека для работы с IPv4 и IPv6 адресами: парсер, сравнение, манипуляции, работа с масками и диапазонами, сериализаци в виде строки и числа, любые другие операции, которые вы придумаете. - Парсер HTML, CSS, JSON, YAML или любого другого формата файлов. @@ -61,7 +61,7 @@ https://github.com/HowProgrammingWorks/Projection можно взять их интерфейсы за основу и модифицировать. - Разработать планировщик задач в виде класса или прототипа, который умеет повторять выполнение метода по расписанию, например: по пятницам в 2 ночи или -кадый второй понедельник месяца в 12:30 по UTC. Он создает необходимые для этого +каждый второй понедельник месяца в 12:30 по UTC. Он создает необходимые для этого таймеры и исполняет задачи. - Утилиты для интерфейса командной строки. From 2f7e12e87f45b0a690f49d8427c743cf8fd97622 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Mon, 8 Mar 2021 12:26:05 +0200 Subject: [PATCH 023/308] Add link to practice --- Practice/Index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Practice/Index.md b/Practice/Index.md index 16e6f46..7b31417 100644 --- a/Practice/Index.md +++ b/Practice/Index.md @@ -1,6 +1,6 @@ # Практика и проекты - Модуль [SEF1](SEF1.ru.md) (1 курс, 1 семестр) -- Модуль SEF2 (1 курс, 2 семестр) +- Модуль [SEF2](SEF2.ru.md) (1 курс, 2 семестр) - Модуль [SEF3](SEF3.ru.md) (2 курс, 1 семестр) - Модуль SEF4 (2 курс, 2 семестр) From 7ea1a009ee9a45bde0e14eefcb4742efa92e8cd8 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Wed, 10 Mar 2021 22:27:34 +0200 Subject: [PATCH 024/308] Add two GRASP Videos --- Courses/GRASP.md | 4 +++- Courses/NodeJS.md | 4 +++- Courses/OOP.md | 4 +++- Courses/Short.md | 5 +++++ 4 files changed, 14 insertions(+), 3 deletions(-) diff --git a/Courses/GRASP.md b/Courses/GRASP.md index f93fffc..b116d35 100644 --- a/Courses/GRASP.md +++ b/Courses/GRASP.md @@ -1,4 +1,6 @@ # GRASP: принципы распределения ответственности - [GRASP принципы с адаптацией для JavaScript и Node.js](https://youtu.be/ExauFjYV_lQ) -- [Принцип информационный эксперт с адаптацией](https://youtu.be/cCHL329_As0) +- [Принцип информационный эксперт / Information Expert](https://youtu.be/cCHL329_As0) +- [Зацепление и связность / Coupling and Cohesion](https://youtu.be/IGXdPOZ3Fyk) +- [Чистая выдумка / Pure Fabrication](https://youtu.be/CV577a0RHBM) diff --git a/Courses/NodeJS.md b/Courses/NodeJS.md index e8a1a16..b7957ce 100644 --- a/Courses/NodeJS.md +++ b/Courses/NodeJS.md @@ -60,7 +60,9 @@ - [Слои, связанность и связность кода](https://youtu.be/A3RpwNlVeyY) - Примеры кода: https://github.com/HowProgrammingWorks/Abstractions - [GRASP принципы с адаптацией для JavaScript и Node.js](https://youtu.be/ExauFjYV_lQ) -- [Принцип информационный эксперт с адаптацией](https://youtu.be/cCHL329_As0) +- [Принцип информационный эксперт / Information Expert](https://youtu.be/cCHL329_As0) +- [Зацепление и связность / coupling and cohesion](https://youtu.be/IGXdPOZ3Fyk) +- [Чистая выдумка / Pure Fabrication](https://youtu.be/CV577a0RHBM) ## Разработка серверов приложений и API на Node.js diff --git a/Courses/OOP.md b/Courses/OOP.md index c140335..4932783 100644 --- a/Courses/OOP.md +++ b/Courses/OOP.md @@ -19,4 +19,6 @@ - [Антипаттерны объектно-ориентированного программирования](https://youtu.be/9d5TG1VsLeU) - Примеры кода: https://github.com/HowProgrammingWorks/Antipatterns/tree/master/JavaScript/03-OOP - [GRASP принципы с адаптацией для JavaScript и Node.js](https://youtu.be/ExauFjYV_lQ) -- [Принцип информационный эксперт с адаптацией](https://youtu.be/cCHL329_As0) +- [Принцип информационный эксперт / Information Expert](https://youtu.be/cCHL329_As0) +- [Зацепление и связность / coupling and cohesion](https://youtu.be/IGXdPOZ3Fyk) +- [Чистая выдумка / Pure Fabrication](https://youtu.be/CV577a0RHBM) diff --git a/Courses/Short.md b/Courses/Short.md index ee09821..7e051f2 100644 --- a/Courses/Short.md +++ b/Courses/Short.md @@ -68,6 +68,11 @@ и GoF: порождающие, структурные и поведенческие шаблоны, плюс контрактное программирование. +- GRASP принципы с адаптацией для JavaScript и Node.js +- Принцип информационный эксперт / Information Expert +- Зацепление и связность / coupling and cohesion +- Чистая выдумка / Pure Fabrication + ## Асинхронное программирование: 2 семестр 2 курса - Введение в асинхронное программирование и неблокирующий ввод-вывод From aa6903c13820b7a5e6d115d43f6f83e84007b6f8 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Sat, 20 Mar 2021 23:43:24 +0200 Subject: [PATCH 025/308] Reorder talks, fix links --- Courses/Talks.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/Courses/Talks.md b/Courses/Talks.md index e078a11..e39d947 100644 --- a/Courses/Talks.md +++ b/Courses/Talks.md @@ -1,10 +1,12 @@ # Доклады и выступления +- [Байки про JavaScript и Node.js с Тимуром Шемсединовым](https://youtu.be/hoKKYKMadQs) +- [Стратегия входа Node.js в корпоративный сектор](https://youtu.be/FLcBrP1KFYk) - [JavaScript fwdays'20 autumn online conference](https://fwdays.com/en/event/javascript-fwdays-2020) - - Доклад: [Node.js Middleware: Never again! 2020 Sep 22, 19:30](https://fwdays.com/en/event/javascript-fwdays-2020/review/nodejs-middleware) - - Слайды: https://www.slideshare.net/tshemsedinov/nodejs-middleware-never-again - - Круглый стол: Node.js with Timur Shemsedinov, Illya Klymov, Olena Sharovar, Nikita Galkin and Andrii Shumada -- Вебинары на JavaScript fwdays'20 [Node.js: Выйди и зайди нормально]() + - Доклад: [Node.js Middleware: Never again!](https://youtu.be/RS8x73z4csI) + - Слайды: https://www.slideshare.net/tshemsedinov/nodejs-middleware-never-again +- Круглый стол: [Node.js with Timur Shemsedinov, Illya Klymov, Olena Sharovar, Nikita Galkin and Andrii Shumada](https://youtu.be/0DHslLRof-M) +- Вебинары на JavaScript fwdays'20 [Node.js: Выйди и зайди нормально](https://fwdays.com/en/event/node-js-in-2020) - [Часть 1: Обзор новых возможностей, история и изоляция](https://youtu.be/GJY2dyE6328?t=480) - Слайды: https://www.slideshare.net/tshemsedinov/nodejs-in-2020-part-1 - [Часть 2: Проблемы и как они связаны с фундаментальными CS](https://youtu.be/r1u-dGocm1c) @@ -15,5 +17,3 @@ - Слайды: https://www.slideshare.net/tshemsedinov/js-fest-2019-nodejs-antipatterns - [Разделяемая память в многопоточном Node.js. Тимур Шемсединов. JS Fest 2019 Spring](https://youtu.be/KNsm_iIQt7U) - Слайды: https://www.slideshare.net/tshemsedinov/shared-memory-and-multithreading-in-nodejs-timur-shemsedinov-jsfest19 -- [Байки про JavaScript и Node.js с Тимуром Шемсединовым](https://youtu.be/hoKKYKMadQs) -- [Стратегия входа Node.js в корпоративный сектор](https://youtu.be/FLcBrP1KFYk) From f93264d0ff86373a064792bd78cf93ec54a5e5cc Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Sat, 20 Mar 2021 23:44:22 +0200 Subject: [PATCH 026/308] Split by years --- Courses/Talks.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/Courses/Talks.md b/Courses/Talks.md index e39d947..0dc1312 100644 --- a/Courses/Talks.md +++ b/Courses/Talks.md @@ -1,7 +1,12 @@ # Доклады и выступления +## 2021 + - [Байки про JavaScript и Node.js с Тимуром Шемсединовым](https://youtu.be/hoKKYKMadQs) - [Стратегия входа Node.js в корпоративный сектор](https://youtu.be/FLcBrP1KFYk) + +## 2020 + - [JavaScript fwdays'20 autumn online conference](https://fwdays.com/en/event/javascript-fwdays-2020) - Доклад: [Node.js Middleware: Never again!](https://youtu.be/RS8x73z4csI) - Слайды: https://www.slideshare.net/tshemsedinov/nodejs-middleware-never-again @@ -13,6 +18,9 @@ - Слайды: https://www.slideshare.net/tshemsedinov/nodejs-in-2020-part-2 - [Часть 3: Структура и архитектура проекта, Node.js Starter Kit](https://youtu.be/ZXB5OTRld1w) - Слайды: https://www.slideshare.net/tshemsedinov/nodejs-in-2020-part-3 + +## 2019 + - [Антипаттерны Node.js](https://jsfest.com.ua/jsfest2019autumn/) - Слайды: https://www.slideshare.net/tshemsedinov/js-fest-2019-nodejs-antipatterns - [Разделяемая память в многопоточном Node.js. Тимур Шемсединов. JS Fest 2019 Spring](https://youtu.be/KNsm_iIQt7U) From a62b30ec51eaa442edd79daffa06229a66bfc817 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Sat, 20 Mar 2021 23:48:54 +0200 Subject: [PATCH 027/308] Add mare talks for 2020 --- Courses/Talks.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/Courses/Talks.md b/Courses/Talks.md index 0dc1312..aec68d8 100644 --- a/Courses/Talks.md +++ b/Courses/Talks.md @@ -18,6 +18,12 @@ - Слайды: https://www.slideshare.net/tshemsedinov/nodejs-in-2020-part-2 - [Часть 3: Структура и архитектура проекта, Node.js Starter Kit](https://youtu.be/ZXB5OTRld1w) - Слайды: https://www.slideshare.net/tshemsedinov/nodejs-in-2020-part-3 +- JavaScript fwdays'20: [Web Locks API in Node.js and browser](https://youtu.be/auMM-uV12F0) + - Слайды: https://www.slideshare.net/tshemsedinov/web-locks-api +- Node.js global summit 2020 + - [Asynchronous programming and mutlithreading](https://www.slideshare.net/tshemsedinov/asynchronous-programming-and-mutlithreading) + - [Race conditions, web locks and shared memory](https://www.slideshare.net/tshemsedinov/raceconditionsweblocksandsharedmemory) + - [Node.js patterns and antipatterns](https://www.slideshare.net/tshemsedinov/patterns-and-antipatterns-234771061) ## 2019 From 3d665fb00961c68f7b056a85ddfa395965edde89 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Sun, 21 Mar 2021 00:34:35 +0200 Subject: [PATCH 028/308] Add more talks 2013-2020 --- Courses/Talks.md | 50 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) diff --git a/Courses/Talks.md b/Courses/Talks.md index aec68d8..2b560fb 100644 --- a/Courses/Talks.md +++ b/Courses/Talks.md @@ -31,3 +31,53 @@ - Слайды: https://www.slideshare.net/tshemsedinov/js-fest-2019-nodejs-antipatterns - [Разделяемая память в многопоточном Node.js. Тимур Шемсединов. JS Fest 2019 Spring](https://youtu.be/KNsm_iIQt7U) - Слайды: https://www.slideshare.net/tshemsedinov/shared-memory-and-multithreading-in-nodejs-timur-shemsedinov-jsfest19 +- DevPoint'19: Как возможно состояние гонки в однопоточном JavaScript? + - Слайды: https://www.slideshare.net/tshemsedinov/how-are-race-conditions-in-single-threaded-javascript-possible +- DevopsStage'19: Private cloud without vendor lock (Serverless) + - Слайды: https://www.slideshare.net/tshemsedinov/private-cloud-without-vendor-lock-serverless +- DX Day'19: How to keep control and safety in the clouds + - Слайды: https://www.slideshare.net/tshemsedinov/how-to-keep-control-and-safety-in-the-clouds + +## 2018 + +- KharkivJS 2018 + - [Карта знаний инженера-программиста](https://youtu.be/_s2WkaZJ0xQ) + - Слайды: https://www.slideshare.net/tshemsedinov/timur-shemsedinov-kharkivjs-2018 +- KievJS + - [Метархия придет, порядок наведет](https://youtu.be/G3IWQP4gVSg) + - Слайды: https://www.slideshare.net/tshemsedinov/metarhia-kievjs-22feb2018 +- Как повышать свою квалификацию всю жизнь + - Слайды: https://www.slideshare.net/tshemsedinov/how-to-get-knowledge-and-improve-it-all-your-professional-life-long + +## 2017 + +- KharkivJS #8, 2017 + - [Асинхронное программирование на JS и Node.js](https://youtu.be/VdRhAXnfrd0) + - Слайды: https://www.slideshare.net/tshemsedinov/asynchronous-programming-with-java-script-and-nodejs +- JS Conference 2017 + - [Масштабирование Node.js для высоких нагрузок](https://youtu.be/-yJWLaJ31NI) + - Слайды: https://www.slideshare.net/tshemsedinov/nodejs-scaling-in-highload-145786324 + +## 2015 + +- JS Lab 2015, Odessa + - [Архитектура информационных систем на Node.js](https://youtu.be/Try7lmWikao) + - Слайды: https://www.slideshare.net/tshemsedinov/nodejs-architecture +- Odessa.js 2015 + - [Как исправить ошибку в NodeJS и нечаянно поднять производительность в 2 раза](https://youtu.be/Q8ohKdYrpRA) + - Слайды: https://www.slideshare.net/tshemsedinov/metarhia-nodejs-macht-frei + +## 2014 + +- JavaScript fwdays'14 + - [Примеры быстрой разработки API на масштабируемом сервера приложений](https://youtu.be/f6McffaVq78) + - Слайды: https://www.slideshare.net/tshemsedinov/jsfwdays-2014impressen +- Odessa.js 2014 + - [Metaprogramming with JavaScript](https://www.slideshare.net/tshemsedinov/metaprogramming-with-javascript) +- [Node.js введение в технологию, КПИ](https://www.slideshare.net/tshemsedinov/nodejs-itmeetingkpi) + +##2013 + +- FOSS Fea, 2013, Odessa + - [Impress Application Server for node.js](https://youtu.be/Zr_1YrcXtkE) + - Слайды: https://www.slideshare.net/tshemsedinov/impress-application-server-for-nodejs-28823747 From 330b0e71af6d9ae3dad94d8f38a8863604a338f8 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Sun, 21 Mar 2021 00:49:08 +0200 Subject: [PATCH 029/308] Add more events --- Courses/Talks.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/Courses/Talks.md b/Courses/Talks.md index 2b560fb..16636d4 100644 --- a/Courses/Talks.md +++ b/Courses/Talks.md @@ -24,6 +24,8 @@ - [Asynchronous programming and mutlithreading](https://www.slideshare.net/tshemsedinov/asynchronous-programming-and-mutlithreading) - [Race conditions, web locks and shared memory](https://www.slideshare.net/tshemsedinov/raceconditionsweblocksandsharedmemory) - [Node.js patterns and antipatterns](https://www.slideshare.net/tshemsedinov/patterns-and-antipatterns-234771061) +- AllStarsIT meetup: [Патерни та антипатерни для JavaScript та Node.js](https://www.facebook.com/events/493244841602522) +- Innovecs meetup: [Node.js in 2020](https://www.facebook.com/events/599254947289540/) ## 2019 @@ -58,6 +60,13 @@ - [Масштабирование Node.js для высоких нагрузок](https://youtu.be/-yJWLaJ31NI) - Слайды: https://www.slideshare.net/tshemsedinov/nodejs-scaling-in-highload-145786324 +## 2016 + +- Odessa.js'2016 + - [Node.js Macht frei](https://youtu.be/926UKzrVrqk) + - Статья: https://habrahabr.ru/post/306584/ + - Слайды: http://www.slideshare.net/tshemsedinov/metarhia-nodejs-macht-frei + ## 2015 - JS Lab 2015, Odessa From 3292cf10fd6b3d04ea119fb5a5aa4e836859a149 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Sun, 21 Mar 2021 23:29:13 +0200 Subject: [PATCH 030/308] Fix section --- Courses/Talks.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Courses/Talks.md b/Courses/Talks.md index 16636d4..1c00cef 100644 --- a/Courses/Talks.md +++ b/Courses/Talks.md @@ -85,7 +85,7 @@ - [Metaprogramming with JavaScript](https://www.slideshare.net/tshemsedinov/metaprogramming-with-javascript) - [Node.js введение в технологию, КПИ](https://www.slideshare.net/tshemsedinov/nodejs-itmeetingkpi) -##2013 +## 2013 - FOSS Fea, 2013, Odessa - [Impress Application Server for node.js](https://youtu.be/Zr_1YrcXtkE) From aa765b8a595d3638a215d9437caad3e2d8f07f77 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Sun, 21 Mar 2021 23:39:30 +0200 Subject: [PATCH 031/308] Add Odessa.js'2018 Node.js School --- Courses/Talks.md | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/Courses/Talks.md b/Courses/Talks.md index 1c00cef..5c15634 100644 --- a/Courses/Talks.md +++ b/Courses/Talks.md @@ -50,6 +50,26 @@ - Слайды: https://www.slideshare.net/tshemsedinov/metarhia-kievjs-22feb2018 - Как повышать свою квалификацию всю жизнь - Слайды: https://www.slideshare.net/tshemsedinov/how-to-get-knowledge-and-improve-it-all-your-professional-life-long +- Node.js School at Odessa.js'2018 + - [Часть 1: Введение и парадигмы программирования](https://youtu.be/UHl_BPEfc_M) + - [Часть 2: Стиль, парадигмы, функции](https://youtu.be/HWOdjxUqVmY) + - [Часть 3: Частичное применение, каррирование, замыкания, чеининг](https://youtu.be/OBTYfpCRABA) + - [Часть 5: EventEmitter, Symbol, Proxy](https://youtu.be/UwhOIFJX4Ok) + - [Часть 6: Композиция функций](https://youtu.be/0ldgoRKoTuo) + - [Часть 7: Коллекции: Array, Object, Map, Set, weak & typed, итераторы](https://youtu.be/1CFCvFGk4fM) + - [Часть 8: Типизированные массивы, буферы, итераторы, генераторы](https://youtu.be/bFT7VGFfP7o) + - [Часть 9: Event loop, асинхронность, таймеры, колбеки, промисы, async/await](https://youtu.be/jUCJfLv48yc) + - [Часть 10: Наблюдение за файловой системой и динамическая подгрузка в Node.js](https://youtu.be/0EQQZvNM_uo) + - [Часть 11: Структуры данных: связные списки, деревья структур в JavaScript](https://youtu.be/XNliOCBhYRY) + - [Часть 12: Графы на JavaScript (структуры данных)](https://youtu.be/eD1A7V-Jzow) + - [Часть 13: Асинхронное программирование в JavaScript и Node.js](https://youtu.be/gHrw05mH7d8) + - [Часть 14: Коллекторы данных, композиция асинхронных функций в JavaScript и Node.js](https://youtu.be/q-75nBM365Y) + - [Часть 15: адаптеры callbackify, promisify, асинхронная очередь для Node.js и JavaScript](https://youtu.be/b0XwgMkDo14) + - [Часть 16: Обзор технологии Node.js от контрибьютеров и мемы про JavaScript](https://youtu.be/NTs-wc_Pk8M) + - [Часть 17: Потоки (Streams) в Node.js](https://youtu.be/3ZRkNvs_SaE) + - [Часть 18: HTTP сервер в Node.js, req, res, сокеты и потоки (streams)](https://youtu.be/PDR5hcV4a_0) + - [Часть 19: Песочницы (V8 sandbox) и исполнение JavaScript в Node.js](https://youtu.be/WnCwXvhscPM) + - [Часть 20: Процессы, кластеризация и балансировка в Node.js](https://youtu.be/YPoiltzkUXI) ## 2017 From 36eaa5b6313e69adce2e545e9f7c9db6c8ffff30 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Sat, 27 Mar 2021 22:14:48 +0200 Subject: [PATCH 032/308] Add Beetroot meetup --- Courses/Talks.md | 1 + 1 file changed, 1 insertion(+) diff --git a/Courses/Talks.md b/Courses/Talks.md index 5c15634..0496eff 100644 --- a/Courses/Talks.md +++ b/Courses/Talks.md @@ -4,6 +4,7 @@ - [Байки про JavaScript и Node.js с Тимуром Шемсединовым](https://youtu.be/hoKKYKMadQs) - [Стратегия входа Node.js в корпоративный сектор](https://youtu.be/FLcBrP1KFYk) +- [Как Node.js разработчику подготовиться к проектам корпоративного уровня](https://youtu.be/DghzF_OmodY) ## 2020 From 18c86af513e1c7c7c55ddc4b9502e0efce01bb9c Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Sat, 27 Mar 2021 22:20:34 +0200 Subject: [PATCH 033/308] Add future talks --- Courses/Talks.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/Courses/Talks.md b/Courses/Talks.md index 0496eff..4da1c44 100644 --- a/Courses/Talks.md +++ b/Courses/Talks.md @@ -1,5 +1,12 @@ # Доклады и выступления +## Future talks + +- [Технологический стек Metarhia для Node.js](https://fwdays.com/en/event/javascript-fwdays-2021/review/metarhia-technology-stack-for-nodejs) +- [Технологический стек Node.js для корпоративных приложений](https://fwdays.com/en/event/node-js-stack-for-enterprise) +- [Node.js от middleware к сервисам](https://fwdays.com/en/event/node-js-stack-for-enterprise) +- [Адаптация GRASP для JavaScript и Node.js](https://fwdays.com/en/event/node-js-stack-for-enterprise) + ## 2021 - [Байки про JavaScript и Node.js с Тимуром Шемсединовым](https://youtu.be/hoKKYKMadQs) From 85ea15a9b3f0e3c8a3cb01c38358d511f17c2a85 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Sat, 27 Mar 2021 22:36:46 +0200 Subject: [PATCH 034/308] Add schools and worksops --- Courses/Talks.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/Courses/Talks.md b/Courses/Talks.md index 4da1c44..460ea8e 100644 --- a/Courses/Talks.md +++ b/Courses/Talks.md @@ -18,7 +18,6 @@ - [JavaScript fwdays'20 autumn online conference](https://fwdays.com/en/event/javascript-fwdays-2020) - Доклад: [Node.js Middleware: Never again!](https://youtu.be/RS8x73z4csI) - Слайды: https://www.slideshare.net/tshemsedinov/nodejs-middleware-never-again -- Круглый стол: [Node.js with Timur Shemsedinov, Illya Klymov, Olena Sharovar, Nikita Galkin and Andrii Shumada](https://youtu.be/0DHslLRof-M) - Вебинары на JavaScript fwdays'20 [Node.js: Выйди и зайди нормально](https://fwdays.com/en/event/node-js-in-2020) - [Часть 1: Обзор новых возможностей, история и изоляция](https://youtu.be/GJY2dyE6328?t=480) - Слайды: https://www.slideshare.net/tshemsedinov/nodejs-in-2020-part-1 @@ -32,8 +31,12 @@ - [Asynchronous programming and mutlithreading](https://www.slideshare.net/tshemsedinov/asynchronous-programming-and-mutlithreading) - [Race conditions, web locks and shared memory](https://www.slideshare.net/tshemsedinov/raceconditionsweblocksandsharedmemory) - [Node.js patterns and antipatterns](https://www.slideshare.net/tshemsedinov/patterns-and-antipatterns-234771061) +- Круглый стол: [Node.js with Timur Shemsedinov, Illya Klymov, Olena Sharovar, Nikita Galkin and Andrii Shumada](https://youtu.be/0DHslLRof-M) - AllStarsIT meetup: [Патерни та антипатерни для JavaScript та Node.js](https://www.facebook.com/events/493244841602522) - Innovecs meetup: [Node.js in 2020](https://www.facebook.com/events/599254947289540/) +- DevPro workshop: [Node.js 8-часовой интенсив](https://www.facebook.com/events/469222250713698/) +- [Школа Метархии NS5: 11-12 июля](https://www.meetup.com/NodeUA/events/269049581/) +- [Школа Метархии NS6: 22-23 августа](https://www.meetup.com/NodeUA/events/272331406/) ## 2019 From e1096a15f22ef47ee82b198e429b1660733ada1c Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Wed, 31 Mar 2021 21:13:40 +0300 Subject: [PATCH 035/308] Add new video --- Courses/GRASP.md | 1 + Courses/NodeJS.md | 1 + Courses/OOP.md | 1 + 3 files changed, 3 insertions(+) diff --git a/Courses/GRASP.md b/Courses/GRASP.md index b116d35..6ad776f 100644 --- a/Courses/GRASP.md +++ b/Courses/GRASP.md @@ -4,3 +4,4 @@ - [Принцип информационный эксперт / Information Expert](https://youtu.be/cCHL329_As0) - [Зацепление и связность / Coupling and Cohesion](https://youtu.be/IGXdPOZ3Fyk) - [Чистая выдумка / Pure Fabrication](https://youtu.be/CV577a0RHBM) +- [Пример декомпозиции класса](https://youtu.be/4AMVQ2-2DcM) diff --git a/Courses/NodeJS.md b/Courses/NodeJS.md index b7957ce..3cde645 100644 --- a/Courses/NodeJS.md +++ b/Courses/NodeJS.md @@ -63,6 +63,7 @@ - [Принцип информационный эксперт / Information Expert](https://youtu.be/cCHL329_As0) - [Зацепление и связность / coupling and cohesion](https://youtu.be/IGXdPOZ3Fyk) - [Чистая выдумка / Pure Fabrication](https://youtu.be/CV577a0RHBM) +- [GRASP: Пример декомпозиции класса](https://youtu.be/4AMVQ2-2DcM) ## Разработка серверов приложений и API на Node.js diff --git a/Courses/OOP.md b/Courses/OOP.md index 4932783..2073ae9 100644 --- a/Courses/OOP.md +++ b/Courses/OOP.md @@ -22,3 +22,4 @@ - [Принцип информационный эксперт / Information Expert](https://youtu.be/cCHL329_As0) - [Зацепление и связность / coupling and cohesion](https://youtu.be/IGXdPOZ3Fyk) - [Чистая выдумка / Pure Fabrication](https://youtu.be/CV577a0RHBM) +- [GRASP: Пример декомпозиции класса](https://youtu.be/4AMVQ2-2DcM) From 7270e0fe43b616fc3a93c574f4736ec8379ab67b Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Thu, 1 Apr 2021 19:33:04 +0300 Subject: [PATCH 036/308] Add allstars-it video --- Courses/Talks.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Courses/Talks.md b/Courses/Talks.md index 460ea8e..f7f1d0b 100644 --- a/Courses/Talks.md +++ b/Courses/Talks.md @@ -32,7 +32,9 @@ - [Race conditions, web locks and shared memory](https://www.slideshare.net/tshemsedinov/raceconditionsweblocksandsharedmemory) - [Node.js patterns and antipatterns](https://www.slideshare.net/tshemsedinov/patterns-and-antipatterns-234771061) - Круглый стол: [Node.js with Timur Shemsedinov, Illya Klymov, Olena Sharovar, Nikita Galkin and Andrii Shumada](https://youtu.be/0DHslLRof-M) -- AllStarsIT meetup: [Патерни та антипатерни для JavaScript та Node.js](https://www.facebook.com/events/493244841602522) +- AllStarsIT meetup: Патерни та антипатерни для JavaScript та Node.js + - Event page: https://www.facebook.com/events/493244841602522 + - Video: https://youtu.be/udcn_NqvDqk - Innovecs meetup: [Node.js in 2020](https://www.facebook.com/events/599254947289540/) - DevPro workshop: [Node.js 8-часовой интенсив](https://www.facebook.com/events/469222250713698/) - [Школа Метархии NS5: 11-12 июля](https://www.meetup.com/NodeUA/events/269049581/) From aaf5a589c5ad5cdde1b516a856130f4ff6288349 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Mon, 5 Apr 2021 18:56:53 +0300 Subject: [PATCH 037/308] Update SEF3 and SEF4 practice --- Practice/Index.md | 2 +- Practice/{SEF3.ru.md => SEF3-4.ru.md} | 9 ++++++--- 2 files changed, 7 insertions(+), 4 deletions(-) rename Practice/{SEF3.ru.md => SEF3-4.ru.md} (85%) diff --git a/Practice/Index.md b/Practice/Index.md index 7b31417..14b9368 100644 --- a/Practice/Index.md +++ b/Practice/Index.md @@ -2,5 +2,5 @@ - Модуль [SEF1](SEF1.ru.md) (1 курс, 1 семестр) - Модуль [SEF2](SEF2.ru.md) (1 курс, 2 семестр) -- Модуль [SEF3](SEF3.ru.md) (2 курс, 1 семестр) +- Модули [SEF3 и SEF4](SEF3-4.ru.md) (2 курс) - Модуль SEF4 (2 курс, 2 семестр) diff --git a/Practice/SEF3.ru.md b/Practice/SEF3-4.ru.md similarity index 85% rename from Practice/SEF3.ru.md rename to Practice/SEF3-4.ru.md index 5f59f02..4a77de5 100644 --- a/Practice/SEF3.ru.md +++ b/Practice/SEF3-4.ru.md @@ -9,13 +9,16 @@ ## Разрешается (при разумном обосновании выбора): - Любой язык - Любой технологический стек +- Можно использовать любые зависимости ## Если вы делаете свой репозиторий, то он обязательно должен включать: -- Юниттесты (возможно, системные и нагрузочные тесты) +- Юниттесты, системные и интеграционные (по желанию нагрузочные тесты) - CI (например: TravisCI, Github Actions) - Лицензию и список контрибьютеров -- Хорошее ведение репозитория: issues, pull requests, milestones +- Хорошее ведение репозитория: issues, pull requests, (желательно milestones) - Семантическое версионирование: https://semver.org/ + - Ведем CHANGELOG.md + - И выпускаем версии в виде тегов - Настроенный линтер (для js еще и prettier) - Дотфайлы для системы контроля версий и менеджера пакетов @@ -33,6 +36,6 @@ - Буферизация для Writable Stream: https://github.com/metarhia/metastreams - Библиотека для цветов в консоли: https://github.com/metarhia/concolor - Загрузчик конфигурации: https://github.com/metarhia/config -- Генерация документации из аннотации: https://github.com/metarhia/metadoc - Фреймворк тестирования: https://github.com/metarhia/metatests - Общие утилиты: https://github.com/metarhia/common +- Общие утилиты (облегченная): https://github.com/metarhia/metautil From 4ab28ba261f8b0609b9d6fe1aeca0a8c1ea4fc0d Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Mon, 5 Apr 2021 18:57:53 +0300 Subject: [PATCH 038/308] Add SEF5 and SEF6 practice --- Practice/Index.md | 2 +- Practice/SEF5-6.ru.md | 41 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 42 insertions(+), 1 deletion(-) create mode 100644 Practice/SEF5-6.ru.md diff --git a/Practice/Index.md b/Practice/Index.md index 14b9368..481ebd0 100644 --- a/Practice/Index.md +++ b/Practice/Index.md @@ -3,4 +3,4 @@ - Модуль [SEF1](SEF1.ru.md) (1 курс, 1 семестр) - Модуль [SEF2](SEF2.ru.md) (1 курс, 2 семестр) - Модули [SEF3 и SEF4](SEF3-4.ru.md) (2 курс) -- Модуль SEF4 (2 курс, 2 семестр) +- Модули [SEF5 и SEF6](SEF5-6.ru.md) (3 курс) diff --git a/Practice/SEF5-6.ru.md b/Practice/SEF5-6.ru.md new file mode 100644 index 0000000..4a77de5 --- /dev/null +++ b/Practice/SEF5-6.ru.md @@ -0,0 +1,41 @@ +# Практика и проекты + +## Возможные варианты: +- Контрибьюшен в любой open-source проект или библиотеку +- Контрибьюшен в [Metarhia](https://github.com/metarhia) +- Проект студенческой группы или общественный проект в открытом коде +- Собственный open-source проект + +## Разрешается (при разумном обосновании выбора): +- Любой язык +- Любой технологический стек +- Можно использовать любые зависимости + +## Если вы делаете свой репозиторий, то он обязательно должен включать: +- Юниттесты, системные и интеграционные (по желанию нагрузочные тесты) +- CI (например: TravisCI, Github Actions) +- Лицензию и список контрибьютеров +- Хорошее ведение репозитория: issues, pull requests, (желательно milestones) +- Семантическое версионирование: https://semver.org/ + - Ведем CHANGELOG.md + - И выпускаем версии в виде тегов +- Настроенный линтер (для js еще и prettier) +- Дотфайлы для системы контроля версий и менеджера пакетов + +## Проекты, в которые можно конрибьютить: +- Рекурсивное наблюдение за файловой системой: https://github.com/metarhia/metawatch +- Утилиты для интерфейса командной строки: https://github.com/metarhia/metacommand +- Хелпер (обертка) для node.js модуля vm: https://github.com/metarhia/metavm +- Query builder и миграции для Postgres: https://github.com/metarhia/metasql +- Сетевой протокол: https://github.com/metarhia/metacom +- Библиотека для логирования: https://github.com/metarhia/metalog +- Шаблонизатор: https://github.com/metarhia/tickplate +- Web-locks API (блокировки): https://github.com/metarhia/web-locks +- Библиотека для асинхронного программирования: https://github.com/metarhia/metasync +- Простые асинхронные абстракции: https://github.com/metarhia/do +- Буферизация для Writable Stream: https://github.com/metarhia/metastreams +- Библиотека для цветов в консоли: https://github.com/metarhia/concolor +- Загрузчик конфигурации: https://github.com/metarhia/config +- Фреймворк тестирования: https://github.com/metarhia/metatests +- Общие утилиты: https://github.com/metarhia/common +- Общие утилиты (облегченная): https://github.com/metarhia/metautil From 966b50ae966039bd676d8f1b8829dd4edb1f36f9 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Mon, 5 Apr 2021 18:59:41 +0300 Subject: [PATCH 039/308] Practice registration form --- Practice/SEF3-4.ru.md | 7 ++++++- Practice/SEF5-6.ru.md | 5 +++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/Practice/SEF3-4.ru.md b/Practice/SEF3-4.ru.md index 4a77de5..b35b01d 100644 --- a/Practice/SEF3-4.ru.md +++ b/Practice/SEF3-4.ru.md @@ -12,7 +12,7 @@ - Можно использовать любые зависимости ## Если вы делаете свой репозиторий, то он обязательно должен включать: -- Юниттесты, системные и интеграционные (по желанию нагрузочные тесты) +- Юниттесты (по желанию системные, интеграционные и нагрузочные тесты) - CI (например: TravisCI, Github Actions) - Лицензию и список контрибьютеров - Хорошее ведение репозитория: issues, pull requests, (желательно milestones) @@ -39,3 +39,8 @@ - Фреймворк тестирования: https://github.com/metarhia/metatests - Общие утилиты: https://github.com/metarhia/common - Общие утилиты (облегченная): https://github.com/metarhia/metautil + +## Регистрация тем + +- Нужно заполнить форму: https://forms.gle/u7v7nUFxamcgJ2aQ6 +- И дать мне права на редозиторий, мой аккаунт: https://github.com/tshemsedinov diff --git a/Practice/SEF5-6.ru.md b/Practice/SEF5-6.ru.md index 4a77de5..e9f4a6f 100644 --- a/Practice/SEF5-6.ru.md +++ b/Practice/SEF5-6.ru.md @@ -39,3 +39,8 @@ - Фреймворк тестирования: https://github.com/metarhia/metatests - Общие утилиты: https://github.com/metarhia/common - Общие утилиты (облегченная): https://github.com/metarhia/metautil + +## Регистрация тем + +- Нужно заполнить форму: https://forms.gle/u7v7nUFxamcgJ2aQ6 +- И дать мне права на редозиторий, мой аккаунт: https://github.com/tshemsedinov From ac8b5f9d04f02e00847df763e559d133d6adc14e Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Mon, 5 Apr 2021 19:33:11 +0300 Subject: [PATCH 040/308] Extend SEF3 and SEF4 hints and requirements --- Practice/SEF3-4.ru.md | 29 +++++++++++++++++++++++++---- 1 file changed, 25 insertions(+), 4 deletions(-) diff --git a/Practice/SEF3-4.ru.md b/Practice/SEF3-4.ru.md index b35b01d..95d1683 100644 --- a/Practice/SEF3-4.ru.md +++ b/Practice/SEF3-4.ru.md @@ -1,17 +1,37 @@ # Практика и проекты ## Возможные варианты: + - Контрибьюшен в любой open-source проект или библиотеку - Контрибьюшен в [Metarhia](https://github.com/metarhia) - Проект студенческой группы или общественный проект в открытом коде - Собственный open-source проект -## Разрешается (при разумном обосновании выбора): -- Любой язык -- Любой технологический стек -- Можно использовать любые зависимости +## Что разрешено и что запрещено: + +- Любой язык. +- Любой технологический стек. +- Можно использовать любые зависимости. +- Репозиторий обязательно размещается на https://github.com в открытом доступе. +- Желательно делать групповые работы, для этого студенты объединяются в группы +по 2-5 человек (могут быть внешние участники с других курсов, факультетов и +вообще не из КПИ); группа может писать один общий проект или сделать перекрестный +ревью кода индивидуальных проектов каждого участника группы. Пересмотрите: + - [Что такое ревью кода](https://youtu.be/EKL6NiIQ6ZU) + - [Семинар: по ревью кода](https://youtu.be/AgH4OAKbmkM) +- Проект не может быть одномоментно залит на гитхаб за день до сдачи, его нужно +вести в гитхабе на протяжении нескольких месяцев, чтобы была видна работа, +история коммитов и PR (pull request). Хорошо, если можно будет проследить +улучшение кодовой базы, рефакторинг и оптимизацию. Пересмотрите: + - Общие [антипаттерны для всех парадигм](https://youtu.be/NMUsUiFokr4), и + - Антипаттерны [процедурного программирования](https://youtu.be/cTv7V22mkwE); + - Лекция про [рефакторинг](https://youtu.be/z73wmpdweQ4). +- Хорошее ведение репозитория: issues, pull requests, milestones (см. кнопки на +закладках issues и pr в github), discussions (не обязательно), kanban (средство +планирования проекта, ищите на закладке project в github), wiki (не обязательно). ## Если вы делаете свой репозиторий, то он обязательно должен включать: + - Юниттесты (по желанию системные, интеграционные и нагрузочные тесты) - CI (например: TravisCI, Github Actions) - Лицензию и список контрибьютеров @@ -23,6 +43,7 @@ - Дотфайлы для системы контроля версий и менеджера пакетов ## Проекты, в которые можно конрибьютить: + - Рекурсивное наблюдение за файловой системой: https://github.com/metarhia/metawatch - Утилиты для интерфейса командной строки: https://github.com/metarhia/metacommand - Хелпер (обертка) для node.js модуля vm: https://github.com/metarhia/metavm From 3f177a4f4ca8adcc4dc701e2049756c550fc359f Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Mon, 5 Apr 2021 19:58:24 +0300 Subject: [PATCH 041/308] Extend SEF5 and SEF6 hints and requirements --- Practice/SEF5-6.ru.md | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/Practice/SEF5-6.ru.md b/Practice/SEF5-6.ru.md index e9f4a6f..04b8c7a 100644 --- a/Practice/SEF5-6.ru.md +++ b/Practice/SEF5-6.ru.md @@ -1,17 +1,25 @@ # Практика и проекты ## Возможные варианты: + - Контрибьюшен в любой open-source проект или библиотеку - Контрибьюшен в [Metarhia](https://github.com/metarhia) - Проект студенческой группы или общественный проект в открытом коде - Собственный open-source проект -## Разрешается (при разумном обосновании выбора): -- Любой язык -- Любой технологический стек -- Можно использовать любые зависимости +## Что разрешено и что запрещено: + +- Любой язык. +- Любой технологический стек. +- Можно использовать любые зависимости. +- Репозиторий обязательно размещается на https://github.com в открытом доступе. +- Проект не может быть одномоментно залит на гитхаб за день до сдачи, его нужно +вести в гитхабе на протяжении нескольких месяцев, чтобы была видна работа, +история коммитов и PR (pull request). Хорошо, если можно будет проследить +улучшение кодовой базы, рефакторинг и оптимизацию. ## Если вы делаете свой репозиторий, то он обязательно должен включать: + - Юниттесты, системные и интеграционные (по желанию нагрузочные тесты) - CI (например: TravisCI, Github Actions) - Лицензию и список контрибьютеров @@ -23,6 +31,7 @@ - Дотфайлы для системы контроля версий и менеджера пакетов ## Проекты, в которые можно конрибьютить: + - Рекурсивное наблюдение за файловой системой: https://github.com/metarhia/metawatch - Утилиты для интерфейса командной строки: https://github.com/metarhia/metacommand - Хелпер (обертка) для node.js модуля vm: https://github.com/metarhia/metavm From 6a333d4954dc4669863a19ba5e88ec668d4fd8d1 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Wed, 7 Apr 2021 22:10:54 +0300 Subject: [PATCH 042/308] Add all-stars event --- Courses/Talks.md | 1 + 1 file changed, 1 insertion(+) diff --git a/Courses/Talks.md b/Courses/Talks.md index f7f1d0b..27ca4ec 100644 --- a/Courses/Talks.md +++ b/Courses/Talks.md @@ -6,6 +6,7 @@ - [Технологический стек Node.js для корпоративных приложений](https://fwdays.com/en/event/node-js-stack-for-enterprise) - [Node.js от middleware к сервисам](https://fwdays.com/en/event/node-js-stack-for-enterprise) - [Адаптация GRASP для JavaScript и Node.js](https://fwdays.com/en/event/node-js-stack-for-enterprise) +- [The Main Issues of IT Industry](https://www.facebook.com/events/549611189353814/) ## 2021 From cc544b9ba29a621df2ba32719e219a28e9d72e1c Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Fri, 9 Apr 2021 23:37:39 +0300 Subject: [PATCH 043/308] Add fwdays video --- Courses/Talks.md | 1 + 1 file changed, 1 insertion(+) diff --git a/Courses/Talks.md b/Courses/Talks.md index 27ca4ec..927dc1a 100644 --- a/Courses/Talks.md +++ b/Courses/Talks.md @@ -13,6 +13,7 @@ - [Байки про JavaScript и Node.js с Тимуром Шемсединовым](https://youtu.be/hoKKYKMadQs) - [Стратегия входа Node.js в корпоративный сектор](https://youtu.be/FLcBrP1KFYk) - [Как Node.js разработчику подготовиться к проектам корпоративного уровня](https://youtu.be/DghzF_OmodY) +- [Node.js от middleware к сервисам](https://youtu.be/L7Yge5Ph0z4) ## 2020 From 89cce20cfcf96067f312c20eea914a5757408000 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Thu, 15 Apr 2021 23:39:28 +0300 Subject: [PATCH 044/308] Add two webinar videos --- Courses/NodeJS.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/Courses/NodeJS.md b/Courses/NodeJS.md index 3cde645..17ba17a 100644 --- a/Courses/NodeJS.md +++ b/Courses/NodeJS.md @@ -20,6 +20,11 @@ - [Часть 3: Структура и архитектура проекта, Node.js Starter Kit](https://youtu.be/ZXB5OTRld1w) - Слайды: https://www.slideshare.net/tshemsedinov/nodejs-in-2020-part-3 +## Вебинары Node.js for Enterprise + +- [Часть 1: DDD, слои транспорт-агностик подход](https://youtu.be/L7Yge5Ph0z4) +- [Часть 2: Изоляция кда и внедрение зависимостей](https://youtu.be/GRg4BmV1uYI) + ## Введение и основы - [Node.js Введение в технологию](https://youtu.be/WBcHgaoHh1k) From f25f24591b781cb5ded4c59e5b3edca19a9b40f3 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Thu, 15 Apr 2021 23:42:15 +0300 Subject: [PATCH 045/308] Add two fwdays webinars/talks --- Courses/Talks.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/Courses/Talks.md b/Courses/Talks.md index 27ca4ec..e70b2e7 100644 --- a/Courses/Talks.md +++ b/Courses/Talks.md @@ -3,8 +3,6 @@ ## Future talks - [Технологический стек Metarhia для Node.js](https://fwdays.com/en/event/javascript-fwdays-2021/review/metarhia-technology-stack-for-nodejs) -- [Технологический стек Node.js для корпоративных приложений](https://fwdays.com/en/event/node-js-stack-for-enterprise) -- [Node.js от middleware к сервисам](https://fwdays.com/en/event/node-js-stack-for-enterprise) - [Адаптация GRASP для JavaScript и Node.js](https://fwdays.com/en/event/node-js-stack-for-enterprise) - [The Main Issues of IT Industry](https://www.facebook.com/events/549611189353814/) @@ -13,6 +11,9 @@ - [Байки про JavaScript и Node.js с Тимуром Шемсединовым](https://youtu.be/hoKKYKMadQs) - [Стратегия входа Node.js в корпоративный сектор](https://youtu.be/FLcBrP1KFYk) - [Как Node.js разработчику подготовиться к проектам корпоративного уровня](https://youtu.be/DghzF_OmodY) +- [Node.js for Enterprise Node.js от middleware к сервисам](https://fwdays.com/en/event/node-js-stack-for-enterprise) + - [Часть 1: DDD, слои транспорт-агностик подход](https://youtu.be/L7Yge5Ph0z4) + - [Часть 2: Изоляция кда и внедрение зависимостей](https://youtu.be/GRg4BmV1uYI) ## 2020 From 7bba330ee6f7610dd2e9d7e97ee827a5aaa50d9c Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Fri, 16 Apr 2021 00:54:23 +0300 Subject: [PATCH 046/308] Add All-stars it contest video --- Courses/Talks.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Courses/Talks.md b/Courses/Talks.md index e70b2e7..103d11d 100644 --- a/Courses/Talks.md +++ b/Courses/Talks.md @@ -4,7 +4,6 @@ - [Технологический стек Metarhia для Node.js](https://fwdays.com/en/event/javascript-fwdays-2021/review/metarhia-technology-stack-for-nodejs) - [Адаптация GRASP для JavaScript и Node.js](https://fwdays.com/en/event/node-js-stack-for-enterprise) -- [The Main Issues of IT Industry](https://www.facebook.com/events/549611189353814/) ## 2021 @@ -14,6 +13,8 @@ - [Node.js for Enterprise Node.js от middleware к сервисам](https://fwdays.com/en/event/node-js-stack-for-enterprise) - [Часть 1: DDD, слои транспорт-агностик подход](https://youtu.be/L7Yge5Ph0z4) - [Часть 2: Изоляция кда и внедрение зависимостей](https://youtu.be/GRg4BmV1uYI) +- [Главная проблема ИТ индустрии](https://youtu.be/XOzjDBeaSwc) + - [Голосуйте за стипикера на странице конкурса](https://techspeaker.allstars-it.com/#speakers) ## 2020 From c2d7b580bc95bcb5046dcd68f98c78b1043bf345 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Fri, 23 Apr 2021 22:07:26 +0300 Subject: [PATCH 047/308] Add 3rd fwdays webinar video --- Courses/NodeJS.md | 3 ++- Courses/Talks.md | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/Courses/NodeJS.md b/Courses/NodeJS.md index 17ba17a..e0676bb 100644 --- a/Courses/NodeJS.md +++ b/Courses/NodeJS.md @@ -23,7 +23,8 @@ ## Вебинары Node.js for Enterprise - [Часть 1: DDD, слои транспорт-агностик подход](https://youtu.be/L7Yge5Ph0z4) -- [Часть 2: Изоляция кда и внедрение зависимостей](https://youtu.be/GRg4BmV1uYI) +- [Часть 2: Изоляция кода и внедрение зависимостей](https://youtu.be/GRg4BmV1uYI) +- [Часть 3: Применение GRASP, SOLID, DDD, LoD, GoF](https://youtu.be/EiSbiQWt5tM) ## Введение и основы diff --git a/Courses/Talks.md b/Courses/Talks.md index 103d11d..1a04d02 100644 --- a/Courses/Talks.md +++ b/Courses/Talks.md @@ -12,7 +12,8 @@ - [Как Node.js разработчику подготовиться к проектам корпоративного уровня](https://youtu.be/DghzF_OmodY) - [Node.js for Enterprise Node.js от middleware к сервисам](https://fwdays.com/en/event/node-js-stack-for-enterprise) - [Часть 1: DDD, слои транспорт-агностик подход](https://youtu.be/L7Yge5Ph0z4) - - [Часть 2: Изоляция кда и внедрение зависимостей](https://youtu.be/GRg4BmV1uYI) + - [Часть 2: Изоляция кода и внедрение зависимостей](https://youtu.be/GRg4BmV1uYI) + - [Часть 3: Применение GRASP, SOLID, DDD, LoD, GoF](https://youtu.be/EiSbiQWt5tM) - [Главная проблема ИТ индустрии](https://youtu.be/XOzjDBeaSwc) - [Голосуйте за стипикера на странице конкурса](https://techspeaker.allstars-it.com/#speakers) From 455ebd443249b0227932e78471f0ae700375d512 Mon Sep 17 00:00:00 2001 From: Nikolai Chub Date: Thu, 6 May 2021 19:33:30 +0300 Subject: [PATCH 048/308] Added missed lecture about Promises --- Courses/Fundamentals.md | 1 + 1 file changed, 1 insertion(+) diff --git a/Courses/Fundamentals.md b/Courses/Fundamentals.md index 97c31c5..b4495c8 100644 --- a/Courses/Fundamentals.md +++ b/Courses/Fundamentals.md @@ -149,6 +149,7 @@ - [Измерение производительности кода и оптимизация](https://youtu.be/sanq2X7Re8o) - Примеры кода: https://github.com/HowProgrammingWorks/Benchmark - [Асинхронное программирование на callback`ах](https://youtu.be/z8Hg6zgi3yQ) +- [Асинхронное программирование на promise`ах](https://youtu.be/RMl4r6s1Y8M) - Примеры кода: https://github.com/HowProgrammingWorks/AsynchronousProgramming - [Асинхронные функции, async/await, thenable, обработка ошибок](https://youtu.be/Jdf_tZuJbHI) - Примеры кода: https://github.com/HowProgrammingWorks/AsyncAwait From 3fc782fc76883e1c1bbaeb4437a00b5c0bee4002 Mon Sep 17 00:00:00 2001 From: Artem Bondarchuk <71403370+artemkaxdxd@users.noreply.github.com> Date: Sat, 8 May 2021 14:54:03 +0300 Subject: [PATCH 049/308] Added missing lecture about working with files --- Courses/Fundamentals.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/Courses/Fundamentals.md b/Courses/Fundamentals.md index b4495c8..c9ab6b2 100644 --- a/Courses/Fundamentals.md +++ b/Courses/Fundamentals.md @@ -144,7 +144,10 @@ - Примеры кода: https://github.com/HowProgrammingWorks/FunctionalProgramming - [Реактивное программирование](https://youtu.be/7MH8-qQc-48) - Примеры кода: https://github.com/HowProgrammingWorks/ReactiveProgramming -- Работа с файлами +- [Работа с файлами, буферами и файловыми потоками в Node.js](https://youtu.be/eQGBS15vUac) + - Файлы: https://github.com/HowProgrammingWorks/Files + - Потоки: https://github.com/HowProgrammingWorks/Streams + - Буферы: https://github.com/HowProgrammingWorks/Buffers - Оценка сложности алгоритмов - [Измерение производительности кода и оптимизация](https://youtu.be/sanq2X7Re8o) - Примеры кода: https://github.com/HowProgrammingWorks/Benchmark From 6c05c8f9be614722392d6665335917db68cd1520 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Sat, 29 May 2021 10:44:00 +0300 Subject: [PATCH 050/308] Update Metarhia.md --- Courses/Metarhia.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Courses/Metarhia.md b/Courses/Metarhia.md index cb1bcd7..663be26 100644 --- a/Courses/Metarhia.md +++ b/Courses/Metarhia.md @@ -22,7 +22,7 @@ - [Сессии и контексты на Node.js и технологическом стеке Metarhia](https://youtu.be/5u8imY9SJiQ) - Работа с базами данных Postgres и Redis - Обработка и логирование ошибок -- Аутентификация OAuth 2.0 на примере Google +- Аутентификация OAuth 2.0 - Передача файлов по metacom: upload, download - Валидация и проверка типов: API контракты - Валидация в браузере: формы From 08fbfb3c7329476245654a361679f1dd68500b7d Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Wed, 2 Jun 2021 14:17:24 +0300 Subject: [PATCH 051/308] Update SEF2.ru.md --- Practice/SEF2.ru.md | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/Practice/SEF2.ru.md b/Practice/SEF2.ru.md index 961e881..070bf47 100644 --- a/Practice/SEF2.ru.md +++ b/Practice/SEF2.ru.md @@ -32,7 +32,12 @@ - Лицензию и список контрибьютеров - Файл `README.md` с кратким (1-2 страницы) описанием проекта. Никакие папки с бумагами не нужны, все только в электронном виде без бюрократии. - - Настроенный линтер (а если кода на JavaScript, еще и prettier). + - Настроенный линтер (а если кода на JavaScript, еще и prettier). Пример проекта + с конфигурацией тут: https://github.com/HowProgrammingWorks/NodejsStarterKit + - Файл `package.json` в котором в разделе `scripts` есть команда `lint` + - Файлы `.eslintrc.json`, `.eslintignore` и `.prettierrc` + - Перед каждым коммитом запускайте из командной строки: `npm run lint` + (часть проблем автоматически исправляется, остальные - правим руками). - Дотфайлы для системы контроля версий и менеджера пакетов. ## Примеры тем: From 00f52c68bc59b38a75377f7790509aab94c332bb Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Tue, 10 Aug 2021 08:53:21 +0300 Subject: [PATCH 052/308] Add talks --- Courses/Talks.md | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/Courses/Talks.md b/Courses/Talks.md index 1a04d02..1e47f79 100644 --- a/Courses/Talks.md +++ b/Courses/Talks.md @@ -2,9 +2,6 @@ ## Future talks -- [Технологический стек Metarhia для Node.js](https://fwdays.com/en/event/javascript-fwdays-2021/review/metarhia-technology-stack-for-nodejs) -- [Адаптация GRASP для JavaScript и Node.js](https://fwdays.com/en/event/node-js-stack-for-enterprise) - ## 2021 - [Байки про JavaScript и Node.js с Тимуром Шемсединовым](https://youtu.be/hoKKYKMadQs) @@ -15,7 +12,11 @@ - [Часть 2: Изоляция кода и внедрение зависимостей](https://youtu.be/GRg4BmV1uYI) - [Часть 3: Применение GRASP, SOLID, DDD, LoD, GoF](https://youtu.be/EiSbiQWt5tM) - [Главная проблема ИТ индустрии](https://youtu.be/XOzjDBeaSwc) - - [Голосуйте за стипикера на странице конкурса](https://techspeaker.allstars-it.com/#speakers) + - [Голосуйте за спикера на странице конкурса](https://techspeaker.allstars-it.com/#speakers) +- [Технологический стек Metarhia для Node.js](https://youtu.be/PHyl4b8Fj5A) + - Слайды: https://www.slideshare.net/tshemsedinov/fwdays-2021-metarhia-technology-stack-for-nodejs) + - Страница: https://fwdays.com/en/event/javascript-fwdays-2021/review/metarhia-technology-stack-for-nodejs +- [Node.js - плохие подходы и хорошие стороны - Postindustria Podcast](https://youtu.be/oEyS_TNiw2g) ## 2020 From c8f464e3dc13d647f37ba167c61cac71d80db8d0 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Mon, 16 Aug 2021 23:52:51 +0300 Subject: [PATCH 053/308] Add future talks --- Courses/Talks.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/Courses/Talks.md b/Courses/Talks.md index 1e47f79..4882412 100644 --- a/Courses/Talks.md +++ b/Courses/Talks.md @@ -2,6 +2,11 @@ ## Future talks +- Parrots who code: we will teach everyone (JavaScript Fwdays with Andrey + Listochkin and Timur Shemsedinov) 17 Aug 2021, 19:00 +- NodeJS Online TechCorner at Odessa.js (with Eldar Djafarov, Denis Otrishko, + and others) 19 Aug 2021, 17:00 + ## 2021 - [Байки про JavaScript и Node.js с Тимуром Шемсединовым](https://youtu.be/hoKKYKMadQs) From 7c3d8e423cb0a0a8641b2ca2a802c16366cd4044 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Thu, 19 Aug 2021 22:19:16 +0300 Subject: [PATCH 054/308] Add links to youtube --- Courses/Talks.md | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/Courses/Talks.md b/Courses/Talks.md index 4882412..2801209 100644 --- a/Courses/Talks.md +++ b/Courses/Talks.md @@ -2,10 +2,11 @@ ## Future talks -- Parrots who code: we will teach everyone (JavaScript Fwdays with Andrey - Listochkin and Timur Shemsedinov) 17 Aug 2021, 19:00 -- NodeJS Online TechCorner at Odessa.js (with Eldar Djafarov, Denis Otrishko, - and others) 19 Aug 2021, 17:00 +- [Parrots who code: we will teach everyone](https://youtu.be/WG9Qv9DR-ps) + JavaScript Fwdays with Andrey Listochkin and Timur Shemsedinov) (17 Aug 2021) +- [NodeJS Online TechCorner at Odessa.js](https://youtu.be/yruIjTWYMro) with + Timur Shemsedinov, Eldar Djafarov, Denis Otrishko, Nick Romanenko, Nick + Lototskiy, Olexiy Novohatskiy (19 Aug 2021) ## 2021 From ae59e1d3b3bf063dba47c338e7229b98910bf4ed Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Tue, 24 Aug 2021 22:34:58 +0300 Subject: [PATCH 055/308] Move to 2021 --- Courses/Talks.md | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/Courses/Talks.md b/Courses/Talks.md index 2801209..55564c8 100644 --- a/Courses/Talks.md +++ b/Courses/Talks.md @@ -2,12 +2,6 @@ ## Future talks -- [Parrots who code: we will teach everyone](https://youtu.be/WG9Qv9DR-ps) - JavaScript Fwdays with Andrey Listochkin and Timur Shemsedinov) (17 Aug 2021) -- [NodeJS Online TechCorner at Odessa.js](https://youtu.be/yruIjTWYMro) with - Timur Shemsedinov, Eldar Djafarov, Denis Otrishko, Nick Romanenko, Nick - Lototskiy, Olexiy Novohatskiy (19 Aug 2021) - ## 2021 - [Байки про JavaScript и Node.js с Тимуром Шемсединовым](https://youtu.be/hoKKYKMadQs) @@ -23,6 +17,11 @@ - Слайды: https://www.slideshare.net/tshemsedinov/fwdays-2021-metarhia-technology-stack-for-nodejs) - Страница: https://fwdays.com/en/event/javascript-fwdays-2021/review/metarhia-technology-stack-for-nodejs - [Node.js - плохие подходы и хорошие стороны - Postindustria Podcast](https://youtu.be/oEyS_TNiw2g) +- [Parrots who code: we will teach everyone](https://youtu.be/WG9Qv9DR-ps) + JavaScript Fwdays with Andrey Listochkin and Timur Shemsedinov) (17 Aug 2021) +- [NodeJS Online TechCorner at Odessa.js](https://youtu.be/yruIjTWYMro) with + Timur Shemsedinov, Eldar Djafarov, Denis Otrishko, Nick Romanenko, Nick + Lototskiy, Olexiy Novohatskiy (19 Aug 2021) ## 2020 From ca90424737d7955a4640f56016f4be48cc9c3ba3 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Tue, 24 Aug 2021 22:37:31 +0300 Subject: [PATCH 056/308] Add P1K meetup --- Courses/Talks.md | 1 + 1 file changed, 1 insertion(+) diff --git a/Courses/Talks.md b/Courses/Talks.md index 55564c8..5eb99f6 100644 --- a/Courses/Talks.md +++ b/Courses/Talks.md @@ -22,6 +22,7 @@ - [NodeJS Online TechCorner at Odessa.js](https://youtu.be/yruIjTWYMro) with Timur Shemsedinov, Eldar Djafarov, Denis Otrishko, Nick Romanenko, Nick Lototskiy, Olexiy Novohatskiy (19 Aug 2021) +- [Как GRASP и SOLID защитят ваш Node.js код от мидлварей и протекания абстракций](https://youtu.be/p063fy3fHZM) ## 2020 From efdf81691ca777c0554fb41fb4a5d01740f9940a Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Tue, 24 Aug 2021 22:41:01 +0300 Subject: [PATCH 057/308] Add HolyJS talk --- Courses/Talks.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Courses/Talks.md b/Courses/Talks.md index 5eb99f6..529e9b7 100644 --- a/Courses/Talks.md +++ b/Courses/Talks.md @@ -2,6 +2,8 @@ ## Future talks +- Node.js: Less complexity, more reliability at [HolyJS](https://holyjs-moscow.ru/) + ## 2021 - [Байки про JavaScript и Node.js с Тимуром Шемсединовым](https://youtu.be/hoKKYKMadQs) From 87c0da4086eed6d1f1d7b5e37167bc14e64fae4b Mon Sep 17 00:00:00 2001 From: True-Evzheniy Date: Fri, 27 Aug 2021 00:04:45 +0300 Subject: [PATCH 058/308] Match title to link --- Courses/Asynchronous.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Courses/Asynchronous.md b/Courses/Asynchronous.md index 15375e9..28d70ba 100644 --- a/Courses/Asynchronous.md +++ b/Courses/Asynchronous.md @@ -34,8 +34,8 @@ - Генераторы: https://github.com/HowProgrammingWorks/Generator - Асинхронные генераторы: https://github.com/HowProgrammingWorks/AsyncGenerator - [Итераторы и асинхронные итераторы](https://youtu.be/rBGFlWpVpGs) - - Итераторы: https://github.com/HowProgrammingWorks/AsyncIterator - - Асинхронные итераторы: https://github.com/HowProgrammingWorks/Iterator + - Итераторы: https://github.com/HowProgrammingWorks/Iterator + - Асинхронные итераторы: https://github.com/HowProgrammingWorks/AsyncIterator - [Отмена асинхронных операций](https://youtu.be/T8fXlnqI4Ws) - Примеры кода: https://github.com/HowProgrammingWorks/Cancelable - [Асинхронная композиция функций](https://youtu.be/3ZCrMlMpOrM) From d624f67e4395f9bd4ecc63d17b15faf7bd32b400 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Sun, 29 Aug 2021 16:38:31 -0400 Subject: [PATCH 059/308] Add lat-code talk --- Courses/Talks.md | 1 + 1 file changed, 1 insertion(+) diff --git a/Courses/Talks.md b/Courses/Talks.md index 529e9b7..9598657 100644 --- a/Courses/Talks.md +++ b/Courses/Talks.md @@ -3,6 +3,7 @@ ## Future talks - Node.js: Less complexity, more reliability at [HolyJS](https://holyjs-moscow.ru/) +- Rethinking Low-code (скорее всего на Fwdays Architecture '21) ## 2021 From babffc1b754ef4bf40300505f67588ba9c3b36fb Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Tue, 7 Sep 2021 01:45:18 +0300 Subject: [PATCH 060/308] Approximate dates for 1st year 2021-2022 --- Courses/Fundamentals-2021-2022.md | 235 ++++++++++++++++++++++++++++++ 1 file changed, 235 insertions(+) create mode 100644 Courses/Fundamentals-2021-2022.md diff --git a/Courses/Fundamentals-2021-2022.md b/Courses/Fundamentals-2021-2022.md new file mode 100644 index 0000000..40db610 --- /dev/null +++ b/Courses/Fundamentals-2021-2022.md @@ -0,0 +1,235 @@ +# Основы программирования 2021-2022 + +Модули [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) + +## Ссылки + +- Автор: https://github.com/tshemsedinov +- Канал в телеграме: https://t.me/HowProgrammingWorks +- Группа (чат): https://t.me/Programming_IP9X +- Задачи по курсу: https://github.com/HowProgrammingWorks/Index/blob/master/Practice/SEF1.ru.md +- Словарь терминов: https://github.com/HowProgrammingWorks/Dictionary + +## Модуль SEF1 + +Объем материала: 36 лекций (из них 4 вводные лекции, 8 лекций по языку JS, +18 лекций по фундаментальным понятиям теории программирования, 6 лекций по +инструментам и процессу разработки), 8 семинаров, 9 лабораторных работ, +47 репозиториев с примерами кода. + +### 1 неделя: 6 сентября -12 сентября + +- [Введение в программирование](https://youtu.be/5Gt61EX6HZ4) + - Абстракция, модель, алгоритм, программа, синтаксис, повторное использование + - Значение, идентификатор, переменная и константа, литерал, присвоение + - Типы данных, скалярные, ссылочные и структурные типы + - Оператор и выражение, блок кода, функция, цикл, условие + - Слайды: https://www.slideshare.net/tshemsedinov/1-168855278 +- [Введение в программирование, продолжение](https://youtu.be/PzlLXQ3RaDs) + - Процедуры и функции, стек и куча, коллекции, модули, компоненты, библиотеки + - Языки и парадигмы программирования, технологические стеки + - Среда разработки и отладка кода +- Семинар: [Обсуждение плана и материалов курса](https://youtu.be/bQMTbRWrteU) +- [Настройка среды: Node.js, npm, git, eslint](https://youtu.be/hSyA7tcNaCE) + - Смотреть выборочно, что не понятно - пропускайте + - Задания: [Exercises.ru.md](https://github.com/HowProgrammingWorks/Introduction/blob/master/Exercises.ru.md) + +### 2 неделя: 13 сентября - 19 сентября + +- [Базовый синтаксис JavaScript](https://youtu.be/xJn3k1f4BiM) + - Абстракции и их переиспользование: https://github.com/HowProgrammingWorks/Reusable + - Основные конструкции: https://github.com/HowProgrammingWorks/Cheatsheet + - Типы данных: https://github.com/HowProgrammingWorks/DataTypes +- [Базовый синтаксис JavaScript, продолжение](https://youtu.be/qa-XleqA0JU) + - Типы данных: https://github.com/HowProgrammingWorks/DataTypes + - Условия: https://github.com/HowProgrammingWorks/Conditional +- Семинар: [Базовый синтаксис языка JavaScript](https://youtu.be/PGqjTXQe_qw) +- Семинар: [Автоматическая проверка лабораторных работ](https://youtu.be/M4KpG0LEAyA) + +### 3 неделя: 20 сентября - 26 сентября + +- [Функции, лямбды, контексты, замыкания в JavaScript](https://youtu.be/pn5myCmpV2U) + - Функции: https://github.com/HowProgrammingWorks/Function + - Замыкания: https://github.com/HowProgrammingWorks/Closure +- [Массивы, объекты, классы, прототипы в JavaScript](https://youtu.be/VBMGnAPfmsY) + - Структуры данных: https://github.com/HowProgrammingWorks/DataStructures + - Итерирование: https://github.com/HowProgrammingWorks/Iteration + - Прототипы: https://github.com/HowProgrammingWorks/Prototype +- [Языки программирования](https://youtu.be/enHA1CRkJe0) +- Семинар: [JavaScript, ответы на вопросы](https://youtu.be/wqkQ6eslyzY) + +### 4 неделя: 27 сентября - 3 октября + +- [Частичное применение и каррирование в JavaScript](https://youtu.be/ND8KQ5xjk7o) + - Примеры кода: https://github.com/HowProgrammingWorks/PartialApplication +- [Функции высшего порядка, колбеки, события на JavaScript](https://youtu.be/1vqATwbGHnc) + - Функции высшего порядка: https://github.com/HowProgrammingWorks/HigherOrderFunction + - Функции обратного вызова: https://github.com/HowProgrammingWorks/Callbacks + +### 5 неделя: 4 октября - 10 октября + +- [История развития языков программирования](https://youtu.be/qqz0VSaNxuw) + - Слайды: https://www.slideshare.net/tshemsedinov/programming-languages-comparison-history-future +- [Парадигмы программирования](https://youtu.be/Yk1sxLVHfjs) +- [Работа со строками, шаблонами и юникодом в JavaScript](https://youtu.be/GcopcHQkA8M) + - Примеры кода: https://github.com/HowProgrammingWorks/String + +### 6 неделя: 11 октября - 17 октября + +- [Антипаттерны общие для всех парадигм](https://youtu.be/NMUsUiFokr4) + - Примеры кода: https://github.com/HowProgrammingWorks/Antipatterns/tree/master/JavaScript/01-Common +- [Консоль и командная строка в JavaScript и Node.js](https://youtu.be/5aSZyKi5BmE) + - Примеры кода: https://github.com/HowProgrammingWorks/CommandLine + +### 7 неделя: 18 октября - 24 октября + +- [Чеининг функций и объектов, обработка ошибок в JavaScript](https://youtu.be/PfuEfIiLX34) + - Чеининг: https://github.com/HowProgrammingWorks/Chaining + - Обработка ошибок: https://github.com/HowProgrammingWorks/Errors +- [Рекурсия: косвенная и хвостовая, стек, выход](https://youtu.be/W2skCjIgVKE) + - Примеры кода: https://github.com/HowProgrammingWorks/Recursion + +### 8 неделя: 25 октября - 31 октября + +- [Итерирование, циклы и итераторы в JavaScript](https://youtu.be/lq3b5_UGJas) + - Примеры кода: https://github.com/HowProgrammingWorks/Iteration +- [Антипаттерны процедурного программирования](https://youtu.be/cTv7V22mkwE) + - Примеры кода: https://github.com/HowProgrammingWorks/Antipatterns/tree/master/JavaScript/02-Procedural + +### 9 неделя: 1 ноября - 7 ноября + +- Семинар: [Ответы на вопросы по курсу "Основы программирования"](https://youtu.be/TY6nDW7aYys) +- [Таймеры, таймауты и EventEmitter](https://youtu.be/LK2jveAnRNg) + - Таймеры: https://github.com/HowProgrammingWorks/Timers + - EventEmitter: https://github.com/HowProgrammingWorks/EventEmitter + - События: https://github.com/metarhia/common/blob/master/lib/events.js +- Семинар: [Выполнение лабораторных работ по курсу](https://youtu.be/ikUOyFPzdJw) + +### 10 неделя: 8 ноября - 14 ноября + +- [Массивы в JavaScript: методы Array](https://youtu.be/D1kfYBkX9FE) + - Примеры кода: https://github.com/HowProgrammingWorks/Arrays +- [Коллекции, множества, хеш таблицы в JavaScript](https://youtu.be/hN0wsq5LNOc) + - Коллекции: https://github.com/HowProgrammingWorks/Collections + - Хеш таблицы: https://github.com/HowProgrammingWorks/Map + - Множества: https://github.com/HowProgrammingWorks/Set + +### 11 неделя: 15 ноября - 21 ноября + +- [Code Review: как это и зачем](https://youtu.be/EKL6NiIQ6ZU) + - Примеры: https://github.com/HowProgrammingWorks/CodeReview + - Семинар: [Code Review, ответы на вопросы](https://youtu.be/AgH4OAKbmkM) +- [Структуры данных: списки, стек, очередь, дэк в JavaScript](https://youtu.be/9KvA4hDDSjk) + - Списки: https://github.com/HowProgrammingWorks/LinkedList + - Очереди: https://github.com/HowProgrammingWorks/Dequeue + +### 12 неделя: 22 ноября - 28 ноября + +- [Сериализация и десериализация в JavaScript и Node.js](https://youtu.be/GtKPniOEzh8) + - Примеры кода: https://github.com/HowProgrammingWorks/Serialization +- [Рефакторинг: причины, цели, техники и процесс](https://youtu.be/z73wmpdweQ4) + - Примеры кода: https://github.com/HowProgrammingWorks/Refactoring + - Пример проекта: https://github.com/tshemsedinov/node-mysql-utilities +- Семинар: [Выбор направления в программировании](https://youtu.be/1gL627DQF4A) + +### 13 неделя: 29 ноября - 5 декабря + +- [Proxy и Symbol в JavaScript](https://youtu.be/UjZjSDyi9AM) + - Прокси: https://github.com/HowProgrammingWorks/Proxy + - Символы: https://github.com/HowProgrammingWorks/Symbol +- [Регулярные выражения и парсинг в JavaScript](https://youtu.be/-ef2E0ozxao) + - Примеры кода: https://github.com/HowProgrammingWorks/RegExp + +### 14 неделя: 6 декабря - 12 декабря + +- [Композиция: pipe, compose](https://youtu.be/xS9FicVrOTI) + - Примеры кода: https://github.com/HowProgrammingWorks/Composition +- [Примеси: mixin, extend, Object.assign, class λ-mixin](https://youtu.be/NZMrJ2adEyY) + - Тема class λ-mixin из этой лекции не обязательна для модуля SEF1 + - Примеры кода: https://github.com/HowProgrammingWorks/Mixin + - Старая версия лекции: https://youtu.be/2h9syXN5wO0 + +### 15 неделя: 13 декабря - 19 декабря + +- [Прототипное программирование и прототипное наследование](https://youtu.be/SzaXTW2qcJE) + - Примеры кода: https://github.com/HowProgrammingWorks/PrototypeChain + - Слайды: https://www.slideshare.net/tshemsedinov/prototype-programming-in-javascript +- [Мемоизация: memoize](https://youtu.be/H6S8QJo2Qxg) + - Примеры кода: https://github.com/HowProgrammingWorks/Memoization + - Старая версия лекции: https://youtu.be/2h9syXN5wO0 + +### 16 неделя: 20 декабря - 26 декабря + +- [Фабрики и пулы объектов в JavaScript, factorify, poolify](https://youtu.be/Ax_mSvadFp8) + - Фабрики: https://github.com/HowProgrammingWorks/Factory + - Пулы объектов: https://github.com/HowProgrammingWorks/Pool +- [Функции-обертки: wrappers](https://youtu.be/En7pWi2fSzs) + - Примеры кода: https://github.com/HowProgrammingWorks/Wrapper + - Старая версия лекции: https://youtu.be/2h9syXN5wO0 + +### 17 неделя: 27 декабря - 31 декабря + +- [Типизированные массивы в JavaScript](https://youtu.be/tTNcqxbxhfY) + - Примеры кода: https://github.com/HowProgrammingWorks/TypedArrays +- [Новое в JavaScript](https://youtu.be/fUjHLj8bq_Y) + - Не все в темы обязательны для модуля SEF1, что поймете, то и хорошо + - Слайды: https://www.slideshare.net/tshemsedinov/javascript-esnext-ecmascript-2020-es11-es10-es9-es8-es7-es6-es2020-es2019 + - Примеры кода: https://github.com/HowProgrammingWorks/ESNext + +## Модуль SEF2 + +- [Объектно-ориентированное программирование](https://youtu.be/r4ReQlVtfgQ) +- [Структуры (struct) или записи (record)](https://youtu.be/Wb7o_kK4aH4) +- [Карта специальности инженер-программист](https://youtu.be/SE5aXH-yf0I) +- [Подход к изучению программирования](https://youtu.be/zMU4ir10DMg) +- Списки: односвязные, двусвязные, циклические, развернутые +- [Графы и запросы к графовым структурам данных](https://youtu.be/a0W0T8Yqw3s) + - Примеры кода: https://github.com/HowProgrammingWorks/Graph +- [Проекции и отображения наборов данных в JavaScript](https://youtu.be/lwJCq9inky8) + - Примеры кода: https://github.com/HowProgrammingWorks/Projection +- [Мономорфный и полиморфный код, инлайн-кэш, скрытые классы](https://youtu.be/9JUY3prnCQ4) + - Примеры кода: https://github.com/HowProgrammingWorks/Monomorphism +- [Функциональное программирование](https://youtu.be/0JxSs_GcvbQ) + - Смотрите обзорно, это не обязательная лекция, попробуйте уловить суть парадигмы + - Примеры кода: https://github.com/HowProgrammingWorks/FunctionalProgramming +- [Реактивное программирование](https://youtu.be/7MH8-qQc-48) + - Примеры кода: https://github.com/HowProgrammingWorks/ReactiveProgramming +- [Работа с файлами, буферами и файловыми потоками в Node.js](https://youtu.be/eQGBS15vUac) + - Файлы: https://github.com/HowProgrammingWorks/Files + - Потоки: https://github.com/HowProgrammingWorks/Streams + - Буферы: https://github.com/HowProgrammingWorks/Buffers +- Оценка сложности алгоритмов +- [Измерение производительности кода и оптимизация](https://youtu.be/sanq2X7Re8o) + - Примеры кода: https://github.com/HowProgrammingWorks/Benchmark +- [Асинхронное программирование на callback`ах](https://youtu.be/z8Hg6zgi3yQ) +- [Асинхронное программирование на promise`ах](https://youtu.be/RMl4r6s1Y8M) + - Примеры кода: https://github.com/HowProgrammingWorks/AsynchronousProgramming +- [Асинхронные функции, async/await, thenable, обработка ошибок](https://youtu.be/Jdf_tZuJbHI) + - Примеры кода: https://github.com/HowProgrammingWorks/AsyncAwait +- Неизменяемые структуры данных (immutable) +- Автоматное программирование: конечные автоматы (машины состояний) +- [Антипаттерны объектно-ориентированного программирования](https://youtu.be/9d5TG1VsLeU) + - https://github.com/HowProgrammingWorks/Antipatterns/tree/master/JavaScript/03-OOP +- [Шаблон Singleton (синглтон) в JavaScript](https://youtu.be/qdJ5yikZnfE) + - Примеры кода: https://github.com/HowProgrammingWorks/Singleton +- [Функциональные объекты, функторы и монады в JavaScript](https://youtu.be/3Z7f0Gi8pxw) + - Примеры кода: https://github.com/HowProgrammingWorks/Functor +- [Генераторы и асинхронные генераторы](https://youtu.be/kvNm9D32s8s) + - Генераторы: https://github.com/HowProgrammingWorks/Generator + - Асинхронные генераторы: https://github.com/HowProgrammingWorks/AsyncGenerator +- [Итераторы и асинхронные итераторы](https://youtu.be/rBGFlWpVpGs) + - Итераторы: https://github.com/HowProgrammingWorks/Iterator + - Асинхронные итераторы: https://github.com/HowProgrammingWorks/AsyncIterator +- [Перечислимый тип (enum) в JavaScript и TypeScript](https://youtu.be/BXiKebOIAGI) + - Примеры кода: https://github.com/HowProgrammingWorks/Enum +- [Дженерики и обобщенное программирование](https://youtu.be/r6W2z3DQhoI) + - Примеры кода: https://github.com/HowProgrammingWorks/Generics +- [Тестирование: юниттесты с примерами](https://youtu.be/CszugIag2TA) + - Тестирование: https://github.com/HowProgrammingWorks/Testing + - Юниттесты: https://github.com/HowProgrammingWorks/Unittesting +- [Тестирование: системное и интеграционное тестирование](https://youtu.be/OuKu_6H_6gE) + - Примеры кода: https://github.com/HowProgrammingWorks/Unittesting +- [Интроспекция и рефлексия в JavaScript](https://youtu.be/yvW1PjUVeM0) + - Интроспекция: https://github.com/HowProgrammingWorks/Introspection + - Рефлекция: https://github.com/HowProgrammingWorks/Reflect +- [Почему хорошее ИТ-образование невостребовано рыночком](https://youtu.be/nvIJE6xMpiI) From f7eb07372bcdf22fcdd7a4ff7e4c2d30113f1796 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Tue, 7 Sep 2021 01:56:08 +0300 Subject: [PATCH 061/308] Approximate dates for 2nd semester --- Courses/Fundamentals-2021-2022.md | 37 ++++++++++++++++++++++++++++++- 1 file changed, 36 insertions(+), 1 deletion(-) diff --git a/Courses/Fundamentals-2021-2022.md b/Courses/Fundamentals-2021-2022.md index 40db610..3051365 100644 --- a/Courses/Fundamentals-2021-2022.md +++ b/Courses/Fundamentals-2021-2022.md @@ -17,7 +17,7 @@ инструментам и процессу разработки), 8 семинаров, 9 лабораторных работ, 47 репозиториев с примерами кода. -### 1 неделя: 6 сентября -12 сентября +### 1 неделя: 6 сентября - 12 сентября - [Введение в программирование](https://youtu.be/5Gt61EX6HZ4) - Абстракция, модель, алгоритм, программа, синтаксис, повторное использование @@ -178,22 +178,36 @@ ## Модуль SEF2 +### 18 неделя: 31 января - 6 февраля + - [Объектно-ориентированное программирование](https://youtu.be/r4ReQlVtfgQ) - [Структуры (struct) или записи (record)](https://youtu.be/Wb7o_kK4aH4) - [Карта специальности инженер-программист](https://youtu.be/SE5aXH-yf0I) + +### 19 неделя: 7 февраля - 13 февраля + - [Подход к изучению программирования](https://youtu.be/zMU4ir10DMg) - Списки: односвязные, двусвязные, циклические, развернутые - [Графы и запросы к графовым структурам данных](https://youtu.be/a0W0T8Yqw3s) - Примеры кода: https://github.com/HowProgrammingWorks/Graph + +### 20 неделя: 14 февраля - 20 февраля + - [Проекции и отображения наборов данных в JavaScript](https://youtu.be/lwJCq9inky8) - Примеры кода: https://github.com/HowProgrammingWorks/Projection - [Мономорфный и полиморфный код, инлайн-кэш, скрытые классы](https://youtu.be/9JUY3prnCQ4) - Примеры кода: https://github.com/HowProgrammingWorks/Monomorphism + +### 21 неделя: 21 февраля - 27 февраля + - [Функциональное программирование](https://youtu.be/0JxSs_GcvbQ) - Смотрите обзорно, это не обязательная лекция, попробуйте уловить суть парадигмы - Примеры кода: https://github.com/HowProgrammingWorks/FunctionalProgramming - [Реактивное программирование](https://youtu.be/7MH8-qQc-48) - Примеры кода: https://github.com/HowProgrammingWorks/ReactiveProgramming + +### 22 неделя: 28 февраля - 6 марта + - [Работа с файлами, буферами и файловыми потоками в Node.js](https://youtu.be/eQGBS15vUac) - Файлы: https://github.com/HowProgrammingWorks/Files - Потоки: https://github.com/HowProgrammingWorks/Streams @@ -201,34 +215,55 @@ - Оценка сложности алгоритмов - [Измерение производительности кода и оптимизация](https://youtu.be/sanq2X7Re8o) - Примеры кода: https://github.com/HowProgrammingWorks/Benchmark + +### 23 неделя: 7 марта - 13 марта + - [Асинхронное программирование на callback`ах](https://youtu.be/z8Hg6zgi3yQ) - [Асинхронное программирование на promise`ах](https://youtu.be/RMl4r6s1Y8M) - Примеры кода: https://github.com/HowProgrammingWorks/AsynchronousProgramming - [Асинхронные функции, async/await, thenable, обработка ошибок](https://youtu.be/Jdf_tZuJbHI) - Примеры кода: https://github.com/HowProgrammingWorks/AsyncAwait + +### 24 неделя: 14 марта - 20 марта + - Неизменяемые структуры данных (immutable) - Автоматное программирование: конечные автоматы (машины состояний) + +### 25 неделя: 21 марта - 27 марта + - [Антипаттерны объектно-ориентированного программирования](https://youtu.be/9d5TG1VsLeU) - https://github.com/HowProgrammingWorks/Antipatterns/tree/master/JavaScript/03-OOP - [Шаблон Singleton (синглтон) в JavaScript](https://youtu.be/qdJ5yikZnfE) - Примеры кода: https://github.com/HowProgrammingWorks/Singleton - [Функциональные объекты, функторы и монады в JavaScript](https://youtu.be/3Z7f0Gi8pxw) - Примеры кода: https://github.com/HowProgrammingWorks/Functor + +### 26 неделя: 28 марта - 3 апреля + - [Генераторы и асинхронные генераторы](https://youtu.be/kvNm9D32s8s) - Генераторы: https://github.com/HowProgrammingWorks/Generator - Асинхронные генераторы: https://github.com/HowProgrammingWorks/AsyncGenerator - [Итераторы и асинхронные итераторы](https://youtu.be/rBGFlWpVpGs) - Итераторы: https://github.com/HowProgrammingWorks/Iterator - Асинхронные итераторы: https://github.com/HowProgrammingWorks/AsyncIterator + +### 27 неделя: 4 апреля - 10 апреля + - [Перечислимый тип (enum) в JavaScript и TypeScript](https://youtu.be/BXiKebOIAGI) - Примеры кода: https://github.com/HowProgrammingWorks/Enum - [Дженерики и обобщенное программирование](https://youtu.be/r6W2z3DQhoI) - Примеры кода: https://github.com/HowProgrammingWorks/Generics + +### 28 неделя: 11 апреля - 17 апреля + - [Тестирование: юниттесты с примерами](https://youtu.be/CszugIag2TA) - Тестирование: https://github.com/HowProgrammingWorks/Testing - Юниттесты: https://github.com/HowProgrammingWorks/Unittesting - [Тестирование: системное и интеграционное тестирование](https://youtu.be/OuKu_6H_6gE) - Примеры кода: https://github.com/HowProgrammingWorks/Unittesting + +### 29 неделя: 18 апреля - 24 апреля + - [Интроспекция и рефлексия в JavaScript](https://youtu.be/yvW1PjUVeM0) - Интроспекция: https://github.com/HowProgrammingWorks/Introspection - Рефлекция: https://github.com/HowProgrammingWorks/Reflect From 05174dcd396121d69758ece5e51cdf92c3a769e9 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Tue, 14 Sep 2021 23:12:08 +0300 Subject: [PATCH 062/308] Add lecture about esm and cjs modules --- Courses/NodeJS.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Courses/NodeJS.md b/Courses/NodeJS.md index e0676bb..9d98ddd 100644 --- a/Courses/NodeJS.md +++ b/Courses/NodeJS.md @@ -54,6 +54,8 @@ ## Структура и архитектура приложений на Node.js - [Архитектурный подход к программированию](https://youtu.be/d_vyO2CkiOc) +- [Node.js модули: ECMA, Common.js, Module API](https://youtu.be/CJr2vS3hjMU) + - Примеры кода: https://github.com/HowProgrammingWorks/Modularity - [Модули, слои, структура проекта, песочницы в JavaScript и Node.js](https://youtu.be/O7A9chb573E) - Пример проекта: https://github.com/HowProgrammingWorks/Project - Абстрактные слои: https://github.com/HowProgrammingWorks/AbstractionLayers From 35fffdf45554bca0a150d714d7b4b0cd6f35adaf Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Wed, 15 Sep 2021 19:42:43 +0300 Subject: [PATCH 063/308] Add video about nodejs packages --- Courses/NodeJS.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/Courses/NodeJS.md b/Courses/NodeJS.md index 9d98ddd..c6e5c6c 100644 --- a/Courses/NodeJS.md +++ b/Courses/NodeJS.md @@ -54,12 +54,14 @@ ## Структура и архитектура приложений на Node.js - [Архитектурный подход к программированию](https://youtu.be/d_vyO2CkiOc) -- [Node.js модули: ECMA, Common.js, Module API](https://youtu.be/CJr2vS3hjMU) - - Примеры кода: https://github.com/HowProgrammingWorks/Modularity - [Модули, слои, структура проекта, песочницы в JavaScript и Node.js](https://youtu.be/O7A9chb573E) - Пример проекта: https://github.com/HowProgrammingWorks/Project - Абстрактные слои: https://github.com/HowProgrammingWorks/AbstractionLayers - Песочницы: https://github.com/HowProgrammingWorks/Sandboxes +- [Node.js модули: ECMA, Common.js, Module API](https://youtu.be/CJr2vS3hjMU) + - Примеры кода: https://github.com/HowProgrammingWorks/Modularity +- [Модули и пакеты, использование package.json и node_modules](https://youtu.be/31sX_3IbXs4) + - Примеры кода: https://github.com/HowProgrammingWorks/Packages - [Инверсия управления и внедрение зависимостей в Node.js](https://youtu.be/Fz86Fdjz-LM) - Инверсия управления: https://github.com/HowProgrammingWorks/InversionOfControl - Внедрение зависимостей: https://github.com/HowProgrammingWorks/DependencyInjection From 8382945b6cd8b2da348e1b748cd4a3ed8ce432c6 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Tue, 21 Sep 2021 15:09:57 -0400 Subject: [PATCH 064/308] Add async pool --- Courses/NodeJS.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/Courses/NodeJS.md b/Courses/NodeJS.md index c6e5c6c..74a737e 100644 --- a/Courses/NodeJS.md +++ b/Courses/NodeJS.md @@ -147,3 +147,7 @@ - Слайды: https://www.slideshare.net/tshemsedinov/nodejs-security-199004963 - [Serverless Clouds (FaaS) и изоляция контекстов запросов в Node.js](https://youtu.be/x-Rd6fPV6L8) - Слайды: https://www.slideshare.net/tshemsedinov/serverless-clouds-faas-and-request-context-isolation-in-nodejs + +## Вспомогательные темы + +- [Асинхронный пул для worker thread pool в Node.js](https://youtu.be/Jj5KZRq4wYI) From 2c911c1e6b197343d167faa1bdc6bf624a4de9e6 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Tue, 21 Sep 2021 15:10:24 -0400 Subject: [PATCH 065/308] Update Asynchronous.md --- Courses/Asynchronous.md | 1 + 1 file changed, 1 insertion(+) diff --git a/Courses/Asynchronous.md b/Courses/Asynchronous.md index 28d70ba..29268ff 100644 --- a/Courses/Asynchronous.md +++ b/Courses/Asynchronous.md @@ -59,3 +59,4 @@ - Асинхронные обработчики событий и AsyncEmitter - Async hooks - [Разделяемая память в многопоточном Node.js](https://youtu.be/KNsm_iIQt7U) +- [Асинхронный пул для worker thread pool в Node.js](https://youtu.be/Jj5KZRq4wYI) From 7aed65dcaaf32e29f09c82826baa7fe2fcad736b Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Fri, 22 Oct 2021 21:13:44 +0300 Subject: [PATCH 066/308] Add talk for fwdays "js is back" --- Courses/Talks.md | 1 + 1 file changed, 1 insertion(+) diff --git a/Courses/Talks.md b/Courses/Talks.md index 9598657..8f6e3db 100644 --- a/Courses/Talks.md +++ b/Courses/Talks.md @@ -4,6 +4,7 @@ - Node.js: Less complexity, more reliability at [HolyJS](https://holyjs-moscow.ru/) - Rethinking Low-code (скорее всего на Fwdays Architecture '21) +- Node.js потоки для I/O-bound задач (Node.js threads for I/O-bound tasks) ## 2021 From 27288f4ffae201ac1afb9d8f46c73fdeb9a9d4cf Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Mon, 25 Oct 2021 18:16:39 +0300 Subject: [PATCH 067/308] Add Hacktoberfest 2021 video --- Courses/Talks.md | 1 + 1 file changed, 1 insertion(+) diff --git a/Courses/Talks.md b/Courses/Talks.md index 8f6e3db..4765b42 100644 --- a/Courses/Talks.md +++ b/Courses/Talks.md @@ -27,6 +27,7 @@ Timur Shemsedinov, Eldar Djafarov, Denis Otrishko, Nick Romanenko, Nick Lototskiy, Olexiy Novohatskiy (19 Aug 2021) - [Как GRASP и SOLID защитят ваш Node.js код от мидлварей и протекания абстракций](https://youtu.be/p063fy3fHZM) +- [Hacktoberfest 2021: лайвкодинг и ревью кода, Node.js worker_threads и thread pool для Metarhia](https://youtu.be/qipIRQptP_4) ## 2020 From 160ea9c2de76baff5a651f2e6f95daae808e421c Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Sat, 30 Oct 2021 16:54:08 -0400 Subject: [PATCH 068/308] Rethinking Low-code slides --- Courses/Talks.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Courses/Talks.md b/Courses/Talks.md index 4765b42..84cc4f3 100644 --- a/Courses/Talks.md +++ b/Courses/Talks.md @@ -3,7 +3,9 @@ ## Future talks - Node.js: Less complexity, more reliability at [HolyJS](https://holyjs-moscow.ru/) -- Rethinking Low-code (скорее всего на Fwdays Architecture '21) +- Rethinking Low-code (Fwdays Architecture '21) + - Слайды https://www.slideshare.net/tshemsedinov/rethinking-lowcode + - https://fwdays.com/en/event/architecture-fwdays-2021/review/rethinking-low-code - Node.js потоки для I/O-bound задач (Node.js threads for I/O-bound tasks) ## 2021 From 3898d6f828834e12735fcbbe9ceedcffbbee346f Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Thu, 4 Nov 2021 17:45:55 -0400 Subject: [PATCH 069/308] Add Holy.js links --- Courses/Talks.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Courses/Talks.md b/Courses/Talks.md index 84cc4f3..22dfed0 100644 --- a/Courses/Talks.md +++ b/Courses/Talks.md @@ -3,6 +3,8 @@ ## Future talks - Node.js: Less complexity, more reliability at [HolyJS](https://holyjs-moscow.ru/) + - Слайды https://www.slideshare.net/tshemsedinov/nodejs-holyjs-2021 + - https://holyjs-moscow.ru/talks/node-js-less-complexity-more-reliability/ - Rethinking Low-code (Fwdays Architecture '21) - Слайды https://www.slideshare.net/tshemsedinov/rethinking-lowcode - https://fwdays.com/en/event/architecture-fwdays-2021/review/rethinking-low-code From 5688a61d1787e736b2f15ac1a11f0d90ca106aa7 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Thu, 4 Nov 2021 17:47:09 -0400 Subject: [PATCH 070/308] Move talks to done list --- Courses/Talks.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Courses/Talks.md b/Courses/Talks.md index 22dfed0..e2583df 100644 --- a/Courses/Talks.md +++ b/Courses/Talks.md @@ -2,16 +2,16 @@ ## Future talks +- Node.js потоки для I/O-bound задач (Node.js threads for I/O-bound tasks) + +## 2021 + - Node.js: Less complexity, more reliability at [HolyJS](https://holyjs-moscow.ru/) - Слайды https://www.slideshare.net/tshemsedinov/nodejs-holyjs-2021 - https://holyjs-moscow.ru/talks/node-js-less-complexity-more-reliability/ - Rethinking Low-code (Fwdays Architecture '21) - Слайды https://www.slideshare.net/tshemsedinov/rethinking-lowcode - https://fwdays.com/en/event/architecture-fwdays-2021/review/rethinking-low-code -- Node.js потоки для I/O-bound задач (Node.js threads for I/O-bound tasks) - -## 2021 - - [Байки про JavaScript и Node.js с Тимуром Шемсединовым](https://youtu.be/hoKKYKMadQs) - [Стратегия входа Node.js в корпоративный сектор](https://youtu.be/FLcBrP1KFYk) - [Как Node.js разработчику подготовиться к проектам корпоративного уровня](https://youtu.be/DghzF_OmodY) From cb8cd93a2301e62f7283fdbae228e3e529d24ca6 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Mon, 22 Nov 2021 16:21:54 -0500 Subject: [PATCH 071/308] Add more public talks --- Courses/Talks.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/Courses/Talks.md b/Courses/Talks.md index e2583df..e72d2da 100644 --- a/Courses/Talks.md +++ b/Courses/Talks.md @@ -2,7 +2,9 @@ ## Future talks -- Node.js потоки для I/O-bound задач (Node.js threads for I/O-bound tasks) +- [Node.js потоки для I/O-bound задач (Node.js threads for I/O-bound tasks)](https://fwdays.com/en/event/js-autumn-fwdays-2021/review/node-js-threads) +- [OdessaJs: Node.js Online TechCorner Part 2](https://odessajs.org/) +- [Интервью на "Мы обречены"](https://www.youtube.com/channel/UCUSbYJK87rpBUJ5KGQd7oHA) ## 2021 @@ -32,6 +34,7 @@ Lototskiy, Olexiy Novohatskiy (19 Aug 2021) - [Как GRASP и SOLID защитят ваш Node.js код от мидлварей и протекания абстракций](https://youtu.be/p063fy3fHZM) - [Hacktoberfest 2021: лайвкодинг и ревью кода, Node.js worker_threads и thread pool для Metarhia](https://youtu.be/qipIRQptP_4) +- [Дуэль Node.js vs Java: Тимур Шемсединов vs Владимир Кириченко](https://youtu.be/oIzLD73IQ4s) ## 2020 From 3dcb2b53fea6b1077e86c7ddd9c3a266c886da08 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Sat, 27 Nov 2021 15:36:22 -0500 Subject: [PATCH 072/308] Move talks to done section --- Courses/Talks.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/Courses/Talks.md b/Courses/Talks.md index e72d2da..2dea095 100644 --- a/Courses/Talks.md +++ b/Courses/Talks.md @@ -2,12 +2,13 @@ ## Future talks -- [Node.js потоки для I/O-bound задач (Node.js threads for I/O-bound tasks)](https://fwdays.com/en/event/js-autumn-fwdays-2021/review/node-js-threads) -- [OdessaJs: Node.js Online TechCorner Part 2](https://odessajs.org/) - [Интервью на "Мы обречены"](https://www.youtube.com/channel/UCUSbYJK87rpBUJ5KGQd7oHA) ## 2021 +- [Node.js потоки для I/O-bound задач (Node.js threads for I/O-bound tasks)](https://fwdays.com/en/event/js-autumn-fwdays-2021/review/node-js-threads) + - Слайды: https://www.slideshare.net/tshemsedinov/nodejs-threads-for-iobound-tasks +- [OdessaJs: Node.js Online TechCorner Part 2](https://youtu.be/f5cCHvwUwAI) - Node.js: Less complexity, more reliability at [HolyJS](https://holyjs-moscow.ru/) - Слайды https://www.slideshare.net/tshemsedinov/nodejs-holyjs-2021 - https://holyjs-moscow.ru/talks/node-js-less-complexity-more-reliability/ From 490c7dc5df2484c94a9e963c56980e4e8972b569 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Thu, 2 Dec 2021 09:21:59 -0500 Subject: [PATCH 073/308] Move to done --- Courses/Talks.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/Courses/Talks.md b/Courses/Talks.md index 2dea095..ab1f45f 100644 --- a/Courses/Talks.md +++ b/Courses/Talks.md @@ -2,10 +2,9 @@ ## Future talks -- [Интервью на "Мы обречены"](https://www.youtube.com/channel/UCUSbYJK87rpBUJ5KGQd7oHA) - ## 2021 +- [Интервью на "Мы обречены"](https://youtu.be/bPx4ajl0Tmw) - [Node.js потоки для I/O-bound задач (Node.js threads for I/O-bound tasks)](https://fwdays.com/en/event/js-autumn-fwdays-2021/review/node-js-threads) - Слайды: https://www.slideshare.net/tshemsedinov/nodejs-threads-for-iobound-tasks - [OdessaJs: Node.js Online TechCorner Part 2](https://youtu.be/f5cCHvwUwAI) From 4f072aeb2f20654ca804656defbdc457bb82792c Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Thu, 2 Dec 2021 09:28:08 -0500 Subject: [PATCH 074/308] Add future talks --- Courses/Talks.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Courses/Talks.md b/Courses/Talks.md index ab1f45f..aa9740d 100644 --- a/Courses/Talks.md +++ b/Courses/Talks.md @@ -2,6 +2,9 @@ ## Future talks +- [Многопоточность в NodeJS](https://podlodka.io/fecrew) 13 декабря, пн, 19:00–20:00 +- [Открытое собеседование на подлодке](https://podlodka.io/fecrew) 15 декабря, ср, 10:00–11:00 + ## 2021 - [Интервью на "Мы обречены"](https://youtu.be/bPx4ajl0Tmw) From 00e4dbd4c6d5c2cb9994dbfba3dc5a7452dbcace Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Fri, 10 Dec 2021 07:40:00 -0500 Subject: [PATCH 075/308] Add talk with Valeriy Wise --- Courses/Talks.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Courses/Talks.md b/Courses/Talks.md index aa9740d..a3f8220 100644 --- a/Courses/Talks.md +++ b/Courses/Talks.md @@ -1,9 +1,10 @@ -# Доклады и выступления +# Conference and public talks ## Future talks - [Многопоточность в NodeJS](https://podlodka.io/fecrew) 13 декабря, пн, 19:00–20:00 - [Открытое собеседование на подлодке](https://podlodka.io/fecrew) 15 декабря, ср, 10:00–11:00 +- [Digitaltalk с Valeriy Wise](https://www.youtube.com/c/ValeriyWise) 10 декабря, пт ## 2021 From 3472faa7ac49b86563be776e0305d971cd2d5d5b Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Tue, 14 Dec 2021 06:32:18 -0500 Subject: [PATCH 076/308] Add links to telegram --- Links.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Links.md b/Links.md index f60bb9a..ed018ca 100644 --- a/Links.md +++ b/Links.md @@ -15,6 +15,7 @@ тут публикуются объявления о лекциях, митапах и семинарах, все новые видео и другие материалы - Телеграм группа [MetarhiaHPW](https://t.me/MetarhiaHPW) +- Телеграм канал [Metaeducation](https://t.me/metaedu) - Подписка на митапы [HowProgrammingWorks](https://www.meetup.com/HowProgrammingWorks/) по общим темам программирования, по JavaScript и для начинающих, тут лежит календарь событий, можно регистрироваться и оставлять отзывы @@ -22,7 +23,7 @@ ## Для начинающих -- Телеграм группа [IP9X](https://t.me/Programming_IP9X) +- Телеграм группа для начинающих [IP9X](https://t.me/Programming_IP9X) - Подписка на митапы [HowProgrammingWorks](https://www.meetup.com/HowProgrammingWorks/) тут лежит календарь событий, можно регистрироваться и оставлять отзывы From 1d0e1235375ae2134cffe3b8bb47c0f79c45179b Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Tue, 14 Dec 2021 07:31:49 -0500 Subject: [PATCH 077/308] Move talk to done and add link --- Courses/Talks.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Courses/Talks.md b/Courses/Talks.md index a3f8220..e57e5b9 100644 --- a/Courses/Talks.md +++ b/Courses/Talks.md @@ -4,10 +4,10 @@ - [Многопоточность в NodeJS](https://podlodka.io/fecrew) 13 декабря, пн, 19:00–20:00 - [Открытое собеседование на подлодке](https://podlodka.io/fecrew) 15 декабря, ср, 10:00–11:00 -- [Digitaltalk с Valeriy Wise](https://www.youtube.com/c/ValeriyWise) 10 декабря, пт ## 2021 +- [Digitaltalk с Valeriy Wise](https://youtu.be/410aVHlS6Gg) - [Интервью на "Мы обречены"](https://youtu.be/bPx4ajl0Tmw) - [Node.js потоки для I/O-bound задач (Node.js threads for I/O-bound tasks)](https://fwdays.com/en/event/js-autumn-fwdays-2021/review/node-js-threads) - Слайды: https://www.slideshare.net/tshemsedinov/nodejs-threads-for-iobound-tasks From d41fc07ef0c1f4347e3166d0df6cc96a49ddaf55 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Tue, 14 Dec 2021 07:33:52 -0500 Subject: [PATCH 078/308] Fix talks dates --- Courses/Talks.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Courses/Talks.md b/Courses/Talks.md index e57e5b9..6a9caf2 100644 --- a/Courses/Talks.md +++ b/Courses/Talks.md @@ -2,8 +2,8 @@ ## Future talks -- [Многопоточность в NodeJS](https://podlodka.io/fecrew) 13 декабря, пн, 19:00–20:00 -- [Открытое собеседование на подлодке](https://podlodka.io/fecrew) 15 декабря, ср, 10:00–11:00 +- [Открытое собеседование на подлодке](https://podlodka.io/fecrew) 14 декабря, вт, 19:00–20:00 +- [Многопоточность в NodeJS](https://podlodka.io/fecrew) 16 декабря, пн, 10:00–11:00 ## 2021 From 04b9f291dee8b6c26a0dfde054e58976f346884b Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Thu, 16 Dec 2021 08:24:07 -0500 Subject: [PATCH 079/308] Move podlodka to done --- Courses/Talks.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Courses/Talks.md b/Courses/Talks.md index 6a9caf2..1814393 100644 --- a/Courses/Talks.md +++ b/Courses/Talks.md @@ -2,12 +2,12 @@ ## Future talks -- [Открытое собеседование на подлодке](https://podlodka.io/fecrew) 14 декабря, вт, 19:00–20:00 -- [Многопоточность в NodeJS](https://podlodka.io/fecrew) 16 декабря, пн, 10:00–11:00 - ## 2021 - [Digitaltalk с Valeriy Wise](https://youtu.be/410aVHlS6Gg) +- [Открытое собеседование на подлодке](https://youtu.be/sNFPdfgax3Q) https://podlodka.io/fecrew +- [Многопоточность в NodeJS](https://youtu.be/VNXga8zomrY) + - Слайды: https://www.slideshare.net/tshemsedinov/multithreading-in-nodejs-and-javascript - [Интервью на "Мы обречены"](https://youtu.be/bPx4ajl0Tmw) - [Node.js потоки для I/O-bound задач (Node.js threads for I/O-bound tasks)](https://fwdays.com/en/event/js-autumn-fwdays-2021/review/node-js-threads) - Слайды: https://www.slideshare.net/tshemsedinov/nodejs-threads-for-iobound-tasks From e3ac888d53cb26f6ed0665dd6958fdcdd7f19a79 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Fri, 17 Dec 2021 02:00:18 -0500 Subject: [PATCH 080/308] Add future talk with ITBEARD --- Courses/Talks.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Courses/Talks.md b/Courses/Talks.md index 1814393..f39ee48 100644 --- a/Courses/Talks.md +++ b/Courses/Talks.md @@ -2,6 +2,8 @@ ## Future talks +- [Интервью у ITBEARD](https://www.youtube.com/c/ITBEARD) + ## 2021 - [Digitaltalk с Valeriy Wise](https://youtu.be/410aVHlS6Gg) From abdf99b434b463c3b2eb2eb7507540c602b84098 Mon Sep 17 00:00:00 2001 From: imtable Date: Sat, 25 Dec 2021 15:13:59 +0200 Subject: [PATCH 081/308] moving Foxminded stream from Tools to Talks --- Courses/Talks.md | 1 + Courses/Tools.md | 1 - 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/Courses/Talks.md b/Courses/Talks.md index f39ee48..b828dde 100644 --- a/Courses/Talks.md +++ b/Courses/Talks.md @@ -6,6 +6,7 @@ ## 2021 +- [Байки про JavaScript и Node.js с Тимуром Шемсединовым](https://youtu.be/hoKKYKMadQs) - [Digitaltalk с Valeriy Wise](https://youtu.be/410aVHlS6Gg) - [Открытое собеседование на подлодке](https://youtu.be/sNFPdfgax3Q) https://podlodka.io/fecrew - [Многопоточность в NodeJS](https://youtu.be/VNXga8zomrY) diff --git a/Courses/Tools.md b/Courses/Tools.md index b0bba4d..0422b3f 100644 --- a/Courses/Tools.md +++ b/Courses/Tools.md @@ -9,4 +9,3 @@ - Бенчмаркинг - [Измерение производительности кода и оптимизация в JavaScript и Node.js](https://youtu.be/sanq2X7Re8o) - https://github.com/HowProgrammingWorks/Benchmark -- [Байки про JavaScript и Node.js с Тимуром Шемсединовым](https://youtu.be/hoKKYKMadQs) From 7bd69191060861efb0aa72a18b1a87efcaae92be Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Thu, 6 Jan 2022 11:50:47 -0500 Subject: [PATCH 082/308] Update Courses/Talks.md --- Courses/Talks.md | 1 - 1 file changed, 1 deletion(-) diff --git a/Courses/Talks.md b/Courses/Talks.md index b828dde..f39ee48 100644 --- a/Courses/Talks.md +++ b/Courses/Talks.md @@ -6,7 +6,6 @@ ## 2021 -- [Байки про JavaScript и Node.js с Тимуром Шемсединовым](https://youtu.be/hoKKYKMadQs) - [Digitaltalk с Valeriy Wise](https://youtu.be/410aVHlS6Gg) - [Открытое собеседование на подлодке](https://youtu.be/sNFPdfgax3Q) https://podlodka.io/fecrew - [Многопоточность в NodeJS](https://youtu.be/VNXga8zomrY) From e6239ccfa34d32b0899578655179bdf954135a7a Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Sun, 16 Jan 2022 15:43:20 -0500 Subject: [PATCH 083/308] Add Odess.js techcorner --- Courses/Talks.md | 1 + 1 file changed, 1 insertion(+) diff --git a/Courses/Talks.md b/Courses/Talks.md index f39ee48..23fbb47 100644 --- a/Courses/Talks.md +++ b/Courses/Talks.md @@ -3,6 +3,7 @@ ## Future talks - [Интервью у ITBEARD](https://www.youtube.com/c/ITBEARD) +- [OdessaJs: Node.js Online TechCorner](https://youtu.be/f5cCHvwUwAI) 17 Feb ## 2021 From 8a091b1e79ca3ffd7b93d0c7945f2e7d2b37a9de Mon Sep 17 00:00:00 2001 From: UniverAlex Date: Sun, 23 Jan 2022 14:31:48 +0300 Subject: [PATCH 084/308] Update Web.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Убрана повторяющаяся ссылка. --- Courses/Web.md | 1 - 1 file changed, 1 deletion(-) diff --git a/Courses/Web.md b/Courses/Web.md index 4485bdc..0040ed9 100644 --- a/Courses/Web.md +++ b/Courses/Web.md @@ -19,4 +19,3 @@ - [Отдача статики в Node.js](https://youtu.be/n_AdKIzbpBc) - Примеры кода и задачи: https://github.com/HowProgrammingWorks/ServeStatic - [Progressive Web Applications PWA и ServiceWorkers](https://youtu.be/s7AIwZMTVPs) -- [JavaScript в браузере: Web API (часть 1)](https://youtu.be/6O8SBJsNeNw) From 78a6fabe38b6d54b57992e028ad142fb75cb29b5 Mon Sep 17 00:00:00 2001 From: Georgiy Filippov Date: Sun, 23 Jan 2022 17:18:05 +0500 Subject: [PATCH 085/308] Remove duplicates --- Courses/Web.md | 3 --- 1 file changed, 3 deletions(-) diff --git a/Courses/Web.md b/Courses/Web.md index 0040ed9..45b0e53 100644 --- a/Courses/Web.md +++ b/Courses/Web.md @@ -11,11 +11,8 @@ - Примеры кода: https://github.com/HowProgrammingWorks/HttpRequest - [Разработка API на Node.js (клиент и сервер)](https://youtu.be/-az912XBCu8) - Примеры кода: https://github.com/HowProgrammingWorks/API -- [Отдача статики в Node.js](https://youtu.be/n_AdKIzbpBc) - - Примеры кода: https://github.com/HowProgrammingWorks/ServeStatic - [Progressive Web Applications PWA и ServiceWorkers](https://youtu.be/s7AIwZMTVPs) - Примеры кода: https://github.com/HowProgrammingWorks/ServiceWorker - [JavaScript в браузере: Web API (часть 1)](https://youtu.be/6O8SBJsNeNw) - [Отдача статики в Node.js](https://youtu.be/n_AdKIzbpBc) - Примеры кода и задачи: https://github.com/HowProgrammingWorks/ServeStatic -- [Progressive Web Applications PWA и ServiceWorkers](https://youtu.be/s7AIwZMTVPs) From 641586c57ea6031f7d79028e5627185043811d89 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Sun, 6 Feb 2022 17:21:19 -0500 Subject: [PATCH 086/308] Add GDSC --- Courses/Talks.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Courses/Talks.md b/Courses/Talks.md index 23fbb47..6b83d9d 100644 --- a/Courses/Talks.md +++ b/Courses/Talks.md @@ -3,6 +3,8 @@ ## Future talks - [Интервью у ITBEARD](https://www.youtube.com/c/ITBEARD) +- Google Developer Student Club - Мультипарадигменное и метапрограммирование - 10 Февраля в 18:00 + - https://gdsc.community.dev/events/details/developer-student-clubs-national-technical-university-of-ukraine-kyiv-polytechnic-institute-natsionalnii-tekhnichnii-universitet-ukrayini-kiyivskii-politekhnichnii-institut-presents-tech-talk-multi-paradigm-and-meta-programming/ - [OdessaJs: Node.js Online TechCorner](https://youtu.be/f5cCHvwUwAI) 17 Feb ## 2021 From de46723ab5ce4030c13c3c053ded3b8647ef83d9 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Sun, 6 Feb 2022 17:27:14 -0500 Subject: [PATCH 087/308] Add autmata programming video --- Courses/Fundamentals.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Courses/Fundamentals.md b/Courses/Fundamentals.md index c9ab6b2..da780c8 100644 --- a/Courses/Fundamentals.md +++ b/Courses/Fundamentals.md @@ -157,7 +157,7 @@ - [Асинхронные функции, async/await, thenable, обработка ошибок](https://youtu.be/Jdf_tZuJbHI) - Примеры кода: https://github.com/HowProgrammingWorks/AsyncAwait - Неизменяемые структуры данных (immutable) -- Автоматное программирование: конечные автоматы (машины состояний) +- [Автоматное программирование: конечные автоматы (машины состояний)](https://youtu.be/mxz7_zcip0c) - [Антипаттерны объектно-ориентированного программирования](https://youtu.be/9d5TG1VsLeU) - https://github.com/HowProgrammingWorks/Antipatterns/tree/master/JavaScript/03-OOP - [Шаблон Singleton (синглтон) в JavaScript](https://youtu.be/qdJ5yikZnfE) From b1d8a349d5c6f86d31a663124115c86bd9b2fe27 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Sun, 6 Feb 2022 17:29:12 -0500 Subject: [PATCH 088/308] Remove node.js lectures from 1st year program --- Courses/Fundamentals.md | 4 ---- 1 file changed, 4 deletions(-) diff --git a/Courses/Fundamentals.md b/Courses/Fundamentals.md index da780c8..f6d9174 100644 --- a/Courses/Fundamentals.md +++ b/Courses/Fundamentals.md @@ -144,10 +144,6 @@ - Примеры кода: https://github.com/HowProgrammingWorks/FunctionalProgramming - [Реактивное программирование](https://youtu.be/7MH8-qQc-48) - Примеры кода: https://github.com/HowProgrammingWorks/ReactiveProgramming -- [Работа с файлами, буферами и файловыми потоками в Node.js](https://youtu.be/eQGBS15vUac) - - Файлы: https://github.com/HowProgrammingWorks/Files - - Потоки: https://github.com/HowProgrammingWorks/Streams - - Буферы: https://github.com/HowProgrammingWorks/Buffers - Оценка сложности алгоритмов - [Измерение производительности кода и оптимизация](https://youtu.be/sanq2X7Re8o) - Примеры кода: https://github.com/HowProgrammingWorks/Benchmark From d45aadedbae6b1b15290cd6be8d0e14c989dd4d1 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Fri, 11 Feb 2022 19:50:30 +0200 Subject: [PATCH 089/308] Update Talks.md --- Courses/Talks.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Courses/Talks.md b/Courses/Talks.md index 6b83d9d..8b22db7 100644 --- a/Courses/Talks.md +++ b/Courses/Talks.md @@ -3,7 +3,7 @@ ## Future talks - [Интервью у ITBEARD](https://www.youtube.com/c/ITBEARD) -- Google Developer Student Club - Мультипарадигменное и метапрограммирование - 10 Февраля в 18:00 +- [Google Developer Student Club - Мультипарадигменное и метапрограммирование](https://youtu.be/Bo9y4IxdNRY) - 10 Февраля - https://gdsc.community.dev/events/details/developer-student-clubs-national-technical-university-of-ukraine-kyiv-polytechnic-institute-natsionalnii-tekhnichnii-universitet-ukrayini-kiyivskii-politekhnichnii-institut-presents-tech-talk-multi-paradigm-and-meta-programming/ - [OdessaJs: Node.js Online TechCorner](https://youtu.be/f5cCHvwUwAI) 17 Feb From 1504ea28424cc2cfed363e628e49e1537f3e8522 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Fri, 11 Feb 2022 19:53:54 +0200 Subject: [PATCH 090/308] Add future talks --- Courses/Talks.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/Courses/Talks.md b/Courses/Talks.md index 8b22db7..9efa56f 100644 --- a/Courses/Talks.md +++ b/Courses/Talks.md @@ -2,6 +2,10 @@ ## Future talks +- IT-Kamasutra - https://youtube.com/c/ITKAMASUTRA +- Odessa.js Architecture TechCorner +- Odessa.js Node.js Tech Corner +- EPAM Math.random community - [Интервью у ITBEARD](https://www.youtube.com/c/ITBEARD) - [Google Developer Student Club - Мультипарадигменное и метапрограммирование](https://youtu.be/Bo9y4IxdNRY) - 10 Февраля - https://gdsc.community.dev/events/details/developer-student-clubs-national-technical-university-of-ukraine-kyiv-polytechnic-institute-natsionalnii-tekhnichnii-universitet-ukrayini-kiyivskii-politekhnichnii-institut-presents-tech-talk-multi-paradigm-and-meta-programming/ From f709ee81ef7f275a1119bf03e925681b7b33f797 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Thu, 17 Feb 2022 12:17:21 -0500 Subject: [PATCH 091/308] Add odessa.js --- Courses/Talks.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Courses/Talks.md b/Courses/Talks.md index 9efa56f..00bd1c8 100644 --- a/Courses/Talks.md +++ b/Courses/Talks.md @@ -3,7 +3,7 @@ ## Future talks - IT-Kamasutra - https://youtube.com/c/ITKAMASUTRA -- Odessa.js Architecture TechCorner +- [Odessa.js Architecture TechCorner](https://youtu.be/OARxqxb262Q) - Odessa.js Node.js Tech Corner - EPAM Math.random community - [Интервью у ITBEARD](https://www.youtube.com/c/ITBEARD) From 38f39ce4d9a9eb37257e168efeb5d3f7000ebf42 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Thu, 17 Feb 2022 13:04:52 -0500 Subject: [PATCH 092/308] Add links --- Courses/Talks.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Courses/Talks.md b/Courses/Talks.md index 00bd1c8..bd5939e 100644 --- a/Courses/Talks.md +++ b/Courses/Talks.md @@ -4,8 +4,8 @@ - IT-Kamasutra - https://youtube.com/c/ITKAMASUTRA - [Odessa.js Architecture TechCorner](https://youtu.be/OARxqxb262Q) -- Odessa.js Node.js Tech Corner -- EPAM Math.random community +- Odessa.js Node.js Tech Corner - https://youtube.com/OdessaJSConference +- EPAM Math.random community - https://www.mathrandom.com/events/myth-busters-about-nodejs/ - [Интервью у ITBEARD](https://www.youtube.com/c/ITBEARD) - [Google Developer Student Club - Мультипарадигменное и метапрограммирование](https://youtu.be/Bo9y4IxdNRY) - 10 Февраля - https://gdsc.community.dev/events/details/developer-student-clubs-national-technical-university-of-ukraine-kyiv-polytechnic-institute-natsionalnii-tekhnichnii-universitet-ukrayini-kiyivskii-politekhnichnii-institut-presents-tech-talk-multi-paradigm-and-meta-programming/ From 0b98e2d54af772bd66d9308e4c8ba69d5e4d801f Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Wed, 23 Feb 2022 16:49:20 -0500 Subject: [PATCH 093/308] Move to 2022 and add links --- Courses/Talks.md | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/Courses/Talks.md b/Courses/Talks.md index bd5939e..5cb6876 100644 --- a/Courses/Talks.md +++ b/Courses/Talks.md @@ -5,12 +5,17 @@ - IT-Kamasutra - https://youtube.com/c/ITKAMASUTRA - [Odessa.js Architecture TechCorner](https://youtu.be/OARxqxb262Q) - Odessa.js Node.js Tech Corner - https://youtube.com/OdessaJSConference -- EPAM Math.random community - https://www.mathrandom.com/events/myth-busters-about-nodejs/ - [Интервью у ITBEARD](https://www.youtube.com/c/ITBEARD) - [Google Developer Student Club - Мультипарадигменное и метапрограммирование](https://youtu.be/Bo9y4IxdNRY) - 10 Февраля - https://gdsc.community.dev/events/details/developer-student-clubs-national-technical-university-of-ukraine-kyiv-polytechnic-institute-natsionalnii-tekhnichnii-universitet-ukrayini-kiyivskii-politekhnichnii-institut-presents-tech-talk-multi-paradigm-and-meta-programming/ - [OdessaJs: Node.js Online TechCorner](https://youtu.be/f5cCHvwUwAI) 17 Feb +## 2022 + +- Разрушаем мифы про Node.js - EPAM Math.random community + - Видео: https://youtu.be/Nykxhmh3WDY + - https://www.mathrandom.com/events/myth-busters-about-nodejs/ + ## 2021 - [Digitaltalk с Valeriy Wise](https://youtu.be/410aVHlS6Gg) From d76f0c0617f69cf90d95252ebb03b6d19b8b0cd3 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Wed, 23 Feb 2022 16:50:19 -0500 Subject: [PATCH 094/308] IT-Kamasutra link --- Courses/Talks.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Courses/Talks.md b/Courses/Talks.md index 5cb6876..4ef4ad2 100644 --- a/Courses/Talks.md +++ b/Courses/Talks.md @@ -2,7 +2,7 @@ ## Future talks -- IT-Kamasutra - https://youtube.com/c/ITKAMASUTRA +- [NodeJS, Metarhia, образование - IT-Kamasutra TekTok Podcast #1](https://youtu.be/ND5HNHicACI) - [Odessa.js Architecture TechCorner](https://youtu.be/OARxqxb262Q) - Odessa.js Node.js Tech Corner - https://youtube.com/OdessaJSConference - [Интервью у ITBEARD](https://www.youtube.com/c/ITBEARD) From 04a55f3a0251b06e810f75dd06537f369bb84a44 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Wed, 23 Feb 2022 16:53:18 -0500 Subject: [PATCH 095/308] Move to done --- Courses/Talks.md | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/Courses/Talks.md b/Courses/Talks.md index 4ef4ad2..4fc8101 100644 --- a/Courses/Talks.md +++ b/Courses/Talks.md @@ -3,18 +3,17 @@ ## Future talks - [NodeJS, Metarhia, образование - IT-Kamasutra TekTok Podcast #1](https://youtu.be/ND5HNHicACI) -- [Odessa.js Architecture TechCorner](https://youtu.be/OARxqxb262Q) - Odessa.js Node.js Tech Corner - https://youtube.com/OdessaJSConference - [Интервью у ITBEARD](https://www.youtube.com/c/ITBEARD) -- [Google Developer Student Club - Мультипарадигменное и метапрограммирование](https://youtu.be/Bo9y4IxdNRY) - 10 Февраля - - https://gdsc.community.dev/events/details/developer-student-clubs-national-technical-university-of-ukraine-kyiv-polytechnic-institute-natsionalnii-tekhnichnii-universitet-ukrayini-kiyivskii-politekhnichnii-institut-presents-tech-talk-multi-paradigm-and-meta-programming/ -- [OdessaJs: Node.js Online TechCorner](https://youtu.be/f5cCHvwUwAI) 17 Feb ## 2022 - Разрушаем мифы про Node.js - EPAM Math.random community - Видео: https://youtu.be/Nykxhmh3WDY - https://www.mathrandom.com/events/myth-busters-about-nodejs/ +- [Google Developer Student Club - Мультипарадигменное и метапрограммирование](https://youtu.be/Bo9y4IxdNRY) - 10 Февраля + - https://gdsc.community.dev/events/details/developer-student-clubs-national-technical-university-of-ukraine-kyiv-polytechnic-institute-natsionalnii-tekhnichnii-universitet-ukrayini-kiyivskii-politekhnichnii-institut-presents-tech-talk-multi-paradigm-and-meta-programming/ +- [Odessa.js Architecture TechCorner](https://youtu.be/OARxqxb262Q) ## 2021 From 364ce4bdcc4fd01676a2d4afbbbdf3ef67dea63f Mon Sep 17 00:00:00 2001 From: Dmytro Pashchenko Date: Sun, 13 Mar 2022 21:48:38 +0200 Subject: [PATCH 096/308] Fixed typo --- Practice/SEF2.ru.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Practice/SEF2.ru.md b/Practice/SEF2.ru.md index 070bf47..84ea2cd 100644 --- a/Practice/SEF2.ru.md +++ b/Practice/SEF2.ru.md @@ -10,7 +10,7 @@ ## Что разрешено и что запрещено: - Можно использовать любой язык и все встроенные в него библиотек. -- Нельзя использовать сторонние библиотеки, устанавливаемые из npm, githib и т.д. +- Нельзя использовать сторонние библиотеки, устанавливаемые из npm, GitHub и т.д. - Репозиторий обязательно размещается на https://github.com в открытом доступе. - Нужно развить навыки групповой работы, для этого студенты объединяются в группы по 2-5 человек; группа может писать один общий проект или сделать перекрестный From e85ca84a95b7905779211c394efd2df985e4f970 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Sun, 10 Apr 2022 15:20:30 -0400 Subject: [PATCH 097/308] Add weekly call index stub --- Archive/WeeklyCall.md | 1 + README.md | 1 + 2 files changed, 2 insertions(+) create mode 100644 Archive/WeeklyCall.md diff --git a/Archive/WeeklyCall.md b/Archive/WeeklyCall.md new file mode 100644 index 0000000..e352229 --- /dev/null +++ b/Archive/WeeklyCall.md @@ -0,0 +1 @@ +# Metarhia community weekly call index diff --git a/README.md b/README.md index ca33ba9..dc3adb4 100644 --- a/README.md +++ b/README.md @@ -3,6 +3,7 @@ - [Индекс каналов и групп сообщества Метархия](Links.md) - [Индекс докладов на конференциях](Courses/Talks.md) - [Индекс практических заданий](Practice/Index.md) +- [Созвонов сообщества](Archive/WeeklyCall.md) ## Последовательная программа From 794225613db02578dfb11ccf5d7da69992ae2fa9 Mon Sep 17 00:00:00 2001 From: Anton Telichenko Date: Mon, 11 Apr 2022 13:22:18 +0300 Subject: [PATCH 098/308] feat: added metarhia weekly calls timecodes --- Archive/WeeklyCall.md | 657 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 657 insertions(+) diff --git a/Archive/WeeklyCall.md b/Archive/WeeklyCall.md index e352229..bd06abe 100644 --- a/Archive/WeeklyCall.md +++ b/Archive/WeeklyCall.md @@ -1 +1,658 @@ # Metarhia community weekly call index + +1 +0:00 новости (сертификации, metarhia, lowcode) +14:40 зачем выбирать JAVA на новый проект в 2021? +16:15 V8 waitAsync +22:00 пример кода для обращения к методу counter metarhia c защитой глобальной переменной +35:00 node или deno +40:18 как обучать ребенка 6 лет? +55:05 о metarhia +1:44:40 сколько будут стоить специалисты metarhia стека +1:50:00 зависимости postgresql, metarhia + +2 +0:00 start +0:36 ❓можно-ли вынести поиск скриптов в файлах metarhia в отдельный класс? +9:55 ❓миллион вебсокетов на двух виртуалках +18:48❓планируется-ли развивать репозиторий консоль в metarhia? +31:13 противоречия между дескриптивными и нормативными моделями +32:15❓в чем идея консоли? +33:28❓в чем главное преимущество stateful подхода? +34:47❓можно-ли писать чистый код на express? +36:44 примеры кода для детей +39:26❓построить видео-чат на metarhia +44:18 лекция о том, как работают client session взаимодействия +52:02❓важна-ли скорость работы web-sockets? +59:43 задача метархии - api за день +1:09:18 примеры вопросов +1:08:40❓планируется-ли доработка курса по базам данных? +1:12:49❓на node нельзя писать корпоративные приложения, потому-что там нет интерфейсов, что ответить? +1:14:52❓как строить бенчмарки? +1:23:00❓есть-ли аналог swagger api для impress в метархии? +1:28:48❓есть-ли протокол для стриминга в metacom +1:34:16❓Тимур, почему вы плохо относитесь к криптовалютам? + +3 +0:00 start +0:30❓можно-ли писать SSR SPA с бекендом на metarhia? +9:48❓как написать свой домен? +12:45 лекции для понимания как моделировать предметную область при помощи структур данных +13:55 Prisma +18:47 пример работы metaschema +37:47 где используются графы? как использовать графы в соц. сетях +39:52 где на сервере хранить большое количество картинок +45:52❓micro/macro tasks в браузере и node.js (материалы) +56:22❓можно-ли выложить в телеграм-канал ссылку на торрент на книгу you don't know js? +1:03:50❓будут-ли uml-схемы в документации metarhia +1:22:17❓почему задачи CICD, мониторинга, управления не автоматизированы через machine learning +1:29:06❓можно-ли валидировать приходящие с клиента данных до попадания в javascript? +1:37:04❓в репозитории common находятся оптимизированные методы js? +1:43:15❓d.ts файлы в metarhia нужны для описания интерфейсов? +1:49:25❓в видео "сессии в metarhia" к каждому юзеру будет подвязываться объект контекст, что в нем нужно хранить? +1:58:15❓открытость валидационных схем на клиенте является уязвимостью? +1:59:17❓планируется-ли поставлять версию TLS node вместе c metarhia? +2:03:13 когда записи стримов метархии станут публичными? + +4 +0:00 start +0:20❓какие могут быть проблемы/преимущества с точкой входа над несколькими структурами данных? (graphQl) +9:30❓можно-ли комбинировать подходы на бекенде? +12:10❓пример реализации data-sentry подхода в архитектуре систем +18:08❓в каких случаях graphQl подходит +22:00❓объяснение цитаты про типы и года опыта +36:09❓какие вещи из js нельзя написать на typescript +42:17❓плагины для eslint, babel, которые идентифицируют проблемы в коде, типах +50:48❓причина непопулярности uml диаграм в нехватке автогенерации? +58:52❓возможно-ли создание инструментов по миграции из существующих систем в metarhia? +1:10:05 hegel анализатор js +1:19:37 V8 %getOptimizationStatus optimization +1:24:45❓панель управления для metarhia +1:34:03❓можно-ли сгенерировать user-interface с помощью metarhia? (scaffolding) +1:53:40❓можно-ли дать доступ с клиента к нечуствительным полям в бд? +1:57:24❓пагинация +2:00:20❓планируется-ли поддержка многоязычности? +2:01:29❓проблема масштабируемости meteor и схожесть в идеях с metarhia +2:05:09❓сертификация metarhia + +5 +0:00 start +0:15 race condition +10:40 виды race condition +10:50 пример "гонка по управлению" +31:05❓о metatests +50:20❓использовать finalizationRegistry для выхода из сеанса +1:03:20 новости metarhia +1:17:20 схема структуры БД авторизации/аутентификации (объяснение, пример модификации) +1:58:10❓есть-ли в metasql pgpromise работа с файлами sql, prepared spacements на базе сравнения запросов с ранними +2:05:35❓вы пробовали cloudflare workers? +2:07:23❓мнение по поводу nodered + +6 +0:00 start +0:10❓часто пишу if в коде, при изучении автоматного программирования есть нехватка примеров кода +5:53❓главная проблема nest +15:15❓почему пишут REST? +28:16❓почему использую JWT? +31:07❓основная причина выбора технологии +38:53❓репутационный критерий при выборе технологии +40:36❓если в metarhia избегать ООП, как объеденять наборы функций в сущности? +42:50❓что вам хотелось бы видеть в рамках визуализации абстрактного синтаксического дерева? +44:40❓кто может сделать код-ревью кода на metarhia? +47:45 о документации metarhia +50:30❓сложность презентаций +51:47 я абсолютно не ориентируюсь на то, что метархию будут брать разработчики +53:17❓набирать начинающих программистов для metarhia +1:05:42❓сценарии ответов на виды кибератак +1:18:44❓пример кода для игр на node для метархии +1:21:34❓версионирование бизнес модели + +7 +0:00 start +0:55❓как метархия будет работать с микросервисами и сессиями +7:00❓как писать наследование без классов и интерфейсов? +12:54❓стримы в node +27:00❓что должно лежать в папке domain в example +32:00❓будет-ли у метархии поддержка стриминга видео? +35:55❓будет-ли пример реализации oauth 2.0 на практике, поддержка oauth 2.0? +42:30❓изменение структуры данных в памяти +53:15❓почему декораторы в nest это плохо? +1:14:45❓реализация менеджмента турнира +1:33:29 планы metarhia +1:44:03 перечисление фич, которые уже реализованы в metarhia +1:49:11 почему нужно перезапускать процесс node, если один реквест привел к exception +1:57:54❓существуют-ли механизмы отслеживания потребления ресурсов? +2:05:00❓система нагрузочного тестирования в metarhia +2:06:40❓как происходит горячая перезагрузка? +2:08:17❓приложения на metarhia и на другой технологии для сравнения производительности + +8 +0:00 про виды утечек памяти +10:54❓чем отличается hip от stack +16:20❓легковесный и тяжеловесный сборщики мусора +22:22❓почему библиотека cluster внутри node.js плохо утилизирует ресурсы +27:25❓как возможно отправить метархии event на клиента +33:33❓когда metarhia станет популярной? +59:12❓память в nodejs, metarhia +1:10:40❓как работать с use case? +1:42:05❓ошибка при ограничении прав в системе прав + +9 +0:00 start +0:28❓client в metacom будет рефакториться? +6:00❓пример отправки event от user к user +10:44 новости +19:36 список библиотек и планы +35:16❓выбор зависимостей в impress (node http, socket) +40:00 про субд, globalstorage +1:02:15❓будет-ли возможность подключить другую библиотеку для web sockets +1:07:10❓какой нужен уровень для написания продуктов на базе metarhia? + +10 +0:00 start +0:20 новости metarhia +1:40 почему null - это плохо? +29:45❓преимущество масштабирования тредами, а не процессами +43:56❓тестирование внутри worker'a +56:56❓планы на лето +1:36:00❓банки и web socket +1:47:43❓оценка кода обертки http(jwt, params) для rpc +1:51:55❓вопрос по class Procedure в impress + +11 +0:00 start +1:00❓как не забыть то - что выучил? +11:00❓как заинтересовывать детей в программировании? +19:20❓null для object, undefined для скалярных? +29:45❓защита от ddos атак в metarhia +38:27❓как попасть на проект на metarhia? +52:12❓weakMap и остальные... +58:35❓stateless подход node.js +1:19:40❓copilot +1:31:05❓в каких компаниях используется metarhia? +1:47:40❓globalstorage и сложности +1:55:05❓обновления библиотек metarhia без changelog +2:04:40❓пакет для ssh связи + +12 +0:00 новости +11:35❓заложен-ли канал связи между инстансами метархии между разными серверами +13:25❓можно-ли будет использовать cursor в плагине для crud? +37:58❓пример генерации форм на клиенте +47:00 nodered, bpmn +1:39:30❓ почему нужно начинать с grasp, а не с solid? + +13 +0:00 start +1:00❓когда можно использовать require в циклах? +12:42❓код class Cache в impress +36:40❓преимущества node перед другими ЯП +41:00 про ООП +1:07:10 портирование проекта с nodered на metarhia +1:16:02❓как вы себе представляете прикладной код? +1:21:30❓почему nocode системы пытаются скопировать отвратительные паттерны друг у друга? +1:31:00 нейросети и код +1:53:20❓кто будет на holy js? + +14 +0:00 start +0:30❓example logout пользователя (работа metarhia c контекстом) +41:50❓для чего используется класс Resourses в impress +50:35❓про загрузку данных разных форматов, планы metarhia, системные и прикладные программисты +1:00:00❓про планировщики в линуксе, metarhiа +1:48:52❓cursor с бд + +15 +0:00 планы и новости +11:45❓вычислимые поля в metaschema (discuss) +30:02❓отдельный сервис для управления нагрузками +39:48 почему R&D офис не должен быть прибыльным +54:46❓блокировки, регистр хранения данных в metarhia +1:15:50❓хватает-ли времени на семью? +1:19:05❓машинное обучение на js +1:20:37❓плагины +1:33:10 написание бизнес-логики на metarhia +1:42:30 про базы данных +1:44:40 про языки программирования и их возможности +1:48:58 про тип null +1:50:00❓как происходит проверка по схемам в metaschema? +1:53:20❓проблемы typescript +1:56:00❓стримы в node +2:06:18❓вопрос по коду metaschema + +16 +0:00 новости metasqls +8:00 новости metacom +22:00 медицинская система, украинские гос. сайты и анархия +43:02 инстаграмм и вопросы +1:06:10❓ docker +1:12:50❓ про сервера +1:22:33❓сказка-презентация "шапка полная дэвов" +1:26:30❓крупные банки и node? +1:39:05❓почему люди работают по найму? +1:47:05❓что вы думаете о Илоне Маске? +1:51:43❓какой процент успешных студентов у Тимура? +1:55:00❓почему на галерах плохо работать? + +17 +не существует + +18 +0:00 новости и изменения в стеке metarhia +13:00 про npm пакеты и зависимости +27:40 нововведения github +37:17❓выполнение c/c++ в node +48:45❓metarhia принимает и http и ws? нужно-ли как-то переключаться между ними? web-hooks? +57:00❓multithread реальны или виртуальны в node? +1:00:00❓проблемы производительности и абстракций +1:36:20❓использование google cloud +1:37:00❓про обучение программированию, вопросы по технологиям и тд + +19 +0:00 start +1:35 автоматное программирование +46:24 конец лагов +46:25 про фронтенд +1:05:40 прогресс metarhia +1:07:50 дети, обучение, менторинг, ревью кода +1:19:40 пелевин, книги +1:36:00❓где лучше хранить изображения? (бд/файловая система) +1:49:35❓мультиязычность в образовательном проекте + +20 +0:00 start +0:01 обучение, города, люди +4:00❓ metacom обновления, планы +24:37❓ globalstorage, cursor, metasql планы +1:00:50❓frontend подход реализации с cursor +1:15:15❓будет-ли автодокументация api как в swagger в metarhia? +1:27:50❓образовательная программа +1:46:00❓автоматное программирование +1:52:50 книга "Модели данных" +2:00:00 антипаттерны + +21 +0:00 start +0:01 обновление библиотек metarhia +5:00 баланс тредов round robin +13:39❓решает-ли вышеописанный код проблему совмещенной памяти у нескольких воркеров? +26:05❓обмениваться буферами можно внутри node или браузера +29:20❓полезные функции v8 +30:50❓impress node.js context +34:40❓ abort controller +49:50 R&D офис в КПИ, образование и научная деятельность +1:05:30❓куда идти учиться сыну 16лет +1:14:00 R&D +1:15:00 как будет работать менторинг при metaeducation +1:21:40❓вуз в Польше для поступления +1:22:44❓back pressure для стрима с "медленным" клиентом +1:42:10❓как банки использовали nodered +1:44:47❓почему Тимур решил выбрать js? +2:04:30❓мысли про mvp из говна и палок и выкуп стартапов большими компаниями? + +22 +0:00 start +0:55 новости платформы +9:56 диаграмма для metahealth, metaclass +17:30❓как грамотно построить клиентские приложения на node.js +25:15❓постоянно перезапускать асинхронную функцию (async forever) +47:32❓работают-ли стримы со ссылочными типамид данных +53:07❓оптимизация v8 для работы с данными +58:20 система плагинов +1:12:00 менторинг на проектах и преподавание для детей +1:28:45❓как получать 30к в месяц? +1:57:35❓в какую сторону мыслить в придумывании нового +2:02:50❓прикладная задача по передаче данных + +23 +0:00 новости библиотек +8:04❓репозиторий для примера написания бизнес-логики +11:42❓про metaforms +18:20❓require и imports +25:48❓не пробовали использовать какой-нибудь frontend фреймворк? +1:07:00❓изоляция пользователей внутри приложения по разным бд +1:22:20❓где и как можно применять автоматное программирование +1:30:00 искуственный интеллект, node, js + +24 +0:00 новости технологического стека +9:51❓вопросы после попытки переноса проекта на metarhia +41:00❓file system watcher + sandboxind для подгрузки архива с исходным кодом +49:00❓загрузка import в песочницу +53:00❓вопросы после попытки переноса проекта на metarhia (2 часть) +1:16:00❓когда появится TCP? +1:25:00❓в metaschema можно писать произвольные метаданные? +1:26:30❓schemas, выполнение кастомного sql +1:33:50❓развитие globalstorage +1:36:15❓в какой последовательности смотреть лекции Тимура +1:38:20❓подскажите макбук для покупки +1:54:10❓тестирование апи с postman, http, безопастность + +25 +0:00 start +0:08 баг в performance hook в node +4:15 финансирование образовательных проектов +7:06 performance hook поиск бага +52:10❓прогресс с миграциями +56:40 фикс багa metacom + +26 +0:00 новости metacom, migrations, балансировщик на базе event loop utilization, issue в библиотеках с тегами hacktoberfest, metaedu +9:10❓что с globalstorage +12:50❓есть-ли возможность помочь с разработкой metaschema (как контрибьютить в metarhia) +44:50❓вы довольны прогрессом по metaeducation и metahealth? +51:50❓про handy.ai +1:10:45❓планируется делать менеджер памяти? +1:19:25❓про metagui и фронтенд +1:29:00❓пробовали nocode инструменты для создания интерфейсов? (про идею развития пользовательских интерфейсов ) + +27 +0:00 start +0:55❓какие ошибки сервера кидать на клиент +6:00❓авторизация через jwt и два сервера +7:50 why jwt is bad for authentication +11:00 планы, конференции, +15:30 баг с исправлением node + +28 +0:00 новости +2:20❓почему metaschema вместо jsonscheme? и про metarhia +7:00❓как интегрировать свой проект с metarhia? (цель metarhia) +47:10❓последовательность действий для создания функциональности метархии для open sourse +1:00:00❓ссылки на созвоны по проектам metarhia education +1:02:40❓как писать документацию к библиотекам metarhia? +1:05:00❓ discussion горячая загрузка интерфейсов +1:11:00❓как под капотом работает async await? + +29 +0:00 новости +4:05 строительство метагорода +15:04❓ metalogin проблема пустых файлов +21:00❓impress создание стартера для каждого провайдера +23:50❓можно-ли нормально жить с микросервисами? +25:00❓как экспортировать окружение бизнес-логики c одного подхода(шина) на другой(редис)? +40:30❓git слишком часто делаю merge ( как пользоваться гитом) +1:04:00 обучение обучению, youtube лекции от сторонних людей +1:12:20❓review примера сервера на node +1:35:40❓избегание циклических зависимостей при импортах +1:50:00❓хранение бизнес логики в бд +2:01:20❓автоматическая генерация субтитров на английском к видео Тимура + +30 +0:00 новости +20:35❓noroutine issue syntax in thread +21:37 impress планы +30:20❓динамически создать эндпоинт rpc, создание эндпоинта запросом с клиента +37:33 пример подключения к стороннему сервиса для рассылки имейлов +42:31 new Date и throw exception +47:38 идея метапрограммирования +49:35 какого типа таблицы можно переносить в metarhia? (Интервальное дерево на триггерах, процедурах) +54:05 статьи по теме «Метапрограммирование» +56:30 про преподавание в KSE +59:00 задача по программированию и книга «структура и интерпретация компьютерных программ» +1:07:20 лекция по ФП Илья Кантор +1:12:35 пройти сертификации +1:13:34 видео, стримы, сообщество +1:16:40 про UI +1:21:40 notion, метавселенные +1:28:45 google и попытки нанять Тимура +1:34:04 про Дородичева +1:34:45 node, go, noroutine +1:40:35 стратегия выборта технологии +1:41:50 биндинг сложных кусков кода +1:44:35 развитие js и планируемые фичи +1:59:30 подменить функцию и вызвать ее внутри подменяемой + +31 +0:00 новости (дуэли, доклады, телевиденье, c#) +20:00 как ставить метархию? +21:50 почему нельзя принимать случайный код от клиента? (Защита, виды атак) +52:12 git и gitlab +54:50 ruby и node +58:35 на чем Тимур писал до node +59:00 actionScript coffeScript flash и javascript +1:07:40 notion +1:10:00 сколько тредов можно держать на одной машине (обзор сервисов для аренды железа) +1:42:28 почему Тимур не переедет а кремниевую долину +1:46:05 чем плох амазон +1:56:45 чем занимается Georg + +32 +0:00 новости +5:55 control flow из нескольких доменов, либов +30:10 impress как завершить сессию? +32:10 подсчет количества запросов от клиента +32:45 trump data antipattern +42:10 автомохдание конфигурации в impress +50:15 можно-ли запретить обращение к api из чужих приложений +51:45 можно-ли ограничить ресурсы, если обращение к api происходит из чужих приложений (ddos detection, error detection) +59:20 о дискуссии java vs node +1:07:20 сертификации, требования +1:10:55 как контрибьютить эффективнее + +33 +0:00 новости +9:55 начал учить c++, что делать дальше (как писать программы качественно) +41:30 процедурное программирование +44:00 создавать-ли при отсутствии сети полную копию бд в кеше браузера? +49:10 metacomponents и вопросы про манипулирование dom +1:01:40 как работать со схемами в metarhia +1:05:10 задача про бизнес логику +1:16:40 impress при запросе на api есть возможность узнать что в переменной PROCESS +1:42:10 доступ к файловой системе как на гугл драйве для клиента +1:47:00 на сколько часто получается просматривать issue в гитхабе +1:52:00 metaschema зачем тесты на преобразование в ts interface +1:55:30 proposal structs + +34 +0:00 новости +3:00 контрибьюты в метархию +9:00 разница между кешом и состоянием +13:00 про тестирование и поиск багов +26:05 передача сообщений между тредами защищена? +43:15 один из способов развиться как разработчик +47:00 про начинающих разработчиков, CTO, lead и выбор технологий +54:18 🦜 +56:30 metahealth +58:35 использование proxy как стейт-менеджер +1:03:55 log out, application firewall +1:06:13 discuss CORS +1:12:30 почему не используете map или filter, а только условия или for +1:15:50 как при написании программы понять что использовать, Class или function (и про стиль кода на конкретных примерах) +1:34:30 можно-ли сделать мультитенантным и подгружаемым определение схем помимо методов +1:39:40 как обойти ограничения по доступу некоторых ресурсов в России, Китае, США + +35 +0:00 новости +2:30 токены сессии через cryptoRandom, ядро безопастности, логгирование событий +12:45 концепция системы безопастности google и metarhia +17:20 система прав в linux, мандатная система +23:00 подключение сервера конфигурации +39:05 система отказоустойчивости +50:40 когда добавят nodoroutine в metarhia? +1:00:13 отношение к cookie +1:07:22 программа для кассовых сервисов +1:10:40 описание мультисерверной деструктуризированной сети с metarhiaми как нодами +1:15:40 контекст сессии +1:22:40 o cubernetes +1:33:02 issues impress, metaschema, metacom +1:47:38 какую информацию Тимур рекомендует хранить в контексте сессии +1:53:55 metacom +2:01:08 созвон по вопросам node.js + +36 +0:00 новости, преподавание студентам +9:30 примеры написания приложений по DDD +16:00 технология и развитие сообщества +18:30 проблемы nodered, corezoid, lowcode системы +22:45 про создание лекций для лоукодеров +24:30 опыт написания программ на corezoid +30:00 задача:система транзакций, трансфер денег +49:40 абстракции для построения блокировки на уровне сервера предприятия +50:30 концепция для выполнения нескольких транзакций одновременно +1:15:30 почему тяжело внедрить node в банковские системы +1:18:40 про node, java, c++, assembler, python, ruby +1:37:35 review PR в node +1:54:35 болезнь всех прикладных проектов +2:06:50 стоит-ли идти ребенку в ВУЗ на IT специальность, школа экономики (KSE) + +37 +0:00 поздравления +1:10 кто что сделал с помощью metarhia? +2:05 swayer, mol +6:25 KSE +9:25 коммуникационная платформа для оптимизации задач коммуникации внутри и вне бизнеса, handy.io +14:20 R&D компании на базе metarhia +21:00 финтех приложения на metarhia, контрибьюты в экосистему metarhia +26:40 стримы, metacom, serverless +32:35 добавляйте заметки о видео в комментарии +35:35 хочу завести канал на ютубе, как покрыть российскую аудиторию если я записываю видео на украинском +39:32 документация, примеры кода +42:45 основная задача swayer +44:50 startaps +53:00 соц. сети в описании под видео + +38 +1:30 Обновление курса программной инженерии +5:33 Создание юрлица для продуктовой разработки на Метархии +9:23 Примеры кода из обновленного открытого курса +31:58 Архитектура и масштабирование приложений на технологическом стеке Метархия +57:02 Про R&D для поддержки проектов и развития техстека Метархия +58:50 Организация сообщества Метархия +1:09:17 Кейсы внедрения Метархии +1:22:48 docker compose +1:26:40 streams +1:29:05 офисы для R&D, продукты +1:39:04 гуляйполис +1:47:10 проблемы продвижения метархии на проекте +1:58:00 IT рынок Германии +1:59:00 проблемы продвижения метархии на проекте + +39 +0:00 правила по структура еженедельных звонков +5:40 новости +41:30 новости по мультитенантности +48:40 unreal editory blueprint +55:30 отзыв о foxminded +1:05:55 возможности системы безопастности +1:38:48 распределенные чаты, кластеризация +1:45:20 метархия ищет CTO + +40 +0:00 подготовка новостей +2:45 новости (swayer, metaschema, книга, активность в сообществе) +23:12 база данных SQL, бизнес-логика в базе +46:05 статьи про базы данных на хабр +48:25 предложения по расширению metaschema +1:03:00 стримы + +41 +0:00 подготовка новостей +8:32 новости (swayer, impress, metaschema, metacom, metautil, книга, активность в сообществе) +41:30 пример grps сервера на метархии +44:20 написание бизнес-логики на агрегатных состояниях (OLAP, OLTP) +56:20 все про стартапы +1:44:15 балансировка ws подключением +1:48:40 режим для тестирования для работы на одном треде +1:53:20 скрытые возможности metarhia + +42 +0:00 намечание вопросов (metaschema, low-code, стримы) +7:52 low-code +1:16:00 таблицы состояний для стейт-машин +1:32:20 как скрыть репозиторий, создать организацию в гитхабе +1:35:30 что происходит в мире? +1:40:20 гуляйполис +1:41:45 как считать косты, если используешь metarhia + +43 +1:00 low-code дополнения +6:45 подготовка новостей +8:27 новости +16:38 лекции по metrahia +22:34 low-code какие еще функции, кроме перечисленных, нужны +31:30 как впечатления от контрибьюта в mdn +34:30 low-code events +44:50 новости от Georg +45:15 best speakers award +48:20 low-code +1:12:00 metaschema enumerable тип блокировать или нет +1:25:00 идея для low-code +1:30:00 документация +1:37:00 metacom, fingerprint, ip, geodata, web api, macaroons +1:48:00 пароли +1:58:30 война и политика + +44 +0:00 план звонка +6:04 новости +12:50 метрики для ноды working thread +34:45 metaschema, как использовать для внешних библиотек, пример кода metaforms +1:09:00 web 3.0 blockchain, cryptocurrency +2:02:30 стих "В ожидании варваров" + +45 +0:00 война, новости + +46 +0:00 новости, политический манифест метархии +7:07 интеграция blockchain c metarhia, ethereum, prisma +22:30 социальные сети нового типа +32:30 перемещение информации на сервера за границей +39:30 интернет в Германии +43:30 "unlimited" трафик в hesner +51:00 ddos и хакинг + +47 +0:00 подготовка новостей +11:10 новости +21:40 npm пакет, проблемы ddos +30:00 стартапы и группы в сообществе metarhia +31:20 нет-ли у кото-то опыта с JointJS? +33:00 о текущей ситуации +52:00 ликбез "какова ценность blockchain" +1:04:30 на чем будет писаться СУБД +1:14:40 globalstorage реляционные отношения +1:14:50 СУБД rust, многопоточность +1:36:00 магия, js, metarhia, python + +48 +0:00 новости +12:40 метагалера подробности +52:00 code review +1:17:20❓ как реализованы права в metarhia? +1:26:00❓ про "биос" - один из проектов метагалеры +1:37:00 про изучение немецкого +1:40:00❓ цель создания метагалеры + +49 +0:00 start +1:30 лендинги для продуктов метагалеры +6:35 книга "Метапрограммирование" +9:00❓вопросы о разработке metaschema +16:30❓нужна-ли возможность перекладывания sql данных в no sql +43:00 отличие open-source разработки от коммерческой +45:00❓metaschema +59:00 про конкуренцию +1:05:30❓вопросы по документации +1:23:45 как исправить звуковую петлю +1:27:00❓вступительня кампания в вузах украины без ЗНО +1:31:00 преподавание в KSE +1:41:00 олимпиады по программированию +1:55:40❓как учился программированию Тимур +1:56:30 про java +2:01:00 metaschema, препроцессор + +50 +0:00 новости +2:20 таймкоды и гит репозиторий со списком таймкодов для еженедельных видео +6:58 образовательный проект на metarhia +10:45 новости из Германии (1С, складские системы учета товаров, автоматизация производств, бизнеса) +29:25 кто выиграл на конкурсе "Лучший IT спикер года"? +31:00 текущая ситуация по развитию школ разных отраслей, Канторович, Глушков, Лебедев +42:28 моделирование бизнес-процессов при помощи low-code +1:07:01 форма "Заказ товара", обсуждение +1:32:30 пример такой формы в 1C +1:50:43 на каждом блоке должен быть вариант неуспешности? +1:58:05 разработка мобильной игры в браузере +1:59:45 тестирование google meet \ No newline at end of file From 3a36850575294f3400753f7dc59fac233983b2f6 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Mon, 11 Apr 2022 07:40:10 -0400 Subject: [PATCH 099/308] Add blocks to save formatting --- Archive/WeeklyCall.md | 106 ++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 103 insertions(+), 3 deletions(-) diff --git a/Archive/WeeklyCall.md b/Archive/WeeklyCall.md index bd06abe..f00821d 100644 --- a/Archive/WeeklyCall.md +++ b/Archive/WeeklyCall.md @@ -1,6 +1,7 @@ # Metarhia community weekly call index 1 +``` 0:00 новости (сертификации, metarhia, lowcode) 14:40 зачем выбирать JAVA на новый проект в 2021? 16:15 V8 waitAsync @@ -9,9 +10,11 @@ 40:18 как обучать ребенка 6 лет? 55:05 о metarhia 1:44:40 сколько будут стоить специалисты metarhia стека -1:50:00 зависимости postgresql, metarhia +1:50:00 зависимости postgresql, metarhia +``` 2 +``` 0:00 start 0:36 ❓можно-ли вынести поиск скриптов в файлах metarhia в отдельный класс? 9:55 ❓миллион вебсокетов на двух виртуалках @@ -32,8 +35,10 @@ 1:23:00❓есть-ли аналог swagger api для impress в метархии? 1:28:48❓есть-ли протокол для стриминга в metacom 1:34:16❓Тимур, почему вы плохо относитесь к криптовалютам? +``` 3 +``` 0:00 start 0:30❓можно-ли писать SSR SPA с бекендом на metarhia? 9:48❓как написать свой домен? @@ -53,8 +58,10 @@ 1:58:15❓открытость валидационных схем на клиенте является уязвимостью? 1:59:17❓планируется-ли поставлять версию TLS node вместе c metarhia? 2:03:13 когда записи стримов метархии станут публичными? +``` 4 +``` 0:00 start 0:20❓какие могут быть проблемы/преимущества с точкой входа над несколькими структурами данных? (graphQl) 9:30❓можно-ли комбинировать подходы на бекенде? @@ -74,8 +81,10 @@ 2:00:20❓планируется-ли поддержка многоязычности? 2:01:29❓проблема масштабируемости meteor и схожесть в идеях с metarhia 2:05:09❓сертификация metarhia +``` 5 +``` 0:00 start 0:15 race condition 10:40 виды race condition @@ -87,8 +96,10 @@ 1:58:10❓есть-ли в metasql pgpromise работа с файлами sql, prepared spacements на базе сравнения запросов с ранними 2:05:35❓вы пробовали cloudflare workers? 2:07:23❓мнение по поводу nodered +``` 6 +``` 0:00 start 0:10❓часто пишу if в коде, при изучении автоматного программирования есть нехватка примеров кода 5:53❓главная проблема nest @@ -106,8 +117,10 @@ 1:05:42❓сценарии ответов на виды кибератак 1:18:44❓пример кода для игр на node для метархии 1:21:34❓версионирование бизнес модели +``` 7 +``` 0:00 start 0:55❓как метархия будет работать с микросервисами и сессиями 7:00❓как писать наследование без классов и интерфейсов? @@ -125,8 +138,10 @@ 2:05:00❓система нагрузочного тестирования в metarhia 2:06:40❓как происходит горячая перезагрузка? 2:08:17❓приложения на metarhia и на другой технологии для сравнения производительности +``` 8 +``` 0:00 про виды утечек памяти 10:54❓чем отличается hip от stack 16:20❓легковесный и тяжеловесный сборщики мусора @@ -136,8 +151,10 @@ 59:12❓память в nodejs, metarhia 1:10:40❓как работать с use case? 1:42:05❓ошибка при ограничении прав в системе прав +``` 9 +``` 0:00 start 0:28❓client в metacom будет рефакториться? 6:00❓пример отправки event от user к user @@ -147,8 +164,10 @@ 40:00 про субд, globalstorage 1:02:15❓будет-ли возможность подключить другую библиотеку для web sockets 1:07:10❓какой нужен уровень для написания продуктов на базе metarhia? +``` 10 +``` 0:00 start 0:20 новости metarhia 1:40 почему null - это плохо? @@ -158,8 +177,10 @@ 1:36:00❓банки и web socket 1:47:43❓оценка кода обертки http(jwt, params) для rpc 1:51:55❓вопрос по class Procedure в impress +``` 11 +``` 0:00 start 1:00❓как не забыть то - что выучил? 11:00❓как заинтересовывать детей в программировании? @@ -173,16 +194,20 @@ 1:47:40❓globalstorage и сложности 1:55:05❓обновления библиотек metarhia без changelog 2:04:40❓пакет для ssh связи +``` 12 +``` 0:00 новости 11:35❓заложен-ли канал связи между инстансами метархии между разными серверами 13:25❓можно-ли будет использовать cursor в плагине для crud? 37:58❓пример генерации форм на клиенте 47:00 nodered, bpmn 1:39:30❓ почему нужно начинать с grasp, а не с solid? +``` 13 +``` 0:00 start 1:00❓когда можно использовать require в циклах? 12:42❓код class Cache в impress @@ -193,16 +218,20 @@ 1:21:30❓почему nocode системы пытаются скопировать отвратительные паттерны друг у друга? 1:31:00 нейросети и код 1:53:20❓кто будет на holy js? +``` 14 +``` 0:00 start 0:30❓example logout пользователя (работа metarhia c контекстом) 41:50❓для чего используется класс Resourses в impress 50:35❓про загрузку данных разных форматов, планы metarhia, системные и прикладные программисты 1:00:00❓про планировщики в линуксе, metarhiа 1:48:52❓cursor с бд +``` 15 +``` 0:00 планы и новости 11:45❓вычислимые поля в metaschema (discuss) 30:02❓отдельный сервис для управления нагрузками @@ -219,8 +248,10 @@ 1:53:20❓проблемы typescript 1:56:00❓стримы в node 2:06:18❓вопрос по коду metaschema +``` 16 +``` 0:00 новости metasqls 8:00 новости metacom 22:00 медицинская система, украинские гос. сайты и анархия @@ -233,11 +264,15 @@ 1:47:05❓что вы думаете о Илоне Маске? 1:51:43❓какой процент успешных студентов у Тимура? 1:55:00❓почему на галерах плохо работать? +``` 17 +``` не существует +``` 18 +``` 0:00 новости и изменения в стеке metarhia 13:00 про npm пакеты и зависимости 27:40 нововведения github @@ -247,8 +282,10 @@ 1:00:00❓проблемы производительности и абстракций 1:36:20❓использование google cloud 1:37:00❓про обучение программированию, вопросы по технологиям и тд +``` 19 +``` 0:00 start 1:35 автоматное программирование 46:24 конец лагов @@ -258,8 +295,10 @@ 1:19:40 пелевин, книги 1:36:00❓где лучше хранить изображения? (бд/файловая система) 1:49:35❓мультиязычность в образовательном проекте +``` 20 +``` 0:00 start 0:01 обучение, города, люди 4:00❓ metacom обновления, планы @@ -270,8 +309,10 @@ 1:46:00❓автоматное программирование 1:52:50 книга "Модели данных" 2:00:00 антипаттерны +``` 21 +``` 0:00 start 0:01 обновление библиотек metarhia 5:00 баланс тредов round robin @@ -289,8 +330,10 @@ 1:42:10❓как банки использовали nodered 1:44:47❓почему Тимур решил выбрать js? 2:04:30❓мысли про mvp из говна и палок и выкуп стартапов большими компаниями? +``` 22 +``` 0:00 start 0:55 новости платформы 9:56 диаграмма для metahealth, metaclass @@ -303,8 +346,10 @@ 1:28:45❓как получать 30к в месяц? 1:57:35❓в какую сторону мыслить в придумывании нового 2:02:50❓прикладная задача по передаче данных +``` 23 +``` 0:00 новости библиотек 8:04❓репозиторий для примера написания бизнес-логики 11:42❓про metaforms @@ -313,8 +358,10 @@ 1:07:00❓изоляция пользователей внутри приложения по разным бд 1:22:20❓где и как можно применять автоматное программирование 1:30:00 искуственный интеллект, node, js +``` 24 +``` 0:00 новости технологического стека 9:51❓вопросы после попытки переноса проекта на metarhia 41:00❓file system watcher + sandboxind для подгрузки архива с исходным кодом @@ -327,16 +374,20 @@ 1:36:15❓в какой последовательности смотреть лекции Тимура 1:38:20❓подскажите макбук для покупки 1:54:10❓тестирование апи с postman, http, безопастность +``` 25 +``` 0:00 start 0:08 баг в performance hook в node 4:15 финансирование образовательных проектов 7:06 performance hook поиск бага 52:10❓прогресс с миграциями 56:40 фикс багa metacom +``` 26 +``` 0:00 новости metacom, migrations, балансировщик на базе event loop utilization, issue в библиотеках с тегами hacktoberfest, metaedu 9:10❓что с globalstorage 12:50❓есть-ли возможность помочь с разработкой metaschema (как контрибьютить в metarhia) @@ -344,17 +395,21 @@ 51:50❓про handy.ai 1:10:45❓планируется делать менеджер памяти? 1:19:25❓про metagui и фронтенд -1:29:00❓пробовали nocode инструменты для создания интерфейсов? (про идею развития пользовательских интерфейсов ) +1:29:00❓пробовали nocode инструменты для создания интерфейсов? (про идею развития пользовательских интерфейсов) +``` 27 +``` 0:00 start 0:55❓какие ошибки сервера кидать на клиент 6:00❓авторизация через jwt и два сервера 7:50 why jwt is bad for authentication 11:00 планы, конференции, 15:30 баг с исправлением node +``` 28 +``` 0:00 новости 2:20❓почему metaschema вместо jsonscheme? и про metarhia 7:00❓как интегрировать свой проект с metarhia? (цель metarhia) @@ -363,8 +418,10 @@ 1:02:40❓как писать документацию к библиотекам metarhia? 1:05:00❓ discussion горячая загрузка интерфейсов 1:11:00❓как под капотом работает async await? +``` 29 +``` 0:00 новости 4:05 строительство метагорода 15:04❓ metalogin проблема пустых файлов @@ -377,8 +434,10 @@ 1:35:40❓избегание циклических зависимостей при импортах 1:50:00❓хранение бизнес логики в бд 2:01:20❓автоматическая генерация субтитров на английском к видео Тимура +``` 30 +``` 0:00 новости 20:35❓noroutine issue syntax in thread 21:37 impress планы @@ -402,8 +461,10 @@ 1:41:50 биндинг сложных кусков кода 1:44:35 развитие js и планируемые фичи 1:59:30 подменить функцию и вызвать ее внутри подменяемой +``` 31 +``` 0:00 новости (дуэли, доклады, телевиденье, c#) 20:00 как ставить метархию? 21:50 почему нельзя принимать случайный код от клиента? (Защита, виды атак) @@ -416,8 +477,10 @@ 1:42:28 почему Тимур не переедет а кремниевую долину 1:46:05 чем плох амазон 1:56:45 чем занимается Georg +``` 32 +``` 0:00 новости 5:55 control flow из нескольких доменов, либов 30:10 impress как завершить сессию? @@ -429,8 +492,10 @@ 59:20 о дискуссии java vs node 1:07:20 сертификации, требования 1:10:55 как контрибьютить эффективнее +``` 33 +``` 0:00 новости 9:55 начал учить c++, что делать дальше (как писать программы качественно) 41:30 процедурное программирование @@ -443,8 +508,10 @@ 1:47:00 на сколько часто получается просматривать issue в гитхабе 1:52:00 metaschema зачем тесты на преобразование в ts interface 1:55:30 proposal structs +``` 34 +``` 0:00 новости 3:00 контрибьюты в метархию 9:00 разница между кешом и состоянием @@ -461,8 +528,10 @@ 1:15:50 как при написании программы понять что использовать, Class или function (и про стиль кода на конкретных примерах) 1:34:30 можно-ли сделать мультитенантным и подгружаемым определение схем помимо методов 1:39:40 как обойти ограничения по доступу некоторых ресурсов в России, Китае, США +``` 35 +``` 0:00 новости 2:30 токены сессии через cryptoRandom, ядро безопастности, логгирование событий 12:45 концепция системы безопастности google и metarhia @@ -479,8 +548,10 @@ 1:47:38 какую информацию Тимур рекомендует хранить в контексте сессии 1:53:55 metacom 2:01:08 созвон по вопросам node.js +``` 36 +``` 0:00 новости, преподавание студентам 9:30 примеры написания приложений по DDD 16:00 технология и развитие сообщества @@ -495,8 +566,10 @@ 1:37:35 review PR в node 1:54:35 болезнь всех прикладных проектов 2:06:50 стоит-ли идти ребенку в ВУЗ на IT специальность, школа экономики (KSE) +``` 37 +``` 0:00 поздравления 1:10 кто что сделал с помощью metarhia? 2:05 swayer, mol @@ -511,8 +584,10 @@ 42:45 основная задача swayer 44:50 startaps 53:00 соц. сети в описании под видео +``` 38 +``` 1:30 Обновление курса программной инженерии 5:33 Создание юрлица для продуктовой разработки на Метархии 9:23 Примеры кода из обновленного открытого курса @@ -527,8 +602,10 @@ 1:47:10 проблемы продвижения метархии на проекте 1:58:00 IT рынок Германии 1:59:00 проблемы продвижения метархии на проекте +``` 39 +``` 0:00 правила по структура еженедельных звонков 5:40 новости 41:30 новости по мультитенантности @@ -537,16 +614,20 @@ 1:05:55 возможности системы безопастности 1:38:48 распределенные чаты, кластеризация 1:45:20 метархия ищет CTO +``` 40 +``` 0:00 подготовка новостей 2:45 новости (swayer, metaschema, книга, активность в сообществе) 23:12 база данных SQL, бизнес-логика в базе 46:05 статьи про базы данных на хабр 48:25 предложения по расширению metaschema 1:03:00 стримы +``` 41 +``` 0:00 подготовка новостей 8:32 новости (swayer, impress, metaschema, metacom, metautil, книга, активность в сообществе) 41:30 пример grps сервера на метархии @@ -555,8 +636,10 @@ 1:44:15 балансировка ws подключением 1:48:40 режим для тестирования для работы на одном треде 1:53:20 скрытые возможности metarhia +``` 42 +``` 0:00 намечание вопросов (metaschema, low-code, стримы) 7:52 low-code 1:16:00 таблицы состояний для стейт-машин @@ -564,8 +647,10 @@ 1:35:30 что происходит в мире? 1:40:20 гуляйполис 1:41:45 как считать косты, если используешь metarhia +``` 43 +``` 1:00 low-code дополнения 6:45 подготовка новостей 8:27 новости @@ -582,19 +667,25 @@ 1:37:00 metacom, fingerprint, ip, geodata, web api, macaroons 1:48:00 пароли 1:58:30 война и политика +``` 44 +``` 0:00 план звонка 6:04 новости 12:50 метрики для ноды working thread 34:45 metaschema, как использовать для внешних библиотек, пример кода metaforms 1:09:00 web 3.0 blockchain, cryptocurrency 2:02:30 стих "В ожидании варваров" +``` 45 +``` 0:00 война, новости +``` 46 +``` 0:00 новости, политический манифест метархии 7:07 интеграция blockchain c metarhia, ethereum, prisma 22:30 социальные сети нового типа @@ -602,8 +693,10 @@ 39:30 интернет в Германии 43:30 "unlimited" трафик в hesner 51:00 ddos и хакинг +``` 47 +``` 0:00 подготовка новостей 11:10 новости 21:40 npm пакет, проблемы ddos @@ -615,8 +708,10 @@ 1:14:40 globalstorage реляционные отношения 1:14:50 СУБД rust, многопоточность 1:36:00 магия, js, metarhia, python +``` 48 +``` 0:00 новости 12:40 метагалера подробности 52:00 code review @@ -624,8 +719,10 @@ 1:26:00❓ про "биос" - один из проектов метагалеры 1:37:00 про изучение немецкого 1:40:00❓ цель создания метагалеры +``` 49 +``` 0:00 start 1:30 лендинги для продуктов метагалеры 6:35 книга "Метапрограммирование" @@ -642,8 +739,10 @@ 1:55:40❓как учился программированию Тимур 1:56:30 про java 2:01:00 metaschema, препроцессор +``` 50 +``` 0:00 новости 2:20 таймкоды и гит репозиторий со списком таймкодов для еженедельных видео 6:58 образовательный проект на metarhia @@ -655,4 +754,5 @@ 1:32:30 пример такой формы в 1C 1:50:43 на каждом блоке должен быть вариант неуспешности? 1:58:05 разработка мобильной игры в браузере -1:59:45 тестирование google meet \ No newline at end of file +1:59:45 тестирование google meet +``` From 9d5f94ce575517f289a2bb67b00c0d6597e3910a Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Mon, 11 Apr 2022 07:41:49 -0400 Subject: [PATCH 100/308] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index dc3adb4..e1187a0 100644 --- a/README.md +++ b/README.md @@ -3,7 +3,7 @@ - [Индекс каналов и групп сообщества Метархия](Links.md) - [Индекс докладов на конференциях](Courses/Talks.md) - [Индекс практических заданий](Practice/Index.md) -- [Созвонов сообщества](Archive/WeeklyCall.md) +- [Индекс созвонов сообщества](Archive/WeeklyCall.md) ## Последовательная программа From afd1088b0726fa86a2cb35df1bf1dc3e9eec7ba6 Mon Sep 17 00:00:00 2001 From: Anton Telichenko Date: Sat, 23 Apr 2022 17:27:05 +0300 Subject: [PATCH 101/308] feat: added timecodes to 52 call --- Archive/WeeklyCall.md | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/Archive/WeeklyCall.md b/Archive/WeeklyCall.md index f00821d..6b44175 100644 --- a/Archive/WeeklyCall.md +++ b/Archive/WeeklyCall.md @@ -756,3 +756,23 @@ 1:58:05 разработка мобильной игры в браузере 1:59:45 тестирование google meet ``` + +51 +``` +не существует +``` + +52 +``` +2:55 система безопастности для npm модулей +13:04 вещи, которых не хватает в metarhia +16:32 конференция metarhia, ютуб каналы +17:44 low code с помощью md файлов +55:45 сети Петри +1:01:15 о статье Дубилета +1:31:44 application firewall +1:33:10 после последнего обновления impress все ошибки на сервере возвращаются как 500 +1:36:10 менторство +1:43:10 куда можно присылать вопросы в текстовом виде? +1:57:20 добавления резервирования к схеме +``` From 210a754ec343b171774d7218f215fda7e002ec66 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Mon, 2 May 2022 04:49:34 -0400 Subject: [PATCH 102/308] Add dates --- Archive/WeeklyCall.md | 110 +++++++++++++++++++----------------------- 1 file changed, 50 insertions(+), 60 deletions(-) diff --git a/Archive/WeeklyCall.md b/Archive/WeeklyCall.md index 6b44175..d932a39 100644 --- a/Archive/WeeklyCall.md +++ b/Archive/WeeklyCall.md @@ -1,6 +1,6 @@ # Metarhia community weekly call index -1 +## Выпуск №1 (2021-04-17) ``` 0:00 новости (сертификации, metarhia, lowcode) 14:40 зачем выбирать JAVA на новый проект в 2021? @@ -13,7 +13,7 @@ 1:50:00 зависимости postgresql, metarhia ``` -2 +## Выпуск №2 (2021-04-24) ``` 0:00 start 0:36 ❓можно-ли вынести поиск скриптов в файлах metarhia в отдельный класс? @@ -37,7 +37,7 @@ 1:34:16❓Тимур, почему вы плохо относитесь к криптовалютам? ``` -3 +## Выпуск №3 (2021-05-01) ``` 0:00 start 0:30❓можно-ли писать SSR SPA с бекендом на metarhia? @@ -60,7 +60,7 @@ 2:03:13 когда записи стримов метархии станут публичными? ``` -4 +## Выпуск №4 (2021-05-08) ``` 0:00 start 0:20❓какие могут быть проблемы/преимущества с точкой входа над несколькими структурами данных? (graphQl) @@ -83,7 +83,7 @@ 2:05:09❓сертификация metarhia ``` -5 +## Выпуск №5 (2021-05-15) ``` 0:00 start 0:15 race condition @@ -98,7 +98,7 @@ 2:07:23❓мнение по поводу nodered ``` -6 +## Выпуск №6 (2021-05-22) ``` 0:00 start 0:10❓часто пишу if в коде, при изучении автоматного программирования есть нехватка примеров кода @@ -119,7 +119,7 @@ 1:21:34❓версионирование бизнес модели ``` -7 +## Выпуск №7 (2021-05-29) ``` 0:00 start 0:55❓как метархия будет работать с микросервисами и сессиями @@ -140,7 +140,7 @@ 2:08:17❓приложения на metarhia и на другой технологии для сравнения производительности ``` -8 +## Выпуск №8 (2021-06-12) ``` 0:00 про виды утечек памяти 10:54❓чем отличается hip от stack @@ -153,7 +153,7 @@ 1:42:05❓ошибка при ограничении прав в системе прав ``` -9 +## Выпуск №9 (2021-06-19) ``` 0:00 start 0:28❓client в metacom будет рефакториться? @@ -166,7 +166,7 @@ 1:07:10❓какой нужен уровень для написания продуктов на базе metarhia? ``` -10 +## Выпуск №10 (2021-06-26) ``` 0:00 start 0:20 новости metarhia @@ -179,7 +179,7 @@ 1:51:55❓вопрос по class Procedure в impress ``` -11 +## Выпуск №11 (2021-07-03) ``` 0:00 start 1:00❓как не забыть то - что выучил? @@ -196,7 +196,7 @@ 2:04:40❓пакет для ssh связи ``` -12 +## Выпуск №12 (2021-07-10) ``` 0:00 новости 11:35❓заложен-ли канал связи между инстансами метархии между разными серверами @@ -206,7 +206,7 @@ 1:39:30❓ почему нужно начинать с grasp, а не с solid? ``` -13 +## Выпуск №13 (2021-07-17) ``` 0:00 start 1:00❓когда можно использовать require в циклах? @@ -220,7 +220,7 @@ 1:53:20❓кто будет на holy js? ``` -14 +## Выпуск №14 (2021-07-24) ``` 0:00 start 0:30❓example logout пользователя (работа metarhia c контекстом) @@ -230,7 +230,7 @@ 1:48:52❓cursor с бд ``` -15 +## Выпуск №15 (2021-07-31) ``` 0:00 планы и новости 11:45❓вычислимые поля в metaschema (discuss) @@ -250,7 +250,7 @@ 2:06:18❓вопрос по коду metaschema ``` -16 +## Выпуск №16 (2021-08-07) ``` 0:00 новости metasqls 8:00 новости metacom @@ -266,12 +266,7 @@ 1:55:00❓почему на галерах плохо работать? ``` -17 -``` -не существует -``` - -18 +## Выпуск №18 (2021-08-21) ``` 0:00 новости и изменения в стеке metarhia 13:00 про npm пакеты и зависимости @@ -284,7 +279,7 @@ 1:37:00❓про обучение программированию, вопросы по технологиям и тд ``` -19 +## Выпуск №19 (2021-08-28) ``` 0:00 start 1:35 автоматное программирование @@ -297,7 +292,7 @@ 1:49:35❓мультиязычность в образовательном проекте ``` -20 +## Выпуск №20 (2021-09-04) ``` 0:00 start 0:01 обучение, города, люди @@ -311,7 +306,7 @@ 2:00:00 антипаттерны ``` -21 +## Выпуск №21 (2021-09-11) ``` 0:00 start 0:01 обновление библиотек metarhia @@ -332,7 +327,7 @@ 2:04:30❓мысли про mvp из говна и палок и выкуп стартапов большими компаниями? ``` -22 +## Выпуск №22 (2021-09-18) ``` 0:00 start 0:55 новости платформы @@ -348,7 +343,7 @@ 2:02:50❓прикладная задача по передаче данных ``` -23 +## Выпуск №23 (2021-09-25) ``` 0:00 новости библиотек 8:04❓репозиторий для примера написания бизнес-логики @@ -360,7 +355,7 @@ 1:30:00 искуственный интеллект, node, js ``` -24 +## Выпуск №24 (2021-10-02) ``` 0:00 новости технологического стека 9:51❓вопросы после попытки переноса проекта на metarhia @@ -376,7 +371,7 @@ 1:54:10❓тестирование апи с postman, http, безопастность ``` -25 +## Выпуск №25 (2021-10-09) ``` 0:00 start 0:08 баг в performance hook в node @@ -386,7 +381,7 @@ 56:40 фикс багa metacom ``` -26 +## Выпуск №26 (2021-10-16) ``` 0:00 новости metacom, migrations, балансировщик на базе event loop utilization, issue в библиотеках с тегами hacktoberfest, metaedu 9:10❓что с globalstorage @@ -398,7 +393,7 @@ 1:29:00❓пробовали nocode инструменты для создания интерфейсов? (про идею развития пользовательских интерфейсов) ``` -27 +## Выпуск №27 (2021-10-23) ``` 0:00 start 0:55❓какие ошибки сервера кидать на клиент @@ -408,7 +403,7 @@ 15:30 баг с исправлением node ``` -28 +## Выпуск №28 (2021-10-30) ``` 0:00 новости 2:20❓почему metaschema вместо jsonscheme? и про metarhia @@ -420,7 +415,7 @@ 1:11:00❓как под капотом работает async await? ``` -29 +## Выпуск №29 (2021-11-06) ``` 0:00 новости 4:05 строительство метагорода @@ -436,7 +431,7 @@ 2:01:20❓автоматическая генерация субтитров на английском к видео Тимура ``` -30 +## Выпуск №30 (2021-11-13) ``` 0:00 новости 20:35❓noroutine issue syntax in thread @@ -463,7 +458,7 @@ 1:59:30 подменить функцию и вызвать ее внутри подменяемой ``` -31 +## Выпуск №31 (2021-11-20) ``` 0:00 новости (дуэли, доклады, телевиденье, c#) 20:00 как ставить метархию? @@ -479,7 +474,7 @@ 1:56:45 чем занимается Georg ``` -32 +## Выпуск №32 (2021-11-27) ``` 0:00 новости 5:55 control flow из нескольких доменов, либов @@ -494,7 +489,7 @@ 1:10:55 как контрибьютить эффективнее ``` -33 +## Выпуск №33 (2021-12-04) ``` 0:00 новости 9:55 начал учить c++, что делать дальше (как писать программы качественно) @@ -510,7 +505,7 @@ 1:55:30 proposal structs ``` -34 +## Выпуск №34 (2021-12-11) ``` 0:00 новости 3:00 контрибьюты в метархию @@ -530,7 +525,7 @@ 1:39:40 как обойти ограничения по доступу некоторых ресурсов в России, Китае, США ``` -35 +## Выпуск №35 (2021-12-18) ``` 0:00 новости 2:30 токены сессии через cryptoRandom, ядро безопастности, логгирование событий @@ -550,7 +545,7 @@ 2:01:08 созвон по вопросам node.js ``` -36 +## Выпуск №36 (2021-12-25) ``` 0:00 новости, преподавание студентам 9:30 примеры написания приложений по DDD @@ -568,7 +563,7 @@ 2:06:50 стоит-ли идти ребенку в ВУЗ на IT специальность, школа экономики (KSE) ``` -37 +## Выпуск №37 ``` 0:00 поздравления 1:10 кто что сделал с помощью metarhia? @@ -586,7 +581,7 @@ 53:00 соц. сети в описании под видео ``` -38 +## Выпуск №38 ``` 1:30 Обновление курса программной инженерии 5:33 Создание юрлица для продуктовой разработки на Метархии @@ -604,7 +599,7 @@ 1:59:00 проблемы продвижения метархии на проекте ``` -39 +## Выпуск №39 (2022-01-15) ``` 0:00 правила по структура еженедельных звонков 5:40 новости @@ -616,7 +611,7 @@ 1:45:20 метархия ищет CTO ``` -40 +## Выпуск №40 (2022-01-22) ``` 0:00 подготовка новостей 2:45 новости (swayer, metaschema, книга, активность в сообществе) @@ -626,7 +621,7 @@ 1:03:00 стримы ``` -41 +## Выпуск №41 (2022-01-29) ``` 0:00 подготовка новостей 8:32 новости (swayer, impress, metaschema, metacom, metautil, книга, активность в сообществе) @@ -638,7 +633,7 @@ 1:53:20 скрытые возможности metarhia ``` -42 +## Выпуск №42 (2022-02-05) ``` 0:00 намечание вопросов (metaschema, low-code, стримы) 7:52 low-code @@ -649,7 +644,7 @@ 1:41:45 как считать косты, если используешь metarhia ``` -43 +## Выпуск №43 (2022-02-12) ``` 1:00 low-code дополнения 6:45 подготовка новостей @@ -669,7 +664,7 @@ 1:58:30 война и политика ``` -44 +## Выпуск №44 (2022-02-19) ``` 0:00 план звонка 6:04 новости @@ -679,12 +674,12 @@ 2:02:30 стих "В ожидании варваров" ``` -45 +## Выпуск №45 (2022-02-26) ``` 0:00 война, новости ``` -46 +## Выпуск №46 (2022-03-12) ``` 0:00 новости, политический манифест метархии 7:07 интеграция blockchain c metarhia, ethereum, prisma @@ -695,7 +690,7 @@ 51:00 ddos и хакинг ``` -47 +## Выпуск №47 (2022-03-19) ``` 0:00 подготовка новостей 11:10 новости @@ -710,7 +705,7 @@ 1:36:00 магия, js, metarhia, python ``` -48 +## Выпуск №48 (2022-03-26) ``` 0:00 новости 12:40 метагалера подробности @@ -721,7 +716,7 @@ 1:40:00❓ цель создания метагалеры ``` -49 +## Выпуск №49 (2022-04-02) ``` 0:00 start 1:30 лендинги для продуктов метагалеры @@ -741,7 +736,7 @@ 2:01:00 metaschema, препроцессор ``` -50 +## Выпуск №50 (2022-04-09) ``` 0:00 новости 2:20 таймкоды и гит репозиторий со списком таймкодов для еженедельных видео @@ -757,12 +752,7 @@ 1:59:45 тестирование google meet ``` -51 -``` -не существует -``` - -52 +## Выпуск №52 (2022-04-23) ``` 2:55 система безопастности для npm модулей 13:04 вещи, которых не хватает в metarhia From 46250d1ff29c08fff6630bc1919c378befed77c4 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Mon, 2 May 2022 04:52:10 -0400 Subject: [PATCH 103/308] Formatting: prevent scroll --- Archive/WeeklyCall.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Archive/WeeklyCall.md b/Archive/WeeklyCall.md index d932a39..fd3cc31 100644 --- a/Archive/WeeklyCall.md +++ b/Archive/WeeklyCall.md @@ -383,7 +383,7 @@ ## Выпуск №26 (2021-10-16) ``` -0:00 новости metacom, migrations, балансировщик на базе event loop utilization, issue в библиотеках с тегами hacktoberfest, metaedu +0:00 новости metacom, migrations, балансировщик на event loop utilization, issue в библиотеках с тегами hacktoberfest, metaedu 9:10❓что с globalstorage 12:50❓есть-ли возможность помочь с разработкой metaschema (как контрибьютить в metarhia) 44:50❓вы довольны прогрессом по metaeducation и metahealth? @@ -520,7 +520,7 @@ 1:03:55 log out, application firewall 1:06:13 discuss CORS 1:12:30 почему не используете map или filter, а только условия или for -1:15:50 как при написании программы понять что использовать, Class или function (и про стиль кода на конкретных примерах) +1:15:50 как при написании программы понять что использовать, Class или function и про стиль кода на конкретных примерах 1:34:30 можно-ли сделать мультитенантным и подгружаемым определение схем помимо методов 1:39:40 как обойти ограничения по доступу некоторых ресурсов в России, Китае, США ``` From 39d8d402f81030d074c4b56761a0b9e41367e9ad Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Mon, 2 May 2022 04:56:05 -0400 Subject: [PATCH 104/308] Question formatting --- Archive/WeeklyCall.md | 450 +++++++++++++++++++++--------------------- 1 file changed, 225 insertions(+), 225 deletions(-) diff --git a/Archive/WeeklyCall.md b/Archive/WeeklyCall.md index fd3cc31..3f9ec58 100644 --- a/Archive/WeeklyCall.md +++ b/Archive/WeeklyCall.md @@ -16,71 +16,71 @@ ## Выпуск №2 (2021-04-24) ``` 0:00 start -0:36 ❓можно-ли вынести поиск скриптов в файлах metarhia в отдельный класс? -9:55 ❓миллион вебсокетов на двух виртуалках -18:48❓планируется-ли развивать репозиторий консоль в metarhia? +0:36 ❓ можно-ли вынести поиск скриптов в файлах metarhia в отдельный класс? +9:55 ❓ миллион вебсокетов на двух виртуалках +18:48 ❓ планируется-ли развивать репозиторий консоль в metarhia? 31:13 противоречия между дескриптивными и нормативными моделями -32:15❓в чем идея консоли? -33:28❓в чем главное преимущество stateful подхода? -34:47❓можно-ли писать чистый код на express? +32:15 ❓ в чем идея консоли? +33:28 ❓ в чем главное преимущество stateful подхода? +34:47 ❓ можно-ли писать чистый код на express? 36:44 примеры кода для детей -39:26❓построить видео-чат на metarhia +39:26 ❓ построить видео-чат на metarhia 44:18 лекция о том, как работают client session взаимодействия -52:02❓важна-ли скорость работы web-sockets? +52:02 ❓ важна-ли скорость работы web-sockets? 59:43 задача метархии - api за день 1:09:18 примеры вопросов -1:08:40❓планируется-ли доработка курса по базам данных? -1:12:49❓на node нельзя писать корпоративные приложения, потому-что там нет интерфейсов, что ответить? -1:14:52❓как строить бенчмарки? -1:23:00❓есть-ли аналог swagger api для impress в метархии? -1:28:48❓есть-ли протокол для стриминга в metacom -1:34:16❓Тимур, почему вы плохо относитесь к криптовалютам? +1:08:40 ❓ планируется-ли доработка курса по базам данных? +1:12:49 ❓ на node нельзя писать корпоративные приложения, потому-что там нет интерфейсов, что ответить? +1:14:52 ❓ как строить бенчмарки? +1:23:00 ❓ есть-ли аналог swagger api для impress в метархии? +1:28:48 ❓ есть-ли протокол для стриминга в metacom +1:34:16 ❓ Тимур, почему вы плохо относитесь к криптовалютам? ``` ## Выпуск №3 (2021-05-01) ``` 0:00 start -0:30❓можно-ли писать SSR SPA с бекендом на metarhia? -9:48❓как написать свой домен? +0:30 ❓ можно-ли писать SSR SPA с бекендом на metarhia? +9:48 ❓ как написать свой домен? 12:45 лекции для понимания как моделировать предметную область при помощи структур данных 13:55 Prisma 18:47 пример работы metaschema 37:47 где используются графы? как использовать графы в соц. сетях 39:52 где на сервере хранить большое количество картинок -45:52❓micro/macro tasks в браузере и node.js (материалы) -56:22❓можно-ли выложить в телеграм-канал ссылку на торрент на книгу you don't know js? -1:03:50❓будут-ли uml-схемы в документации metarhia -1:22:17❓почему задачи CICD, мониторинга, управления не автоматизированы через machine learning -1:29:06❓можно-ли валидировать приходящие с клиента данных до попадания в javascript? -1:37:04❓в репозитории common находятся оптимизированные методы js? -1:43:15❓d.ts файлы в metarhia нужны для описания интерфейсов? -1:49:25❓в видео "сессии в metarhia" к каждому юзеру будет подвязываться объект контекст, что в нем нужно хранить? -1:58:15❓открытость валидационных схем на клиенте является уязвимостью? -1:59:17❓планируется-ли поставлять версию TLS node вместе c metarhia? +45:52 ❓ micro/macro tasks в браузере и node.js (материалы) +56:22 ❓ можно-ли выложить в телеграм-канал ссылку на торрент на книгу you don't know js? +1:03:50 ❓ будут-ли uml-схемы в документации metarhia +1:22:17 ❓ почему задачи CICD, мониторинга, управления не автоматизированы через machine learning +1:29:06 ❓ можно-ли валидировать приходящие с клиента данных до попадания в javascript? +1:37:04 ❓ в репозитории common находятся оптимизированные методы js? +1:43:15 ❓ d.ts файлы в metarhia нужны для описания интерфейсов? +1:49:25 ❓ в видео "сессии в metarhia" к каждому юзеру будет подвязываться объект контекст, что в нем нужно хранить? +1:58:15 ❓ открытость валидационных схем на клиенте является уязвимостью? +1:59:17 ❓ планируется-ли поставлять версию TLS node вместе c metarhia? 2:03:13 когда записи стримов метархии станут публичными? ``` ## Выпуск №4 (2021-05-08) ``` 0:00 start -0:20❓какие могут быть проблемы/преимущества с точкой входа над несколькими структурами данных? (graphQl) -9:30❓можно-ли комбинировать подходы на бекенде? -12:10❓пример реализации data-sentry подхода в архитектуре систем -18:08❓в каких случаях graphQl подходит -22:00❓объяснение цитаты про типы и года опыта -36:09❓какие вещи из js нельзя написать на typescript -42:17❓плагины для eslint, babel, которые идентифицируют проблемы в коде, типах -50:48❓причина непопулярности uml диаграм в нехватке автогенерации? -58:52❓возможно-ли создание инструментов по миграции из существующих систем в metarhia? +0:20 ❓ какие могут быть проблемы/преимущества с точкой входа над несколькими структурами данных? (graphQl) +9:30 ❓ можно-ли комбинировать подходы на бекенде? +12:10 ❓ пример реализации data-sentry подхода в архитектуре систем +18:08 ❓ в каких случаях graphQl подходит +22:00 ❓ объяснение цитаты про типы и года опыта +36:09 ❓ какие вещи из js нельзя написать на typescript +42:17 ❓ плагины для eslint, babel, которые идентифицируют проблемы в коде, типах +50:48 ❓ причина непопулярности uml диаграм в нехватке автогенерации? +58:52 ❓ возможно-ли создание инструментов по миграции из существующих систем в metarhia? 1:10:05 hegel анализатор js 1:19:37 V8 %getOptimizationStatus optimization -1:24:45❓панель управления для metarhia -1:34:03❓можно-ли сгенерировать user-interface с помощью metarhia? (scaffolding) -1:53:40❓можно-ли дать доступ с клиента к нечуствительным полям в бд? -1:57:24❓пагинация -2:00:20❓планируется-ли поддержка многоязычности? -2:01:29❓проблема масштабируемости meteor и схожесть в идеях с metarhia -2:05:09❓сертификация metarhia +1:24:45 ❓ панель управления для metarhia +1:34:03 ❓ можно-ли сгенерировать user-interface с помощью metarhia? (scaffolding) +1:53:40 ❓ можно-ли дать доступ с клиента к нечуствительным полям в бд? +1:57:24 ❓ пагинация +2:00:20 ❓ планируется-ли поддержка многоязычности? +2:01:29 ❓ проблема масштабируемости meteor и схожесть в идеях с metarhia +2:05:09 ❓ сертификация metarhia ``` ## Выпуск №5 (2021-05-15) @@ -89,81 +89,81 @@ 0:15 race condition 10:40 виды race condition 10:50 пример "гонка по управлению" -31:05❓о metatests -50:20❓использовать finalizationRegistry для выхода из сеанса +31:05 ❓ о metatests +50:20 ❓ использовать finalizationRegistry для выхода из сеанса 1:03:20 новости metarhia 1:17:20 схема структуры БД авторизации/аутентификации (объяснение, пример модификации) -1:58:10❓есть-ли в metasql pgpromise работа с файлами sql, prepared spacements на базе сравнения запросов с ранними -2:05:35❓вы пробовали cloudflare workers? -2:07:23❓мнение по поводу nodered +1:58:10 ❓ есть-ли в metasql pgpromise работа с файлами sql, prepared spacements на базе сравнения запросов с ранними +2:05:35 ❓ вы пробовали cloudflare workers? +2:07:23 ❓ мнение по поводу nodered ``` ## Выпуск №6 (2021-05-22) ``` 0:00 start -0:10❓часто пишу if в коде, при изучении автоматного программирования есть нехватка примеров кода -5:53❓главная проблема nest -15:15❓почему пишут REST? -28:16❓почему использую JWT? -31:07❓основная причина выбора технологии -38:53❓репутационный критерий при выборе технологии -40:36❓если в metarhia избегать ООП, как объеденять наборы функций в сущности? -42:50❓что вам хотелось бы видеть в рамках визуализации абстрактного синтаксического дерева? -44:40❓кто может сделать код-ревью кода на metarhia? +0:10 ❓ часто пишу if в коде, при изучении автоматного программирования есть нехватка примеров кода +5:53 ❓ главная проблема nest +15:15 ❓ почему пишут REST? +28:16 ❓ почему использую JWT? +31:07 ❓ основная причина выбора технологии +38:53 ❓ репутационный критерий при выборе технологии +40:36 ❓ если в metarhia избегать ООП, как объеденять наборы функций в сущности? +42:50 ❓ что вам хотелось бы видеть в рамках визуализации абстрактного синтаксического дерева? +44:40 ❓ кто может сделать код-ревью кода на metarhia? 47:45 о документации metarhia -50:30❓сложность презентаций +50:30 ❓ сложность презентаций 51:47 я абсолютно не ориентируюсь на то, что метархию будут брать разработчики -53:17❓набирать начинающих программистов для metarhia -1:05:42❓сценарии ответов на виды кибератак -1:18:44❓пример кода для игр на node для метархии -1:21:34❓версионирование бизнес модели +53:17 ❓ набирать начинающих программистов для metarhia +1:05:42 ❓ сценарии ответов на виды кибератак +1:18:44 ❓ пример кода для игр на node для метархии +1:21:34 ❓ версионирование бизнес модели ``` ## Выпуск №7 (2021-05-29) ``` 0:00 start -0:55❓как метархия будет работать с микросервисами и сессиями -7:00❓как писать наследование без классов и интерфейсов? -12:54❓стримы в node -27:00❓что должно лежать в папке domain в example -32:00❓будет-ли у метархии поддержка стриминга видео? -35:55❓будет-ли пример реализации oauth 2.0 на практике, поддержка oauth 2.0? -42:30❓изменение структуры данных в памяти -53:15❓почему декораторы в nest это плохо? -1:14:45❓реализация менеджмента турнира +0:55 ❓ как метархия будет работать с микросервисами и сессиями +7:00 ❓ как писать наследование без классов и интерфейсов? +12:54 ❓ стримы в node +27:00 ❓ что должно лежать в папке domain в example +32:00 ❓ будет-ли у метархии поддержка стриминга видео? +35:55 ❓ будет-ли пример реализации oauth 2.0 на практике, поддержка oauth 2.0? +42:30 ❓ изменение структуры данных в памяти +53:15 ❓ почему декораторы в nest это плохо? +1:14:45 ❓ реализация менеджмента турнира 1:33:29 планы metarhia 1:44:03 перечисление фич, которые уже реализованы в metarhia 1:49:11 почему нужно перезапускать процесс node, если один реквест привел к exception -1:57:54❓существуют-ли механизмы отслеживания потребления ресурсов? -2:05:00❓система нагрузочного тестирования в metarhia -2:06:40❓как происходит горячая перезагрузка? -2:08:17❓приложения на metarhia и на другой технологии для сравнения производительности +1:57:54 ❓ существуют-ли механизмы отслеживания потребления ресурсов? +2:05:00 ❓ система нагрузочного тестирования в metarhia +2:06:40 ❓ как происходит горячая перезагрузка? +2:08:17 ❓ приложения на metarhia и на другой технологии для сравнения производительности ``` ## Выпуск №8 (2021-06-12) ``` 0:00 про виды утечек памяти -10:54❓чем отличается hip от stack -16:20❓легковесный и тяжеловесный сборщики мусора -22:22❓почему библиотека cluster внутри node.js плохо утилизирует ресурсы -27:25❓как возможно отправить метархии event на клиента -33:33❓когда metarhia станет популярной? -59:12❓память в nodejs, metarhia -1:10:40❓как работать с use case? -1:42:05❓ошибка при ограничении прав в системе прав +10:54 ❓ чем отличается hip от stack +16:20 ❓ легковесный и тяжеловесный сборщики мусора +22:22 ❓ почему библиотека cluster внутри node.js плохо утилизирует ресурсы +27:25 ❓ как возможно отправить метархии event на клиента +33:33 ❓ когда metarhia станет популярной? +59:12 ❓ память в nodejs, metarhia +1:10:40 ❓ как работать с use case? +1:42:05 ❓ ошибка при ограничении прав в системе прав ``` ## Выпуск №9 (2021-06-19) ``` 0:00 start -0:28❓client в metacom будет рефакториться? -6:00❓пример отправки event от user к user +0:28 ❓ client в metacom будет рефакториться? +6:00 ❓ пример отправки event от user к user 10:44 новости 19:36 список библиотек и планы -35:16❓выбор зависимостей в impress (node http, socket) +35:16 ❓ выбор зависимостей в impress (node http, socket) 40:00 про субд, globalstorage -1:02:15❓будет-ли возможность подключить другую библиотеку для web sockets -1:07:10❓какой нужен уровень для написания продуктов на базе metarhia? +1:02:15 ❓ будет-ли возможность подключить другую библиотеку для web sockets +1:07:10 ❓ какой нужен уровень для написания продуктов на базе metarhia? ``` ## Выпуск №10 (2021-06-26) @@ -171,83 +171,83 @@ 0:00 start 0:20 новости metarhia 1:40 почему null - это плохо? -29:45❓преимущество масштабирования тредами, а не процессами -43:56❓тестирование внутри worker'a -56:56❓планы на лето -1:36:00❓банки и web socket -1:47:43❓оценка кода обертки http(jwt, params) для rpc -1:51:55❓вопрос по class Procedure в impress +29:45 ❓ преимущество масштабирования тредами, а не процессами +43:56 ❓ тестирование внутри worker'a +56:56 ❓ планы на лето +1:36:00 ❓ банки и web socket +1:47:43 ❓ оценка кода обертки http(jwt, params) для rpc +1:51:55 ❓ вопрос по class Procedure в impress ``` ## Выпуск №11 (2021-07-03) ``` 0:00 start -1:00❓как не забыть то - что выучил? -11:00❓как заинтересовывать детей в программировании? -19:20❓null для object, undefined для скалярных? -29:45❓защита от ddos атак в metarhia -38:27❓как попасть на проект на metarhia? -52:12❓weakMap и остальные... -58:35❓stateless подход node.js -1:19:40❓copilot -1:31:05❓в каких компаниях используется metarhia? -1:47:40❓globalstorage и сложности -1:55:05❓обновления библиотек metarhia без changelog -2:04:40❓пакет для ssh связи +1:00 ❓ как не забыть то - что выучил? +11:00 ❓ как заинтересовывать детей в программировании? +19:20 ❓ null для object, undefined для скалярных? +29:45 ❓ защита от ddos атак в metarhia +38:27 ❓ как попасть на проект на metarhia? +52:12 ❓ weakMap и остальные... +58:35 ❓ stateless подход node.js +1:19:40 ❓ copilot +1:31:05 ❓ в каких компаниях используется metarhia? +1:47:40 ❓ globalstorage и сложности +1:55:05 ❓ обновления библиотек metarhia без changelog +2:04:40 ❓ пакет для ssh связи ``` ## Выпуск №12 (2021-07-10) ``` 0:00 новости -11:35❓заложен-ли канал связи между инстансами метархии между разными серверами -13:25❓можно-ли будет использовать cursor в плагине для crud? -37:58❓пример генерации форм на клиенте +11:35 ❓ заложен-ли канал связи между инстансами метархии между разными серверами +13:25 ❓ можно-ли будет использовать cursor в плагине для crud? +37:58 ❓ пример генерации форм на клиенте 47:00 nodered, bpmn -1:39:30❓ почему нужно начинать с grasp, а не с solid? +1:39:30 ❓ почему нужно начинать с grasp, а не с solid? ``` ## Выпуск №13 (2021-07-17) ``` 0:00 start -1:00❓когда можно использовать require в циклах? -12:42❓код class Cache в impress -36:40❓преимущества node перед другими ЯП +1:00 ❓ когда можно использовать require в циклах? +12:42 ❓ код class Cache в impress +36:40 ❓ преимущества node перед другими ЯП 41:00 про ООП 1:07:10 портирование проекта с nodered на metarhia -1:16:02❓как вы себе представляете прикладной код? -1:21:30❓почему nocode системы пытаются скопировать отвратительные паттерны друг у друга? +1:16:02 ❓ как вы себе представляете прикладной код? +1:21:30 ❓ почему nocode системы пытаются скопировать отвратительные паттерны друг у друга? 1:31:00 нейросети и код -1:53:20❓кто будет на holy js? +1:53:20 ❓ кто будет на holy js? ``` ## Выпуск №14 (2021-07-24) ``` 0:00 start -0:30❓example logout пользователя (работа metarhia c контекстом) -41:50❓для чего используется класс Resourses в impress -50:35❓про загрузку данных разных форматов, планы metarhia, системные и прикладные программисты -1:00:00❓про планировщики в линуксе, metarhiа -1:48:52❓cursor с бд +0:30 ❓ example logout пользователя (работа metarhia c контекстом) +41:50 ❓ для чего используется класс Resourses в impress +50:35 ❓ про загрузку данных разных форматов, планы metarhia, системные и прикладные программисты +1:00:00 ❓ про планировщики в линуксе, metarhiа +1:48:52 ❓ cursor с бд ``` ## Выпуск №15 (2021-07-31) ``` 0:00 планы и новости -11:45❓вычислимые поля в metaschema (discuss) -30:02❓отдельный сервис для управления нагрузками +11:45 ❓ вычислимые поля в metaschema (discuss) +30:02 ❓ отдельный сервис для управления нагрузками 39:48 почему R&D офис не должен быть прибыльным -54:46❓блокировки, регистр хранения данных в metarhia -1:15:50❓хватает-ли времени на семью? -1:19:05❓машинное обучение на js -1:20:37❓плагины +54:46 ❓ блокировки, регистр хранения данных в metarhia +1:15:50 ❓ хватает-ли времени на семью? +1:19:05 ❓ машинное обучение на js +1:20:37 ❓ плагины 1:33:10 написание бизнес-логики на metarhia 1:42:30 про базы данных 1:44:40 про языки программирования и их возможности 1:48:58 про тип null -1:50:00❓как происходит проверка по схемам в metaschema? -1:53:20❓проблемы typescript -1:56:00❓стримы в node -2:06:18❓вопрос по коду metaschema +1:50:00 ❓ как происходит проверка по схемам в metaschema? +1:53:20 ❓ проблемы typescript +1:56:00 ❓ стримы в node +2:06:18 ❓ вопрос по коду metaschema ``` ## Выпуск №16 (2021-08-07) @@ -256,14 +256,14 @@ 8:00 новости metacom 22:00 медицинская система, украинские гос. сайты и анархия 43:02 инстаграмм и вопросы -1:06:10❓ docker -1:12:50❓ про сервера -1:22:33❓сказка-презентация "шапка полная дэвов" -1:26:30❓крупные банки и node? -1:39:05❓почему люди работают по найму? -1:47:05❓что вы думаете о Илоне Маске? -1:51:43❓какой процент успешных студентов у Тимура? -1:55:00❓почему на галерах плохо работать? +1:06:10 ❓ docker +1:12:50 ❓ про сервера +1:22:33 ❓ сказка-презентация "шапка полная дэвов" +1:26:30 ❓ крупные банки и node? +1:39:05 ❓ почему люди работают по найму? +1:47:05 ❓ что вы думаете о Илоне Маске? +1:51:43 ❓ какой процент успешных студентов у Тимура? +1:55:00 ❓ почему на галерах плохо работать? ``` ## Выпуск №18 (2021-08-21) @@ -271,12 +271,12 @@ 0:00 новости и изменения в стеке metarhia 13:00 про npm пакеты и зависимости 27:40 нововведения github -37:17❓выполнение c/c++ в node -48:45❓metarhia принимает и http и ws? нужно-ли как-то переключаться между ними? web-hooks? -57:00❓multithread реальны или виртуальны в node? -1:00:00❓проблемы производительности и абстракций -1:36:20❓использование google cloud -1:37:00❓про обучение программированию, вопросы по технологиям и тд +37:17 ❓ выполнение c/c++ в node +48:45 ❓ metarhia принимает и http и ws? нужно-ли как-то переключаться между ними? web-hooks? +57:00 ❓ multithread реальны или виртуальны в node? +1:00:00 ❓ проблемы производительности и абстракций +1:36:20 ❓ использование google cloud +1:37:00 ❓ про обучение программированию, вопросы по технологиям и тд ``` ## Выпуск №19 (2021-08-28) @@ -288,20 +288,20 @@ 1:05:40 прогресс metarhia 1:07:50 дети, обучение, менторинг, ревью кода 1:19:40 пелевин, книги -1:36:00❓где лучше хранить изображения? (бд/файловая система) -1:49:35❓мультиязычность в образовательном проекте +1:36:00 ❓ где лучше хранить изображения? (бд/файловая система) +1:49:35 ❓ мультиязычность в образовательном проекте ``` ## Выпуск №20 (2021-09-04) ``` 0:00 start 0:01 обучение, города, люди -4:00❓ metacom обновления, планы -24:37❓ globalstorage, cursor, metasql планы -1:00:50❓frontend подход реализации с cursor -1:15:15❓будет-ли автодокументация api как в swagger в metarhia? -1:27:50❓образовательная программа -1:46:00❓автоматное программирование +4:00 ❓ metacom обновления, планы +24:37 ❓ globalstorage, cursor, metasql планы +1:00:50 ❓ frontend подход реализации с cursor +1:15:15 ❓ будет-ли автодокументация api как в swagger в metarhia? +1:27:50 ❓ образовательная программа +1:46:00 ❓ автоматное программирование 1:52:50 книга "Модели данных" 2:00:00 антипаттерны ``` @@ -311,20 +311,20 @@ 0:00 start 0:01 обновление библиотек metarhia 5:00 баланс тредов round robin -13:39❓решает-ли вышеописанный код проблему совмещенной памяти у нескольких воркеров? -26:05❓обмениваться буферами можно внутри node или браузера -29:20❓полезные функции v8 -30:50❓impress node.js context -34:40❓ abort controller +13:39 ❓ решает-ли вышеописанный код проблему совмещенной памяти у нескольких воркеров? +26:05 ❓ обмениваться буферами можно внутри node или браузера +29:20 ❓ полезные функции v8 +30:50 ❓ impress node.js context +34:40 ❓ abort controller 49:50 R&D офис в КПИ, образование и научная деятельность -1:05:30❓куда идти учиться сыну 16лет +1:05:30 ❓ куда идти учиться сыну 16лет 1:14:00 R&D 1:15:00 как будет работать менторинг при metaeducation -1:21:40❓вуз в Польше для поступления -1:22:44❓back pressure для стрима с "медленным" клиентом -1:42:10❓как банки использовали nodered -1:44:47❓почему Тимур решил выбрать js? -2:04:30❓мысли про mvp из говна и палок и выкуп стартапов большими компаниями? +1:21:40 ❓ вуз в Польше для поступления +1:22:44 ❓ back pressure для стрима с "медленным" клиентом +1:42:10 ❓ как банки использовали nodered +1:44:47 ❓ почему Тимур решил выбрать js? +2:04:30 ❓ мысли про mvp из говна и палок и выкуп стартапов большими компаниями? ``` ## Выпуск №22 (2021-09-18) @@ -332,43 +332,43 @@ 0:00 start 0:55 новости платформы 9:56 диаграмма для metahealth, metaclass -17:30❓как грамотно построить клиентские приложения на node.js -25:15❓постоянно перезапускать асинхронную функцию (async forever) -47:32❓работают-ли стримы со ссылочными типамид данных -53:07❓оптимизация v8 для работы с данными +17:30 ❓ как грамотно построить клиентские приложения на node.js +25:15 ❓ постоянно перезапускать асинхронную функцию (async forever) +47:32 ❓ работают-ли стримы со ссылочными типамид данных +53:07 ❓ оптимизация v8 для работы с данными 58:20 система плагинов 1:12:00 менторинг на проектах и преподавание для детей -1:28:45❓как получать 30к в месяц? -1:57:35❓в какую сторону мыслить в придумывании нового -2:02:50❓прикладная задача по передаче данных +1:28:45 ❓ как получать 30к в месяц? +1:57:35 ❓ в какую сторону мыслить в придумывании нового +2:02:50 ❓ прикладная задача по передаче данных ``` ## Выпуск №23 (2021-09-25) ``` 0:00 новости библиотек -8:04❓репозиторий для примера написания бизнес-логики -11:42❓про metaforms -18:20❓require и imports -25:48❓не пробовали использовать какой-нибудь frontend фреймворк? -1:07:00❓изоляция пользователей внутри приложения по разным бд -1:22:20❓где и как можно применять автоматное программирование +8:04 ❓ репозиторий для примера написания бизнес-логики +11:42 ❓ про metaforms +18:20 ❓ require и imports +25:48 ❓ не пробовали использовать какой-нибудь frontend фреймворк? +1:07:00 ❓ изоляция пользователей внутри приложения по разным бд +1:22:20 ❓ где и как можно применять автоматное программирование 1:30:00 искуственный интеллект, node, js ``` ## Выпуск №24 (2021-10-02) ``` 0:00 новости технологического стека -9:51❓вопросы после попытки переноса проекта на metarhia -41:00❓file system watcher + sandboxind для подгрузки архива с исходным кодом -49:00❓загрузка import в песочницу -53:00❓вопросы после попытки переноса проекта на metarhia (2 часть) -1:16:00❓когда появится TCP? -1:25:00❓в metaschema можно писать произвольные метаданные? -1:26:30❓schemas, выполнение кастомного sql -1:33:50❓развитие globalstorage -1:36:15❓в какой последовательности смотреть лекции Тимура -1:38:20❓подскажите макбук для покупки -1:54:10❓тестирование апи с postman, http, безопастность +9:51 ❓ вопросы после попытки переноса проекта на metarhia +41:00 ❓ file system watcher + sandboxind для подгрузки архива с исходным кодом +49:00 ❓ загрузка import в песочницу +53:00 ❓ вопросы после попытки переноса проекта на metarhia (2 часть) +1:16:00 ❓ когда появится TCP? +1:25:00 ❓ в metaschema можно писать произвольные метаданные? +1:26:30 ❓ schemas, выполнение кастомного sql +1:33:50 ❓ развитие globalstorage +1:36:15 ❓ в какой последовательности смотреть лекции Тимура +1:38:20 ❓ подскажите макбук для покупки +1:54:10 ❓ тестирование апи с postman, http, безопастность ``` ## Выпуск №25 (2021-10-09) @@ -377,27 +377,27 @@ 0:08 баг в performance hook в node 4:15 финансирование образовательных проектов 7:06 performance hook поиск бага -52:10❓прогресс с миграциями +52:10 ❓ прогресс с миграциями 56:40 фикс багa metacom ``` ## Выпуск №26 (2021-10-16) ``` -0:00 новости metacom, migrations, балансировщик на event loop utilization, issue в библиотеках с тегами hacktoberfest, metaedu -9:10❓что с globalstorage -12:50❓есть-ли возможность помочь с разработкой metaschema (как контрибьютить в metarhia) -44:50❓вы довольны прогрессом по metaeducation и metahealth? -51:50❓про handy.ai -1:10:45❓планируется делать менеджер памяти? -1:19:25❓про metagui и фронтенд -1:29:00❓пробовали nocode инструменты для создания интерфейсов? (про идею развития пользовательских интерфейсов) +0:00 новости metacom, migrations, балансировщик на event loop utilization, issue с тегами hacktoberfest, metaedu +9:10 ❓ что с globalstorage +12:50 ❓ есть-ли возможность помочь с разработкой metaschema (как контрибьютить в metarhia) +44:50 ❓ вы довольны прогрессом по metaeducation и metahealth? +51:50 ❓ про handy.ai +1:10:45 ❓ планируется делать менеджер памяти? +1:19:25 ❓ про metagui и фронтенд +1:29:00 ❓ пробовали nocode инструменты для создания интерфейсов? (про идею развития пользовательских интерфейсов) ``` ## Выпуск №27 (2021-10-23) ``` 0:00 start -0:55❓какие ошибки сервера кидать на клиент -6:00❓авторизация через jwt и два сервера +0:55 ❓ какие ошибки сервера кидать на клиент +6:00 ❓ авторизация через jwt и два сервера 7:50 why jwt is bad for authentication 11:00 планы, конференции, 15:30 баг с исправлением node @@ -406,37 +406,37 @@ ## Выпуск №28 (2021-10-30) ``` 0:00 новости -2:20❓почему metaschema вместо jsonscheme? и про metarhia -7:00❓как интегрировать свой проект с metarhia? (цель metarhia) -47:10❓последовательность действий для создания функциональности метархии для open sourse -1:00:00❓ссылки на созвоны по проектам metarhia education -1:02:40❓как писать документацию к библиотекам metarhia? -1:05:00❓ discussion горячая загрузка интерфейсов -1:11:00❓как под капотом работает async await? +2:20 ❓ почему metaschema вместо jsonscheme? и про metarhia +7:00 ❓ как интегрировать свой проект с metarhia? (цель metarhia) +47:10 ❓ последовательность действий для создания функциональности метархии для open sourse +1:00:00 ❓ ссылки на созвоны по проектам metarhia education +1:02:40 ❓ как писать документацию к библиотекам metarhia? +1:05:00 ❓ discussion горячая загрузка интерфейсов +1:11:00 ❓ как под капотом работает async await? ``` ## Выпуск №29 (2021-11-06) ``` 0:00 новости 4:05 строительство метагорода -15:04❓ metalogin проблема пустых файлов -21:00❓impress создание стартера для каждого провайдера -23:50❓можно-ли нормально жить с микросервисами? -25:00❓как экспортировать окружение бизнес-логики c одного подхода(шина) на другой(редис)? -40:30❓git слишком часто делаю merge ( как пользоваться гитом) +15:04 ❓ metalogin проблема пустых файлов +21:00 ❓ impress создание стартера для каждого провайдера +23:50 ❓ можно-ли нормально жить с микросервисами? +25:00 ❓ как экспортировать окружение бизнес-логики c одного подхода(шина) на другой(редис)? +40:30 ❓ git слишком часто делаю merge ( как пользоваться гитом) 1:04:00 обучение обучению, youtube лекции от сторонних людей -1:12:20❓review примера сервера на node -1:35:40❓избегание циклических зависимостей при импортах -1:50:00❓хранение бизнес логики в бд -2:01:20❓автоматическая генерация субтитров на английском к видео Тимура +1:12:20 ❓ review примера сервера на node +1:35:40 ❓ избегание циклических зависимостей при импортах +1:50:00 ❓ хранение бизнес логики в бд +2:01:20 ❓ автоматическая генерация субтитров на английском к видео Тимура ``` ## Выпуск №30 (2021-11-13) ``` 0:00 новости -20:35❓noroutine issue syntax in thread +20:35 ❓ noroutine issue syntax in thread 21:37 impress планы -30:20❓динамически создать эндпоинт rpc, создание эндпоинта запросом с клиента +30:20 ❓ динамически создать эндпоинт rpc, создание эндпоинта запросом с клиента 37:33 пример подключения к стороннему сервиса для рассылки имейлов 42:31 new Date и throw exception 47:38 идея метапрограммирования @@ -710,10 +710,10 @@ 0:00 новости 12:40 метагалера подробности 52:00 code review -1:17:20❓ как реализованы права в metarhia? -1:26:00❓ про "биос" - один из проектов метагалеры +1:17:20 ❓ как реализованы права в metarhia? +1:26:00 ❓ про "биос" - один из проектов метагалеры 1:37:00 про изучение немецкого -1:40:00❓ цель создания метагалеры +1:40:00 ❓ цель создания метагалеры ``` ## Выпуск №49 (2022-04-02) @@ -721,17 +721,17 @@ 0:00 start 1:30 лендинги для продуктов метагалеры 6:35 книга "Метапрограммирование" -9:00❓вопросы о разработке metaschema -16:30❓нужна-ли возможность перекладывания sql данных в no sql +9:00 ❓ вопросы о разработке metaschema +16:30 ❓ нужна-ли возможность перекладывания sql данных в no sql 43:00 отличие open-source разработки от коммерческой -45:00❓metaschema +45:00 ❓ metaschema 59:00 про конкуренцию -1:05:30❓вопросы по документации +1:05:30 ❓ вопросы по документации 1:23:45 как исправить звуковую петлю -1:27:00❓вступительня кампания в вузах украины без ЗНО +1:27:00 ❓ вступительня кампания в вузах украины без ЗНО 1:31:00 преподавание в KSE 1:41:00 олимпиады по программированию -1:55:40❓как учился программированию Тимур +1:55:40 ❓ как учился программированию Тимур 1:56:30 про java 2:01:00 metaschema, препроцессор ``` From 2dac30475d7bc1e5fc00d3a60cc2c9eb19278428 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Mon, 2 May 2022 04:59:02 -0400 Subject: [PATCH 105/308] Add link --- Archive/WeeklyCall.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Archive/WeeklyCall.md b/Archive/WeeklyCall.md index 3f9ec58..4800bbf 100644 --- a/Archive/WeeklyCall.md +++ b/Archive/WeeklyCall.md @@ -1,5 +1,7 @@ # Metarhia community weekly call index +Для достепа к архиву и участия в созвонах: https://www.patreon.com/tshemsedinov + ## Выпуск №1 (2021-04-17) ``` 0:00 новости (сертификации, metarhia, lowcode) From 1d9ec94849aab4fb95105ffc41e991c54ad053ba Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Mon, 2 May 2022 05:00:26 -0400 Subject: [PATCH 106/308] Add youtube and github pages --- Archive/WeeklyCall.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Archive/WeeklyCall.md b/Archive/WeeklyCall.md index 4800bbf..7ae1d89 100644 --- a/Archive/WeeklyCall.md +++ b/Archive/WeeklyCall.md @@ -1,6 +1,8 @@ # Metarhia community weekly call index -Для достепа к архиву и участия в созвонах: https://www.patreon.com/tshemsedinov +Для доступа к архиву и участия в созвонах: https://www.patreon.com/tshemsedinov +Канал с открытыми лекциями: https://www.youtube.com/TimurShemsedinov +Оглавление курса: https://github.com/HowProgrammingWorks/Index ## Выпуск №1 (2021-04-17) ``` From 6b498d82aff101242c496ef863a15ef4ec668648 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Mon, 2 May 2022 05:00:59 -0400 Subject: [PATCH 107/308] Bullet formatting --- Archive/WeeklyCall.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Archive/WeeklyCall.md b/Archive/WeeklyCall.md index 7ae1d89..1443c22 100644 --- a/Archive/WeeklyCall.md +++ b/Archive/WeeklyCall.md @@ -1,8 +1,8 @@ # Metarhia community weekly call index -Для доступа к архиву и участия в созвонах: https://www.patreon.com/tshemsedinov -Канал с открытыми лекциями: https://www.youtube.com/TimurShemsedinov -Оглавление курса: https://github.com/HowProgrammingWorks/Index +- Для доступа к архиву и участия в созвонах: https://www.patreon.com/tshemsedinov +- Канал с открытыми лекциями: https://www.youtube.com/TimurShemsedinov +- Оглавление курса: https://github.com/HowProgrammingWorks/Index ## Выпуск №1 (2021-04-17) ``` From 2f59fd380acd1004da1ab3f7ee046233ef38ac50 Mon Sep 17 00:00:00 2001 From: Anton Telichenko Date: Mon, 2 May 2022 13:35:54 +0300 Subject: [PATCH 108/308] =?UTF-8?q?=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D1=8B=20=D1=82=D0=B0=D0=B9=D0=BC=D0=BA=D0=BE=D0=B4?= =?UTF-8?q?=D1=8B=20=D0=BA=20=D0=B2=D1=8B=D0=BF=D1=83=D1=81=D0=BA=D1=83=20?= =?UTF-8?q?=E2=84=96=2053?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Archive/WeeklyCall.md | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/Archive/WeeklyCall.md b/Archive/WeeklyCall.md index 1443c22..cd48543 100644 --- a/Archive/WeeklyCall.md +++ b/Archive/WeeklyCall.md @@ -770,3 +770,27 @@ 1:43:10 куда можно присылать вопросы в текстовом виде? 1:57:20 добавления резервирования к схеме ``` + +## Выпуск №53 (2022-04-30) +``` +0:43 критика low-code систем +1:20 прототип для low-code, библиотека low-script +12:06 отличие от других low-code продуктов +19:28 поздравление Георга с днем рождения 🥳 +21:25 о важности встреч в субботу +24:20 мультитенантность, metaschema, metacom +29:30 модули для библиотек бизнес-процессов, retool, integromat +35:59 линейные скрипты и обработка ошибок в low-code +47:35 валидация +50:10 настройки для линтера +58:33 проектирование мультитенантности +1:04:00 тарифные планы для разных вариантов тенантности +1:05:22 шардинг, изоляция по ключам +1:21:30 площадка внутри системы для создания скриптов +1:33:40 интеграция метархии в проект с rest api, авторизация +1:43:24 вопрос к зрителям «насколько универсальна нотация в md файле?» +1:56:05 про оплату работы таланта +2:01:05 поздравления Георга +2:02:14 где Алексей Боднарчук +2:07:58 как найти невесту схожего культурного контекста +``` From b10838702c6b81adc52d64d689a34c1145861308 Mon Sep 17 00:00:00 2001 From: Anton Telichenko Date: Tue, 10 May 2022 09:14:31 +0300 Subject: [PATCH 109/308] =?UTF-8?q?=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D1=8B=20=D1=82=D0=B0=D0=B9=D0=BC=D0=BA=D0=BE=D0=B4?= =?UTF-8?q?=D1=8B=20=D0=BA=20=D0=B2=D1=8B=D0=BF=D1=83=D1=81=D0=BA=D1=83=20?= =?UTF-8?q?=E2=84=96=2053?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Archive/WeeklyCall.md | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/Archive/WeeklyCall.md b/Archive/WeeklyCall.md index cd48543..8b1cf3f 100644 --- a/Archive/WeeklyCall.md +++ b/Archive/WeeklyCall.md @@ -794,3 +794,14 @@ 2:02:14 где Алексей Боднарчук 2:07:58 как найти невесту схожего культурного контекста ``` + +## Выпуск №54 (2022-05-07) +``` +0:00 планы +2:15 пример работы разных модулей 1С +59:40 metarhia subsystems roadmap +1:59:00 swayer +2:08:30 компонент для автоматизации деплоя +2:18:00 остальные предложения и идеи +2:23:15 механизм для контрибьюта +``` From 67b5c45db38e8ffe3e99b23ac9e73c3624dbbc90 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Sun, 15 May 2022 11:17:33 -0400 Subject: [PATCH 110/308] Update Paradigms.md --- Courses/Paradigms.md | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/Courses/Paradigms.md b/Courses/Paradigms.md index 960a420..a2c9355 100644 --- a/Courses/Paradigms.md +++ b/Courses/Paradigms.md @@ -1,10 +1,15 @@ # Парадигмы программирования +- Процедурное программирование +- [Объектно-ориентированное программирование](https://youtu.be/r4ReQlVtfgQ) +- [Структуры (struct) или записи (record)](https://youtu.be/Wb7o_kK4aH4) +- [Дженерики и обобщенное программирование](https://youtu.be/r6W2z3DQhoI) + - Примеры кода: https://github.com/HowProgrammingWorks/Generics +- [Have Objects Failed? Или что не так с ООП?](https://youtu.be/4yO5OS0vPSw) - [Функциональное программирование на JavaScript](https://youtu.be/0JxSs_GcvbQ) - Примеры кода: https://github.com/HowProgrammingWorks/FunctionalProgramming - [Реактивное программирование на JavaScript](https://youtu.be/7MH8-qQc-48) - Примеры кода: https://github.com/HowProgrammingWorks/ReactiveProgramming - [Асинхронное программирование (обзор)](https://youtu.be/hY6Z6qNYzmc) -- [Have Objects Failed? Или что не так с ООП?](https://youtu.be/4yO5OS0vPSw) - [Модель акторов (Actor Model)](https://youtu.be/xp5MVKEqxY4) - Примеры кода: https://github.com/HowProgrammingWorks/ActorModel From 235da04a566deb52638e1343b0b6f21773cc6859 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Sun, 15 May 2022 11:19:47 -0400 Subject: [PATCH 111/308] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index e1187a0..ae777c9 100644 --- a/README.md +++ b/README.md @@ -25,7 +25,7 @@ - [Шаблоны проектирования](Courses/Patterns.md) (есть 50% примеров кода и видео-лекций) - [Парадигмы программирования](Courses/Paradigms.md) - (есть 50% кода и несколько видео-лекций) + (есть 80% кода примеров и 60% видео-лекций) - [Метапрограммирование и мультипарадигменное программирование](Courses/Metaprogramming.md) (есть 50% кода и несколько видео-лекций) - [Алгоритмы и структуры данных](Courses/AlgAndData.md) From 70845c6a9ed3509fa7c1deaa1161e635554d3225 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Sun, 15 May 2022 11:21:45 -0400 Subject: [PATCH 112/308] Remove duplicates --- Courses/OOP.md | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/Courses/OOP.md b/Courses/OOP.md index 2073ae9..cfcc8aa 100644 --- a/Courses/OOP.md +++ b/Courses/OOP.md @@ -8,12 +8,10 @@ - [Дженерики и обобщенное программирование](https://youtu.be/r6W2z3DQhoI) - Примеры кода: https://github.com/HowProgrammingWorks/Generics - [Шаблоны проектирования](Patterns.md) -- [Ассоциация, агрегация и композиция объектов](https://www.youtube.com/watch?v=tOIcBrzezK0) +- [Ассоциация, агрегация и композиция объектов](https://youtu.be/tOIcBrzezK0) - Примеры кода: https://github.com/HowProgrammingWorks/Association - [Принцип единственной ответственности и закон Конвея](https://youtu.be/o4bQywkBKOI) - Примеры кода: https://github.com/HowProgrammingWorks/SingleResponsibility -- [Ассоциация, Агрегация и Композиция](https://youtu.be/tOIcBrzezK0) - - Примеры кода: https://github.com/HowProgrammingWorks/Association - [Принцип подстановки Барбары Лисков](https://youtu.be/RbhYxygxroc) - Примеры кода: https://github.com/HowProgrammingWorks/LiskovSubstitution - [Антипаттерны объектно-ориентированного программирования](https://youtu.be/9d5TG1VsLeU) From 74ca2ae691ac4bc0807f90cc54d4c443ddc59c27 Mon Sep 17 00:00:00 2001 From: Anton Telichenko Date: Mon, 16 May 2022 15:43:35 +0300 Subject: [PATCH 113/308] Update WeeklyCall.md --- Archive/WeeklyCall.md | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/Archive/WeeklyCall.md b/Archive/WeeklyCall.md index 8b1cf3f..5641afd 100644 --- a/Archive/WeeklyCall.md +++ b/Archive/WeeklyCall.md @@ -805,3 +805,17 @@ 2:18:00 остальные предложения и идеи 2:23:15 механизм для контрибьюта ``` + +## Выпуск №55 (2022-05-14) +``` +0:00 о metaschema +14:40 roadmap, временные решения вместо модулей +25:02 metacalc issues +32:50 проблема отсутсвия багрепортов от компаний +38:00 про баги +45:11 metamail/nodemailer +47:22 LaTeX +51:23 интеграции +56:57 предложение по архитектуре +1:09:55 почему нельзя писать запросы сразу на SQL +``` From 19097780b4d04be23728f1bb043256436a19bc8b Mon Sep 17 00:00:00 2001 From: Anton Telichenko Date: Sun, 22 May 2022 16:46:43 +0300 Subject: [PATCH 114/308] =?UTF-8?q?=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D1=8B=20=D1=82=D0=B0=D0=B9=D0=BC=D0=BA=D0=BE=D0=B4?= =?UTF-8?q?=D1=8B=20=D0=BA=2056=20=D0=B2=D1=8B=D0=BF=D1=83=D1=81=D0=BA?= =?UTF-8?q?=D1=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Archive/WeeklyCall.md | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/Archive/WeeklyCall.md b/Archive/WeeklyCall.md index 5641afd..ce139fa 100644 --- a/Archive/WeeklyCall.md +++ b/Archive/WeeklyCall.md @@ -819,3 +819,25 @@ 56:57 предложение по архитектуре 1:09:55 почему нельзя писать запросы сразу на SQL ``` + +## Выпуск №56 (2022-05-21) +``` +0:00 план звонка +3:08 о криптовалютах и построение систем на metarhia +19:20 бухгалтерская, медицинская системы +36:00 metaschema и мультитенантность +50:00 идеи нужных модулей +1:00:25 возможность системного вызова +1:04:50 система модульности, подгрузка модулей +1:15:20 сборка фронта на беке +1:29:00 сборка на докере +1:34:00 поддержка swayer в браузерах +1:41:30 документация user-story +1:51:50 у кого есть опыт работы с криптовалютами? +1:56:00 вакансии +1:58:30 среда разработки, В-ОS +2:11:35 обновление impress +2:17:30 перенос части проекта из B-OS +2:18:09 сколько у вас есть времени для контрибьюта? +2:20:25 реально-ли написать основную часть системы за пол года? +``` From 34796ab7b006c864f6b2dc7974803fc6e8cfc00b Mon Sep 17 00:00:00 2001 From: Anton Telichenko Date: Mon, 30 May 2022 15:38:22 +0300 Subject: [PATCH 115/308] Update WeeklyCall.md --- Archive/WeeklyCall.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/Archive/WeeklyCall.md b/Archive/WeeklyCall.md index ce139fa..2dbddd8 100644 --- a/Archive/WeeklyCall.md +++ b/Archive/WeeklyCall.md @@ -841,3 +841,12 @@ 2:18:09 сколько у вас есть времени для контрибьюта? 2:20:25 реально-ли написать основную часть системы за пол года? ``` + +## Выпуск №57 (2022-05-27) +``` +2:00 обновления в roadmap (metacom, multi-tenancy, event bus) +27:40 oAuth2, SSO +45:50 новые ютуб каналы, поездка +48:34 как подаваться на конференцию +50:26 yaml, metascheme, json +``` From 4be207c265e8c07378ce6f7f3e6c877f7697721a Mon Sep 17 00:00:00 2001 From: Anton Telichenko Date: Mon, 30 May 2022 15:40:49 +0300 Subject: [PATCH 116/308] Update WeeklyCall.md --- Archive/WeeklyCall.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Archive/WeeklyCall.md b/Archive/WeeklyCall.md index 2dbddd8..b0e7675 100644 --- a/Archive/WeeklyCall.md +++ b/Archive/WeeklyCall.md @@ -842,7 +842,7 @@ 2:20:25 реально-ли написать основную часть системы за пол года? ``` -## Выпуск №57 (2022-05-27) +## Выпуск №57 (2022-05-28) ``` 2:00 обновления в roadmap (metacom, multi-tenancy, event bus) 27:40 oAuth2, SSO From b248ff4c6a641a59702a96d0849b1041636bd93f Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Wed, 8 Jun 2022 17:24:35 -0400 Subject: [PATCH 117/308] Update Talks.md --- Courses/Talks.md | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/Courses/Talks.md b/Courses/Talks.md index 4fc8101..d3b9d8e 100644 --- a/Courses/Talks.md +++ b/Courses/Talks.md @@ -2,12 +2,11 @@ ## Future talks -- [NodeJS, Metarhia, образование - IT-Kamasutra TekTok Podcast #1](https://youtu.be/ND5HNHicACI) -- Odessa.js Node.js Tech Corner - https://youtube.com/OdessaJSConference -- [Интервью у ITBEARD](https://www.youtube.com/c/ITBEARD) +- [IT-Kamasutra](https://youtu.be/ND5HNHicACI) ## 2022 +- [Интервью на 5 часов на канале ITBEARD](https://youtu.be/0xtEdIy2j88) - Разрушаем мифы про Node.js - EPAM Math.random community - Видео: https://youtu.be/Nykxhmh3WDY - https://www.mathrandom.com/events/myth-busters-about-nodejs/ From a78ab22ae82bbbfb3649788f25b452a1ebdec893 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Fri, 10 Jun 2022 18:04:43 -0400 Subject: [PATCH 118/308] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index ae777c9..552c9f6 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ # Индекс и состояние курсов - [Индекс каналов и групп сообщества Метархия](Links.md) -- [Индекс докладов на конференциях](Courses/Talks.md) +- [Индекс докладов, интервью и других выступлений](Courses/Talks.md) - [Индекс практических заданий](Practice/Index.md) - [Индекс созвонов сообщества](Archive/WeeklyCall.md) From df77c7f2721a6584cc870b82ace4d72e8526d409 Mon Sep 17 00:00:00 2001 From: Anton Telichenko Date: Sat, 11 Jun 2022 22:16:15 +0300 Subject: [PATCH 119/308] Update WeeklyCall.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit добавлены выпуски 58, 59 --- Archive/WeeklyCall.md | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/Archive/WeeklyCall.md b/Archive/WeeklyCall.md index b0e7675..c8eb646 100644 --- a/Archive/WeeklyCall.md +++ b/Archive/WeeklyCall.md @@ -850,3 +850,34 @@ 48:34 как подаваться на конференцию 50:26 yaml, metascheme, json ``` + +## Выпуск №58 (2022-06-04) +``` +1:25 как прошел выезд? +13:55 тех. Стек, B-OS +15:13 что не сделано по roadmap +17:23 модули, ожидающие разработки +21:00 фронтенд-библиотека, платёжная система +23:27 о почтовых протоколах +36:50 docker +59:20 nodemailer как временное решение +1:12:25 реализация oAuth +1:19:20 cubernetes, оркестрация +``` + +## Выпуск №59 (2022-06-11) +``` +0:00 изменения metaschema +3:00 приватные поля для объекта, класса +9:00 аргументы для презентации метархии +12:00 интеграция oAuth +18:10 описание multitenancy +36:50 онбоардинг новых людей +39:15 школа на базе метархии, курсы по программированию +43:50 хранение токенов на backend +1:04:00 хранение бизнес-логики +1:15:27 объявление для менторов +1:16:16 автоматизация развертывания +1:27:30 prometeus, мониторинг для мультитрединга +1:40:45 tcp/tls между нодами +``` From e9e4284cd2a051705605a2d916a3b42468a95f58 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Mon, 13 Jun 2022 17:31:07 -0400 Subject: [PATCH 120/308] Add future events --- Courses/Talks.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Courses/Talks.md b/Courses/Talks.md index d3b9d8e..40ec050 100644 --- a/Courses/Talks.md +++ b/Courses/Talks.md @@ -3,6 +3,8 @@ ## Future talks - [IT-Kamasutra](https://youtu.be/ND5HNHicACI) +- [Anywhere Club и АйТиБорода про JavaScript](https://youtube.com/AnywhereClub) +- [Интервью на канале SergeyNemchinskiy](https://youtube.com/SergeyNemchinskiy) ## 2022 From 29b7e529a8e47425f27d92f10403a7284c76f635 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Thu, 16 Jun 2022 18:09:43 -0400 Subject: [PATCH 121/308] Create Seminars.md --- Courses/Seminars.md | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 Courses/Seminars.md diff --git a/Courses/Seminars.md b/Courses/Seminars.md new file mode 100644 index 0000000..967f411 --- /dev/null +++ b/Courses/Seminars.md @@ -0,0 +1,11 @@ +# Семинары: основы программирования, JavaScript и другие языки + +- [JavaScript семинар #1 по курсу HowProgrammingWorks](https://youtu.be/eYjf_WrYAqk) +- [JavaScript семинар #2 по курсу HowProgrammingWorks](https://youtu.be/05iTAT_t6cI) +- [JavaScript семинар #3 по курсу HowProgrammingWorks](https://youtu.be/CtwTMX6wZpY) +- [JavaScript семинар #8 по курсу HowProgrammingWorks](https://youtu.be/T7e9D4sAYWY) +- [💻 JavaScript семинар #10: рефакторинг и ревью кода](https://youtu.be/efb7sAOeMPQ) +- [💻 JavaScript семинар #11: рефакторинг и ревью кода](https://youtu.be/kLBR2dkebGk) +- [💻 JavaScript семинар #12: рефакторинг и ревью кода](https://youtu.be/s2gAKg9CtsI) +- [💻 Семинар #14: ревью проектов на JavaScript и Java](https://youtu.be/l-joOy1Y2SI) +- [💻 JavaScript семинар #15: ревью кода](https://youtu.be/XcFfpbkYxlg) From 650a5b7e122df26a170c9e6b34f90f5d0bb79adf Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Thu, 16 Jun 2022 18:11:20 -0400 Subject: [PATCH 122/308] Add links to seminars --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 552c9f6..b8d0c9a 100644 --- a/README.md +++ b/README.md @@ -8,7 +8,7 @@ ## Последовательная программа - [Введение и обзор знаний](Courses/Introduction.md) - (есть несколько видео-лекций) + (есть несколько видео-лекций) [семинары](Courses/Seminars.md) - [Основы программирования, модули (1 год обучения)](Courses/Fundamentals.md) (есть до 95% материала) - [Программирование (2 год обучения)](Courses/Advanced.md) From 9fbc41d2fa0cf77f7985aa91ecbf5cfd1b34b0a9 Mon Sep 17 00:00:00 2001 From: Anton Telichenko Date: Mon, 27 Jun 2022 23:00:34 +0300 Subject: [PATCH 123/308] Update WeeklyCall.md --- Archive/WeeklyCall.md | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/Archive/WeeklyCall.md b/Archive/WeeklyCall.md index c8eb646..578d37e 100644 --- a/Archive/WeeklyCall.md +++ b/Archive/WeeklyCall.md @@ -881,3 +881,30 @@ 1:27:30 prometeus, мониторинг для мультитрединга 1:40:45 tcp/tls между нодами ``` + +## Выпуск №60 (2022-06-18) +``` +0:30 review metaschema +45:15 новые фичи ecmascript и стиль кода +1:09:04 о критических частях роадмапа, мультитенантность, global storage, базы +1:16:40 oAuth2 client +1:17:28 храние данных в оперативной памяти или redis +1:20:30 разработка filestorage +1:23:10 email интеграции с linux smtp серверами +1:35:32 metarhia c fastify +1:37:50 crud плагины для metasql +1:38:45 стримы для metacom, тесты, баги +1:39:47 metamail, roadmap +1:45:51 multitenancy +1:55:40 бюджет для разработчиков, правила code-review, code-style +``` + +## Выпуск №61 (2022-06-25) +``` +2:05 лендинг библиотек metarhia +2:35 новые возможности в metaschema +1:10:40 есть-ли пример реализации приложений на новой metarhia? +1:13:45 поиск людей с опытом подключения имейлов, онбоардинг новых людей +1:15:27 контрибьют за ревью +1:18:20 системы на базе metarhia, контакты с компаниями +``` From 0ecba054f786bee511cce1b71a103c136d790859 Mon Sep 17 00:00:00 2001 From: Anton-Gadiyatov <79095299+Anton-Gadiyatov@users.noreply.github.com> Date: Tue, 28 Jun 2022 13:13:21 +0300 Subject: [PATCH 124/308] fix typo --- Practice/SEF3-4.ru.md | 2 +- Practice/SEF5-6.ru.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Practice/SEF3-4.ru.md b/Practice/SEF3-4.ru.md index 95d1683..bac1473 100644 --- a/Practice/SEF3-4.ru.md +++ b/Practice/SEF3-4.ru.md @@ -64,4 +64,4 @@ ## Регистрация тем - Нужно заполнить форму: https://forms.gle/u7v7nUFxamcgJ2aQ6 -- И дать мне права на редозиторий, мой аккаунт: https://github.com/tshemsedinov +- И дать мне права на репозиторий, мой аккаунт: https://github.com/tshemsedinov diff --git a/Practice/SEF5-6.ru.md b/Practice/SEF5-6.ru.md index 04b8c7a..a277c03 100644 --- a/Practice/SEF5-6.ru.md +++ b/Practice/SEF5-6.ru.md @@ -52,4 +52,4 @@ ## Регистрация тем - Нужно заполнить форму: https://forms.gle/u7v7nUFxamcgJ2aQ6 -- И дать мне права на редозиторий, мой аккаунт: https://github.com/tshemsedinov +- И дать мне права на репозиторий, мой аккаунт: https://github.com/tshemsedinov From ee504469130ea04f68c0966f129371ef0d597a5f Mon Sep 17 00:00:00 2001 From: Anton Telichenko Date: Wed, 3 Aug 2022 13:04:06 +0300 Subject: [PATCH 125/308] Update NodeJS.md (#75) Co-authored-by: Timur Shemsedinov --- Courses/NodeJS.md | 272 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 272 insertions(+) diff --git a/Courses/NodeJS.md b/Courses/NodeJS.md index 74a737e..4d7c254 100644 --- a/Courses/NodeJS.md +++ b/Courses/NodeJS.md @@ -151,3 +151,275 @@ ## Вспомогательные темы - [Асинхронный пул для worker thread pool в Node.js](https://youtu.be/Jj5KZRq4wYI) + +# Node.js (таймкоды) + +## [Node.js Введение в технологию](https://youtu.be/WBcHgaoHh1k) + +- [2:53 Основные идеи Node.js](https://youtu.be/WBcHgaoHh1k?t=173) +- [13:09 Приемущества/Недостатки JavaScript](https://youtu.be/WBcHgaoHh1k?t=789) +- [16:58 Что такое Node.js](https://youtu.be/WBcHgaoHh1k?t=1018) +- [20:52 Начало работы с Node.js](https://youtu.be/WBcHgaoHh1k?t=1252) +- [25:00 Встроенный API](https://youtu.be/WBcHgaoHh1k?t=1500) +- [33:55 Менеджер пакетов NPM](https://youtu.be/WBcHgaoHh1k?t=2035) +- [40:45 Структура проектов](https://youtu.be/WBcHgaoHh1k?t=2445) +- [44:35 Файлы package.json, package-lock.json](https://youtu.be/WBcHgaoHh1k?t=2675) +- [52:03 Репозиторий NPM](https://youtu.be/WBcHgaoHh1k?t=3123) +- [59:50 Однопоточность и многопоточность](https://youtu.be/WBcHgaoHh1k?t=3590) +- [1:05:30 Межпроцессовое взаимодействие](https://youtu.be/WBcHgaoHh1k?t=3930) +- [1:06:08 Асинхронный ввод/вывод](https://youtu.be/WBcHgaoHh1k?t=3968) +- [1:11:11 Производительность](https://youtu.be/WBcHgaoHh1k?t=4271) +- [1:13:02 Память](https://youtu.be/WBcHgaoHh1k?t=4382) +- [1:16:21 Отладка и профилирование](https://youtu.be/WBcHgaoHh1k?t=4581) +- [1:21:27 Ошибки](https://youtu.be/WBcHgaoHh1k?t=4887) +- [1:26:42 Обновление кода и перезапуск](https://youtu.be/WBcHgaoHh1k?t=5202) +- [1:28:43 Ассинхронное программирование](https://youtu.be/WBcHgaoHh1k?t=5323) +- [1:30:00 Примеры внедрения, интеракт. TV](https://youtu.be/WBcHgaoHh1k?t=5400) +- [1:31:00 Сферы применения Node.js](https://youtu.be/WBcHgaoHh1k?t=5460) +- [1:36:44 Полезные материалы](https://youtu.be/WBcHgaoHh1k?t=5804) + +## [Node.js в 2019 году (состояние и перспективы)](https://youtu.be/CUU49jjHloM) + +- [0:45 Node.js уже 10 лет](https://youtu.be/CUU49jjHloM?t=45) +- [5:39 Обзор новых возможностей Node.js](https://youtu.be/CUU49jjHloM?t=339) +- [18:14 Возможности для паралельного программирования на Node.js](https://youtu.be/CUU49jjHloM?t=1094) +- [20:08 Как работают thread и process в Node.js](https://youtu.be/CUU49jjHloM?t=1208) +- [20:47 Обзор последствий отсутствия изоляции в Node.js](https://youtu.be/CUU49jjHloM?t=1247) +- [20:33 Проблемы отсутствия изоляции в Node.js](https://youtu.be/CUU49jjHloM?t=1233) +- [38:27 Способы изоляции Node.js кода](https://youtu.be/CUU49jjHloM?t=2307) +- [48:24 Изоляция и кластеризации с threads в Node.js v12](https://youtu.be/CUU49jjHloM?t=2904) +- [56:59 Области применения Node.js: Локальные приложения](https://youtu.be/CUU49jjHloM?t=3419) +- [1:02:02 Области применения Node.js: Сервера](https://youtu.be/CUU49jjHloM?t=3722) +- [1:05:49 Области применения Node.js: Клиенты](https://youtu.be/CUU49jjHloM?t=3949) +- [1:08:58 Области применения Node.js: Hardware](https://youtu.be/CUU49jjHloM?t=4138) +- [1:09:28 Редкие области применения Node.js](https://youtu.be/CUU49jjHloM?t=4168) +- [1:11:55 Не подходящие области применения Node.js](https://youtu.be/CUU49jjHloM?t=4315) +- [1:13:53 Deno как экспементальная альтернатива Node.js](https://youtu.be/CUU49jjHloM?t=4433) +- [1:21:02 Обзор ссылок по теме](https://youtu.be/CUU49jjHloM?t=4862) +- [1:23:06 Ответы на вопросы](https://youtu.be/CUU49jjHloM?t=4986) + +## [Асинхронное программирование в Node.js и JavaScript](https://youtu.be/hY6Z6qNYzmc) + +- [5:45 Callbacks](https://youtu.be/hY6Z6qNYzmc?t=345) +- [10:00 Async.js or analogues](https://youtu.be/hY6Z6qNYzmc?t=600) +- [15:47 Events](https://youtu.be/hY6Z6qNYzmc?t=947) +- [18:00 Promise](https://youtu.be/hY6Z6qNYzmc?t=1080) +- [25:20 async/await](https://youtu.be/hY6Z6qNYzmc?t=1520) +- [27:10 Functor + Chaining + composition](https://youtu.be/hY6Z6qNYzmc?t=1630) +- [30:49 Problems of callback, async.js, Proimise, async/await](https://youtu.be/hY6Z6qNYzmc?t=1849) +- [34:00 Add timeout to any function](https://youtu.be/hY6Z6qNYzmc?t=2040) +- [36:55 Make function cancelable](https://youtu.be/hY6Z6qNYzmc?t=2215) +- [37:59 More wrappers](https://youtu.be/hY6Z6qNYzmc?t=2279) +- [39:22 Promisify and Callbackify](https://youtu.be/hY6Z6qNYzmc?t=2362) +- [48:47 Sync function to async](https://youtu.be/hY6Z6qNYzmc?t=2927) +- [41:43 Sync function to Promise](https://youtu.be/hY6Z6qNYzmc?t=2503) +- [43:17 Convertors](https://youtu.be/hY6Z6qNYzmc?t=2597) +- [43:31 Metasync](https://youtu.be/hY6Z6qNYzmc?t=2611) +- [45:26 Function composition](https://youtu.be/hY6Z6qNYzmc?t=2726) +- [47:09 Adynchronous function composition](https://youtu.be/hY6Z6qNYzmc?t=2829) +- [47:58 Flow communication like in electronics](https://youtu.be/hY6Z6qNYzmc?t=2878) +- [50:06 Collectors](https://youtu.be/hY6Z6qNYzmc?t=3006) +- [59:17 Queue](https://youtu.be/hY6Z6qNYzmc?t=3557) + +## [Обзор встроенного Node.js API](https://youtu.be/sOkjR-N6IAs) + +- [1:45 Readline](https://youtu.be/sOkjR-N6IAs?t=105) +- [2:42 Stream](https://youtu.be/sOkjR-N6IAs?t=162) +- [6:51 Buffer](https://youtu.be/sOkjR-N6IAs?t=411) +- [9:15 Child Processes](https://youtu.be/sOkjR-N6IAs?t=555) +- [12:24 Cluster](https://youtu.be/sOkjR-N6IAs?t=744) +- [16:23 Crypto](https://youtu.be/sOkjR-N6IAs?t=983) +- [17:47 DNS](https://youtu.be/sOkjR-N6IAs?t=1067) +- [19:30 Domain](https://youtu.be/sOkjR-N6IAs?t=1170) +- [22:44 Events](https://youtu.be/sOkjR-N6IAs?t=1364) +- [23:16 Errors, Timers](https://youtu.be/sOkjR-N6IAs?t=1396) +- [27:26 File System](https://youtu.be/sOkjR-N6IAs?t=1646) +- [28:56 HTTP](https://youtu.be/sOkjR-N6IAs?t=1736) +- [31:49 OS](https://youtu.be/sOkjR-N6IAs?t=1909) +- [33:38 Process](https://youtu.be/sOkjR-N6IAs?t=2018) +- [41:55 Path](https://youtu.be/sOkjR-N6IAs?t=2515) +- [43:15 TLS/SSL](https://youtu.be/sOkjR-N6IAs?t=2595) +- [44:44 URL](https://youtu.be/sOkjR-N6IAs?t=2684) +- [45:22 Util](https://youtu.be/sOkjR-N6IAs?t=2722) +- [47:00 V8/VM](https://youtu.be/sOkjR-N6IAs?t=2820) +- [49:55 Worker Threads](https://youtu.be/sOkjR-N6IAs?t=2995) +- [50:56 ZLIB](https://youtu.be/sOkjR-N6IAs?t=3056) +- [51:55 Modules](https://youtu.be/sOkjR-N6IAs?t=3115) + +## [Настройка среды: Node.js, npm, git, eslint](https://youtu.be/hSyA7tcNaCE) + +## [Работа с файлами, буферами и файловыми потоками в Node.js](https://youtu.be/eQGBS15vUac) + +- [1:39 Работа с файлами](https://youtu.be/eQGBS15vUac?t=99) +- [35:12 Буферы](https://youtu.be/eQGBS15vUac?t=2112) +- [43:46 Файловые потоки](https://youtu.be/eQGBS15vUac?t=2626) + +## [Наблюдение за файловой системой в Node.js](https://youtu.be/29QINR9rruQ) + +- [0:32 File watch](https://youtu.be/29QINR9rruQ?t=32) +- [4:40 Folder watch](https://youtu.be/29QINR9rruQ?t=280) +- [8:40 Server](https://youtu.be/29QINR9rruQ?t=520) +- [12:55 LiveReload](https://youtu.be/29QINR9rruQ?t=775) +- [24:50 LiverReload в impress](https://youtu.be/29QINR9rruQ?t=1490) + +## [Консоль и командная строка в JavaScript и Node.js](https://youtu.be/5aSZyKi5BmE) + +- [1:20 console](https://youtu.be/5aSZyKi5BmE?t=80) +- [16:00 readline](https://youtu.be/5aSZyKi5BmE?t=960) +- [21:35 cli](https://youtu.be/5aSZyKi5BmE?t=1295) +- [31:15 делаем красивый login screen](https://youtu.be/5aSZyKi5BmE?t=1875) + +## [Архитектурный подход к программированию](https://youtu.be/d_vyO2CkiOc) + +- [00:00:00 Когда нужна архитектура](https://youtu.be/d_vyO2CkiOc?t=0) +- [00:06:07 Принятие решений](https://youtu.be/d_vyO2CkiOc?t=367) +- [00:09:58 Типы связывания](https://youtu.be/d_vyO2CkiOc?t=598) +- [00:20:00 Ошибки](https://youtu.be/d_vyO2CkiOc?t=1200) +- [00:27:15 Принятие решений](https://youtu.be/d_vyO2CkiOc?t=1635) +- [00:37:05 Эволюция архитектурных решений](https://youtu.be/d_vyO2CkiOc?t=2225) +- [00:58:13 Схема современной архитектуры](https://youtu.be/d_vyO2CkiOc?t=3493) +- [01:01:40 субд в браузере](https://youtu.be/d_vyO2CkiOc?t=3700) +- [01:05:20 Альтернативные варианты](https://youtu.be/d_vyO2CkiOc?t=3920) +- [01:12:20 Как на самом деле](https://youtu.be/d_vyO2CkiOc?t=4340) +- [01:13:45 Архитектура мечты](https://youtu.be/d_vyO2CkiOc?t=4425) +- [01:16:45 Современные возможности и требования ](https://youtu.be/d_vyO2CkiOc?t=4605) +- [01:25:20 Топологии](https://youtu.be/d_vyO2CkiOc?t=5120) +- [01:30:45 Итог](https://youtu.be/d_vyO2CkiOc?t=5445) + +## [Модули, слои, структура проекта, песочницы в JavaScript и Node.js](https://youtu.be/O7A9chb573E) + +- [1:00 Пример структуры приложения](https://youtu.be/O7A9chb573E?t=60) +- [14:23 Примеры плохо и хорошо структурированного кода ](https://youtu.be/O7A9chb573E?t=863) +- [25:46 Песочницы](https://youtu.be/O7A9chb573E?t=1546) + +## [Инверсия управления и внедрение зависимостей в Node.js](https://youtu.be/Fz86Fdjz-LM) + +## [Межпроцессовое взаимодействие в Node.js](https://youtu.be/2OXWZFMvfbc) + +## [Слои, связанность и связность кода в JavaScript](https://youtu.be/A3RpwNlVeyY) + +## [Клиент-сервер на Node.js TCP и UDP, DNS](https://youtu.be/bHn-wTlTTR0) + +- [2:25 TCP, простой пример клиент/сервер](https://youtu.be/bHn-wTlTTR0?t=145) +- [20:20 TCP, пример сложнее](https://youtu.be/bHn-wTlTTR0?t=1220) +- [29:26 UDP](https://youtu.be/bHn-wTlTTR0?t=1766) +- [35:14 DNS](https://youtu.be/bHn-wTlTTR0?t=2114) + +## [HTTP сервер на Node.js (routing, cluster, IP sticky)](https://youtu.be/7Ufxj0oTaUo) + +## [HTTP сессии и cookies на чистом Node.js](https://youtu.be/T_wKXuWW4Wo) + +## [HTTP запросы в браузере и Node.js: XMLHttpRequest, fetch](https://youtu.be/wMMki2FEYGY) + +## [Разработка API на Node.js (клиент и сервер)](https://youtu.be/-az912XBCu8) + +## [WebSocket сервер на Node.js (электронные таблицы и чат)](https://youtu.be/Sf7ln3n16ws) + +## [Скаффолдинг для API, UI и данных](https://youtu.be/lipkLQVqDd8) + +## [Высоконагруженные распределенные приложения на Node.js](https://youtu.be/7tfZDABPvVs) + +## [Отдача статики в Node.js](https://youtu.be/n_AdKIzbpBc) + +## [Слой доступа к данным, курсор, транзакция](https://youtu.be/CRcSWtWVvrA) + +## [Работа с базами данных в Node.js на примере PostgreSQL](https://youtu.be/2tDvHQCBt3w) + +## [Паттерн Команда (Command) действие и параметры как объект](https://youtu.be/vER0vYL4hM4) + +## [CQS, CQRS, Event Sourcing - Разделение запросов и модификации данных](https://youtu.be/T2tRc80Q8Qw) + +## [Применение Event Sourcing (command, read, write, bus)](https://youtu.be/kFNtKiK2SPs) + +## [Модель акторов для параллельных вычислений](https://youtu.be/xp5MVKEqxY4) + +## [Утечки памяти в Node.js и JavaScript, сборка мусора и профилирование](https://youtu.be/0oZa64SB2wM) + +## [Atomics, SharedArrayBuffer, worker_threads в Node.js](https://youtu.be/zLm8pnbxSII) + +- [00:00 - початок ](https://youtu.be/zLm8pnbxSII?t=0) +- [03:53 - про worker_threads](https://youtu.be/zLm8pnbxSII?t=233) +- [12:20 - сепарація на worker i master](https://youtu.be/zLm8pnbxSII?t=740) +- [14:57 - як використовувати worker ](https://youtu.be/zLm8pnbxSII?t=897) +- [25:00 - про Atomics](https://youtu.be/zLm8pnbxSII?t=1500) +- [41:00 - Atomics i worker_threads робота в парі](https://youtu.be/zLm8pnbxSII?t=2460) + +## [Семафоры и мьютексы в JavaScript и Node.js](https://youtu.be/JNLrITevhRI) + +- [00:00 - теорія](https://youtu.be/JNLrITevhRI?t=0) +- [8:55 - приклад worker_threads без семафора ](https://youtu.be/JNLrITevhRI?t=535) +- [15:29 - про семафор, семафор бінарний, семафор з лічильником і Atomics ](https://youtu.be/JNLrITevhRI?t=929) +- [53:52 - мютекси та різниця між семафором ](https://youtu.be/JNLrITevhRI?t=3232) +- [58:28 - про deadlock](https://youtu.be/JNLrITevhRI?t=3508) +- [1:02:12 - про livelock і стан гонки](https://youtu.be/JNLrITevhRI?t=3732) + +## [Разделяемая память в многопоточном Node.js. Тимур Шемсединов. JS Fest 2019 Spring](https://youtu.be/KNsm_iIQt7U) + +## [Необработанные ошибки в промисах на Node.js](https://youtu.be/1Ml5NE2fsZ8) + +## [Проблема асинхронного стектрейса в JavaScript и Node.js](https://youtu.be/pfiHTx3j87Y) + +## [Логирование на Node.js и JavaScript](https://youtu.be/4DkZj2Cdokc) + +## [Graceful Shutdown в Node.js](https://youtu.be/ZstnowFeCe0) + +## [Безопасность приложений Node.js Security](https://youtu.be/Pdfo1G-gI6s) + +## [Serverless Clouds (FaaS) и изоляция контекстов запросов в Node.js](https://youtu.be/x-Rd6fPV6L8) + +## [Node.js в 2021: обзор платформы и вызовы на следующее десятилетие](https://youtu.be/nnB7ADYso8s) + +## [Семинар: Node.js в 2021, ответы на вопросы и обсуждение](https://youtu.be/zYRDhxj0zhQ) + +## [GRASP принципы с адаптацией для JavaScript и Node.js](https://youtu.be/ExauFjYV_lQ) + +- [5:03 Information Expert](https://youtu.be/ExauFjYV_lQ?t=303) +- [13:06 Creator](https://youtu.be/ExauFjYV_lQ?t=786) +- [18:15 Cohesion & Coupling](https://youtu.be/ExauFjYV_lQ?t=1095) +- [21:33 Controller](https://youtu.be/ExauFjYV_lQ?t=1293) +- [24:58 Polymorphism](https://youtu.be/ExauFjYV_lQ?t=1498) +- [31:55 Indirection](https://youtu.be/ExauFjYV_lQ?t=1915) +- [34:34 Pure Fabrication](https://youtu.be/ExauFjYV_lQ?t=2074) +- [38:36 Protected Variations](https://youtu.be/ExauFjYV_lQ?t=2316) + +## [GRASP: принцип информационный эксперт с адаптацией для JavaScript и Node.js](https://youtu.be/cCHL329_As0) + +## [GRASP: Зацепление и связность в JavaScript и Node.js - coupling and cohesion](https://youtu.be/IGXdPOZ3Fyk) + +## [GRASP: Чистая выдумка для JavaScript и Node.js - Pure Fabrication](https://youtu.be/CV577a0RHBM) + +## [GRASP: Декомпозиция класса Application из библиотеки impress технологического стека Metarhia](https://youtu.be/4AMVQ2-2DcM) + +## [Node.js - плохие подходы и хорошие стороны - Postindustria Podcast](https://youtu.be/oEyS_TNiw2g) + +## [Node.js модули: ECMA, Common.js, Module API](https://youtu.be/CJr2vS3hjMU) + +- [1:02 export модулей](https://youtu.be/CJr2vS3hjMU?t=62) +- [3:00 require модулей](https://youtu.be/CJr2vS3hjMU?t=180) +- [5:35 require-resolve модулей](https://youtu.be/CJr2vS3hjMU?t=335) +- [12:15 cache](https://youtu.be/CJr2vS3hjMU?t=735) +- [18:38 немного об singleton](https://youtu.be/CJr2vS3hjMU?t=1118) +- [19:53 модуль global](https://youtu.be/CJr2vS3hjMU?t=1193) +- [20:43 пример с mixin-ами](https://youtu.be/CJr2vS3hjMU?t=1243) +- [25:13 пример ecma скрипт модуля - export](https://youtu.be/CJr2vS3hjMU?t=1513) +- [26:10 пример ecma скрипт модуля - import](https://youtu.be/CJr2vS3hjMU?t=1570) +- [27:20 пример динамического импорта](https://youtu.be/CJr2vS3hjMU?t=1640) +- [31:10 загрузка ф-ии createRequire](https://youtu.be/CJr2vS3hjMU?t=1870) +- [41:00 подгрузка module через require](https://youtu.be/CJr2vS3hjMU?t=2460) +- [43:40 подгрузка module через import](https://youtu.be/CJr2vS3hjMU?t=2620) + +## [Node.js модули и пакеты формата ECMA и CommonJS, использование package.json и node_modules](https://youtu.be/31sX_3IbXs4) + +- [1:00 подгрузка пакетов package](https://youtu.be/31sX_3IbXs4?t=60) +- [5:40 загрузка пакетов](https://youtu.be/31sX_3IbXs4?t=340) +- [9:00 подгрузка файлов нового формата .mjs](https://youtu.be/31sX_3IbXs4?t=540) +- [10:47 импорт ecma скрипт модулей с .js файлов](https://youtu.be/31sX_3IbXs4?t=647) +- [13:20 export пакетов](https://youtu.be/31sX_3IbXs4?t=800) +- [22:30 сравнение cache-й модулей](https://youtu.be/31sX_3IbXs4?t=1350) + +## [Асинхронный пул для worker thread pool в Node.js](https://youtu.be/Jj5KZRq4wYI) + +## [Контрактное программирование с примерами на JavaScript и Node.js](https://youtu.be/K5_kSUvbGEQ) + +## [Hacktoberfest 2021: лайвкодинг и ревью кода, Node.js worker_threads и thread pool для Metarhia](https://youtu.be/qipIRQptP_4) + From 9236926ede5dfe50d163907828f10492c09b705a Mon Sep 17 00:00:00 2001 From: Anton Telichenko Date: Wed, 3 Aug 2022 13:14:22 +0300 Subject: [PATCH 126/308] Update Functional.md (#74) Co-authored-by: Timur Shemsedinov --- Courses/Functional.md | 165 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 165 insertions(+) diff --git a/Courses/Functional.md b/Courses/Functional.md index 57cfee5..21e382e 100644 --- a/Courses/Functional.md +++ b/Courses/Functional.md @@ -29,3 +29,168 @@ - [Асинхронная композиция функций](https://youtu.be/3ZCrMlMpOrM) - Примеры кода: https://github.com/HowProgrammingWorks/AsyncCompose - [Принцип подстановки Барбары Лисков](https://youtu.be/RbhYxygxroc) + +# Functional programming (таймкоды) + +## [Функции, лямбды (стрелочные функции), контексты, замыкания в JavaScript](https://youtu.be/pn5myCmpV2U) + +- [00:00:00 Введение ](https://youtu.be/pn5myCmpV2U?t=0) +- [00:11:22 Функция объявление (Declaration)](https://youtu.be/pn5myCmpV2U?t=682) +- [00:12:46 Функция выражение (Expression)](https://youtu.be/pn5myCmpV2U?t=766) +- [00:16:07 Лямбда-выражение (Lambda expression) или функция-стрелка (Arrow function) ](https://youtu.be/pn5myCmpV2U?t=967) +- [00:16:43 Лямбда-функция (Lambda function) ](https://youtu.be/pn5myCmpV2U?t=1003) +- [00:18:45 Область видимости (Scope)](https://youtu.be/pn5myCmpV2U?t=1125) +- [00:25:00 Функции, как абстракции](https://youtu.be/pn5myCmpV2U?t=1500) +- [00:26:43 Методы функции (name, length, toString( ) )](https://youtu.be/pn5myCmpV2U?t=1603) +- [00:31:26 Значения по умолчанию у функции ](https://youtu.be/pn5myCmpV2U?t=1886) +- [00:36:46 Rest-оператор (...args)](https://youtu.be/pn5myCmpV2U?t=2206) +- [00:41:49 Способ определения функции, через new Function](https://youtu.be/pn5myCmpV2U?t=2509) +- [00:44:46 Функции внутри объекта](https://youtu.be/pn5myCmpV2U?t=2686) +- [00:50:42 Обращение к полям объекта из привязанной функции, через this](https://youtu.be/pn5myCmpV2U?t=3042) +- [00:55:24 История синтаксиса создания контекстов, через самовызывающиеся функции ( IIFE)](https://youtu.be/pn5myCmpV2U?t=3324) +- [00:58:30 Методы функции, наследуемой от объекта (call, apply)](https://youtu.be/pn5myCmpV2U?t=3510) +- [01:00:53 Комментирование функций](https://youtu.be/pn5myCmpV2U?t=3653) +- [01:01:27 Задание декомпозиции функции](https://youtu.be/pn5myCmpV2U?t=3687) +- [01:04:24 Замыкание: context ](https://youtu.be/pn5myCmpV2U?t=3864) +- [01:08:41 Замыкание: chainning ](https://youtu.be/pn5myCmpV2U?t=4121) +- [01:11:55 Замыкание: summator ](https://youtu.be/pn5myCmpV2U?t=4315) +- [01:14:16 Замыкание: recursion](https://youtu.be/pn5myCmpV2U?t=4456) + +## [Частичное применение и каррирование в JavaScript ( Partial application )](https://youtu.be/ND8KQ5xjk7o) + +- [00:00:00 Замыкание ](https://youtu.be/ND8KQ5xjk7o?t=0) +- [00:04:54 Лямбда- функция ](https://youtu.be/ND8KQ5xjk7o?t=294) +- [00:06:06 Метод bind ](https://youtu.be/ND8KQ5xjk7o?t=366) +- [00:08:30 Абстрагированный пример функции ](https://youtu.be/ND8KQ5xjk7o?t=510) +- [00:13:42 Абстрагированный пример функции (расширение) ](https://youtu.be/ND8KQ5xjk7o?t=822) +- [00:15:47 Неправильная реализация каррирования ](https://youtu.be/ND8KQ5xjk7o?t=947) +- [00:22:22 Правильная реализация каррирования ](https://youtu.be/ND8KQ5xjk7o?t=1342) +- [00:28:54 Правильная реализация каррирования (расширение)](https://youtu.be/ND8KQ5xjk7o?t=1734) +- [00:31:41 Функциональные абстракции (superposition)](https://youtu.be/ND8KQ5xjk7o?t=1901) +- [00:38:02 Функциональные абстракции, с сохранением выражений (composition)](https://youtu.be/ND8KQ5xjk7o?t=2282) +- [00:45:05 Композиция с 2 функциями](https://youtu.be/ND8KQ5xjk7o?t=2705) +- [00:46:05 Композиция с n - функциями, при помощи метода reduce](https://youtu.be/ND8KQ5xjk7o?t=2765) +- [00:51:25 Композиция с n - функциями, при помощи цикла ](https://youtu.be/ND8KQ5xjk7o?t=3085) +- [00:54:29 Композиция с n - функциями, при помощи рекурсии](https://youtu.be/ND8KQ5xjk7o?t=3269) +- [00:57:40 Композиция асинхронных функций ](https://youtu.be/ND8KQ5xjk7o?t=3460) +- [01:01:27 Обобщение](https://youtu.be/ND8KQ5xjk7o?t=3687) + +## [Функции высшего порядка, колбеки, события на JavaScript (HigherOrderFunctions, callbacks, events)](https://youtu.be/1vqATwbGHnc) + +- [00:00:00 Определение ](https://youtu.be/1vqATwbGHnc?t=0) +- [00:02:03 Математическая функция ](https://youtu.be/1vqATwbGHnc?t=123) +- [00:05:57 Функция обратного вызова (callback) ](https://youtu.be/1vqATwbGHnc?t=357) +- [00:09:33 Замыкание ](https://youtu.be/1vqATwbGHnc?t=573) +- [00:10:51 Цепочка вызовов ](https://youtu.be/1vqATwbGHnc?t=651) +- [00:12:40 Сохранение кэша с помощью замыкания](https://youtu.be/1vqATwbGHnc?t=760) +- [00:18:29 Добавление функции поведение логирования](https://youtu.be/1vqATwbGHnc?t=1109) +- [00:21:45 Обобщение ](https://youtu.be/1vqATwbGHnc?t=1305) +- [00:22:45 Сallback](https://youtu.be/1vqATwbGHnc?t=1365) +- [00:25:32 Сallback асинхронной функции считывание файла](https://youtu.be/1vqATwbGHnc?t=1532) +- [00:28:36 Сallback именованный](https://youtu.be/1vqATwbGHnc?t=1716) +- [00:33:01 Сallback-timer ](https://youtu.be/1vqATwbGHnc?t=1981) +- [00:36:20 Сallback-timer-curry](https://youtu.be/1vqATwbGHnc?t=2180) +- [00:38:59 Listener](https://youtu.be/1vqATwbGHnc?t=2339) +- [00:41:10 Listener-timer](https://youtu.be/1vqATwbGHnc?t=2470) +- [00:46:59 Event](https://youtu.be/1vqATwbGHnc?t=2819) +- [00:53:45 Event-imitter ](https://youtu.be/1vqATwbGHnc?t=3225) +- [00:57:48 Deferred object (отложенный объект)](https://youtu.be/1vqATwbGHnc?t=3468) +- [01:01:31 Errors](https://youtu.be/1vqATwbGHnc?t=3691) + +## [Примеси, обертки, декораторы, мемоизация в JavaScript (Wrappers)](https://youtu.be/oRQ0kQr1N-U) + +- [00:00:00 Синхронная функция-обертка ](https://youtu.be/oRQ0kQr1N-U?t=0) +- [00:02:55 Синхронная универсальная функция-обертка ](https://youtu.be/oRQ0kQr1N-U?t=175) +- [00:08:28 Асинхронная универсальная функция-обертка ](https://youtu.be/oRQ0kQr1N-U?t=508) +- [00:15:50 Синхронная функция-обертка, которая добавляет поведение (timeout)](https://youtu.be/oRQ0kQr1N-U?t=950) +- [00:22:45 Асинхронная функция-обертка, которая добавляет поведение (timeout)](https://youtu.be/oRQ0kQr1N-U?t=1365) +- [00:25:38 Функция-обертка, которая ограничивает вызов функции до одного вызова (once) ](https://youtu.be/oRQ0kQr1N-U?t=1538) +- [00:27:36 Функция-обертка, которая ограничивает вызов функции до n-го вызова (limit)](https://youtu.be/oRQ0kQr1N-U?t=1656) +- [00:29:50 Функция-обертка, которая отменяет вызов функции (cancel)](https://youtu.be/oRQ0kQr1N-U?t=1790) +- [00:32:29 Функция-обертка с методами timeout, limit, cancel](https://youtu.be/oRQ0kQr1N-U?t=1949) +- [00:39:03 Функция-обертка с методами timeout, limit, cancel (оптимизированная)](https://youtu.be/oRQ0kQr1N-U?t=2343) +- [00:42:28 Функция-обертка, которая ограничивает один вызов за 200 мс (throttle)](https://youtu.be/oRQ0kQr1N-U?t=2548) +- [00:45:47 Примесь поля через точку ](https://youtu.be/oRQ0kQr1N-U?t=2747) +- [00:51:35 Примесь поля через функцию extend](https://youtu.be/oRQ0kQr1N-U?t=3095) +- [00:57:35 Примесь поля через object.assign( )](https://youtu.be/oRQ0kQr1N-U?t=3455) +- [00:59:18 Примесь поведения ](https://youtu.be/oRQ0kQr1N-U?t=3558) +- [01:02:23 Примесь изменения класса](https://youtu.be/oRQ0kQr1N-U?t=3743) +- [01:06:50 Определение](https://youtu.be/oRQ0kQr1N-U?t=4010) +- [01:07:30 Реализация простой мемоизации ](https://youtu.be/oRQ0kQr1N-U?t=4050) +- [01:14:43 Реализация простой мемоизации с проверкой скорости ](https://youtu.be/oRQ0kQr1N-U?t=4483) +- [01:20:43 Удаление накопленного кэша ](https://youtu.be/oRQ0kQr1N-U?t=4843) +- [01:25:35 Асинхронная мемоизация ](https://youtu.be/oRQ0kQr1N-U?t=5135) +- [01:31:10 Преобразование аргументов и ключей в hash-функцию](https://youtu.be/oRQ0kQr1N-U?t=5470) +- [01:33:32 Реализация сложной мемоизации](https://youtu.be/oRQ0kQr1N-U?t=5612) + +## [Чеининг функций и объектов, обработка ошибок в JavaScript](https://youtu.be/PfuEfIiLX34) + +- [00:00:00 Введение ](https://youtu.be/PfuEfIiLX34?t=0) +- [00:01:10 Чеининг через синтаксис вызова функций ](https://youtu.be/PfuEfIiLX34?t=70) +- [00:02:12 Prototype ](https://youtu.be/PfuEfIiLX34?t=132) +- [00:05:45 Сlass](https://youtu.be/PfuEfIiLX34?t=345) +- [00:06:11 Functor](https://youtu.be/PfuEfIiLX34?t=371) +- [00:11:54 Mutable](https://youtu.be/PfuEfIiLX34?t=714) +- [00:16:34 Iterator](https://youtu.be/PfuEfIiLX34?t=994) +- [00:26:18 Promise ](https://youtu.be/PfuEfIiLX34?t=1578) +- [00:26:35 Test](https://youtu.be/PfuEfIiLX34?t=1595) +- [00:37:08 Compare ](https://youtu.be/PfuEfIiLX34?t=2228) +- [00:39:45 Benchmark](https://youtu.be/PfuEfIiLX34?t=2385) +- [00:40:48 Запуск и анализ тестов ](https://youtu.be/PfuEfIiLX34?t=2448) +- [01:03:48 Первый способ возвращение ошибок в синхронном коде ](https://youtu.be/PfuEfIiLX34?t=3828) +- [01:09:24 Второй способ возвращение ошибок в синхронном коде ](https://youtu.be/PfuEfIiLX34?t=4164) +- [01:12:26 Возвращение ошибок в асинхронном коде ](https://youtu.be/PfuEfIiLX34?t=4346) +- [01:16:14 Корректное возвращение ошибок ](https://youtu.be/PfuEfIiLX34?t=4574) +- [01:20:03 Обработка ошибок c promise ](https://youtu.be/PfuEfIiLX34?t=4803) +- [01:23:58 Обработка ошибок c async-await](https://youtu.be/PfuEfIiLX34?t=5038) + +## [Функциональное программирование на JavaScript](https://youtu.be/0JxSs_GcvbQ) + +## [Функциональные объекты, функторы и монады в JavaScript](https://youtu.be/3Z7f0Gi8pxw) + +- [00:00:00 Определение функтора ](https://youtu.be/3Z7f0Gi8pxw?t=0) +- [00:01:40 Функтор из прототипа ](https://youtu.be/3Z7f0Gi8pxw?t=100) +- [00:08:17 Функтор из прототипа (упрощенный) ](https://youtu.be/3Z7f0Gi8pxw?t=497) +- [00:09:14 Функтор из замыкания ](https://youtu.be/3Z7f0Gi8pxw?t=554) +- [00:11:49 Функтор из замыкания с тернарным оператором](https://youtu.be/3Z7f0Gi8pxw?t=709) +- [00:12:44 Аппликативный функтор из прототипа ](https://youtu.be/3Z7f0Gi8pxw?t=764) +- [00:18:08 Аппликативный функтор из замыкания (монада)](https://youtu.be/3Z7f0Gi8pxw?t=1088) +- [00:23:11 Пример применения монады ](https://youtu.be/3Z7f0Gi8pxw?t=1391) +- [00:28:37 Функциональный объект ](https://youtu.be/3Z7f0Gi8pxw?t=1717) +- [00:39:44 Пример применения функционального объекта](https://youtu.be/3Z7f0Gi8pxw?t=2384) +- [00:45:27 Обобщение](https://youtu.be/3Z7f0Gi8pxw?t=2727) + +## [Отмена асинхронных операций, cancellable callback and Promise в JavaScript](https://youtu.be/T8fXlnqI4Ws) + +## [Future: Асинхронность на фьючерах без состояния](https://youtu.be/22ONv3AGXdk) + +## [Примеси, обертки, декораторы, мемоизация](https://youtu.be/2h9syXN5wO0) + +- [00:00:00 Синхронная функция-обертка ](https://youtu.be/2h9syXN5wO0?t=0) +- [00:02:55 Синхронная универсальная функция-обертка ](https://youtu.be/2h9syXN5wO0?t=175) +- [00:08:28 Асинхронная универсальная функция-обертка ](https://youtu.be/2h9syXN5wO0?t=508) +- [00:15:50 Синхронная функция-обертка, которая добавляет поведение (timeout)](https://youtu.be/2h9syXN5wO0?t=950) +- [00:22:45 Асинхронная функция-обертка, которая добавляет поведение (timeout)](https://youtu.be/2h9syXN5wO0?t=1365) +- [00:25:38 Функция-обертка, которая ограничивает вызов функции до одного вызова (once) ](https://youtu.be/2h9syXN5wO0?t=1538) +- [00:27:36 Функция-обертка, которая ограничивает вызов функции до n-го вызова (limit)](https://youtu.be/2h9syXN5wO0?t=1656) +- [00:29:50 Функция-обертка, которая отменяет вызов функции (cancel)](https://youtu.be/2h9syXN5wO0?t=1790) +- [00:32:29 Функция-обертка с методами timeout, limit, cancel](https://youtu.be/2h9syXN5wO0?t=1949) +- [00:39:03 Функция-обертка с методами timeout, limit, cancel (оптимизированная)](https://youtu.be/2h9syXN5wO0?t=2343) +- [00:42:28 Функция-обертка, которая ограничивает один вызов за 200 мс (throttle)](https://youtu.be/2h9syXN5wO0?t=2548) +- [00:45:47 Примесь поля через точку ](https://youtu.be/2h9syXN5wO0?t=2747) +- [00:51:35 Примесь поля через функцию extend](https://youtu.be/2h9syXN5wO0?t=3095) +- [00:57:35 Примесь поля через object.assign( )](https://youtu.be/2h9syXN5wO0?t=3455) +- [00:59:18 Примесь поведения ](https://youtu.be/2h9syXN5wO0?t=3558) +- [01:02:23 Примесь изменения класса](https://youtu.be/2h9syXN5wO0?t=3743) +- [01:06:50 Определение](https://youtu.be/2h9syXN5wO0?t=4010) +- [01:07:30 Реализация простой мемоизации ](https://youtu.be/2h9syXN5wO0?t=4050) +- [01:14:43 Реализация простой мемоизации с проверкой скорости ](https://youtu.be/2h9syXN5wO0?t=4483) +- [01:20:43 Удаление накопленного кэша ](https://youtu.be/2h9syXN5wO0?t=4843) +- [01:25:35 Асинхронная мемоизация ](https://youtu.be/2h9syXN5wO0?t=5135) +- [01:31:10 Преобразование аргументов и ключей в hash-функцию](https://youtu.be/2h9syXN5wO0?t=5470) +- [01:33:32 Реализация сложной мемоизации](https://youtu.be/2h9syXN5wO0?t=5612) + +## [Мемоизация функций: memoize в JavaScript](https://youtu.be/H6S8QJo2Qxg) + +## [Композиция функций (pipe, compose) в JavaScript](https://youtu.be/xS9FicVrOTI) + From 18234234ea5528fe569450227ec649fb9cb45cee Mon Sep 17 00:00:00 2001 From: Anton Telichenko Date: Wed, 3 Aug 2022 21:40:55 +0300 Subject: [PATCH 127/308] Update Fundamentals.md (#73) Co-authored-by: Timur Shemsedinov --- Courses/Fundamentals.md | 975 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 975 insertions(+) diff --git a/Courses/Fundamentals.md b/Courses/Fundamentals.md index f6d9174..4bc6171 100644 --- a/Courses/Fundamentals.md +++ b/Courses/Fundamentals.md @@ -179,3 +179,978 @@ - Интроспекция: https://github.com/HowProgrammingWorks/Introspection - Рефлекция: https://github.com/HowProgrammingWorks/Reflect - [Почему хорошее ИТ-образование невостребовано рыночком](https://youtu.be/nvIJE6xMpiI) + +# Основы программирования (таймкоды) + +## [Карта специальности инженер-программист](https://youtu.be/SE5aXH-yf0I) + +- [00:00:00 Введение](https://youtu.be/SE5aXH-yf0I?t=0) +- [00:02:21 Что такое программирование? ](https://youtu.be/SE5aXH-yf0I?t=141) +- [00:05:55 Связанные понятия ](https://youtu.be/SE5aXH-yf0I?t=355) +- [00:06:43 Основы программной инженерии ](https://youtu.be/SE5aXH-yf0I?t=403) +- [00:11:42 Предсказуемые вычисления ](https://youtu.be/SE5aXH-yf0I?t=702) +- [00:14:36 Моделирование](https://youtu.be/SE5aXH-yf0I?t=876) +- [00:14:52 Классификация моделей ](https://youtu.be/SE5aXH-yf0I?t=892) +- [00:17:33 Схемы моделирования ](https://youtu.be/SE5aXH-yf0I?t=1053) +- [00:22:23 Парадигмы программирования ](https://youtu.be/SE5aXH-yf0I?t=1343) +- [00:23:16 Императивное и функциональное программирование ](https://youtu.be/SE5aXH-yf0I?t=1396) +- [00:28:25 Неструктурное программирование ](https://youtu.be/SE5aXH-yf0I?t=1705) +- [00:30:01 Структурное программирование ](https://youtu.be/SE5aXH-yf0I?t=1801) +- [00:30:46 Процедурное программирование ](https://youtu.be/SE5aXH-yf0I?t=1846) +- [00:31:18 Объектно-ориетированное программирование ](https://youtu.be/SE5aXH-yf0I?t=1878) +- [00:31:48 Прототипно-ориетированное программирование ](https://youtu.be/SE5aXH-yf0I?t=1908) +- [00:32:14 Функциональное программирование ](https://youtu.be/SE5aXH-yf0I?t=1934) +- [00:32:48 Узконаправленное программирование](https://youtu.be/SE5aXH-yf0I?t=1968) +- [00:33:44 Техники и технологии](https://youtu.be/SE5aXH-yf0I?t=2024) +- [00:36:55 Реактивное программирование и Событийно-ориентированное](https://youtu.be/SE5aXH-yf0I?t=2215) +- [00:38:16 Функционально-реактивное программирование ](https://youtu.be/SE5aXH-yf0I?t=2296) +- [00:38:39 Модель акторов](https://youtu.be/SE5aXH-yf0I?t=2319) +- [00:39:49 Метапрограммирование ](https://youtu.be/SE5aXH-yf0I?t=2389) +- [00:43:09 Системное и прикладное программирование](https://youtu.be/SE5aXH-yf0I?t=2589) +- [00:44:25 Задачи программной инженерии ](https://youtu.be/SE5aXH-yf0I?t=2665) +- [00:50:46 Как преодолеть сложность ](https://youtu.be/SE5aXH-yf0I?t=3046) +- [00:52:16 Данные и логика ](https://youtu.be/SE5aXH-yf0I?t=3136) +- [00:57:49 Разработка программного обеспечения ](https://youtu.be/SE5aXH-yf0I?t=3469) +- [01:04:50 Подход к разработке ](https://youtu.be/SE5aXH-yf0I?t=3890) +- [01:06:04 Гибридная разработка ](https://youtu.be/SE5aXH-yf0I?t=3964) +- [01:07:10 Принцип NIH ](https://youtu.be/SE5aXH-yf0I?t=4030) +- [01:09:12 Классификация приложений по месту запуска](https://youtu.be/SE5aXH-yf0I?t=4152) +- [01:12:17 Схемы и примеры](https://youtu.be/SE5aXH-yf0I?t=4337) +## [Введение в программирование (1 часть)](https://youtu.be/5Gt61EX6HZ4) + +- [0:00:02 лекция о базовых понятиях для начинающих](https://youtu.be/5Gt61EX6HZ4?t=2) +- [0:01:43 что-то уже знаете / слышали](https://youtu.be/5Gt61EX6HZ4?t=103) +- [0:04:50 терминология важна](https://youtu.be/5Gt61EX6HZ4?t=290) +- [0:05:45 инструкция или оператор / Statement](https://youtu.be/5Gt61EX6HZ4?t=345) +- [0:07:23 синтаксис / Syntax](https://youtu.be/5Gt61EX6HZ4?t=443) +- [0:09:21 почти все группы операторов / Statements](https://youtu.be/5Gt61EX6HZ4?t=561) +- [0:13:27 операция 0:14:09 команда 0:15:03 директива](https://youtu.be/5Gt61EX6HZ4?t=807) +- [0:16:59 выражение / Expression](https://youtu.be/5Gt61EX6HZ4?t=1019) +- [0:20:53 значение / Value](https://youtu.be/5Gt61EX6HZ4?t=1253) +- [0:22:28 тип / Type](https://youtu.be/5Gt61EX6HZ4?t=1348) +- [0:27:22 литерал / Literal](https://youtu.be/5Gt61EX6HZ4?t=1642) +- [0:28:46 скаляр / Scalar, Primitive, Atomic value](https://youtu.be/5Gt61EX6HZ4?t=1726) +- [0:31:02 ссылка / Reference](https://youtu.be/5Gt61EX6HZ4?t=1862) +- [0:34:05 идентификатор / Identifier](https://youtu.be/5Gt61EX6HZ4?t=2045) +- [0:37:31 переменная / Variable](https://youtu.be/5Gt61EX6HZ4?t=2251) +- [0:40:08 присвоение / Assignment](https://youtu.be/5Gt61EX6HZ4?t=2408) +- [0:41:29 константа / Constant](https://youtu.be/5Gt61EX6HZ4?t=2489) +- [0:43:16 структурные типы / Composed types](https://youtu.be/5Gt61EX6HZ4?t=2596) +- [0:44:03 флаг / Flag](https://www.youtube.com/watch?v=5Gt61EX6HZ4&t=2643s) +- [0:45:09 перечисляемый тип](https://youtu.be/5Gt61EX6HZ4?t=2643) +- [0:46:02 алгоритм / Algorithm](https://youtu.be/5Gt61EX6HZ4?t=2762) +- [0:47:40 программа / Program](https://youtu.be/5Gt61EX6HZ4?t=2860) +- [0:49:01 инженерия / Engineering](https://youtu.be/5Gt61EX6HZ4?t=2941) +- [0:50:42 инженерия программного обеспечения / Software engineering](https://youtu.be/5Gt61EX6HZ4?t=3042) +- [0:52:03 программирование / Programming](https://youtu.be/5Gt61EX6HZ4?t=3123) +- [0:53:31 кодирование / Coding](https://youtu.be/5Gt61EX6HZ4?t=3211) +- [0:54:15 разработка программного обеспечения / Software development](https://youtu.be/5Gt61EX6HZ4?t=3255) +- [0:58:49 процедура, функция, подпрограмма, метод: различия](https://youtu.be/5Gt61EX6HZ4?t=3529) +- [0:59:15 блок кода / Block of code](https://youtu.be/5Gt61EX6HZ4?t=3555) +- [1:01:58 процедура или подпрограмма / Procedure or Subroutine](https://youtu.be/5Gt61EX6HZ4?t=3718) +- [1:05:18 функция / Function](https://youtu.be/5Gt61EX6HZ4?t=3918) +- [1:08:06 сигнатура функции / Function signature](https://youtu.be/5Gt61EX6HZ4?t=4086) +- [1:09:16 метод / Method](https://youtu.be/5Gt61EX6HZ4?t=4156) +- [1:10:37 цикл / Loop](https://www.youtube.com/watch?v=5Gt61EX6HZ4&t=4237s) +- [1:10:52 итерирование](https://www.youtube.com/watch?v=5Gt61EX6HZ4&t=4252s) +- [1:11:40 функциональное программирование](https://youtu.be/5Gt61EX6HZ4?t=4237) +- [1:13:05 условие / Conditional statements / ветвление](https://youtu.be/5Gt61EX6HZ4?t=4385) +- [1:14:54 парадигма программирования / Programming paradigm](https://youtu.be/5Gt61EX6HZ4?t=4494) +## [Семинар: Обсуждение плана и материалов курса «Основы программирования»](https://youtu.be/bQMTbRWrteU) + +- [0:15 - вопрос по операционным системам](https://youtu.be/bQMTbRWrteU?t=15) +- [3:35 - какой язык посоветуете из функционального программирования](https://youtu.be/bQMTbRWrteU?t=215) +- [4:40 - время нужное для прохождения курса](https://youtu.be/bQMTbRWrteU?t=280) +- [7:25 - учебники по JS и туториал](https://youtu.be/bQMTbRWrteU?t=445) +- [11:00 - экзамены, сертификат для студентов из других стран](https://youtu.be/bQMTbRWrteU?t=660) +- [12:45 - как будет проходить экзамен](https://youtu.be/bQMTbRWrteU?t=765) +- [14:55 - сколько времени нужно уделять в неделю или в день](https://youtu.be/bQMTbRWrteU?t=895) +- [17:35 - куда задавать вопросы](https://youtu.be/bQMTbRWrteU?t=1055) +- [18:56 - структура курса](https://youtu.be/bQMTbRWrteU?t=1136) +- [22:30 - контроль решения задач](https://youtu.be/bQMTbRWrteU?t=1350) +- [23:35 - сферы применения Node.js](https://youtu.be/bQMTbRWrteU?t=1415) +- [24:22 - возможно ли посещать курс лично](https://youtu.be/bQMTbRWrteU?t=1462) +- [26:23 - актуальность изучения С++ и Rust](https://youtu.be/bQMTbRWrteU?t=1583) +- [27:48 - стану ли я программистом пройдя курс](https://youtu.be/bQMTbRWrteU?t=1668) +- [28:10 - какой стандарт JS используется в курсе](https://youtu.be/bQMTbRWrteU?t=1690) +- [28:35 - откуда начинать курс](https://youtu.be/bQMTbRWrteU?t=1715) +- [29:20 - как посещать старшую группу](https://youtu.be/bQMTbRWrteU?t=1760) +- [31:45 - об основах вёрстки и популярных фреймворках](https://youtu.be/bQMTbRWrteU?t=1905) +- [33:03 - обязательно ли использовать фреймворки](https://youtu.be/bQMTbRWrteU?t=1983) +- [36:15 - почему столь немногим удается сдать экзамен](https://youtu.be/bQMTbRWrteU?t=2175) +- [36:50 - проверка задач для допуска к экзамену и их уровень сложности](https://youtu.be/bQMTbRWrteU?t=2210) +- [37:55 - теоретические вопросы на экзамене, пример](https://youtu.be/bQMTbRWrteU?t=2275) +- [39:35 - знание математики](https://youtu.be/bQMTbRWrteU?t=2375) +- [43:10 - сложные вопросы CS в курсе](https://youtu.be/bQMTbRWrteU?t=2590) +- [46:00 - как происходит проверка задач для допуска к экзамену](https://youtu.be/bQMTbRWrteU?t=2760) +## [Настройка среды: Node.js, npm, git, eslint](https://youtu.be/hSyA7tcNaCE) + +## [Базовый синтаксис JavaScript](https://youtu.be/xJn3k1f4BiM) + +- [00:00:00 Введение](https://youtu.be/xJn3k1f4BiM?t=0) +- [00:03:02 Идентификаторы (identifiers: const, let, arguments, object property)](https://youtu.be/xJn3k1f4BiM?t=182) +- [00:14:41 Циклы (loops)](https://youtu.be/xJn3k1f4BiM?t=881) +- [00:22:10 Функции (functions)](https://youtu.be/xJn3k1f4BiM?t=1330) +- [00:30:35 Объекты (objects) ](https://youtu.be/xJn3k1f4BiM?t=1835) +- [00:33:34 Итерирование по массиву ( for ( ... of ... { } )](https://youtu.be/xJn3k1f4BiM?t=2014) +- [00:39:01 Итерирование по объекту ( for ( ... in ... { } )](https://youtu.be/xJn3k1f4BiM?t=2341) +- [00:42:28 Синтаксис простого кода](https://youtu.be/xJn3k1f4BiM?t=2548) +- [00:55:21 Синтаксис функции](https://youtu.be/xJn3k1f4BiM?t=3321) +- [01:05:38 Синтаксис класса](https://youtu.be/xJn3k1f4BiM?t=3938) +- [01:09:10 Синтаксис расширения класса с помощью функции](https://youtu.be/xJn3k1f4BiM?t=4150) +- [01:14:59 Идентификаторы в виде символов unicode](https://youtu.be/xJn3k1f4BiM?t=4499) +- [01:17:15 Синтаксис комментариев](https://youtu.be/xJn3k1f4BiM?t=4635) +- [01:18:13 Способы объявления переменных ](https://youtu.be/xJn3k1f4BiM?t=4693) +- [01:18:24 Скалярные типы переменных (string, number, boolean)](https://youtu.be/xJn3k1f4BiM?t=4704) +- [01:19:12 Структурные/ссылочные типы переменных (function, array, object)](https://youtu.be/xJn3k1f4BiM?t=4752) +## [Базовый синтаксис JavaScript, продолжение](https://youtu.be/qa-XleqA0JU) + +- [00:01:34 Number (integer / float)](https://youtu.be/qa-XleqA0JU?t=94) +- [00:02:11 String ](https://youtu.be/qa-XleqA0JU?t=131) +- [00:02:15 Boolean](https://youtu.be/qa-XleqA0JU?t=135) +- [00:02:16 Object](https://youtu.be/qa-XleqA0JU?t=136) +- [00:03:08 Array](https://youtu.be/qa-XleqA0JU?t=188) +- [00:04:20 Метод array.push](https://youtu.be/qa-XleqA0JU?t=260) +- [00:04:31 Метод array.unshift](https://youtu.be/qa-XleqA0JU?t=271) +- [00:04:50 Метод array.shift](https://youtu.be/qa-XleqA0JU?t=290) +- [00:05:17 Метод array.pop](https://youtu.be/qa-XleqA0JU?t=317) +- [00:05:55 Оператор typeof](https://youtu.be/qa-XleqA0JU?t=355) +- [00:08:33 Метод Array.isArray](https://youtu.be/qa-XleqA0JU?t=513) +- [00:10:06 Оператор instanceof](https://youtu.be/qa-XleqA0JU?t=606) +- [00:10:48 Undefined](https://youtu.be/qa-XleqA0JU?t=648) +- [00:11:12 Null](https://youtu.be/qa-XleqA0JU?t=672) +- [00:11:55 NaN](https://youtu.be/qa-XleqA0JU?t=715) +- [00:14:18 Infinity](https://youtu.be/qa-XleqA0JU?t=858) +- [00:14:48 Тернарный оператор](https://youtu.be/qa-XleqA0JU?t=888) +- [00:16:15 Функция paseInt](https://youtu.be/qa-XleqA0JU?t=975) +- [00:24:23 Функция paseFloat](https://youtu.be/qa-XleqA0JU?t=1463) +- [00:27:15 Удаление переменных ](https://youtu.be/qa-XleqA0JU?t=1635) +- [00:33:25 Побитовые операторы (Bitwise operators)](https://youtu.be/qa-XleqA0JU?t=2005) +- [00:34:38 Побитовые операции](https://youtu.be/qa-XleqA0JU?t=2078) +- [00:44:30 BigInt](https://youtu.be/qa-XleqA0JU?t=2670) +- [00:56:30 Операторы сравнения ](https://youtu.be/qa-XleqA0JU?t=3390) +- [01:01:20 Очередность операторов (Operator precedence)](https://youtu.be/qa-XleqA0JU?t=3680) +- [01:13:25 Оператор Switch](https://youtu.be/qa-XleqA0JU?t=4405) + +## [Семинар: Базовый синтаксис языка JavaScript](https://youtu.be/PGqjTXQe_qw) + +## [Семинар: автоматическая проверка лабораторных работ](https://youtu.be/M4KpG0LEAyA) + +## [Введение в программирование (2 часть)](https://youtu.be/PzlLXQ3RaDs) + +- [0:00:01 введение](https://youtu.be/PzlLXQ3RaDs?t=1) +- [0:01:45 процедура или подпрограмма / Procedure or Subroutine](https://youtu.be/PzlLXQ3RaDs?t=105) +- [0:06:05 функция / Function](https://youtu.be/PzlLXQ3RaDs?t=365) +- [0:09:27 стек вызовов / Call Stack 0:18:26 Mixed Solution 0:21:42 принцип LIFO](https://youtu.be/PzlLXQ3RaDs?t=567) +- [0:22:09 куча и стек / Heap and Stack](https://youtu.be/PzlLXQ3RaDs?t=1329) +- [0:25:55 рекурсия / Recursion](https://youtu.be/PzlLXQ3RaDs?t=1555) +- [0:27:15 коллекция / Collection](https://youtu.be/PzlLXQ3RaDs?t=1635) +- [0:27:51 массив / Array](https://youtu.be/PzlLXQ3RaDs?t=1671) +- [0:28:18 отладка / Debug](https://youtu.be/PzlLXQ3RaDs?t=1698) +- [0:28:23 компонент / Component](https://youtu.be/PzlLXQ3RaDs?t=1703) +- [0:29:37 модуль / Module 0:30:16 модульность / Modularity 0:33:52 ограничения 0:31:50 заглушки / Stubs](https://youtu.be/PzlLXQ3RaDs?t=1777) +- [0:36:19 библиотека / Library](https://youtu.be/PzlLXQ3RaDs?t=2179) +- [0:37:13 импорт и экспорт идентификаторов / Import and Export Identifiers 0:41:30 новый синтаксис](https://youtu.be/PzlLXQ3RaDs?t=2233) +- [0:45:22 объект или экземпляр / Object or Instance 0:47:08 2 способа задания Instance](https://youtu.be/PzlLXQ3RaDs?t=2722) +- [0:47:47 класс / Class 0:49:16 примеры](https://youtu.be/PzlLXQ3RaDs?t=2867) +- [0:51:30 инстанциирование / Instantiation 0:52:59 примеры](https://youtu.be/PzlLXQ3RaDs?t=3090) +- [0:54:59 область видимости / Scope](https://youtu.be/PzlLXQ3RaDs?t=3299) +- [0:57:05 лексический(ое) контекст (окружение) / Lexical environment](https://youtu.be/PzlLXQ3RaDs?t=3425) +- [0:58:19 объектный контекст функции / Object context: this](https://youtu.be/PzlLXQ3RaDs?t=3499) +- [1:00:33 глобальный контекст / Global context](https://youtu.be/PzlLXQ3RaDs?t=3633) +- [1:04:35 монады](https://youtu.be/PzlLXQ3RaDs?t=3875) +- [1:09:00 парадигмы программирования](https://youtu.be/PzlLXQ3RaDs?t=4140) +- [1:12:05 лямбда-функция](https://youtu.be/PzlLXQ3RaDs?t=4325) +- [1:12:28 фрейм](https://youtu.be/PzlLXQ3RaDs?t=4348) +- [1:14:46 строка в свойстве объекта](https://youtu.be/PzlLXQ3RaDs?t=4486) +- [1:16:21 класс и объект](https://youtu.be/PzlLXQ3RaDs?t=4581) +- [1:16:47 класс и прототип](https://www.youtube.com/watch?v=PzlLXQ3RaDs&t=4607) +- [1:17:37 аллокирование значений в куче и стеке](https://youtu.be/PzlLXQ3RaDs?t=4607) +- [1:18:43 сборщик мусора](https://youtu.be/PzlLXQ3RaDs?t=4723) +- [1:20:29 терминология на английском и русском](https://youtu.be/PzlLXQ3RaDs?t=4829) + +## [Функции, лямбды (стрелочные функции), контексты, замыкания в JavaScript](https://youtu.be/pn5myCmpV2U) + +- [00:00:00 Введение ](https://youtu.be/pn5myCmpV2U?t=0) +- [00:11:22 Функция объявление (Declaration)](https://youtu.be/pn5myCmpV2U?t=682) +- [00:12:46 Функция выражение (Expression)](https://youtu.be/pn5myCmpV2U?t=766) +- [00:16:07 Лямбда-выражение (Lambda expression) или функция-стрелка (Arrow function) ](https://youtu.be/pn5myCmpV2U?t=967) +- [00:16:43 Лямбда-функция (Lambda function) ](https://youtu.be/pn5myCmpV2U?t=1003) +- [00:18:45 Область видимости (Scope)](https://youtu.be/pn5myCmpV2U?t=1125) +- [00:25:00 Функции, как абстракции](https://youtu.be/pn5myCmpV2U?t=1500) +- [00:26:43 Методы функции (name, length, toString( ) )](https://youtu.be/pn5myCmpV2U?t=1603) +- [00:31:26 Значения по умолчанию у функции ](https://youtu.be/pn5myCmpV2U?t=1886) +- [00:36:46 Rest-оператор (...args)](https://youtu.be/pn5myCmpV2U?t=2206) +- [00:41:49 Способ определения функции, через new Function](https://youtu.be/pn5myCmpV2U?t=2509) +- [00:44:46 Функции внутри объекта](https://youtu.be/pn5myCmpV2U?t=2686) +- [00:50:42 Обращение к полям объекта из привязанной функции, через this](https://youtu.be/pn5myCmpV2U?t=3042) +- [00:55:24 История синтаксиса создания контекстов, через самовызывающиеся функции ( IIFE)](https://youtu.be/pn5myCmpV2U?t=3324) +- [00:58:30 Методы функции, наследуемой от объекта (call, apply)](https://youtu.be/pn5myCmpV2U?t=3510) +- [01:00:53 Комментирование функций](https://youtu.be/pn5myCmpV2U?t=3653) +- [01:01:27 Задание декомпозиции функции](https://youtu.be/pn5myCmpV2U?t=3687) +- [01:04:24 Замыкание: context ](https://youtu.be/pn5myCmpV2U?t=3864) +- [01:08:41 Замыкание: chainning ](https://youtu.be/pn5myCmpV2U?t=4121) +- [01:11:55 Замыкание: summator ](https://youtu.be/pn5myCmpV2U?t=4315) +- [01:14:16 Замыкание: recursion](https://youtu.be/pn5myCmpV2U?t=4456) + +## [Массивы, объекты, классы, прототипы в JavaScript](https://youtu.be/VBMGnAPfmsY) + +- [00:00:00 Объекты](https://youtu.be/VBMGnAPfmsY?t=0) +- [00:11:01 Массивы](https://youtu.be/VBMGnAPfmsY?t=661) +- [00:13:29 Cериализация объекта ](https://youtu.be/VBMGnAPfmsY?t=809) +- [00:15:46 Cериализация массива ](https://youtu.be/VBMGnAPfmsY?t=946) +- [00:19:20 Методы array](https://youtu.be/VBMGnAPfmsY?t=1160) +- [00:20:22 Циклы ](https://youtu.be/VBMGnAPfmsY?t=1222) +- [00:21:16 Цикл for-in-object ](https://youtu.be/VBMGnAPfmsY?t=1276) +- [00:22:02 Цикл for-in-array](https://youtu.be/VBMGnAPfmsY?t=1322) +- [00:24:10 Цикл for-of-array ](https://youtu.be/VBMGnAPfmsY?t=1450) +- [00:25:05 Метод array.forEach](https://youtu.be/VBMGnAPfmsY?t=1505) +- [00:29:10 Метод array.map](https://youtu.be/VBMGnAPfmsY?t=1750) +- [00:33:59 Итерация матрицы, через for-of-array](https://youtu.be/VBMGnAPfmsY?t=2039) +- [00:38:38 Итерация матрицы, через array.forEach](https://youtu.be/VBMGnAPfmsY?t=2318) +- [00:39:22 Итерация матрицы, через for-in-array](https://youtu.be/VBMGnAPfmsY?t=2362) +- [00:39:45 Метод array.reduce](https://youtu.be/VBMGnAPfmsY?t=2385) +- [00:44:39 Методы объекта](https://youtu.be/VBMGnAPfmsY?t=2679) +- [00:46:38 Прототип](https://youtu.be/VBMGnAPfmsY?t=2798) +- [00:53:32 Класс ](https://youtu.be/VBMGnAPfmsY?t=3212) +- [00:56:04 Связывание методов с объектом, при помощи замыкания](https://youtu.be/VBMGnAPfmsY?t=3364) +- [01:00:08 Связывание методов с объектом, при помощи метода bind](https://youtu.be/VBMGnAPfmsY?t=3608) +- [01:03:19 Пример абстракции, при помощи замыкания](https://youtu.be/VBMGnAPfmsY?t=3799) +- [01:11:05 Пример абстракции, при помощи прототипа](https://youtu.be/VBMGnAPfmsY?t=4265) +- [01:12:30 Пример абстракции, при помощи класса](https://youtu.be/VBMGnAPfmsY?t=4350) +- [01:13:08 Наследование через синтаксис прототипов](https://youtu.be/VBMGnAPfmsY?t=4388) +- [01:18:50 Наследование через синтаксис классов ](https://youtu.be/VBMGnAPfmsY?t=4730) +- [01:21:05 Связывание объекта с методом класса при помощи прототипа ](https://youtu.be/VBMGnAPfmsY?t=4865) +- [01:23:52 Присваивание методов внутри конструктора, при прототипном подходе ](https://youtu.be/VBMGnAPfmsY?t=5032) +- [01:25:10 Get/Set класса ](https://youtu.be/VBMGnAPfmsY?t=5110) +- [01:27:00 Пример](https://youtu.be/VBMGnAPfmsY?t=5220) + +## [Языки программирования: обзор, сравнение, выбор](https://youtu.be/enHA1CRkJe0) + +- [0:00:02 обзорная лекция о классификации ЯП](https://youtu.be/enHA1CRkJe0?t=2) +- [0:00:53 типизация: статическая / динамическая](https://youtu.be/enHA1CRkJe0?t=53) +- [0:07:37 сильная / слабая || строгая / нестрогая](https://youtu.be/enHA1CRkJe0?t=457) +- [0:10:08 явная / неявная](https://youtu.be/enHA1CRkJe0?t=608) +- [0:13:58 утиная 0:18:26 протоколы](https://youtu.be/enHA1CRkJe0?t=838) +- [0:20:36 ниже и ближе к машине / выше и ближе к человеку](https://youtu.be/enHA1CRkJe0?t=1236) +- [0:32:20 сравнение asm и машинного кода](https://youtu.be/enHA1CRkJe0?t=1940) +- [0:39:38 сравнение asm и js](https://youtu.be/enHA1CRkJe0?t=2378) +- [0:42:47 функции и типы 1 класса](https://youtu.be/enHA1CRkJe0?t=2567) +- [0:44:39 распространённость](https://youtu.be/enHA1CRkJe0?t=2679) +- [0:45:47 скорость, читаемость](https://youtu.be/enHA1CRkJe0?t=2747) +- [0:48:21 владение правами / влияние на ЯП](https://youtu.be/enHA1CRkJe0?t=2901) +- [0:51:13 специализация](https://youtu.be/enHA1CRkJe0?t=3073) +- [0:53:13 наследственность](https://youtu.be/enHA1CRkJe0?t=3193) +- [0:56:33 инструментарий](https://youtu.be/enHA1CRkJe0?t=3393) +- [0:58:20 поддержка](https://youtu.be/enHA1CRkJe0?t=3500) +- [1:02:58 скорость развития](https://youtu.be/enHA1CRkJe0?t=3778) +- [1:04:12 системное программирование](https://youtu.be/enHA1CRkJe0?t=3852) +- [1:05:51 оконные приложения](https://youtu.be/enHA1CRkJe0?t=3951) +- [1:06:27 встраиваемые системы и автоматизация](https://youtu.be/enHA1CRkJe0?t=3987) +- [1:07:02 базы данных](https://youtu.be/enHA1CRkJe0?t=4022) +- [1:07:45 сетевые сервера](https://youtu.be/enHA1CRkJe0?t=4065) +- [1:09:03 вычисления](https://youtu.be/enHA1CRkJe0?t=4143) +- [1:10:45 ИИ](https://youtu.be/enHA1CRkJe0?t=4245) +- [1:11:52 параллельные вычисления, веб](https://youtu.be/enHA1CRkJe0?t=4312) +- [1:12:38 скрипты](https://youtu.be/enHA1CRkJe0?t=4358) +- [1:13:36 тестирование](https://youtu.be/enHA1CRkJe0?t=4416) +- [1:14:20 мобильные платформы](https://youtu.be/enHA1CRkJe0?t=4460) +- [1:16:10 игры, графика](https://youtu.be/enHA1CRkJe0?t=4570) + +## [JavaScript: Ответы на вопросы](https://youtu.be/wqkQ6eslyzY) + +- [0:00:02 введение](https://youtu.be/wqkQ6eslyzY?t=2) +- [0:00:41 разделение ЯП по модели работы с памятью](https://youtu.be/wqkQ6eslyzY?t=41) +- [0:08:32 почему надо использовать const, реже let и избегать var](https://youtu.be/wqkQ6eslyzY?t=512) +- [0:17:43 + и - утиной типизации](https://youtu.be/wqkQ6eslyzY?t=1063) +- [0:30:03 примеры ЯП с разной типизацией](https://youtu.be/wqkQ6eslyzY?t=1803) +- [0:32:29 чем выше ЯП, тем он медленнее?](https://youtu.be/wqkQ6eslyzY?t=1949) +- [0:34:15 почему бы js не компилировать напрямую в машинный код](https://youtu.be/wqkQ6eslyzY?t=2055) +- [0:35:37 скорость и производительность ЯП](https://youtu.be/wqkQ6eslyzY?t=2137) +- [0:40:47 константы и ключевое слово const](https://youtu.be/wqkQ6eslyzY?t=2447) +- [0:45:48 зачем учить именно js](https://youtu.be/wqkQ6eslyzY?t=2748) +- [0:59:28 typescript - js с типами? Развитость инфраструктуры ts](https://youtu.be/wqkQ6eslyzY?t=3568) + +## [Частичное применение и каррирование в JavaScript](https://youtu.be/ND8KQ5xjk7o) + +- [00:00:00 Замыкание](https://youtu.be/ND8KQ5xjk7o?t=0) +- [00:04:54 Лямбда- функция](https://youtu.be/ND8KQ5xjk7o?t=294) +- [00:06:06 Метод bind](https://youtu.be/ND8KQ5xjk7o?t=366) +- [00:08:30 Абстрагированный пример функции](https://youtu.be/ND8KQ5xjk7o?t=510) +- [00:13:42 Абстрагированный пример функции (расширение)](https://youtu.be/ND8KQ5xjk7o?t=822) +- [00:15:47 Неправильная реализация каррирования](https://youtu.be/ND8KQ5xjk7o?t=947) +- [00:22:22 Правильная реализация каррирования](https://youtu.be/ND8KQ5xjk7o?t=1342) +- [00:28:54 Правильная реализация каррирования (расширение)](https://youtu.be/ND8KQ5xjk7o?t=1734) +- [00:31:41 Функциональные абстракции (superposition)](https://youtu.be/ND8KQ5xjk7o?t=1901) +- [00:38:02 Функциональные абстракции, с сохранением выражений (composition)](https://youtu.be/ND8KQ5xjk7o?t=2282) +- [00:45:05 Композиция с 2 функциями](https://youtu.be/ND8KQ5xjk7o?t=2705) +- [00:46:05 Композиция с n - функциями, при помощи метода reduce](https://youtu.be/ND8KQ5xjk7o?t=2765) +- [00:51:25 Композиция с n - функциями, при помощи цикла](https://youtu.be/ND8KQ5xjk7o?t=3085) +- [00:54:29 Композиция с n - функциями, при помощи рекурсии](https://youtu.be/ND8KQ5xjk7o?t=3269) +- [00:57:40 Композиция асинхронных функций](https://youtu.be/ND8KQ5xjk7o?t=3460) +- [01:01:27 Обобщение](https://youtu.be/ND8KQ5xjk7o?t=3687) + +## [Функции высшего порядка, колбеки, события на JavaScript](https://youtu.be/1vqATwbGHnc) + +- [00:00:00 Определение](https://youtu.be/1vqATwbGHnc?t=0) +- [00:02:03 Математическая функция](https://youtu.be/1vqATwbGHnc?t=123) +- [00:05:57 Функция обратного вызова (callback) ](https://youtu.be/1vqATwbGHnc?t=357) +- [00:09:33 Замыкание](https://youtu.be/1vqATwbGHnc?t=573) +- [00:10:51 Цепочка вызовов ](https://youtu.be/1vqATwbGHnc?t=651) +- [00:12:40 Сохранение кэша с помощью замыкания](https://youtu.be/1vqATwbGHnc?t=760) +- [00:18:29 Добавление функции поведение логирования](https://youtu.be/1vqATwbGHnc?t=1109) +- [00:21:45 Обобщение](https://youtu.be/1vqATwbGHnc?t=1305) +- [00:22:45 Сallback](https://youtu.be/1vqATwbGHnc?t=1365) +- [00:25:32 Сallback асинхронной функции считывание файла](https://youtu.be/1vqATwbGHnc?t=1532) +- [00:28:36 Сallback именованный](https://youtu.be/1vqATwbGHnc?t=1716) +- [00:33:01 Сallback-timer ](https://youtu.be/1vqATwbGHnc?t=1981) +- [00:36:20 Сallback-timer-curry](https://youtu.be/1vqATwbGHnc?t=2180) +- [00:38:59 Listener](https://youtu.be/1vqATwbGHnc?t=2339) +- [00:41:10 Listener-timer](https://youtu.be/1vqATwbGHnc?t=2470) +- [00:46:59 Event](https://youtu.be/1vqATwbGHnc?t=2819) +- [00:53:45 Event-imitter](https://youtu.be/1vqATwbGHnc?t=3225) +- [00:57:48 Deferred object (отложенный объект)](https://youtu.be/1vqATwbGHnc?t=3468) +- [01:01:31 Errors](https://youtu.be/1vqATwbGHnc?t=3691) + +## [Работа со строками, шаблонами и юникодом в JavaScript](https://youtu.be/GcopcHQkA8M) + +- [00:00:00 Unicode строки](https://youtu.be/GcopcHQkA8M?t=0) +- [00:12:07 Обычные строки](https://youtu.be/GcopcHQkA8M?t=727) +- [00:17:03 Методы строки ](https://youtu.be/GcopcHQkA8M?t=1023) +- [00:23:09 Модификация строк ](https://youtu.be/GcopcHQkA8M?t=1389) +- [00:28:00 Получение подстроки в строке ](https://youtu.be/GcopcHQkA8M?t=1680) +- [00:34:45 Polyffill ](https://youtu.be/GcopcHQkA8M?t=2085) +- [00:37:54 Методы padEnd и padStart ](https://youtu.be/GcopcHQkA8M?t=2274) +- [00:40:45 Добавление функции для шаблонизирующей строки](https://youtu.be/GcopcHQkA8M?t=2445) +- [00:44:27 Пример ](https://youtu.be/GcopcHQkA8M?t=2667) +- [00:48:29 Библиотека Concolor.js](https://youtu.be/GcopcHQkA8M?t=2909) + +## [Регулярные выражения и парсинг в JavaScript](https://youtu.be/-ef2E0ozxao) + +- [00:00:00 Введение](https://youtu.be/-ef2E0ozxao?t=0) +- [00:10:30 Синтаксис регулярных выражений ](https://youtu.be/-ef2E0ozxao?t=630) +- [00:12:54 Задание регулярного выражения ](https://youtu.be/-ef2E0ozxao?t=774) +- [00:30:38 RegExp ](https://youtu.be/-ef2E0ozxao?t=1838) +- [00:38:11 Метод match ](https://youtu.be/-ef2E0ozxao?t=2291) +- [00:46:48 Метод split](https://youtu.be/-ef2E0ozxao?t=2808) +- [00:49:28 Метод replace ](https://youtu.be/-ef2E0ozxao?t=2968) +- [00:50:43 Метод replace с аргументом функции ](https://youtu.be/-ef2E0ozxao?t=3043) +- [00:53:28 Метод search ](https://youtu.be/-ef2E0ozxao?t=3208) +- [00:55:05 Обобщение](https://youtu.be/-ef2E0ozxao?t=3305) + +## [Примеси, обертки, декораторы, мемоизация в JavaScript](https://youtu.be/oRQ0kQr1N-U) + +- [00:00:00 Синхронная функция-обертка ](https://youtu.be/oRQ0kQr1N-U?t=0) +- [00:02:55 Синхронная универсальная функция-обертка ](https://youtu.be/oRQ0kQr1N-U?t=175) +- [00:08:28 Асинхронная универсальная функция-обертка ](https://youtu.be/oRQ0kQr1N-U?t=508) +- [00:15:50 Синхронная функция-обертка, которая добавляет поведение (timeout)](https://youtu.be/oRQ0kQr1N-U?t=950) +- [00:22:45 Асинхронная функция-обертка, которая добавляет поведение (timeout)](https://youtu.be/oRQ0kQr1N-U?t=1365) +- [00:25:38 Функция-обертка, которая ограничивает вызов функции до одного вызова (once) ](https://youtu.be/oRQ0kQr1N-U?t=1538) +- [00:27:36 Функция-обертка, которая ограничивает вызов функции до n-го вызова (limit)](https://youtu.be/oRQ0kQr1N-U?t=1656) +- [00:29:50 Функция-обертка, которая отменяет вызов функции (cancel)](https://youtu.be/oRQ0kQr1N-U?t=1790) +- [00:32:29 Функция-обертка с методами timeout, limit, cancel](https://youtu.be/oRQ0kQr1N-U?t=1949) +- [00:39:03 Функция-обертка с методами timeout, limit, cancel (оптимизированная)](https://youtu.be/oRQ0kQr1N-U?t=2343) +- [00:42:28 Функция-обертка, которая ограничивает один вызов за 200 мс (throttle)](https://youtu.be/oRQ0kQr1N-U?t=2548) +- [00:45:47 Примесь поля через точку ](https://youtu.be/oRQ0kQr1N-U?t=2747) +- [00:51:35 Примесь поля через функцию extend](https://youtu.be/oRQ0kQr1N-U?t=3095) +- [00:57:35 Примесь поля через object.assign( )](https://youtu.be/oRQ0kQr1N-U?t=3455) +- [00:59:18 Примесь поведения ](https://youtu.be/oRQ0kQr1N-U?t=3558) +- [01:02:23 Примесь изменения класса](https://youtu.be/oRQ0kQr1N-U?t=3743) +- [01:06:50 Определение](https://youtu.be/oRQ0kQr1N-U?t=4010) +- [01:07:30 Реализация простой мемоизации ](https://youtu.be/oRQ0kQr1N-U?t=4050) +- [01:14:43 Реализация простой мемоизации с проверкой скорости ](https://youtu.be/oRQ0kQr1N-U?t=4483) +- [01:20:43 Удаление накопленного кэша ](https://youtu.be/oRQ0kQr1N-U?t=4843) +- [01:25:35 Асинхронная мемоизация ](https://youtu.be/oRQ0kQr1N-U?t=5135) +- [01:31:10 Преобразование аргументов и ключей в hash-функцию](https://youtu.be/oRQ0kQr1N-U?t=5470) +- [01:33:32 Реализация сложной мемоизации](https://youtu.be/oRQ0kQr1N-U?t=5612) + +## [Консоль и командная строка в JavaScript и Node.js](https://youtu.be/5aSZyKi5BmE) + +- [1:20 console](https://youtu.be/5aSZyKi5BmE?t=80) +- [16:00 readline](https://youtu.be/5aSZyKi5BmE?t=960) +- [21:35 cli](https://youtu.be/5aSZyKi5BmE?t=1295) +- [31:15 делаем красивый login screen](https://youtu.be/5aSZyKi5BmE?t=1875) + +## [Чеининг функций и объектов, обработка ошибок в JavaScript](https://youtu.be/PfuEfIiLX34) + +- [00:00:00 Введение ](https://youtu.be/PfuEfIiLX34?t=0) +- [00:01:10 Чеининг через синтаксис вызова функций ](https://youtu.be/PfuEfIiLX34?t=70) +- [00:02:12 Prototype ](https://youtu.be/PfuEfIiLX34?t=132) +- [00:05:45 Сlass](https://youtu.be/PfuEfIiLX34?t=345) +- [00:06:11 Functor](https://youtu.be/PfuEfIiLX34?t=371) +- [00:11:54 Mutable](https://youtu.be/PfuEfIiLX34?t=714) +- [00:16:34 Iterator](https://youtu.be/PfuEfIiLX34?t=994) +- [00:26:18 Promise ](https://youtu.be/PfuEfIiLX34?t=1578) +- [00:26:35 Test](https://youtu.be/PfuEfIiLX34?t=1595) +- [00:37:08 Compare ](https://youtu.be/PfuEfIiLX34?t=2228) +- [00:39:45 Benchmark](https://youtu.be/PfuEfIiLX34?t=2385) +- [00:40:48 Запуск и анализ тестов ](https://youtu.be/PfuEfIiLX34?t=2448) +- [01:03:48 Первый способ возвращение ошибок в синхронном коде ](https://youtu.be/PfuEfIiLX34?t=3828) +- [01:09:24 Второй способ возвращение ошибок в синхронном коде ](https://youtu.be/PfuEfIiLX34?t=4164) +- [01:12:26 Возвращение ошибок в асинхронном коде ](https://youtu.be/PfuEfIiLX34?t=4346) +- [01:16:14 Корректное возвращение ошибок ](https://youtu.be/PfuEfIiLX34?t=4574) +- [01:20:03 Обработка ошибок c promise ](https://youtu.be/PfuEfIiLX34?t=4803) +- [01:23:58 Обработка ошибок c async-await](https://youtu.be/PfuEfIiLX34?t=5038) + +## [Таймеры, таймауты, EventEmitter в JavaScript и Node.js](https://youtu.be/LK2jveAnRNg) + +- [0:30 callback sync/async](https://youtu.be/LK2jveAnRNg?t=30) +- [1:35 временная задержка sleep.js](https://youtu.be/LK2jveAnRNg?t=95) +- [5:35 await-sleep.js](https://youtu.be/LK2jveAnRNg?t=335) +- [8:40 sleep-then.js](https://youtu.be/LK2jveAnRNg?t=520) +- [9:30 order.js](https://youtu.be/LK2jveAnRNg?t=570) +- [18:38 precision.js](https://youtu.be/LK2jveAnRNg?t=1118) +- [22:13 blocking.js](https://youtu.be/LK2jveAnRNg?t=1333) +- [22:50 timers.js](https://youtu.be/LK2jveAnRNg?t=1370) +- [29:35 ref-unref.js](https://youtu.be/LK2jveAnRNg?t=1775) +- [32:05 enroll.js](https://youtu.be/LK2jveAnRNg?t=1925) +- [34:57 eventloop.txt](https://youtu.be/LK2jveAnRNg?t=2097) +- [37:37 eventEmitter](https://youtu.be/LK2jveAnRNg?t=2257) +- [44:32 simple.js](https://youtu.be/LK2jveAnRNg?t=2672) +- [47:48 usage.js](https://youtu.be/LK2jveAnRNg?t=2868) +- [48:30 enhanced.js](https://youtu.be/LK2jveAnRNg?t=2910) +- [50:18 star-fix.js](https://youtu.be/LK2jveAnRNg?t=3018) +- [51:10 usage.js](https://youtu.be/LK2jveAnRNg?t=3070) +- [53:15 closure.js](https://youtu.be/LK2jveAnRNg?t=3195) +- [54:50 fp.js](https://youtu.be/LK2jveAnRNg?t=3290) +- [57:10 methods.js](https://youtu.be/LK2jveAnRNg?t=3430) +- [1:06:35 min.js](https://youtu.be/LK2jveAnRNg?t=3995) +- [1:12:31 prod.js](https://youtu.be/LK2jveAnRNg?t=4351) + +## [Итерирование, циклы и итераторы в JavaScript](https://youtu.be/lq3b5_UGJas) + +- [00:00:00 Цикл for](https://youtu.be/lq3b5_UGJas?t=0) +- [00:02:45 Цикл while](https://youtu.be/lq3b5_UGJas?t=165) +- [00:03:16 Цикл do while ](https://youtu.be/lq3b5_UGJas?t=196) +- [00:03:33 Цикл for in object ](https://youtu.be/lq3b5_UGJas?t=213) +- [00:04:40 Цикл for in array](https://youtu.be/lq3b5_UGJas?t=280) +- [00:06:44 Цикл for of](https://youtu.be/lq3b5_UGJas?t=404) +- [00:08:45 Оператор break](https://youtu.be/lq3b5_UGJas?t=525) +- [00:10:13 Оператор continue](https://youtu.be/lq3b5_UGJas?t=613) +- [00:12:12 Итерирование по массиву методом forEach](https://youtu.be/lq3b5_UGJas?t=732) +- [00:15:10 Итерирование по массиву методом map ](https://youtu.be/lq3b5_UGJas?t=910) +- [00:21:23 Итерирование по двухмерному массиву (мatrix)](https://youtu.be/lq3b5_UGJas?t=1283) +- [00:25:38 Итерирование по двухмерному массиву (мatrix) методом forEach](https://youtu.be/lq3b5_UGJas?t=1538) +- [00:26:08 Итерирование массива методом reduce](https://youtu.be/lq3b5_UGJas?t=1568) +- [00:28:49 Итерирование по объекту ](https://youtu.be/lq3b5_UGJas?t=1729) +- [00:37:32 Обратный итератор ](https://youtu.be/lq3b5_UGJas?t=2252) +- [00:40:42 Асинхронный итератор](https://youtu.be/lq3b5_UGJas?t=2442) + +## [Архитектурный подход к программированию](https://youtu.be/d_vyO2CkiOc) + +- [00:00:00 Когда нужна архитектура](https://youtu.be/d_vyO2CkiOc?t=0) +- [00:06:07 Принятие решений](https://youtu.be/d_vyO2CkiOc?t=367) +- [00:09:58 Типы связывания](https://youtu.be/d_vyO2CkiOc?t=598) +- [00:20:00 Ошибки](https://youtu.be/d_vyO2CkiOc?t=1200) +- [00:27:15 Принятие решений](https://youtu.be/d_vyO2CkiOc?t=1635) +- [00:37:05 Эволюция архитектурных решений](https://youtu.be/d_vyO2CkiOc?t=2225) +- [00:58:13 Схема современной архитектуры](https://youtu.be/d_vyO2CkiOc?t=3493) +- [01:01:40 субд в браузере](https://youtu.be/d_vyO2CkiOc?t=3700) +- [01:05:20 Альтернативные варианты](https://youtu.be/d_vyO2CkiOc?t=3920) +- [01:12:20 Как на самом деле](https://youtu.be/d_vyO2CkiOc?t=4340) +- [01:13:45 Архитектура мечты](https://youtu.be/d_vyO2CkiOc?t=4425) +- [01:16:45 Современные возможности и требования ](https://youtu.be/d_vyO2CkiOc?t=4605) +- [01:25:20 Топологии](https://youtu.be/d_vyO2CkiOc?t=5120) +- [01:30:45 Итог](https://youtu.be/d_vyO2CkiOc?t=5445) + +## [Функциональное программирование на JavaScript](https://youtu.be/0JxSs_GcvbQ) + +## [Реактивное программирование на JavaScript](https://youtu.be/7MH8-qQc-48) + +- [0:00 введение](https://youtu.be/7MH8-qQc-48?t=0) +- [3:00 imperative.js](https://youtu.be/7MH8-qQc-48?t=180) +- [4:00 set-get.js](https://youtu.be/7MH8-qQc-48?t=240) +- [7:15 proxy.js](https://youtu.be/7MH8-qQc-48?t=435) +- [23:07 observer.js](https://youtu.be/7MH8-qQc-48?t=1387) + +## [Асинхронное программирование на callback`ах в JavaScript](https://youtu.be/z8Hg6zgi3yQ) + +- [1:20 пример callback функции](https://youtu.be/z8Hg6zgi3yQ?t=80) +- [2:40 пример последовательного исполнения callback функций](https://youtu.be/z8Hg6zgi3yQ?t=160) +- [5:52 пример параллельного исполнения async функций c использованием wrapAsync](https://youtu.be/z8Hg6zgi3yQ?t=352) +- [15:18 пример последовательного исполнения async функций c использованием wrapAsync](https://youtu.be/z8Hg6zgi3yQ?t=918) +- [19:05 chain исполнение async функций](https://youtu.be/z8Hg6zgi3yQ?t=1145) +- [41:16 где можно встретить асинхронные функции](https://youtu.be/z8Hg6zgi3yQ?t=2476) + +## [Проекции и отображения наборов данных в JavaScript](https://youtu.be/lwJCq9inky8) + +- [00:00:00 Введение ](https://youtu.be/lwJCq9inky8?t=0) +- [00:01:50 Простая проекция набора данных ](https://youtu.be/lwJCq9inky8?t=110) +- [00:09:23 Расширенная проекция набора данных ](https://youtu.be/lwJCq9inky8?t=563) +- [00:19:00 Расширенная проекция набора данных с кэшированием списка ключей](https://youtu.be/lwJCq9inky8?t=1140) +- [00:20:27 Оптимизация проекции набора данных с помощью императивного программирования ](https://youtu.be/lwJCq9inky8?t=1227) +- [00:23:11 Линзы из функционального программирования ](https://youtu.be/lwJCq9inky8?t=1391) +- [00:32:29 Сложная проекция набора данных ( проекция изнутри и снаружи ) ](https://youtu.be/lwJCq9inky8?t=1949) +- [00:39:08 Сложная проекция набора данных с помощью декларативного программирования ](https://youtu.be/lwJCq9inky8?t=2348) +- [00:41:57 Оптимизация сложной проекции ](https://youtu.be/lwJCq9inky8?t=2517) +- [00:51:36 Синтаксис фильтрации ](https://youtu.be/lwJCq9inky8?t=3096) +- [00:53:25 Вывод ](https://youtu.be/lwJCq9inky8?t=3205) +- [00:58:08 Оптимизация](https://youtu.be/lwJCq9inky8?t=3488) +- [01:00:00 Обобщение](https://youtu.be/lwJCq9inky8?t=3600) + +## [Коллекции, множества, хештаблицы в JavaScript](https://youtu.be/hN0wsq5LNOc) + +- [00:00:00 Введение](https://youtu.be/hN0wsq5LNOc?t=0) +- [00:01:35 Массивы ](https://youtu.be/hN0wsq5LNOc?t=95) +- [00:01:56 Склеивание массива методом concat ](https://youtu.be/hN0wsq5LNOc?t=116) +- [00:02:02 Склеивание массива оператором spread ](https://youtu.be/hN0wsq5LNOc?t=122) +- [00:03:17 Объекты ](https://youtu.be/hN0wsq5LNOc?t=197) +- [00:03:28 Склеивание объектов методом object.assign ](https://youtu.be/hN0wsq5LNOc?t=208) +- [00:04:01 Склеивание объектов оператором spread ](https://youtu.be/hN0wsq5LNOc?t=241) +- [00:04:38 Символический тип ](https://youtu.be/hN0wsq5LNOc?t=278) +- [00:06:50 Сохранение коллекции в файл ](https://youtu.be/hN0wsq5LNOc?t=410) +- [00:08:45 Использование конструированного map ](https://youtu.be/hN0wsq5LNOc?t=525) +- [00:14:29 Использование встроенного map ](https://youtu.be/hN0wsq5LNOc?t=869) +- [00:15:01 Отличия конструированного и встроенного map](https://youtu.be/hN0wsq5LNOc?t=901) +- [00:16:49 Способы итерации по map ](https://youtu.be/hN0wsq5LNOc?t=1009) +- [00:18:15 Построение индексов помощью map](https://youtu.be/hN0wsq5LNOc?t=1095) +- [00:23:15 WeakMap](https://youtu.be/hN0wsq5LNOc?t=1395) +- [00:27:55 Отдача значения без ключа ](https://youtu.be/hN0wsq5LNOc?t=1675) +- [00:29:15 Хранение уникальных значений ](https://youtu.be/hN0wsq5LNOc?t=1755) +- [00:33:32 Операции со массивами ](https://youtu.be/hN0wsq5LNOc?t=2012) +- [00:39:48 Операции над множествами ](https://youtu.be/hN0wsq5LNOc?t=2388) +- [00:42:32 WeakSet ](https://youtu.be/hN0wsq5LNOc?t=2552) +- [00:47:15 Обобщение](https://youtu.be/hN0wsq5LNOc?t=2835) + +## [Неблокирующее асинхронное итерирование в JavaScript](https://youtu.be/wYA2cIRYLoA) + +- [1:02 блокирующее итерирование по массиву](https://youtu.be/wYA2cIRYLoA?t=62) +- [3:24 блокирующее итерирование с помощью for await](https://youtu.be/wYA2cIRYLoA?t=204) +- [4:47 неблокирующее итерирование с помощью setTimeout](https://youtu.be/wYA2cIRYLoA?t=287) +- [6:45 неблокирующее итерирование с помощью for await](https://youtu.be/wYA2cIRYLoA?t=405) +- [8:20 неблокирующее итерирование без задержки](https://youtu.be/wYA2cIRYLoA?t=500) +- [13:00 неблокирующее итерирование без задержки с помощью for await](https://youtu.be/wYA2cIRYLoA?t=780) +- [19:30 использование асинхронного итерирования для обычных массивов](https://youtu.be/wYA2cIRYLoA?t=1170) + +## [Структуры данных: списки, стек, очередь, дэк в JavaScript](https://youtu.be/9KvA4hDDSjk) + +- [00:00:00 Идея структуры данных](https://youtu.be/9KvA4hDDSjk?t=0) +- [00:02:27 Списки на прототипах ( абстракция элемента ) ](https://youtu.be/9KvA4hDDSjk?t=147) +- [00:06:23 Списки на объектах ](https://youtu.be/9KvA4hDDSjk?t=383) +- [00:07:28 Списки на замыканиях](https://youtu.be/9KvA4hDDSjk?t=448) +- [00:10:56 Списки на объектах ( абстракция элемента и списка ) ](https://youtu.be/9KvA4hDDSjk?t=656) +- [00:18:22 Списки на классах](https://youtu.be/9KvA4hDDSjk?t=1102) +- [00:21:08 Стек на прототипах ( двух-связанный)](https://youtu.be/9KvA4hDDSjk?t=1268) +- [00:28:17 Стек на классах (односвязный)](https://youtu.be/9KvA4hDDSjk?t=1697) +- [00:29:55 Очередь](https://youtu.be/9KvA4hDDSjk?t=1795) +- [00:34:26 Дэк](https://youtu.be/9KvA4hDDSjk?t=2066) + +## [Proxy и Symbol в JavaScript](https://youtu.be/UjZjSDyi9AM) + +- [00:00:00 Определение Proxy](https://youtu.be/UjZjSDyi9AM?t=0) +- [00:01:20 Обращение к свойствам объекта, находящегося внутри proxy](https://youtu.be/UjZjSDyi9AM?t=80) +- [00:04:10 Доступ к состоянию объекта через Getter и Setter ](https://youtu.be/UjZjSDyi9AM?t=250) +- [00:05:13 Доступ к состоянию объекта через Proxy ](https://youtu.be/UjZjSDyi9AM?t=313) +- [00:07:40 Проверка наличие свойств ](https://youtu.be/UjZjSDyi9AM?t=460) +- [00:11:22 Удаление свойств](https://youtu.be/UjZjSDyi9AM?t=682) +- [00:13:26 Обращение к аргументам функции, находящегося внутри proxy ](https://youtu.be/UjZjSDyi9AM?t=806) +- [00:15:30 Другие Proxy обработчики (Proxy handler )](https://youtu.be/UjZjSDyi9AM?t=930) +- [00:19:00 Proxy.revocable ](https://youtu.be/UjZjSDyi9AM?t=1140) +- [00:20:43 Определение Symbol ](https://youtu.be/UjZjSDyi9AM?t=1243) +- [00:23:00 Вывод и сравнение Symbol ](https://youtu.be/UjZjSDyi9AM?t=1380) +- [00:25:10 Type](https://youtu.be/UjZjSDyi9AM?t=1510) +- [00:29:51 Symbol.for](https://youtu.be/UjZjSDyi9AM?t=1791) +- [00:34:45 Symbol.iterator ](https://youtu.be/UjZjSDyi9AM?t=2085) +- [00:43:52 Symbol.toPrimitive](https://youtu.be/UjZjSDyi9AM?t=2632) +- [00:47:00 hideSymbol](https://youtu.be/UjZjSDyi9AM?t=2820) + +## [Сериализация и десериализация в JavaScript и Node.js](https://youtu.be/GtKPniOEzh8) + +- [00:00:00 Введение ](https://youtu.be/GtKPniOEzh8?t=0) +- [00:01:50 Виды сериализации ](https://youtu.be/GtKPniOEzh8?t=110) +- [00:02:45 Сериализатор console.dir ](https://youtu.be/GtKPniOEzh8?t=165) +- [00:03:45 Cериализатор CSV](https://youtu.be/GtKPniOEzh8?t=225) +- [00:05:42 Сериализатор JSON ](https://youtu.be/GtKPniOEzh8?t=342) +- [00:10:00 Сериализатор функции](https://youtu.be/GtKPniOEzh8?t=600) +- [00:15:25 Сериализатор функции разных типов (расширяемый)](https://youtu.be/GtKPniOEzh8?t=925) +- [00:23:06 Десереализация ](https://youtu.be/GtKPniOEzh8?t=1386) +- [00:25:26 Сериализация объекта в бинарный формат, с помощью библиотеки v8 ](https://youtu.be/GtKPniOEzh8?t=1526) +- [00:28:26 Сериализация объекта, с помощью разных библиотек](https://youtu.be/GtKPniOEzh8?t=1706) + +## [Асинхронность с библиотекой async.js](https://youtu.be/XQ94wQc-erU) + +## [Фабрики и пулы объектов в JavaScript, factorify, poolify](https://youtu.be/Ax_mSvadFp8) + +- [00:00:00 Введение ](https://youtu.be/Ax_mSvadFp8?t=0) +- [00:02:38 Фабрика ( factory )](https://youtu.be/Ax_mSvadFp8?t=158) +- [00:05:44 Фабрика прототипов ](https://youtu.be/Ax_mSvadFp8?t=344) +- [00:10:48 Фабрика классов ](https://youtu.be/Ax_mSvadFp8?t=648) +- [00:12:28 Фабрика функций ](https://youtu.be/Ax_mSvadFp8?t=748) +- [00:15:55 Фабричные методы ](https://youtu.be/Ax_mSvadFp8?t=955) +- [00:16:55 Превращение функций в фабрику ( factorify)](https://youtu.be/Ax_mSvadFp8?t=1015) +- [00:19:44 Пул ( pool )](https://youtu.be/Ax_mSvadFp8?t=1184) +- [00:23:05 Работа с пулом ](https://youtu.be/Ax_mSvadFp8?t=1385) +- [00:23:04 Обобщенный пул](https://youtu.be/Ax_mSvadFp8?t=1384) +- [00:24:55 Пулифицирование фабрики ( poolify ) ](https://youtu.be/Ax_mSvadFp8?t=1495) +- [00:28:50 Улучшенная пулифицированная фабрика ](https://youtu.be/Ax_mSvadFp8?t=1730) +- [00:32:10 Асинхронная работа с пулом ](https://youtu.be/Ax_mSvadFp8?t=1930) +- [00:45:25 Одновременное использование factorify и poolify ](https://youtu.be/Ax_mSvadFp8?t=2725) +- [00:51:54 Обобщение](https://youtu.be/Ax_mSvadFp8?t=3114) + +## [Подход к изучению программирования (выступление на дне факультета Информатики КПИ 12 декабря 2018)](https://youtu.be/zMU4ir10DMg) + +- [00:40 Что нужно знать?](https://youtu.be/zMU4ir10DMg?t=40) +- [03:41 Откуда брать знания ](https://youtu.be/zMU4ir10DMg?t=221) +- [07:39 Проблемы отрасли ](https://youtu.be/zMU4ir10DMg?t=459) +- [13:12 Дерево парадигм ](https://youtu.be/zMU4ir10DMg?t=792) +- [14:15 Технологии и техники](https://youtu.be/zMU4ir10DMg?t=855) +- [14:32 Разница парадигм](https://youtu.be/zMU4ir10DMg?t=872) +- [14:48 Что общего в парадигмах](https://youtu.be/zMU4ir10DMg?t=888) +- [15:33 Прочие парадигмы и техники](https://youtu.be/zMU4ir10DMg?t=933) +- [17:46 Мультипарадигменность](https://youtu.be/zMU4ir10DMg?t=1066) +- [18:46 Метапрограммирование](https://youtu.be/zMU4ir10DMg?t=1126) +- [19:13 Как не деградировать?](https://youtu.be/zMU4ir10DMg?t=1153) +- [21:29 Как найти общий язык? ](https://youtu.be/zMU4ir10DMg?t=1289) +- [24:31 Задачи программной инженерии](https://youtu.be/zMU4ir10DMg?t=1471) +- [28:19 Преодоление сложности ](https://youtu.be/zMU4ir10DMg?t=1699) +- [28:21 Связывание данных и логики](https://youtu.be/zMU4ir10DMg?t=1701) +- [28:30 Различные концепции ](https://youtu.be/zMU4ir10DMg?t=1710) +- [29:40 ВУЗ должен меняться](https://youtu.be/zMU4ir10DMg?t=1780) +- [33:53 Неспециальные предметы](https://youtu.be/zMU4ir10DMg?t=2033) +- [35:18 Чего не хватает](https://youtu.be/zMU4ir10DMg?t=2118) +- [36:57 Проблем много ](https://youtu.be/zMU4ir10DMg?t=2217) +- [40:20 ВУЗ должен знать](https://youtu.be/zMU4ir10DMg?t=2420) + +## [Асинхронность на промисах, Promise, all, then, catch, race](https://youtu.be/RMl4r6s1Y8M) + +## [Типизированные массивы в JavaScript](https://youtu.be/tTNcqxbxhfY) + +## [Шаблон Singleton (синглтон) в JavaScript](https://youtu.be/qdJ5yikZnfE) + +- [00:00:00 Singleton через конструктор прототипа](https://youtu.be/qdJ5yikZnfE?t=0) +- [00:03:27 Singleton через замыкания ](https://youtu.be/qdJ5yikZnfE?t=207) +- [00:06:10 Пример singleton через замыкания ](https://youtu.be/qdJ5yikZnfE?t=370) +- [00:08:15 Пример singleton через замыкания в функциональном стиле ](https://youtu.be/qdJ5yikZnfE?t=495) +- [00:09:23 Пример singleton через замыкания в функциональном стиле (упрощенный) ](https://youtu.be/qdJ5yikZnfE?t=563) +- [00:10:32 Создание singleton в JS](https://youtu.be/qdJ5yikZnfE?t=632) + +## [Функциональные объекты, функторы и монады в JavaScript](https://youtu.be/3Z7f0Gi8pxw) + +- [00:00:00 Определение функтора ](https://youtu.be/3Z7f0Gi8pxw?t=0) +- [00:01:40 Функтор из прототипа ](https://youtu.be/3Z7f0Gi8pxw?t=100) +- [00:08:17 Функтор из прототипа (упрощенный) ](https://youtu.be/3Z7f0Gi8pxw?t=497) +- [00:09:14 Функтор из замыкания ](https://youtu.be/3Z7f0Gi8pxw?t=554) +- [00:11:49 Функтор из замыкания с тернарным оператором](https://youtu.be/3Z7f0Gi8pxw?t=709) +- [00:12:44 Аппликативный функтор из прототипа ](https://youtu.be/3Z7f0Gi8pxw?t=764) +- [00:18:08 Аппликативный функтор из замыкания (монада)](https://youtu.be/3Z7f0Gi8pxw?t=1088) +- [00:23:11 Пример применения монады ](https://youtu.be/3Z7f0Gi8pxw?t=1391) +- [00:28:37 Функциональный объект ](https://youtu.be/3Z7f0Gi8pxw?t=1717) +- [00:39:44 Пример применения функционального объекта](https://youtu.be/3Z7f0Gi8pxw?t=2384) +- [00:45:27 Обобщение](https://youtu.be/3Z7f0Gi8pxw?t=2727) + +## [Асинхронные функции, async/await, thenable, обработка ошибок](https://youtu.be/Jdf_tZuJbHI) + +## [Асинхронные адаптеры: promisify, callbackify, asyncify...](https://youtu.be/76k6_YkYRmU) + +## [Асинхронные коллекторы данных](https://youtu.be/tgodt1JL6II) + +## [Утечки памяти в Node.js и JavaScript, сборка мусора и профилирование](https://youtu.be/0oZa64SB2wM) + +## [Рекурсия: косвенная и хвостовая, стек, выход](https://youtu.be/W2skCjIgVKE) + +- [00:00 Рекурсивная функция для вычисления глубины стека](https://youtu.be/W2skCjIgVKE?t=0) +- [03:25 Неявная рекурсия](https://youtu.be/W2skCjIgVKE?t=205) +- [04:52 Рекурсивная функция для вычисления степени числа](https://youtu.be/W2skCjIgVKE?t=292) +- [06:12 Рекурсивная функция для вычисления факториала ](https://youtu.be/W2skCjIgVKE?t=372) +- [06:29 Рекурсивная функция для вычисления числа Фибоначчи ](https://youtu.be/W2skCjIgVKE?t=389) +- [09:27 Рекурсивная функция, как аналог функции reduce ](https://youtu.be/W2skCjIgVKE?t=567) +- [12:04 Оптимизация хвостовой рекурсии ](https://youtu.be/W2skCjIgVKE?t=724) +- [15:41 Оптимизация обычной рекурсивной функции](https://youtu.be/W2skCjIgVKE?t=941) + +## [Дженерики и обобщенное программирование](https://youtu.be/r6W2z3DQhoI) + +## [Генераторы и асинхронные генераторы в JavaScript](https://youtu.be/kvNm9D32s8s) + +- [00:00 Способы объявления генераторов ](https://youtu.be/kvNm9D32s8s?t=0) +- [10:41 Пример генератора с yield ](https://youtu.be/kvNm9D32s8s?t=641) +- [15:54 Пример генератора с yield и return ](https://youtu.be/kvNm9D32s8s?t=954) +- [18:47 Получение значений из генератора циклом for...of ](https://youtu.be/kvNm9D32s8s?t=1127) +- [21:04 Получение значений из генератора spead - оператором ](https://youtu.be/kvNm9D32s8s?t=1264) +- [21:50 Метод next ](https://youtu.be/kvNm9D32s8s?t=1310) +- [23:30 Пример генератора с yield * возвращающего итерируемые объекты ](https://youtu.be/kvNm9D32s8s?t=1410) +- [25:05 Пример генератора с yield * возвращающего другие генераторы ](https://youtu.be/kvNm9D32s8s?t=1505) +- [26:18 Метод return ](https://youtu.be/kvNm9D32s8s?t=1578) +- [28:11 Метод throw](https://youtu.be/kvNm9D32s8s?t=1691) +- [29:05 Обобщение](https://youtu.be/kvNm9D32s8s?t=1745) + +## [Итераторы и асинхронные итераторы в JavaScript](https://youtu.be/rBGFlWpVpGs) + +## [Фасад - петтерн для скрытия сложности](https://youtu.be/oJtBO7CystE) + +## [Адаптер (Adapter) - паттерн достижения совместимости](https://youtu.be/cA65McLQrR8) + +- [0:00 введение](https://youtu.be/cA65McLQrR8?t=0) +- [1:30 adapter на prototype](https://youtu.be/cA65McLQrR8?t=90) +- [3:57 adapter на class](https://youtu.be/cA65McLQrR8?t=237) +- [4:23 adapter на function](https://youtu.be/cA65McLQrR8?t=263) +- [6:15 adapter на классе-обертке (boxing)](https://youtu.be/cA65McLQrR8?t=375) +- [7:08 adapter на замыканиях (closure)](https://youtu.be/cA65McLQrR8?t=428) +- [8:10 adapter на interface](https://youtu.be/cA65McLQrR8?t=490) +- [13:45 adapter на events](https://youtu.be/cA65McLQrR8?t=825) +- [16:00 выводы](https://youtu.be/cA65McLQrR8?t=960) + +## [Стратегия (Strategy) - выбор взаимозаменяемого поведения](https://youtu.be/hO8VSVv0NqM) + +- [0:00 введение](https://youtu.be/hO8VSVv0NqM?t=0) +- [3:40 strategy на class](https://youtu.be/hO8VSVv0NqM?t=220) +- [15:04 strategy на prototype](https://youtu.be/hO8VSVv0NqM?t=904) +- [16:14 strategy на function](https://youtu.be/hO8VSVv0NqM?t=974) +- [20:22 strategy с примером работы над массивом](https://youtu.be/hO8VSVv0NqM?t=1222) +- [24:07 обобщение](https://youtu.be/hO8VSVv0NqM?t=1447) + +## [Линзы в JavaScript - функциональные аналоги геттера и сеттера](https://youtu.be/IBF5gFU6G-o) + +## [Перечислимый тип (enum) в JavaScript и TypeScript](https://youtu.be/BXiKebOIAGI) + +## [Графы и запросы к графовым структурам на JavaScript](https://youtu.be/a0W0T8Yqw3s) + +## [Паттерн Команда (Command) действие и параметры как объект](https://youtu.be/vER0vYL4hM4) + +## [Тестирование: юниттесты с примерами на JavaScript](https://youtu.be/CszugIag2TA) + +## [Инверсия управления и внедрение зависимостей в Node.js](https://youtu.be/Fz86Fdjz-LM) + +## [Слои, связанность и связность кода в JavaScript](https://youtu.be/A3RpwNlVeyY) + +## [Измерение производительности кода и оптимизация в JavaScript и Node.js](https://youtu.be/sanq2X7Re8o) + +- [00:00:00 Введение ](https://youtu.be/sanq2X7Re8o?t=0) +- [00:05:27 Console.time и console.timeEnd ](https://youtu.be/sanq2X7Re8o?t=327) +- [00:09:05 New Date( ).getTime( ) ](https://youtu.be/sanq2X7Re8o?t=545) +- [00:11:15 Process.hrtime( )](https://youtu.be/sanq2X7Re8o?t=675) +- [00:18:51 Process.hrtime.bigint( ) и движок для benchmark](https://youtu.be/sanq2X7Re8o?t=1131) +- [00:27:00 Сравнение функций инстанцирования ](https://youtu.be/sanq2X7Re8o?t=1620) +- [00:31:06 Алгоритм для сравнения ](https://youtu.be/sanq2X7Re8o?t=1866) +- [00:39:36 Работа движка benchmark ](https://youtu.be/sanq2X7Re8o?t=2376) +- [00:41:37 Результаты теста](https://youtu.be/sanq2X7Re8o?t=2497) +- [00:47:33 Сравнение массива и объектов ](https://youtu.be/sanq2X7Re8o?t=2853) +- [00:54:21 Результаты теста ](https://youtu.be/sanq2X7Re8o?t=3261) +- [00:55:00 Сравнение 3 функций range ](https://youtu.be/sanq2X7Re8o?t=3300) +- [00:56:34 Результаты теста ](https://youtu.be/sanq2X7Re8o?t=3394) +- [00:58:50 Сравнение функций по способу вызова](https://youtu.be/sanq2X7Re8o?t=3530) +- [00:59:56 Результаты теста](https://youtu.be/sanq2X7Re8o?t=3596) +- [01:01:34 Сравнение indexOf и includes](https://youtu.be/sanq2X7Re8o?t=3694) +- [01:01:54 Результаты теста ](https://youtu.be/sanq2X7Re8o?t=3714) +- [01:03:23 Сравнение объявления переменной до и после цикла ](https://youtu.be/sanq2X7Re8o?t=3803) +- [01:05:02 Сравнение for keys, for (...in...) и for (...of...)](https://youtu.be/sanq2X7Re8o?t=3902) +- [01:05:34 Результаты теста ](https://youtu.be/sanq2X7Re8o?t=3934) +- [01:05:58 Сравнение шаблонных строк](https://youtu.be/sanq2X7Re8o?t=3958) +- [01:06:12 Сравнение хождения цикла по функции map в ES6](https://youtu.be/sanq2X7Re8o?t=3972) +- [01:07:18 Результаты теста ](https://youtu.be/sanq2X7Re8o?t=4038) +- [01:07:56 Сравнение repeat и arrayJoin ](https://youtu.be/sanq2X7Re8o?t=4076) +- [01:08:15 Результаты теста](https://youtu.be/sanq2X7Re8o?t=4095) +- [01:08:26 Сравнение дублирования массива ](https://youtu.be/sanq2X7Re8o?t=4106) +- [01:08:58 Результаты теста](https://youtu.be/sanq2X7Re8o?t=4138) +- [01:09:43 Сравнение копирование набора данных ](https://youtu.be/sanq2X7Re8o?t=4183) +- [01:10:26 Результаты теста ](https://youtu.be/sanq2X7Re8o?t=4226) +- [01:10:47 Сравнение итерирования с помощью forEarch и for (...of...)](https://youtu.be/sanq2X7Re8o?t=4247) +- [01:11:08 Результаты теста](https://youtu.be/sanq2X7Re8o?t=4268) +- [01:11:31 Обобщение](https://youtu.be/sanq2X7Re8o?t=4291) + +## [Слой доступа к данным, курсор, транзакция](https://youtu.be/CRcSWtWVvrA) + +## [HTTP запросы в браузере и Node.js: XMLHttpRequest, fetch](https://youtu.be/wMMki2FEYGY) + +## [Метапрограммирование с примерами на JavaScript](https://youtu.be/Ed9onRv4G5Y) + +## [Тестирование: системное и интеграционное тестирование на JavaScript](https://youtu.be/OuKu_6H_6gE) + +## [Отмена асинхронных операций, cancellable callback and Promise в JavaScript](https://youtu.be/T8fXlnqI4Ws) + +## [Асинхронная композиция функций на JavaScript](https://youtu.be/3ZCrMlMpOrM) + +## [Thenable и легковесный await в JavaScript](https://youtu.be/DXp__1VNIvI) + +## [Конкурентная асинхронная очередь на JavaScript](https://youtu.be/Lg46AH8wFvg) + +## [Паттерн Revealing Constructor - открытый конструктор](https://youtu.be/leR5sXRkuJI) + +## [Модель акторов для параллельных вычислений](https://youtu.be/xp5MVKEqxY4) + +## [Have Objects Failed? Или что не так с ООП?](https://youtu.be/4yO5OS0vPSw) + +- [1:46 Присвоенные идеи ООП](https://youtu.be/4yO5OS0vPSw?t=106) +- [11:47 Притянутые достоинства ООП](https://youtu.be/4yO5OS0vPSw?t=707) +- [22:06 Проблемы ООП](https://youtu.be/4yO5OS0vPSw?t=1326) +- [39:56 Как жить с ООП](https://youtu.be/4yO5OS0vPSw?t=2396) +- [56:44 Подходящие области для ООП](https://youtu.be/4yO5OS0vPSw?t=3404) +- [1:03:51 Неподходящие области для ООП](https://youtu.be/4yO5OS0vPSw?t=3831) +- [1:11:30 Заключение](https://youtu.be/4yO5OS0vPSw?t=4290) + +## [Интроспекция и рефлексия в JavaScript](https://youtu.be/yvW1PjUVeM0) + +## [История развития языков программирования](https://youtu.be/qqz0VSaNxuw) + +- [0:00:02 введение](https://youtu.be/qqz0VSaNxuw?t=2) +- [0:00:57 карты для механических машин](https://youtu.be/qqz0VSaNxuw?t=57) +- [0:01:50 карты для электронных машин](https://youtu.be/qqz0VSaNxuw?t=110) +- [0:03:21 машинный код](https://youtu.be/qqz0VSaNxuw?t=201) +- [0:04:05 Assembly language](https://youtu.be/qqz0VSaNxuw?t=245) +- [0:06:14 Fortran](https://youtu.be/qqz0VSaNxuw?t=374) +- [0:07:28 Basic](https://youtu.be/qqz0VSaNxuw?t=448) +- [0:09:19 LISP](https://youtu.be/qqz0VSaNxuw?t=559) +- [0:12:23 Algol 60](https://youtu.be/qqz0VSaNxuw?t=743) +- [0:13:25 C](https://youtu.be/qqz0VSaNxuw?t=805) +- [0:14:23 C++](https://youtu.be/qqz0VSaNxuw?t=863) +- [0:15:13 Ada](https://youtu.be/qqz0VSaNxuw?t=913) +- [0:16:08 dBase, FoxBase, Clipper](https://youtu.be/qqz0VSaNxuw?t=968) +- [0:19:56 Haskell](https://youtu.be/qqz0VSaNxuw?t=1196) +- [0:21:23 Python](https://youtu.be/qqz0VSaNxuw?t=1283) +- [0:23:37 Java](https://youtu.be/qqz0VSaNxuw?t=1417) +- [0:25:45 Delphi](https://youtu.be/qqz0VSaNxuw?t=1545) +- [0:28:43 SQL](https://youtu.be/qqz0VSaNxuw?t=1723) +- [0:30:43 PHP 0:41:17 стрелочку из плюсов взяли](https://youtu.be/qqz0VSaNxuw?t=1843) +- [0:33:14 C#](https://youtu.be/qqz0VSaNxuw?t=1994) +- [0:35:20 Go](https://youtu.be/qqz0VSaNxuw?t=2120) +- [0:36:17 Rust](https://youtu.be/qqz0VSaNxuw?t=2177) +- [0:37:30 TypeScript](https://youtu.be/qqz0VSaNxuw?t=2250) +- [0:39:59 Swift](https://youtu.be/qqz0VSaNxuw?t=2399) +- [0:40:19 Kotlin](https://youtu.be/qqz0VSaNxuw?t=2419) +- [0:42:20 взаимовлияние языков](https://youtu.be/qqz0VSaNxuw?t=2540) +- [0:44:23 все ли языки используются сегодня](https://youtu.be/qqz0VSaNxuw?t=2663) +- [0:49:35 производительность языков](https://youtu.be/qqz0VSaNxuw?t=2975) +- [0:54:34 опциональная аннотация типов](https://youtu.be/qqz0VSaNxuw?t=3274) +- [0:56:50 прогревание кода](https://youtu.be/qqz0VSaNxuw?t=3410) +- [0:59:24 первые операционные системы](https://youtu.be/qqz0VSaNxuw?t=3564) +- [1:00:44 ограничение по вложенности рекурсии](https://youtu.be/qqz0VSaNxuw?t=3644) +- [1:02:53 абстрактное синтаксическое дерево](https://youtu.be/qqz0VSaNxuw?t=3773) +- [1:04:52 машинный код и байт-код](https://youtu.be/qqz0VSaNxuw?t=3892) +- [1:07:26 typescript быстрее javascript?](https://youtu.be/qqz0VSaNxuw?t=4046) +- [1:11:45 goroutine на Go асинхронная?](https://youtu.be/qqz0VSaNxuw?t=4305) +- [1:12:58 асинхронная функция в javascript](https://youtu.be/qqz0VSaNxuw?t=4378) +- [1:15:23 строгая типизация влияет на скорость?](https://youtu.be/qqz0VSaNxuw?t=4523) +- [1:16:13 выведение и проверка типов в IDE](https://youtu.be/qqz0VSaNxuw?t=4573) + +## [Парадигмы программирования (обзор)](https://youtu.be/Yk1sxLVHfjs) + +- [00:20 парадигма](https://youtu.be/Yk1sxLVHfjs?t=20) +- [02:19 императивная программа: пошаговое исполнение на примере JavaScript](https://youtu.be/Yk1sxLVHfjs?t=139) +- [03:22 пошаговое исполнение характерно для неструктурных ЯП: Assembly language, Basic](https://youtu.be/Yk1sxLVHfjs?t=202) +- [05:08 структурная программа на Rust](https://youtu.be/Yk1sxLVHfjs?t=308) +- [06:21 процедурный стиль на Python](https://youtu.be/Yk1sxLVHfjs?t=381) +- [07:28 объектно-ориентированное программирование на примере JavaScript](https://youtu.be/Yk1sxLVHfjs?t=448) +- [09:32 ООП хорош не для всякой задачи -- пример с пирожком](https://youtu.be/Yk1sxLVHfjs?t=572) +- [13:28 прототипное программирование](https://youtu.be/Yk1sxLVHfjs?t=808) +- [16:51 функциональное программирование](https://youtu.be/Yk1sxLVHfjs?t=1011) +- [18:58 асинхронное программирование](https://youtu.be/Yk1sxLVHfjs?t=1138) +- [22:48 реактивное программирование](https://youtu.be/Yk1sxLVHfjs?t=1368) +- [26:04 событийно-ориентированное программирование (управляется потоками событий)](https://youtu.be/Yk1sxLVHfjs?t=1564) +- [27:03 метапрограммирование](https://youtu.be/Yk1sxLVHfjs?t=1623) +- [28:58 мультипарадигменное программирование](https://youtu.be/Yk1sxLVHfjs?t=1738) +- [30:52 параллельное программирование](https://youtu.be/Yk1sxLVHfjs?t=1852) +- [31:58 реактивность](https://youtu.be/Yk1sxLVHfjs?t=1918) +- [33:29 функции 1 класса](https://youtu.be/Yk1sxLVHfjs?t=2009) +- [34:55 геттеры и сеттеры](https://youtu.be/Yk1sxLVHfjs?t=2095) +- [37:37 смешивание стилей](https://youtu.be/Yk1sxLVHfjs?t=2257) +- [38:07 если хочется писать в чистом ООП](https://youtu.be/Yk1sxLVHfjs?t=2287) +- [39:43 объект, класс, коллекция -- разница](https://youtu.be/Yk1sxLVHfjs?t=2383) +- [47:27 где хранятся классы](https://youtu.be/Yk1sxLVHfjs?t=2847) +- [47:54 у каждой парадигмы свои шаблоны программирования](https://youtu.be/Yk1sxLVHfjs?t=2874) +- [48:52 когда используется функциональное программирование](https://youtu.be/Yk1sxLVHfjs?t=2932) + +## [Примеси, обертки, декораторы, мемоизация](https://youtu.be/2h9syXN5wO0) + +- [00:00:00 Синхронная функция-обертка ](https://youtu.be/2h9syXN5wO0?t=0) +- [00:02:55 Синхронная универсальная функция-обертка ](https://youtu.be/2h9syXN5wO0?t=175) +- [00:08:28 Асинхронная универсальная функция-обертка ](https://youtu.be/2h9syXN5wO0?t=508) +- [00:15:50 Синхронная функция-обертка, которая добавляет поведение (timeout)](https://youtu.be/2h9syXN5wO0?t=950) +- [00:22:45 Асинхронная функция-обертка, которая добавляет поведение (timeout)](https://youtu.be/2h9syXN5wO0?t=1365) +- [00:25:38 Функция-обертка, которая ограничивает вызов функции до одного вызова (once) ](https://youtu.be/2h9syXN5wO0?t=1538) +- [00:27:36 Функция-обертка, которая ограничивает вызов функции до n-го вызова (limit)](https://youtu.be/2h9syXN5wO0?t=1656) +- [00:29:50 Функция-обертка, которая отменяет вызов функции (cancel)](https://youtu.be/2h9syXN5wO0?t=1790) +- [00:32:29 Функция-обертка с методами timeout, limit, cancel](https://youtu.be/2h9syXN5wO0?t=1949) +- [00:39:03 Функция-обертка с методами timeout, limit, cancel (оптимизированная)](https://youtu.be/2h9syXN5wO0?t=2343) +- [00:42:28 Функция-обертка, которая ограничивает один вызов за 200 мс (throttle)](https://youtu.be/2h9syXN5wO0?t=2548) +- [00:45:47 Примесь поля через точку ](https://youtu.be/2h9syXN5wO0?t=2747) +- [00:51:35 Примесь поля через функцию extend](https://youtu.be/2h9syXN5wO0?t=3095) +- [00:57:35 Примесь поля через object.assign( )](https://youtu.be/2h9syXN5wO0?t=3455) +- [00:59:18 Примесь поведения ](https://youtu.be/2h9syXN5wO0?t=3558) +- [01:02:23 Примесь изменения класса](https://youtu.be/2h9syXN5wO0?t=3743) +- [01:06:50 Определение](https://youtu.be/2h9syXN5wO0?t=4010) +- [01:07:30 Реализация простой мемоизации ](https://youtu.be/2h9syXN5wO0?t=4050) +- [01:14:43 Реализация простой мемоизации с проверкой скорости ](https://youtu.be/2h9syXN5wO0?t=4483) +- [01:20:43 Удаление накопленного кэша ](https://youtu.be/2h9syXN5wO0?t=4843) +- [01:25:35 Асинхронная мемоизация ](https://youtu.be/2h9syXN5wO0?t=5135) +- [01:31:10 Преобразование аргументов и ключей в hash-функцию](https://youtu.be/2h9syXN5wO0?t=5470) +- [01:33:32 Реализация сложной мемоизации](https://youtu.be/2h9syXN5wO0?t=5612) + +## [Ответы на вопросы по курсу "Основы программирования" 2019-2020](https://youtu.be/TY6nDW7aYys) + +## [Антипаттерны процедурного программирования](https://youtu.be/cTv7V22mkwE) + +## [Семинар: выполнение лабораторных работ на JavaSript по курсу "Основы программирования"](https://youtu.be/ikUOyFPzdJw) + +## [Массивы в JavaScript (методы Array)](https://youtu.be/D1kfYBkX9FE) + +- [00:00 Конструкция массива](https://youtu.be/D1kfYBkX9FE?t=0) +- [09:58 Метод concat](https://youtu.be/D1kfYBkX9FE?t=598) +- [11:00 Методы every и some ](https://youtu.be/D1kfYBkX9FE?t=660) +- [13:00 Метод filter ](https://youtu.be/D1kfYBkX9FE?t=780) +- [13:29 Методы find и findIndex](https://youtu.be/D1kfYBkX9FE?t=809) +- [14:30 Метод flat ](https://youtu.be/D1kfYBkX9FE?t=870) +- [17:08 Метод includes ](https://youtu.be/D1kfYBkX9FE?t=1028) +- [17:32 Метод indexOf и lastIndexOf](https://youtu.be/D1kfYBkX9FE?t=1052) +- [18:35 Метод join](https://youtu.be/D1kfYBkX9FE?t=1115) +- [18:58 Метод reverse](https://youtu.be/D1kfYBkX9FE?t=1138) +- [19:29 Метод slice](https://youtu.be/D1kfYBkX9FE?t=1169) +- [21:49 Метод splice](https://youtu.be/D1kfYBkX9FE?t=1309) +- [23:27 Методы reduce и reduceRight](https://youtu.be/D1kfYBkX9FE?t=1407) + +## [Code Review: как это и зачем](https://youtu.be/EKL6NiIQ6ZU) + +## [Семинар: Code Review, ответы на вопросы](https://youtu.be/AgH4OAKbmkM) + +## [Мономорфный и полиморфный код, инлайн-кэш, скрытые классы в JavaScript](https://youtu.be/9JUY3prnCQ4) + +## [Ассоциация, агрегация и композиция объектов в JavaScript](https://youtu.be/tOIcBrzezK0) + +## [Рефакторинг: причины, цели, техники и процесс](https://youtu.be/z73wmpdweQ4) + +## [Принцип подстановки Барбары Лисков](https://youtu.be/RbhYxygxroc) + +## [Композиция функций (pipe, compose) в JavaScript](https://youtu.be/xS9FicVrOTI) + +## [Примеси в JavaScript: mixin, extend, Object.assign, class λ-mixin](https://youtu.be/NZMrJ2adEyY) + +## [Прототипное программирование и прототипное наследование в JavaScript](https://youtu.be/SzaXTW2qcJE) + +## [Мемоизация функций: memoize в JavaScript](https://youtu.be/H6S8QJo2Qxg) + +## [Функции-обертки: Wrappers в JavaScript](https://youtu.be/En7pWi2fSzs) + +## [Новое в JavaScript: ES.Next, ECMAScript 2020, ES11, ES10, ES9, ES8, ES7, ES6, ES2020, ES2019](https://youtu.be/fUjHLj8bq_Y) + +- [00:00 ECMA Script versions](https://youtu.be/fUjHLj8bq_Y?t=0) +- [09:40 Array.proptotype.includes ](https://youtu.be/fUjHLj8bq_Y?t=580) +- [10:55 Array.proptotype.flat ](https://youtu.be/fUjHLj8bq_Y?t=655) +- [11:36 Array.proptotype.flatMap](https://youtu.be/fUjHLj8bq_Y?t=696) +- [12:20 Array.proptotype.sort](https://youtu.be/fUjHLj8bq_Y?t=740) +- [14:24 Object.values ](https://youtu.be/fUjHLj8bq_Y?t=864) +- [15:06 Object.keys ](https://youtu.be/fUjHLj8bq_Y?t=906) +- [15:15 Object.entries ](https://youtu.be/fUjHLj8bq_Y?t=915) +- [15:49 Object.fromEntries ](https://youtu.be/fUjHLj8bq_Y?t=949) +- [16:36 String.proptotype.padStart / String.proptotype.padEnd ](https://youtu.be/fUjHLj8bq_Y?t=996) +- [17:02 String.proptotype.trimStart / String.proptotype.trimEnd](https://youtu.be/fUjHLj8bq_Y?t=1022) +- [17:18 Operator rest ](https://youtu.be/fUjHLj8bq_Y?t=1038) +- [19:38 Operator spread](https://youtu.be/fUjHLj8bq_Y?t=1178) +- [21:34 Operator exponentiation x ** y](https://youtu.be/fUjHLj8bq_Y?t=1294) +- [22:35 Operator optional chaining ?.](https://youtu.be/fUjHLj8bq_Y?t=1355) +- [24:22 Asynchronous function: async / await ](https://youtu.be/fUjHLj8bq_Y?t=1462) +- [26:34 Trailing Commas ](https://youtu.be/fUjHLj8bq_Y?t=1594) +- [28:00 Asynchronous iterable contract: for-await](https://youtu.be/fUjHLj8bq_Y?t=1680) +- [29:51 Try...catch ](https://youtu.be/fUjHLj8bq_Y?t=1791) +- [30:21 Function.prototype.toString ](https://youtu.be/fUjHLj8bq_Y?t=1821) +- [30:58 Symbol.prototype.description ](https://youtu.be/fUjHLj8bq_Y?t=1858) +- [32:11 Promise.finaly ](https://youtu.be/fUjHLj8bq_Y?t=1931) +- [33:22 Promise.allSettled ](https://youtu.be/fUjHLj8bq_Y?t=2002) +- [36:18 More features](https://youtu.be/fUjHLj8bq_Y?t=2178) + +## [Вступительная лекция по инженерии программного обеспечения (КПИ 1 курс) 2021-09-01](https://youtu.be/vWi6KyG078g) + +## [Автоматное программирование c примерами на JavaScript](https://youtu.be/mxz7_zcip0c) + +## [Контрактное программирование с примерами на JavaScript и Node.js](https://youtu.be/K5_kSUvbGEQ) + +## [JavaScript - Практические задачи #1: Пример исправления, лайвкодинг, оптимизация и рефакторинг](https://youtu.be/CRmjViLEE9E) + +## [JavaScript и Node.js: Добавь в Github личную карту знаний](https://youtu.be/gDUGZsw2N2g) From 459a85fcda0588dd03542be51f8a4ef63c787dea Mon Sep 17 00:00:00 2001 From: Anton Telichenko Date: Wed, 3 Aug 2022 21:51:19 +0300 Subject: [PATCH 128/308] Update Asynchronous.md (#72) Co-authored-by: Timur Shemsedinov --- Courses/Asynchronous.md | 122 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 122 insertions(+) diff --git a/Courses/Asynchronous.md b/Courses/Asynchronous.md index 29268ff..951b3d8 100644 --- a/Courses/Asynchronous.md +++ b/Courses/Asynchronous.md @@ -60,3 +60,125 @@ - Async hooks - [Разделяемая память в многопоточном Node.js](https://youtu.be/KNsm_iIQt7U) - [Асинхронный пул для worker thread pool в Node.js](https://youtu.be/Jj5KZRq4wYI) + +# Асинхронное программирование (таймкоды) + +## [Асинхронное программирование в Node.js и JavaScript](https://youtu.be/hY6Z6qNYzmc) + +- [5:45 Callbacks](https://youtu.be/hY6Z6qNYzmc?t=345) +- [10:00 Async.js or analogues](https://youtu.be/hY6Z6qNYzmc?t=600) +- [15:47 Events](https://youtu.be/hY6Z6qNYzmc?t=947) +- [18:00 Promise](https://youtu.be/hY6Z6qNYzmc?t=1080) +- [25:20 async/await](https://youtu.be/hY6Z6qNYzmc?t=1520) +- [27:10 Functor + Chaining + composition](https://youtu.be/hY6Z6qNYzmc?t=1630) +- [30:49 Problems of callback, async.js, Proimise, async/await](https://youtu.be/hY6Z6qNYzmc?t=1849) +- [34:00 Add timeout to any function](https://youtu.be/hY6Z6qNYzmc?t=2040) +- [36:55 Make function cancelable](https://youtu.be/hY6Z6qNYzmc?t=2215) +- [37:59 More wrappers](https://youtu.be/hY6Z6qNYzmc?t=2279) +- [39:22 Promisify and Callbackify](https://youtu.be/hY6Z6qNYzmc?t=2362) +- [48:47 Sync function to async](https://youtu.be/hY6Z6qNYzmc?t=2927) +- [41:43 Sync function to Promise](https://youtu.be/hY6Z6qNYzmc?t=2503) +- [43:17 Convertors](https://youtu.be/hY6Z6qNYzmc?t=2597) +- [43:31 Metasync](https://youtu.be/hY6Z6qNYzmc?t=2611) +- [45:26 Function composition](https://youtu.be/hY6Z6qNYzmc?t=2726) +- [47:09 Asynchronous function composition](https://youtu.be/hY6Z6qNYzmc?t=2829) +- [47:58 Flow communication like in electronics](https://youtu.be/hY6Z6qNYzmc?t=2878) +- [50:06 Collectors](https://youtu.be/hY6Z6qNYzmc?t=3006) +- [59:17 Queue](https://youtu.be/hY6Z6qNYzmc?t=3557) + +## [Таймеры, таймауты, EventEmitter в JavaScript и Node.js](https://youtu.be/LK2jveAnRNg) + +- [0:30 callback sync/async](https://youtu.be/LK2jveAnRNg?t=30) +- [1:35 временная задержка sleep.js](https://youtu.be/LK2jveAnRNg?t=95) +- [5:35 await-sleep.js](https://youtu.be/LK2jveAnRNg?t=335) +- [8:40 sleep-then.js](https://youtu.be/LK2jveAnRNg?t=520) +- [9:30 order.js](https://youtu.be/LK2jveAnRNg?t=570) +- [18:38 precision.js](https://youtu.be/LK2jveAnRNg?t=1118) +- [22:13 blocking.js](https://youtu.be/LK2jveAnRNg?t=1333) +- [22:50 timers.js](https://youtu.be/LK2jveAnRNg?t=1370) +- [29:35 ref-unref.js](https://youtu.be/LK2jveAnRNg?t=1775) +- [32:05 enroll.js](https://youtu.be/LK2jveAnRNg?t=1925) +- [34:57 eventloop.txt](https://youtu.be/LK2jveAnRNg?t=2097) +- [37:37 eventEmitter](https://youtu.be/LK2jveAnRNg?t=2257) +- [44:32 simple.js](https://youtu.be/LK2jveAnRNg?t=2672) +- [47:48 usage.js](https://youtu.be/LK2jveAnRNg?t=2868) +- [48:30 enhanced.js](https://youtu.be/LK2jveAnRNg?t=2910) +- [50:18 star-fix.js](https://youtu.be/LK2jveAnRNg?t=3018) +- [51:10 usage.js](https://youtu.be/LK2jveAnRNg?t=3070) +- [53:15 closure.js](https://youtu.be/LK2jveAnRNg?t=3195) +- [54:50 fp.js](https://youtu.be/LK2jveAnRNg?t=3290) +- [57:10 methods.js](https://youtu.be/LK2jveAnRNg?t=3430) +- [1:06:35 min.js](https://youtu.be/LK2jveAnRNg?t=3995) +- [1:12:31 prod.js](https://youtu.be/LK2jveAnRNg?t=4351) + +## [Асинхронное программирование на callback`ах в JavaScript](https://youtu.be/z8Hg6zgi3yQ) + +- [1:20 пример callback функции](https://youtu.be/z8Hg6zgi3yQ?t=80) +- [2:40 пример последовательного исполнения callback функций](https://youtu.be/z8Hg6zgi3yQ?t=160) +- [5:52 пример параллельного исполнения async функций c использованием wrapAsync](https://youtu.be/z8Hg6zgi3yQ?t=352) +- [15:18 пример последовательного исполнения async функций c использованием wrapAsync](https://youtu.be/z8Hg6zgi3yQ?t=918) +- [19:05 chain исполнение async функций](https://youtu.be/z8Hg6zgi3yQ?t=1145) +- [41:16 где можно встретить асинхронные функции](https://youtu.be/z8Hg6zgi3yQ?t=2476) + +## [Неблокирующее асинхронное итерирование в JavaScript](https://youtu.be/wYA2cIRYLoA) + +- [1:02 блокирующее итерирование по массиву](https://youtu.be/wYA2cIRYLoA?t=62) +- [3:24 блокирующее итерирование с помощью for await](https://youtu.be/wYA2cIRYLoA?t=204) +- [4:47 неблокирующее итерирование с помощью setTimeout](https://youtu.be/wYA2cIRYLoA?t=287) +- [6:45 неблокирующее итерирование с помощью for await](https://youtu.be/wYA2cIRYLoA?t=405) +- [8:20 неблокирующее итерирование без задержки](https://youtu.be/wYA2cIRYLoA?t=500) +- [13:00 неблокирующее итерирование без задержки с помощью for await](https://youtu.be/wYA2cIRYLoA?t=780) +- [19:30 использование асинхронного итерирования для обычных массивов](https://youtu.be/wYA2cIRYLoA?t=1170) + +## [Асинхронность с библиотекой async.js](https://youtu.be/XQ94wQc-erU) + +## [Асинхронность на промисах, Promise, all, then, catch, race](https://youtu.be/RMl4r6s1Y8M) + +## [Асинхронные функции, async/await, thenable, обработка ошибок](https://youtu.be/Jdf_tZuJbHI) + +## [Асинхронные адаптеры: promisify, callbackify, asyncify...](https://youtu.be/76k6_YkYRmU) + +## [Асинхронные коллекторы данных](https://youtu.be/tgodt1JL6II) + +## [Необработанные ошибки в промисах на Node.js](https://youtu.be/1Ml5NE2fsZ8) + +## [Проблема асинхронного стектрейса в JavaScript и Node.js](https://youtu.be/pfiHTx3j87Y) + +## [Генераторы и асинхронные генераторы в JavaScript](https://youtu.be/kvNm9D32s8s) + +- [00:00 Способы объявления генераторов ](https://youtu.be/kvNm9D32s8s?t=0) +- [10:41 Пример генератора с yield ](https://youtu.be/kvNm9D32s8s?t=641) +- [15:54 Пример генератора с yield и return ](https://youtu.be/kvNm9D32s8s?t=954) +- [18:47 Получение значений из генератора циклом for...of ](https://youtu.be/kvNm9D32s8s?t=1127) +- [21:04 Получение значений из генератора spead - оператором ](https://youtu.be/kvNm9D32s8s?t=1264) +- [21:50 Метод next ](https://youtu.be/kvNm9D32s8s?t=1310) +- [23:30 Пример генератора с yield * возвращающего итерируемые объекты ](https://youtu.be/kvNm9D32s8s?t=1410) +- [25:05 Пример генератора с yield * возвращающего другие генераторы ](https://youtu.be/kvNm9D32s8s?t=1505) +- [26:18 Метод return ](https://youtu.be/kvNm9D32s8s?t=1578) +- [28:11 Метод throw](https://youtu.be/kvNm9D32s8s?t=1691) +- [29:05 Обобщение](https://youtu.be/kvNm9D32s8s?t=1745) + +## [Итераторы и асинхронные итераторы в JavaScript](https://youtu.be/rBGFlWpVpGs) + +## [Отмена асинхронных операций, cancellable callback and Promise в JavaScript](https://youtu.be/T8fXlnqI4Ws) + +## [Асинхронная композиция функций на JavaScript](https://youtu.be/3ZCrMlMpOrM) + +## [Thenable и легковесный await в JavaScript](https://youtu.be/DXp__1VNIvI) + +## [Конкурентная асинхронная очередь на JavaScript](https://youtu.be/Lg46AH8wFvg) + +## [Паттерн Revealing Constructor - открытый конструктор](https://youtu.be/leR5sXRkuJI) + +## [Future: Асинхронность на фьючерах без состояния](https://youtu.be/22ONv3AGXdk) + +## [Deferred: Асинхронность на диферах с состоянием](https://youtu.be/a2fVA1o-ovM) + +## [Модель акторов для параллельных вычислений](https://youtu.be/xp5MVKEqxY4) + +## [Паттерн Наблюдатель (Observer + Observable)](https://youtu.be/_bFXuLcXoXg) + +## [Асинхронность на RxJS и потоки событий](https://youtu.be/0kcpMAl-wfE) + +## [Асинхронный пул для worker thread pool в Node.js](https://youtu.be/Jj5KZRq4wYI) + From e8b5cdf54e6e001614aef1eeca28e0f7034aea93 Mon Sep 17 00:00:00 2001 From: Georgiy Filippov Date: Thu, 4 Aug 2022 06:51:01 +0500 Subject: [PATCH 129/308] fix: fix links in Async & Promise topics (#76) --- Courses/Fundamentals.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Courses/Fundamentals.md b/Courses/Fundamentals.md index 4bc6171..2d05836 100644 --- a/Courses/Fundamentals.md +++ b/Courses/Fundamentals.md @@ -148,8 +148,9 @@ - [Измерение производительности кода и оптимизация](https://youtu.be/sanq2X7Re8o) - Примеры кода: https://github.com/HowProgrammingWorks/Benchmark - [Асинхронное программирование на callback`ах](https://youtu.be/z8Hg6zgi3yQ) -- [Асинхронное программирование на promise`ах](https://youtu.be/RMl4r6s1Y8M) - Примеры кода: https://github.com/HowProgrammingWorks/AsynchronousProgramming +- [Асинхронное программирование на promise`ах](https://youtu.be/RMl4r6s1Y8M) + - Примеры кода: https://github.com/HowProgrammingWorks/Promise - [Асинхронные функции, async/await, thenable, обработка ошибок](https://youtu.be/Jdf_tZuJbHI) - Примеры кода: https://github.com/HowProgrammingWorks/AsyncAwait - Неизменяемые структуры данных (immutable) From f0b341289d2d7eb0c8395ccf840777e3b93a95fe Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Thu, 4 Aug 2022 15:06:33 +0300 Subject: [PATCH 130/308] Move timecodes for Node.js to separate file --- Courses/NodeJS-timecodes.md | 272 ++++++++++++++++++++++++++++++++++++ Courses/NodeJS.md | 272 ------------------------------------ 2 files changed, 272 insertions(+), 272 deletions(-) create mode 100644 Courses/NodeJS-timecodes.md diff --git a/Courses/NodeJS-timecodes.md b/Courses/NodeJS-timecodes.md new file mode 100644 index 0000000..35abd2d --- /dev/null +++ b/Courses/NodeJS-timecodes.md @@ -0,0 +1,272 @@ +# Таймкоды к курсу по Node.js + +Общее оглавление курса тут: https://github.com/HowProgrammingWorks/Index/blob/master/Courses/NodeJS.md + +## [Node.js Введение в технологию](https://youtu.be/WBcHgaoHh1k) + +- [2:53 Основные идеи Node.js](https://youtu.be/WBcHgaoHh1k?t=173) +- [13:09 Приемущества/Недостатки JavaScript](https://youtu.be/WBcHgaoHh1k?t=789) +- [16:58 Что такое Node.js](https://youtu.be/WBcHgaoHh1k?t=1018) +- [20:52 Начало работы с Node.js](https://youtu.be/WBcHgaoHh1k?t=1252) +- [25:00 Встроенный API](https://youtu.be/WBcHgaoHh1k?t=1500) +- [33:55 Менеджер пакетов NPM](https://youtu.be/WBcHgaoHh1k?t=2035) +- [40:45 Структура проектов](https://youtu.be/WBcHgaoHh1k?t=2445) +- [44:35 Файлы package.json, package-lock.json](https://youtu.be/WBcHgaoHh1k?t=2675) +- [52:03 Репозиторий NPM](https://youtu.be/WBcHgaoHh1k?t=3123) +- [59:50 Однопоточность и многопоточность](https://youtu.be/WBcHgaoHh1k?t=3590) +- [1:05:30 Межпроцессовое взаимодействие](https://youtu.be/WBcHgaoHh1k?t=3930) +- [1:06:08 Асинхронный ввод/вывод](https://youtu.be/WBcHgaoHh1k?t=3968) +- [1:11:11 Производительность](https://youtu.be/WBcHgaoHh1k?t=4271) +- [1:13:02 Память](https://youtu.be/WBcHgaoHh1k?t=4382) +- [1:16:21 Отладка и профилирование](https://youtu.be/WBcHgaoHh1k?t=4581) +- [1:21:27 Ошибки](https://youtu.be/WBcHgaoHh1k?t=4887) +- [1:26:42 Обновление кода и перезапуск](https://youtu.be/WBcHgaoHh1k?t=5202) +- [1:28:43 Ассинхронное программирование](https://youtu.be/WBcHgaoHh1k?t=5323) +- [1:30:00 Примеры внедрения, интеракт. TV](https://youtu.be/WBcHgaoHh1k?t=5400) +- [1:31:00 Сферы применения Node.js](https://youtu.be/WBcHgaoHh1k?t=5460) +- [1:36:44 Полезные материалы](https://youtu.be/WBcHgaoHh1k?t=5804) + +## [Node.js в 2019 году (состояние и перспективы)](https://youtu.be/CUU49jjHloM) + +- [0:45 Node.js уже 10 лет](https://youtu.be/CUU49jjHloM?t=45) +- [5:39 Обзор новых возможностей Node.js](https://youtu.be/CUU49jjHloM?t=339) +- [18:14 Возможности для паралельного программирования на Node.js](https://youtu.be/CUU49jjHloM?t=1094) +- [20:08 Как работают thread и process в Node.js](https://youtu.be/CUU49jjHloM?t=1208) +- [20:47 Обзор последствий отсутствия изоляции в Node.js](https://youtu.be/CUU49jjHloM?t=1247) +- [20:33 Проблемы отсутствия изоляции в Node.js](https://youtu.be/CUU49jjHloM?t=1233) +- [38:27 Способы изоляции Node.js кода](https://youtu.be/CUU49jjHloM?t=2307) +- [48:24 Изоляция и кластеризации с threads в Node.js v12](https://youtu.be/CUU49jjHloM?t=2904) +- [56:59 Области применения Node.js: Локальные приложения](https://youtu.be/CUU49jjHloM?t=3419) +- [1:02:02 Области применения Node.js: Сервера](https://youtu.be/CUU49jjHloM?t=3722) +- [1:05:49 Области применения Node.js: Клиенты](https://youtu.be/CUU49jjHloM?t=3949) +- [1:08:58 Области применения Node.js: Hardware](https://youtu.be/CUU49jjHloM?t=4138) +- [1:09:28 Редкие области применения Node.js](https://youtu.be/CUU49jjHloM?t=4168) +- [1:11:55 Не подходящие области применения Node.js](https://youtu.be/CUU49jjHloM?t=4315) +- [1:13:53 Deno как экспементальная альтернатива Node.js](https://youtu.be/CUU49jjHloM?t=4433) +- [1:21:02 Обзор ссылок по теме](https://youtu.be/CUU49jjHloM?t=4862) +- [1:23:06 Ответы на вопросы](https://youtu.be/CUU49jjHloM?t=4986) + +## [Асинхронное программирование в Node.js и JavaScript](https://youtu.be/hY6Z6qNYzmc) + +- [5:45 Callbacks](https://youtu.be/hY6Z6qNYzmc?t=345) +- [10:00 Async.js or analogues](https://youtu.be/hY6Z6qNYzmc?t=600) +- [15:47 Events](https://youtu.be/hY6Z6qNYzmc?t=947) +- [18:00 Promise](https://youtu.be/hY6Z6qNYzmc?t=1080) +- [25:20 async/await](https://youtu.be/hY6Z6qNYzmc?t=1520) +- [27:10 Functor + Chaining + composition](https://youtu.be/hY6Z6qNYzmc?t=1630) +- [30:49 Problems of callback, async.js, Proimise, async/await](https://youtu.be/hY6Z6qNYzmc?t=1849) +- [34:00 Add timeout to any function](https://youtu.be/hY6Z6qNYzmc?t=2040) +- [36:55 Make function cancelable](https://youtu.be/hY6Z6qNYzmc?t=2215) +- [37:59 More wrappers](https://youtu.be/hY6Z6qNYzmc?t=2279) +- [39:22 Promisify and Callbackify](https://youtu.be/hY6Z6qNYzmc?t=2362) +- [48:47 Sync function to async](https://youtu.be/hY6Z6qNYzmc?t=2927) +- [41:43 Sync function to Promise](https://youtu.be/hY6Z6qNYzmc?t=2503) +- [43:17 Convertors](https://youtu.be/hY6Z6qNYzmc?t=2597) +- [43:31 Metasync](https://youtu.be/hY6Z6qNYzmc?t=2611) +- [45:26 Function composition](https://youtu.be/hY6Z6qNYzmc?t=2726) +- [47:09 Adynchronous function composition](https://youtu.be/hY6Z6qNYzmc?t=2829) +- [47:58 Flow communication like in electronics](https://youtu.be/hY6Z6qNYzmc?t=2878) +- [50:06 Collectors](https://youtu.be/hY6Z6qNYzmc?t=3006) +- [59:17 Queue](https://youtu.be/hY6Z6qNYzmc?t=3557) + +## [Обзор встроенного Node.js API](https://youtu.be/sOkjR-N6IAs) + +- [1:45 Readline](https://youtu.be/sOkjR-N6IAs?t=105) +- [2:42 Stream](https://youtu.be/sOkjR-N6IAs?t=162) +- [6:51 Buffer](https://youtu.be/sOkjR-N6IAs?t=411) +- [9:15 Child Processes](https://youtu.be/sOkjR-N6IAs?t=555) +- [12:24 Cluster](https://youtu.be/sOkjR-N6IAs?t=744) +- [16:23 Crypto](https://youtu.be/sOkjR-N6IAs?t=983) +- [17:47 DNS](https://youtu.be/sOkjR-N6IAs?t=1067) +- [19:30 Domain](https://youtu.be/sOkjR-N6IAs?t=1170) +- [22:44 Events](https://youtu.be/sOkjR-N6IAs?t=1364) +- [23:16 Errors, Timers](https://youtu.be/sOkjR-N6IAs?t=1396) +- [27:26 File System](https://youtu.be/sOkjR-N6IAs?t=1646) +- [28:56 HTTP](https://youtu.be/sOkjR-N6IAs?t=1736) +- [31:49 OS](https://youtu.be/sOkjR-N6IAs?t=1909) +- [33:38 Process](https://youtu.be/sOkjR-N6IAs?t=2018) +- [41:55 Path](https://youtu.be/sOkjR-N6IAs?t=2515) +- [43:15 TLS/SSL](https://youtu.be/sOkjR-N6IAs?t=2595) +- [44:44 URL](https://youtu.be/sOkjR-N6IAs?t=2684) +- [45:22 Util](https://youtu.be/sOkjR-N6IAs?t=2722) +- [47:00 V8/VM](https://youtu.be/sOkjR-N6IAs?t=2820) +- [49:55 Worker Threads](https://youtu.be/sOkjR-N6IAs?t=2995) +- [50:56 ZLIB](https://youtu.be/sOkjR-N6IAs?t=3056) +- [51:55 Modules](https://youtu.be/sOkjR-N6IAs?t=3115) + +## [Настройка среды: Node.js, npm, git, eslint](https://youtu.be/hSyA7tcNaCE) + +## [Работа с файлами, буферами и файловыми потоками в Node.js](https://youtu.be/eQGBS15vUac) + +- [1:39 Работа с файлами](https://youtu.be/eQGBS15vUac?t=99) +- [35:12 Буферы](https://youtu.be/eQGBS15vUac?t=2112) +- [43:46 Файловые потоки](https://youtu.be/eQGBS15vUac?t=2626) + +## [Наблюдение за файловой системой в Node.js](https://youtu.be/29QINR9rruQ) + +- [0:32 File watch](https://youtu.be/29QINR9rruQ?t=32) +- [4:40 Folder watch](https://youtu.be/29QINR9rruQ?t=280) +- [8:40 Server](https://youtu.be/29QINR9rruQ?t=520) +- [12:55 LiveReload](https://youtu.be/29QINR9rruQ?t=775) +- [24:50 LiverReload в impress](https://youtu.be/29QINR9rruQ?t=1490) + +## [Консоль и командная строка в JavaScript и Node.js](https://youtu.be/5aSZyKi5BmE) + +- [1:20 console](https://youtu.be/5aSZyKi5BmE?t=80) +- [16:00 readline](https://youtu.be/5aSZyKi5BmE?t=960) +- [21:35 cli](https://youtu.be/5aSZyKi5BmE?t=1295) +- [31:15 делаем красивый login screen](https://youtu.be/5aSZyKi5BmE?t=1875) + +## [Архитектурный подход к программированию](https://youtu.be/d_vyO2CkiOc) + +- [00:00:00 Когда нужна архитектура](https://youtu.be/d_vyO2CkiOc?t=0) +- [00:06:07 Принятие решений](https://youtu.be/d_vyO2CkiOc?t=367) +- [00:09:58 Типы связывания](https://youtu.be/d_vyO2CkiOc?t=598) +- [00:20:00 Ошибки](https://youtu.be/d_vyO2CkiOc?t=1200) +- [00:27:15 Принятие решений](https://youtu.be/d_vyO2CkiOc?t=1635) +- [00:37:05 Эволюция архитектурных решений](https://youtu.be/d_vyO2CkiOc?t=2225) +- [00:58:13 Схема современной архитектуры](https://youtu.be/d_vyO2CkiOc?t=3493) +- [01:01:40 субд в браузере](https://youtu.be/d_vyO2CkiOc?t=3700) +- [01:05:20 Альтернативные варианты](https://youtu.be/d_vyO2CkiOc?t=3920) +- [01:12:20 Как на самом деле](https://youtu.be/d_vyO2CkiOc?t=4340) +- [01:13:45 Архитектура мечты](https://youtu.be/d_vyO2CkiOc?t=4425) +- [01:16:45 Современные возможности и требования ](https://youtu.be/d_vyO2CkiOc?t=4605) +- [01:25:20 Топологии](https://youtu.be/d_vyO2CkiOc?t=5120) +- [01:30:45 Итог](https://youtu.be/d_vyO2CkiOc?t=5445) + +## [Модули, слои, структура проекта, песочницы в JavaScript и Node.js](https://youtu.be/O7A9chb573E) + +- [1:00 Пример структуры приложения](https://youtu.be/O7A9chb573E?t=60) +- [14:23 Примеры плохо и хорошо структурированного кода ](https://youtu.be/O7A9chb573E?t=863) +- [25:46 Песочницы](https://youtu.be/O7A9chb573E?t=1546) + +## [Инверсия управления и внедрение зависимостей в Node.js](https://youtu.be/Fz86Fdjz-LM) + +## [Межпроцессовое взаимодействие в Node.js](https://youtu.be/2OXWZFMvfbc) + +## [Слои, связанность и связность кода в JavaScript](https://youtu.be/A3RpwNlVeyY) + +## [Клиент-сервер на Node.js TCP и UDP, DNS](https://youtu.be/bHn-wTlTTR0) + +- [2:25 TCP, простой пример клиент/сервер](https://youtu.be/bHn-wTlTTR0?t=145) +- [20:20 TCP, пример сложнее](https://youtu.be/bHn-wTlTTR0?t=1220) +- [29:26 UDP](https://youtu.be/bHn-wTlTTR0?t=1766) +- [35:14 DNS](https://youtu.be/bHn-wTlTTR0?t=2114) + +## [HTTP сервер на Node.js (routing, cluster, IP sticky)](https://youtu.be/7Ufxj0oTaUo) + +## [HTTP сессии и cookies на чистом Node.js](https://youtu.be/T_wKXuWW4Wo) + +## [HTTP запросы в браузере и Node.js: XMLHttpRequest, fetch](https://youtu.be/wMMki2FEYGY) + +## [Разработка API на Node.js (клиент и сервер)](https://youtu.be/-az912XBCu8) + +## [WebSocket сервер на Node.js (электронные таблицы и чат)](https://youtu.be/Sf7ln3n16ws) + +## [Скаффолдинг для API, UI и данных](https://youtu.be/lipkLQVqDd8) + +## [Высоконагруженные распределенные приложения на Node.js](https://youtu.be/7tfZDABPvVs) + +## [Отдача статики в Node.js](https://youtu.be/n_AdKIzbpBc) + +## [Слой доступа к данным, курсор, транзакция](https://youtu.be/CRcSWtWVvrA) + +## [Работа с базами данных в Node.js на примере PostgreSQL](https://youtu.be/2tDvHQCBt3w) + +## [Паттерн Команда (Command) действие и параметры как объект](https://youtu.be/vER0vYL4hM4) + +## [CQS, CQRS, Event Sourcing - Разделение запросов и модификации данных](https://youtu.be/T2tRc80Q8Qw) + +## [Применение Event Sourcing (command, read, write, bus)](https://youtu.be/kFNtKiK2SPs) + +## [Модель акторов для параллельных вычислений](https://youtu.be/xp5MVKEqxY4) + +## [Утечки памяти в Node.js и JavaScript, сборка мусора и профилирование](https://youtu.be/0oZa64SB2wM) + +## [Atomics, SharedArrayBuffer, worker_threads в Node.js](https://youtu.be/zLm8pnbxSII) + +- [00:00 - початок ](https://youtu.be/zLm8pnbxSII?t=0) +- [03:53 - про worker_threads](https://youtu.be/zLm8pnbxSII?t=233) +- [12:20 - сепарація на worker i master](https://youtu.be/zLm8pnbxSII?t=740) +- [14:57 - як використовувати worker ](https://youtu.be/zLm8pnbxSII?t=897) +- [25:00 - про Atomics](https://youtu.be/zLm8pnbxSII?t=1500) +- [41:00 - Atomics i worker_threads робота в парі](https://youtu.be/zLm8pnbxSII?t=2460) + +## [Семафоры и мьютексы в JavaScript и Node.js](https://youtu.be/JNLrITevhRI) + +- [00:00 - теорія](https://youtu.be/JNLrITevhRI?t=0) +- [8:55 - приклад worker_threads без семафора ](https://youtu.be/JNLrITevhRI?t=535) +- [15:29 - про семафор, семафор бінарний, семафор з лічильником і Atomics ](https://youtu.be/JNLrITevhRI?t=929) +- [53:52 - мютекси та різниця між семафором ](https://youtu.be/JNLrITevhRI?t=3232) +- [58:28 - про deadlock](https://youtu.be/JNLrITevhRI?t=3508) +- [1:02:12 - про livelock і стан гонки](https://youtu.be/JNLrITevhRI?t=3732) + +## [Разделяемая память в многопоточном Node.js. Тимур Шемсединов. JS Fest 2019 Spring](https://youtu.be/KNsm_iIQt7U) + +## [Необработанные ошибки в промисах на Node.js](https://youtu.be/1Ml5NE2fsZ8) + +## [Проблема асинхронного стектрейса в JavaScript и Node.js](https://youtu.be/pfiHTx3j87Y) + +## [Логирование на Node.js и JavaScript](https://youtu.be/4DkZj2Cdokc) + +## [Graceful Shutdown в Node.js](https://youtu.be/ZstnowFeCe0) + +## [Безопасность приложений Node.js Security](https://youtu.be/Pdfo1G-gI6s) + +## [Serverless Clouds (FaaS) и изоляция контекстов запросов в Node.js](https://youtu.be/x-Rd6fPV6L8) + +## [Node.js в 2021: обзор платформы и вызовы на следующее десятилетие](https://youtu.be/nnB7ADYso8s) + +## [Семинар: Node.js в 2021, ответы на вопросы и обсуждение](https://youtu.be/zYRDhxj0zhQ) + +## [GRASP принципы с адаптацией для JavaScript и Node.js](https://youtu.be/ExauFjYV_lQ) + +- [5:03 Information Expert](https://youtu.be/ExauFjYV_lQ?t=303) +- [13:06 Creator](https://youtu.be/ExauFjYV_lQ?t=786) +- [18:15 Cohesion & Coupling](https://youtu.be/ExauFjYV_lQ?t=1095) +- [21:33 Controller](https://youtu.be/ExauFjYV_lQ?t=1293) +- [24:58 Polymorphism](https://youtu.be/ExauFjYV_lQ?t=1498) +- [31:55 Indirection](https://youtu.be/ExauFjYV_lQ?t=1915) +- [34:34 Pure Fabrication](https://youtu.be/ExauFjYV_lQ?t=2074) +- [38:36 Protected Variations](https://youtu.be/ExauFjYV_lQ?t=2316) + +## [GRASP: принцип информационный эксперт с адаптацией для JavaScript и Node.js](https://youtu.be/cCHL329_As0) + +## [GRASP: Зацепление и связность в JavaScript и Node.js - coupling and cohesion](https://youtu.be/IGXdPOZ3Fyk) + +## [GRASP: Чистая выдумка для JavaScript и Node.js - Pure Fabrication](https://youtu.be/CV577a0RHBM) + +## [GRASP: Декомпозиция класса Application из библиотеки impress технологического стека Metarhia](https://youtu.be/4AMVQ2-2DcM) + +## [Node.js - плохие подходы и хорошие стороны - Postindustria Podcast](https://youtu.be/oEyS_TNiw2g) + +## [Node.js модули: ECMA, Common.js, Module API](https://youtu.be/CJr2vS3hjMU) + +- [1:02 export модулей](https://youtu.be/CJr2vS3hjMU?t=62) +- [3:00 require модулей](https://youtu.be/CJr2vS3hjMU?t=180) +- [5:35 require-resolve модулей](https://youtu.be/CJr2vS3hjMU?t=335) +- [12:15 cache](https://youtu.be/CJr2vS3hjMU?t=735) +- [18:38 немного об singleton](https://youtu.be/CJr2vS3hjMU?t=1118) +- [19:53 модуль global](https://youtu.be/CJr2vS3hjMU?t=1193) +- [20:43 пример с mixin-ами](https://youtu.be/CJr2vS3hjMU?t=1243) +- [25:13 пример ecma скрипт модуля - export](https://youtu.be/CJr2vS3hjMU?t=1513) +- [26:10 пример ecma скрипт модуля - import](https://youtu.be/CJr2vS3hjMU?t=1570) +- [27:20 пример динамического импорта](https://youtu.be/CJr2vS3hjMU?t=1640) +- [31:10 загрузка ф-ии createRequire](https://youtu.be/CJr2vS3hjMU?t=1870) +- [41:00 подгрузка module через require](https://youtu.be/CJr2vS3hjMU?t=2460) +- [43:40 подгрузка module через import](https://youtu.be/CJr2vS3hjMU?t=2620) + +## [Node.js модули и пакеты формата ECMA и CommonJS, использование package.json и node_modules](https://youtu.be/31sX_3IbXs4) + +- [1:00 подгрузка пакетов package](https://youtu.be/31sX_3IbXs4?t=60) +- [5:40 загрузка пакетов](https://youtu.be/31sX_3IbXs4?t=340) +- [9:00 подгрузка файлов нового формата .mjs](https://youtu.be/31sX_3IbXs4?t=540) +- [10:47 импорт ecma скрипт модулей с .js файлов](https://youtu.be/31sX_3IbXs4?t=647) +- [13:20 export пакетов](https://youtu.be/31sX_3IbXs4?t=800) +- [22:30 сравнение cache-й модулей](https://youtu.be/31sX_3IbXs4?t=1350) + +## [Асинхронный пул для worker thread pool в Node.js](https://youtu.be/Jj5KZRq4wYI) + +## [Контрактное программирование с примерами на JavaScript и Node.js](https://youtu.be/K5_kSUvbGEQ) + +## [Hacktoberfest 2021: лайвкодинг и ревью кода, Node.js worker_threads и thread pool для Metarhia](https://youtu.be/qipIRQptP_4) diff --git a/Courses/NodeJS.md b/Courses/NodeJS.md index 4d7c254..74a737e 100644 --- a/Courses/NodeJS.md +++ b/Courses/NodeJS.md @@ -151,275 +151,3 @@ ## Вспомогательные темы - [Асинхронный пул для worker thread pool в Node.js](https://youtu.be/Jj5KZRq4wYI) - -# Node.js (таймкоды) - -## [Node.js Введение в технологию](https://youtu.be/WBcHgaoHh1k) - -- [2:53 Основные идеи Node.js](https://youtu.be/WBcHgaoHh1k?t=173) -- [13:09 Приемущества/Недостатки JavaScript](https://youtu.be/WBcHgaoHh1k?t=789) -- [16:58 Что такое Node.js](https://youtu.be/WBcHgaoHh1k?t=1018) -- [20:52 Начало работы с Node.js](https://youtu.be/WBcHgaoHh1k?t=1252) -- [25:00 Встроенный API](https://youtu.be/WBcHgaoHh1k?t=1500) -- [33:55 Менеджер пакетов NPM](https://youtu.be/WBcHgaoHh1k?t=2035) -- [40:45 Структура проектов](https://youtu.be/WBcHgaoHh1k?t=2445) -- [44:35 Файлы package.json, package-lock.json](https://youtu.be/WBcHgaoHh1k?t=2675) -- [52:03 Репозиторий NPM](https://youtu.be/WBcHgaoHh1k?t=3123) -- [59:50 Однопоточность и многопоточность](https://youtu.be/WBcHgaoHh1k?t=3590) -- [1:05:30 Межпроцессовое взаимодействие](https://youtu.be/WBcHgaoHh1k?t=3930) -- [1:06:08 Асинхронный ввод/вывод](https://youtu.be/WBcHgaoHh1k?t=3968) -- [1:11:11 Производительность](https://youtu.be/WBcHgaoHh1k?t=4271) -- [1:13:02 Память](https://youtu.be/WBcHgaoHh1k?t=4382) -- [1:16:21 Отладка и профилирование](https://youtu.be/WBcHgaoHh1k?t=4581) -- [1:21:27 Ошибки](https://youtu.be/WBcHgaoHh1k?t=4887) -- [1:26:42 Обновление кода и перезапуск](https://youtu.be/WBcHgaoHh1k?t=5202) -- [1:28:43 Ассинхронное программирование](https://youtu.be/WBcHgaoHh1k?t=5323) -- [1:30:00 Примеры внедрения, интеракт. TV](https://youtu.be/WBcHgaoHh1k?t=5400) -- [1:31:00 Сферы применения Node.js](https://youtu.be/WBcHgaoHh1k?t=5460) -- [1:36:44 Полезные материалы](https://youtu.be/WBcHgaoHh1k?t=5804) - -## [Node.js в 2019 году (состояние и перспективы)](https://youtu.be/CUU49jjHloM) - -- [0:45 Node.js уже 10 лет](https://youtu.be/CUU49jjHloM?t=45) -- [5:39 Обзор новых возможностей Node.js](https://youtu.be/CUU49jjHloM?t=339) -- [18:14 Возможности для паралельного программирования на Node.js](https://youtu.be/CUU49jjHloM?t=1094) -- [20:08 Как работают thread и process в Node.js](https://youtu.be/CUU49jjHloM?t=1208) -- [20:47 Обзор последствий отсутствия изоляции в Node.js](https://youtu.be/CUU49jjHloM?t=1247) -- [20:33 Проблемы отсутствия изоляции в Node.js](https://youtu.be/CUU49jjHloM?t=1233) -- [38:27 Способы изоляции Node.js кода](https://youtu.be/CUU49jjHloM?t=2307) -- [48:24 Изоляция и кластеризации с threads в Node.js v12](https://youtu.be/CUU49jjHloM?t=2904) -- [56:59 Области применения Node.js: Локальные приложения](https://youtu.be/CUU49jjHloM?t=3419) -- [1:02:02 Области применения Node.js: Сервера](https://youtu.be/CUU49jjHloM?t=3722) -- [1:05:49 Области применения Node.js: Клиенты](https://youtu.be/CUU49jjHloM?t=3949) -- [1:08:58 Области применения Node.js: Hardware](https://youtu.be/CUU49jjHloM?t=4138) -- [1:09:28 Редкие области применения Node.js](https://youtu.be/CUU49jjHloM?t=4168) -- [1:11:55 Не подходящие области применения Node.js](https://youtu.be/CUU49jjHloM?t=4315) -- [1:13:53 Deno как экспементальная альтернатива Node.js](https://youtu.be/CUU49jjHloM?t=4433) -- [1:21:02 Обзор ссылок по теме](https://youtu.be/CUU49jjHloM?t=4862) -- [1:23:06 Ответы на вопросы](https://youtu.be/CUU49jjHloM?t=4986) - -## [Асинхронное программирование в Node.js и JavaScript](https://youtu.be/hY6Z6qNYzmc) - -- [5:45 Callbacks](https://youtu.be/hY6Z6qNYzmc?t=345) -- [10:00 Async.js or analogues](https://youtu.be/hY6Z6qNYzmc?t=600) -- [15:47 Events](https://youtu.be/hY6Z6qNYzmc?t=947) -- [18:00 Promise](https://youtu.be/hY6Z6qNYzmc?t=1080) -- [25:20 async/await](https://youtu.be/hY6Z6qNYzmc?t=1520) -- [27:10 Functor + Chaining + composition](https://youtu.be/hY6Z6qNYzmc?t=1630) -- [30:49 Problems of callback, async.js, Proimise, async/await](https://youtu.be/hY6Z6qNYzmc?t=1849) -- [34:00 Add timeout to any function](https://youtu.be/hY6Z6qNYzmc?t=2040) -- [36:55 Make function cancelable](https://youtu.be/hY6Z6qNYzmc?t=2215) -- [37:59 More wrappers](https://youtu.be/hY6Z6qNYzmc?t=2279) -- [39:22 Promisify and Callbackify](https://youtu.be/hY6Z6qNYzmc?t=2362) -- [48:47 Sync function to async](https://youtu.be/hY6Z6qNYzmc?t=2927) -- [41:43 Sync function to Promise](https://youtu.be/hY6Z6qNYzmc?t=2503) -- [43:17 Convertors](https://youtu.be/hY6Z6qNYzmc?t=2597) -- [43:31 Metasync](https://youtu.be/hY6Z6qNYzmc?t=2611) -- [45:26 Function composition](https://youtu.be/hY6Z6qNYzmc?t=2726) -- [47:09 Adynchronous function composition](https://youtu.be/hY6Z6qNYzmc?t=2829) -- [47:58 Flow communication like in electronics](https://youtu.be/hY6Z6qNYzmc?t=2878) -- [50:06 Collectors](https://youtu.be/hY6Z6qNYzmc?t=3006) -- [59:17 Queue](https://youtu.be/hY6Z6qNYzmc?t=3557) - -## [Обзор встроенного Node.js API](https://youtu.be/sOkjR-N6IAs) - -- [1:45 Readline](https://youtu.be/sOkjR-N6IAs?t=105) -- [2:42 Stream](https://youtu.be/sOkjR-N6IAs?t=162) -- [6:51 Buffer](https://youtu.be/sOkjR-N6IAs?t=411) -- [9:15 Child Processes](https://youtu.be/sOkjR-N6IAs?t=555) -- [12:24 Cluster](https://youtu.be/sOkjR-N6IAs?t=744) -- [16:23 Crypto](https://youtu.be/sOkjR-N6IAs?t=983) -- [17:47 DNS](https://youtu.be/sOkjR-N6IAs?t=1067) -- [19:30 Domain](https://youtu.be/sOkjR-N6IAs?t=1170) -- [22:44 Events](https://youtu.be/sOkjR-N6IAs?t=1364) -- [23:16 Errors, Timers](https://youtu.be/sOkjR-N6IAs?t=1396) -- [27:26 File System](https://youtu.be/sOkjR-N6IAs?t=1646) -- [28:56 HTTP](https://youtu.be/sOkjR-N6IAs?t=1736) -- [31:49 OS](https://youtu.be/sOkjR-N6IAs?t=1909) -- [33:38 Process](https://youtu.be/sOkjR-N6IAs?t=2018) -- [41:55 Path](https://youtu.be/sOkjR-N6IAs?t=2515) -- [43:15 TLS/SSL](https://youtu.be/sOkjR-N6IAs?t=2595) -- [44:44 URL](https://youtu.be/sOkjR-N6IAs?t=2684) -- [45:22 Util](https://youtu.be/sOkjR-N6IAs?t=2722) -- [47:00 V8/VM](https://youtu.be/sOkjR-N6IAs?t=2820) -- [49:55 Worker Threads](https://youtu.be/sOkjR-N6IAs?t=2995) -- [50:56 ZLIB](https://youtu.be/sOkjR-N6IAs?t=3056) -- [51:55 Modules](https://youtu.be/sOkjR-N6IAs?t=3115) - -## [Настройка среды: Node.js, npm, git, eslint](https://youtu.be/hSyA7tcNaCE) - -## [Работа с файлами, буферами и файловыми потоками в Node.js](https://youtu.be/eQGBS15vUac) - -- [1:39 Работа с файлами](https://youtu.be/eQGBS15vUac?t=99) -- [35:12 Буферы](https://youtu.be/eQGBS15vUac?t=2112) -- [43:46 Файловые потоки](https://youtu.be/eQGBS15vUac?t=2626) - -## [Наблюдение за файловой системой в Node.js](https://youtu.be/29QINR9rruQ) - -- [0:32 File watch](https://youtu.be/29QINR9rruQ?t=32) -- [4:40 Folder watch](https://youtu.be/29QINR9rruQ?t=280) -- [8:40 Server](https://youtu.be/29QINR9rruQ?t=520) -- [12:55 LiveReload](https://youtu.be/29QINR9rruQ?t=775) -- [24:50 LiverReload в impress](https://youtu.be/29QINR9rruQ?t=1490) - -## [Консоль и командная строка в JavaScript и Node.js](https://youtu.be/5aSZyKi5BmE) - -- [1:20 console](https://youtu.be/5aSZyKi5BmE?t=80) -- [16:00 readline](https://youtu.be/5aSZyKi5BmE?t=960) -- [21:35 cli](https://youtu.be/5aSZyKi5BmE?t=1295) -- [31:15 делаем красивый login screen](https://youtu.be/5aSZyKi5BmE?t=1875) - -## [Архитектурный подход к программированию](https://youtu.be/d_vyO2CkiOc) - -- [00:00:00 Когда нужна архитектура](https://youtu.be/d_vyO2CkiOc?t=0) -- [00:06:07 Принятие решений](https://youtu.be/d_vyO2CkiOc?t=367) -- [00:09:58 Типы связывания](https://youtu.be/d_vyO2CkiOc?t=598) -- [00:20:00 Ошибки](https://youtu.be/d_vyO2CkiOc?t=1200) -- [00:27:15 Принятие решений](https://youtu.be/d_vyO2CkiOc?t=1635) -- [00:37:05 Эволюция архитектурных решений](https://youtu.be/d_vyO2CkiOc?t=2225) -- [00:58:13 Схема современной архитектуры](https://youtu.be/d_vyO2CkiOc?t=3493) -- [01:01:40 субд в браузере](https://youtu.be/d_vyO2CkiOc?t=3700) -- [01:05:20 Альтернативные варианты](https://youtu.be/d_vyO2CkiOc?t=3920) -- [01:12:20 Как на самом деле](https://youtu.be/d_vyO2CkiOc?t=4340) -- [01:13:45 Архитектура мечты](https://youtu.be/d_vyO2CkiOc?t=4425) -- [01:16:45 Современные возможности и требования ](https://youtu.be/d_vyO2CkiOc?t=4605) -- [01:25:20 Топологии](https://youtu.be/d_vyO2CkiOc?t=5120) -- [01:30:45 Итог](https://youtu.be/d_vyO2CkiOc?t=5445) - -## [Модули, слои, структура проекта, песочницы в JavaScript и Node.js](https://youtu.be/O7A9chb573E) - -- [1:00 Пример структуры приложения](https://youtu.be/O7A9chb573E?t=60) -- [14:23 Примеры плохо и хорошо структурированного кода ](https://youtu.be/O7A9chb573E?t=863) -- [25:46 Песочницы](https://youtu.be/O7A9chb573E?t=1546) - -## [Инверсия управления и внедрение зависимостей в Node.js](https://youtu.be/Fz86Fdjz-LM) - -## [Межпроцессовое взаимодействие в Node.js](https://youtu.be/2OXWZFMvfbc) - -## [Слои, связанность и связность кода в JavaScript](https://youtu.be/A3RpwNlVeyY) - -## [Клиент-сервер на Node.js TCP и UDP, DNS](https://youtu.be/bHn-wTlTTR0) - -- [2:25 TCP, простой пример клиент/сервер](https://youtu.be/bHn-wTlTTR0?t=145) -- [20:20 TCP, пример сложнее](https://youtu.be/bHn-wTlTTR0?t=1220) -- [29:26 UDP](https://youtu.be/bHn-wTlTTR0?t=1766) -- [35:14 DNS](https://youtu.be/bHn-wTlTTR0?t=2114) - -## [HTTP сервер на Node.js (routing, cluster, IP sticky)](https://youtu.be/7Ufxj0oTaUo) - -## [HTTP сессии и cookies на чистом Node.js](https://youtu.be/T_wKXuWW4Wo) - -## [HTTP запросы в браузере и Node.js: XMLHttpRequest, fetch](https://youtu.be/wMMki2FEYGY) - -## [Разработка API на Node.js (клиент и сервер)](https://youtu.be/-az912XBCu8) - -## [WebSocket сервер на Node.js (электронные таблицы и чат)](https://youtu.be/Sf7ln3n16ws) - -## [Скаффолдинг для API, UI и данных](https://youtu.be/lipkLQVqDd8) - -## [Высоконагруженные распределенные приложения на Node.js](https://youtu.be/7tfZDABPvVs) - -## [Отдача статики в Node.js](https://youtu.be/n_AdKIzbpBc) - -## [Слой доступа к данным, курсор, транзакция](https://youtu.be/CRcSWtWVvrA) - -## [Работа с базами данных в Node.js на примере PostgreSQL](https://youtu.be/2tDvHQCBt3w) - -## [Паттерн Команда (Command) действие и параметры как объект](https://youtu.be/vER0vYL4hM4) - -## [CQS, CQRS, Event Sourcing - Разделение запросов и модификации данных](https://youtu.be/T2tRc80Q8Qw) - -## [Применение Event Sourcing (command, read, write, bus)](https://youtu.be/kFNtKiK2SPs) - -## [Модель акторов для параллельных вычислений](https://youtu.be/xp5MVKEqxY4) - -## [Утечки памяти в Node.js и JavaScript, сборка мусора и профилирование](https://youtu.be/0oZa64SB2wM) - -## [Atomics, SharedArrayBuffer, worker_threads в Node.js](https://youtu.be/zLm8pnbxSII) - -- [00:00 - початок ](https://youtu.be/zLm8pnbxSII?t=0) -- [03:53 - про worker_threads](https://youtu.be/zLm8pnbxSII?t=233) -- [12:20 - сепарація на worker i master](https://youtu.be/zLm8pnbxSII?t=740) -- [14:57 - як використовувати worker ](https://youtu.be/zLm8pnbxSII?t=897) -- [25:00 - про Atomics](https://youtu.be/zLm8pnbxSII?t=1500) -- [41:00 - Atomics i worker_threads робота в парі](https://youtu.be/zLm8pnbxSII?t=2460) - -## [Семафоры и мьютексы в JavaScript и Node.js](https://youtu.be/JNLrITevhRI) - -- [00:00 - теорія](https://youtu.be/JNLrITevhRI?t=0) -- [8:55 - приклад worker_threads без семафора ](https://youtu.be/JNLrITevhRI?t=535) -- [15:29 - про семафор, семафор бінарний, семафор з лічильником і Atomics ](https://youtu.be/JNLrITevhRI?t=929) -- [53:52 - мютекси та різниця між семафором ](https://youtu.be/JNLrITevhRI?t=3232) -- [58:28 - про deadlock](https://youtu.be/JNLrITevhRI?t=3508) -- [1:02:12 - про livelock і стан гонки](https://youtu.be/JNLrITevhRI?t=3732) - -## [Разделяемая память в многопоточном Node.js. Тимур Шемсединов. JS Fest 2019 Spring](https://youtu.be/KNsm_iIQt7U) - -## [Необработанные ошибки в промисах на Node.js](https://youtu.be/1Ml5NE2fsZ8) - -## [Проблема асинхронного стектрейса в JavaScript и Node.js](https://youtu.be/pfiHTx3j87Y) - -## [Логирование на Node.js и JavaScript](https://youtu.be/4DkZj2Cdokc) - -## [Graceful Shutdown в Node.js](https://youtu.be/ZstnowFeCe0) - -## [Безопасность приложений Node.js Security](https://youtu.be/Pdfo1G-gI6s) - -## [Serverless Clouds (FaaS) и изоляция контекстов запросов в Node.js](https://youtu.be/x-Rd6fPV6L8) - -## [Node.js в 2021: обзор платформы и вызовы на следующее десятилетие](https://youtu.be/nnB7ADYso8s) - -## [Семинар: Node.js в 2021, ответы на вопросы и обсуждение](https://youtu.be/zYRDhxj0zhQ) - -## [GRASP принципы с адаптацией для JavaScript и Node.js](https://youtu.be/ExauFjYV_lQ) - -- [5:03 Information Expert](https://youtu.be/ExauFjYV_lQ?t=303) -- [13:06 Creator](https://youtu.be/ExauFjYV_lQ?t=786) -- [18:15 Cohesion & Coupling](https://youtu.be/ExauFjYV_lQ?t=1095) -- [21:33 Controller](https://youtu.be/ExauFjYV_lQ?t=1293) -- [24:58 Polymorphism](https://youtu.be/ExauFjYV_lQ?t=1498) -- [31:55 Indirection](https://youtu.be/ExauFjYV_lQ?t=1915) -- [34:34 Pure Fabrication](https://youtu.be/ExauFjYV_lQ?t=2074) -- [38:36 Protected Variations](https://youtu.be/ExauFjYV_lQ?t=2316) - -## [GRASP: принцип информационный эксперт с адаптацией для JavaScript и Node.js](https://youtu.be/cCHL329_As0) - -## [GRASP: Зацепление и связность в JavaScript и Node.js - coupling and cohesion](https://youtu.be/IGXdPOZ3Fyk) - -## [GRASP: Чистая выдумка для JavaScript и Node.js - Pure Fabrication](https://youtu.be/CV577a0RHBM) - -## [GRASP: Декомпозиция класса Application из библиотеки impress технологического стека Metarhia](https://youtu.be/4AMVQ2-2DcM) - -## [Node.js - плохие подходы и хорошие стороны - Postindustria Podcast](https://youtu.be/oEyS_TNiw2g) - -## [Node.js модули: ECMA, Common.js, Module API](https://youtu.be/CJr2vS3hjMU) - -- [1:02 export модулей](https://youtu.be/CJr2vS3hjMU?t=62) -- [3:00 require модулей](https://youtu.be/CJr2vS3hjMU?t=180) -- [5:35 require-resolve модулей](https://youtu.be/CJr2vS3hjMU?t=335) -- [12:15 cache](https://youtu.be/CJr2vS3hjMU?t=735) -- [18:38 немного об singleton](https://youtu.be/CJr2vS3hjMU?t=1118) -- [19:53 модуль global](https://youtu.be/CJr2vS3hjMU?t=1193) -- [20:43 пример с mixin-ами](https://youtu.be/CJr2vS3hjMU?t=1243) -- [25:13 пример ecma скрипт модуля - export](https://youtu.be/CJr2vS3hjMU?t=1513) -- [26:10 пример ecma скрипт модуля - import](https://youtu.be/CJr2vS3hjMU?t=1570) -- [27:20 пример динамического импорта](https://youtu.be/CJr2vS3hjMU?t=1640) -- [31:10 загрузка ф-ии createRequire](https://youtu.be/CJr2vS3hjMU?t=1870) -- [41:00 подгрузка module через require](https://youtu.be/CJr2vS3hjMU?t=2460) -- [43:40 подгрузка module через import](https://youtu.be/CJr2vS3hjMU?t=2620) - -## [Node.js модули и пакеты формата ECMA и CommonJS, использование package.json и node_modules](https://youtu.be/31sX_3IbXs4) - -- [1:00 подгрузка пакетов package](https://youtu.be/31sX_3IbXs4?t=60) -- [5:40 загрузка пакетов](https://youtu.be/31sX_3IbXs4?t=340) -- [9:00 подгрузка файлов нового формата .mjs](https://youtu.be/31sX_3IbXs4?t=540) -- [10:47 импорт ecma скрипт модулей с .js файлов](https://youtu.be/31sX_3IbXs4?t=647) -- [13:20 export пакетов](https://youtu.be/31sX_3IbXs4?t=800) -- [22:30 сравнение cache-й модулей](https://youtu.be/31sX_3IbXs4?t=1350) - -## [Асинхронный пул для worker thread pool в Node.js](https://youtu.be/Jj5KZRq4wYI) - -## [Контрактное программирование с примерами на JavaScript и Node.js](https://youtu.be/K5_kSUvbGEQ) - -## [Hacktoberfest 2021: лайвкодинг и ревью кода, Node.js worker_threads и thread pool для Metarhia](https://youtu.be/qipIRQptP_4) - From cfcede3b618d91b453b7b89512dccc615c0e4818 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Thu, 4 Aug 2022 15:09:39 +0300 Subject: [PATCH 131/308] Move timecodes for Fundamentals to separate file --- Courses/Fundamentals-timecodes.md | 976 ++++++++++++++++++++++++++++++ Courses/Fundamentals.md | 975 ----------------------------- 2 files changed, 976 insertions(+), 975 deletions(-) create mode 100644 Courses/Fundamentals-timecodes.md diff --git a/Courses/Fundamentals-timecodes.md b/Courses/Fundamentals-timecodes.md new file mode 100644 index 0000000..4c93fe1 --- /dev/null +++ b/Courses/Fundamentals-timecodes.md @@ -0,0 +1,976 @@ +# Таймкоды к курсу "Основы программирования" + +Общее оглавление курса тут: https://github.com/HowProgrammingWorks/Index/blob/master/Courses/Fundamentals.md + +## [Карта специальности инженер-программист](https://youtu.be/SE5aXH-yf0I) + +- [00:00:00 Введение](https://youtu.be/SE5aXH-yf0I?t=0) +- [00:02:21 Что такое программирование? ](https://youtu.be/SE5aXH-yf0I?t=141) +- [00:05:55 Связанные понятия ](https://youtu.be/SE5aXH-yf0I?t=355) +- [00:06:43 Основы программной инженерии ](https://youtu.be/SE5aXH-yf0I?t=403) +- [00:11:42 Предсказуемые вычисления ](https://youtu.be/SE5aXH-yf0I?t=702) +- [00:14:36 Моделирование](https://youtu.be/SE5aXH-yf0I?t=876) +- [00:14:52 Классификация моделей ](https://youtu.be/SE5aXH-yf0I?t=892) +- [00:17:33 Схемы моделирования ](https://youtu.be/SE5aXH-yf0I?t=1053) +- [00:22:23 Парадигмы программирования ](https://youtu.be/SE5aXH-yf0I?t=1343) +- [00:23:16 Императивное и функциональное программирование ](https://youtu.be/SE5aXH-yf0I?t=1396) +- [00:28:25 Неструктурное программирование ](https://youtu.be/SE5aXH-yf0I?t=1705) +- [00:30:01 Структурное программирование ](https://youtu.be/SE5aXH-yf0I?t=1801) +- [00:30:46 Процедурное программирование ](https://youtu.be/SE5aXH-yf0I?t=1846) +- [00:31:18 Объектно-ориетированное программирование ](https://youtu.be/SE5aXH-yf0I?t=1878) +- [00:31:48 Прототипно-ориетированное программирование ](https://youtu.be/SE5aXH-yf0I?t=1908) +- [00:32:14 Функциональное программирование ](https://youtu.be/SE5aXH-yf0I?t=1934) +- [00:32:48 Узконаправленное программирование](https://youtu.be/SE5aXH-yf0I?t=1968) +- [00:33:44 Техники и технологии](https://youtu.be/SE5aXH-yf0I?t=2024) +- [00:36:55 Реактивное программирование и Событийно-ориентированное](https://youtu.be/SE5aXH-yf0I?t=2215) +- [00:38:16 Функционально-реактивное программирование ](https://youtu.be/SE5aXH-yf0I?t=2296) +- [00:38:39 Модель акторов](https://youtu.be/SE5aXH-yf0I?t=2319) +- [00:39:49 Метапрограммирование ](https://youtu.be/SE5aXH-yf0I?t=2389) +- [00:43:09 Системное и прикладное программирование](https://youtu.be/SE5aXH-yf0I?t=2589) +- [00:44:25 Задачи программной инженерии ](https://youtu.be/SE5aXH-yf0I?t=2665) +- [00:50:46 Как преодолеть сложность ](https://youtu.be/SE5aXH-yf0I?t=3046) +- [00:52:16 Данные и логика ](https://youtu.be/SE5aXH-yf0I?t=3136) +- [00:57:49 Разработка программного обеспечения ](https://youtu.be/SE5aXH-yf0I?t=3469) +- [01:04:50 Подход к разработке ](https://youtu.be/SE5aXH-yf0I?t=3890) +- [01:06:04 Гибридная разработка ](https://youtu.be/SE5aXH-yf0I?t=3964) +- [01:07:10 Принцип NIH ](https://youtu.be/SE5aXH-yf0I?t=4030) +- [01:09:12 Классификация приложений по месту запуска](https://youtu.be/SE5aXH-yf0I?t=4152) +- [01:12:17 Схемы и примеры](https://youtu.be/SE5aXH-yf0I?t=4337) +## [Введение в программирование (1 часть)](https://youtu.be/5Gt61EX6HZ4) + +- [0:00:02 лекция о базовых понятиях для начинающих](https://youtu.be/5Gt61EX6HZ4?t=2) +- [0:01:43 что-то уже знаете / слышали](https://youtu.be/5Gt61EX6HZ4?t=103) +- [0:04:50 терминология важна](https://youtu.be/5Gt61EX6HZ4?t=290) +- [0:05:45 инструкция или оператор / Statement](https://youtu.be/5Gt61EX6HZ4?t=345) +- [0:07:23 синтаксис / Syntax](https://youtu.be/5Gt61EX6HZ4?t=443) +- [0:09:21 почти все группы операторов / Statements](https://youtu.be/5Gt61EX6HZ4?t=561) +- [0:13:27 операция 0:14:09 команда 0:15:03 директива](https://youtu.be/5Gt61EX6HZ4?t=807) +- [0:16:59 выражение / Expression](https://youtu.be/5Gt61EX6HZ4?t=1019) +- [0:20:53 значение / Value](https://youtu.be/5Gt61EX6HZ4?t=1253) +- [0:22:28 тип / Type](https://youtu.be/5Gt61EX6HZ4?t=1348) +- [0:27:22 литерал / Literal](https://youtu.be/5Gt61EX6HZ4?t=1642) +- [0:28:46 скаляр / Scalar, Primitive, Atomic value](https://youtu.be/5Gt61EX6HZ4?t=1726) +- [0:31:02 ссылка / Reference](https://youtu.be/5Gt61EX6HZ4?t=1862) +- [0:34:05 идентификатор / Identifier](https://youtu.be/5Gt61EX6HZ4?t=2045) +- [0:37:31 переменная / Variable](https://youtu.be/5Gt61EX6HZ4?t=2251) +- [0:40:08 присвоение / Assignment](https://youtu.be/5Gt61EX6HZ4?t=2408) +- [0:41:29 константа / Constant](https://youtu.be/5Gt61EX6HZ4?t=2489) +- [0:43:16 структурные типы / Composed types](https://youtu.be/5Gt61EX6HZ4?t=2596) +- [0:44:03 флаг / Flag](https://www.youtube.com/watch?v=5Gt61EX6HZ4&t=2643s) +- [0:45:09 перечисляемый тип](https://youtu.be/5Gt61EX6HZ4?t=2643) +- [0:46:02 алгоритм / Algorithm](https://youtu.be/5Gt61EX6HZ4?t=2762) +- [0:47:40 программа / Program](https://youtu.be/5Gt61EX6HZ4?t=2860) +- [0:49:01 инженерия / Engineering](https://youtu.be/5Gt61EX6HZ4?t=2941) +- [0:50:42 инженерия программного обеспечения / Software engineering](https://youtu.be/5Gt61EX6HZ4?t=3042) +- [0:52:03 программирование / Programming](https://youtu.be/5Gt61EX6HZ4?t=3123) +- [0:53:31 кодирование / Coding](https://youtu.be/5Gt61EX6HZ4?t=3211) +- [0:54:15 разработка программного обеспечения / Software development](https://youtu.be/5Gt61EX6HZ4?t=3255) +- [0:58:49 процедура, функция, подпрограмма, метод: различия](https://youtu.be/5Gt61EX6HZ4?t=3529) +- [0:59:15 блок кода / Block of code](https://youtu.be/5Gt61EX6HZ4?t=3555) +- [1:01:58 процедура или подпрограмма / Procedure or Subroutine](https://youtu.be/5Gt61EX6HZ4?t=3718) +- [1:05:18 функция / Function](https://youtu.be/5Gt61EX6HZ4?t=3918) +- [1:08:06 сигнатура функции / Function signature](https://youtu.be/5Gt61EX6HZ4?t=4086) +- [1:09:16 метод / Method](https://youtu.be/5Gt61EX6HZ4?t=4156) +- [1:10:37 цикл / Loop](https://www.youtube.com/watch?v=5Gt61EX6HZ4&t=4237s) +- [1:10:52 итерирование](https://www.youtube.com/watch?v=5Gt61EX6HZ4&t=4252s) +- [1:11:40 функциональное программирование](https://youtu.be/5Gt61EX6HZ4?t=4237) +- [1:13:05 условие / Conditional statements / ветвление](https://youtu.be/5Gt61EX6HZ4?t=4385) +- [1:14:54 парадигма программирования / Programming paradigm](https://youtu.be/5Gt61EX6HZ4?t=4494) +## [Семинар: Обсуждение плана и материалов курса «Основы программирования»](https://youtu.be/bQMTbRWrteU) + +- [0:15 - вопрос по операционным системам](https://youtu.be/bQMTbRWrteU?t=15) +- [3:35 - какой язык посоветуете из функционального программирования](https://youtu.be/bQMTbRWrteU?t=215) +- [4:40 - время нужное для прохождения курса](https://youtu.be/bQMTbRWrteU?t=280) +- [7:25 - учебники по JS и туториал](https://youtu.be/bQMTbRWrteU?t=445) +- [11:00 - экзамены, сертификат для студентов из других стран](https://youtu.be/bQMTbRWrteU?t=660) +- [12:45 - как будет проходить экзамен](https://youtu.be/bQMTbRWrteU?t=765) +- [14:55 - сколько времени нужно уделять в неделю или в день](https://youtu.be/bQMTbRWrteU?t=895) +- [17:35 - куда задавать вопросы](https://youtu.be/bQMTbRWrteU?t=1055) +- [18:56 - структура курса](https://youtu.be/bQMTbRWrteU?t=1136) +- [22:30 - контроль решения задач](https://youtu.be/bQMTbRWrteU?t=1350) +- [23:35 - сферы применения Node.js](https://youtu.be/bQMTbRWrteU?t=1415) +- [24:22 - возможно ли посещать курс лично](https://youtu.be/bQMTbRWrteU?t=1462) +- [26:23 - актуальность изучения С++ и Rust](https://youtu.be/bQMTbRWrteU?t=1583) +- [27:48 - стану ли я программистом пройдя курс](https://youtu.be/bQMTbRWrteU?t=1668) +- [28:10 - какой стандарт JS используется в курсе](https://youtu.be/bQMTbRWrteU?t=1690) +- [28:35 - откуда начинать курс](https://youtu.be/bQMTbRWrteU?t=1715) +- [29:20 - как посещать старшую группу](https://youtu.be/bQMTbRWrteU?t=1760) +- [31:45 - об основах вёрстки и популярных фреймворках](https://youtu.be/bQMTbRWrteU?t=1905) +- [33:03 - обязательно ли использовать фреймворки](https://youtu.be/bQMTbRWrteU?t=1983) +- [36:15 - почему столь немногим удается сдать экзамен](https://youtu.be/bQMTbRWrteU?t=2175) +- [36:50 - проверка задач для допуска к экзамену и их уровень сложности](https://youtu.be/bQMTbRWrteU?t=2210) +- [37:55 - теоретические вопросы на экзамене, пример](https://youtu.be/bQMTbRWrteU?t=2275) +- [39:35 - знание математики](https://youtu.be/bQMTbRWrteU?t=2375) +- [43:10 - сложные вопросы CS в курсе](https://youtu.be/bQMTbRWrteU?t=2590) +- [46:00 - как происходит проверка задач для допуска к экзамену](https://youtu.be/bQMTbRWrteU?t=2760) +## [Настройка среды: Node.js, npm, git, eslint](https://youtu.be/hSyA7tcNaCE) + +## [Базовый синтаксис JavaScript](https://youtu.be/xJn3k1f4BiM) + +- [00:00:00 Введение](https://youtu.be/xJn3k1f4BiM?t=0) +- [00:03:02 Идентификаторы (identifiers: const, let, arguments, object property)](https://youtu.be/xJn3k1f4BiM?t=182) +- [00:14:41 Циклы (loops)](https://youtu.be/xJn3k1f4BiM?t=881) +- [00:22:10 Функции (functions)](https://youtu.be/xJn3k1f4BiM?t=1330) +- [00:30:35 Объекты (objects) ](https://youtu.be/xJn3k1f4BiM?t=1835) +- [00:33:34 Итерирование по массиву ( for ( ... of ... { } )](https://youtu.be/xJn3k1f4BiM?t=2014) +- [00:39:01 Итерирование по объекту ( for ( ... in ... { } )](https://youtu.be/xJn3k1f4BiM?t=2341) +- [00:42:28 Синтаксис простого кода](https://youtu.be/xJn3k1f4BiM?t=2548) +- [00:55:21 Синтаксис функции](https://youtu.be/xJn3k1f4BiM?t=3321) +- [01:05:38 Синтаксис класса](https://youtu.be/xJn3k1f4BiM?t=3938) +- [01:09:10 Синтаксис расширения класса с помощью функции](https://youtu.be/xJn3k1f4BiM?t=4150) +- [01:14:59 Идентификаторы в виде символов unicode](https://youtu.be/xJn3k1f4BiM?t=4499) +- [01:17:15 Синтаксис комментариев](https://youtu.be/xJn3k1f4BiM?t=4635) +- [01:18:13 Способы объявления переменных ](https://youtu.be/xJn3k1f4BiM?t=4693) +- [01:18:24 Скалярные типы переменных (string, number, boolean)](https://youtu.be/xJn3k1f4BiM?t=4704) +- [01:19:12 Структурные/ссылочные типы переменных (function, array, object)](https://youtu.be/xJn3k1f4BiM?t=4752) +## [Базовый синтаксис JavaScript, продолжение](https://youtu.be/qa-XleqA0JU) + +- [00:01:34 Number (integer / float)](https://youtu.be/qa-XleqA0JU?t=94) +- [00:02:11 String ](https://youtu.be/qa-XleqA0JU?t=131) +- [00:02:15 Boolean](https://youtu.be/qa-XleqA0JU?t=135) +- [00:02:16 Object](https://youtu.be/qa-XleqA0JU?t=136) +- [00:03:08 Array](https://youtu.be/qa-XleqA0JU?t=188) +- [00:04:20 Метод array.push](https://youtu.be/qa-XleqA0JU?t=260) +- [00:04:31 Метод array.unshift](https://youtu.be/qa-XleqA0JU?t=271) +- [00:04:50 Метод array.shift](https://youtu.be/qa-XleqA0JU?t=290) +- [00:05:17 Метод array.pop](https://youtu.be/qa-XleqA0JU?t=317) +- [00:05:55 Оператор typeof](https://youtu.be/qa-XleqA0JU?t=355) +- [00:08:33 Метод Array.isArray](https://youtu.be/qa-XleqA0JU?t=513) +- [00:10:06 Оператор instanceof](https://youtu.be/qa-XleqA0JU?t=606) +- [00:10:48 Undefined](https://youtu.be/qa-XleqA0JU?t=648) +- [00:11:12 Null](https://youtu.be/qa-XleqA0JU?t=672) +- [00:11:55 NaN](https://youtu.be/qa-XleqA0JU?t=715) +- [00:14:18 Infinity](https://youtu.be/qa-XleqA0JU?t=858) +- [00:14:48 Тернарный оператор](https://youtu.be/qa-XleqA0JU?t=888) +- [00:16:15 Функция paseInt](https://youtu.be/qa-XleqA0JU?t=975) +- [00:24:23 Функция paseFloat](https://youtu.be/qa-XleqA0JU?t=1463) +- [00:27:15 Удаление переменных ](https://youtu.be/qa-XleqA0JU?t=1635) +- [00:33:25 Побитовые операторы (Bitwise operators)](https://youtu.be/qa-XleqA0JU?t=2005) +- [00:34:38 Побитовые операции](https://youtu.be/qa-XleqA0JU?t=2078) +- [00:44:30 BigInt](https://youtu.be/qa-XleqA0JU?t=2670) +- [00:56:30 Операторы сравнения ](https://youtu.be/qa-XleqA0JU?t=3390) +- [01:01:20 Очередность операторов (Operator precedence)](https://youtu.be/qa-XleqA0JU?t=3680) +- [01:13:25 Оператор Switch](https://youtu.be/qa-XleqA0JU?t=4405) + +## [Семинар: Базовый синтаксис языка JavaScript](https://youtu.be/PGqjTXQe_qw) + +## [Семинар: автоматическая проверка лабораторных работ](https://youtu.be/M4KpG0LEAyA) + +## [Введение в программирование (2 часть)](https://youtu.be/PzlLXQ3RaDs) + +- [0:00:01 введение](https://youtu.be/PzlLXQ3RaDs?t=1) +- [0:01:45 процедура или подпрограмма / Procedure or Subroutine](https://youtu.be/PzlLXQ3RaDs?t=105) +- [0:06:05 функция / Function](https://youtu.be/PzlLXQ3RaDs?t=365) +- [0:09:27 стек вызовов / Call Stack 0:18:26 Mixed Solution 0:21:42 принцип LIFO](https://youtu.be/PzlLXQ3RaDs?t=567) +- [0:22:09 куча и стек / Heap and Stack](https://youtu.be/PzlLXQ3RaDs?t=1329) +- [0:25:55 рекурсия / Recursion](https://youtu.be/PzlLXQ3RaDs?t=1555) +- [0:27:15 коллекция / Collection](https://youtu.be/PzlLXQ3RaDs?t=1635) +- [0:27:51 массив / Array](https://youtu.be/PzlLXQ3RaDs?t=1671) +- [0:28:18 отладка / Debug](https://youtu.be/PzlLXQ3RaDs?t=1698) +- [0:28:23 компонент / Component](https://youtu.be/PzlLXQ3RaDs?t=1703) +- [0:29:37 модуль / Module 0:30:16 модульность / Modularity 0:33:52 ограничения 0:31:50 заглушки / Stubs](https://youtu.be/PzlLXQ3RaDs?t=1777) +- [0:36:19 библиотека / Library](https://youtu.be/PzlLXQ3RaDs?t=2179) +- [0:37:13 импорт и экспорт идентификаторов / Import and Export Identifiers 0:41:30 новый синтаксис](https://youtu.be/PzlLXQ3RaDs?t=2233) +- [0:45:22 объект или экземпляр / Object or Instance 0:47:08 2 способа задания Instance](https://youtu.be/PzlLXQ3RaDs?t=2722) +- [0:47:47 класс / Class 0:49:16 примеры](https://youtu.be/PzlLXQ3RaDs?t=2867) +- [0:51:30 инстанциирование / Instantiation 0:52:59 примеры](https://youtu.be/PzlLXQ3RaDs?t=3090) +- [0:54:59 область видимости / Scope](https://youtu.be/PzlLXQ3RaDs?t=3299) +- [0:57:05 лексический(ое) контекст (окружение) / Lexical environment](https://youtu.be/PzlLXQ3RaDs?t=3425) +- [0:58:19 объектный контекст функции / Object context: this](https://youtu.be/PzlLXQ3RaDs?t=3499) +- [1:00:33 глобальный контекст / Global context](https://youtu.be/PzlLXQ3RaDs?t=3633) +- [1:04:35 монады](https://youtu.be/PzlLXQ3RaDs?t=3875) +- [1:09:00 парадигмы программирования](https://youtu.be/PzlLXQ3RaDs?t=4140) +- [1:12:05 лямбда-функция](https://youtu.be/PzlLXQ3RaDs?t=4325) +- [1:12:28 фрейм](https://youtu.be/PzlLXQ3RaDs?t=4348) +- [1:14:46 строка в свойстве объекта](https://youtu.be/PzlLXQ3RaDs?t=4486) +- [1:16:21 класс и объект](https://youtu.be/PzlLXQ3RaDs?t=4581) +- [1:16:47 класс и прототип](https://www.youtube.com/watch?v=PzlLXQ3RaDs&t=4607) +- [1:17:37 аллокирование значений в куче и стеке](https://youtu.be/PzlLXQ3RaDs?t=4607) +- [1:18:43 сборщик мусора](https://youtu.be/PzlLXQ3RaDs?t=4723) +- [1:20:29 терминология на английском и русском](https://youtu.be/PzlLXQ3RaDs?t=4829) + +## [Функции, лямбды (стрелочные функции), контексты, замыкания в JavaScript](https://youtu.be/pn5myCmpV2U) + +- [00:00:00 Введение ](https://youtu.be/pn5myCmpV2U?t=0) +- [00:11:22 Функция объявление (Declaration)](https://youtu.be/pn5myCmpV2U?t=682) +- [00:12:46 Функция выражение (Expression)](https://youtu.be/pn5myCmpV2U?t=766) +- [00:16:07 Лямбда-выражение (Lambda expression) или функция-стрелка (Arrow function) ](https://youtu.be/pn5myCmpV2U?t=967) +- [00:16:43 Лямбда-функция (Lambda function) ](https://youtu.be/pn5myCmpV2U?t=1003) +- [00:18:45 Область видимости (Scope)](https://youtu.be/pn5myCmpV2U?t=1125) +- [00:25:00 Функции, как абстракции](https://youtu.be/pn5myCmpV2U?t=1500) +- [00:26:43 Методы функции (name, length, toString( ) )](https://youtu.be/pn5myCmpV2U?t=1603) +- [00:31:26 Значения по умолчанию у функции ](https://youtu.be/pn5myCmpV2U?t=1886) +- [00:36:46 Rest-оператор (...args)](https://youtu.be/pn5myCmpV2U?t=2206) +- [00:41:49 Способ определения функции, через new Function](https://youtu.be/pn5myCmpV2U?t=2509) +- [00:44:46 Функции внутри объекта](https://youtu.be/pn5myCmpV2U?t=2686) +- [00:50:42 Обращение к полям объекта из привязанной функции, через this](https://youtu.be/pn5myCmpV2U?t=3042) +- [00:55:24 История синтаксиса создания контекстов, через самовызывающиеся функции ( IIFE)](https://youtu.be/pn5myCmpV2U?t=3324) +- [00:58:30 Методы функции, наследуемой от объекта (call, apply)](https://youtu.be/pn5myCmpV2U?t=3510) +- [01:00:53 Комментирование функций](https://youtu.be/pn5myCmpV2U?t=3653) +- [01:01:27 Задание декомпозиции функции](https://youtu.be/pn5myCmpV2U?t=3687) +- [01:04:24 Замыкание: context ](https://youtu.be/pn5myCmpV2U?t=3864) +- [01:08:41 Замыкание: chainning ](https://youtu.be/pn5myCmpV2U?t=4121) +- [01:11:55 Замыкание: summator ](https://youtu.be/pn5myCmpV2U?t=4315) +- [01:14:16 Замыкание: recursion](https://youtu.be/pn5myCmpV2U?t=4456) + +## [Массивы, объекты, классы, прототипы в JavaScript](https://youtu.be/VBMGnAPfmsY) + +- [00:00:00 Объекты](https://youtu.be/VBMGnAPfmsY?t=0) +- [00:11:01 Массивы](https://youtu.be/VBMGnAPfmsY?t=661) +- [00:13:29 Cериализация объекта ](https://youtu.be/VBMGnAPfmsY?t=809) +- [00:15:46 Cериализация массива ](https://youtu.be/VBMGnAPfmsY?t=946) +- [00:19:20 Методы array](https://youtu.be/VBMGnAPfmsY?t=1160) +- [00:20:22 Циклы ](https://youtu.be/VBMGnAPfmsY?t=1222) +- [00:21:16 Цикл for-in-object ](https://youtu.be/VBMGnAPfmsY?t=1276) +- [00:22:02 Цикл for-in-array](https://youtu.be/VBMGnAPfmsY?t=1322) +- [00:24:10 Цикл for-of-array ](https://youtu.be/VBMGnAPfmsY?t=1450) +- [00:25:05 Метод array.forEach](https://youtu.be/VBMGnAPfmsY?t=1505) +- [00:29:10 Метод array.map](https://youtu.be/VBMGnAPfmsY?t=1750) +- [00:33:59 Итерация матрицы, через for-of-array](https://youtu.be/VBMGnAPfmsY?t=2039) +- [00:38:38 Итерация матрицы, через array.forEach](https://youtu.be/VBMGnAPfmsY?t=2318) +- [00:39:22 Итерация матрицы, через for-in-array](https://youtu.be/VBMGnAPfmsY?t=2362) +- [00:39:45 Метод array.reduce](https://youtu.be/VBMGnAPfmsY?t=2385) +- [00:44:39 Методы объекта](https://youtu.be/VBMGnAPfmsY?t=2679) +- [00:46:38 Прототип](https://youtu.be/VBMGnAPfmsY?t=2798) +- [00:53:32 Класс ](https://youtu.be/VBMGnAPfmsY?t=3212) +- [00:56:04 Связывание методов с объектом, при помощи замыкания](https://youtu.be/VBMGnAPfmsY?t=3364) +- [01:00:08 Связывание методов с объектом, при помощи метода bind](https://youtu.be/VBMGnAPfmsY?t=3608) +- [01:03:19 Пример абстракции, при помощи замыкания](https://youtu.be/VBMGnAPfmsY?t=3799) +- [01:11:05 Пример абстракции, при помощи прототипа](https://youtu.be/VBMGnAPfmsY?t=4265) +- [01:12:30 Пример абстракции, при помощи класса](https://youtu.be/VBMGnAPfmsY?t=4350) +- [01:13:08 Наследование через синтаксис прототипов](https://youtu.be/VBMGnAPfmsY?t=4388) +- [01:18:50 Наследование через синтаксис классов ](https://youtu.be/VBMGnAPfmsY?t=4730) +- [01:21:05 Связывание объекта с методом класса при помощи прототипа ](https://youtu.be/VBMGnAPfmsY?t=4865) +- [01:23:52 Присваивание методов внутри конструктора, при прототипном подходе ](https://youtu.be/VBMGnAPfmsY?t=5032) +- [01:25:10 Get/Set класса ](https://youtu.be/VBMGnAPfmsY?t=5110) +- [01:27:00 Пример](https://youtu.be/VBMGnAPfmsY?t=5220) + +## [Языки программирования: обзор, сравнение, выбор](https://youtu.be/enHA1CRkJe0) + +- [0:00:02 обзорная лекция о классификации ЯП](https://youtu.be/enHA1CRkJe0?t=2) +- [0:00:53 типизация: статическая / динамическая](https://youtu.be/enHA1CRkJe0?t=53) +- [0:07:37 сильная / слабая || строгая / нестрогая](https://youtu.be/enHA1CRkJe0?t=457) +- [0:10:08 явная / неявная](https://youtu.be/enHA1CRkJe0?t=608) +- [0:13:58 утиная 0:18:26 протоколы](https://youtu.be/enHA1CRkJe0?t=838) +- [0:20:36 ниже и ближе к машине / выше и ближе к человеку](https://youtu.be/enHA1CRkJe0?t=1236) +- [0:32:20 сравнение asm и машинного кода](https://youtu.be/enHA1CRkJe0?t=1940) +- [0:39:38 сравнение asm и js](https://youtu.be/enHA1CRkJe0?t=2378) +- [0:42:47 функции и типы 1 класса](https://youtu.be/enHA1CRkJe0?t=2567) +- [0:44:39 распространённость](https://youtu.be/enHA1CRkJe0?t=2679) +- [0:45:47 скорость, читаемость](https://youtu.be/enHA1CRkJe0?t=2747) +- [0:48:21 владение правами / влияние на ЯП](https://youtu.be/enHA1CRkJe0?t=2901) +- [0:51:13 специализация](https://youtu.be/enHA1CRkJe0?t=3073) +- [0:53:13 наследственность](https://youtu.be/enHA1CRkJe0?t=3193) +- [0:56:33 инструментарий](https://youtu.be/enHA1CRkJe0?t=3393) +- [0:58:20 поддержка](https://youtu.be/enHA1CRkJe0?t=3500) +- [1:02:58 скорость развития](https://youtu.be/enHA1CRkJe0?t=3778) +- [1:04:12 системное программирование](https://youtu.be/enHA1CRkJe0?t=3852) +- [1:05:51 оконные приложения](https://youtu.be/enHA1CRkJe0?t=3951) +- [1:06:27 встраиваемые системы и автоматизация](https://youtu.be/enHA1CRkJe0?t=3987) +- [1:07:02 базы данных](https://youtu.be/enHA1CRkJe0?t=4022) +- [1:07:45 сетевые сервера](https://youtu.be/enHA1CRkJe0?t=4065) +- [1:09:03 вычисления](https://youtu.be/enHA1CRkJe0?t=4143) +- [1:10:45 ИИ](https://youtu.be/enHA1CRkJe0?t=4245) +- [1:11:52 параллельные вычисления, веб](https://youtu.be/enHA1CRkJe0?t=4312) +- [1:12:38 скрипты](https://youtu.be/enHA1CRkJe0?t=4358) +- [1:13:36 тестирование](https://youtu.be/enHA1CRkJe0?t=4416) +- [1:14:20 мобильные платформы](https://youtu.be/enHA1CRkJe0?t=4460) +- [1:16:10 игры, графика](https://youtu.be/enHA1CRkJe0?t=4570) + +## [JavaScript: Ответы на вопросы](https://youtu.be/wqkQ6eslyzY) + +- [0:00:02 введение](https://youtu.be/wqkQ6eslyzY?t=2) +- [0:00:41 разделение ЯП по модели работы с памятью](https://youtu.be/wqkQ6eslyzY?t=41) +- [0:08:32 почему надо использовать const, реже let и избегать var](https://youtu.be/wqkQ6eslyzY?t=512) +- [0:17:43 + и - утиной типизации](https://youtu.be/wqkQ6eslyzY?t=1063) +- [0:30:03 примеры ЯП с разной типизацией](https://youtu.be/wqkQ6eslyzY?t=1803) +- [0:32:29 чем выше ЯП, тем он медленнее?](https://youtu.be/wqkQ6eslyzY?t=1949) +- [0:34:15 почему бы js не компилировать напрямую в машинный код](https://youtu.be/wqkQ6eslyzY?t=2055) +- [0:35:37 скорость и производительность ЯП](https://youtu.be/wqkQ6eslyzY?t=2137) +- [0:40:47 константы и ключевое слово const](https://youtu.be/wqkQ6eslyzY?t=2447) +- [0:45:48 зачем учить именно js](https://youtu.be/wqkQ6eslyzY?t=2748) +- [0:59:28 typescript - js с типами? Развитость инфраструктуры ts](https://youtu.be/wqkQ6eslyzY?t=3568) + +## [Частичное применение и каррирование в JavaScript](https://youtu.be/ND8KQ5xjk7o) + +- [00:00:00 Замыкание](https://youtu.be/ND8KQ5xjk7o?t=0) +- [00:04:54 Лямбда- функция](https://youtu.be/ND8KQ5xjk7o?t=294) +- [00:06:06 Метод bind](https://youtu.be/ND8KQ5xjk7o?t=366) +- [00:08:30 Абстрагированный пример функции](https://youtu.be/ND8KQ5xjk7o?t=510) +- [00:13:42 Абстрагированный пример функции (расширение)](https://youtu.be/ND8KQ5xjk7o?t=822) +- [00:15:47 Неправильная реализация каррирования](https://youtu.be/ND8KQ5xjk7o?t=947) +- [00:22:22 Правильная реализация каррирования](https://youtu.be/ND8KQ5xjk7o?t=1342) +- [00:28:54 Правильная реализация каррирования (расширение)](https://youtu.be/ND8KQ5xjk7o?t=1734) +- [00:31:41 Функциональные абстракции (superposition)](https://youtu.be/ND8KQ5xjk7o?t=1901) +- [00:38:02 Функциональные абстракции, с сохранением выражений (composition)](https://youtu.be/ND8KQ5xjk7o?t=2282) +- [00:45:05 Композиция с 2 функциями](https://youtu.be/ND8KQ5xjk7o?t=2705) +- [00:46:05 Композиция с n - функциями, при помощи метода reduce](https://youtu.be/ND8KQ5xjk7o?t=2765) +- [00:51:25 Композиция с n - функциями, при помощи цикла](https://youtu.be/ND8KQ5xjk7o?t=3085) +- [00:54:29 Композиция с n - функциями, при помощи рекурсии](https://youtu.be/ND8KQ5xjk7o?t=3269) +- [00:57:40 Композиция асинхронных функций](https://youtu.be/ND8KQ5xjk7o?t=3460) +- [01:01:27 Обобщение](https://youtu.be/ND8KQ5xjk7o?t=3687) + +## [Функции высшего порядка, колбеки, события на JavaScript](https://youtu.be/1vqATwbGHnc) + +- [00:00:00 Определение](https://youtu.be/1vqATwbGHnc?t=0) +- [00:02:03 Математическая функция](https://youtu.be/1vqATwbGHnc?t=123) +- [00:05:57 Функция обратного вызова (callback) ](https://youtu.be/1vqATwbGHnc?t=357) +- [00:09:33 Замыкание](https://youtu.be/1vqATwbGHnc?t=573) +- [00:10:51 Цепочка вызовов ](https://youtu.be/1vqATwbGHnc?t=651) +- [00:12:40 Сохранение кэша с помощью замыкания](https://youtu.be/1vqATwbGHnc?t=760) +- [00:18:29 Добавление функции поведение логирования](https://youtu.be/1vqATwbGHnc?t=1109) +- [00:21:45 Обобщение](https://youtu.be/1vqATwbGHnc?t=1305) +- [00:22:45 Сallback](https://youtu.be/1vqATwbGHnc?t=1365) +- [00:25:32 Сallback асинхронной функции считывание файла](https://youtu.be/1vqATwbGHnc?t=1532) +- [00:28:36 Сallback именованный](https://youtu.be/1vqATwbGHnc?t=1716) +- [00:33:01 Сallback-timer ](https://youtu.be/1vqATwbGHnc?t=1981) +- [00:36:20 Сallback-timer-curry](https://youtu.be/1vqATwbGHnc?t=2180) +- [00:38:59 Listener](https://youtu.be/1vqATwbGHnc?t=2339) +- [00:41:10 Listener-timer](https://youtu.be/1vqATwbGHnc?t=2470) +- [00:46:59 Event](https://youtu.be/1vqATwbGHnc?t=2819) +- [00:53:45 Event-imitter](https://youtu.be/1vqATwbGHnc?t=3225) +- [00:57:48 Deferred object (отложенный объект)](https://youtu.be/1vqATwbGHnc?t=3468) +- [01:01:31 Errors](https://youtu.be/1vqATwbGHnc?t=3691) + +## [Работа со строками, шаблонами и юникодом в JavaScript](https://youtu.be/GcopcHQkA8M) + +- [00:00:00 Unicode строки](https://youtu.be/GcopcHQkA8M?t=0) +- [00:12:07 Обычные строки](https://youtu.be/GcopcHQkA8M?t=727) +- [00:17:03 Методы строки ](https://youtu.be/GcopcHQkA8M?t=1023) +- [00:23:09 Модификация строк ](https://youtu.be/GcopcHQkA8M?t=1389) +- [00:28:00 Получение подстроки в строке ](https://youtu.be/GcopcHQkA8M?t=1680) +- [00:34:45 Polyffill ](https://youtu.be/GcopcHQkA8M?t=2085) +- [00:37:54 Методы padEnd и padStart ](https://youtu.be/GcopcHQkA8M?t=2274) +- [00:40:45 Добавление функции для шаблонизирующей строки](https://youtu.be/GcopcHQkA8M?t=2445) +- [00:44:27 Пример ](https://youtu.be/GcopcHQkA8M?t=2667) +- [00:48:29 Библиотека Concolor.js](https://youtu.be/GcopcHQkA8M?t=2909) + +## [Регулярные выражения и парсинг в JavaScript](https://youtu.be/-ef2E0ozxao) + +- [00:00:00 Введение](https://youtu.be/-ef2E0ozxao?t=0) +- [00:10:30 Синтаксис регулярных выражений ](https://youtu.be/-ef2E0ozxao?t=630) +- [00:12:54 Задание регулярного выражения ](https://youtu.be/-ef2E0ozxao?t=774) +- [00:30:38 RegExp ](https://youtu.be/-ef2E0ozxao?t=1838) +- [00:38:11 Метод match ](https://youtu.be/-ef2E0ozxao?t=2291) +- [00:46:48 Метод split](https://youtu.be/-ef2E0ozxao?t=2808) +- [00:49:28 Метод replace ](https://youtu.be/-ef2E0ozxao?t=2968) +- [00:50:43 Метод replace с аргументом функции ](https://youtu.be/-ef2E0ozxao?t=3043) +- [00:53:28 Метод search ](https://youtu.be/-ef2E0ozxao?t=3208) +- [00:55:05 Обобщение](https://youtu.be/-ef2E0ozxao?t=3305) + +## [Примеси, обертки, декораторы, мемоизация в JavaScript](https://youtu.be/oRQ0kQr1N-U) + +- [00:00:00 Синхронная функция-обертка ](https://youtu.be/oRQ0kQr1N-U?t=0) +- [00:02:55 Синхронная универсальная функция-обертка ](https://youtu.be/oRQ0kQr1N-U?t=175) +- [00:08:28 Асинхронная универсальная функция-обертка ](https://youtu.be/oRQ0kQr1N-U?t=508) +- [00:15:50 Синхронная функция-обертка, которая добавляет поведение (timeout)](https://youtu.be/oRQ0kQr1N-U?t=950) +- [00:22:45 Асинхронная функция-обертка, которая добавляет поведение (timeout)](https://youtu.be/oRQ0kQr1N-U?t=1365) +- [00:25:38 Функция-обертка, которая ограничивает вызов функции до одного вызова (once) ](https://youtu.be/oRQ0kQr1N-U?t=1538) +- [00:27:36 Функция-обертка, которая ограничивает вызов функции до n-го вызова (limit)](https://youtu.be/oRQ0kQr1N-U?t=1656) +- [00:29:50 Функция-обертка, которая отменяет вызов функции (cancel)](https://youtu.be/oRQ0kQr1N-U?t=1790) +- [00:32:29 Функция-обертка с методами timeout, limit, cancel](https://youtu.be/oRQ0kQr1N-U?t=1949) +- [00:39:03 Функция-обертка с методами timeout, limit, cancel (оптимизированная)](https://youtu.be/oRQ0kQr1N-U?t=2343) +- [00:42:28 Функция-обертка, которая ограничивает один вызов за 200 мс (throttle)](https://youtu.be/oRQ0kQr1N-U?t=2548) +- [00:45:47 Примесь поля через точку ](https://youtu.be/oRQ0kQr1N-U?t=2747) +- [00:51:35 Примесь поля через функцию extend](https://youtu.be/oRQ0kQr1N-U?t=3095) +- [00:57:35 Примесь поля через object.assign( )](https://youtu.be/oRQ0kQr1N-U?t=3455) +- [00:59:18 Примесь поведения ](https://youtu.be/oRQ0kQr1N-U?t=3558) +- [01:02:23 Примесь изменения класса](https://youtu.be/oRQ0kQr1N-U?t=3743) +- [01:06:50 Определение](https://youtu.be/oRQ0kQr1N-U?t=4010) +- [01:07:30 Реализация простой мемоизации ](https://youtu.be/oRQ0kQr1N-U?t=4050) +- [01:14:43 Реализация простой мемоизации с проверкой скорости ](https://youtu.be/oRQ0kQr1N-U?t=4483) +- [01:20:43 Удаление накопленного кэша ](https://youtu.be/oRQ0kQr1N-U?t=4843) +- [01:25:35 Асинхронная мемоизация ](https://youtu.be/oRQ0kQr1N-U?t=5135) +- [01:31:10 Преобразование аргументов и ключей в hash-функцию](https://youtu.be/oRQ0kQr1N-U?t=5470) +- [01:33:32 Реализация сложной мемоизации](https://youtu.be/oRQ0kQr1N-U?t=5612) + +## [Консоль и командная строка в JavaScript и Node.js](https://youtu.be/5aSZyKi5BmE) + +- [1:20 console](https://youtu.be/5aSZyKi5BmE?t=80) +- [16:00 readline](https://youtu.be/5aSZyKi5BmE?t=960) +- [21:35 cli](https://youtu.be/5aSZyKi5BmE?t=1295) +- [31:15 делаем красивый login screen](https://youtu.be/5aSZyKi5BmE?t=1875) + +## [Чеининг функций и объектов, обработка ошибок в JavaScript](https://youtu.be/PfuEfIiLX34) + +- [00:00:00 Введение ](https://youtu.be/PfuEfIiLX34?t=0) +- [00:01:10 Чеининг через синтаксис вызова функций ](https://youtu.be/PfuEfIiLX34?t=70) +- [00:02:12 Prototype ](https://youtu.be/PfuEfIiLX34?t=132) +- [00:05:45 Сlass](https://youtu.be/PfuEfIiLX34?t=345) +- [00:06:11 Functor](https://youtu.be/PfuEfIiLX34?t=371) +- [00:11:54 Mutable](https://youtu.be/PfuEfIiLX34?t=714) +- [00:16:34 Iterator](https://youtu.be/PfuEfIiLX34?t=994) +- [00:26:18 Promise ](https://youtu.be/PfuEfIiLX34?t=1578) +- [00:26:35 Test](https://youtu.be/PfuEfIiLX34?t=1595) +- [00:37:08 Compare ](https://youtu.be/PfuEfIiLX34?t=2228) +- [00:39:45 Benchmark](https://youtu.be/PfuEfIiLX34?t=2385) +- [00:40:48 Запуск и анализ тестов ](https://youtu.be/PfuEfIiLX34?t=2448) +- [01:03:48 Первый способ возвращение ошибок в синхронном коде ](https://youtu.be/PfuEfIiLX34?t=3828) +- [01:09:24 Второй способ возвращение ошибок в синхронном коде ](https://youtu.be/PfuEfIiLX34?t=4164) +- [01:12:26 Возвращение ошибок в асинхронном коде ](https://youtu.be/PfuEfIiLX34?t=4346) +- [01:16:14 Корректное возвращение ошибок ](https://youtu.be/PfuEfIiLX34?t=4574) +- [01:20:03 Обработка ошибок c promise ](https://youtu.be/PfuEfIiLX34?t=4803) +- [01:23:58 Обработка ошибок c async-await](https://youtu.be/PfuEfIiLX34?t=5038) + +## [Таймеры, таймауты, EventEmitter в JavaScript и Node.js](https://youtu.be/LK2jveAnRNg) + +- [0:30 callback sync/async](https://youtu.be/LK2jveAnRNg?t=30) +- [1:35 временная задержка sleep.js](https://youtu.be/LK2jveAnRNg?t=95) +- [5:35 await-sleep.js](https://youtu.be/LK2jveAnRNg?t=335) +- [8:40 sleep-then.js](https://youtu.be/LK2jveAnRNg?t=520) +- [9:30 order.js](https://youtu.be/LK2jveAnRNg?t=570) +- [18:38 precision.js](https://youtu.be/LK2jveAnRNg?t=1118) +- [22:13 blocking.js](https://youtu.be/LK2jveAnRNg?t=1333) +- [22:50 timers.js](https://youtu.be/LK2jveAnRNg?t=1370) +- [29:35 ref-unref.js](https://youtu.be/LK2jveAnRNg?t=1775) +- [32:05 enroll.js](https://youtu.be/LK2jveAnRNg?t=1925) +- [34:57 eventloop.txt](https://youtu.be/LK2jveAnRNg?t=2097) +- [37:37 eventEmitter](https://youtu.be/LK2jveAnRNg?t=2257) +- [44:32 simple.js](https://youtu.be/LK2jveAnRNg?t=2672) +- [47:48 usage.js](https://youtu.be/LK2jveAnRNg?t=2868) +- [48:30 enhanced.js](https://youtu.be/LK2jveAnRNg?t=2910) +- [50:18 star-fix.js](https://youtu.be/LK2jveAnRNg?t=3018) +- [51:10 usage.js](https://youtu.be/LK2jveAnRNg?t=3070) +- [53:15 closure.js](https://youtu.be/LK2jveAnRNg?t=3195) +- [54:50 fp.js](https://youtu.be/LK2jveAnRNg?t=3290) +- [57:10 methods.js](https://youtu.be/LK2jveAnRNg?t=3430) +- [1:06:35 min.js](https://youtu.be/LK2jveAnRNg?t=3995) +- [1:12:31 prod.js](https://youtu.be/LK2jveAnRNg?t=4351) + +## [Итерирование, циклы и итераторы в JavaScript](https://youtu.be/lq3b5_UGJas) + +- [00:00:00 Цикл for](https://youtu.be/lq3b5_UGJas?t=0) +- [00:02:45 Цикл while](https://youtu.be/lq3b5_UGJas?t=165) +- [00:03:16 Цикл do while ](https://youtu.be/lq3b5_UGJas?t=196) +- [00:03:33 Цикл for in object ](https://youtu.be/lq3b5_UGJas?t=213) +- [00:04:40 Цикл for in array](https://youtu.be/lq3b5_UGJas?t=280) +- [00:06:44 Цикл for of](https://youtu.be/lq3b5_UGJas?t=404) +- [00:08:45 Оператор break](https://youtu.be/lq3b5_UGJas?t=525) +- [00:10:13 Оператор continue](https://youtu.be/lq3b5_UGJas?t=613) +- [00:12:12 Итерирование по массиву методом forEach](https://youtu.be/lq3b5_UGJas?t=732) +- [00:15:10 Итерирование по массиву методом map ](https://youtu.be/lq3b5_UGJas?t=910) +- [00:21:23 Итерирование по двухмерному массиву (мatrix)](https://youtu.be/lq3b5_UGJas?t=1283) +- [00:25:38 Итерирование по двухмерному массиву (мatrix) методом forEach](https://youtu.be/lq3b5_UGJas?t=1538) +- [00:26:08 Итерирование массива методом reduce](https://youtu.be/lq3b5_UGJas?t=1568) +- [00:28:49 Итерирование по объекту ](https://youtu.be/lq3b5_UGJas?t=1729) +- [00:37:32 Обратный итератор ](https://youtu.be/lq3b5_UGJas?t=2252) +- [00:40:42 Асинхронный итератор](https://youtu.be/lq3b5_UGJas?t=2442) + +## [Архитектурный подход к программированию](https://youtu.be/d_vyO2CkiOc) + +- [00:00:00 Когда нужна архитектура](https://youtu.be/d_vyO2CkiOc?t=0) +- [00:06:07 Принятие решений](https://youtu.be/d_vyO2CkiOc?t=367) +- [00:09:58 Типы связывания](https://youtu.be/d_vyO2CkiOc?t=598) +- [00:20:00 Ошибки](https://youtu.be/d_vyO2CkiOc?t=1200) +- [00:27:15 Принятие решений](https://youtu.be/d_vyO2CkiOc?t=1635) +- [00:37:05 Эволюция архитектурных решений](https://youtu.be/d_vyO2CkiOc?t=2225) +- [00:58:13 Схема современной архитектуры](https://youtu.be/d_vyO2CkiOc?t=3493) +- [01:01:40 субд в браузере](https://youtu.be/d_vyO2CkiOc?t=3700) +- [01:05:20 Альтернативные варианты](https://youtu.be/d_vyO2CkiOc?t=3920) +- [01:12:20 Как на самом деле](https://youtu.be/d_vyO2CkiOc?t=4340) +- [01:13:45 Архитектура мечты](https://youtu.be/d_vyO2CkiOc?t=4425) +- [01:16:45 Современные возможности и требования ](https://youtu.be/d_vyO2CkiOc?t=4605) +- [01:25:20 Топологии](https://youtu.be/d_vyO2CkiOc?t=5120) +- [01:30:45 Итог](https://youtu.be/d_vyO2CkiOc?t=5445) + +## [Функциональное программирование на JavaScript](https://youtu.be/0JxSs_GcvbQ) + +## [Реактивное программирование на JavaScript](https://youtu.be/7MH8-qQc-48) + +- [0:00 введение](https://youtu.be/7MH8-qQc-48?t=0) +- [3:00 imperative.js](https://youtu.be/7MH8-qQc-48?t=180) +- [4:00 set-get.js](https://youtu.be/7MH8-qQc-48?t=240) +- [7:15 proxy.js](https://youtu.be/7MH8-qQc-48?t=435) +- [23:07 observer.js](https://youtu.be/7MH8-qQc-48?t=1387) + +## [Асинхронное программирование на callback`ах в JavaScript](https://youtu.be/z8Hg6zgi3yQ) + +- [1:20 пример callback функции](https://youtu.be/z8Hg6zgi3yQ?t=80) +- [2:40 пример последовательного исполнения callback функций](https://youtu.be/z8Hg6zgi3yQ?t=160) +- [5:52 пример параллельного исполнения async функций c использованием wrapAsync](https://youtu.be/z8Hg6zgi3yQ?t=352) +- [15:18 пример последовательного исполнения async функций c использованием wrapAsync](https://youtu.be/z8Hg6zgi3yQ?t=918) +- [19:05 chain исполнение async функций](https://youtu.be/z8Hg6zgi3yQ?t=1145) +- [41:16 где можно встретить асинхронные функции](https://youtu.be/z8Hg6zgi3yQ?t=2476) + +## [Проекции и отображения наборов данных в JavaScript](https://youtu.be/lwJCq9inky8) + +- [00:00:00 Введение ](https://youtu.be/lwJCq9inky8?t=0) +- [00:01:50 Простая проекция набора данных ](https://youtu.be/lwJCq9inky8?t=110) +- [00:09:23 Расширенная проекция набора данных ](https://youtu.be/lwJCq9inky8?t=563) +- [00:19:00 Расширенная проекция набора данных с кэшированием списка ключей](https://youtu.be/lwJCq9inky8?t=1140) +- [00:20:27 Оптимизация проекции набора данных с помощью императивного программирования ](https://youtu.be/lwJCq9inky8?t=1227) +- [00:23:11 Линзы из функционального программирования ](https://youtu.be/lwJCq9inky8?t=1391) +- [00:32:29 Сложная проекция набора данных ( проекция изнутри и снаружи ) ](https://youtu.be/lwJCq9inky8?t=1949) +- [00:39:08 Сложная проекция набора данных с помощью декларативного программирования ](https://youtu.be/lwJCq9inky8?t=2348) +- [00:41:57 Оптимизация сложной проекции ](https://youtu.be/lwJCq9inky8?t=2517) +- [00:51:36 Синтаксис фильтрации ](https://youtu.be/lwJCq9inky8?t=3096) +- [00:53:25 Вывод ](https://youtu.be/lwJCq9inky8?t=3205) +- [00:58:08 Оптимизация](https://youtu.be/lwJCq9inky8?t=3488) +- [01:00:00 Обобщение](https://youtu.be/lwJCq9inky8?t=3600) + +## [Коллекции, множества, хештаблицы в JavaScript](https://youtu.be/hN0wsq5LNOc) + +- [00:00:00 Введение](https://youtu.be/hN0wsq5LNOc?t=0) +- [00:01:35 Массивы ](https://youtu.be/hN0wsq5LNOc?t=95) +- [00:01:56 Склеивание массива методом concat ](https://youtu.be/hN0wsq5LNOc?t=116) +- [00:02:02 Склеивание массива оператором spread ](https://youtu.be/hN0wsq5LNOc?t=122) +- [00:03:17 Объекты ](https://youtu.be/hN0wsq5LNOc?t=197) +- [00:03:28 Склеивание объектов методом object.assign ](https://youtu.be/hN0wsq5LNOc?t=208) +- [00:04:01 Склеивание объектов оператором spread ](https://youtu.be/hN0wsq5LNOc?t=241) +- [00:04:38 Символический тип ](https://youtu.be/hN0wsq5LNOc?t=278) +- [00:06:50 Сохранение коллекции в файл ](https://youtu.be/hN0wsq5LNOc?t=410) +- [00:08:45 Использование конструированного map ](https://youtu.be/hN0wsq5LNOc?t=525) +- [00:14:29 Использование встроенного map ](https://youtu.be/hN0wsq5LNOc?t=869) +- [00:15:01 Отличия конструированного и встроенного map](https://youtu.be/hN0wsq5LNOc?t=901) +- [00:16:49 Способы итерации по map ](https://youtu.be/hN0wsq5LNOc?t=1009) +- [00:18:15 Построение индексов помощью map](https://youtu.be/hN0wsq5LNOc?t=1095) +- [00:23:15 WeakMap](https://youtu.be/hN0wsq5LNOc?t=1395) +- [00:27:55 Отдача значения без ключа ](https://youtu.be/hN0wsq5LNOc?t=1675) +- [00:29:15 Хранение уникальных значений ](https://youtu.be/hN0wsq5LNOc?t=1755) +- [00:33:32 Операции со массивами ](https://youtu.be/hN0wsq5LNOc?t=2012) +- [00:39:48 Операции над множествами ](https://youtu.be/hN0wsq5LNOc?t=2388) +- [00:42:32 WeakSet ](https://youtu.be/hN0wsq5LNOc?t=2552) +- [00:47:15 Обобщение](https://youtu.be/hN0wsq5LNOc?t=2835) + +## [Неблокирующее асинхронное итерирование в JavaScript](https://youtu.be/wYA2cIRYLoA) + +- [1:02 блокирующее итерирование по массиву](https://youtu.be/wYA2cIRYLoA?t=62) +- [3:24 блокирующее итерирование с помощью for await](https://youtu.be/wYA2cIRYLoA?t=204) +- [4:47 неблокирующее итерирование с помощью setTimeout](https://youtu.be/wYA2cIRYLoA?t=287) +- [6:45 неблокирующее итерирование с помощью for await](https://youtu.be/wYA2cIRYLoA?t=405) +- [8:20 неблокирующее итерирование без задержки](https://youtu.be/wYA2cIRYLoA?t=500) +- [13:00 неблокирующее итерирование без задержки с помощью for await](https://youtu.be/wYA2cIRYLoA?t=780) +- [19:30 использование асинхронного итерирования для обычных массивов](https://youtu.be/wYA2cIRYLoA?t=1170) + +## [Структуры данных: списки, стек, очередь, дэк в JavaScript](https://youtu.be/9KvA4hDDSjk) + +- [00:00:00 Идея структуры данных](https://youtu.be/9KvA4hDDSjk?t=0) +- [00:02:27 Списки на прототипах ( абстракция элемента ) ](https://youtu.be/9KvA4hDDSjk?t=147) +- [00:06:23 Списки на объектах ](https://youtu.be/9KvA4hDDSjk?t=383) +- [00:07:28 Списки на замыканиях](https://youtu.be/9KvA4hDDSjk?t=448) +- [00:10:56 Списки на объектах ( абстракция элемента и списка ) ](https://youtu.be/9KvA4hDDSjk?t=656) +- [00:18:22 Списки на классах](https://youtu.be/9KvA4hDDSjk?t=1102) +- [00:21:08 Стек на прототипах ( двух-связанный)](https://youtu.be/9KvA4hDDSjk?t=1268) +- [00:28:17 Стек на классах (односвязный)](https://youtu.be/9KvA4hDDSjk?t=1697) +- [00:29:55 Очередь](https://youtu.be/9KvA4hDDSjk?t=1795) +- [00:34:26 Дэк](https://youtu.be/9KvA4hDDSjk?t=2066) + +## [Proxy и Symbol в JavaScript](https://youtu.be/UjZjSDyi9AM) + +- [00:00:00 Определение Proxy](https://youtu.be/UjZjSDyi9AM?t=0) +- [00:01:20 Обращение к свойствам объекта, находящегося внутри proxy](https://youtu.be/UjZjSDyi9AM?t=80) +- [00:04:10 Доступ к состоянию объекта через Getter и Setter ](https://youtu.be/UjZjSDyi9AM?t=250) +- [00:05:13 Доступ к состоянию объекта через Proxy ](https://youtu.be/UjZjSDyi9AM?t=313) +- [00:07:40 Проверка наличие свойств ](https://youtu.be/UjZjSDyi9AM?t=460) +- [00:11:22 Удаление свойств](https://youtu.be/UjZjSDyi9AM?t=682) +- [00:13:26 Обращение к аргументам функции, находящегося внутри proxy ](https://youtu.be/UjZjSDyi9AM?t=806) +- [00:15:30 Другие Proxy обработчики (Proxy handler )](https://youtu.be/UjZjSDyi9AM?t=930) +- [00:19:00 Proxy.revocable ](https://youtu.be/UjZjSDyi9AM?t=1140) +- [00:20:43 Определение Symbol ](https://youtu.be/UjZjSDyi9AM?t=1243) +- [00:23:00 Вывод и сравнение Symbol ](https://youtu.be/UjZjSDyi9AM?t=1380) +- [00:25:10 Type](https://youtu.be/UjZjSDyi9AM?t=1510) +- [00:29:51 Symbol.for](https://youtu.be/UjZjSDyi9AM?t=1791) +- [00:34:45 Symbol.iterator ](https://youtu.be/UjZjSDyi9AM?t=2085) +- [00:43:52 Symbol.toPrimitive](https://youtu.be/UjZjSDyi9AM?t=2632) +- [00:47:00 hideSymbol](https://youtu.be/UjZjSDyi9AM?t=2820) + +## [Сериализация и десериализация в JavaScript и Node.js](https://youtu.be/GtKPniOEzh8) + +- [00:00:00 Введение ](https://youtu.be/GtKPniOEzh8?t=0) +- [00:01:50 Виды сериализации ](https://youtu.be/GtKPniOEzh8?t=110) +- [00:02:45 Сериализатор console.dir ](https://youtu.be/GtKPniOEzh8?t=165) +- [00:03:45 Cериализатор CSV](https://youtu.be/GtKPniOEzh8?t=225) +- [00:05:42 Сериализатор JSON ](https://youtu.be/GtKPniOEzh8?t=342) +- [00:10:00 Сериализатор функции](https://youtu.be/GtKPniOEzh8?t=600) +- [00:15:25 Сериализатор функции разных типов (расширяемый)](https://youtu.be/GtKPniOEzh8?t=925) +- [00:23:06 Десереализация ](https://youtu.be/GtKPniOEzh8?t=1386) +- [00:25:26 Сериализация объекта в бинарный формат, с помощью библиотеки v8 ](https://youtu.be/GtKPniOEzh8?t=1526) +- [00:28:26 Сериализация объекта, с помощью разных библиотек](https://youtu.be/GtKPniOEzh8?t=1706) + +## [Асинхронность с библиотекой async.js](https://youtu.be/XQ94wQc-erU) + +## [Фабрики и пулы объектов в JavaScript, factorify, poolify](https://youtu.be/Ax_mSvadFp8) + +- [00:00:00 Введение ](https://youtu.be/Ax_mSvadFp8?t=0) +- [00:02:38 Фабрика ( factory )](https://youtu.be/Ax_mSvadFp8?t=158) +- [00:05:44 Фабрика прототипов ](https://youtu.be/Ax_mSvadFp8?t=344) +- [00:10:48 Фабрика классов ](https://youtu.be/Ax_mSvadFp8?t=648) +- [00:12:28 Фабрика функций ](https://youtu.be/Ax_mSvadFp8?t=748) +- [00:15:55 Фабричные методы ](https://youtu.be/Ax_mSvadFp8?t=955) +- [00:16:55 Превращение функций в фабрику ( factorify)](https://youtu.be/Ax_mSvadFp8?t=1015) +- [00:19:44 Пул ( pool )](https://youtu.be/Ax_mSvadFp8?t=1184) +- [00:23:05 Работа с пулом ](https://youtu.be/Ax_mSvadFp8?t=1385) +- [00:23:04 Обобщенный пул](https://youtu.be/Ax_mSvadFp8?t=1384) +- [00:24:55 Пулифицирование фабрики ( poolify ) ](https://youtu.be/Ax_mSvadFp8?t=1495) +- [00:28:50 Улучшенная пулифицированная фабрика ](https://youtu.be/Ax_mSvadFp8?t=1730) +- [00:32:10 Асинхронная работа с пулом ](https://youtu.be/Ax_mSvadFp8?t=1930) +- [00:45:25 Одновременное использование factorify и poolify ](https://youtu.be/Ax_mSvadFp8?t=2725) +- [00:51:54 Обобщение](https://youtu.be/Ax_mSvadFp8?t=3114) + +## [Подход к изучению программирования (выступление на дне факультета Информатики КПИ 12 декабря 2018)](https://youtu.be/zMU4ir10DMg) + +- [00:40 Что нужно знать?](https://youtu.be/zMU4ir10DMg?t=40) +- [03:41 Откуда брать знания ](https://youtu.be/zMU4ir10DMg?t=221) +- [07:39 Проблемы отрасли ](https://youtu.be/zMU4ir10DMg?t=459) +- [13:12 Дерево парадигм ](https://youtu.be/zMU4ir10DMg?t=792) +- [14:15 Технологии и техники](https://youtu.be/zMU4ir10DMg?t=855) +- [14:32 Разница парадигм](https://youtu.be/zMU4ir10DMg?t=872) +- [14:48 Что общего в парадигмах](https://youtu.be/zMU4ir10DMg?t=888) +- [15:33 Прочие парадигмы и техники](https://youtu.be/zMU4ir10DMg?t=933) +- [17:46 Мультипарадигменность](https://youtu.be/zMU4ir10DMg?t=1066) +- [18:46 Метапрограммирование](https://youtu.be/zMU4ir10DMg?t=1126) +- [19:13 Как не деградировать?](https://youtu.be/zMU4ir10DMg?t=1153) +- [21:29 Как найти общий язык? ](https://youtu.be/zMU4ir10DMg?t=1289) +- [24:31 Задачи программной инженерии](https://youtu.be/zMU4ir10DMg?t=1471) +- [28:19 Преодоление сложности ](https://youtu.be/zMU4ir10DMg?t=1699) +- [28:21 Связывание данных и логики](https://youtu.be/zMU4ir10DMg?t=1701) +- [28:30 Различные концепции ](https://youtu.be/zMU4ir10DMg?t=1710) +- [29:40 ВУЗ должен меняться](https://youtu.be/zMU4ir10DMg?t=1780) +- [33:53 Неспециальные предметы](https://youtu.be/zMU4ir10DMg?t=2033) +- [35:18 Чего не хватает](https://youtu.be/zMU4ir10DMg?t=2118) +- [36:57 Проблем много ](https://youtu.be/zMU4ir10DMg?t=2217) +- [40:20 ВУЗ должен знать](https://youtu.be/zMU4ir10DMg?t=2420) + +## [Асинхронность на промисах, Promise, all, then, catch, race](https://youtu.be/RMl4r6s1Y8M) + +## [Типизированные массивы в JavaScript](https://youtu.be/tTNcqxbxhfY) + +## [Шаблон Singleton (синглтон) в JavaScript](https://youtu.be/qdJ5yikZnfE) + +- [00:00:00 Singleton через конструктор прототипа](https://youtu.be/qdJ5yikZnfE?t=0) +- [00:03:27 Singleton через замыкания ](https://youtu.be/qdJ5yikZnfE?t=207) +- [00:06:10 Пример singleton через замыкания ](https://youtu.be/qdJ5yikZnfE?t=370) +- [00:08:15 Пример singleton через замыкания в функциональном стиле ](https://youtu.be/qdJ5yikZnfE?t=495) +- [00:09:23 Пример singleton через замыкания в функциональном стиле (упрощенный) ](https://youtu.be/qdJ5yikZnfE?t=563) +- [00:10:32 Создание singleton в JS](https://youtu.be/qdJ5yikZnfE?t=632) + +## [Функциональные объекты, функторы и монады в JavaScript](https://youtu.be/3Z7f0Gi8pxw) + +- [00:00:00 Определение функтора ](https://youtu.be/3Z7f0Gi8pxw?t=0) +- [00:01:40 Функтор из прототипа ](https://youtu.be/3Z7f0Gi8pxw?t=100) +- [00:08:17 Функтор из прототипа (упрощенный) ](https://youtu.be/3Z7f0Gi8pxw?t=497) +- [00:09:14 Функтор из замыкания ](https://youtu.be/3Z7f0Gi8pxw?t=554) +- [00:11:49 Функтор из замыкания с тернарным оператором](https://youtu.be/3Z7f0Gi8pxw?t=709) +- [00:12:44 Аппликативный функтор из прототипа ](https://youtu.be/3Z7f0Gi8pxw?t=764) +- [00:18:08 Аппликативный функтор из замыкания (монада)](https://youtu.be/3Z7f0Gi8pxw?t=1088) +- [00:23:11 Пример применения монады ](https://youtu.be/3Z7f0Gi8pxw?t=1391) +- [00:28:37 Функциональный объект ](https://youtu.be/3Z7f0Gi8pxw?t=1717) +- [00:39:44 Пример применения функционального объекта](https://youtu.be/3Z7f0Gi8pxw?t=2384) +- [00:45:27 Обобщение](https://youtu.be/3Z7f0Gi8pxw?t=2727) + +## [Асинхронные функции, async/await, thenable, обработка ошибок](https://youtu.be/Jdf_tZuJbHI) + +## [Асинхронные адаптеры: promisify, callbackify, asyncify...](https://youtu.be/76k6_YkYRmU) + +## [Асинхронные коллекторы данных](https://youtu.be/tgodt1JL6II) + +## [Утечки памяти в Node.js и JavaScript, сборка мусора и профилирование](https://youtu.be/0oZa64SB2wM) + +## [Рекурсия: косвенная и хвостовая, стек, выход](https://youtu.be/W2skCjIgVKE) + +- [00:00 Рекурсивная функция для вычисления глубины стека](https://youtu.be/W2skCjIgVKE?t=0) +- [03:25 Неявная рекурсия](https://youtu.be/W2skCjIgVKE?t=205) +- [04:52 Рекурсивная функция для вычисления степени числа](https://youtu.be/W2skCjIgVKE?t=292) +- [06:12 Рекурсивная функция для вычисления факториала ](https://youtu.be/W2skCjIgVKE?t=372) +- [06:29 Рекурсивная функция для вычисления числа Фибоначчи ](https://youtu.be/W2skCjIgVKE?t=389) +- [09:27 Рекурсивная функция, как аналог функции reduce ](https://youtu.be/W2skCjIgVKE?t=567) +- [12:04 Оптимизация хвостовой рекурсии ](https://youtu.be/W2skCjIgVKE?t=724) +- [15:41 Оптимизация обычной рекурсивной функции](https://youtu.be/W2skCjIgVKE?t=941) + +## [Дженерики и обобщенное программирование](https://youtu.be/r6W2z3DQhoI) + +## [Генераторы и асинхронные генераторы в JavaScript](https://youtu.be/kvNm9D32s8s) + +- [00:00 Способы объявления генераторов ](https://youtu.be/kvNm9D32s8s?t=0) +- [10:41 Пример генератора с yield ](https://youtu.be/kvNm9D32s8s?t=641) +- [15:54 Пример генератора с yield и return ](https://youtu.be/kvNm9D32s8s?t=954) +- [18:47 Получение значений из генератора циклом for...of ](https://youtu.be/kvNm9D32s8s?t=1127) +- [21:04 Получение значений из генератора spead - оператором ](https://youtu.be/kvNm9D32s8s?t=1264) +- [21:50 Метод next ](https://youtu.be/kvNm9D32s8s?t=1310) +- [23:30 Пример генератора с yield * возвращающего итерируемые объекты ](https://youtu.be/kvNm9D32s8s?t=1410) +- [25:05 Пример генератора с yield * возвращающего другие генераторы ](https://youtu.be/kvNm9D32s8s?t=1505) +- [26:18 Метод return ](https://youtu.be/kvNm9D32s8s?t=1578) +- [28:11 Метод throw](https://youtu.be/kvNm9D32s8s?t=1691) +- [29:05 Обобщение](https://youtu.be/kvNm9D32s8s?t=1745) + +## [Итераторы и асинхронные итераторы в JavaScript](https://youtu.be/rBGFlWpVpGs) + +## [Фасад - петтерн для скрытия сложности](https://youtu.be/oJtBO7CystE) + +## [Адаптер (Adapter) - паттерн достижения совместимости](https://youtu.be/cA65McLQrR8) + +- [0:00 введение](https://youtu.be/cA65McLQrR8?t=0) +- [1:30 adapter на prototype](https://youtu.be/cA65McLQrR8?t=90) +- [3:57 adapter на class](https://youtu.be/cA65McLQrR8?t=237) +- [4:23 adapter на function](https://youtu.be/cA65McLQrR8?t=263) +- [6:15 adapter на классе-обертке (boxing)](https://youtu.be/cA65McLQrR8?t=375) +- [7:08 adapter на замыканиях (closure)](https://youtu.be/cA65McLQrR8?t=428) +- [8:10 adapter на interface](https://youtu.be/cA65McLQrR8?t=490) +- [13:45 adapter на events](https://youtu.be/cA65McLQrR8?t=825) +- [16:00 выводы](https://youtu.be/cA65McLQrR8?t=960) + +## [Стратегия (Strategy) - выбор взаимозаменяемого поведения](https://youtu.be/hO8VSVv0NqM) + +- [0:00 введение](https://youtu.be/hO8VSVv0NqM?t=0) +- [3:40 strategy на class](https://youtu.be/hO8VSVv0NqM?t=220) +- [15:04 strategy на prototype](https://youtu.be/hO8VSVv0NqM?t=904) +- [16:14 strategy на function](https://youtu.be/hO8VSVv0NqM?t=974) +- [20:22 strategy с примером работы над массивом](https://youtu.be/hO8VSVv0NqM?t=1222) +- [24:07 обобщение](https://youtu.be/hO8VSVv0NqM?t=1447) + +## [Линзы в JavaScript - функциональные аналоги геттера и сеттера](https://youtu.be/IBF5gFU6G-o) + +## [Перечислимый тип (enum) в JavaScript и TypeScript](https://youtu.be/BXiKebOIAGI) + +## [Графы и запросы к графовым структурам на JavaScript](https://youtu.be/a0W0T8Yqw3s) + +## [Паттерн Команда (Command) действие и параметры как объект](https://youtu.be/vER0vYL4hM4) + +## [Тестирование: юниттесты с примерами на JavaScript](https://youtu.be/CszugIag2TA) + +## [Инверсия управления и внедрение зависимостей в Node.js](https://youtu.be/Fz86Fdjz-LM) + +## [Слои, связанность и связность кода в JavaScript](https://youtu.be/A3RpwNlVeyY) + +## [Измерение производительности кода и оптимизация в JavaScript и Node.js](https://youtu.be/sanq2X7Re8o) + +- [00:00:00 Введение ](https://youtu.be/sanq2X7Re8o?t=0) +- [00:05:27 Console.time и console.timeEnd ](https://youtu.be/sanq2X7Re8o?t=327) +- [00:09:05 New Date( ).getTime( ) ](https://youtu.be/sanq2X7Re8o?t=545) +- [00:11:15 Process.hrtime( )](https://youtu.be/sanq2X7Re8o?t=675) +- [00:18:51 Process.hrtime.bigint( ) и движок для benchmark](https://youtu.be/sanq2X7Re8o?t=1131) +- [00:27:00 Сравнение функций инстанцирования ](https://youtu.be/sanq2X7Re8o?t=1620) +- [00:31:06 Алгоритм для сравнения ](https://youtu.be/sanq2X7Re8o?t=1866) +- [00:39:36 Работа движка benchmark ](https://youtu.be/sanq2X7Re8o?t=2376) +- [00:41:37 Результаты теста](https://youtu.be/sanq2X7Re8o?t=2497) +- [00:47:33 Сравнение массива и объектов ](https://youtu.be/sanq2X7Re8o?t=2853) +- [00:54:21 Результаты теста ](https://youtu.be/sanq2X7Re8o?t=3261) +- [00:55:00 Сравнение 3 функций range ](https://youtu.be/sanq2X7Re8o?t=3300) +- [00:56:34 Результаты теста ](https://youtu.be/sanq2X7Re8o?t=3394) +- [00:58:50 Сравнение функций по способу вызова](https://youtu.be/sanq2X7Re8o?t=3530) +- [00:59:56 Результаты теста](https://youtu.be/sanq2X7Re8o?t=3596) +- [01:01:34 Сравнение indexOf и includes](https://youtu.be/sanq2X7Re8o?t=3694) +- [01:01:54 Результаты теста ](https://youtu.be/sanq2X7Re8o?t=3714) +- [01:03:23 Сравнение объявления переменной до и после цикла ](https://youtu.be/sanq2X7Re8o?t=3803) +- [01:05:02 Сравнение for keys, for (...in...) и for (...of...)](https://youtu.be/sanq2X7Re8o?t=3902) +- [01:05:34 Результаты теста ](https://youtu.be/sanq2X7Re8o?t=3934) +- [01:05:58 Сравнение шаблонных строк](https://youtu.be/sanq2X7Re8o?t=3958) +- [01:06:12 Сравнение хождения цикла по функции map в ES6](https://youtu.be/sanq2X7Re8o?t=3972) +- [01:07:18 Результаты теста ](https://youtu.be/sanq2X7Re8o?t=4038) +- [01:07:56 Сравнение repeat и arrayJoin ](https://youtu.be/sanq2X7Re8o?t=4076) +- [01:08:15 Результаты теста](https://youtu.be/sanq2X7Re8o?t=4095) +- [01:08:26 Сравнение дублирования массива ](https://youtu.be/sanq2X7Re8o?t=4106) +- [01:08:58 Результаты теста](https://youtu.be/sanq2X7Re8o?t=4138) +- [01:09:43 Сравнение копирование набора данных ](https://youtu.be/sanq2X7Re8o?t=4183) +- [01:10:26 Результаты теста ](https://youtu.be/sanq2X7Re8o?t=4226) +- [01:10:47 Сравнение итерирования с помощью forEarch и for (...of...)](https://youtu.be/sanq2X7Re8o?t=4247) +- [01:11:08 Результаты теста](https://youtu.be/sanq2X7Re8o?t=4268) +- [01:11:31 Обобщение](https://youtu.be/sanq2X7Re8o?t=4291) + +## [Слой доступа к данным, курсор, транзакция](https://youtu.be/CRcSWtWVvrA) + +## [HTTP запросы в браузере и Node.js: XMLHttpRequest, fetch](https://youtu.be/wMMki2FEYGY) + +## [Метапрограммирование с примерами на JavaScript](https://youtu.be/Ed9onRv4G5Y) + +## [Тестирование: системное и интеграционное тестирование на JavaScript](https://youtu.be/OuKu_6H_6gE) + +## [Отмена асинхронных операций, cancellable callback and Promise в JavaScript](https://youtu.be/T8fXlnqI4Ws) + +## [Асинхронная композиция функций на JavaScript](https://youtu.be/3ZCrMlMpOrM) + +## [Thenable и легковесный await в JavaScript](https://youtu.be/DXp__1VNIvI) + +## [Конкурентная асинхронная очередь на JavaScript](https://youtu.be/Lg46AH8wFvg) + +## [Паттерн Revealing Constructor - открытый конструктор](https://youtu.be/leR5sXRkuJI) + +## [Модель акторов для параллельных вычислений](https://youtu.be/xp5MVKEqxY4) + +## [Have Objects Failed? Или что не так с ООП?](https://youtu.be/4yO5OS0vPSw) + +- [1:46 Присвоенные идеи ООП](https://youtu.be/4yO5OS0vPSw?t=106) +- [11:47 Притянутые достоинства ООП](https://youtu.be/4yO5OS0vPSw?t=707) +- [22:06 Проблемы ООП](https://youtu.be/4yO5OS0vPSw?t=1326) +- [39:56 Как жить с ООП](https://youtu.be/4yO5OS0vPSw?t=2396) +- [56:44 Подходящие области для ООП](https://youtu.be/4yO5OS0vPSw?t=3404) +- [1:03:51 Неподходящие области для ООП](https://youtu.be/4yO5OS0vPSw?t=3831) +- [1:11:30 Заключение](https://youtu.be/4yO5OS0vPSw?t=4290) + +## [Интроспекция и рефлексия в JavaScript](https://youtu.be/yvW1PjUVeM0) + +## [История развития языков программирования](https://youtu.be/qqz0VSaNxuw) + +- [0:00:02 введение](https://youtu.be/qqz0VSaNxuw?t=2) +- [0:00:57 карты для механических машин](https://youtu.be/qqz0VSaNxuw?t=57) +- [0:01:50 карты для электронных машин](https://youtu.be/qqz0VSaNxuw?t=110) +- [0:03:21 машинный код](https://youtu.be/qqz0VSaNxuw?t=201) +- [0:04:05 Assembly language](https://youtu.be/qqz0VSaNxuw?t=245) +- [0:06:14 Fortran](https://youtu.be/qqz0VSaNxuw?t=374) +- [0:07:28 Basic](https://youtu.be/qqz0VSaNxuw?t=448) +- [0:09:19 LISP](https://youtu.be/qqz0VSaNxuw?t=559) +- [0:12:23 Algol 60](https://youtu.be/qqz0VSaNxuw?t=743) +- [0:13:25 C](https://youtu.be/qqz0VSaNxuw?t=805) +- [0:14:23 C++](https://youtu.be/qqz0VSaNxuw?t=863) +- [0:15:13 Ada](https://youtu.be/qqz0VSaNxuw?t=913) +- [0:16:08 dBase, FoxBase, Clipper](https://youtu.be/qqz0VSaNxuw?t=968) +- [0:19:56 Haskell](https://youtu.be/qqz0VSaNxuw?t=1196) +- [0:21:23 Python](https://youtu.be/qqz0VSaNxuw?t=1283) +- [0:23:37 Java](https://youtu.be/qqz0VSaNxuw?t=1417) +- [0:25:45 Delphi](https://youtu.be/qqz0VSaNxuw?t=1545) +- [0:28:43 SQL](https://youtu.be/qqz0VSaNxuw?t=1723) +- [0:30:43 PHP 0:41:17 стрелочку из плюсов взяли](https://youtu.be/qqz0VSaNxuw?t=1843) +- [0:33:14 C#](https://youtu.be/qqz0VSaNxuw?t=1994) +- [0:35:20 Go](https://youtu.be/qqz0VSaNxuw?t=2120) +- [0:36:17 Rust](https://youtu.be/qqz0VSaNxuw?t=2177) +- [0:37:30 TypeScript](https://youtu.be/qqz0VSaNxuw?t=2250) +- [0:39:59 Swift](https://youtu.be/qqz0VSaNxuw?t=2399) +- [0:40:19 Kotlin](https://youtu.be/qqz0VSaNxuw?t=2419) +- [0:42:20 взаимовлияние языков](https://youtu.be/qqz0VSaNxuw?t=2540) +- [0:44:23 все ли языки используются сегодня](https://youtu.be/qqz0VSaNxuw?t=2663) +- [0:49:35 производительность языков](https://youtu.be/qqz0VSaNxuw?t=2975) +- [0:54:34 опциональная аннотация типов](https://youtu.be/qqz0VSaNxuw?t=3274) +- [0:56:50 прогревание кода](https://youtu.be/qqz0VSaNxuw?t=3410) +- [0:59:24 первые операционные системы](https://youtu.be/qqz0VSaNxuw?t=3564) +- [1:00:44 ограничение по вложенности рекурсии](https://youtu.be/qqz0VSaNxuw?t=3644) +- [1:02:53 абстрактное синтаксическое дерево](https://youtu.be/qqz0VSaNxuw?t=3773) +- [1:04:52 машинный код и байт-код](https://youtu.be/qqz0VSaNxuw?t=3892) +- [1:07:26 typescript быстрее javascript?](https://youtu.be/qqz0VSaNxuw?t=4046) +- [1:11:45 goroutine на Go асинхронная?](https://youtu.be/qqz0VSaNxuw?t=4305) +- [1:12:58 асинхронная функция в javascript](https://youtu.be/qqz0VSaNxuw?t=4378) +- [1:15:23 строгая типизация влияет на скорость?](https://youtu.be/qqz0VSaNxuw?t=4523) +- [1:16:13 выведение и проверка типов в IDE](https://youtu.be/qqz0VSaNxuw?t=4573) + +## [Парадигмы программирования (обзор)](https://youtu.be/Yk1sxLVHfjs) + +- [00:20 парадигма](https://youtu.be/Yk1sxLVHfjs?t=20) +- [02:19 императивная программа: пошаговое исполнение на примере JavaScript](https://youtu.be/Yk1sxLVHfjs?t=139) +- [03:22 пошаговое исполнение характерно для неструктурных ЯП: Assembly language, Basic](https://youtu.be/Yk1sxLVHfjs?t=202) +- [05:08 структурная программа на Rust](https://youtu.be/Yk1sxLVHfjs?t=308) +- [06:21 процедурный стиль на Python](https://youtu.be/Yk1sxLVHfjs?t=381) +- [07:28 объектно-ориентированное программирование на примере JavaScript](https://youtu.be/Yk1sxLVHfjs?t=448) +- [09:32 ООП хорош не для всякой задачи -- пример с пирожком](https://youtu.be/Yk1sxLVHfjs?t=572) +- [13:28 прототипное программирование](https://youtu.be/Yk1sxLVHfjs?t=808) +- [16:51 функциональное программирование](https://youtu.be/Yk1sxLVHfjs?t=1011) +- [18:58 асинхронное программирование](https://youtu.be/Yk1sxLVHfjs?t=1138) +- [22:48 реактивное программирование](https://youtu.be/Yk1sxLVHfjs?t=1368) +- [26:04 событийно-ориентированное программирование (управляется потоками событий)](https://youtu.be/Yk1sxLVHfjs?t=1564) +- [27:03 метапрограммирование](https://youtu.be/Yk1sxLVHfjs?t=1623) +- [28:58 мультипарадигменное программирование](https://youtu.be/Yk1sxLVHfjs?t=1738) +- [30:52 параллельное программирование](https://youtu.be/Yk1sxLVHfjs?t=1852) +- [31:58 реактивность](https://youtu.be/Yk1sxLVHfjs?t=1918) +- [33:29 функции 1 класса](https://youtu.be/Yk1sxLVHfjs?t=2009) +- [34:55 геттеры и сеттеры](https://youtu.be/Yk1sxLVHfjs?t=2095) +- [37:37 смешивание стилей](https://youtu.be/Yk1sxLVHfjs?t=2257) +- [38:07 если хочется писать в чистом ООП](https://youtu.be/Yk1sxLVHfjs?t=2287) +- [39:43 объект, класс, коллекция -- разница](https://youtu.be/Yk1sxLVHfjs?t=2383) +- [47:27 где хранятся классы](https://youtu.be/Yk1sxLVHfjs?t=2847) +- [47:54 у каждой парадигмы свои шаблоны программирования](https://youtu.be/Yk1sxLVHfjs?t=2874) +- [48:52 когда используется функциональное программирование](https://youtu.be/Yk1sxLVHfjs?t=2932) + +## [Примеси, обертки, декораторы, мемоизация](https://youtu.be/2h9syXN5wO0) + +- [00:00:00 Синхронная функция-обертка ](https://youtu.be/2h9syXN5wO0?t=0) +- [00:02:55 Синхронная универсальная функция-обертка ](https://youtu.be/2h9syXN5wO0?t=175) +- [00:08:28 Асинхронная универсальная функция-обертка ](https://youtu.be/2h9syXN5wO0?t=508) +- [00:15:50 Синхронная функция-обертка, которая добавляет поведение (timeout)](https://youtu.be/2h9syXN5wO0?t=950) +- [00:22:45 Асинхронная функция-обертка, которая добавляет поведение (timeout)](https://youtu.be/2h9syXN5wO0?t=1365) +- [00:25:38 Функция-обертка, которая ограничивает вызов функции до одного вызова (once) ](https://youtu.be/2h9syXN5wO0?t=1538) +- [00:27:36 Функция-обертка, которая ограничивает вызов функции до n-го вызова (limit)](https://youtu.be/2h9syXN5wO0?t=1656) +- [00:29:50 Функция-обертка, которая отменяет вызов функции (cancel)](https://youtu.be/2h9syXN5wO0?t=1790) +- [00:32:29 Функция-обертка с методами timeout, limit, cancel](https://youtu.be/2h9syXN5wO0?t=1949) +- [00:39:03 Функция-обертка с методами timeout, limit, cancel (оптимизированная)](https://youtu.be/2h9syXN5wO0?t=2343) +- [00:42:28 Функция-обертка, которая ограничивает один вызов за 200 мс (throttle)](https://youtu.be/2h9syXN5wO0?t=2548) +- [00:45:47 Примесь поля через точку ](https://youtu.be/2h9syXN5wO0?t=2747) +- [00:51:35 Примесь поля через функцию extend](https://youtu.be/2h9syXN5wO0?t=3095) +- [00:57:35 Примесь поля через object.assign( )](https://youtu.be/2h9syXN5wO0?t=3455) +- [00:59:18 Примесь поведения ](https://youtu.be/2h9syXN5wO0?t=3558) +- [01:02:23 Примесь изменения класса](https://youtu.be/2h9syXN5wO0?t=3743) +- [01:06:50 Определение](https://youtu.be/2h9syXN5wO0?t=4010) +- [01:07:30 Реализация простой мемоизации ](https://youtu.be/2h9syXN5wO0?t=4050) +- [01:14:43 Реализация простой мемоизации с проверкой скорости ](https://youtu.be/2h9syXN5wO0?t=4483) +- [01:20:43 Удаление накопленного кэша ](https://youtu.be/2h9syXN5wO0?t=4843) +- [01:25:35 Асинхронная мемоизация ](https://youtu.be/2h9syXN5wO0?t=5135) +- [01:31:10 Преобразование аргументов и ключей в hash-функцию](https://youtu.be/2h9syXN5wO0?t=5470) +- [01:33:32 Реализация сложной мемоизации](https://youtu.be/2h9syXN5wO0?t=5612) + +## [Ответы на вопросы по курсу "Основы программирования" 2019-2020](https://youtu.be/TY6nDW7aYys) + +## [Антипаттерны процедурного программирования](https://youtu.be/cTv7V22mkwE) + +## [Семинар: выполнение лабораторных работ на JavaSript по курсу "Основы программирования"](https://youtu.be/ikUOyFPzdJw) + +## [Массивы в JavaScript (методы Array)](https://youtu.be/D1kfYBkX9FE) + +- [00:00 Конструкция массива](https://youtu.be/D1kfYBkX9FE?t=0) +- [09:58 Метод concat](https://youtu.be/D1kfYBkX9FE?t=598) +- [11:00 Методы every и some ](https://youtu.be/D1kfYBkX9FE?t=660) +- [13:00 Метод filter ](https://youtu.be/D1kfYBkX9FE?t=780) +- [13:29 Методы find и findIndex](https://youtu.be/D1kfYBkX9FE?t=809) +- [14:30 Метод flat ](https://youtu.be/D1kfYBkX9FE?t=870) +- [17:08 Метод includes ](https://youtu.be/D1kfYBkX9FE?t=1028) +- [17:32 Метод indexOf и lastIndexOf](https://youtu.be/D1kfYBkX9FE?t=1052) +- [18:35 Метод join](https://youtu.be/D1kfYBkX9FE?t=1115) +- [18:58 Метод reverse](https://youtu.be/D1kfYBkX9FE?t=1138) +- [19:29 Метод slice](https://youtu.be/D1kfYBkX9FE?t=1169) +- [21:49 Метод splice](https://youtu.be/D1kfYBkX9FE?t=1309) +- [23:27 Методы reduce и reduceRight](https://youtu.be/D1kfYBkX9FE?t=1407) + +## [Code Review: как это и зачем](https://youtu.be/EKL6NiIQ6ZU) + +## [Семинар: Code Review, ответы на вопросы](https://youtu.be/AgH4OAKbmkM) + +## [Мономорфный и полиморфный код, инлайн-кэш, скрытые классы в JavaScript](https://youtu.be/9JUY3prnCQ4) + +## [Ассоциация, агрегация и композиция объектов в JavaScript](https://youtu.be/tOIcBrzezK0) + +## [Рефакторинг: причины, цели, техники и процесс](https://youtu.be/z73wmpdweQ4) + +## [Принцип подстановки Барбары Лисков](https://youtu.be/RbhYxygxroc) + +## [Композиция функций (pipe, compose) в JavaScript](https://youtu.be/xS9FicVrOTI) + +## [Примеси в JavaScript: mixin, extend, Object.assign, class λ-mixin](https://youtu.be/NZMrJ2adEyY) + +## [Прототипное программирование и прототипное наследование в JavaScript](https://youtu.be/SzaXTW2qcJE) + +## [Мемоизация функций: memoize в JavaScript](https://youtu.be/H6S8QJo2Qxg) + +## [Функции-обертки: Wrappers в JavaScript](https://youtu.be/En7pWi2fSzs) + +## [Новое в JavaScript: ES.Next, ECMAScript 2020, ES11, ES10, ES9, ES8, ES7, ES6, ES2020, ES2019](https://youtu.be/fUjHLj8bq_Y) + +- [00:00 ECMA Script versions](https://youtu.be/fUjHLj8bq_Y?t=0) +- [09:40 Array.proptotype.includes ](https://youtu.be/fUjHLj8bq_Y?t=580) +- [10:55 Array.proptotype.flat ](https://youtu.be/fUjHLj8bq_Y?t=655) +- [11:36 Array.proptotype.flatMap](https://youtu.be/fUjHLj8bq_Y?t=696) +- [12:20 Array.proptotype.sort](https://youtu.be/fUjHLj8bq_Y?t=740) +- [14:24 Object.values ](https://youtu.be/fUjHLj8bq_Y?t=864) +- [15:06 Object.keys ](https://youtu.be/fUjHLj8bq_Y?t=906) +- [15:15 Object.entries ](https://youtu.be/fUjHLj8bq_Y?t=915) +- [15:49 Object.fromEntries ](https://youtu.be/fUjHLj8bq_Y?t=949) +- [16:36 String.proptotype.padStart / String.proptotype.padEnd ](https://youtu.be/fUjHLj8bq_Y?t=996) +- [17:02 String.proptotype.trimStart / String.proptotype.trimEnd](https://youtu.be/fUjHLj8bq_Y?t=1022) +- [17:18 Operator rest ](https://youtu.be/fUjHLj8bq_Y?t=1038) +- [19:38 Operator spread](https://youtu.be/fUjHLj8bq_Y?t=1178) +- [21:34 Operator exponentiation x ** y](https://youtu.be/fUjHLj8bq_Y?t=1294) +- [22:35 Operator optional chaining ?.](https://youtu.be/fUjHLj8bq_Y?t=1355) +- [24:22 Asynchronous function: async / await ](https://youtu.be/fUjHLj8bq_Y?t=1462) +- [26:34 Trailing Commas ](https://youtu.be/fUjHLj8bq_Y?t=1594) +- [28:00 Asynchronous iterable contract: for-await](https://youtu.be/fUjHLj8bq_Y?t=1680) +- [29:51 Try...catch ](https://youtu.be/fUjHLj8bq_Y?t=1791) +- [30:21 Function.prototype.toString ](https://youtu.be/fUjHLj8bq_Y?t=1821) +- [30:58 Symbol.prototype.description ](https://youtu.be/fUjHLj8bq_Y?t=1858) +- [32:11 Promise.finaly ](https://youtu.be/fUjHLj8bq_Y?t=1931) +- [33:22 Promise.allSettled ](https://youtu.be/fUjHLj8bq_Y?t=2002) +- [36:18 More features](https://youtu.be/fUjHLj8bq_Y?t=2178) + +## [Вступительная лекция по инженерии программного обеспечения (КПИ 1 курс) 2021-09-01](https://youtu.be/vWi6KyG078g) + +## [Автоматное программирование c примерами на JavaScript](https://youtu.be/mxz7_zcip0c) + +## [Контрактное программирование с примерами на JavaScript и Node.js](https://youtu.be/K5_kSUvbGEQ) + +## [JavaScript - Практические задачи #1: Пример исправления, лайвкодинг, оптимизация и рефакторинг](https://youtu.be/CRmjViLEE9E) + +## [JavaScript и Node.js: Добавь в Github личную карту знаний](https://youtu.be/gDUGZsw2N2g) diff --git a/Courses/Fundamentals.md b/Courses/Fundamentals.md index 2d05836..eb76e19 100644 --- a/Courses/Fundamentals.md +++ b/Courses/Fundamentals.md @@ -180,978 +180,3 @@ - Интроспекция: https://github.com/HowProgrammingWorks/Introspection - Рефлекция: https://github.com/HowProgrammingWorks/Reflect - [Почему хорошее ИТ-образование невостребовано рыночком](https://youtu.be/nvIJE6xMpiI) - -# Основы программирования (таймкоды) - -## [Карта специальности инженер-программист](https://youtu.be/SE5aXH-yf0I) - -- [00:00:00 Введение](https://youtu.be/SE5aXH-yf0I?t=0) -- [00:02:21 Что такое программирование? ](https://youtu.be/SE5aXH-yf0I?t=141) -- [00:05:55 Связанные понятия ](https://youtu.be/SE5aXH-yf0I?t=355) -- [00:06:43 Основы программной инженерии ](https://youtu.be/SE5aXH-yf0I?t=403) -- [00:11:42 Предсказуемые вычисления ](https://youtu.be/SE5aXH-yf0I?t=702) -- [00:14:36 Моделирование](https://youtu.be/SE5aXH-yf0I?t=876) -- [00:14:52 Классификация моделей ](https://youtu.be/SE5aXH-yf0I?t=892) -- [00:17:33 Схемы моделирования ](https://youtu.be/SE5aXH-yf0I?t=1053) -- [00:22:23 Парадигмы программирования ](https://youtu.be/SE5aXH-yf0I?t=1343) -- [00:23:16 Императивное и функциональное программирование ](https://youtu.be/SE5aXH-yf0I?t=1396) -- [00:28:25 Неструктурное программирование ](https://youtu.be/SE5aXH-yf0I?t=1705) -- [00:30:01 Структурное программирование ](https://youtu.be/SE5aXH-yf0I?t=1801) -- [00:30:46 Процедурное программирование ](https://youtu.be/SE5aXH-yf0I?t=1846) -- [00:31:18 Объектно-ориетированное программирование ](https://youtu.be/SE5aXH-yf0I?t=1878) -- [00:31:48 Прототипно-ориетированное программирование ](https://youtu.be/SE5aXH-yf0I?t=1908) -- [00:32:14 Функциональное программирование ](https://youtu.be/SE5aXH-yf0I?t=1934) -- [00:32:48 Узконаправленное программирование](https://youtu.be/SE5aXH-yf0I?t=1968) -- [00:33:44 Техники и технологии](https://youtu.be/SE5aXH-yf0I?t=2024) -- [00:36:55 Реактивное программирование и Событийно-ориентированное](https://youtu.be/SE5aXH-yf0I?t=2215) -- [00:38:16 Функционально-реактивное программирование ](https://youtu.be/SE5aXH-yf0I?t=2296) -- [00:38:39 Модель акторов](https://youtu.be/SE5aXH-yf0I?t=2319) -- [00:39:49 Метапрограммирование ](https://youtu.be/SE5aXH-yf0I?t=2389) -- [00:43:09 Системное и прикладное программирование](https://youtu.be/SE5aXH-yf0I?t=2589) -- [00:44:25 Задачи программной инженерии ](https://youtu.be/SE5aXH-yf0I?t=2665) -- [00:50:46 Как преодолеть сложность ](https://youtu.be/SE5aXH-yf0I?t=3046) -- [00:52:16 Данные и логика ](https://youtu.be/SE5aXH-yf0I?t=3136) -- [00:57:49 Разработка программного обеспечения ](https://youtu.be/SE5aXH-yf0I?t=3469) -- [01:04:50 Подход к разработке ](https://youtu.be/SE5aXH-yf0I?t=3890) -- [01:06:04 Гибридная разработка ](https://youtu.be/SE5aXH-yf0I?t=3964) -- [01:07:10 Принцип NIH ](https://youtu.be/SE5aXH-yf0I?t=4030) -- [01:09:12 Классификация приложений по месту запуска](https://youtu.be/SE5aXH-yf0I?t=4152) -- [01:12:17 Схемы и примеры](https://youtu.be/SE5aXH-yf0I?t=4337) -## [Введение в программирование (1 часть)](https://youtu.be/5Gt61EX6HZ4) - -- [0:00:02 лекция о базовых понятиях для начинающих](https://youtu.be/5Gt61EX6HZ4?t=2) -- [0:01:43 что-то уже знаете / слышали](https://youtu.be/5Gt61EX6HZ4?t=103) -- [0:04:50 терминология важна](https://youtu.be/5Gt61EX6HZ4?t=290) -- [0:05:45 инструкция или оператор / Statement](https://youtu.be/5Gt61EX6HZ4?t=345) -- [0:07:23 синтаксис / Syntax](https://youtu.be/5Gt61EX6HZ4?t=443) -- [0:09:21 почти все группы операторов / Statements](https://youtu.be/5Gt61EX6HZ4?t=561) -- [0:13:27 операция 0:14:09 команда 0:15:03 директива](https://youtu.be/5Gt61EX6HZ4?t=807) -- [0:16:59 выражение / Expression](https://youtu.be/5Gt61EX6HZ4?t=1019) -- [0:20:53 значение / Value](https://youtu.be/5Gt61EX6HZ4?t=1253) -- [0:22:28 тип / Type](https://youtu.be/5Gt61EX6HZ4?t=1348) -- [0:27:22 литерал / Literal](https://youtu.be/5Gt61EX6HZ4?t=1642) -- [0:28:46 скаляр / Scalar, Primitive, Atomic value](https://youtu.be/5Gt61EX6HZ4?t=1726) -- [0:31:02 ссылка / Reference](https://youtu.be/5Gt61EX6HZ4?t=1862) -- [0:34:05 идентификатор / Identifier](https://youtu.be/5Gt61EX6HZ4?t=2045) -- [0:37:31 переменная / Variable](https://youtu.be/5Gt61EX6HZ4?t=2251) -- [0:40:08 присвоение / Assignment](https://youtu.be/5Gt61EX6HZ4?t=2408) -- [0:41:29 константа / Constant](https://youtu.be/5Gt61EX6HZ4?t=2489) -- [0:43:16 структурные типы / Composed types](https://youtu.be/5Gt61EX6HZ4?t=2596) -- [0:44:03 флаг / Flag](https://www.youtube.com/watch?v=5Gt61EX6HZ4&t=2643s) -- [0:45:09 перечисляемый тип](https://youtu.be/5Gt61EX6HZ4?t=2643) -- [0:46:02 алгоритм / Algorithm](https://youtu.be/5Gt61EX6HZ4?t=2762) -- [0:47:40 программа / Program](https://youtu.be/5Gt61EX6HZ4?t=2860) -- [0:49:01 инженерия / Engineering](https://youtu.be/5Gt61EX6HZ4?t=2941) -- [0:50:42 инженерия программного обеспечения / Software engineering](https://youtu.be/5Gt61EX6HZ4?t=3042) -- [0:52:03 программирование / Programming](https://youtu.be/5Gt61EX6HZ4?t=3123) -- [0:53:31 кодирование / Coding](https://youtu.be/5Gt61EX6HZ4?t=3211) -- [0:54:15 разработка программного обеспечения / Software development](https://youtu.be/5Gt61EX6HZ4?t=3255) -- [0:58:49 процедура, функция, подпрограмма, метод: различия](https://youtu.be/5Gt61EX6HZ4?t=3529) -- [0:59:15 блок кода / Block of code](https://youtu.be/5Gt61EX6HZ4?t=3555) -- [1:01:58 процедура или подпрограмма / Procedure or Subroutine](https://youtu.be/5Gt61EX6HZ4?t=3718) -- [1:05:18 функция / Function](https://youtu.be/5Gt61EX6HZ4?t=3918) -- [1:08:06 сигнатура функции / Function signature](https://youtu.be/5Gt61EX6HZ4?t=4086) -- [1:09:16 метод / Method](https://youtu.be/5Gt61EX6HZ4?t=4156) -- [1:10:37 цикл / Loop](https://www.youtube.com/watch?v=5Gt61EX6HZ4&t=4237s) -- [1:10:52 итерирование](https://www.youtube.com/watch?v=5Gt61EX6HZ4&t=4252s) -- [1:11:40 функциональное программирование](https://youtu.be/5Gt61EX6HZ4?t=4237) -- [1:13:05 условие / Conditional statements / ветвление](https://youtu.be/5Gt61EX6HZ4?t=4385) -- [1:14:54 парадигма программирования / Programming paradigm](https://youtu.be/5Gt61EX6HZ4?t=4494) -## [Семинар: Обсуждение плана и материалов курса «Основы программирования»](https://youtu.be/bQMTbRWrteU) - -- [0:15 - вопрос по операционным системам](https://youtu.be/bQMTbRWrteU?t=15) -- [3:35 - какой язык посоветуете из функционального программирования](https://youtu.be/bQMTbRWrteU?t=215) -- [4:40 - время нужное для прохождения курса](https://youtu.be/bQMTbRWrteU?t=280) -- [7:25 - учебники по JS и туториал](https://youtu.be/bQMTbRWrteU?t=445) -- [11:00 - экзамены, сертификат для студентов из других стран](https://youtu.be/bQMTbRWrteU?t=660) -- [12:45 - как будет проходить экзамен](https://youtu.be/bQMTbRWrteU?t=765) -- [14:55 - сколько времени нужно уделять в неделю или в день](https://youtu.be/bQMTbRWrteU?t=895) -- [17:35 - куда задавать вопросы](https://youtu.be/bQMTbRWrteU?t=1055) -- [18:56 - структура курса](https://youtu.be/bQMTbRWrteU?t=1136) -- [22:30 - контроль решения задач](https://youtu.be/bQMTbRWrteU?t=1350) -- [23:35 - сферы применения Node.js](https://youtu.be/bQMTbRWrteU?t=1415) -- [24:22 - возможно ли посещать курс лично](https://youtu.be/bQMTbRWrteU?t=1462) -- [26:23 - актуальность изучения С++ и Rust](https://youtu.be/bQMTbRWrteU?t=1583) -- [27:48 - стану ли я программистом пройдя курс](https://youtu.be/bQMTbRWrteU?t=1668) -- [28:10 - какой стандарт JS используется в курсе](https://youtu.be/bQMTbRWrteU?t=1690) -- [28:35 - откуда начинать курс](https://youtu.be/bQMTbRWrteU?t=1715) -- [29:20 - как посещать старшую группу](https://youtu.be/bQMTbRWrteU?t=1760) -- [31:45 - об основах вёрстки и популярных фреймворках](https://youtu.be/bQMTbRWrteU?t=1905) -- [33:03 - обязательно ли использовать фреймворки](https://youtu.be/bQMTbRWrteU?t=1983) -- [36:15 - почему столь немногим удается сдать экзамен](https://youtu.be/bQMTbRWrteU?t=2175) -- [36:50 - проверка задач для допуска к экзамену и их уровень сложности](https://youtu.be/bQMTbRWrteU?t=2210) -- [37:55 - теоретические вопросы на экзамене, пример](https://youtu.be/bQMTbRWrteU?t=2275) -- [39:35 - знание математики](https://youtu.be/bQMTbRWrteU?t=2375) -- [43:10 - сложные вопросы CS в курсе](https://youtu.be/bQMTbRWrteU?t=2590) -- [46:00 - как происходит проверка задач для допуска к экзамену](https://youtu.be/bQMTbRWrteU?t=2760) -## [Настройка среды: Node.js, npm, git, eslint](https://youtu.be/hSyA7tcNaCE) - -## [Базовый синтаксис JavaScript](https://youtu.be/xJn3k1f4BiM) - -- [00:00:00 Введение](https://youtu.be/xJn3k1f4BiM?t=0) -- [00:03:02 Идентификаторы (identifiers: const, let, arguments, object property)](https://youtu.be/xJn3k1f4BiM?t=182) -- [00:14:41 Циклы (loops)](https://youtu.be/xJn3k1f4BiM?t=881) -- [00:22:10 Функции (functions)](https://youtu.be/xJn3k1f4BiM?t=1330) -- [00:30:35 Объекты (objects) ](https://youtu.be/xJn3k1f4BiM?t=1835) -- [00:33:34 Итерирование по массиву ( for ( ... of ... { } )](https://youtu.be/xJn3k1f4BiM?t=2014) -- [00:39:01 Итерирование по объекту ( for ( ... in ... { } )](https://youtu.be/xJn3k1f4BiM?t=2341) -- [00:42:28 Синтаксис простого кода](https://youtu.be/xJn3k1f4BiM?t=2548) -- [00:55:21 Синтаксис функции](https://youtu.be/xJn3k1f4BiM?t=3321) -- [01:05:38 Синтаксис класса](https://youtu.be/xJn3k1f4BiM?t=3938) -- [01:09:10 Синтаксис расширения класса с помощью функции](https://youtu.be/xJn3k1f4BiM?t=4150) -- [01:14:59 Идентификаторы в виде символов unicode](https://youtu.be/xJn3k1f4BiM?t=4499) -- [01:17:15 Синтаксис комментариев](https://youtu.be/xJn3k1f4BiM?t=4635) -- [01:18:13 Способы объявления переменных ](https://youtu.be/xJn3k1f4BiM?t=4693) -- [01:18:24 Скалярные типы переменных (string, number, boolean)](https://youtu.be/xJn3k1f4BiM?t=4704) -- [01:19:12 Структурные/ссылочные типы переменных (function, array, object)](https://youtu.be/xJn3k1f4BiM?t=4752) -## [Базовый синтаксис JavaScript, продолжение](https://youtu.be/qa-XleqA0JU) - -- [00:01:34 Number (integer / float)](https://youtu.be/qa-XleqA0JU?t=94) -- [00:02:11 String ](https://youtu.be/qa-XleqA0JU?t=131) -- [00:02:15 Boolean](https://youtu.be/qa-XleqA0JU?t=135) -- [00:02:16 Object](https://youtu.be/qa-XleqA0JU?t=136) -- [00:03:08 Array](https://youtu.be/qa-XleqA0JU?t=188) -- [00:04:20 Метод array.push](https://youtu.be/qa-XleqA0JU?t=260) -- [00:04:31 Метод array.unshift](https://youtu.be/qa-XleqA0JU?t=271) -- [00:04:50 Метод array.shift](https://youtu.be/qa-XleqA0JU?t=290) -- [00:05:17 Метод array.pop](https://youtu.be/qa-XleqA0JU?t=317) -- [00:05:55 Оператор typeof](https://youtu.be/qa-XleqA0JU?t=355) -- [00:08:33 Метод Array.isArray](https://youtu.be/qa-XleqA0JU?t=513) -- [00:10:06 Оператор instanceof](https://youtu.be/qa-XleqA0JU?t=606) -- [00:10:48 Undefined](https://youtu.be/qa-XleqA0JU?t=648) -- [00:11:12 Null](https://youtu.be/qa-XleqA0JU?t=672) -- [00:11:55 NaN](https://youtu.be/qa-XleqA0JU?t=715) -- [00:14:18 Infinity](https://youtu.be/qa-XleqA0JU?t=858) -- [00:14:48 Тернарный оператор](https://youtu.be/qa-XleqA0JU?t=888) -- [00:16:15 Функция paseInt](https://youtu.be/qa-XleqA0JU?t=975) -- [00:24:23 Функция paseFloat](https://youtu.be/qa-XleqA0JU?t=1463) -- [00:27:15 Удаление переменных ](https://youtu.be/qa-XleqA0JU?t=1635) -- [00:33:25 Побитовые операторы (Bitwise operators)](https://youtu.be/qa-XleqA0JU?t=2005) -- [00:34:38 Побитовые операции](https://youtu.be/qa-XleqA0JU?t=2078) -- [00:44:30 BigInt](https://youtu.be/qa-XleqA0JU?t=2670) -- [00:56:30 Операторы сравнения ](https://youtu.be/qa-XleqA0JU?t=3390) -- [01:01:20 Очередность операторов (Operator precedence)](https://youtu.be/qa-XleqA0JU?t=3680) -- [01:13:25 Оператор Switch](https://youtu.be/qa-XleqA0JU?t=4405) - -## [Семинар: Базовый синтаксис языка JavaScript](https://youtu.be/PGqjTXQe_qw) - -## [Семинар: автоматическая проверка лабораторных работ](https://youtu.be/M4KpG0LEAyA) - -## [Введение в программирование (2 часть)](https://youtu.be/PzlLXQ3RaDs) - -- [0:00:01 введение](https://youtu.be/PzlLXQ3RaDs?t=1) -- [0:01:45 процедура или подпрограмма / Procedure or Subroutine](https://youtu.be/PzlLXQ3RaDs?t=105) -- [0:06:05 функция / Function](https://youtu.be/PzlLXQ3RaDs?t=365) -- [0:09:27 стек вызовов / Call Stack 0:18:26 Mixed Solution 0:21:42 принцип LIFO](https://youtu.be/PzlLXQ3RaDs?t=567) -- [0:22:09 куча и стек / Heap and Stack](https://youtu.be/PzlLXQ3RaDs?t=1329) -- [0:25:55 рекурсия / Recursion](https://youtu.be/PzlLXQ3RaDs?t=1555) -- [0:27:15 коллекция / Collection](https://youtu.be/PzlLXQ3RaDs?t=1635) -- [0:27:51 массив / Array](https://youtu.be/PzlLXQ3RaDs?t=1671) -- [0:28:18 отладка / Debug](https://youtu.be/PzlLXQ3RaDs?t=1698) -- [0:28:23 компонент / Component](https://youtu.be/PzlLXQ3RaDs?t=1703) -- [0:29:37 модуль / Module 0:30:16 модульность / Modularity 0:33:52 ограничения 0:31:50 заглушки / Stubs](https://youtu.be/PzlLXQ3RaDs?t=1777) -- [0:36:19 библиотека / Library](https://youtu.be/PzlLXQ3RaDs?t=2179) -- [0:37:13 импорт и экспорт идентификаторов / Import and Export Identifiers 0:41:30 новый синтаксис](https://youtu.be/PzlLXQ3RaDs?t=2233) -- [0:45:22 объект или экземпляр / Object or Instance 0:47:08 2 способа задания Instance](https://youtu.be/PzlLXQ3RaDs?t=2722) -- [0:47:47 класс / Class 0:49:16 примеры](https://youtu.be/PzlLXQ3RaDs?t=2867) -- [0:51:30 инстанциирование / Instantiation 0:52:59 примеры](https://youtu.be/PzlLXQ3RaDs?t=3090) -- [0:54:59 область видимости / Scope](https://youtu.be/PzlLXQ3RaDs?t=3299) -- [0:57:05 лексический(ое) контекст (окружение) / Lexical environment](https://youtu.be/PzlLXQ3RaDs?t=3425) -- [0:58:19 объектный контекст функции / Object context: this](https://youtu.be/PzlLXQ3RaDs?t=3499) -- [1:00:33 глобальный контекст / Global context](https://youtu.be/PzlLXQ3RaDs?t=3633) -- [1:04:35 монады](https://youtu.be/PzlLXQ3RaDs?t=3875) -- [1:09:00 парадигмы программирования](https://youtu.be/PzlLXQ3RaDs?t=4140) -- [1:12:05 лямбда-функция](https://youtu.be/PzlLXQ3RaDs?t=4325) -- [1:12:28 фрейм](https://youtu.be/PzlLXQ3RaDs?t=4348) -- [1:14:46 строка в свойстве объекта](https://youtu.be/PzlLXQ3RaDs?t=4486) -- [1:16:21 класс и объект](https://youtu.be/PzlLXQ3RaDs?t=4581) -- [1:16:47 класс и прототип](https://www.youtube.com/watch?v=PzlLXQ3RaDs&t=4607) -- [1:17:37 аллокирование значений в куче и стеке](https://youtu.be/PzlLXQ3RaDs?t=4607) -- [1:18:43 сборщик мусора](https://youtu.be/PzlLXQ3RaDs?t=4723) -- [1:20:29 терминология на английском и русском](https://youtu.be/PzlLXQ3RaDs?t=4829) - -## [Функции, лямбды (стрелочные функции), контексты, замыкания в JavaScript](https://youtu.be/pn5myCmpV2U) - -- [00:00:00 Введение ](https://youtu.be/pn5myCmpV2U?t=0) -- [00:11:22 Функция объявление (Declaration)](https://youtu.be/pn5myCmpV2U?t=682) -- [00:12:46 Функция выражение (Expression)](https://youtu.be/pn5myCmpV2U?t=766) -- [00:16:07 Лямбда-выражение (Lambda expression) или функция-стрелка (Arrow function) ](https://youtu.be/pn5myCmpV2U?t=967) -- [00:16:43 Лямбда-функция (Lambda function) ](https://youtu.be/pn5myCmpV2U?t=1003) -- [00:18:45 Область видимости (Scope)](https://youtu.be/pn5myCmpV2U?t=1125) -- [00:25:00 Функции, как абстракции](https://youtu.be/pn5myCmpV2U?t=1500) -- [00:26:43 Методы функции (name, length, toString( ) )](https://youtu.be/pn5myCmpV2U?t=1603) -- [00:31:26 Значения по умолчанию у функции ](https://youtu.be/pn5myCmpV2U?t=1886) -- [00:36:46 Rest-оператор (...args)](https://youtu.be/pn5myCmpV2U?t=2206) -- [00:41:49 Способ определения функции, через new Function](https://youtu.be/pn5myCmpV2U?t=2509) -- [00:44:46 Функции внутри объекта](https://youtu.be/pn5myCmpV2U?t=2686) -- [00:50:42 Обращение к полям объекта из привязанной функции, через this](https://youtu.be/pn5myCmpV2U?t=3042) -- [00:55:24 История синтаксиса создания контекстов, через самовызывающиеся функции ( IIFE)](https://youtu.be/pn5myCmpV2U?t=3324) -- [00:58:30 Методы функции, наследуемой от объекта (call, apply)](https://youtu.be/pn5myCmpV2U?t=3510) -- [01:00:53 Комментирование функций](https://youtu.be/pn5myCmpV2U?t=3653) -- [01:01:27 Задание декомпозиции функции](https://youtu.be/pn5myCmpV2U?t=3687) -- [01:04:24 Замыкание: context ](https://youtu.be/pn5myCmpV2U?t=3864) -- [01:08:41 Замыкание: chainning ](https://youtu.be/pn5myCmpV2U?t=4121) -- [01:11:55 Замыкание: summator ](https://youtu.be/pn5myCmpV2U?t=4315) -- [01:14:16 Замыкание: recursion](https://youtu.be/pn5myCmpV2U?t=4456) - -## [Массивы, объекты, классы, прототипы в JavaScript](https://youtu.be/VBMGnAPfmsY) - -- [00:00:00 Объекты](https://youtu.be/VBMGnAPfmsY?t=0) -- [00:11:01 Массивы](https://youtu.be/VBMGnAPfmsY?t=661) -- [00:13:29 Cериализация объекта ](https://youtu.be/VBMGnAPfmsY?t=809) -- [00:15:46 Cериализация массива ](https://youtu.be/VBMGnAPfmsY?t=946) -- [00:19:20 Методы array](https://youtu.be/VBMGnAPfmsY?t=1160) -- [00:20:22 Циклы ](https://youtu.be/VBMGnAPfmsY?t=1222) -- [00:21:16 Цикл for-in-object ](https://youtu.be/VBMGnAPfmsY?t=1276) -- [00:22:02 Цикл for-in-array](https://youtu.be/VBMGnAPfmsY?t=1322) -- [00:24:10 Цикл for-of-array ](https://youtu.be/VBMGnAPfmsY?t=1450) -- [00:25:05 Метод array.forEach](https://youtu.be/VBMGnAPfmsY?t=1505) -- [00:29:10 Метод array.map](https://youtu.be/VBMGnAPfmsY?t=1750) -- [00:33:59 Итерация матрицы, через for-of-array](https://youtu.be/VBMGnAPfmsY?t=2039) -- [00:38:38 Итерация матрицы, через array.forEach](https://youtu.be/VBMGnAPfmsY?t=2318) -- [00:39:22 Итерация матрицы, через for-in-array](https://youtu.be/VBMGnAPfmsY?t=2362) -- [00:39:45 Метод array.reduce](https://youtu.be/VBMGnAPfmsY?t=2385) -- [00:44:39 Методы объекта](https://youtu.be/VBMGnAPfmsY?t=2679) -- [00:46:38 Прототип](https://youtu.be/VBMGnAPfmsY?t=2798) -- [00:53:32 Класс ](https://youtu.be/VBMGnAPfmsY?t=3212) -- [00:56:04 Связывание методов с объектом, при помощи замыкания](https://youtu.be/VBMGnAPfmsY?t=3364) -- [01:00:08 Связывание методов с объектом, при помощи метода bind](https://youtu.be/VBMGnAPfmsY?t=3608) -- [01:03:19 Пример абстракции, при помощи замыкания](https://youtu.be/VBMGnAPfmsY?t=3799) -- [01:11:05 Пример абстракции, при помощи прототипа](https://youtu.be/VBMGnAPfmsY?t=4265) -- [01:12:30 Пример абстракции, при помощи класса](https://youtu.be/VBMGnAPfmsY?t=4350) -- [01:13:08 Наследование через синтаксис прототипов](https://youtu.be/VBMGnAPfmsY?t=4388) -- [01:18:50 Наследование через синтаксис классов ](https://youtu.be/VBMGnAPfmsY?t=4730) -- [01:21:05 Связывание объекта с методом класса при помощи прототипа ](https://youtu.be/VBMGnAPfmsY?t=4865) -- [01:23:52 Присваивание методов внутри конструктора, при прототипном подходе ](https://youtu.be/VBMGnAPfmsY?t=5032) -- [01:25:10 Get/Set класса ](https://youtu.be/VBMGnAPfmsY?t=5110) -- [01:27:00 Пример](https://youtu.be/VBMGnAPfmsY?t=5220) - -## [Языки программирования: обзор, сравнение, выбор](https://youtu.be/enHA1CRkJe0) - -- [0:00:02 обзорная лекция о классификации ЯП](https://youtu.be/enHA1CRkJe0?t=2) -- [0:00:53 типизация: статическая / динамическая](https://youtu.be/enHA1CRkJe0?t=53) -- [0:07:37 сильная / слабая || строгая / нестрогая](https://youtu.be/enHA1CRkJe0?t=457) -- [0:10:08 явная / неявная](https://youtu.be/enHA1CRkJe0?t=608) -- [0:13:58 утиная 0:18:26 протоколы](https://youtu.be/enHA1CRkJe0?t=838) -- [0:20:36 ниже и ближе к машине / выше и ближе к человеку](https://youtu.be/enHA1CRkJe0?t=1236) -- [0:32:20 сравнение asm и машинного кода](https://youtu.be/enHA1CRkJe0?t=1940) -- [0:39:38 сравнение asm и js](https://youtu.be/enHA1CRkJe0?t=2378) -- [0:42:47 функции и типы 1 класса](https://youtu.be/enHA1CRkJe0?t=2567) -- [0:44:39 распространённость](https://youtu.be/enHA1CRkJe0?t=2679) -- [0:45:47 скорость, читаемость](https://youtu.be/enHA1CRkJe0?t=2747) -- [0:48:21 владение правами / влияние на ЯП](https://youtu.be/enHA1CRkJe0?t=2901) -- [0:51:13 специализация](https://youtu.be/enHA1CRkJe0?t=3073) -- [0:53:13 наследственность](https://youtu.be/enHA1CRkJe0?t=3193) -- [0:56:33 инструментарий](https://youtu.be/enHA1CRkJe0?t=3393) -- [0:58:20 поддержка](https://youtu.be/enHA1CRkJe0?t=3500) -- [1:02:58 скорость развития](https://youtu.be/enHA1CRkJe0?t=3778) -- [1:04:12 системное программирование](https://youtu.be/enHA1CRkJe0?t=3852) -- [1:05:51 оконные приложения](https://youtu.be/enHA1CRkJe0?t=3951) -- [1:06:27 встраиваемые системы и автоматизация](https://youtu.be/enHA1CRkJe0?t=3987) -- [1:07:02 базы данных](https://youtu.be/enHA1CRkJe0?t=4022) -- [1:07:45 сетевые сервера](https://youtu.be/enHA1CRkJe0?t=4065) -- [1:09:03 вычисления](https://youtu.be/enHA1CRkJe0?t=4143) -- [1:10:45 ИИ](https://youtu.be/enHA1CRkJe0?t=4245) -- [1:11:52 параллельные вычисления, веб](https://youtu.be/enHA1CRkJe0?t=4312) -- [1:12:38 скрипты](https://youtu.be/enHA1CRkJe0?t=4358) -- [1:13:36 тестирование](https://youtu.be/enHA1CRkJe0?t=4416) -- [1:14:20 мобильные платформы](https://youtu.be/enHA1CRkJe0?t=4460) -- [1:16:10 игры, графика](https://youtu.be/enHA1CRkJe0?t=4570) - -## [JavaScript: Ответы на вопросы](https://youtu.be/wqkQ6eslyzY) - -- [0:00:02 введение](https://youtu.be/wqkQ6eslyzY?t=2) -- [0:00:41 разделение ЯП по модели работы с памятью](https://youtu.be/wqkQ6eslyzY?t=41) -- [0:08:32 почему надо использовать const, реже let и избегать var](https://youtu.be/wqkQ6eslyzY?t=512) -- [0:17:43 + и - утиной типизации](https://youtu.be/wqkQ6eslyzY?t=1063) -- [0:30:03 примеры ЯП с разной типизацией](https://youtu.be/wqkQ6eslyzY?t=1803) -- [0:32:29 чем выше ЯП, тем он медленнее?](https://youtu.be/wqkQ6eslyzY?t=1949) -- [0:34:15 почему бы js не компилировать напрямую в машинный код](https://youtu.be/wqkQ6eslyzY?t=2055) -- [0:35:37 скорость и производительность ЯП](https://youtu.be/wqkQ6eslyzY?t=2137) -- [0:40:47 константы и ключевое слово const](https://youtu.be/wqkQ6eslyzY?t=2447) -- [0:45:48 зачем учить именно js](https://youtu.be/wqkQ6eslyzY?t=2748) -- [0:59:28 typescript - js с типами? Развитость инфраструктуры ts](https://youtu.be/wqkQ6eslyzY?t=3568) - -## [Частичное применение и каррирование в JavaScript](https://youtu.be/ND8KQ5xjk7o) - -- [00:00:00 Замыкание](https://youtu.be/ND8KQ5xjk7o?t=0) -- [00:04:54 Лямбда- функция](https://youtu.be/ND8KQ5xjk7o?t=294) -- [00:06:06 Метод bind](https://youtu.be/ND8KQ5xjk7o?t=366) -- [00:08:30 Абстрагированный пример функции](https://youtu.be/ND8KQ5xjk7o?t=510) -- [00:13:42 Абстрагированный пример функции (расширение)](https://youtu.be/ND8KQ5xjk7o?t=822) -- [00:15:47 Неправильная реализация каррирования](https://youtu.be/ND8KQ5xjk7o?t=947) -- [00:22:22 Правильная реализация каррирования](https://youtu.be/ND8KQ5xjk7o?t=1342) -- [00:28:54 Правильная реализация каррирования (расширение)](https://youtu.be/ND8KQ5xjk7o?t=1734) -- [00:31:41 Функциональные абстракции (superposition)](https://youtu.be/ND8KQ5xjk7o?t=1901) -- [00:38:02 Функциональные абстракции, с сохранением выражений (composition)](https://youtu.be/ND8KQ5xjk7o?t=2282) -- [00:45:05 Композиция с 2 функциями](https://youtu.be/ND8KQ5xjk7o?t=2705) -- [00:46:05 Композиция с n - функциями, при помощи метода reduce](https://youtu.be/ND8KQ5xjk7o?t=2765) -- [00:51:25 Композиция с n - функциями, при помощи цикла](https://youtu.be/ND8KQ5xjk7o?t=3085) -- [00:54:29 Композиция с n - функциями, при помощи рекурсии](https://youtu.be/ND8KQ5xjk7o?t=3269) -- [00:57:40 Композиция асинхронных функций](https://youtu.be/ND8KQ5xjk7o?t=3460) -- [01:01:27 Обобщение](https://youtu.be/ND8KQ5xjk7o?t=3687) - -## [Функции высшего порядка, колбеки, события на JavaScript](https://youtu.be/1vqATwbGHnc) - -- [00:00:00 Определение](https://youtu.be/1vqATwbGHnc?t=0) -- [00:02:03 Математическая функция](https://youtu.be/1vqATwbGHnc?t=123) -- [00:05:57 Функция обратного вызова (callback) ](https://youtu.be/1vqATwbGHnc?t=357) -- [00:09:33 Замыкание](https://youtu.be/1vqATwbGHnc?t=573) -- [00:10:51 Цепочка вызовов ](https://youtu.be/1vqATwbGHnc?t=651) -- [00:12:40 Сохранение кэша с помощью замыкания](https://youtu.be/1vqATwbGHnc?t=760) -- [00:18:29 Добавление функции поведение логирования](https://youtu.be/1vqATwbGHnc?t=1109) -- [00:21:45 Обобщение](https://youtu.be/1vqATwbGHnc?t=1305) -- [00:22:45 Сallback](https://youtu.be/1vqATwbGHnc?t=1365) -- [00:25:32 Сallback асинхронной функции считывание файла](https://youtu.be/1vqATwbGHnc?t=1532) -- [00:28:36 Сallback именованный](https://youtu.be/1vqATwbGHnc?t=1716) -- [00:33:01 Сallback-timer ](https://youtu.be/1vqATwbGHnc?t=1981) -- [00:36:20 Сallback-timer-curry](https://youtu.be/1vqATwbGHnc?t=2180) -- [00:38:59 Listener](https://youtu.be/1vqATwbGHnc?t=2339) -- [00:41:10 Listener-timer](https://youtu.be/1vqATwbGHnc?t=2470) -- [00:46:59 Event](https://youtu.be/1vqATwbGHnc?t=2819) -- [00:53:45 Event-imitter](https://youtu.be/1vqATwbGHnc?t=3225) -- [00:57:48 Deferred object (отложенный объект)](https://youtu.be/1vqATwbGHnc?t=3468) -- [01:01:31 Errors](https://youtu.be/1vqATwbGHnc?t=3691) - -## [Работа со строками, шаблонами и юникодом в JavaScript](https://youtu.be/GcopcHQkA8M) - -- [00:00:00 Unicode строки](https://youtu.be/GcopcHQkA8M?t=0) -- [00:12:07 Обычные строки](https://youtu.be/GcopcHQkA8M?t=727) -- [00:17:03 Методы строки ](https://youtu.be/GcopcHQkA8M?t=1023) -- [00:23:09 Модификация строк ](https://youtu.be/GcopcHQkA8M?t=1389) -- [00:28:00 Получение подстроки в строке ](https://youtu.be/GcopcHQkA8M?t=1680) -- [00:34:45 Polyffill ](https://youtu.be/GcopcHQkA8M?t=2085) -- [00:37:54 Методы padEnd и padStart ](https://youtu.be/GcopcHQkA8M?t=2274) -- [00:40:45 Добавление функции для шаблонизирующей строки](https://youtu.be/GcopcHQkA8M?t=2445) -- [00:44:27 Пример ](https://youtu.be/GcopcHQkA8M?t=2667) -- [00:48:29 Библиотека Concolor.js](https://youtu.be/GcopcHQkA8M?t=2909) - -## [Регулярные выражения и парсинг в JavaScript](https://youtu.be/-ef2E0ozxao) - -- [00:00:00 Введение](https://youtu.be/-ef2E0ozxao?t=0) -- [00:10:30 Синтаксис регулярных выражений ](https://youtu.be/-ef2E0ozxao?t=630) -- [00:12:54 Задание регулярного выражения ](https://youtu.be/-ef2E0ozxao?t=774) -- [00:30:38 RegExp ](https://youtu.be/-ef2E0ozxao?t=1838) -- [00:38:11 Метод match ](https://youtu.be/-ef2E0ozxao?t=2291) -- [00:46:48 Метод split](https://youtu.be/-ef2E0ozxao?t=2808) -- [00:49:28 Метод replace ](https://youtu.be/-ef2E0ozxao?t=2968) -- [00:50:43 Метод replace с аргументом функции ](https://youtu.be/-ef2E0ozxao?t=3043) -- [00:53:28 Метод search ](https://youtu.be/-ef2E0ozxao?t=3208) -- [00:55:05 Обобщение](https://youtu.be/-ef2E0ozxao?t=3305) - -## [Примеси, обертки, декораторы, мемоизация в JavaScript](https://youtu.be/oRQ0kQr1N-U) - -- [00:00:00 Синхронная функция-обертка ](https://youtu.be/oRQ0kQr1N-U?t=0) -- [00:02:55 Синхронная универсальная функция-обертка ](https://youtu.be/oRQ0kQr1N-U?t=175) -- [00:08:28 Асинхронная универсальная функция-обертка ](https://youtu.be/oRQ0kQr1N-U?t=508) -- [00:15:50 Синхронная функция-обертка, которая добавляет поведение (timeout)](https://youtu.be/oRQ0kQr1N-U?t=950) -- [00:22:45 Асинхронная функция-обертка, которая добавляет поведение (timeout)](https://youtu.be/oRQ0kQr1N-U?t=1365) -- [00:25:38 Функция-обертка, которая ограничивает вызов функции до одного вызова (once) ](https://youtu.be/oRQ0kQr1N-U?t=1538) -- [00:27:36 Функция-обертка, которая ограничивает вызов функции до n-го вызова (limit)](https://youtu.be/oRQ0kQr1N-U?t=1656) -- [00:29:50 Функция-обертка, которая отменяет вызов функции (cancel)](https://youtu.be/oRQ0kQr1N-U?t=1790) -- [00:32:29 Функция-обертка с методами timeout, limit, cancel](https://youtu.be/oRQ0kQr1N-U?t=1949) -- [00:39:03 Функция-обертка с методами timeout, limit, cancel (оптимизированная)](https://youtu.be/oRQ0kQr1N-U?t=2343) -- [00:42:28 Функция-обертка, которая ограничивает один вызов за 200 мс (throttle)](https://youtu.be/oRQ0kQr1N-U?t=2548) -- [00:45:47 Примесь поля через точку ](https://youtu.be/oRQ0kQr1N-U?t=2747) -- [00:51:35 Примесь поля через функцию extend](https://youtu.be/oRQ0kQr1N-U?t=3095) -- [00:57:35 Примесь поля через object.assign( )](https://youtu.be/oRQ0kQr1N-U?t=3455) -- [00:59:18 Примесь поведения ](https://youtu.be/oRQ0kQr1N-U?t=3558) -- [01:02:23 Примесь изменения класса](https://youtu.be/oRQ0kQr1N-U?t=3743) -- [01:06:50 Определение](https://youtu.be/oRQ0kQr1N-U?t=4010) -- [01:07:30 Реализация простой мемоизации ](https://youtu.be/oRQ0kQr1N-U?t=4050) -- [01:14:43 Реализация простой мемоизации с проверкой скорости ](https://youtu.be/oRQ0kQr1N-U?t=4483) -- [01:20:43 Удаление накопленного кэша ](https://youtu.be/oRQ0kQr1N-U?t=4843) -- [01:25:35 Асинхронная мемоизация ](https://youtu.be/oRQ0kQr1N-U?t=5135) -- [01:31:10 Преобразование аргументов и ключей в hash-функцию](https://youtu.be/oRQ0kQr1N-U?t=5470) -- [01:33:32 Реализация сложной мемоизации](https://youtu.be/oRQ0kQr1N-U?t=5612) - -## [Консоль и командная строка в JavaScript и Node.js](https://youtu.be/5aSZyKi5BmE) - -- [1:20 console](https://youtu.be/5aSZyKi5BmE?t=80) -- [16:00 readline](https://youtu.be/5aSZyKi5BmE?t=960) -- [21:35 cli](https://youtu.be/5aSZyKi5BmE?t=1295) -- [31:15 делаем красивый login screen](https://youtu.be/5aSZyKi5BmE?t=1875) - -## [Чеининг функций и объектов, обработка ошибок в JavaScript](https://youtu.be/PfuEfIiLX34) - -- [00:00:00 Введение ](https://youtu.be/PfuEfIiLX34?t=0) -- [00:01:10 Чеининг через синтаксис вызова функций ](https://youtu.be/PfuEfIiLX34?t=70) -- [00:02:12 Prototype ](https://youtu.be/PfuEfIiLX34?t=132) -- [00:05:45 Сlass](https://youtu.be/PfuEfIiLX34?t=345) -- [00:06:11 Functor](https://youtu.be/PfuEfIiLX34?t=371) -- [00:11:54 Mutable](https://youtu.be/PfuEfIiLX34?t=714) -- [00:16:34 Iterator](https://youtu.be/PfuEfIiLX34?t=994) -- [00:26:18 Promise ](https://youtu.be/PfuEfIiLX34?t=1578) -- [00:26:35 Test](https://youtu.be/PfuEfIiLX34?t=1595) -- [00:37:08 Compare ](https://youtu.be/PfuEfIiLX34?t=2228) -- [00:39:45 Benchmark](https://youtu.be/PfuEfIiLX34?t=2385) -- [00:40:48 Запуск и анализ тестов ](https://youtu.be/PfuEfIiLX34?t=2448) -- [01:03:48 Первый способ возвращение ошибок в синхронном коде ](https://youtu.be/PfuEfIiLX34?t=3828) -- [01:09:24 Второй способ возвращение ошибок в синхронном коде ](https://youtu.be/PfuEfIiLX34?t=4164) -- [01:12:26 Возвращение ошибок в асинхронном коде ](https://youtu.be/PfuEfIiLX34?t=4346) -- [01:16:14 Корректное возвращение ошибок ](https://youtu.be/PfuEfIiLX34?t=4574) -- [01:20:03 Обработка ошибок c promise ](https://youtu.be/PfuEfIiLX34?t=4803) -- [01:23:58 Обработка ошибок c async-await](https://youtu.be/PfuEfIiLX34?t=5038) - -## [Таймеры, таймауты, EventEmitter в JavaScript и Node.js](https://youtu.be/LK2jveAnRNg) - -- [0:30 callback sync/async](https://youtu.be/LK2jveAnRNg?t=30) -- [1:35 временная задержка sleep.js](https://youtu.be/LK2jveAnRNg?t=95) -- [5:35 await-sleep.js](https://youtu.be/LK2jveAnRNg?t=335) -- [8:40 sleep-then.js](https://youtu.be/LK2jveAnRNg?t=520) -- [9:30 order.js](https://youtu.be/LK2jveAnRNg?t=570) -- [18:38 precision.js](https://youtu.be/LK2jveAnRNg?t=1118) -- [22:13 blocking.js](https://youtu.be/LK2jveAnRNg?t=1333) -- [22:50 timers.js](https://youtu.be/LK2jveAnRNg?t=1370) -- [29:35 ref-unref.js](https://youtu.be/LK2jveAnRNg?t=1775) -- [32:05 enroll.js](https://youtu.be/LK2jveAnRNg?t=1925) -- [34:57 eventloop.txt](https://youtu.be/LK2jveAnRNg?t=2097) -- [37:37 eventEmitter](https://youtu.be/LK2jveAnRNg?t=2257) -- [44:32 simple.js](https://youtu.be/LK2jveAnRNg?t=2672) -- [47:48 usage.js](https://youtu.be/LK2jveAnRNg?t=2868) -- [48:30 enhanced.js](https://youtu.be/LK2jveAnRNg?t=2910) -- [50:18 star-fix.js](https://youtu.be/LK2jveAnRNg?t=3018) -- [51:10 usage.js](https://youtu.be/LK2jveAnRNg?t=3070) -- [53:15 closure.js](https://youtu.be/LK2jveAnRNg?t=3195) -- [54:50 fp.js](https://youtu.be/LK2jveAnRNg?t=3290) -- [57:10 methods.js](https://youtu.be/LK2jveAnRNg?t=3430) -- [1:06:35 min.js](https://youtu.be/LK2jveAnRNg?t=3995) -- [1:12:31 prod.js](https://youtu.be/LK2jveAnRNg?t=4351) - -## [Итерирование, циклы и итераторы в JavaScript](https://youtu.be/lq3b5_UGJas) - -- [00:00:00 Цикл for](https://youtu.be/lq3b5_UGJas?t=0) -- [00:02:45 Цикл while](https://youtu.be/lq3b5_UGJas?t=165) -- [00:03:16 Цикл do while ](https://youtu.be/lq3b5_UGJas?t=196) -- [00:03:33 Цикл for in object ](https://youtu.be/lq3b5_UGJas?t=213) -- [00:04:40 Цикл for in array](https://youtu.be/lq3b5_UGJas?t=280) -- [00:06:44 Цикл for of](https://youtu.be/lq3b5_UGJas?t=404) -- [00:08:45 Оператор break](https://youtu.be/lq3b5_UGJas?t=525) -- [00:10:13 Оператор continue](https://youtu.be/lq3b5_UGJas?t=613) -- [00:12:12 Итерирование по массиву методом forEach](https://youtu.be/lq3b5_UGJas?t=732) -- [00:15:10 Итерирование по массиву методом map ](https://youtu.be/lq3b5_UGJas?t=910) -- [00:21:23 Итерирование по двухмерному массиву (мatrix)](https://youtu.be/lq3b5_UGJas?t=1283) -- [00:25:38 Итерирование по двухмерному массиву (мatrix) методом forEach](https://youtu.be/lq3b5_UGJas?t=1538) -- [00:26:08 Итерирование массива методом reduce](https://youtu.be/lq3b5_UGJas?t=1568) -- [00:28:49 Итерирование по объекту ](https://youtu.be/lq3b5_UGJas?t=1729) -- [00:37:32 Обратный итератор ](https://youtu.be/lq3b5_UGJas?t=2252) -- [00:40:42 Асинхронный итератор](https://youtu.be/lq3b5_UGJas?t=2442) - -## [Архитектурный подход к программированию](https://youtu.be/d_vyO2CkiOc) - -- [00:00:00 Когда нужна архитектура](https://youtu.be/d_vyO2CkiOc?t=0) -- [00:06:07 Принятие решений](https://youtu.be/d_vyO2CkiOc?t=367) -- [00:09:58 Типы связывания](https://youtu.be/d_vyO2CkiOc?t=598) -- [00:20:00 Ошибки](https://youtu.be/d_vyO2CkiOc?t=1200) -- [00:27:15 Принятие решений](https://youtu.be/d_vyO2CkiOc?t=1635) -- [00:37:05 Эволюция архитектурных решений](https://youtu.be/d_vyO2CkiOc?t=2225) -- [00:58:13 Схема современной архитектуры](https://youtu.be/d_vyO2CkiOc?t=3493) -- [01:01:40 субд в браузере](https://youtu.be/d_vyO2CkiOc?t=3700) -- [01:05:20 Альтернативные варианты](https://youtu.be/d_vyO2CkiOc?t=3920) -- [01:12:20 Как на самом деле](https://youtu.be/d_vyO2CkiOc?t=4340) -- [01:13:45 Архитектура мечты](https://youtu.be/d_vyO2CkiOc?t=4425) -- [01:16:45 Современные возможности и требования ](https://youtu.be/d_vyO2CkiOc?t=4605) -- [01:25:20 Топологии](https://youtu.be/d_vyO2CkiOc?t=5120) -- [01:30:45 Итог](https://youtu.be/d_vyO2CkiOc?t=5445) - -## [Функциональное программирование на JavaScript](https://youtu.be/0JxSs_GcvbQ) - -## [Реактивное программирование на JavaScript](https://youtu.be/7MH8-qQc-48) - -- [0:00 введение](https://youtu.be/7MH8-qQc-48?t=0) -- [3:00 imperative.js](https://youtu.be/7MH8-qQc-48?t=180) -- [4:00 set-get.js](https://youtu.be/7MH8-qQc-48?t=240) -- [7:15 proxy.js](https://youtu.be/7MH8-qQc-48?t=435) -- [23:07 observer.js](https://youtu.be/7MH8-qQc-48?t=1387) - -## [Асинхронное программирование на callback`ах в JavaScript](https://youtu.be/z8Hg6zgi3yQ) - -- [1:20 пример callback функции](https://youtu.be/z8Hg6zgi3yQ?t=80) -- [2:40 пример последовательного исполнения callback функций](https://youtu.be/z8Hg6zgi3yQ?t=160) -- [5:52 пример параллельного исполнения async функций c использованием wrapAsync](https://youtu.be/z8Hg6zgi3yQ?t=352) -- [15:18 пример последовательного исполнения async функций c использованием wrapAsync](https://youtu.be/z8Hg6zgi3yQ?t=918) -- [19:05 chain исполнение async функций](https://youtu.be/z8Hg6zgi3yQ?t=1145) -- [41:16 где можно встретить асинхронные функции](https://youtu.be/z8Hg6zgi3yQ?t=2476) - -## [Проекции и отображения наборов данных в JavaScript](https://youtu.be/lwJCq9inky8) - -- [00:00:00 Введение ](https://youtu.be/lwJCq9inky8?t=0) -- [00:01:50 Простая проекция набора данных ](https://youtu.be/lwJCq9inky8?t=110) -- [00:09:23 Расширенная проекция набора данных ](https://youtu.be/lwJCq9inky8?t=563) -- [00:19:00 Расширенная проекция набора данных с кэшированием списка ключей](https://youtu.be/lwJCq9inky8?t=1140) -- [00:20:27 Оптимизация проекции набора данных с помощью императивного программирования ](https://youtu.be/lwJCq9inky8?t=1227) -- [00:23:11 Линзы из функционального программирования ](https://youtu.be/lwJCq9inky8?t=1391) -- [00:32:29 Сложная проекция набора данных ( проекция изнутри и снаружи ) ](https://youtu.be/lwJCq9inky8?t=1949) -- [00:39:08 Сложная проекция набора данных с помощью декларативного программирования ](https://youtu.be/lwJCq9inky8?t=2348) -- [00:41:57 Оптимизация сложной проекции ](https://youtu.be/lwJCq9inky8?t=2517) -- [00:51:36 Синтаксис фильтрации ](https://youtu.be/lwJCq9inky8?t=3096) -- [00:53:25 Вывод ](https://youtu.be/lwJCq9inky8?t=3205) -- [00:58:08 Оптимизация](https://youtu.be/lwJCq9inky8?t=3488) -- [01:00:00 Обобщение](https://youtu.be/lwJCq9inky8?t=3600) - -## [Коллекции, множества, хештаблицы в JavaScript](https://youtu.be/hN0wsq5LNOc) - -- [00:00:00 Введение](https://youtu.be/hN0wsq5LNOc?t=0) -- [00:01:35 Массивы ](https://youtu.be/hN0wsq5LNOc?t=95) -- [00:01:56 Склеивание массива методом concat ](https://youtu.be/hN0wsq5LNOc?t=116) -- [00:02:02 Склеивание массива оператором spread ](https://youtu.be/hN0wsq5LNOc?t=122) -- [00:03:17 Объекты ](https://youtu.be/hN0wsq5LNOc?t=197) -- [00:03:28 Склеивание объектов методом object.assign ](https://youtu.be/hN0wsq5LNOc?t=208) -- [00:04:01 Склеивание объектов оператором spread ](https://youtu.be/hN0wsq5LNOc?t=241) -- [00:04:38 Символический тип ](https://youtu.be/hN0wsq5LNOc?t=278) -- [00:06:50 Сохранение коллекции в файл ](https://youtu.be/hN0wsq5LNOc?t=410) -- [00:08:45 Использование конструированного map ](https://youtu.be/hN0wsq5LNOc?t=525) -- [00:14:29 Использование встроенного map ](https://youtu.be/hN0wsq5LNOc?t=869) -- [00:15:01 Отличия конструированного и встроенного map](https://youtu.be/hN0wsq5LNOc?t=901) -- [00:16:49 Способы итерации по map ](https://youtu.be/hN0wsq5LNOc?t=1009) -- [00:18:15 Построение индексов помощью map](https://youtu.be/hN0wsq5LNOc?t=1095) -- [00:23:15 WeakMap](https://youtu.be/hN0wsq5LNOc?t=1395) -- [00:27:55 Отдача значения без ключа ](https://youtu.be/hN0wsq5LNOc?t=1675) -- [00:29:15 Хранение уникальных значений ](https://youtu.be/hN0wsq5LNOc?t=1755) -- [00:33:32 Операции со массивами ](https://youtu.be/hN0wsq5LNOc?t=2012) -- [00:39:48 Операции над множествами ](https://youtu.be/hN0wsq5LNOc?t=2388) -- [00:42:32 WeakSet ](https://youtu.be/hN0wsq5LNOc?t=2552) -- [00:47:15 Обобщение](https://youtu.be/hN0wsq5LNOc?t=2835) - -## [Неблокирующее асинхронное итерирование в JavaScript](https://youtu.be/wYA2cIRYLoA) - -- [1:02 блокирующее итерирование по массиву](https://youtu.be/wYA2cIRYLoA?t=62) -- [3:24 блокирующее итерирование с помощью for await](https://youtu.be/wYA2cIRYLoA?t=204) -- [4:47 неблокирующее итерирование с помощью setTimeout](https://youtu.be/wYA2cIRYLoA?t=287) -- [6:45 неблокирующее итерирование с помощью for await](https://youtu.be/wYA2cIRYLoA?t=405) -- [8:20 неблокирующее итерирование без задержки](https://youtu.be/wYA2cIRYLoA?t=500) -- [13:00 неблокирующее итерирование без задержки с помощью for await](https://youtu.be/wYA2cIRYLoA?t=780) -- [19:30 использование асинхронного итерирования для обычных массивов](https://youtu.be/wYA2cIRYLoA?t=1170) - -## [Структуры данных: списки, стек, очередь, дэк в JavaScript](https://youtu.be/9KvA4hDDSjk) - -- [00:00:00 Идея структуры данных](https://youtu.be/9KvA4hDDSjk?t=0) -- [00:02:27 Списки на прототипах ( абстракция элемента ) ](https://youtu.be/9KvA4hDDSjk?t=147) -- [00:06:23 Списки на объектах ](https://youtu.be/9KvA4hDDSjk?t=383) -- [00:07:28 Списки на замыканиях](https://youtu.be/9KvA4hDDSjk?t=448) -- [00:10:56 Списки на объектах ( абстракция элемента и списка ) ](https://youtu.be/9KvA4hDDSjk?t=656) -- [00:18:22 Списки на классах](https://youtu.be/9KvA4hDDSjk?t=1102) -- [00:21:08 Стек на прототипах ( двух-связанный)](https://youtu.be/9KvA4hDDSjk?t=1268) -- [00:28:17 Стек на классах (односвязный)](https://youtu.be/9KvA4hDDSjk?t=1697) -- [00:29:55 Очередь](https://youtu.be/9KvA4hDDSjk?t=1795) -- [00:34:26 Дэк](https://youtu.be/9KvA4hDDSjk?t=2066) - -## [Proxy и Symbol в JavaScript](https://youtu.be/UjZjSDyi9AM) - -- [00:00:00 Определение Proxy](https://youtu.be/UjZjSDyi9AM?t=0) -- [00:01:20 Обращение к свойствам объекта, находящегося внутри proxy](https://youtu.be/UjZjSDyi9AM?t=80) -- [00:04:10 Доступ к состоянию объекта через Getter и Setter ](https://youtu.be/UjZjSDyi9AM?t=250) -- [00:05:13 Доступ к состоянию объекта через Proxy ](https://youtu.be/UjZjSDyi9AM?t=313) -- [00:07:40 Проверка наличие свойств ](https://youtu.be/UjZjSDyi9AM?t=460) -- [00:11:22 Удаление свойств](https://youtu.be/UjZjSDyi9AM?t=682) -- [00:13:26 Обращение к аргументам функции, находящегося внутри proxy ](https://youtu.be/UjZjSDyi9AM?t=806) -- [00:15:30 Другие Proxy обработчики (Proxy handler )](https://youtu.be/UjZjSDyi9AM?t=930) -- [00:19:00 Proxy.revocable ](https://youtu.be/UjZjSDyi9AM?t=1140) -- [00:20:43 Определение Symbol ](https://youtu.be/UjZjSDyi9AM?t=1243) -- [00:23:00 Вывод и сравнение Symbol ](https://youtu.be/UjZjSDyi9AM?t=1380) -- [00:25:10 Type](https://youtu.be/UjZjSDyi9AM?t=1510) -- [00:29:51 Symbol.for](https://youtu.be/UjZjSDyi9AM?t=1791) -- [00:34:45 Symbol.iterator ](https://youtu.be/UjZjSDyi9AM?t=2085) -- [00:43:52 Symbol.toPrimitive](https://youtu.be/UjZjSDyi9AM?t=2632) -- [00:47:00 hideSymbol](https://youtu.be/UjZjSDyi9AM?t=2820) - -## [Сериализация и десериализация в JavaScript и Node.js](https://youtu.be/GtKPniOEzh8) - -- [00:00:00 Введение ](https://youtu.be/GtKPniOEzh8?t=0) -- [00:01:50 Виды сериализации ](https://youtu.be/GtKPniOEzh8?t=110) -- [00:02:45 Сериализатор console.dir ](https://youtu.be/GtKPniOEzh8?t=165) -- [00:03:45 Cериализатор CSV](https://youtu.be/GtKPniOEzh8?t=225) -- [00:05:42 Сериализатор JSON ](https://youtu.be/GtKPniOEzh8?t=342) -- [00:10:00 Сериализатор функции](https://youtu.be/GtKPniOEzh8?t=600) -- [00:15:25 Сериализатор функции разных типов (расширяемый)](https://youtu.be/GtKPniOEzh8?t=925) -- [00:23:06 Десереализация ](https://youtu.be/GtKPniOEzh8?t=1386) -- [00:25:26 Сериализация объекта в бинарный формат, с помощью библиотеки v8 ](https://youtu.be/GtKPniOEzh8?t=1526) -- [00:28:26 Сериализация объекта, с помощью разных библиотек](https://youtu.be/GtKPniOEzh8?t=1706) - -## [Асинхронность с библиотекой async.js](https://youtu.be/XQ94wQc-erU) - -## [Фабрики и пулы объектов в JavaScript, factorify, poolify](https://youtu.be/Ax_mSvadFp8) - -- [00:00:00 Введение ](https://youtu.be/Ax_mSvadFp8?t=0) -- [00:02:38 Фабрика ( factory )](https://youtu.be/Ax_mSvadFp8?t=158) -- [00:05:44 Фабрика прототипов ](https://youtu.be/Ax_mSvadFp8?t=344) -- [00:10:48 Фабрика классов ](https://youtu.be/Ax_mSvadFp8?t=648) -- [00:12:28 Фабрика функций ](https://youtu.be/Ax_mSvadFp8?t=748) -- [00:15:55 Фабричные методы ](https://youtu.be/Ax_mSvadFp8?t=955) -- [00:16:55 Превращение функций в фабрику ( factorify)](https://youtu.be/Ax_mSvadFp8?t=1015) -- [00:19:44 Пул ( pool )](https://youtu.be/Ax_mSvadFp8?t=1184) -- [00:23:05 Работа с пулом ](https://youtu.be/Ax_mSvadFp8?t=1385) -- [00:23:04 Обобщенный пул](https://youtu.be/Ax_mSvadFp8?t=1384) -- [00:24:55 Пулифицирование фабрики ( poolify ) ](https://youtu.be/Ax_mSvadFp8?t=1495) -- [00:28:50 Улучшенная пулифицированная фабрика ](https://youtu.be/Ax_mSvadFp8?t=1730) -- [00:32:10 Асинхронная работа с пулом ](https://youtu.be/Ax_mSvadFp8?t=1930) -- [00:45:25 Одновременное использование factorify и poolify ](https://youtu.be/Ax_mSvadFp8?t=2725) -- [00:51:54 Обобщение](https://youtu.be/Ax_mSvadFp8?t=3114) - -## [Подход к изучению программирования (выступление на дне факультета Информатики КПИ 12 декабря 2018)](https://youtu.be/zMU4ir10DMg) - -- [00:40 Что нужно знать?](https://youtu.be/zMU4ir10DMg?t=40) -- [03:41 Откуда брать знания ](https://youtu.be/zMU4ir10DMg?t=221) -- [07:39 Проблемы отрасли ](https://youtu.be/zMU4ir10DMg?t=459) -- [13:12 Дерево парадигм ](https://youtu.be/zMU4ir10DMg?t=792) -- [14:15 Технологии и техники](https://youtu.be/zMU4ir10DMg?t=855) -- [14:32 Разница парадигм](https://youtu.be/zMU4ir10DMg?t=872) -- [14:48 Что общего в парадигмах](https://youtu.be/zMU4ir10DMg?t=888) -- [15:33 Прочие парадигмы и техники](https://youtu.be/zMU4ir10DMg?t=933) -- [17:46 Мультипарадигменность](https://youtu.be/zMU4ir10DMg?t=1066) -- [18:46 Метапрограммирование](https://youtu.be/zMU4ir10DMg?t=1126) -- [19:13 Как не деградировать?](https://youtu.be/zMU4ir10DMg?t=1153) -- [21:29 Как найти общий язык? ](https://youtu.be/zMU4ir10DMg?t=1289) -- [24:31 Задачи программной инженерии](https://youtu.be/zMU4ir10DMg?t=1471) -- [28:19 Преодоление сложности ](https://youtu.be/zMU4ir10DMg?t=1699) -- [28:21 Связывание данных и логики](https://youtu.be/zMU4ir10DMg?t=1701) -- [28:30 Различные концепции ](https://youtu.be/zMU4ir10DMg?t=1710) -- [29:40 ВУЗ должен меняться](https://youtu.be/zMU4ir10DMg?t=1780) -- [33:53 Неспециальные предметы](https://youtu.be/zMU4ir10DMg?t=2033) -- [35:18 Чего не хватает](https://youtu.be/zMU4ir10DMg?t=2118) -- [36:57 Проблем много ](https://youtu.be/zMU4ir10DMg?t=2217) -- [40:20 ВУЗ должен знать](https://youtu.be/zMU4ir10DMg?t=2420) - -## [Асинхронность на промисах, Promise, all, then, catch, race](https://youtu.be/RMl4r6s1Y8M) - -## [Типизированные массивы в JavaScript](https://youtu.be/tTNcqxbxhfY) - -## [Шаблон Singleton (синглтон) в JavaScript](https://youtu.be/qdJ5yikZnfE) - -- [00:00:00 Singleton через конструктор прототипа](https://youtu.be/qdJ5yikZnfE?t=0) -- [00:03:27 Singleton через замыкания ](https://youtu.be/qdJ5yikZnfE?t=207) -- [00:06:10 Пример singleton через замыкания ](https://youtu.be/qdJ5yikZnfE?t=370) -- [00:08:15 Пример singleton через замыкания в функциональном стиле ](https://youtu.be/qdJ5yikZnfE?t=495) -- [00:09:23 Пример singleton через замыкания в функциональном стиле (упрощенный) ](https://youtu.be/qdJ5yikZnfE?t=563) -- [00:10:32 Создание singleton в JS](https://youtu.be/qdJ5yikZnfE?t=632) - -## [Функциональные объекты, функторы и монады в JavaScript](https://youtu.be/3Z7f0Gi8pxw) - -- [00:00:00 Определение функтора ](https://youtu.be/3Z7f0Gi8pxw?t=0) -- [00:01:40 Функтор из прототипа ](https://youtu.be/3Z7f0Gi8pxw?t=100) -- [00:08:17 Функтор из прототипа (упрощенный) ](https://youtu.be/3Z7f0Gi8pxw?t=497) -- [00:09:14 Функтор из замыкания ](https://youtu.be/3Z7f0Gi8pxw?t=554) -- [00:11:49 Функтор из замыкания с тернарным оператором](https://youtu.be/3Z7f0Gi8pxw?t=709) -- [00:12:44 Аппликативный функтор из прототипа ](https://youtu.be/3Z7f0Gi8pxw?t=764) -- [00:18:08 Аппликативный функтор из замыкания (монада)](https://youtu.be/3Z7f0Gi8pxw?t=1088) -- [00:23:11 Пример применения монады ](https://youtu.be/3Z7f0Gi8pxw?t=1391) -- [00:28:37 Функциональный объект ](https://youtu.be/3Z7f0Gi8pxw?t=1717) -- [00:39:44 Пример применения функционального объекта](https://youtu.be/3Z7f0Gi8pxw?t=2384) -- [00:45:27 Обобщение](https://youtu.be/3Z7f0Gi8pxw?t=2727) - -## [Асинхронные функции, async/await, thenable, обработка ошибок](https://youtu.be/Jdf_tZuJbHI) - -## [Асинхронные адаптеры: promisify, callbackify, asyncify...](https://youtu.be/76k6_YkYRmU) - -## [Асинхронные коллекторы данных](https://youtu.be/tgodt1JL6II) - -## [Утечки памяти в Node.js и JavaScript, сборка мусора и профилирование](https://youtu.be/0oZa64SB2wM) - -## [Рекурсия: косвенная и хвостовая, стек, выход](https://youtu.be/W2skCjIgVKE) - -- [00:00 Рекурсивная функция для вычисления глубины стека](https://youtu.be/W2skCjIgVKE?t=0) -- [03:25 Неявная рекурсия](https://youtu.be/W2skCjIgVKE?t=205) -- [04:52 Рекурсивная функция для вычисления степени числа](https://youtu.be/W2skCjIgVKE?t=292) -- [06:12 Рекурсивная функция для вычисления факториала ](https://youtu.be/W2skCjIgVKE?t=372) -- [06:29 Рекурсивная функция для вычисления числа Фибоначчи ](https://youtu.be/W2skCjIgVKE?t=389) -- [09:27 Рекурсивная функция, как аналог функции reduce ](https://youtu.be/W2skCjIgVKE?t=567) -- [12:04 Оптимизация хвостовой рекурсии ](https://youtu.be/W2skCjIgVKE?t=724) -- [15:41 Оптимизация обычной рекурсивной функции](https://youtu.be/W2skCjIgVKE?t=941) - -## [Дженерики и обобщенное программирование](https://youtu.be/r6W2z3DQhoI) - -## [Генераторы и асинхронные генераторы в JavaScript](https://youtu.be/kvNm9D32s8s) - -- [00:00 Способы объявления генераторов ](https://youtu.be/kvNm9D32s8s?t=0) -- [10:41 Пример генератора с yield ](https://youtu.be/kvNm9D32s8s?t=641) -- [15:54 Пример генератора с yield и return ](https://youtu.be/kvNm9D32s8s?t=954) -- [18:47 Получение значений из генератора циклом for...of ](https://youtu.be/kvNm9D32s8s?t=1127) -- [21:04 Получение значений из генератора spead - оператором ](https://youtu.be/kvNm9D32s8s?t=1264) -- [21:50 Метод next ](https://youtu.be/kvNm9D32s8s?t=1310) -- [23:30 Пример генератора с yield * возвращающего итерируемые объекты ](https://youtu.be/kvNm9D32s8s?t=1410) -- [25:05 Пример генератора с yield * возвращающего другие генераторы ](https://youtu.be/kvNm9D32s8s?t=1505) -- [26:18 Метод return ](https://youtu.be/kvNm9D32s8s?t=1578) -- [28:11 Метод throw](https://youtu.be/kvNm9D32s8s?t=1691) -- [29:05 Обобщение](https://youtu.be/kvNm9D32s8s?t=1745) - -## [Итераторы и асинхронные итераторы в JavaScript](https://youtu.be/rBGFlWpVpGs) - -## [Фасад - петтерн для скрытия сложности](https://youtu.be/oJtBO7CystE) - -## [Адаптер (Adapter) - паттерн достижения совместимости](https://youtu.be/cA65McLQrR8) - -- [0:00 введение](https://youtu.be/cA65McLQrR8?t=0) -- [1:30 adapter на prototype](https://youtu.be/cA65McLQrR8?t=90) -- [3:57 adapter на class](https://youtu.be/cA65McLQrR8?t=237) -- [4:23 adapter на function](https://youtu.be/cA65McLQrR8?t=263) -- [6:15 adapter на классе-обертке (boxing)](https://youtu.be/cA65McLQrR8?t=375) -- [7:08 adapter на замыканиях (closure)](https://youtu.be/cA65McLQrR8?t=428) -- [8:10 adapter на interface](https://youtu.be/cA65McLQrR8?t=490) -- [13:45 adapter на events](https://youtu.be/cA65McLQrR8?t=825) -- [16:00 выводы](https://youtu.be/cA65McLQrR8?t=960) - -## [Стратегия (Strategy) - выбор взаимозаменяемого поведения](https://youtu.be/hO8VSVv0NqM) - -- [0:00 введение](https://youtu.be/hO8VSVv0NqM?t=0) -- [3:40 strategy на class](https://youtu.be/hO8VSVv0NqM?t=220) -- [15:04 strategy на prototype](https://youtu.be/hO8VSVv0NqM?t=904) -- [16:14 strategy на function](https://youtu.be/hO8VSVv0NqM?t=974) -- [20:22 strategy с примером работы над массивом](https://youtu.be/hO8VSVv0NqM?t=1222) -- [24:07 обобщение](https://youtu.be/hO8VSVv0NqM?t=1447) - -## [Линзы в JavaScript - функциональные аналоги геттера и сеттера](https://youtu.be/IBF5gFU6G-o) - -## [Перечислимый тип (enum) в JavaScript и TypeScript](https://youtu.be/BXiKebOIAGI) - -## [Графы и запросы к графовым структурам на JavaScript](https://youtu.be/a0W0T8Yqw3s) - -## [Паттерн Команда (Command) действие и параметры как объект](https://youtu.be/vER0vYL4hM4) - -## [Тестирование: юниттесты с примерами на JavaScript](https://youtu.be/CszugIag2TA) - -## [Инверсия управления и внедрение зависимостей в Node.js](https://youtu.be/Fz86Fdjz-LM) - -## [Слои, связанность и связность кода в JavaScript](https://youtu.be/A3RpwNlVeyY) - -## [Измерение производительности кода и оптимизация в JavaScript и Node.js](https://youtu.be/sanq2X7Re8o) - -- [00:00:00 Введение ](https://youtu.be/sanq2X7Re8o?t=0) -- [00:05:27 Console.time и console.timeEnd ](https://youtu.be/sanq2X7Re8o?t=327) -- [00:09:05 New Date( ).getTime( ) ](https://youtu.be/sanq2X7Re8o?t=545) -- [00:11:15 Process.hrtime( )](https://youtu.be/sanq2X7Re8o?t=675) -- [00:18:51 Process.hrtime.bigint( ) и движок для benchmark](https://youtu.be/sanq2X7Re8o?t=1131) -- [00:27:00 Сравнение функций инстанцирования ](https://youtu.be/sanq2X7Re8o?t=1620) -- [00:31:06 Алгоритм для сравнения ](https://youtu.be/sanq2X7Re8o?t=1866) -- [00:39:36 Работа движка benchmark ](https://youtu.be/sanq2X7Re8o?t=2376) -- [00:41:37 Результаты теста](https://youtu.be/sanq2X7Re8o?t=2497) -- [00:47:33 Сравнение массива и объектов ](https://youtu.be/sanq2X7Re8o?t=2853) -- [00:54:21 Результаты теста ](https://youtu.be/sanq2X7Re8o?t=3261) -- [00:55:00 Сравнение 3 функций range ](https://youtu.be/sanq2X7Re8o?t=3300) -- [00:56:34 Результаты теста ](https://youtu.be/sanq2X7Re8o?t=3394) -- [00:58:50 Сравнение функций по способу вызова](https://youtu.be/sanq2X7Re8o?t=3530) -- [00:59:56 Результаты теста](https://youtu.be/sanq2X7Re8o?t=3596) -- [01:01:34 Сравнение indexOf и includes](https://youtu.be/sanq2X7Re8o?t=3694) -- [01:01:54 Результаты теста ](https://youtu.be/sanq2X7Re8o?t=3714) -- [01:03:23 Сравнение объявления переменной до и после цикла ](https://youtu.be/sanq2X7Re8o?t=3803) -- [01:05:02 Сравнение for keys, for (...in...) и for (...of...)](https://youtu.be/sanq2X7Re8o?t=3902) -- [01:05:34 Результаты теста ](https://youtu.be/sanq2X7Re8o?t=3934) -- [01:05:58 Сравнение шаблонных строк](https://youtu.be/sanq2X7Re8o?t=3958) -- [01:06:12 Сравнение хождения цикла по функции map в ES6](https://youtu.be/sanq2X7Re8o?t=3972) -- [01:07:18 Результаты теста ](https://youtu.be/sanq2X7Re8o?t=4038) -- [01:07:56 Сравнение repeat и arrayJoin ](https://youtu.be/sanq2X7Re8o?t=4076) -- [01:08:15 Результаты теста](https://youtu.be/sanq2X7Re8o?t=4095) -- [01:08:26 Сравнение дублирования массива ](https://youtu.be/sanq2X7Re8o?t=4106) -- [01:08:58 Результаты теста](https://youtu.be/sanq2X7Re8o?t=4138) -- [01:09:43 Сравнение копирование набора данных ](https://youtu.be/sanq2X7Re8o?t=4183) -- [01:10:26 Результаты теста ](https://youtu.be/sanq2X7Re8o?t=4226) -- [01:10:47 Сравнение итерирования с помощью forEarch и for (...of...)](https://youtu.be/sanq2X7Re8o?t=4247) -- [01:11:08 Результаты теста](https://youtu.be/sanq2X7Re8o?t=4268) -- [01:11:31 Обобщение](https://youtu.be/sanq2X7Re8o?t=4291) - -## [Слой доступа к данным, курсор, транзакция](https://youtu.be/CRcSWtWVvrA) - -## [HTTP запросы в браузере и Node.js: XMLHttpRequest, fetch](https://youtu.be/wMMki2FEYGY) - -## [Метапрограммирование с примерами на JavaScript](https://youtu.be/Ed9onRv4G5Y) - -## [Тестирование: системное и интеграционное тестирование на JavaScript](https://youtu.be/OuKu_6H_6gE) - -## [Отмена асинхронных операций, cancellable callback and Promise в JavaScript](https://youtu.be/T8fXlnqI4Ws) - -## [Асинхронная композиция функций на JavaScript](https://youtu.be/3ZCrMlMpOrM) - -## [Thenable и легковесный await в JavaScript](https://youtu.be/DXp__1VNIvI) - -## [Конкурентная асинхронная очередь на JavaScript](https://youtu.be/Lg46AH8wFvg) - -## [Паттерн Revealing Constructor - открытый конструктор](https://youtu.be/leR5sXRkuJI) - -## [Модель акторов для параллельных вычислений](https://youtu.be/xp5MVKEqxY4) - -## [Have Objects Failed? Или что не так с ООП?](https://youtu.be/4yO5OS0vPSw) - -- [1:46 Присвоенные идеи ООП](https://youtu.be/4yO5OS0vPSw?t=106) -- [11:47 Притянутые достоинства ООП](https://youtu.be/4yO5OS0vPSw?t=707) -- [22:06 Проблемы ООП](https://youtu.be/4yO5OS0vPSw?t=1326) -- [39:56 Как жить с ООП](https://youtu.be/4yO5OS0vPSw?t=2396) -- [56:44 Подходящие области для ООП](https://youtu.be/4yO5OS0vPSw?t=3404) -- [1:03:51 Неподходящие области для ООП](https://youtu.be/4yO5OS0vPSw?t=3831) -- [1:11:30 Заключение](https://youtu.be/4yO5OS0vPSw?t=4290) - -## [Интроспекция и рефлексия в JavaScript](https://youtu.be/yvW1PjUVeM0) - -## [История развития языков программирования](https://youtu.be/qqz0VSaNxuw) - -- [0:00:02 введение](https://youtu.be/qqz0VSaNxuw?t=2) -- [0:00:57 карты для механических машин](https://youtu.be/qqz0VSaNxuw?t=57) -- [0:01:50 карты для электронных машин](https://youtu.be/qqz0VSaNxuw?t=110) -- [0:03:21 машинный код](https://youtu.be/qqz0VSaNxuw?t=201) -- [0:04:05 Assembly language](https://youtu.be/qqz0VSaNxuw?t=245) -- [0:06:14 Fortran](https://youtu.be/qqz0VSaNxuw?t=374) -- [0:07:28 Basic](https://youtu.be/qqz0VSaNxuw?t=448) -- [0:09:19 LISP](https://youtu.be/qqz0VSaNxuw?t=559) -- [0:12:23 Algol 60](https://youtu.be/qqz0VSaNxuw?t=743) -- [0:13:25 C](https://youtu.be/qqz0VSaNxuw?t=805) -- [0:14:23 C++](https://youtu.be/qqz0VSaNxuw?t=863) -- [0:15:13 Ada](https://youtu.be/qqz0VSaNxuw?t=913) -- [0:16:08 dBase, FoxBase, Clipper](https://youtu.be/qqz0VSaNxuw?t=968) -- [0:19:56 Haskell](https://youtu.be/qqz0VSaNxuw?t=1196) -- [0:21:23 Python](https://youtu.be/qqz0VSaNxuw?t=1283) -- [0:23:37 Java](https://youtu.be/qqz0VSaNxuw?t=1417) -- [0:25:45 Delphi](https://youtu.be/qqz0VSaNxuw?t=1545) -- [0:28:43 SQL](https://youtu.be/qqz0VSaNxuw?t=1723) -- [0:30:43 PHP 0:41:17 стрелочку из плюсов взяли](https://youtu.be/qqz0VSaNxuw?t=1843) -- [0:33:14 C#](https://youtu.be/qqz0VSaNxuw?t=1994) -- [0:35:20 Go](https://youtu.be/qqz0VSaNxuw?t=2120) -- [0:36:17 Rust](https://youtu.be/qqz0VSaNxuw?t=2177) -- [0:37:30 TypeScript](https://youtu.be/qqz0VSaNxuw?t=2250) -- [0:39:59 Swift](https://youtu.be/qqz0VSaNxuw?t=2399) -- [0:40:19 Kotlin](https://youtu.be/qqz0VSaNxuw?t=2419) -- [0:42:20 взаимовлияние языков](https://youtu.be/qqz0VSaNxuw?t=2540) -- [0:44:23 все ли языки используются сегодня](https://youtu.be/qqz0VSaNxuw?t=2663) -- [0:49:35 производительность языков](https://youtu.be/qqz0VSaNxuw?t=2975) -- [0:54:34 опциональная аннотация типов](https://youtu.be/qqz0VSaNxuw?t=3274) -- [0:56:50 прогревание кода](https://youtu.be/qqz0VSaNxuw?t=3410) -- [0:59:24 первые операционные системы](https://youtu.be/qqz0VSaNxuw?t=3564) -- [1:00:44 ограничение по вложенности рекурсии](https://youtu.be/qqz0VSaNxuw?t=3644) -- [1:02:53 абстрактное синтаксическое дерево](https://youtu.be/qqz0VSaNxuw?t=3773) -- [1:04:52 машинный код и байт-код](https://youtu.be/qqz0VSaNxuw?t=3892) -- [1:07:26 typescript быстрее javascript?](https://youtu.be/qqz0VSaNxuw?t=4046) -- [1:11:45 goroutine на Go асинхронная?](https://youtu.be/qqz0VSaNxuw?t=4305) -- [1:12:58 асинхронная функция в javascript](https://youtu.be/qqz0VSaNxuw?t=4378) -- [1:15:23 строгая типизация влияет на скорость?](https://youtu.be/qqz0VSaNxuw?t=4523) -- [1:16:13 выведение и проверка типов в IDE](https://youtu.be/qqz0VSaNxuw?t=4573) - -## [Парадигмы программирования (обзор)](https://youtu.be/Yk1sxLVHfjs) - -- [00:20 парадигма](https://youtu.be/Yk1sxLVHfjs?t=20) -- [02:19 императивная программа: пошаговое исполнение на примере JavaScript](https://youtu.be/Yk1sxLVHfjs?t=139) -- [03:22 пошаговое исполнение характерно для неструктурных ЯП: Assembly language, Basic](https://youtu.be/Yk1sxLVHfjs?t=202) -- [05:08 структурная программа на Rust](https://youtu.be/Yk1sxLVHfjs?t=308) -- [06:21 процедурный стиль на Python](https://youtu.be/Yk1sxLVHfjs?t=381) -- [07:28 объектно-ориентированное программирование на примере JavaScript](https://youtu.be/Yk1sxLVHfjs?t=448) -- [09:32 ООП хорош не для всякой задачи -- пример с пирожком](https://youtu.be/Yk1sxLVHfjs?t=572) -- [13:28 прототипное программирование](https://youtu.be/Yk1sxLVHfjs?t=808) -- [16:51 функциональное программирование](https://youtu.be/Yk1sxLVHfjs?t=1011) -- [18:58 асинхронное программирование](https://youtu.be/Yk1sxLVHfjs?t=1138) -- [22:48 реактивное программирование](https://youtu.be/Yk1sxLVHfjs?t=1368) -- [26:04 событийно-ориентированное программирование (управляется потоками событий)](https://youtu.be/Yk1sxLVHfjs?t=1564) -- [27:03 метапрограммирование](https://youtu.be/Yk1sxLVHfjs?t=1623) -- [28:58 мультипарадигменное программирование](https://youtu.be/Yk1sxLVHfjs?t=1738) -- [30:52 параллельное программирование](https://youtu.be/Yk1sxLVHfjs?t=1852) -- [31:58 реактивность](https://youtu.be/Yk1sxLVHfjs?t=1918) -- [33:29 функции 1 класса](https://youtu.be/Yk1sxLVHfjs?t=2009) -- [34:55 геттеры и сеттеры](https://youtu.be/Yk1sxLVHfjs?t=2095) -- [37:37 смешивание стилей](https://youtu.be/Yk1sxLVHfjs?t=2257) -- [38:07 если хочется писать в чистом ООП](https://youtu.be/Yk1sxLVHfjs?t=2287) -- [39:43 объект, класс, коллекция -- разница](https://youtu.be/Yk1sxLVHfjs?t=2383) -- [47:27 где хранятся классы](https://youtu.be/Yk1sxLVHfjs?t=2847) -- [47:54 у каждой парадигмы свои шаблоны программирования](https://youtu.be/Yk1sxLVHfjs?t=2874) -- [48:52 когда используется функциональное программирование](https://youtu.be/Yk1sxLVHfjs?t=2932) - -## [Примеси, обертки, декораторы, мемоизация](https://youtu.be/2h9syXN5wO0) - -- [00:00:00 Синхронная функция-обертка ](https://youtu.be/2h9syXN5wO0?t=0) -- [00:02:55 Синхронная универсальная функция-обертка ](https://youtu.be/2h9syXN5wO0?t=175) -- [00:08:28 Асинхронная универсальная функция-обертка ](https://youtu.be/2h9syXN5wO0?t=508) -- [00:15:50 Синхронная функция-обертка, которая добавляет поведение (timeout)](https://youtu.be/2h9syXN5wO0?t=950) -- [00:22:45 Асинхронная функция-обертка, которая добавляет поведение (timeout)](https://youtu.be/2h9syXN5wO0?t=1365) -- [00:25:38 Функция-обертка, которая ограничивает вызов функции до одного вызова (once) ](https://youtu.be/2h9syXN5wO0?t=1538) -- [00:27:36 Функция-обертка, которая ограничивает вызов функции до n-го вызова (limit)](https://youtu.be/2h9syXN5wO0?t=1656) -- [00:29:50 Функция-обертка, которая отменяет вызов функции (cancel)](https://youtu.be/2h9syXN5wO0?t=1790) -- [00:32:29 Функция-обертка с методами timeout, limit, cancel](https://youtu.be/2h9syXN5wO0?t=1949) -- [00:39:03 Функция-обертка с методами timeout, limit, cancel (оптимизированная)](https://youtu.be/2h9syXN5wO0?t=2343) -- [00:42:28 Функция-обертка, которая ограничивает один вызов за 200 мс (throttle)](https://youtu.be/2h9syXN5wO0?t=2548) -- [00:45:47 Примесь поля через точку ](https://youtu.be/2h9syXN5wO0?t=2747) -- [00:51:35 Примесь поля через функцию extend](https://youtu.be/2h9syXN5wO0?t=3095) -- [00:57:35 Примесь поля через object.assign( )](https://youtu.be/2h9syXN5wO0?t=3455) -- [00:59:18 Примесь поведения ](https://youtu.be/2h9syXN5wO0?t=3558) -- [01:02:23 Примесь изменения класса](https://youtu.be/2h9syXN5wO0?t=3743) -- [01:06:50 Определение](https://youtu.be/2h9syXN5wO0?t=4010) -- [01:07:30 Реализация простой мемоизации ](https://youtu.be/2h9syXN5wO0?t=4050) -- [01:14:43 Реализация простой мемоизации с проверкой скорости ](https://youtu.be/2h9syXN5wO0?t=4483) -- [01:20:43 Удаление накопленного кэша ](https://youtu.be/2h9syXN5wO0?t=4843) -- [01:25:35 Асинхронная мемоизация ](https://youtu.be/2h9syXN5wO0?t=5135) -- [01:31:10 Преобразование аргументов и ключей в hash-функцию](https://youtu.be/2h9syXN5wO0?t=5470) -- [01:33:32 Реализация сложной мемоизации](https://youtu.be/2h9syXN5wO0?t=5612) - -## [Ответы на вопросы по курсу "Основы программирования" 2019-2020](https://youtu.be/TY6nDW7aYys) - -## [Антипаттерны процедурного программирования](https://youtu.be/cTv7V22mkwE) - -## [Семинар: выполнение лабораторных работ на JavaSript по курсу "Основы программирования"](https://youtu.be/ikUOyFPzdJw) - -## [Массивы в JavaScript (методы Array)](https://youtu.be/D1kfYBkX9FE) - -- [00:00 Конструкция массива](https://youtu.be/D1kfYBkX9FE?t=0) -- [09:58 Метод concat](https://youtu.be/D1kfYBkX9FE?t=598) -- [11:00 Методы every и some ](https://youtu.be/D1kfYBkX9FE?t=660) -- [13:00 Метод filter ](https://youtu.be/D1kfYBkX9FE?t=780) -- [13:29 Методы find и findIndex](https://youtu.be/D1kfYBkX9FE?t=809) -- [14:30 Метод flat ](https://youtu.be/D1kfYBkX9FE?t=870) -- [17:08 Метод includes ](https://youtu.be/D1kfYBkX9FE?t=1028) -- [17:32 Метод indexOf и lastIndexOf](https://youtu.be/D1kfYBkX9FE?t=1052) -- [18:35 Метод join](https://youtu.be/D1kfYBkX9FE?t=1115) -- [18:58 Метод reverse](https://youtu.be/D1kfYBkX9FE?t=1138) -- [19:29 Метод slice](https://youtu.be/D1kfYBkX9FE?t=1169) -- [21:49 Метод splice](https://youtu.be/D1kfYBkX9FE?t=1309) -- [23:27 Методы reduce и reduceRight](https://youtu.be/D1kfYBkX9FE?t=1407) - -## [Code Review: как это и зачем](https://youtu.be/EKL6NiIQ6ZU) - -## [Семинар: Code Review, ответы на вопросы](https://youtu.be/AgH4OAKbmkM) - -## [Мономорфный и полиморфный код, инлайн-кэш, скрытые классы в JavaScript](https://youtu.be/9JUY3prnCQ4) - -## [Ассоциация, агрегация и композиция объектов в JavaScript](https://youtu.be/tOIcBrzezK0) - -## [Рефакторинг: причины, цели, техники и процесс](https://youtu.be/z73wmpdweQ4) - -## [Принцип подстановки Барбары Лисков](https://youtu.be/RbhYxygxroc) - -## [Композиция функций (pipe, compose) в JavaScript](https://youtu.be/xS9FicVrOTI) - -## [Примеси в JavaScript: mixin, extend, Object.assign, class λ-mixin](https://youtu.be/NZMrJ2adEyY) - -## [Прототипное программирование и прототипное наследование в JavaScript](https://youtu.be/SzaXTW2qcJE) - -## [Мемоизация функций: memoize в JavaScript](https://youtu.be/H6S8QJo2Qxg) - -## [Функции-обертки: Wrappers в JavaScript](https://youtu.be/En7pWi2fSzs) - -## [Новое в JavaScript: ES.Next, ECMAScript 2020, ES11, ES10, ES9, ES8, ES7, ES6, ES2020, ES2019](https://youtu.be/fUjHLj8bq_Y) - -- [00:00 ECMA Script versions](https://youtu.be/fUjHLj8bq_Y?t=0) -- [09:40 Array.proptotype.includes ](https://youtu.be/fUjHLj8bq_Y?t=580) -- [10:55 Array.proptotype.flat ](https://youtu.be/fUjHLj8bq_Y?t=655) -- [11:36 Array.proptotype.flatMap](https://youtu.be/fUjHLj8bq_Y?t=696) -- [12:20 Array.proptotype.sort](https://youtu.be/fUjHLj8bq_Y?t=740) -- [14:24 Object.values ](https://youtu.be/fUjHLj8bq_Y?t=864) -- [15:06 Object.keys ](https://youtu.be/fUjHLj8bq_Y?t=906) -- [15:15 Object.entries ](https://youtu.be/fUjHLj8bq_Y?t=915) -- [15:49 Object.fromEntries ](https://youtu.be/fUjHLj8bq_Y?t=949) -- [16:36 String.proptotype.padStart / String.proptotype.padEnd ](https://youtu.be/fUjHLj8bq_Y?t=996) -- [17:02 String.proptotype.trimStart / String.proptotype.trimEnd](https://youtu.be/fUjHLj8bq_Y?t=1022) -- [17:18 Operator rest ](https://youtu.be/fUjHLj8bq_Y?t=1038) -- [19:38 Operator spread](https://youtu.be/fUjHLj8bq_Y?t=1178) -- [21:34 Operator exponentiation x ** y](https://youtu.be/fUjHLj8bq_Y?t=1294) -- [22:35 Operator optional chaining ?.](https://youtu.be/fUjHLj8bq_Y?t=1355) -- [24:22 Asynchronous function: async / await ](https://youtu.be/fUjHLj8bq_Y?t=1462) -- [26:34 Trailing Commas ](https://youtu.be/fUjHLj8bq_Y?t=1594) -- [28:00 Asynchronous iterable contract: for-await](https://youtu.be/fUjHLj8bq_Y?t=1680) -- [29:51 Try...catch ](https://youtu.be/fUjHLj8bq_Y?t=1791) -- [30:21 Function.prototype.toString ](https://youtu.be/fUjHLj8bq_Y?t=1821) -- [30:58 Symbol.prototype.description ](https://youtu.be/fUjHLj8bq_Y?t=1858) -- [32:11 Promise.finaly ](https://youtu.be/fUjHLj8bq_Y?t=1931) -- [33:22 Promise.allSettled ](https://youtu.be/fUjHLj8bq_Y?t=2002) -- [36:18 More features](https://youtu.be/fUjHLj8bq_Y?t=2178) - -## [Вступительная лекция по инженерии программного обеспечения (КПИ 1 курс) 2021-09-01](https://youtu.be/vWi6KyG078g) - -## [Автоматное программирование c примерами на JavaScript](https://youtu.be/mxz7_zcip0c) - -## [Контрактное программирование с примерами на JavaScript и Node.js](https://youtu.be/K5_kSUvbGEQ) - -## [JavaScript - Практические задачи #1: Пример исправления, лайвкодинг, оптимизация и рефакторинг](https://youtu.be/CRmjViLEE9E) - -## [JavaScript и Node.js: Добавь в Github личную карту знаний](https://youtu.be/gDUGZsw2N2g) From 6faae4f4789731873cb7aaf7696f285e877387d4 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Thu, 4 Aug 2022 15:11:59 +0300 Subject: [PATCH 132/308] Move timecodes for Async prog to separate file --- Courses/Asynchronous-timecodes.md | 122 ++++++++++++++++++++++++++++++ Courses/Asynchronous.md | 122 ------------------------------ 2 files changed, 122 insertions(+), 122 deletions(-) create mode 100644 Courses/Asynchronous-timecodes.md diff --git a/Courses/Asynchronous-timecodes.md b/Courses/Asynchronous-timecodes.md new file mode 100644 index 0000000..56a7d63 --- /dev/null +++ b/Courses/Asynchronous-timecodes.md @@ -0,0 +1,122 @@ +# Таймкоды к курсу "Асинхронное программирование" + +Общее оглавление курса тут: https://github.com/HowProgrammingWorks/Index/blob/master/Courses/Asynchronous.md + +## [Асинхронное программирование в Node.js и JavaScript](https://youtu.be/hY6Z6qNYzmc) + +- [5:45 Callbacks](https://youtu.be/hY6Z6qNYzmc?t=345) +- [10:00 Async.js or analogues](https://youtu.be/hY6Z6qNYzmc?t=600) +- [15:47 Events](https://youtu.be/hY6Z6qNYzmc?t=947) +- [18:00 Promise](https://youtu.be/hY6Z6qNYzmc?t=1080) +- [25:20 async/await](https://youtu.be/hY6Z6qNYzmc?t=1520) +- [27:10 Functor + Chaining + composition](https://youtu.be/hY6Z6qNYzmc?t=1630) +- [30:49 Problems of callback, async.js, Proimise, async/await](https://youtu.be/hY6Z6qNYzmc?t=1849) +- [34:00 Add timeout to any function](https://youtu.be/hY6Z6qNYzmc?t=2040) +- [36:55 Make function cancelable](https://youtu.be/hY6Z6qNYzmc?t=2215) +- [37:59 More wrappers](https://youtu.be/hY6Z6qNYzmc?t=2279) +- [39:22 Promisify and Callbackify](https://youtu.be/hY6Z6qNYzmc?t=2362) +- [48:47 Sync function to async](https://youtu.be/hY6Z6qNYzmc?t=2927) +- [41:43 Sync function to Promise](https://youtu.be/hY6Z6qNYzmc?t=2503) +- [43:17 Convertors](https://youtu.be/hY6Z6qNYzmc?t=2597) +- [43:31 Metasync](https://youtu.be/hY6Z6qNYzmc?t=2611) +- [45:26 Function composition](https://youtu.be/hY6Z6qNYzmc?t=2726) +- [47:09 Asynchronous function composition](https://youtu.be/hY6Z6qNYzmc?t=2829) +- [47:58 Flow communication like in electronics](https://youtu.be/hY6Z6qNYzmc?t=2878) +- [50:06 Collectors](https://youtu.be/hY6Z6qNYzmc?t=3006) +- [59:17 Queue](https://youtu.be/hY6Z6qNYzmc?t=3557) + +## [Таймеры, таймауты, EventEmitter в JavaScript и Node.js](https://youtu.be/LK2jveAnRNg) + +- [0:30 callback sync/async](https://youtu.be/LK2jveAnRNg?t=30) +- [1:35 временная задержка sleep.js](https://youtu.be/LK2jveAnRNg?t=95) +- [5:35 await-sleep.js](https://youtu.be/LK2jveAnRNg?t=335) +- [8:40 sleep-then.js](https://youtu.be/LK2jveAnRNg?t=520) +- [9:30 order.js](https://youtu.be/LK2jveAnRNg?t=570) +- [18:38 precision.js](https://youtu.be/LK2jveAnRNg?t=1118) +- [22:13 blocking.js](https://youtu.be/LK2jveAnRNg?t=1333) +- [22:50 timers.js](https://youtu.be/LK2jveAnRNg?t=1370) +- [29:35 ref-unref.js](https://youtu.be/LK2jveAnRNg?t=1775) +- [32:05 enroll.js](https://youtu.be/LK2jveAnRNg?t=1925) +- [34:57 eventloop.txt](https://youtu.be/LK2jveAnRNg?t=2097) +- [37:37 eventEmitter](https://youtu.be/LK2jveAnRNg?t=2257) +- [44:32 simple.js](https://youtu.be/LK2jveAnRNg?t=2672) +- [47:48 usage.js](https://youtu.be/LK2jveAnRNg?t=2868) +- [48:30 enhanced.js](https://youtu.be/LK2jveAnRNg?t=2910) +- [50:18 star-fix.js](https://youtu.be/LK2jveAnRNg?t=3018) +- [51:10 usage.js](https://youtu.be/LK2jveAnRNg?t=3070) +- [53:15 closure.js](https://youtu.be/LK2jveAnRNg?t=3195) +- [54:50 fp.js](https://youtu.be/LK2jveAnRNg?t=3290) +- [57:10 methods.js](https://youtu.be/LK2jveAnRNg?t=3430) +- [1:06:35 min.js](https://youtu.be/LK2jveAnRNg?t=3995) +- [1:12:31 prod.js](https://youtu.be/LK2jveAnRNg?t=4351) + +## [Асинхронное программирование на callback`ах в JavaScript](https://youtu.be/z8Hg6zgi3yQ) + +- [1:20 пример callback функции](https://youtu.be/z8Hg6zgi3yQ?t=80) +- [2:40 пример последовательного исполнения callback функций](https://youtu.be/z8Hg6zgi3yQ?t=160) +- [5:52 пример параллельного исполнения async функций c использованием wrapAsync](https://youtu.be/z8Hg6zgi3yQ?t=352) +- [15:18 пример последовательного исполнения async функций c использованием wrapAsync](https://youtu.be/z8Hg6zgi3yQ?t=918) +- [19:05 chain исполнение async функций](https://youtu.be/z8Hg6zgi3yQ?t=1145) +- [41:16 где можно встретить асинхронные функции](https://youtu.be/z8Hg6zgi3yQ?t=2476) + +## [Неблокирующее асинхронное итерирование в JavaScript](https://youtu.be/wYA2cIRYLoA) + +- [1:02 блокирующее итерирование по массиву](https://youtu.be/wYA2cIRYLoA?t=62) +- [3:24 блокирующее итерирование с помощью for await](https://youtu.be/wYA2cIRYLoA?t=204) +- [4:47 неблокирующее итерирование с помощью setTimeout](https://youtu.be/wYA2cIRYLoA?t=287) +- [6:45 неблокирующее итерирование с помощью for await](https://youtu.be/wYA2cIRYLoA?t=405) +- [8:20 неблокирующее итерирование без задержки](https://youtu.be/wYA2cIRYLoA?t=500) +- [13:00 неблокирующее итерирование без задержки с помощью for await](https://youtu.be/wYA2cIRYLoA?t=780) +- [19:30 использование асинхронного итерирования для обычных массивов](https://youtu.be/wYA2cIRYLoA?t=1170) + +## [Асинхронность с библиотекой async.js](https://youtu.be/XQ94wQc-erU) + +## [Асинхронность на промисах, Promise, all, then, catch, race](https://youtu.be/RMl4r6s1Y8M) + +## [Асинхронные функции, async/await, thenable, обработка ошибок](https://youtu.be/Jdf_tZuJbHI) + +## [Асинхронные адаптеры: promisify, callbackify, asyncify...](https://youtu.be/76k6_YkYRmU) + +## [Асинхронные коллекторы данных](https://youtu.be/tgodt1JL6II) + +## [Необработанные ошибки в промисах на Node.js](https://youtu.be/1Ml5NE2fsZ8) + +## [Проблема асинхронного стектрейса в JavaScript и Node.js](https://youtu.be/pfiHTx3j87Y) + +## [Генераторы и асинхронные генераторы в JavaScript](https://youtu.be/kvNm9D32s8s) + +- [00:00 Способы объявления генераторов ](https://youtu.be/kvNm9D32s8s?t=0) +- [10:41 Пример генератора с yield ](https://youtu.be/kvNm9D32s8s?t=641) +- [15:54 Пример генератора с yield и return ](https://youtu.be/kvNm9D32s8s?t=954) +- [18:47 Получение значений из генератора циклом for...of ](https://youtu.be/kvNm9D32s8s?t=1127) +- [21:04 Получение значений из генератора spead - оператором ](https://youtu.be/kvNm9D32s8s?t=1264) +- [21:50 Метод next ](https://youtu.be/kvNm9D32s8s?t=1310) +- [23:30 Пример генератора с yield * возвращающего итерируемые объекты ](https://youtu.be/kvNm9D32s8s?t=1410) +- [25:05 Пример генератора с yield * возвращающего другие генераторы ](https://youtu.be/kvNm9D32s8s?t=1505) +- [26:18 Метод return ](https://youtu.be/kvNm9D32s8s?t=1578) +- [28:11 Метод throw](https://youtu.be/kvNm9D32s8s?t=1691) +- [29:05 Обобщение](https://youtu.be/kvNm9D32s8s?t=1745) + +## [Итераторы и асинхронные итераторы в JavaScript](https://youtu.be/rBGFlWpVpGs) + +## [Отмена асинхронных операций, cancellable callback and Promise в JavaScript](https://youtu.be/T8fXlnqI4Ws) + +## [Асинхронная композиция функций на JavaScript](https://youtu.be/3ZCrMlMpOrM) + +## [Thenable и легковесный await в JavaScript](https://youtu.be/DXp__1VNIvI) + +## [Конкурентная асинхронная очередь на JavaScript](https://youtu.be/Lg46AH8wFvg) + +## [Паттерн Revealing Constructor - открытый конструктор](https://youtu.be/leR5sXRkuJI) + +## [Future: Асинхронность на фьючерах без состояния](https://youtu.be/22ONv3AGXdk) + +## [Deferred: Асинхронность на диферах с состоянием](https://youtu.be/a2fVA1o-ovM) + +## [Модель акторов для параллельных вычислений](https://youtu.be/xp5MVKEqxY4) + +## [Паттерн Наблюдатель (Observer + Observable)](https://youtu.be/_bFXuLcXoXg) + +## [Асинхронность на RxJS и потоки событий](https://youtu.be/0kcpMAl-wfE) + +## [Асинхронный пул для worker thread pool в Node.js](https://youtu.be/Jj5KZRq4wYI) diff --git a/Courses/Asynchronous.md b/Courses/Asynchronous.md index 951b3d8..29268ff 100644 --- a/Courses/Asynchronous.md +++ b/Courses/Asynchronous.md @@ -60,125 +60,3 @@ - Async hooks - [Разделяемая память в многопоточном Node.js](https://youtu.be/KNsm_iIQt7U) - [Асинхронный пул для worker thread pool в Node.js](https://youtu.be/Jj5KZRq4wYI) - -# Асинхронное программирование (таймкоды) - -## [Асинхронное программирование в Node.js и JavaScript](https://youtu.be/hY6Z6qNYzmc) - -- [5:45 Callbacks](https://youtu.be/hY6Z6qNYzmc?t=345) -- [10:00 Async.js or analogues](https://youtu.be/hY6Z6qNYzmc?t=600) -- [15:47 Events](https://youtu.be/hY6Z6qNYzmc?t=947) -- [18:00 Promise](https://youtu.be/hY6Z6qNYzmc?t=1080) -- [25:20 async/await](https://youtu.be/hY6Z6qNYzmc?t=1520) -- [27:10 Functor + Chaining + composition](https://youtu.be/hY6Z6qNYzmc?t=1630) -- [30:49 Problems of callback, async.js, Proimise, async/await](https://youtu.be/hY6Z6qNYzmc?t=1849) -- [34:00 Add timeout to any function](https://youtu.be/hY6Z6qNYzmc?t=2040) -- [36:55 Make function cancelable](https://youtu.be/hY6Z6qNYzmc?t=2215) -- [37:59 More wrappers](https://youtu.be/hY6Z6qNYzmc?t=2279) -- [39:22 Promisify and Callbackify](https://youtu.be/hY6Z6qNYzmc?t=2362) -- [48:47 Sync function to async](https://youtu.be/hY6Z6qNYzmc?t=2927) -- [41:43 Sync function to Promise](https://youtu.be/hY6Z6qNYzmc?t=2503) -- [43:17 Convertors](https://youtu.be/hY6Z6qNYzmc?t=2597) -- [43:31 Metasync](https://youtu.be/hY6Z6qNYzmc?t=2611) -- [45:26 Function composition](https://youtu.be/hY6Z6qNYzmc?t=2726) -- [47:09 Asynchronous function composition](https://youtu.be/hY6Z6qNYzmc?t=2829) -- [47:58 Flow communication like in electronics](https://youtu.be/hY6Z6qNYzmc?t=2878) -- [50:06 Collectors](https://youtu.be/hY6Z6qNYzmc?t=3006) -- [59:17 Queue](https://youtu.be/hY6Z6qNYzmc?t=3557) - -## [Таймеры, таймауты, EventEmitter в JavaScript и Node.js](https://youtu.be/LK2jveAnRNg) - -- [0:30 callback sync/async](https://youtu.be/LK2jveAnRNg?t=30) -- [1:35 временная задержка sleep.js](https://youtu.be/LK2jveAnRNg?t=95) -- [5:35 await-sleep.js](https://youtu.be/LK2jveAnRNg?t=335) -- [8:40 sleep-then.js](https://youtu.be/LK2jveAnRNg?t=520) -- [9:30 order.js](https://youtu.be/LK2jveAnRNg?t=570) -- [18:38 precision.js](https://youtu.be/LK2jveAnRNg?t=1118) -- [22:13 blocking.js](https://youtu.be/LK2jveAnRNg?t=1333) -- [22:50 timers.js](https://youtu.be/LK2jveAnRNg?t=1370) -- [29:35 ref-unref.js](https://youtu.be/LK2jveAnRNg?t=1775) -- [32:05 enroll.js](https://youtu.be/LK2jveAnRNg?t=1925) -- [34:57 eventloop.txt](https://youtu.be/LK2jveAnRNg?t=2097) -- [37:37 eventEmitter](https://youtu.be/LK2jveAnRNg?t=2257) -- [44:32 simple.js](https://youtu.be/LK2jveAnRNg?t=2672) -- [47:48 usage.js](https://youtu.be/LK2jveAnRNg?t=2868) -- [48:30 enhanced.js](https://youtu.be/LK2jveAnRNg?t=2910) -- [50:18 star-fix.js](https://youtu.be/LK2jveAnRNg?t=3018) -- [51:10 usage.js](https://youtu.be/LK2jveAnRNg?t=3070) -- [53:15 closure.js](https://youtu.be/LK2jveAnRNg?t=3195) -- [54:50 fp.js](https://youtu.be/LK2jveAnRNg?t=3290) -- [57:10 methods.js](https://youtu.be/LK2jveAnRNg?t=3430) -- [1:06:35 min.js](https://youtu.be/LK2jveAnRNg?t=3995) -- [1:12:31 prod.js](https://youtu.be/LK2jveAnRNg?t=4351) - -## [Асинхронное программирование на callback`ах в JavaScript](https://youtu.be/z8Hg6zgi3yQ) - -- [1:20 пример callback функции](https://youtu.be/z8Hg6zgi3yQ?t=80) -- [2:40 пример последовательного исполнения callback функций](https://youtu.be/z8Hg6zgi3yQ?t=160) -- [5:52 пример параллельного исполнения async функций c использованием wrapAsync](https://youtu.be/z8Hg6zgi3yQ?t=352) -- [15:18 пример последовательного исполнения async функций c использованием wrapAsync](https://youtu.be/z8Hg6zgi3yQ?t=918) -- [19:05 chain исполнение async функций](https://youtu.be/z8Hg6zgi3yQ?t=1145) -- [41:16 где можно встретить асинхронные функции](https://youtu.be/z8Hg6zgi3yQ?t=2476) - -## [Неблокирующее асинхронное итерирование в JavaScript](https://youtu.be/wYA2cIRYLoA) - -- [1:02 блокирующее итерирование по массиву](https://youtu.be/wYA2cIRYLoA?t=62) -- [3:24 блокирующее итерирование с помощью for await](https://youtu.be/wYA2cIRYLoA?t=204) -- [4:47 неблокирующее итерирование с помощью setTimeout](https://youtu.be/wYA2cIRYLoA?t=287) -- [6:45 неблокирующее итерирование с помощью for await](https://youtu.be/wYA2cIRYLoA?t=405) -- [8:20 неблокирующее итерирование без задержки](https://youtu.be/wYA2cIRYLoA?t=500) -- [13:00 неблокирующее итерирование без задержки с помощью for await](https://youtu.be/wYA2cIRYLoA?t=780) -- [19:30 использование асинхронного итерирования для обычных массивов](https://youtu.be/wYA2cIRYLoA?t=1170) - -## [Асинхронность с библиотекой async.js](https://youtu.be/XQ94wQc-erU) - -## [Асинхронность на промисах, Promise, all, then, catch, race](https://youtu.be/RMl4r6s1Y8M) - -## [Асинхронные функции, async/await, thenable, обработка ошибок](https://youtu.be/Jdf_tZuJbHI) - -## [Асинхронные адаптеры: promisify, callbackify, asyncify...](https://youtu.be/76k6_YkYRmU) - -## [Асинхронные коллекторы данных](https://youtu.be/tgodt1JL6II) - -## [Необработанные ошибки в промисах на Node.js](https://youtu.be/1Ml5NE2fsZ8) - -## [Проблема асинхронного стектрейса в JavaScript и Node.js](https://youtu.be/pfiHTx3j87Y) - -## [Генераторы и асинхронные генераторы в JavaScript](https://youtu.be/kvNm9D32s8s) - -- [00:00 Способы объявления генераторов ](https://youtu.be/kvNm9D32s8s?t=0) -- [10:41 Пример генератора с yield ](https://youtu.be/kvNm9D32s8s?t=641) -- [15:54 Пример генератора с yield и return ](https://youtu.be/kvNm9D32s8s?t=954) -- [18:47 Получение значений из генератора циклом for...of ](https://youtu.be/kvNm9D32s8s?t=1127) -- [21:04 Получение значений из генератора spead - оператором ](https://youtu.be/kvNm9D32s8s?t=1264) -- [21:50 Метод next ](https://youtu.be/kvNm9D32s8s?t=1310) -- [23:30 Пример генератора с yield * возвращающего итерируемые объекты ](https://youtu.be/kvNm9D32s8s?t=1410) -- [25:05 Пример генератора с yield * возвращающего другие генераторы ](https://youtu.be/kvNm9D32s8s?t=1505) -- [26:18 Метод return ](https://youtu.be/kvNm9D32s8s?t=1578) -- [28:11 Метод throw](https://youtu.be/kvNm9D32s8s?t=1691) -- [29:05 Обобщение](https://youtu.be/kvNm9D32s8s?t=1745) - -## [Итераторы и асинхронные итераторы в JavaScript](https://youtu.be/rBGFlWpVpGs) - -## [Отмена асинхронных операций, cancellable callback and Promise в JavaScript](https://youtu.be/T8fXlnqI4Ws) - -## [Асинхронная композиция функций на JavaScript](https://youtu.be/3ZCrMlMpOrM) - -## [Thenable и легковесный await в JavaScript](https://youtu.be/DXp__1VNIvI) - -## [Конкурентная асинхронная очередь на JavaScript](https://youtu.be/Lg46AH8wFvg) - -## [Паттерн Revealing Constructor - открытый конструктор](https://youtu.be/leR5sXRkuJI) - -## [Future: Асинхронность на фьючерах без состояния](https://youtu.be/22ONv3AGXdk) - -## [Deferred: Асинхронность на диферах с состоянием](https://youtu.be/a2fVA1o-ovM) - -## [Модель акторов для параллельных вычислений](https://youtu.be/xp5MVKEqxY4) - -## [Паттерн Наблюдатель (Observer + Observable)](https://youtu.be/_bFXuLcXoXg) - -## [Асинхронность на RxJS и потоки событий](https://youtu.be/0kcpMAl-wfE) - -## [Асинхронный пул для worker thread pool в Node.js](https://youtu.be/Jj5KZRq4wYI) - From 9b8cb2fa575e80c7857d7eb5d60a3ce50e5ca2cc Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Thu, 4 Aug 2022 15:13:57 +0300 Subject: [PATCH 133/308] Move timecodes for Functional prog to separate file --- Courses/Functional-timecodes.md | 165 ++++++++++++++++++++++++++++++++ Courses/Functional.md | 165 -------------------------------- 2 files changed, 165 insertions(+), 165 deletions(-) create mode 100644 Courses/Functional-timecodes.md diff --git a/Courses/Functional-timecodes.md b/Courses/Functional-timecodes.md new file mode 100644 index 0000000..8ca0e61 --- /dev/null +++ b/Courses/Functional-timecodes.md @@ -0,0 +1,165 @@ +# Таймкоды к курсу "Функциональное программирование" + +Общее оглавление курса тут: https://github.com/HowProgrammingWorks/Index/blob/master/Courses/Functional.md + +## [Функции, лямбды (стрелочные функции), контексты, замыкания в JavaScript](https://youtu.be/pn5myCmpV2U) + +- [00:00:00 Введение ](https://youtu.be/pn5myCmpV2U?t=0) +- [00:11:22 Функция объявление (Declaration)](https://youtu.be/pn5myCmpV2U?t=682) +- [00:12:46 Функция выражение (Expression)](https://youtu.be/pn5myCmpV2U?t=766) +- [00:16:07 Лямбда-выражение (Lambda expression) или функция-стрелка (Arrow function) ](https://youtu.be/pn5myCmpV2U?t=967) +- [00:16:43 Лямбда-функция (Lambda function) ](https://youtu.be/pn5myCmpV2U?t=1003) +- [00:18:45 Область видимости (Scope)](https://youtu.be/pn5myCmpV2U?t=1125) +- [00:25:00 Функции, как абстракции](https://youtu.be/pn5myCmpV2U?t=1500) +- [00:26:43 Методы функции (name, length, toString( ) )](https://youtu.be/pn5myCmpV2U?t=1603) +- [00:31:26 Значения по умолчанию у функции ](https://youtu.be/pn5myCmpV2U?t=1886) +- [00:36:46 Rest-оператор (...args)](https://youtu.be/pn5myCmpV2U?t=2206) +- [00:41:49 Способ определения функции, через new Function](https://youtu.be/pn5myCmpV2U?t=2509) +- [00:44:46 Функции внутри объекта](https://youtu.be/pn5myCmpV2U?t=2686) +- [00:50:42 Обращение к полям объекта из привязанной функции, через this](https://youtu.be/pn5myCmpV2U?t=3042) +- [00:55:24 История синтаксиса создания контекстов, через самовызывающиеся функции ( IIFE)](https://youtu.be/pn5myCmpV2U?t=3324) +- [00:58:30 Методы функции, наследуемой от объекта (call, apply)](https://youtu.be/pn5myCmpV2U?t=3510) +- [01:00:53 Комментирование функций](https://youtu.be/pn5myCmpV2U?t=3653) +- [01:01:27 Задание декомпозиции функции](https://youtu.be/pn5myCmpV2U?t=3687) +- [01:04:24 Замыкание: context ](https://youtu.be/pn5myCmpV2U?t=3864) +- [01:08:41 Замыкание: chainning ](https://youtu.be/pn5myCmpV2U?t=4121) +- [01:11:55 Замыкание: summator ](https://youtu.be/pn5myCmpV2U?t=4315) +- [01:14:16 Замыкание: recursion](https://youtu.be/pn5myCmpV2U?t=4456) + +## [Частичное применение и каррирование в JavaScript ( Partial application )](https://youtu.be/ND8KQ5xjk7o) + +- [00:00:00 Замыкание ](https://youtu.be/ND8KQ5xjk7o?t=0) +- [00:04:54 Лямбда- функция ](https://youtu.be/ND8KQ5xjk7o?t=294) +- [00:06:06 Метод bind ](https://youtu.be/ND8KQ5xjk7o?t=366) +- [00:08:30 Абстрагированный пример функции ](https://youtu.be/ND8KQ5xjk7o?t=510) +- [00:13:42 Абстрагированный пример функции (расширение) ](https://youtu.be/ND8KQ5xjk7o?t=822) +- [00:15:47 Неправильная реализация каррирования ](https://youtu.be/ND8KQ5xjk7o?t=947) +- [00:22:22 Правильная реализация каррирования ](https://youtu.be/ND8KQ5xjk7o?t=1342) +- [00:28:54 Правильная реализация каррирования (расширение)](https://youtu.be/ND8KQ5xjk7o?t=1734) +- [00:31:41 Функциональные абстракции (superposition)](https://youtu.be/ND8KQ5xjk7o?t=1901) +- [00:38:02 Функциональные абстракции, с сохранением выражений (composition)](https://youtu.be/ND8KQ5xjk7o?t=2282) +- [00:45:05 Композиция с 2 функциями](https://youtu.be/ND8KQ5xjk7o?t=2705) +- [00:46:05 Композиция с n - функциями, при помощи метода reduce](https://youtu.be/ND8KQ5xjk7o?t=2765) +- [00:51:25 Композиция с n - функциями, при помощи цикла ](https://youtu.be/ND8KQ5xjk7o?t=3085) +- [00:54:29 Композиция с n - функциями, при помощи рекурсии](https://youtu.be/ND8KQ5xjk7o?t=3269) +- [00:57:40 Композиция асинхронных функций ](https://youtu.be/ND8KQ5xjk7o?t=3460) +- [01:01:27 Обобщение](https://youtu.be/ND8KQ5xjk7o?t=3687) + +## [Функции высшего порядка, колбеки, события на JavaScript (HigherOrderFunctions, callbacks, events)](https://youtu.be/1vqATwbGHnc) + +- [00:00:00 Определение ](https://youtu.be/1vqATwbGHnc?t=0) +- [00:02:03 Математическая функция ](https://youtu.be/1vqATwbGHnc?t=123) +- [00:05:57 Функция обратного вызова (callback) ](https://youtu.be/1vqATwbGHnc?t=357) +- [00:09:33 Замыкание ](https://youtu.be/1vqATwbGHnc?t=573) +- [00:10:51 Цепочка вызовов ](https://youtu.be/1vqATwbGHnc?t=651) +- [00:12:40 Сохранение кэша с помощью замыкания](https://youtu.be/1vqATwbGHnc?t=760) +- [00:18:29 Добавление функции поведение логирования](https://youtu.be/1vqATwbGHnc?t=1109) +- [00:21:45 Обобщение ](https://youtu.be/1vqATwbGHnc?t=1305) +- [00:22:45 Сallback](https://youtu.be/1vqATwbGHnc?t=1365) +- [00:25:32 Сallback асинхронной функции считывание файла](https://youtu.be/1vqATwbGHnc?t=1532) +- [00:28:36 Сallback именованный](https://youtu.be/1vqATwbGHnc?t=1716) +- [00:33:01 Сallback-timer ](https://youtu.be/1vqATwbGHnc?t=1981) +- [00:36:20 Сallback-timer-curry](https://youtu.be/1vqATwbGHnc?t=2180) +- [00:38:59 Listener](https://youtu.be/1vqATwbGHnc?t=2339) +- [00:41:10 Listener-timer](https://youtu.be/1vqATwbGHnc?t=2470) +- [00:46:59 Event](https://youtu.be/1vqATwbGHnc?t=2819) +- [00:53:45 Event-imitter ](https://youtu.be/1vqATwbGHnc?t=3225) +- [00:57:48 Deferred object (отложенный объект)](https://youtu.be/1vqATwbGHnc?t=3468) +- [01:01:31 Errors](https://youtu.be/1vqATwbGHnc?t=3691) + +## [Примеси, обертки, декораторы, мемоизация в JavaScript (Wrappers)](https://youtu.be/oRQ0kQr1N-U) + +- [00:00:00 Синхронная функция-обертка ](https://youtu.be/oRQ0kQr1N-U?t=0) +- [00:02:55 Синхронная универсальная функция-обертка ](https://youtu.be/oRQ0kQr1N-U?t=175) +- [00:08:28 Асинхронная универсальная функция-обертка ](https://youtu.be/oRQ0kQr1N-U?t=508) +- [00:15:50 Синхронная функция-обертка, которая добавляет поведение (timeout)](https://youtu.be/oRQ0kQr1N-U?t=950) +- [00:22:45 Асинхронная функция-обертка, которая добавляет поведение (timeout)](https://youtu.be/oRQ0kQr1N-U?t=1365) +- [00:25:38 Функция-обертка, которая ограничивает вызов функции до одного вызова (once) ](https://youtu.be/oRQ0kQr1N-U?t=1538) +- [00:27:36 Функция-обертка, которая ограничивает вызов функции до n-го вызова (limit)](https://youtu.be/oRQ0kQr1N-U?t=1656) +- [00:29:50 Функция-обертка, которая отменяет вызов функции (cancel)](https://youtu.be/oRQ0kQr1N-U?t=1790) +- [00:32:29 Функция-обертка с методами timeout, limit, cancel](https://youtu.be/oRQ0kQr1N-U?t=1949) +- [00:39:03 Функция-обертка с методами timeout, limit, cancel (оптимизированная)](https://youtu.be/oRQ0kQr1N-U?t=2343) +- [00:42:28 Функция-обертка, которая ограничивает один вызов за 200 мс (throttle)](https://youtu.be/oRQ0kQr1N-U?t=2548) +- [00:45:47 Примесь поля через точку ](https://youtu.be/oRQ0kQr1N-U?t=2747) +- [00:51:35 Примесь поля через функцию extend](https://youtu.be/oRQ0kQr1N-U?t=3095) +- [00:57:35 Примесь поля через object.assign( )](https://youtu.be/oRQ0kQr1N-U?t=3455) +- [00:59:18 Примесь поведения ](https://youtu.be/oRQ0kQr1N-U?t=3558) +- [01:02:23 Примесь изменения класса](https://youtu.be/oRQ0kQr1N-U?t=3743) +- [01:06:50 Определение](https://youtu.be/oRQ0kQr1N-U?t=4010) +- [01:07:30 Реализация простой мемоизации ](https://youtu.be/oRQ0kQr1N-U?t=4050) +- [01:14:43 Реализация простой мемоизации с проверкой скорости ](https://youtu.be/oRQ0kQr1N-U?t=4483) +- [01:20:43 Удаление накопленного кэша ](https://youtu.be/oRQ0kQr1N-U?t=4843) +- [01:25:35 Асинхронная мемоизация ](https://youtu.be/oRQ0kQr1N-U?t=5135) +- [01:31:10 Преобразование аргументов и ключей в hash-функцию](https://youtu.be/oRQ0kQr1N-U?t=5470) +- [01:33:32 Реализация сложной мемоизации](https://youtu.be/oRQ0kQr1N-U?t=5612) + +## [Чеининг функций и объектов, обработка ошибок в JavaScript](https://youtu.be/PfuEfIiLX34) + +- [00:00:00 Введение ](https://youtu.be/PfuEfIiLX34?t=0) +- [00:01:10 Чеининг через синтаксис вызова функций ](https://youtu.be/PfuEfIiLX34?t=70) +- [00:02:12 Prototype ](https://youtu.be/PfuEfIiLX34?t=132) +- [00:05:45 Сlass](https://youtu.be/PfuEfIiLX34?t=345) +- [00:06:11 Functor](https://youtu.be/PfuEfIiLX34?t=371) +- [00:11:54 Mutable](https://youtu.be/PfuEfIiLX34?t=714) +- [00:16:34 Iterator](https://youtu.be/PfuEfIiLX34?t=994) +- [00:26:18 Promise ](https://youtu.be/PfuEfIiLX34?t=1578) +- [00:26:35 Test](https://youtu.be/PfuEfIiLX34?t=1595) +- [00:37:08 Compare ](https://youtu.be/PfuEfIiLX34?t=2228) +- [00:39:45 Benchmark](https://youtu.be/PfuEfIiLX34?t=2385) +- [00:40:48 Запуск и анализ тестов ](https://youtu.be/PfuEfIiLX34?t=2448) +- [01:03:48 Первый способ возвращение ошибок в синхронном коде ](https://youtu.be/PfuEfIiLX34?t=3828) +- [01:09:24 Второй способ возвращение ошибок в синхронном коде ](https://youtu.be/PfuEfIiLX34?t=4164) +- [01:12:26 Возвращение ошибок в асинхронном коде ](https://youtu.be/PfuEfIiLX34?t=4346) +- [01:16:14 Корректное возвращение ошибок ](https://youtu.be/PfuEfIiLX34?t=4574) +- [01:20:03 Обработка ошибок c promise ](https://youtu.be/PfuEfIiLX34?t=4803) +- [01:23:58 Обработка ошибок c async-await](https://youtu.be/PfuEfIiLX34?t=5038) + +## [Функциональное программирование на JavaScript](https://youtu.be/0JxSs_GcvbQ) + +## [Функциональные объекты, функторы и монады в JavaScript](https://youtu.be/3Z7f0Gi8pxw) + +- [00:00:00 Определение функтора ](https://youtu.be/3Z7f0Gi8pxw?t=0) +- [00:01:40 Функтор из прототипа ](https://youtu.be/3Z7f0Gi8pxw?t=100) +- [00:08:17 Функтор из прототипа (упрощенный) ](https://youtu.be/3Z7f0Gi8pxw?t=497) +- [00:09:14 Функтор из замыкания ](https://youtu.be/3Z7f0Gi8pxw?t=554) +- [00:11:49 Функтор из замыкания с тернарным оператором](https://youtu.be/3Z7f0Gi8pxw?t=709) +- [00:12:44 Аппликативный функтор из прототипа ](https://youtu.be/3Z7f0Gi8pxw?t=764) +- [00:18:08 Аппликативный функтор из замыкания (монада)](https://youtu.be/3Z7f0Gi8pxw?t=1088) +- [00:23:11 Пример применения монады ](https://youtu.be/3Z7f0Gi8pxw?t=1391) +- [00:28:37 Функциональный объект ](https://youtu.be/3Z7f0Gi8pxw?t=1717) +- [00:39:44 Пример применения функционального объекта](https://youtu.be/3Z7f0Gi8pxw?t=2384) +- [00:45:27 Обобщение](https://youtu.be/3Z7f0Gi8pxw?t=2727) + +## [Отмена асинхронных операций, cancellable callback and Promise в JavaScript](https://youtu.be/T8fXlnqI4Ws) + +## [Future: Асинхронность на фьючерах без состояния](https://youtu.be/22ONv3AGXdk) + +## [Примеси, обертки, декораторы, мемоизация](https://youtu.be/2h9syXN5wO0) + +- [00:00:00 Синхронная функция-обертка ](https://youtu.be/2h9syXN5wO0?t=0) +- [00:02:55 Синхронная универсальная функция-обертка ](https://youtu.be/2h9syXN5wO0?t=175) +- [00:08:28 Асинхронная универсальная функция-обертка ](https://youtu.be/2h9syXN5wO0?t=508) +- [00:15:50 Синхронная функция-обертка, которая добавляет поведение (timeout)](https://youtu.be/2h9syXN5wO0?t=950) +- [00:22:45 Асинхронная функция-обертка, которая добавляет поведение (timeout)](https://youtu.be/2h9syXN5wO0?t=1365) +- [00:25:38 Функция-обертка, которая ограничивает вызов функции до одного вызова (once) ](https://youtu.be/2h9syXN5wO0?t=1538) +- [00:27:36 Функция-обертка, которая ограничивает вызов функции до n-го вызова (limit)](https://youtu.be/2h9syXN5wO0?t=1656) +- [00:29:50 Функция-обертка, которая отменяет вызов функции (cancel)](https://youtu.be/2h9syXN5wO0?t=1790) +- [00:32:29 Функция-обертка с методами timeout, limit, cancel](https://youtu.be/2h9syXN5wO0?t=1949) +- [00:39:03 Функция-обертка с методами timeout, limit, cancel (оптимизированная)](https://youtu.be/2h9syXN5wO0?t=2343) +- [00:42:28 Функция-обертка, которая ограничивает один вызов за 200 мс (throttle)](https://youtu.be/2h9syXN5wO0?t=2548) +- [00:45:47 Примесь поля через точку ](https://youtu.be/2h9syXN5wO0?t=2747) +- [00:51:35 Примесь поля через функцию extend](https://youtu.be/2h9syXN5wO0?t=3095) +- [00:57:35 Примесь поля через object.assign( )](https://youtu.be/2h9syXN5wO0?t=3455) +- [00:59:18 Примесь поведения ](https://youtu.be/2h9syXN5wO0?t=3558) +- [01:02:23 Примесь изменения класса](https://youtu.be/2h9syXN5wO0?t=3743) +- [01:06:50 Определение](https://youtu.be/2h9syXN5wO0?t=4010) +- [01:07:30 Реализация простой мемоизации ](https://youtu.be/2h9syXN5wO0?t=4050) +- [01:14:43 Реализация простой мемоизации с проверкой скорости ](https://youtu.be/2h9syXN5wO0?t=4483) +- [01:20:43 Удаление накопленного кэша ](https://youtu.be/2h9syXN5wO0?t=4843) +- [01:25:35 Асинхронная мемоизация ](https://youtu.be/2h9syXN5wO0?t=5135) +- [01:31:10 Преобразование аргументов и ключей в hash-функцию](https://youtu.be/2h9syXN5wO0?t=5470) +- [01:33:32 Реализация сложной мемоизации](https://youtu.be/2h9syXN5wO0?t=5612) + +## [Мемоизация функций: memoize в JavaScript](https://youtu.be/H6S8QJo2Qxg) + +## [Композиция функций (pipe, compose) в JavaScript](https://youtu.be/xS9FicVrOTI) diff --git a/Courses/Functional.md b/Courses/Functional.md index 21e382e..57cfee5 100644 --- a/Courses/Functional.md +++ b/Courses/Functional.md @@ -29,168 +29,3 @@ - [Асинхронная композиция функций](https://youtu.be/3ZCrMlMpOrM) - Примеры кода: https://github.com/HowProgrammingWorks/AsyncCompose - [Принцип подстановки Барбары Лисков](https://youtu.be/RbhYxygxroc) - -# Functional programming (таймкоды) - -## [Функции, лямбды (стрелочные функции), контексты, замыкания в JavaScript](https://youtu.be/pn5myCmpV2U) - -- [00:00:00 Введение ](https://youtu.be/pn5myCmpV2U?t=0) -- [00:11:22 Функция объявление (Declaration)](https://youtu.be/pn5myCmpV2U?t=682) -- [00:12:46 Функция выражение (Expression)](https://youtu.be/pn5myCmpV2U?t=766) -- [00:16:07 Лямбда-выражение (Lambda expression) или функция-стрелка (Arrow function) ](https://youtu.be/pn5myCmpV2U?t=967) -- [00:16:43 Лямбда-функция (Lambda function) ](https://youtu.be/pn5myCmpV2U?t=1003) -- [00:18:45 Область видимости (Scope)](https://youtu.be/pn5myCmpV2U?t=1125) -- [00:25:00 Функции, как абстракции](https://youtu.be/pn5myCmpV2U?t=1500) -- [00:26:43 Методы функции (name, length, toString( ) )](https://youtu.be/pn5myCmpV2U?t=1603) -- [00:31:26 Значения по умолчанию у функции ](https://youtu.be/pn5myCmpV2U?t=1886) -- [00:36:46 Rest-оператор (...args)](https://youtu.be/pn5myCmpV2U?t=2206) -- [00:41:49 Способ определения функции, через new Function](https://youtu.be/pn5myCmpV2U?t=2509) -- [00:44:46 Функции внутри объекта](https://youtu.be/pn5myCmpV2U?t=2686) -- [00:50:42 Обращение к полям объекта из привязанной функции, через this](https://youtu.be/pn5myCmpV2U?t=3042) -- [00:55:24 История синтаксиса создания контекстов, через самовызывающиеся функции ( IIFE)](https://youtu.be/pn5myCmpV2U?t=3324) -- [00:58:30 Методы функции, наследуемой от объекта (call, apply)](https://youtu.be/pn5myCmpV2U?t=3510) -- [01:00:53 Комментирование функций](https://youtu.be/pn5myCmpV2U?t=3653) -- [01:01:27 Задание декомпозиции функции](https://youtu.be/pn5myCmpV2U?t=3687) -- [01:04:24 Замыкание: context ](https://youtu.be/pn5myCmpV2U?t=3864) -- [01:08:41 Замыкание: chainning ](https://youtu.be/pn5myCmpV2U?t=4121) -- [01:11:55 Замыкание: summator ](https://youtu.be/pn5myCmpV2U?t=4315) -- [01:14:16 Замыкание: recursion](https://youtu.be/pn5myCmpV2U?t=4456) - -## [Частичное применение и каррирование в JavaScript ( Partial application )](https://youtu.be/ND8KQ5xjk7o) - -- [00:00:00 Замыкание ](https://youtu.be/ND8KQ5xjk7o?t=0) -- [00:04:54 Лямбда- функция ](https://youtu.be/ND8KQ5xjk7o?t=294) -- [00:06:06 Метод bind ](https://youtu.be/ND8KQ5xjk7o?t=366) -- [00:08:30 Абстрагированный пример функции ](https://youtu.be/ND8KQ5xjk7o?t=510) -- [00:13:42 Абстрагированный пример функции (расширение) ](https://youtu.be/ND8KQ5xjk7o?t=822) -- [00:15:47 Неправильная реализация каррирования ](https://youtu.be/ND8KQ5xjk7o?t=947) -- [00:22:22 Правильная реализация каррирования ](https://youtu.be/ND8KQ5xjk7o?t=1342) -- [00:28:54 Правильная реализация каррирования (расширение)](https://youtu.be/ND8KQ5xjk7o?t=1734) -- [00:31:41 Функциональные абстракции (superposition)](https://youtu.be/ND8KQ5xjk7o?t=1901) -- [00:38:02 Функциональные абстракции, с сохранением выражений (composition)](https://youtu.be/ND8KQ5xjk7o?t=2282) -- [00:45:05 Композиция с 2 функциями](https://youtu.be/ND8KQ5xjk7o?t=2705) -- [00:46:05 Композиция с n - функциями, при помощи метода reduce](https://youtu.be/ND8KQ5xjk7o?t=2765) -- [00:51:25 Композиция с n - функциями, при помощи цикла ](https://youtu.be/ND8KQ5xjk7o?t=3085) -- [00:54:29 Композиция с n - функциями, при помощи рекурсии](https://youtu.be/ND8KQ5xjk7o?t=3269) -- [00:57:40 Композиция асинхронных функций ](https://youtu.be/ND8KQ5xjk7o?t=3460) -- [01:01:27 Обобщение](https://youtu.be/ND8KQ5xjk7o?t=3687) - -## [Функции высшего порядка, колбеки, события на JavaScript (HigherOrderFunctions, callbacks, events)](https://youtu.be/1vqATwbGHnc) - -- [00:00:00 Определение ](https://youtu.be/1vqATwbGHnc?t=0) -- [00:02:03 Математическая функция ](https://youtu.be/1vqATwbGHnc?t=123) -- [00:05:57 Функция обратного вызова (callback) ](https://youtu.be/1vqATwbGHnc?t=357) -- [00:09:33 Замыкание ](https://youtu.be/1vqATwbGHnc?t=573) -- [00:10:51 Цепочка вызовов ](https://youtu.be/1vqATwbGHnc?t=651) -- [00:12:40 Сохранение кэша с помощью замыкания](https://youtu.be/1vqATwbGHnc?t=760) -- [00:18:29 Добавление функции поведение логирования](https://youtu.be/1vqATwbGHnc?t=1109) -- [00:21:45 Обобщение ](https://youtu.be/1vqATwbGHnc?t=1305) -- [00:22:45 Сallback](https://youtu.be/1vqATwbGHnc?t=1365) -- [00:25:32 Сallback асинхронной функции считывание файла](https://youtu.be/1vqATwbGHnc?t=1532) -- [00:28:36 Сallback именованный](https://youtu.be/1vqATwbGHnc?t=1716) -- [00:33:01 Сallback-timer ](https://youtu.be/1vqATwbGHnc?t=1981) -- [00:36:20 Сallback-timer-curry](https://youtu.be/1vqATwbGHnc?t=2180) -- [00:38:59 Listener](https://youtu.be/1vqATwbGHnc?t=2339) -- [00:41:10 Listener-timer](https://youtu.be/1vqATwbGHnc?t=2470) -- [00:46:59 Event](https://youtu.be/1vqATwbGHnc?t=2819) -- [00:53:45 Event-imitter ](https://youtu.be/1vqATwbGHnc?t=3225) -- [00:57:48 Deferred object (отложенный объект)](https://youtu.be/1vqATwbGHnc?t=3468) -- [01:01:31 Errors](https://youtu.be/1vqATwbGHnc?t=3691) - -## [Примеси, обертки, декораторы, мемоизация в JavaScript (Wrappers)](https://youtu.be/oRQ0kQr1N-U) - -- [00:00:00 Синхронная функция-обертка ](https://youtu.be/oRQ0kQr1N-U?t=0) -- [00:02:55 Синхронная универсальная функция-обертка ](https://youtu.be/oRQ0kQr1N-U?t=175) -- [00:08:28 Асинхронная универсальная функция-обертка ](https://youtu.be/oRQ0kQr1N-U?t=508) -- [00:15:50 Синхронная функция-обертка, которая добавляет поведение (timeout)](https://youtu.be/oRQ0kQr1N-U?t=950) -- [00:22:45 Асинхронная функция-обертка, которая добавляет поведение (timeout)](https://youtu.be/oRQ0kQr1N-U?t=1365) -- [00:25:38 Функция-обертка, которая ограничивает вызов функции до одного вызова (once) ](https://youtu.be/oRQ0kQr1N-U?t=1538) -- [00:27:36 Функция-обертка, которая ограничивает вызов функции до n-го вызова (limit)](https://youtu.be/oRQ0kQr1N-U?t=1656) -- [00:29:50 Функция-обертка, которая отменяет вызов функции (cancel)](https://youtu.be/oRQ0kQr1N-U?t=1790) -- [00:32:29 Функция-обертка с методами timeout, limit, cancel](https://youtu.be/oRQ0kQr1N-U?t=1949) -- [00:39:03 Функция-обертка с методами timeout, limit, cancel (оптимизированная)](https://youtu.be/oRQ0kQr1N-U?t=2343) -- [00:42:28 Функция-обертка, которая ограничивает один вызов за 200 мс (throttle)](https://youtu.be/oRQ0kQr1N-U?t=2548) -- [00:45:47 Примесь поля через точку ](https://youtu.be/oRQ0kQr1N-U?t=2747) -- [00:51:35 Примесь поля через функцию extend](https://youtu.be/oRQ0kQr1N-U?t=3095) -- [00:57:35 Примесь поля через object.assign( )](https://youtu.be/oRQ0kQr1N-U?t=3455) -- [00:59:18 Примесь поведения ](https://youtu.be/oRQ0kQr1N-U?t=3558) -- [01:02:23 Примесь изменения класса](https://youtu.be/oRQ0kQr1N-U?t=3743) -- [01:06:50 Определение](https://youtu.be/oRQ0kQr1N-U?t=4010) -- [01:07:30 Реализация простой мемоизации ](https://youtu.be/oRQ0kQr1N-U?t=4050) -- [01:14:43 Реализация простой мемоизации с проверкой скорости ](https://youtu.be/oRQ0kQr1N-U?t=4483) -- [01:20:43 Удаление накопленного кэша ](https://youtu.be/oRQ0kQr1N-U?t=4843) -- [01:25:35 Асинхронная мемоизация ](https://youtu.be/oRQ0kQr1N-U?t=5135) -- [01:31:10 Преобразование аргументов и ключей в hash-функцию](https://youtu.be/oRQ0kQr1N-U?t=5470) -- [01:33:32 Реализация сложной мемоизации](https://youtu.be/oRQ0kQr1N-U?t=5612) - -## [Чеининг функций и объектов, обработка ошибок в JavaScript](https://youtu.be/PfuEfIiLX34) - -- [00:00:00 Введение ](https://youtu.be/PfuEfIiLX34?t=0) -- [00:01:10 Чеининг через синтаксис вызова функций ](https://youtu.be/PfuEfIiLX34?t=70) -- [00:02:12 Prototype ](https://youtu.be/PfuEfIiLX34?t=132) -- [00:05:45 Сlass](https://youtu.be/PfuEfIiLX34?t=345) -- [00:06:11 Functor](https://youtu.be/PfuEfIiLX34?t=371) -- [00:11:54 Mutable](https://youtu.be/PfuEfIiLX34?t=714) -- [00:16:34 Iterator](https://youtu.be/PfuEfIiLX34?t=994) -- [00:26:18 Promise ](https://youtu.be/PfuEfIiLX34?t=1578) -- [00:26:35 Test](https://youtu.be/PfuEfIiLX34?t=1595) -- [00:37:08 Compare ](https://youtu.be/PfuEfIiLX34?t=2228) -- [00:39:45 Benchmark](https://youtu.be/PfuEfIiLX34?t=2385) -- [00:40:48 Запуск и анализ тестов ](https://youtu.be/PfuEfIiLX34?t=2448) -- [01:03:48 Первый способ возвращение ошибок в синхронном коде ](https://youtu.be/PfuEfIiLX34?t=3828) -- [01:09:24 Второй способ возвращение ошибок в синхронном коде ](https://youtu.be/PfuEfIiLX34?t=4164) -- [01:12:26 Возвращение ошибок в асинхронном коде ](https://youtu.be/PfuEfIiLX34?t=4346) -- [01:16:14 Корректное возвращение ошибок ](https://youtu.be/PfuEfIiLX34?t=4574) -- [01:20:03 Обработка ошибок c promise ](https://youtu.be/PfuEfIiLX34?t=4803) -- [01:23:58 Обработка ошибок c async-await](https://youtu.be/PfuEfIiLX34?t=5038) - -## [Функциональное программирование на JavaScript](https://youtu.be/0JxSs_GcvbQ) - -## [Функциональные объекты, функторы и монады в JavaScript](https://youtu.be/3Z7f0Gi8pxw) - -- [00:00:00 Определение функтора ](https://youtu.be/3Z7f0Gi8pxw?t=0) -- [00:01:40 Функтор из прототипа ](https://youtu.be/3Z7f0Gi8pxw?t=100) -- [00:08:17 Функтор из прототипа (упрощенный) ](https://youtu.be/3Z7f0Gi8pxw?t=497) -- [00:09:14 Функтор из замыкания ](https://youtu.be/3Z7f0Gi8pxw?t=554) -- [00:11:49 Функтор из замыкания с тернарным оператором](https://youtu.be/3Z7f0Gi8pxw?t=709) -- [00:12:44 Аппликативный функтор из прототипа ](https://youtu.be/3Z7f0Gi8pxw?t=764) -- [00:18:08 Аппликативный функтор из замыкания (монада)](https://youtu.be/3Z7f0Gi8pxw?t=1088) -- [00:23:11 Пример применения монады ](https://youtu.be/3Z7f0Gi8pxw?t=1391) -- [00:28:37 Функциональный объект ](https://youtu.be/3Z7f0Gi8pxw?t=1717) -- [00:39:44 Пример применения функционального объекта](https://youtu.be/3Z7f0Gi8pxw?t=2384) -- [00:45:27 Обобщение](https://youtu.be/3Z7f0Gi8pxw?t=2727) - -## [Отмена асинхронных операций, cancellable callback and Promise в JavaScript](https://youtu.be/T8fXlnqI4Ws) - -## [Future: Асинхронность на фьючерах без состояния](https://youtu.be/22ONv3AGXdk) - -## [Примеси, обертки, декораторы, мемоизация](https://youtu.be/2h9syXN5wO0) - -- [00:00:00 Синхронная функция-обертка ](https://youtu.be/2h9syXN5wO0?t=0) -- [00:02:55 Синхронная универсальная функция-обертка ](https://youtu.be/2h9syXN5wO0?t=175) -- [00:08:28 Асинхронная универсальная функция-обертка ](https://youtu.be/2h9syXN5wO0?t=508) -- [00:15:50 Синхронная функция-обертка, которая добавляет поведение (timeout)](https://youtu.be/2h9syXN5wO0?t=950) -- [00:22:45 Асинхронная функция-обертка, которая добавляет поведение (timeout)](https://youtu.be/2h9syXN5wO0?t=1365) -- [00:25:38 Функция-обертка, которая ограничивает вызов функции до одного вызова (once) ](https://youtu.be/2h9syXN5wO0?t=1538) -- [00:27:36 Функция-обертка, которая ограничивает вызов функции до n-го вызова (limit)](https://youtu.be/2h9syXN5wO0?t=1656) -- [00:29:50 Функция-обертка, которая отменяет вызов функции (cancel)](https://youtu.be/2h9syXN5wO0?t=1790) -- [00:32:29 Функция-обертка с методами timeout, limit, cancel](https://youtu.be/2h9syXN5wO0?t=1949) -- [00:39:03 Функция-обертка с методами timeout, limit, cancel (оптимизированная)](https://youtu.be/2h9syXN5wO0?t=2343) -- [00:42:28 Функция-обертка, которая ограничивает один вызов за 200 мс (throttle)](https://youtu.be/2h9syXN5wO0?t=2548) -- [00:45:47 Примесь поля через точку ](https://youtu.be/2h9syXN5wO0?t=2747) -- [00:51:35 Примесь поля через функцию extend](https://youtu.be/2h9syXN5wO0?t=3095) -- [00:57:35 Примесь поля через object.assign( )](https://youtu.be/2h9syXN5wO0?t=3455) -- [00:59:18 Примесь поведения ](https://youtu.be/2h9syXN5wO0?t=3558) -- [01:02:23 Примесь изменения класса](https://youtu.be/2h9syXN5wO0?t=3743) -- [01:06:50 Определение](https://youtu.be/2h9syXN5wO0?t=4010) -- [01:07:30 Реализация простой мемоизации ](https://youtu.be/2h9syXN5wO0?t=4050) -- [01:14:43 Реализация простой мемоизации с проверкой скорости ](https://youtu.be/2h9syXN5wO0?t=4483) -- [01:20:43 Удаление накопленного кэша ](https://youtu.be/2h9syXN5wO0?t=4843) -- [01:25:35 Асинхронная мемоизация ](https://youtu.be/2h9syXN5wO0?t=5135) -- [01:31:10 Преобразование аргументов и ключей в hash-функцию](https://youtu.be/2h9syXN5wO0?t=5470) -- [01:33:32 Реализация сложной мемоизации](https://youtu.be/2h9syXN5wO0?t=5612) - -## [Мемоизация функций: memoize в JavaScript](https://youtu.be/H6S8QJo2Qxg) - -## [Композиция функций (pipe, compose) в JavaScript](https://youtu.be/xS9FicVrOTI) - From 12f07a06df6bc15a0afbe16dae698cf2cd0008c4 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Thu, 4 Aug 2022 18:32:53 +0300 Subject: [PATCH 134/308] Format timings --- Courses/Asynchronous-timecodes.md | 132 ++++++------- Courses/NodeJS-timecodes.md | 304 +++++++++++++++--------------- 2 files changed, 218 insertions(+), 218 deletions(-) diff --git a/Courses/Asynchronous-timecodes.md b/Courses/Asynchronous-timecodes.md index 56a7d63..1f08c4f 100644 --- a/Courses/Asynchronous-timecodes.md +++ b/Courses/Asynchronous-timecodes.md @@ -4,70 +4,70 @@ ## [Асинхронное программирование в Node.js и JavaScript](https://youtu.be/hY6Z6qNYzmc) -- [5:45 Callbacks](https://youtu.be/hY6Z6qNYzmc?t=345) -- [10:00 Async.js or analogues](https://youtu.be/hY6Z6qNYzmc?t=600) -- [15:47 Events](https://youtu.be/hY6Z6qNYzmc?t=947) -- [18:00 Promise](https://youtu.be/hY6Z6qNYzmc?t=1080) -- [25:20 async/await](https://youtu.be/hY6Z6qNYzmc?t=1520) -- [27:10 Functor + Chaining + composition](https://youtu.be/hY6Z6qNYzmc?t=1630) -- [30:49 Problems of callback, async.js, Proimise, async/await](https://youtu.be/hY6Z6qNYzmc?t=1849) -- [34:00 Add timeout to any function](https://youtu.be/hY6Z6qNYzmc?t=2040) -- [36:55 Make function cancelable](https://youtu.be/hY6Z6qNYzmc?t=2215) -- [37:59 More wrappers](https://youtu.be/hY6Z6qNYzmc?t=2279) -- [39:22 Promisify and Callbackify](https://youtu.be/hY6Z6qNYzmc?t=2362) -- [48:47 Sync function to async](https://youtu.be/hY6Z6qNYzmc?t=2927) -- [41:43 Sync function to Promise](https://youtu.be/hY6Z6qNYzmc?t=2503) -- [43:17 Convertors](https://youtu.be/hY6Z6qNYzmc?t=2597) -- [43:31 Metasync](https://youtu.be/hY6Z6qNYzmc?t=2611) -- [45:26 Function composition](https://youtu.be/hY6Z6qNYzmc?t=2726) -- [47:09 Asynchronous function composition](https://youtu.be/hY6Z6qNYzmc?t=2829) -- [47:58 Flow communication like in electronics](https://youtu.be/hY6Z6qNYzmc?t=2878) -- [50:06 Collectors](https://youtu.be/hY6Z6qNYzmc?t=3006) -- [59:17 Queue](https://youtu.be/hY6Z6qNYzmc?t=3557) +- [05:45 Callbacks](https://youtu.be/hY6Z6qNYzmc?t=345) +- [10:00 Async.js or analogues](https://youtu.be/hY6Z6qNYzmc?t=600) +- [15:47 Events](https://youtu.be/hY6Z6qNYzmc?t=947) +- [18:00 Promise](https://youtu.be/hY6Z6qNYzmc?t=1080) +- [25:20 async/await](https://youtu.be/hY6Z6qNYzmc?t=1520) +- [27:10 Functor + Chaining + composition](https://youtu.be/hY6Z6qNYzmc?t=1630) +- [30:49 Problems of callback, async.js, Proimise, async/await](https://youtu.be/hY6Z6qNYzmc?t=1849) +- [34:00 Add timeout to any function](https://youtu.be/hY6Z6qNYzmc?t=2040) +- [36:55 Make function cancelable](https://youtu.be/hY6Z6qNYzmc?t=2215) +- [37:59 More wrappers](https://youtu.be/hY6Z6qNYzmc?t=2279) +- [39:22 Promisify and Callbackify](https://youtu.be/hY6Z6qNYzmc?t=2362) +- [48:47 Sync function to async](https://youtu.be/hY6Z6qNYzmc?t=2927) +- [41:43 Sync function to Promise](https://youtu.be/hY6Z6qNYzmc?t=2503) +- [43:17 Convertors](https://youtu.be/hY6Z6qNYzmc?t=2597) +- [43:31 Metasync](https://youtu.be/hY6Z6qNYzmc?t=2611) +- [45:26 Function composition](https://youtu.be/hY6Z6qNYzmc?t=2726) +- [47:09 Asynchronous function composition](https://youtu.be/hY6Z6qNYzmc?t=2829) +- [47:58 Flow communication like in electronics](https://youtu.be/hY6Z6qNYzmc?t=2878) +- [50:06 Collectors](https://youtu.be/hY6Z6qNYzmc?t=3006) +- [59:17 Queue](https://youtu.be/hY6Z6qNYzmc?t=3557) ## [Таймеры, таймауты, EventEmitter в JavaScript и Node.js](https://youtu.be/LK2jveAnRNg) -- [0:30 callback sync/async](https://youtu.be/LK2jveAnRNg?t=30) -- [1:35 временная задержка sleep.js](https://youtu.be/LK2jveAnRNg?t=95) -- [5:35 await-sleep.js](https://youtu.be/LK2jveAnRNg?t=335) -- [8:40 sleep-then.js](https://youtu.be/LK2jveAnRNg?t=520) -- [9:30 order.js](https://youtu.be/LK2jveAnRNg?t=570) -- [18:38 precision.js](https://youtu.be/LK2jveAnRNg?t=1118) -- [22:13 blocking.js](https://youtu.be/LK2jveAnRNg?t=1333) -- [22:50 timers.js](https://youtu.be/LK2jveAnRNg?t=1370) -- [29:35 ref-unref.js](https://youtu.be/LK2jveAnRNg?t=1775) -- [32:05 enroll.js](https://youtu.be/LK2jveAnRNg?t=1925) -- [34:57 eventloop.txt](https://youtu.be/LK2jveAnRNg?t=2097) -- [37:37 eventEmitter](https://youtu.be/LK2jveAnRNg?t=2257) -- [44:32 simple.js](https://youtu.be/LK2jveAnRNg?t=2672) -- [47:48 usage.js](https://youtu.be/LK2jveAnRNg?t=2868) -- [48:30 enhanced.js](https://youtu.be/LK2jveAnRNg?t=2910) -- [50:18 star-fix.js](https://youtu.be/LK2jveAnRNg?t=3018) -- [51:10 usage.js](https://youtu.be/LK2jveAnRNg?t=3070) -- [53:15 closure.js](https://youtu.be/LK2jveAnRNg?t=3195) -- [54:50 fp.js](https://youtu.be/LK2jveAnRNg?t=3290) -- [57:10 methods.js](https://youtu.be/LK2jveAnRNg?t=3430) -- [1:06:35 min.js](https://youtu.be/LK2jveAnRNg?t=3995) -- [1:12:31 prod.js](https://youtu.be/LK2jveAnRNg?t=4351) +- [00:30 callback sync/async](https://youtu.be/LK2jveAnRNg?t=30) +- [01:35 временная задержка sleep.js](https://youtu.be/LK2jveAnRNg?t=95) +- [05:35 await-sleep.js](https://youtu.be/LK2jveAnRNg?t=335) +- [08:40 sleep-then.js](https://youtu.be/LK2jveAnRNg?t=520) +- [09:30 order.js](https://youtu.be/LK2jveAnRNg?t=570) +- [18:38 precision.js](https://youtu.be/LK2jveAnRNg?t=1118) +- [22:13 blocking.js](https://youtu.be/LK2jveAnRNg?t=1333) +- [22:50 timers.js](https://youtu.be/LK2jveAnRNg?t=1370) +- [29:35 ref-unref.js](https://youtu.be/LK2jveAnRNg?t=1775) +- [32:05 enroll.js](https://youtu.be/LK2jveAnRNg?t=1925) +- [34:57 eventloop.txt](https://youtu.be/LK2jveAnRNg?t=2097) +- [37:37 eventEmitter](https://youtu.be/LK2jveAnRNg?t=2257) +- [44:32 simple.js](https://youtu.be/LK2jveAnRNg?t=2672) +- [47:48 usage.js](https://youtu.be/LK2jveAnRNg?t=2868) +- [48:30 enhanced.js](https://youtu.be/LK2jveAnRNg?t=2910) +- [50:18 star-fix.js](https://youtu.be/LK2jveAnRNg?t=3018) +- [51:10 usage.js](https://youtu.be/LK2jveAnRNg?t=3070) +- [53:15 closure.js](https://youtu.be/LK2jveAnRNg?t=3195) +- [54:50 fp.js](https://youtu.be/LK2jveAnRNg?t=3290) +- [57:10 methods.js](https://youtu.be/LK2jveAnRNg?t=3430) +- [1:06:35 min.js](https://youtu.be/LK2jveAnRNg?t=3995) +- [1:12:31 prod.js](https://youtu.be/LK2jveAnRNg?t=4351) ## [Асинхронное программирование на callback`ах в JavaScript](https://youtu.be/z8Hg6zgi3yQ) -- [1:20 пример callback функции](https://youtu.be/z8Hg6zgi3yQ?t=80) -- [2:40 пример последовательного исполнения callback функций](https://youtu.be/z8Hg6zgi3yQ?t=160) -- [5:52 пример параллельного исполнения async функций c использованием wrapAsync](https://youtu.be/z8Hg6zgi3yQ?t=352) -- [15:18 пример последовательного исполнения async функций c использованием wrapAsync](https://youtu.be/z8Hg6zgi3yQ?t=918) -- [19:05 chain исполнение async функций](https://youtu.be/z8Hg6zgi3yQ?t=1145) -- [41:16 где можно встретить асинхронные функции](https://youtu.be/z8Hg6zgi3yQ?t=2476) +- [01:20 пример callback функции](https://youtu.be/z8Hg6zgi3yQ?t=80) +- [02:40 пример последовательного исполнения callback функций](https://youtu.be/z8Hg6zgi3yQ?t=160) +- [05:52 пример параллельного исполнения async функций c использованием wrapAsync](https://youtu.be/z8Hg6zgi3yQ?t=352) +- [15:18 пример последовательного исполнения async функций c использованием wrapAsync](https://youtu.be/z8Hg6zgi3yQ?t=918) +- [19:05 chain исполнение async функций](https://youtu.be/z8Hg6zgi3yQ?t=1145) +- [41:16 где можно встретить асинхронные функции](https://youtu.be/z8Hg6zgi3yQ?t=2476) ## [Неблокирующее асинхронное итерирование в JavaScript](https://youtu.be/wYA2cIRYLoA) -- [1:02 блокирующее итерирование по массиву](https://youtu.be/wYA2cIRYLoA?t=62) -- [3:24 блокирующее итерирование с помощью for await](https://youtu.be/wYA2cIRYLoA?t=204) -- [4:47 неблокирующее итерирование с помощью setTimeout](https://youtu.be/wYA2cIRYLoA?t=287) -- [6:45 неблокирующее итерирование с помощью for await](https://youtu.be/wYA2cIRYLoA?t=405) -- [8:20 неблокирующее итерирование без задержки](https://youtu.be/wYA2cIRYLoA?t=500) -- [13:00 неблокирующее итерирование без задержки с помощью for await](https://youtu.be/wYA2cIRYLoA?t=780) -- [19:30 использование асинхронного итерирования для обычных массивов](https://youtu.be/wYA2cIRYLoA?t=1170) +- [01:02 блокирующее итерирование по массиву](https://youtu.be/wYA2cIRYLoA?t=62) +- [03:24 блокирующее итерирование с помощью for await](https://youtu.be/wYA2cIRYLoA?t=204) +- [04:47 неблокирующее итерирование с помощью setTimeout](https://youtu.be/wYA2cIRYLoA?t=287) +- [06:45 неблокирующее итерирование с помощью for await](https://youtu.be/wYA2cIRYLoA?t=405) +- [08:20 неблокирующее итерирование без задержки](https://youtu.be/wYA2cIRYLoA?t=500) +- [13:00 неблокирующее итерирование без задержки с помощью for await](https://youtu.be/wYA2cIRYLoA?t=780) +- [19:30 использование асинхронного итерирования для обычных массивов](https://youtu.be/wYA2cIRYLoA?t=1170) ## [Асинхронность с библиотекой async.js](https://youtu.be/XQ94wQc-erU) @@ -85,17 +85,17 @@ ## [Генераторы и асинхронные генераторы в JavaScript](https://youtu.be/kvNm9D32s8s) -- [00:00 Способы объявления генераторов ](https://youtu.be/kvNm9D32s8s?t=0) -- [10:41 Пример генератора с yield ](https://youtu.be/kvNm9D32s8s?t=641) -- [15:54 Пример генератора с yield и return ](https://youtu.be/kvNm9D32s8s?t=954) -- [18:47 Получение значений из генератора циклом for...of ](https://youtu.be/kvNm9D32s8s?t=1127) -- [21:04 Получение значений из генератора spead - оператором ](https://youtu.be/kvNm9D32s8s?t=1264) -- [21:50 Метод next ](https://youtu.be/kvNm9D32s8s?t=1310) -- [23:30 Пример генератора с yield * возвращающего итерируемые объекты ](https://youtu.be/kvNm9D32s8s?t=1410) -- [25:05 Пример генератора с yield * возвращающего другие генераторы ](https://youtu.be/kvNm9D32s8s?t=1505) -- [26:18 Метод return ](https://youtu.be/kvNm9D32s8s?t=1578) -- [28:11 Метод throw](https://youtu.be/kvNm9D32s8s?t=1691) -- [29:05 Обобщение](https://youtu.be/kvNm9D32s8s?t=1745) +- [00:00 Способы объявления генераторов](https://youtu.be/kvNm9D32s8s?t=0) +- [10:41 Пример генератора с yield](https://youtu.be/kvNm9D32s8s?t=641) +- [15:54 Пример генератора с yield и return](https://youtu.be/kvNm9D32s8s?t=954) +- [18:47 Получение значений из генератора циклом for...of](https://youtu.be/kvNm9D32s8s?t=1127) +- [21:04 Получение значений из генератора spead - оператором](https://youtu.be/kvNm9D32s8s?t=1264) +- [21:50 Метод next](https://youtu.be/kvNm9D32s8s?t=1310) +- [23:30 Пример генератора с yield * возвращающего итерируемые объекты](https://youtu.be/kvNm9D32s8s?t=1410) +- [25:05 Пример генератора с yield * возвращающего другие генераторы](https://youtu.be/kvNm9D32s8s?t=1505) +- [26:18 Метод return](https://youtu.be/kvNm9D32s8s?t=1578) +- [28:11 Метод throw](https://youtu.be/kvNm9D32s8s?t=1691) +- [29:05 Обобщение](https://youtu.be/kvNm9D32s8s?t=1745) ## [Итераторы и асинхронные итераторы в JavaScript](https://youtu.be/rBGFlWpVpGs) diff --git a/Courses/NodeJS-timecodes.md b/Courses/NodeJS-timecodes.md index 35abd2d..1bc5f20 100644 --- a/Courses/NodeJS-timecodes.md +++ b/Courses/NodeJS-timecodes.md @@ -4,141 +4,141 @@ ## [Node.js Введение в технологию](https://youtu.be/WBcHgaoHh1k) -- [2:53 Основные идеи Node.js](https://youtu.be/WBcHgaoHh1k?t=173) -- [13:09 Приемущества/Недостатки JavaScript](https://youtu.be/WBcHgaoHh1k?t=789) -- [16:58 Что такое Node.js](https://youtu.be/WBcHgaoHh1k?t=1018) -- [20:52 Начало работы с Node.js](https://youtu.be/WBcHgaoHh1k?t=1252) -- [25:00 Встроенный API](https://youtu.be/WBcHgaoHh1k?t=1500) -- [33:55 Менеджер пакетов NPM](https://youtu.be/WBcHgaoHh1k?t=2035) -- [40:45 Структура проектов](https://youtu.be/WBcHgaoHh1k?t=2445) -- [44:35 Файлы package.json, package-lock.json](https://youtu.be/WBcHgaoHh1k?t=2675) -- [52:03 Репозиторий NPM](https://youtu.be/WBcHgaoHh1k?t=3123) -- [59:50 Однопоточность и многопоточность](https://youtu.be/WBcHgaoHh1k?t=3590) -- [1:05:30 Межпроцессовое взаимодействие](https://youtu.be/WBcHgaoHh1k?t=3930) -- [1:06:08 Асинхронный ввод/вывод](https://youtu.be/WBcHgaoHh1k?t=3968) -- [1:11:11 Производительность](https://youtu.be/WBcHgaoHh1k?t=4271) -- [1:13:02 Память](https://youtu.be/WBcHgaoHh1k?t=4382) -- [1:16:21 Отладка и профилирование](https://youtu.be/WBcHgaoHh1k?t=4581) -- [1:21:27 Ошибки](https://youtu.be/WBcHgaoHh1k?t=4887) -- [1:26:42 Обновление кода и перезапуск](https://youtu.be/WBcHgaoHh1k?t=5202) -- [1:28:43 Ассинхронное программирование](https://youtu.be/WBcHgaoHh1k?t=5323) -- [1:30:00 Примеры внедрения, интеракт. TV](https://youtu.be/WBcHgaoHh1k?t=5400) -- [1:31:00 Сферы применения Node.js](https://youtu.be/WBcHgaoHh1k?t=5460) -- [1:36:44 Полезные материалы](https://youtu.be/WBcHgaoHh1k?t=5804) +- [02:53 Основные идеи Node.js](https://youtu.be/WBcHgaoHh1k?t=173) +- [13:09 Приемущества/Недостатки JavaScript](https://youtu.be/WBcHgaoHh1k?t=789) +- [16:58 Что такое Node.js](https://youtu.be/WBcHgaoHh1k?t=1018) +- [20:52 Начало работы с Node.js](https://youtu.be/WBcHgaoHh1k?t=1252) +- [25:00 Встроенный API](https://youtu.be/WBcHgaoHh1k?t=1500) +- [33:55 Менеджер пакетов NPM](https://youtu.be/WBcHgaoHh1k?t=2035) +- [40:45 Структура проектов](https://youtu.be/WBcHgaoHh1k?t=2445) +- [44:35 Файлы package.json, package-lock.json](https://youtu.be/WBcHgaoHh1k?t=2675) +- [52:03 Репозиторий NPM](https://youtu.be/WBcHgaoHh1k?t=3123) +- [59:50 Однопоточность и многопоточность](https://youtu.be/WBcHgaoHh1k?t=3590) +- [1:05:30 Межпроцессовое взаимодействие](https://youtu.be/WBcHgaoHh1k?t=3930) +- [1:06:08 Асинхронный ввод/вывод](https://youtu.be/WBcHgaoHh1k?t=3968) +- [1:11:11 Производительность](https://youtu.be/WBcHgaoHh1k?t=4271) +- [1:13:02 Память](https://youtu.be/WBcHgaoHh1k?t=4382) +- [1:16:21 Отладка и профилирование](https://youtu.be/WBcHgaoHh1k?t=4581) +- [1:21:27 Ошибки](https://youtu.be/WBcHgaoHh1k?t=4887) +- [1:26:42 Обновление кода и перезапуск](https://youtu.be/WBcHgaoHh1k?t=5202) +- [1:28:43 Ассинхронное программирование](https://youtu.be/WBcHgaoHh1k?t=5323) +- [1:30:00 Примеры внедрения, интеракт. TV](https://youtu.be/WBcHgaoHh1k?t=5400) +- [1:31:00 Сферы применения Node.js](https://youtu.be/WBcHgaoHh1k?t=5460) +- [1:36:44 Полезные материалы](https://youtu.be/WBcHgaoHh1k?t=5804) ## [Node.js в 2019 году (состояние и перспективы)](https://youtu.be/CUU49jjHloM) -- [0:45 Node.js уже 10 лет](https://youtu.be/CUU49jjHloM?t=45) -- [5:39 Обзор новых возможностей Node.js](https://youtu.be/CUU49jjHloM?t=339) -- [18:14 Возможности для паралельного программирования на Node.js](https://youtu.be/CUU49jjHloM?t=1094) -- [20:08 Как работают thread и process в Node.js](https://youtu.be/CUU49jjHloM?t=1208) -- [20:47 Обзор последствий отсутствия изоляции в Node.js](https://youtu.be/CUU49jjHloM?t=1247) -- [20:33 Проблемы отсутствия изоляции в Node.js](https://youtu.be/CUU49jjHloM?t=1233) -- [38:27 Способы изоляции Node.js кода](https://youtu.be/CUU49jjHloM?t=2307) -- [48:24 Изоляция и кластеризации с threads в Node.js v12](https://youtu.be/CUU49jjHloM?t=2904) -- [56:59 Области применения Node.js: Локальные приложения](https://youtu.be/CUU49jjHloM?t=3419) -- [1:02:02 Области применения Node.js: Сервера](https://youtu.be/CUU49jjHloM?t=3722) -- [1:05:49 Области применения Node.js: Клиенты](https://youtu.be/CUU49jjHloM?t=3949) -- [1:08:58 Области применения Node.js: Hardware](https://youtu.be/CUU49jjHloM?t=4138) -- [1:09:28 Редкие области применения Node.js](https://youtu.be/CUU49jjHloM?t=4168) -- [1:11:55 Не подходящие области применения Node.js](https://youtu.be/CUU49jjHloM?t=4315) -- [1:13:53 Deno как экспементальная альтернатива Node.js](https://youtu.be/CUU49jjHloM?t=4433) -- [1:21:02 Обзор ссылок по теме](https://youtu.be/CUU49jjHloM?t=4862) -- [1:23:06 Ответы на вопросы](https://youtu.be/CUU49jjHloM?t=4986) +- [00:45 Node.js уже 10 лет](https://youtu.be/CUU49jjHloM?t=45) +- [05:39 Обзор новых возможностей Node.js](https://youtu.be/CUU49jjHloM?t=339) +- [18:14 Возможности для паралельного программирования на Node.js](https://youtu.be/CUU49jjHloM?t=1094) +- [20:08 Как работают thread и process в Node.js](https://youtu.be/CUU49jjHloM?t=1208) +- [20:47 Обзор последствий отсутствия изоляции в Node.js](https://youtu.be/CUU49jjHloM?t=1247) +- [20:33 Проблемы отсутствия изоляции в Node.js](https://youtu.be/CUU49jjHloM?t=1233) +- [38:27 Способы изоляции Node.js кода](https://youtu.be/CUU49jjHloM?t=2307) +- [48:24 Изоляция и кластеризации с threads в Node.js v12](https://youtu.be/CUU49jjHloM?t=2904) +- [56:59 Области применения Node.js: Локальные приложения](https://youtu.be/CUU49jjHloM?t=3419) +- [1:02:02 Области применения Node.js: Сервера](https://youtu.be/CUU49jjHloM?t=3722) +- [1:05:49 Области применения Node.js: Клиенты](https://youtu.be/CUU49jjHloM?t=3949) +- [1:08:58 Области применения Node.js: Hardware](https://youtu.be/CUU49jjHloM?t=4138) +- [1:09:28 Редкие области применения Node.js](https://youtu.be/CUU49jjHloM?t=4168) +- [1:11:55 Не подходящие области применения Node.js](https://youtu.be/CUU49jjHloM?t=4315) +- [1:13:53 Deno как экспементальная альтернатива Node.js](https://youtu.be/CUU49jjHloM?t=4433) +- [1:21:02 Обзор ссылок по теме](https://youtu.be/CUU49jjHloM?t=4862) +- [1:23:06 Ответы на вопросы](https://youtu.be/CUU49jjHloM?t=4986) ## [Асинхронное программирование в Node.js и JavaScript](https://youtu.be/hY6Z6qNYzmc) -- [5:45 Callbacks](https://youtu.be/hY6Z6qNYzmc?t=345) -- [10:00 Async.js or analogues](https://youtu.be/hY6Z6qNYzmc?t=600) -- [15:47 Events](https://youtu.be/hY6Z6qNYzmc?t=947) -- [18:00 Promise](https://youtu.be/hY6Z6qNYzmc?t=1080) -- [25:20 async/await](https://youtu.be/hY6Z6qNYzmc?t=1520) -- [27:10 Functor + Chaining + composition](https://youtu.be/hY6Z6qNYzmc?t=1630) -- [30:49 Problems of callback, async.js, Proimise, async/await](https://youtu.be/hY6Z6qNYzmc?t=1849) -- [34:00 Add timeout to any function](https://youtu.be/hY6Z6qNYzmc?t=2040) -- [36:55 Make function cancelable](https://youtu.be/hY6Z6qNYzmc?t=2215) -- [37:59 More wrappers](https://youtu.be/hY6Z6qNYzmc?t=2279) -- [39:22 Promisify and Callbackify](https://youtu.be/hY6Z6qNYzmc?t=2362) -- [48:47 Sync function to async](https://youtu.be/hY6Z6qNYzmc?t=2927) -- [41:43 Sync function to Promise](https://youtu.be/hY6Z6qNYzmc?t=2503) -- [43:17 Convertors](https://youtu.be/hY6Z6qNYzmc?t=2597) -- [43:31 Metasync](https://youtu.be/hY6Z6qNYzmc?t=2611) -- [45:26 Function composition](https://youtu.be/hY6Z6qNYzmc?t=2726) -- [47:09 Adynchronous function composition](https://youtu.be/hY6Z6qNYzmc?t=2829) -- [47:58 Flow communication like in electronics](https://youtu.be/hY6Z6qNYzmc?t=2878) -- [50:06 Collectors](https://youtu.be/hY6Z6qNYzmc?t=3006) -- [59:17 Queue](https://youtu.be/hY6Z6qNYzmc?t=3557) +- [05:45 Callbacks](https://youtu.be/hY6Z6qNYzmc?t=345) +- [10:00 Async.js or analogues](https://youtu.be/hY6Z6qNYzmc?t=600) +- [15:47 Events](https://youtu.be/hY6Z6qNYzmc?t=947) +- [18:00 Promise](https://youtu.be/hY6Z6qNYzmc?t=1080) +- [25:20 async/await](https://youtu.be/hY6Z6qNYzmc?t=1520) +- [27:10 Functor + Chaining + composition](https://youtu.be/hY6Z6qNYzmc?t=1630) +- [30:49 Problems of callback, async.js, Proimise, async/await](https://youtu.be/hY6Z6qNYzmc?t=1849) +- [34:00 Add timeout to any function](https://youtu.be/hY6Z6qNYzmc?t=2040) +- [36:55 Make function cancelable](https://youtu.be/hY6Z6qNYzmc?t=2215) +- [37:59 More wrappers](https://youtu.be/hY6Z6qNYzmc?t=2279) +- [39:22 Promisify and Callbackify](https://youtu.be/hY6Z6qNYzmc?t=2362) +- [48:47 Sync function to async](https://youtu.be/hY6Z6qNYzmc?t=2927) +- [41:43 Sync function to Promise](https://youtu.be/hY6Z6qNYzmc?t=2503) +- [43:17 Convertors](https://youtu.be/hY6Z6qNYzmc?t=2597) +- [43:31 Metasync](https://youtu.be/hY6Z6qNYzmc?t=2611) +- [45:26 Function composition](https://youtu.be/hY6Z6qNYzmc?t=2726) +- [47:09 Adynchronous function composition](https://youtu.be/hY6Z6qNYzmc?t=2829) +- [47:58 Flow communication like in electronics](https://youtu.be/hY6Z6qNYzmc?t=2878) +- [50:06 Collectors](https://youtu.be/hY6Z6qNYzmc?t=3006) +- [59:17 Queue](https://youtu.be/hY6Z6qNYzmc?t=3557) ## [Обзор встроенного Node.js API](https://youtu.be/sOkjR-N6IAs) -- [1:45 Readline](https://youtu.be/sOkjR-N6IAs?t=105) -- [2:42 Stream](https://youtu.be/sOkjR-N6IAs?t=162) -- [6:51 Buffer](https://youtu.be/sOkjR-N6IAs?t=411) -- [9:15 Child Processes](https://youtu.be/sOkjR-N6IAs?t=555) -- [12:24 Cluster](https://youtu.be/sOkjR-N6IAs?t=744) -- [16:23 Crypto](https://youtu.be/sOkjR-N6IAs?t=983) -- [17:47 DNS](https://youtu.be/sOkjR-N6IAs?t=1067) -- [19:30 Domain](https://youtu.be/sOkjR-N6IAs?t=1170) -- [22:44 Events](https://youtu.be/sOkjR-N6IAs?t=1364) -- [23:16 Errors, Timers](https://youtu.be/sOkjR-N6IAs?t=1396) -- [27:26 File System](https://youtu.be/sOkjR-N6IAs?t=1646) -- [28:56 HTTP](https://youtu.be/sOkjR-N6IAs?t=1736) -- [31:49 OS](https://youtu.be/sOkjR-N6IAs?t=1909) -- [33:38 Process](https://youtu.be/sOkjR-N6IAs?t=2018) -- [41:55 Path](https://youtu.be/sOkjR-N6IAs?t=2515) -- [43:15 TLS/SSL](https://youtu.be/sOkjR-N6IAs?t=2595) -- [44:44 URL](https://youtu.be/sOkjR-N6IAs?t=2684) -- [45:22 Util](https://youtu.be/sOkjR-N6IAs?t=2722) -- [47:00 V8/VM](https://youtu.be/sOkjR-N6IAs?t=2820) -- [49:55 Worker Threads](https://youtu.be/sOkjR-N6IAs?t=2995) -- [50:56 ZLIB](https://youtu.be/sOkjR-N6IAs?t=3056) -- [51:55 Modules](https://youtu.be/sOkjR-N6IAs?t=3115) +- [01:45 Readline](https://youtu.be/sOkjR-N6IAs?t=105) +- [02:42 Stream](https://youtu.be/sOkjR-N6IAs?t=162) +- [06:51 Buffer](https://youtu.be/sOkjR-N6IAs?t=411) +- [09:15 Child Processes](https://youtu.be/sOkjR-N6IAs?t=555) +- [12:24 Cluster](https://youtu.be/sOkjR-N6IAs?t=744) +- [16:23 Crypto](https://youtu.be/sOkjR-N6IAs?t=983) +- [17:47 DNS](https://youtu.be/sOkjR-N6IAs?t=1067) +- [19:30 Domain](https://youtu.be/sOkjR-N6IAs?t=1170) +- [22:44 Events](https://youtu.be/sOkjR-N6IAs?t=1364) +- [23:16 Errors, Timers](https://youtu.be/sOkjR-N6IAs?t=1396) +- [27:26 File System](https://youtu.be/sOkjR-N6IAs?t=1646) +- [28:56 HTTP](https://youtu.be/sOkjR-N6IAs?t=1736) +- [31:49 OS](https://youtu.be/sOkjR-N6IAs?t=1909) +- [33:38 Process](https://youtu.be/sOkjR-N6IAs?t=2018) +- [41:55 Path](https://youtu.be/sOkjR-N6IAs?t=2515) +- [43:15 TLS/SSL](https://youtu.be/sOkjR-N6IAs?t=2595) +- [44:44 URL](https://youtu.be/sOkjR-N6IAs?t=2684) +- [45:22 Util](https://youtu.be/sOkjR-N6IAs?t=2722) +- [47:00 V8/VM](https://youtu.be/sOkjR-N6IAs?t=2820) +- [49:55 Worker Threads](https://youtu.be/sOkjR-N6IAs?t=2995) +- [50:56 ZLIB](https://youtu.be/sOkjR-N6IAs?t=3056) +- [51:55 Modules](https://youtu.be/sOkjR-N6IAs?t=3115) ## [Настройка среды: Node.js, npm, git, eslint](https://youtu.be/hSyA7tcNaCE) ## [Работа с файлами, буферами и файловыми потоками в Node.js](https://youtu.be/eQGBS15vUac) -- [1:39 Работа с файлами](https://youtu.be/eQGBS15vUac?t=99) -- [35:12 Буферы](https://youtu.be/eQGBS15vUac?t=2112) -- [43:46 Файловые потоки](https://youtu.be/eQGBS15vUac?t=2626) +- [01:39 Работа с файлами](https://youtu.be/eQGBS15vUac?t=99) +- [35:12 Буферы](https://youtu.be/eQGBS15vUac?t=2112) +- [43:46 Файловые потоки](https://youtu.be/eQGBS15vUac?t=2626) ## [Наблюдение за файловой системой в Node.js](https://youtu.be/29QINR9rruQ) -- [0:32 File watch](https://youtu.be/29QINR9rruQ?t=32) -- [4:40 Folder watch](https://youtu.be/29QINR9rruQ?t=280) -- [8:40 Server](https://youtu.be/29QINR9rruQ?t=520) -- [12:55 LiveReload](https://youtu.be/29QINR9rruQ?t=775) -- [24:50 LiverReload в impress](https://youtu.be/29QINR9rruQ?t=1490) +- [00:32 File watch](https://youtu.be/29QINR9rruQ?t=32) +- [04:40 Folder watch](https://youtu.be/29QINR9rruQ?t=280) +- [08:40 Server](https://youtu.be/29QINR9rruQ?t=520) +- [12:55 LiveReload](https://youtu.be/29QINR9rruQ?t=775) +- [24:50 LiverReload в impress](https://youtu.be/29QINR9rruQ?t=1490) ## [Консоль и командная строка в JavaScript и Node.js](https://youtu.be/5aSZyKi5BmE) -- [1:20 console](https://youtu.be/5aSZyKi5BmE?t=80) -- [16:00 readline](https://youtu.be/5aSZyKi5BmE?t=960) -- [21:35 cli](https://youtu.be/5aSZyKi5BmE?t=1295) -- [31:15 делаем красивый login screen](https://youtu.be/5aSZyKi5BmE?t=1875) +- [01:20 console](https://youtu.be/5aSZyKi5BmE?t=80) +- [16:00 readline](https://youtu.be/5aSZyKi5BmE?t=960) +- [21:35 cli](https://youtu.be/5aSZyKi5BmE?t=1295) +- [31:15 делаем красивый login screen](https://youtu.be/5aSZyKi5BmE?t=1875) ## [Архитектурный подход к программированию](https://youtu.be/d_vyO2CkiOc) -- [00:00:00 Когда нужна архитектура](https://youtu.be/d_vyO2CkiOc?t=0) -- [00:06:07 Принятие решений](https://youtu.be/d_vyO2CkiOc?t=367) -- [00:09:58 Типы связывания](https://youtu.be/d_vyO2CkiOc?t=598) -- [00:20:00 Ошибки](https://youtu.be/d_vyO2CkiOc?t=1200) -- [00:27:15 Принятие решений](https://youtu.be/d_vyO2CkiOc?t=1635) -- [00:37:05 Эволюция архитектурных решений](https://youtu.be/d_vyO2CkiOc?t=2225) -- [00:58:13 Схема современной архитектуры](https://youtu.be/d_vyO2CkiOc?t=3493) -- [01:01:40 субд в браузере](https://youtu.be/d_vyO2CkiOc?t=3700) -- [01:05:20 Альтернативные варианты](https://youtu.be/d_vyO2CkiOc?t=3920) -- [01:12:20 Как на самом деле](https://youtu.be/d_vyO2CkiOc?t=4340) -- [01:13:45 Архитектура мечты](https://youtu.be/d_vyO2CkiOc?t=4425) -- [01:16:45 Современные возможности и требования ](https://youtu.be/d_vyO2CkiOc?t=4605) -- [01:25:20 Топологии](https://youtu.be/d_vyO2CkiOc?t=5120) -- [01:30:45 Итог](https://youtu.be/d_vyO2CkiOc?t=5445) +- [00:00:00 Когда нужна архитектура](https://youtu.be/d_vyO2CkiOc?t=0) +- [00:06:07 Принятие решений](https://youtu.be/d_vyO2CkiOc?t=367) +- [00:09:58 Типы связывания](https://youtu.be/d_vyO2CkiOc?t=598) +- [00:20:00 Ошибки](https://youtu.be/d_vyO2CkiOc?t=1200) +- [00:27:15 Принятие решений](https://youtu.be/d_vyO2CkiOc?t=1635) +- [00:37:05 Эволюция архитектурных решений](https://youtu.be/d_vyO2CkiOc?t=2225) +- [00:58:13 Схема современной архитектуры](https://youtu.be/d_vyO2CkiOc?t=3493) +- [01:01:40 субд в браузере](https://youtu.be/d_vyO2CkiOc?t=3700) +- [01:05:20 Альтернативные варианты](https://youtu.be/d_vyO2CkiOc?t=3920) +- [01:12:20 Как на самом деле](https://youtu.be/d_vyO2CkiOc?t=4340) +- [01:13:45 Архитектура мечты](https://youtu.be/d_vyO2CkiOc?t=4425) +- [01:16:45 Современные возможности и требования](https://youtu.be/d_vyO2CkiOc?t=4605) +- [01:25:20 Топологии](https://youtu.be/d_vyO2CkiOc?t=5120) +- [01:30:45 Итог](https://youtu.be/d_vyO2CkiOc?t=5445) ## [Модули, слои, структура проекта, песочницы в JavaScript и Node.js](https://youtu.be/O7A9chb573E) -- [1:00 Пример структуры приложения](https://youtu.be/O7A9chb573E?t=60) -- [14:23 Примеры плохо и хорошо структурированного кода ](https://youtu.be/O7A9chb573E?t=863) -- [25:46 Песочницы](https://youtu.be/O7A9chb573E?t=1546) +- [01:00 Пример структуры приложения](https://youtu.be/O7A9chb573E?t=60) +- [14:23 Примеры плохо и хорошо структурированного кода](https://youtu.be/O7A9chb573E?t=863) +- [25:46 Песочницы](https://youtu.be/O7A9chb573E?t=1546) ## [Инверсия управления и внедрение зависимостей в Node.js](https://youtu.be/Fz86Fdjz-LM) @@ -148,10 +148,10 @@ ## [Клиент-сервер на Node.js TCP и UDP, DNS](https://youtu.be/bHn-wTlTTR0) -- [2:25 TCP, простой пример клиент/сервер](https://youtu.be/bHn-wTlTTR0?t=145) -- [20:20 TCP, пример сложнее](https://youtu.be/bHn-wTlTTR0?t=1220) -- [29:26 UDP](https://youtu.be/bHn-wTlTTR0?t=1766) -- [35:14 DNS](https://youtu.be/bHn-wTlTTR0?t=2114) +- [02:25 TCP, простой пример клиент/сервер](https://youtu.be/bHn-wTlTTR0?t=145) +- [20:20 TCP, пример сложнее](https://youtu.be/bHn-wTlTTR0?t=1220) +- [29:26 UDP](https://youtu.be/bHn-wTlTTR0?t=1766) +- [35:14 DNS](https://youtu.be/bHn-wTlTTR0?t=2114) ## [HTTP сервер на Node.js (routing, cluster, IP sticky)](https://youtu.be/7Ufxj0oTaUo) @@ -185,21 +185,21 @@ ## [Atomics, SharedArrayBuffer, worker_threads в Node.js](https://youtu.be/zLm8pnbxSII) -- [00:00 - початок ](https://youtu.be/zLm8pnbxSII?t=0) -- [03:53 - про worker_threads](https://youtu.be/zLm8pnbxSII?t=233) -- [12:20 - сепарація на worker i master](https://youtu.be/zLm8pnbxSII?t=740) -- [14:57 - як використовувати worker ](https://youtu.be/zLm8pnbxSII?t=897) -- [25:00 - про Atomics](https://youtu.be/zLm8pnbxSII?t=1500) -- [41:00 - Atomics i worker_threads робота в парі](https://youtu.be/zLm8pnbxSII?t=2460) +- [00:00 початок](https://youtu.be/zLm8pnbxSII?t=0) +- [03:53 про worker_threads](https://youtu.be/zLm8pnbxSII?t=233) +- [12:20 сепарація на worker i master](https://youtu.be/zLm8pnbxSII?t=740) +- [14:57 як використовувати worker](https://youtu.be/zLm8pnbxSII?t=897) +- [25:00 про Atomics](https://youtu.be/zLm8pnbxSII?t=1500) +- [41:00 Atomics i worker_threads робота в парі](https://youtu.be/zLm8pnbxSII?t=2460) ## [Семафоры и мьютексы в JavaScript и Node.js](https://youtu.be/JNLrITevhRI) -- [00:00 - теорія](https://youtu.be/JNLrITevhRI?t=0) -- [8:55 - приклад worker_threads без семафора ](https://youtu.be/JNLrITevhRI?t=535) -- [15:29 - про семафор, семафор бінарний, семафор з лічильником і Atomics ](https://youtu.be/JNLrITevhRI?t=929) -- [53:52 - мютекси та різниця між семафором ](https://youtu.be/JNLrITevhRI?t=3232) -- [58:28 - про deadlock](https://youtu.be/JNLrITevhRI?t=3508) -- [1:02:12 - про livelock і стан гонки](https://youtu.be/JNLrITevhRI?t=3732) +- [00:00 теорія](https://youtu.be/JNLrITevhRI?t=0) +- [08:55 приклад worker_threads без семафора](https://youtu.be/JNLrITevhRI?t=535) +- [15:29 про семафор, семафор бінарний, семафор з лічильником і Atomics](https://youtu.be/JNLrITevhRI?t=929) +- [53:52 мютекси та різниця між семафором](https://youtu.be/JNLrITevhRI?t=3232) +- [58:28 про deadlock](https://youtu.be/JNLrITevhRI?t=3508) +- [1:02:12 про livelock і стан гонки](https://youtu.be/JNLrITevhRI?t=3732) ## [Разделяемая память в многопоточном Node.js. Тимур Шемсединов. JS Fest 2019 Spring](https://youtu.be/KNsm_iIQt7U) @@ -221,14 +221,14 @@ ## [GRASP принципы с адаптацией для JavaScript и Node.js](https://youtu.be/ExauFjYV_lQ) -- [5:03 Information Expert](https://youtu.be/ExauFjYV_lQ?t=303) -- [13:06 Creator](https://youtu.be/ExauFjYV_lQ?t=786) -- [18:15 Cohesion & Coupling](https://youtu.be/ExauFjYV_lQ?t=1095) -- [21:33 Controller](https://youtu.be/ExauFjYV_lQ?t=1293) -- [24:58 Polymorphism](https://youtu.be/ExauFjYV_lQ?t=1498) -- [31:55 Indirection](https://youtu.be/ExauFjYV_lQ?t=1915) -- [34:34 Pure Fabrication](https://youtu.be/ExauFjYV_lQ?t=2074) -- [38:36 Protected Variations](https://youtu.be/ExauFjYV_lQ?t=2316) +- [05:03 Information Expert](https://youtu.be/ExauFjYV_lQ?t=303) +- [13:06 Creator](https://youtu.be/ExauFjYV_lQ?t=786) +- [18:15 Cohesion & Coupling](https://youtu.be/ExauFjYV_lQ?t=1095) +- [21:33 Controller](https://youtu.be/ExauFjYV_lQ?t=1293) +- [24:58 Polymorphism](https://youtu.be/ExauFjYV_lQ?t=1498) +- [31:55 Indirection](https://youtu.be/ExauFjYV_lQ?t=1915) +- [34:34 Pure Fabrication](https://youtu.be/ExauFjYV_lQ?t=2074) +- [38:36 Protected Variations](https://youtu.be/ExauFjYV_lQ?t=2316) ## [GRASP: принцип информационный эксперт с адаптацией для JavaScript и Node.js](https://youtu.be/cCHL329_As0) @@ -242,28 +242,28 @@ ## [Node.js модули: ECMA, Common.js, Module API](https://youtu.be/CJr2vS3hjMU) -- [1:02 export модулей](https://youtu.be/CJr2vS3hjMU?t=62) -- [3:00 require модулей](https://youtu.be/CJr2vS3hjMU?t=180) -- [5:35 require-resolve модулей](https://youtu.be/CJr2vS3hjMU?t=335) -- [12:15 cache](https://youtu.be/CJr2vS3hjMU?t=735) -- [18:38 немного об singleton](https://youtu.be/CJr2vS3hjMU?t=1118) -- [19:53 модуль global](https://youtu.be/CJr2vS3hjMU?t=1193) -- [20:43 пример с mixin-ами](https://youtu.be/CJr2vS3hjMU?t=1243) -- [25:13 пример ecma скрипт модуля - export](https://youtu.be/CJr2vS3hjMU?t=1513) -- [26:10 пример ecma скрипт модуля - import](https://youtu.be/CJr2vS3hjMU?t=1570) -- [27:20 пример динамического импорта](https://youtu.be/CJr2vS3hjMU?t=1640) -- [31:10 загрузка ф-ии createRequire](https://youtu.be/CJr2vS3hjMU?t=1870) -- [41:00 подгрузка module через require](https://youtu.be/CJr2vS3hjMU?t=2460) -- [43:40 подгрузка module через import](https://youtu.be/CJr2vS3hjMU?t=2620) +- [01:02 export модулей](https://youtu.be/CJr2vS3hjMU?t=62) +- [03:00 require модулей](https://youtu.be/CJr2vS3hjMU?t=180) +- [05:35 require-resolve модулей](https://youtu.be/CJr2vS3hjMU?t=335) +- [12:15 cache](https://youtu.be/CJr2vS3hjMU?t=735) +- [18:38 немного об singleton](https://youtu.be/CJr2vS3hjMU?t=1118) +- [19:53 модуль global](https://youtu.be/CJr2vS3hjMU?t=1193) +- [20:43 пример с mixin-ами](https://youtu.be/CJr2vS3hjMU?t=1243) +- [25:13 пример ecma скрипт модуля - export](https://youtu.be/CJr2vS3hjMU?t=1513) +- [26:10 пример ecma скрипт модуля - import](https://youtu.be/CJr2vS3hjMU?t=1570) +- [27:20 пример динамического импорта](https://youtu.be/CJr2vS3hjMU?t=1640) +- [31:10 загрузка ф-ии createRequire](https://youtu.be/CJr2vS3hjMU?t=1870) +- [41:00 подгрузка module через require](https://youtu.be/CJr2vS3hjMU?t=2460) +- [43:40 подгрузка module через import](https://youtu.be/CJr2vS3hjMU?t=2620) ## [Node.js модули и пакеты формата ECMA и CommonJS, использование package.json и node_modules](https://youtu.be/31sX_3IbXs4) -- [1:00 подгрузка пакетов package](https://youtu.be/31sX_3IbXs4?t=60) -- [5:40 загрузка пакетов](https://youtu.be/31sX_3IbXs4?t=340) -- [9:00 подгрузка файлов нового формата .mjs](https://youtu.be/31sX_3IbXs4?t=540) -- [10:47 импорт ecma скрипт модулей с .js файлов](https://youtu.be/31sX_3IbXs4?t=647) -- [13:20 export пакетов](https://youtu.be/31sX_3IbXs4?t=800) -- [22:30 сравнение cache-й модулей](https://youtu.be/31sX_3IbXs4?t=1350) +- [01:00 подгрузка пакетов package](https://youtu.be/31sX_3IbXs4?t=60) +- [05:40 загрузка пакетов](https://youtu.be/31sX_3IbXs4?t=340) +- [09:00 подгрузка файлов нового формата .mjs](https://youtu.be/31sX_3IbXs4?t=540) +- [10:47 импорт ecma скрипт модулей с .js файлов](https://youtu.be/31sX_3IbXs4?t=647) +- [13:20 export пакетов](https://youtu.be/31sX_3IbXs4?t=800) +- [22:30 сравнение cache-й модулей](https://youtu.be/31sX_3IbXs4?t=1350) ## [Асинхронный пул для worker thread pool в Node.js](https://youtu.be/Jj5KZRq4wYI) From c2c8065a5c39dcee5643e084128c60830d84692f Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Thu, 4 Aug 2022 18:37:30 +0300 Subject: [PATCH 135/308] Add links --- Courses/Asynchronous.md | 2 ++ Courses/NodeJS.md | 2 ++ README.md | 8 ++++---- 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/Courses/Asynchronous.md b/Courses/Asynchronous.md index 29268ff..b4ad541 100644 --- a/Courses/Asynchronous.md +++ b/Courses/Asynchronous.md @@ -2,6 +2,8 @@ Объем материала: 24 лекции, 27 репозиториев с примерами кода. +[Таймкоды и подробное оглавление для части лекций](Asynchronous-timecodes.md) + ## Видео-лекции - [Асинхронное программирование (обзор)](https://youtu.be/hY6Z6qNYzmc) diff --git a/Courses/NodeJS.md b/Courses/NodeJS.md index 74a737e..e5bd520 100644 --- a/Courses/NodeJS.md +++ b/Courses/NodeJS.md @@ -4,6 +4,8 @@ Перед основной частью курса по Node.js нужно сначала освоить хоть частично курс по асинхронному программированию: https://github.com/HowProgrammingWorks/Index/blob/master/Courses/Asynchronous.md +[Таймкоды и подробное оглавление для части лекций](NodeJS-timecodes.md) + ## Доклады и выступления - [Node.js Middleware – никогда больше!](https://youtu.be/RS8x73z4csI) diff --git a/README.md b/README.md index b8d0c9a..7865dac 100644 --- a/README.md +++ b/README.md @@ -16,10 +16,10 @@ ## Отдельные курсы -- [Асинхронное программирование](Courses/Asynchronous.md) - (есть 97% примеров кода и видео-лекции) -- [Технологический стек Node.js](Courses/NodeJS.md) - (есть 95% кода и видео-лекций) +- [Асинхронное программирование](Courses/Asynchronous.md) [(с таймкодами)](Courses/Asynchronous-timecodes.md) + (есть 98% примеров кода и видео-лекции) +- [Технологический стек Node.js](Courses/NodeJS.md) [(с таймкодами)](Courses/NodeJS-timecodes.md) + (есть 97% кода и видео-лекций) - [Технологический стек Metarhia](Courses/Metarhia.md) (есть 5% примеров и видео-лекций) - [Шаблоны проектирования](Courses/Patterns.md) From 68cf4daece8419c91b4e3fbbdf1e3725a04837ab Mon Sep 17 00:00:00 2001 From: Anton Telichenko Date: Sat, 6 Aug 2022 10:05:53 +0300 Subject: [PATCH 136/308] Update Fundamentals-timecodes.md (#79) --- Courses/Fundamentals-timecodes.md | 1083 +++++++++++++++-------------- 1 file changed, 575 insertions(+), 508 deletions(-) diff --git a/Courses/Fundamentals-timecodes.md b/Courses/Fundamentals-timecodes.md index 4c93fe1..5dd2d4e 100644 --- a/Courses/Fundamentals-timecodes.md +++ b/Courses/Fundamentals-timecodes.md @@ -4,38 +4,39 @@ ## [Карта специальности инженер-программист](https://youtu.be/SE5aXH-yf0I) -- [00:00:00 Введение](https://youtu.be/SE5aXH-yf0I?t=0) -- [00:02:21 Что такое программирование? ](https://youtu.be/SE5aXH-yf0I?t=141) -- [00:05:55 Связанные понятия ](https://youtu.be/SE5aXH-yf0I?t=355) -- [00:06:43 Основы программной инженерии ](https://youtu.be/SE5aXH-yf0I?t=403) -- [00:11:42 Предсказуемые вычисления ](https://youtu.be/SE5aXH-yf0I?t=702) -- [00:14:36 Моделирование](https://youtu.be/SE5aXH-yf0I?t=876) -- [00:14:52 Классификация моделей ](https://youtu.be/SE5aXH-yf0I?t=892) -- [00:17:33 Схемы моделирования ](https://youtu.be/SE5aXH-yf0I?t=1053) -- [00:22:23 Парадигмы программирования ](https://youtu.be/SE5aXH-yf0I?t=1343) -- [00:23:16 Императивное и функциональное программирование ](https://youtu.be/SE5aXH-yf0I?t=1396) -- [00:28:25 Неструктурное программирование ](https://youtu.be/SE5aXH-yf0I?t=1705) -- [00:30:01 Структурное программирование ](https://youtu.be/SE5aXH-yf0I?t=1801) -- [00:30:46 Процедурное программирование ](https://youtu.be/SE5aXH-yf0I?t=1846) -- [00:31:18 Объектно-ориетированное программирование ](https://youtu.be/SE5aXH-yf0I?t=1878) -- [00:31:48 Прототипно-ориетированное программирование ](https://youtu.be/SE5aXH-yf0I?t=1908) -- [00:32:14 Функциональное программирование ](https://youtu.be/SE5aXH-yf0I?t=1934) -- [00:32:48 Узконаправленное программирование](https://youtu.be/SE5aXH-yf0I?t=1968) -- [00:33:44 Техники и технологии](https://youtu.be/SE5aXH-yf0I?t=2024) -- [00:36:55 Реактивное программирование и Событийно-ориентированное](https://youtu.be/SE5aXH-yf0I?t=2215) -- [00:38:16 Функционально-реактивное программирование ](https://youtu.be/SE5aXH-yf0I?t=2296) -- [00:38:39 Модель акторов](https://youtu.be/SE5aXH-yf0I?t=2319) -- [00:39:49 Метапрограммирование ](https://youtu.be/SE5aXH-yf0I?t=2389) -- [00:43:09 Системное и прикладное программирование](https://youtu.be/SE5aXH-yf0I?t=2589) -- [00:44:25 Задачи программной инженерии ](https://youtu.be/SE5aXH-yf0I?t=2665) -- [00:50:46 Как преодолеть сложность ](https://youtu.be/SE5aXH-yf0I?t=3046) -- [00:52:16 Данные и логика ](https://youtu.be/SE5aXH-yf0I?t=3136) -- [00:57:49 Разработка программного обеспечения ](https://youtu.be/SE5aXH-yf0I?t=3469) -- [01:04:50 Подход к разработке ](https://youtu.be/SE5aXH-yf0I?t=3890) -- [01:06:04 Гибридная разработка ](https://youtu.be/SE5aXH-yf0I?t=3964) -- [01:07:10 Принцип NIH ](https://youtu.be/SE5aXH-yf0I?t=4030) -- [01:09:12 Классификация приложений по месту запуска](https://youtu.be/SE5aXH-yf0I?t=4152) -- [01:12:17 Схемы и примеры](https://youtu.be/SE5aXH-yf0I?t=4337) +- [00:00:00 Введение](https://youtu.be/SE5aXH-yf0I?t=0) +- [00:02:21 Что такое программирование?](https://youtu.be/SE5aXH-yf0I?t=141) +- [00:05:55 Связанные понятия](https://youtu.be/SE5aXH-yf0I?t=355) +- [00:06:43 Основы программной инженерии](https://youtu.be/SE5aXH-yf0I?t=403) +- [00:11:42 Предсказуемые вычисления](https://youtu.be/SE5aXH-yf0I?t=702) +- [00:14:36 Моделирование](https://youtu.be/SE5aXH-yf0I?t=876) +- [00:14:52 Классификация моделей](https://youtu.be/SE5aXH-yf0I?t=892) +- [00:17:33 Схемы моделирования](https://youtu.be/SE5aXH-yf0I?t=1053) +- [00:22:23 Парадигмы программирования](https://youtu.be/SE5aXH-yf0I?t=1343) +- [00:23:16 Императивное и функциональное программирование](https://youtu.be/SE5aXH-yf0I?t=1396) +- [00:28:25 Неструктурное программирование](https://youtu.be/SE5aXH-yf0I?t=1705) +- [00:30:01 Структурное программирование](https://youtu.be/SE5aXH-yf0I?t=1801) +- [00:30:46 Процедурное программирование](https://youtu.be/SE5aXH-yf0I?t=1846) +- [00:31:18 Объектно-ориетированное программирование](https://youtu.be/SE5aXH-yf0I?t=1878) +- [00:31:48 Прототипно-ориетированное программирование](https://youtu.be/SE5aXH-yf0I?t=1908) +- [00:32:14 Функциональное программирование](https://youtu.be/SE5aXH-yf0I?t=1934) +- [00:32:48 Узконаправленное программирование](https://youtu.be/SE5aXH-yf0I?t=1968) +- [00:33:44 Техники и технологии](https://youtu.be/SE5aXH-yf0I?t=2024) +- [00:36:55 Реактивное программирование и Событийно-ориентированное](https://youtu.be/SE5aXH-yf0I?t=2215) +- [00:38:16 Функционально-реактивное программирование](https://youtu.be/SE5aXH-yf0I?t=2296) +- [00:38:39 Модель акторов](https://youtu.be/SE5aXH-yf0I?t=2319) +- [00:39:49 Метапрограммирование](https://youtu.be/SE5aXH-yf0I?t=2389) +- [00:43:09 Системное и прикладное программирование](https://youtu.be/SE5aXH-yf0I?t=2589) +- [00:44:25 Задачи программной инженерии](https://youtu.be/SE5aXH-yf0I?t=2665) +- [00:50:46 Как преодолеть сложность](https://youtu.be/SE5aXH-yf0I?t=3046) +- [00:52:16 Данные и логика](https://youtu.be/SE5aXH-yf0I?t=3136) +- [00:57:49 Разработка программного обеспечения](https://youtu.be/SE5aXH-yf0I?t=3469) +- [01:04:50 Подход к разработке](https://youtu.be/SE5aXH-yf0I?t=3890) +- [01:06:04 Гибридная разработка](https://youtu.be/SE5aXH-yf0I?t=3964) +- [01:07:10 Принцип NIH](https://youtu.be/SE5aXH-yf0I?t=4030) +- [01:09:12 Классификация приложений по месту запуска](https://youtu.be/SE5aXH-yf0I?t=4152) +- [01:12:17 Схемы и примеры](https://youtu.be/SE5aXH-yf0I?t=4337) + ## [Введение в программирование (1 часть)](https://youtu.be/5Gt61EX6HZ4) - [0:00:02 лекция о базовых понятиях для начинающих](https://youtu.be/5Gt61EX6HZ4?t=2) @@ -44,7 +45,9 @@ - [0:05:45 инструкция или оператор / Statement](https://youtu.be/5Gt61EX6HZ4?t=345) - [0:07:23 синтаксис / Syntax](https://youtu.be/5Gt61EX6HZ4?t=443) - [0:09:21 почти все группы операторов / Statements](https://youtu.be/5Gt61EX6HZ4?t=561) -- [0:13:27 операция 0:14:09 команда 0:15:03 директива](https://youtu.be/5Gt61EX6HZ4?t=807) +- [0:13:27 операция](https://youtu.be/5Gt61EX6HZ4?t=807) +- [0:14:09 команда](https://youtu.be/5Gt61EX6HZ4?t=849) +- [0:15:03 директива](https://youtu.be/5Gt61EX6HZ4?t=903) - [0:16:59 выражение / Expression](https://youtu.be/5Gt61EX6HZ4?t=1019) - [0:20:53 значение / Value](https://youtu.be/5Gt61EX6HZ4?t=1253) - [0:22:28 тип / Type](https://youtu.be/5Gt61EX6HZ4?t=1348) @@ -56,8 +59,8 @@ - [0:40:08 присвоение / Assignment](https://youtu.be/5Gt61EX6HZ4?t=2408) - [0:41:29 константа / Constant](https://youtu.be/5Gt61EX6HZ4?t=2489) - [0:43:16 структурные типы / Composed types](https://youtu.be/5Gt61EX6HZ4?t=2596) -- [0:44:03 флаг / Flag](https://www.youtube.com/watch?v=5Gt61EX6HZ4&t=2643s) -- [0:45:09 перечисляемый тип](https://youtu.be/5Gt61EX6HZ4?t=2643) +- [0:44:03 флаг / Flag](https://youtu.be/5Gt61EX6HZ4?t=2643) +- [0:45:09 перечисляемый тип](https://youtu.be/5Gt61EX6HZ4?t=2709) - [0:46:02 алгоритм / Algorithm](https://youtu.be/5Gt61EX6HZ4?t=2762) - [0:47:40 программа / Program](https://youtu.be/5Gt61EX6HZ4?t=2860) - [0:49:01 инженерия / Engineering](https://youtu.be/5Gt61EX6HZ4?t=2941) @@ -71,11 +74,12 @@ - [1:05:18 функция / Function](https://youtu.be/5Gt61EX6HZ4?t=3918) - [1:08:06 сигнатура функции / Function signature](https://youtu.be/5Gt61EX6HZ4?t=4086) - [1:09:16 метод / Method](https://youtu.be/5Gt61EX6HZ4?t=4156) -- [1:10:37 цикл / Loop](https://www.youtube.com/watch?v=5Gt61EX6HZ4&t=4237s) -- [1:10:52 итерирование](https://www.youtube.com/watch?v=5Gt61EX6HZ4&t=4252s) -- [1:11:40 функциональное программирование](https://youtu.be/5Gt61EX6HZ4?t=4237) +- [1:10:37 цикл / Loop](https://youtu.be/5Gt61EX6HZ4?t=4237) +- [1:10:52 итерирование](https://youtu.be/5Gt61EX6HZ4?t=4252) +- [1:11:40 функциональное программирование](https://youtu.be/5Gt61EX6HZ4?t=4300) - [1:13:05 условие / Conditional statements / ветвление](https://youtu.be/5Gt61EX6HZ4?t=4385) - [1:14:54 парадигма программирования / Programming paradigm](https://youtu.be/5Gt61EX6HZ4?t=4494) + ## [Семинар: Обсуждение плана и материалов курса «Основы программирования»](https://youtu.be/bQMTbRWrteU) - [0:15 - вопрос по операционным системам](https://youtu.be/bQMTbRWrteU?t=15) @@ -97,83 +101,97 @@ - [29:20 - как посещать старшую группу](https://youtu.be/bQMTbRWrteU?t=1760) - [31:45 - об основах вёрстки и популярных фреймворках](https://youtu.be/bQMTbRWrteU?t=1905) - [33:03 - обязательно ли использовать фреймворки](https://youtu.be/bQMTbRWrteU?t=1983) -- [36:15 - почему столь немногим удается сдать экзамен](https://youtu.be/bQMTbRWrteU?t=2175) +- [36:15 - почему столь немногим удаётся сдать экзамен](https://youtu.be/bQMTbRWrteU?t=2175) - [36:50 - проверка задач для допуска к экзамену и их уровень сложности](https://youtu.be/bQMTbRWrteU?t=2210) -- [37:55 - теоретические вопросы на экзамене, пример](https://youtu.be/bQMTbRWrteU?t=2275) +- [37:55 - теорeтические вопросы на экзамене, пример](https://youtu.be/bQMTbRWrteU?t=2275) - [39:35 - знание математики](https://youtu.be/bQMTbRWrteU?t=2375) - [43:10 - сложные вопросы CS в курсе](https://youtu.be/bQMTbRWrteU?t=2590) - [46:00 - как происходит проверка задач для допуска к экзамену](https://youtu.be/bQMTbRWrteU?t=2760) + ## [Настройка среды: Node.js, npm, git, eslint](https://youtu.be/hSyA7tcNaCE) + ## [Базовый синтаксис JavaScript](https://youtu.be/xJn3k1f4BiM) -- [00:00:00 Введение](https://youtu.be/xJn3k1f4BiM?t=0) -- [00:03:02 Идентификаторы (identifiers: const, let, arguments, object property)](https://youtu.be/xJn3k1f4BiM?t=182) -- [00:14:41 Циклы (loops)](https://youtu.be/xJn3k1f4BiM?t=881) -- [00:22:10 Функции (functions)](https://youtu.be/xJn3k1f4BiM?t=1330) -- [00:30:35 Объекты (objects) ](https://youtu.be/xJn3k1f4BiM?t=1835) -- [00:33:34 Итерирование по массиву ( for ( ... of ... { } )](https://youtu.be/xJn3k1f4BiM?t=2014) -- [00:39:01 Итерирование по объекту ( for ( ... in ... { } )](https://youtu.be/xJn3k1f4BiM?t=2341) -- [00:42:28 Синтаксис простого кода](https://youtu.be/xJn3k1f4BiM?t=2548) -- [00:55:21 Синтаксис функции](https://youtu.be/xJn3k1f4BiM?t=3321) -- [01:05:38 Синтаксис класса](https://youtu.be/xJn3k1f4BiM?t=3938) -- [01:09:10 Синтаксис расширения класса с помощью функции](https://youtu.be/xJn3k1f4BiM?t=4150) -- [01:14:59 Идентификаторы в виде символов unicode](https://youtu.be/xJn3k1f4BiM?t=4499) -- [01:17:15 Синтаксис комментариев](https://youtu.be/xJn3k1f4BiM?t=4635) -- [01:18:13 Способы объявления переменных ](https://youtu.be/xJn3k1f4BiM?t=4693) -- [01:18:24 Скалярные типы переменных (string, number, boolean)](https://youtu.be/xJn3k1f4BiM?t=4704) -- [01:19:12 Структурные/ссылочные типы переменных (function, array, object)](https://youtu.be/xJn3k1f4BiM?t=4752) +- [00:00:00 Введение](https://youtu.be/xJn3k1f4BiM?t=0) +- [00:03:02 Идентификаторы (identifiers: const, let, arguments, object property)](https://youtu.be/xJn3k1f4BiM?t=182) +- [00:14:41 Циклы (loops)](https://youtu.be/xJn3k1f4BiM?t=881) +- [00:22:10 Функции (functions)](https://youtu.be/xJn3k1f4BiM?t=1330) +- [00:30:35 Объекты (objects)](https://youtu.be/xJn3k1f4BiM?t=1835) +- [00:33:34 Итерирование по массиву ( for ( ... of ... { } )](https://youtu.be/xJn3k1f4BiM?t=2014) +- [00:39:01 Итерирование по объекту ( for ( ... in ... { } )](https://youtu.be/xJn3k1f4BiM?t=2341) +- [00:42:28 Синтаксис простого кода](https://youtu.be/xJn3k1f4BiM?t=2548) +- [00:55:21 Синтаксис функции](https://youtu.be/xJn3k1f4BiM?t=3321) +- [01:05:38 Синтаксис класса](https://youtu.be/xJn3k1f4BiM?t=3938) +- [01:09:10 Синтаксис расширения класса с помощью функции](https://youtu.be/xJn3k1f4BiM?t=4150) +- [01:14:59 Идентификаторы в виде символов unicode](https://youtu.be/xJn3k1f4BiM?t=4499) +- [01:17:15 Синтаксис комментариев](https://youtu.be/xJn3k1f4BiM?t=4635) +- [01:18:13 Способы объявления переменных](https://youtu.be/xJn3k1f4BiM?t=4693) +- [01:18:24 Скалярные типы переменных (string, number, boolean)](https://youtu.be/xJn3k1f4BiM?t=4704) +- [01:19:12 Структурные/ссылочные типы переменных (function, array, object)](https://youtu.be/xJn3k1f4BiM?t=4752) + ## [Базовый синтаксис JavaScript, продолжение](https://youtu.be/qa-XleqA0JU) -- [00:01:34 Number (integer / float)](https://youtu.be/qa-XleqA0JU?t=94) -- [00:02:11 String ](https://youtu.be/qa-XleqA0JU?t=131) -- [00:02:15 Boolean](https://youtu.be/qa-XleqA0JU?t=135) -- [00:02:16 Object](https://youtu.be/qa-XleqA0JU?t=136) -- [00:03:08 Array](https://youtu.be/qa-XleqA0JU?t=188) -- [00:04:20 Метод array.push](https://youtu.be/qa-XleqA0JU?t=260) -- [00:04:31 Метод array.unshift](https://youtu.be/qa-XleqA0JU?t=271) -- [00:04:50 Метод array.shift](https://youtu.be/qa-XleqA0JU?t=290) -- [00:05:17 Метод array.pop](https://youtu.be/qa-XleqA0JU?t=317) -- [00:05:55 Оператор typeof](https://youtu.be/qa-XleqA0JU?t=355) -- [00:08:33 Метод Array.isArray](https://youtu.be/qa-XleqA0JU?t=513) -- [00:10:06 Оператор instanceof](https://youtu.be/qa-XleqA0JU?t=606) -- [00:10:48 Undefined](https://youtu.be/qa-XleqA0JU?t=648) -- [00:11:12 Null](https://youtu.be/qa-XleqA0JU?t=672) -- [00:11:55 NaN](https://youtu.be/qa-XleqA0JU?t=715) -- [00:14:18 Infinity](https://youtu.be/qa-XleqA0JU?t=858) -- [00:14:48 Тернарный оператор](https://youtu.be/qa-XleqA0JU?t=888) -- [00:16:15 Функция paseInt](https://youtu.be/qa-XleqA0JU?t=975) -- [00:24:23 Функция paseFloat](https://youtu.be/qa-XleqA0JU?t=1463) -- [00:27:15 Удаление переменных ](https://youtu.be/qa-XleqA0JU?t=1635) -- [00:33:25 Побитовые операторы (Bitwise operators)](https://youtu.be/qa-XleqA0JU?t=2005) -- [00:34:38 Побитовые операции](https://youtu.be/qa-XleqA0JU?t=2078) -- [00:44:30 BigInt](https://youtu.be/qa-XleqA0JU?t=2670) -- [00:56:30 Операторы сравнения ](https://youtu.be/qa-XleqA0JU?t=3390) -- [01:01:20 Очередность операторов (Operator precedence)](https://youtu.be/qa-XleqA0JU?t=3680) -- [01:13:25 Оператор Switch](https://youtu.be/qa-XleqA0JU?t=4405) +- [00:01:34 Number (integer / float)](https://youtu.be/qa-XleqA0JU?t=94) +- [00:02:11 String](https://youtu.be/qa-XleqA0JU?t=131) +- [00:02:15 Boolean](https://youtu.be/qa-XleqA0JU?t=135) +- [00:02:16 Object](https://youtu.be/qa-XleqA0JU?t=136) +- [00:03:08 Array](https://youtu.be/qa-XleqA0JU?t=188) +- [00:04:20 Метод array.push](https://youtu.be/qa-XleqA0JU?t=260) +- [00:04:31 Метод array.unshift](https://youtu.be/qa-XleqA0JU?t=271) +- [00:04:50 Метод array.shift](https://youtu.be/qa-XleqA0JU?t=290) +- [00:05:17 Метод array.pop](https://youtu.be/qa-XleqA0JU?t=317) +- [00:05:55 Оператор typeof](https://youtu.be/qa-XleqA0JU?t=355) +- [00:08:33 Метод Array.isArray](https://youtu.be/qa-XleqA0JU?t=513) +- [00:10:06 Оператор instanceof](https://youtu.be/qa-XleqA0JU?t=606) +- [00:10:48 Undefined](https://youtu.be/qa-XleqA0JU?t=648) +- [00:11:12 Null](https://youtu.be/qa-XleqA0JU?t=672) +- [00:11:55 NaN](https://youtu.be/qa-XleqA0JU?t=715) +- [00:14:18 Infinity](https://youtu.be/qa-XleqA0JU?t=858) +- [00:14:48 Тернарный оператор](https://youtu.be/qa-XleqA0JU?t=888) +- [00:16:15 Функция paseInt](https://youtu.be/qa-XleqA0JU?t=975) +- [00:24:23 Функция paseFloat](https://youtu.be/qa-XleqA0JU?t=1463) +- [00:27:15 Удаление переменных](https://youtu.be/qa-XleqA0JU?t=1635) +- [00:33:25 Побитовые операторы (Bitwise operators)](https://youtu.be/qa-XleqA0JU?t=2005) +- [00:34:38 Побитовые операции](https://youtu.be/qa-XleqA0JU?t=2078) +- [00:44:30 BigInt](https://youtu.be/qa-XleqA0JU?t=2670) +- [00:56:30 Операторы сравнения](https://youtu.be/qa-XleqA0JU?t=3390) +- [01:01:20 Очередность операторов (Operator precedence)](https://youtu.be/qa-XleqA0JU?t=3680) +- [01:13:25 Оператор Switch](https://youtu.be/qa-XleqA0JU?t=4405) ## [Семинар: Базовый синтаксис языка JavaScript](https://youtu.be/PGqjTXQe_qw) + ## [Семинар: автоматическая проверка лабораторных работ](https://youtu.be/M4KpG0LEAyA) + ## [Введение в программирование (2 часть)](https://youtu.be/PzlLXQ3RaDs) - [0:00:01 введение](https://youtu.be/PzlLXQ3RaDs?t=1) - [0:01:45 процедура или подпрограмма / Procedure or Subroutine](https://youtu.be/PzlLXQ3RaDs?t=105) - [0:06:05 функция / Function](https://youtu.be/PzlLXQ3RaDs?t=365) -- [0:09:27 стек вызовов / Call Stack 0:18:26 Mixed Solution 0:21:42 принцип LIFO](https://youtu.be/PzlLXQ3RaDs?t=567) +- [0:09:27 стек вызовов / Call Stack](https://youtu.be/PzlLXQ3RaDs?t=567) +- [0:18:26 Mixed Solution](https://youtu.be/PzlLXQ3RaDs?t=1106) +- [0:21:42 принцип LIFO](https://youtu.be/PzlLXQ3RaDs?t=1302) - [0:22:09 куча и стек / Heap and Stack](https://youtu.be/PzlLXQ3RaDs?t=1329) - [0:25:55 рекурсия / Recursion](https://youtu.be/PzlLXQ3RaDs?t=1555) - [0:27:15 коллекция / Collection](https://youtu.be/PzlLXQ3RaDs?t=1635) - [0:27:51 массив / Array](https://youtu.be/PzlLXQ3RaDs?t=1671) - [0:28:18 отладка / Debug](https://youtu.be/PzlLXQ3RaDs?t=1698) - [0:28:23 компонент / Component](https://youtu.be/PzlLXQ3RaDs?t=1703) -- [0:29:37 модуль / Module 0:30:16 модульность / Modularity 0:33:52 ограничения 0:31:50 заглушки / Stubs](https://youtu.be/PzlLXQ3RaDs?t=1777) +- [0:29:37 модуль / Module](https://youtu.be/PzlLXQ3RaDs?t=1777) +- [0:30:16 модульность / Modularity](https://youtu.be/PzlLXQ3RaDs?t=1816) +- [0:33:52 ограничения](https://youtu.be/PzlLXQ3RaDs?t=2032) +- [0:31:50 заглушки / Stubs](https://youtu.be/PzlLXQ3RaDs?t=1910) - [0:36:19 библиотека / Library](https://youtu.be/PzlLXQ3RaDs?t=2179) -- [0:37:13 импорт и экспорт идентификаторов / Import and Export Identifiers 0:41:30 новый синтаксис](https://youtu.be/PzlLXQ3RaDs?t=2233) -- [0:45:22 объект или экземпляр / Object or Instance 0:47:08 2 способа задания Instance](https://youtu.be/PzlLXQ3RaDs?t=2722) -- [0:47:47 класс / Class 0:49:16 примеры](https://youtu.be/PzlLXQ3RaDs?t=2867) -- [0:51:30 инстанциирование / Instantiation 0:52:59 примеры](https://youtu.be/PzlLXQ3RaDs?t=3090) +- [0:37:13 импорт и экспорт идентификаторов / Import and Export Identifiers](https://youtu.be/PzlLXQ3RaDs?t=2233) +- [0:41:30 новый синтаксис](https://youtu.be/PzlLXQ3RaDs?t=2490) +- [0:45:22 объект или экземпляр / Object or Instance](https://youtu.be/PzlLXQ3RaDs?t=2722) +- [0:47:08 2 способа задания Instance](https://youtu.be/PzlLXQ3RaDs?t=2828) +- [0:47:47 класс / Class](https://youtu.be/PzlLXQ3RaDs?t=2867) +- [0:49:16 примеры](https://youtu.be/PzlLXQ3RaDs?t=2956) +- [0:51:30 инстанциирование / Instantiation](https://youtu.be/PzlLXQ3RaDs?t=3090) +- [0:52:59 примеры](https://youtu.be/PzlLXQ3RaDs?t=3179) - [0:54:59 область видимости / Scope](https://youtu.be/PzlLXQ3RaDs?t=3299) - [0:57:05 лексический(ое) контекст (окружение) / Lexical environment](https://youtu.be/PzlLXQ3RaDs?t=3425) - [0:58:19 объектный контекст функции / Object context: this](https://youtu.be/PzlLXQ3RaDs?t=3499) @@ -184,98 +202,99 @@ - [1:12:28 фрейм](https://youtu.be/PzlLXQ3RaDs?t=4348) - [1:14:46 строка в свойстве объекта](https://youtu.be/PzlLXQ3RaDs?t=4486) - [1:16:21 класс и объект](https://youtu.be/PzlLXQ3RaDs?t=4581) -- [1:16:47 класс и прототип](https://www.youtube.com/watch?v=PzlLXQ3RaDs&t=4607) -- [1:17:37 аллокирование значений в куче и стеке](https://youtu.be/PzlLXQ3RaDs?t=4607) +- [1:16:47 класс и прототип](https://youtu.be/PzlLXQ3RaDs?t=4607) +- [1:17:37 аллокирование значений в куче и стеке](https://youtu.be/PzlLXQ3RaDs?t=4657) - [1:18:43 сборщик мусора](https://youtu.be/PzlLXQ3RaDs?t=4723) - [1:20:29 терминология на английском и русском](https://youtu.be/PzlLXQ3RaDs?t=4829) ## [Функции, лямбды (стрелочные функции), контексты, замыкания в JavaScript](https://youtu.be/pn5myCmpV2U) -- [00:00:00 Введение ](https://youtu.be/pn5myCmpV2U?t=0) -- [00:11:22 Функция объявление (Declaration)](https://youtu.be/pn5myCmpV2U?t=682) -- [00:12:46 Функция выражение (Expression)](https://youtu.be/pn5myCmpV2U?t=766) -- [00:16:07 Лямбда-выражение (Lambda expression) или функция-стрелка (Arrow function) ](https://youtu.be/pn5myCmpV2U?t=967) -- [00:16:43 Лямбда-функция (Lambda function) ](https://youtu.be/pn5myCmpV2U?t=1003) -- [00:18:45 Область видимости (Scope)](https://youtu.be/pn5myCmpV2U?t=1125) -- [00:25:00 Функции, как абстракции](https://youtu.be/pn5myCmpV2U?t=1500) -- [00:26:43 Методы функции (name, length, toString( ) )](https://youtu.be/pn5myCmpV2U?t=1603) -- [00:31:26 Значения по умолчанию у функции ](https://youtu.be/pn5myCmpV2U?t=1886) -- [00:36:46 Rest-оператор (...args)](https://youtu.be/pn5myCmpV2U?t=2206) -- [00:41:49 Способ определения функции, через new Function](https://youtu.be/pn5myCmpV2U?t=2509) -- [00:44:46 Функции внутри объекта](https://youtu.be/pn5myCmpV2U?t=2686) -- [00:50:42 Обращение к полям объекта из привязанной функции, через this](https://youtu.be/pn5myCmpV2U?t=3042) -- [00:55:24 История синтаксиса создания контекстов, через самовызывающиеся функции ( IIFE)](https://youtu.be/pn5myCmpV2U?t=3324) -- [00:58:30 Методы функции, наследуемой от объекта (call, apply)](https://youtu.be/pn5myCmpV2U?t=3510) -- [01:00:53 Комментирование функций](https://youtu.be/pn5myCmpV2U?t=3653) -- [01:01:27 Задание декомпозиции функции](https://youtu.be/pn5myCmpV2U?t=3687) -- [01:04:24 Замыкание: context ](https://youtu.be/pn5myCmpV2U?t=3864) -- [01:08:41 Замыкание: chainning ](https://youtu.be/pn5myCmpV2U?t=4121) -- [01:11:55 Замыкание: summator ](https://youtu.be/pn5myCmpV2U?t=4315) -- [01:14:16 Замыкание: recursion](https://youtu.be/pn5myCmpV2U?t=4456) +- [00:00:00 Введение](https://youtu.be/pn5myCmpV2U?t=0) +- [00:11:22 Функция объявление (Declaration)](https://youtu.be/pn5myCmpV2U?t=682) +- [00:12:46 Функция выражение (Expression)](https://youtu.be/pn5myCmpV2U?t=766) +- [00:16:07 Лямбда-выражение (Lambda expression) или функция-стрелка (Arrow function)](https://youtu.be/pn5myCmpV2U?t=967) +- [00:16:43 Лямбда-функция (Lambda function)](https://youtu.be/pn5myCmpV2U?t=1003) +- [00:18:45 Область видимости (Scope)](https://youtu.be/pn5myCmpV2U?t=1125) +- [00:25:00 Функции, как абстракции](https://youtu.be/pn5myCmpV2U?t=1500) +- [00:26:43 Методы функции (name, length, toString( ) )](https://youtu.be/pn5myCmpV2U?t=1603) +- [00:31:26 Значения по умолчанию у функции](https://youtu.be/pn5myCmpV2U?t=1886) +- [00:36:46 Rest-оператор (...args)](https://youtu.be/pn5myCmpV2U?t=2206) +- [00:41:49 Способ определения функции, через new Function](https://youtu.be/pn5myCmpV2U?t=2509) +- [00:44:46 Функции внутри объекта](https://youtu.be/pn5myCmpV2U?t=2686) +- [00:50:42 Обращение к полям объекта из привязанной функции, через this](https://youtu.be/pn5myCmpV2U?t=3042) +- [00:55:24 История синтаксиса создания контекстов, через самовызывающиеся функции ( IIFE)](https://youtu.be/pn5myCmpV2U?t=3324) +- [00:58:30 Методы функции, наследуемой от объекта (call, apply)](https://youtu.be/pn5myCmpV2U?t=3510) +- [01:00:53 Комментирование функций](https://youtu.be/pn5myCmpV2U?t=3653) +- [01:01:27 Задание декомпозиции функции](https://youtu.be/pn5myCmpV2U?t=3687) +- [01:04:24 Замыкание: context](https://youtu.be/pn5myCmpV2U?t=3864) +- [01:08:41 Замыкание: chainning](https://youtu.be/pn5myCmpV2U?t=4121) +- [01:11:55 Замыкание: summator](https://youtu.be/pn5myCmpV2U?t=4315) +- [01:14:16 Замыкание: recursion](https://youtu.be/pn5myCmpV2U?t=4456) ## [Массивы, объекты, классы, прототипы в JavaScript](https://youtu.be/VBMGnAPfmsY) -- [00:00:00 Объекты](https://youtu.be/VBMGnAPfmsY?t=0) -- [00:11:01 Массивы](https://youtu.be/VBMGnAPfmsY?t=661) -- [00:13:29 Cериализация объекта ](https://youtu.be/VBMGnAPfmsY?t=809) -- [00:15:46 Cериализация массива ](https://youtu.be/VBMGnAPfmsY?t=946) -- [00:19:20 Методы array](https://youtu.be/VBMGnAPfmsY?t=1160) -- [00:20:22 Циклы ](https://youtu.be/VBMGnAPfmsY?t=1222) -- [00:21:16 Цикл for-in-object ](https://youtu.be/VBMGnAPfmsY?t=1276) -- [00:22:02 Цикл for-in-array](https://youtu.be/VBMGnAPfmsY?t=1322) -- [00:24:10 Цикл for-of-array ](https://youtu.be/VBMGnAPfmsY?t=1450) -- [00:25:05 Метод array.forEach](https://youtu.be/VBMGnAPfmsY?t=1505) -- [00:29:10 Метод array.map](https://youtu.be/VBMGnAPfmsY?t=1750) -- [00:33:59 Итерация матрицы, через for-of-array](https://youtu.be/VBMGnAPfmsY?t=2039) -- [00:38:38 Итерация матрицы, через array.forEach](https://youtu.be/VBMGnAPfmsY?t=2318) -- [00:39:22 Итерация матрицы, через for-in-array](https://youtu.be/VBMGnAPfmsY?t=2362) -- [00:39:45 Метод array.reduce](https://youtu.be/VBMGnAPfmsY?t=2385) -- [00:44:39 Методы объекта](https://youtu.be/VBMGnAPfmsY?t=2679) -- [00:46:38 Прототип](https://youtu.be/VBMGnAPfmsY?t=2798) -- [00:53:32 Класс ](https://youtu.be/VBMGnAPfmsY?t=3212) -- [00:56:04 Связывание методов с объектом, при помощи замыкания](https://youtu.be/VBMGnAPfmsY?t=3364) -- [01:00:08 Связывание методов с объектом, при помощи метода bind](https://youtu.be/VBMGnAPfmsY?t=3608) -- [01:03:19 Пример абстракции, при помощи замыкания](https://youtu.be/VBMGnAPfmsY?t=3799) -- [01:11:05 Пример абстракции, при помощи прототипа](https://youtu.be/VBMGnAPfmsY?t=4265) -- [01:12:30 Пример абстракции, при помощи класса](https://youtu.be/VBMGnAPfmsY?t=4350) -- [01:13:08 Наследование через синтаксис прототипов](https://youtu.be/VBMGnAPfmsY?t=4388) -- [01:18:50 Наследование через синтаксис классов ](https://youtu.be/VBMGnAPfmsY?t=4730) -- [01:21:05 Связывание объекта с методом класса при помощи прототипа ](https://youtu.be/VBMGnAPfmsY?t=4865) -- [01:23:52 Присваивание методов внутри конструктора, при прототипном подходе ](https://youtu.be/VBMGnAPfmsY?t=5032) -- [01:25:10 Get/Set класса ](https://youtu.be/VBMGnAPfmsY?t=5110) -- [01:27:00 Пример](https://youtu.be/VBMGnAPfmsY?t=5220) +- [00:00:00 Объекты](https://youtu.be/VBMGnAPfmsY?t=0) +- [00:11:01 Массивы](https://youtu.be/VBMGnAPfmsY?t=661) +- [00:13:29 Cериализация объекта](https://youtu.be/VBMGnAPfmsY?t=809) +- [00:15:46 Cериализация массива](https://youtu.be/VBMGnAPfmsY?t=946) +- [00:19:20 Методы array](https://youtu.be/VBMGnAPfmsY?t=1160) +- [00:20:22 Циклы](https://youtu.be/VBMGnAPfmsY?t=1222) +- [00:21:16 Цикл for-in-object](https://youtu.be/VBMGnAPfmsY?t=1276) +- [00:22:02 Цикл for-in-array](https://youtu.be/VBMGnAPfmsY?t=1322) +- [00:24:10 Цикл for-of-array](https://youtu.be/VBMGnAPfmsY?t=1450) +- [00:25:05 Метод array.forEach](https://youtu.be/VBMGnAPfmsY?t=1505) +- [00:29:10 Метод array.map](https://youtu.be/VBMGnAPfmsY?t=1750) +- [00:33:59 Итерация матрицы, через for-of-array](https://youtu.be/VBMGnAPfmsY?t=2039) +- [00:38:38 Итерация матрицы, через array.forEach](https://youtu.be/VBMGnAPfmsY?t=2318) +- [00:39:22 Итерация матрицы, через for-in-array](https://youtu.be/VBMGnAPfmsY?t=2362) +- [00:39:45 Метод array.reduce](https://youtu.be/VBMGnAPfmsY?t=2385) +- [00:44:39 Методы объекта](https://youtu.be/VBMGnAPfmsY?t=2679) +- [00:46:38 Прототип](https://youtu.be/VBMGnAPfmsY?t=2798) +- [00:53:32 Класс](https://youtu.be/VBMGnAPfmsY?t=3212) +- [00:56:04 Связывание методов с объектом, при помощи замыкания](https://youtu.be/VBMGnAPfmsY?t=3364) +- [01:00:08 Связывание методов с объектом, при помощи метода bind](https://youtu.be/VBMGnAPfmsY?t=3608) +- [01:03:19 Пример абстракции, при помощи замыкания](https://youtu.be/VBMGnAPfmsY?t=3799) +- [01:11:05 Пример абстракции, при помощи прототипа](https://youtu.be/VBMGnAPfmsY?t=4265) +- [01:12:30 Пример абстракции, при помощи класса](https://youtu.be/VBMGnAPfmsY?t=4350) +- [01:13:08 Наследование через синтаксис прототипов](https://youtu.be/VBMGnAPfmsY?t=4388) +- [01:18:50 Наследование через синтаксис классов](https://youtu.be/VBMGnAPfmsY?t=4730) +- [01:21:05 Связывание объекта с методом класса при помощи прототипа](https://youtu.be/VBMGnAPfmsY?t=4865) +- [01:23:52 Присваивание методов внутри конструктора, при прототипном подходе](https://youtu.be/VBMGnAPfmsY?t=5032) +- [01:25:10 Get/Set класса](https://youtu.be/VBMGnAPfmsY?t=5110) +- [01:27:00 Пример](https://youtu.be/VBMGnAPfmsY?t=5220) ## [Языки программирования: обзор, сравнение, выбор](https://youtu.be/enHA1CRkJe0) -- [0:00:02 обзорная лекция о классификации ЯП](https://youtu.be/enHA1CRkJe0?t=2) -- [0:00:53 типизация: статическая / динамическая](https://youtu.be/enHA1CRkJe0?t=53) -- [0:07:37 сильная / слабая || строгая / нестрогая](https://youtu.be/enHA1CRkJe0?t=457) -- [0:10:08 явная / неявная](https://youtu.be/enHA1CRkJe0?t=608) -- [0:13:58 утиная 0:18:26 протоколы](https://youtu.be/enHA1CRkJe0?t=838) -- [0:20:36 ниже и ближе к машине / выше и ближе к человеку](https://youtu.be/enHA1CRkJe0?t=1236) -- [0:32:20 сравнение asm и машинного кода](https://youtu.be/enHA1CRkJe0?t=1940) -- [0:39:38 сравнение asm и js](https://youtu.be/enHA1CRkJe0?t=2378) -- [0:42:47 функции и типы 1 класса](https://youtu.be/enHA1CRkJe0?t=2567) -- [0:44:39 распространённость](https://youtu.be/enHA1CRkJe0?t=2679) -- [0:45:47 скорость, читаемость](https://youtu.be/enHA1CRkJe0?t=2747) -- [0:48:21 владение правами / влияние на ЯП](https://youtu.be/enHA1CRkJe0?t=2901) -- [0:51:13 специализация](https://youtu.be/enHA1CRkJe0?t=3073) -- [0:53:13 наследственность](https://youtu.be/enHA1CRkJe0?t=3193) -- [0:56:33 инструментарий](https://youtu.be/enHA1CRkJe0?t=3393) -- [0:58:20 поддержка](https://youtu.be/enHA1CRkJe0?t=3500) -- [1:02:58 скорость развития](https://youtu.be/enHA1CRkJe0?t=3778) -- [1:04:12 системное программирование](https://youtu.be/enHA1CRkJe0?t=3852) -- [1:05:51 оконные приложения](https://youtu.be/enHA1CRkJe0?t=3951) -- [1:06:27 встраиваемые системы и автоматизация](https://youtu.be/enHA1CRkJe0?t=3987) -- [1:07:02 базы данных](https://youtu.be/enHA1CRkJe0?t=4022) -- [1:07:45 сетевые сервера](https://youtu.be/enHA1CRkJe0?t=4065) -- [1:09:03 вычисления](https://youtu.be/enHA1CRkJe0?t=4143) -- [1:10:45 ИИ](https://youtu.be/enHA1CRkJe0?t=4245) -- [1:11:52 параллельные вычисления, веб](https://youtu.be/enHA1CRkJe0?t=4312) -- [1:12:38 скрипты](https://youtu.be/enHA1CRkJe0?t=4358) -- [1:13:36 тестирование](https://youtu.be/enHA1CRkJe0?t=4416) -- [1:14:20 мобильные платформы](https://youtu.be/enHA1CRkJe0?t=4460) -- [1:16:10 игры, графика](https://youtu.be/enHA1CRkJe0?t=4570) +- [0:00:02 обзорная лекция о классификации ЯП](https://youtu.be/enHA1CRkJe0?t=2) +- [0:00:53 типизация: статическая / динамическая](https://youtu.be/enHA1CRkJe0?t=53) +- [0:07:37 сильная / слабая || строгая / нестрогая](https://youtu.be/enHA1CRkJe0?t=457) +- [0:10:08 явная / неявная](https://youtu.be/enHA1CRkJe0?t=608) +- [0:13:58 утиная](https://youtu.be/enHA1CRkJe0?t=838) +- [0:18:26 протоколы](https://youtu.be/enHA1CRkJe0?t=1106) +- [0:20:36 ниже и ближе к машине / выше и ближе к человеку](https://youtu.be/enHA1CRkJe0?t=1236) +- [0:32:20 сравнение asm и машинного кода](https://youtu.be/enHA1CRkJe0?t=1940) +- [0:39:38 сравнение asm и js](https://youtu.be/enHA1CRkJe0?t=2378) +- [0:42:47 функции и типы 1 класса](https://youtu.be/enHA1CRkJe0?t=2567) +- [0:44:39 распространённость](https://youtu.be/enHA1CRkJe0?t=2679) +- [0:45:47 скорость, читаемость](https://youtu.be/enHA1CRkJe0?t=2747) +- [0:48:21 владение правами / влияние на ЯП](https://youtu.be/enHA1CRkJe0?t=2901) +- [0:51:13 специализация](https://youtu.be/enHA1CRkJe0?t=3073) +- [0:53:13 наследственность](https://youtu.be/enHA1CRkJe0?t=3193) +- [0:56:33 инструментарий](https://youtu.be/enHA1CRkJe0?t=3393) +- [0:58:20 поддержка](https://youtu.be/enHA1CRkJe0?t=3500) +- [1:02:58 скорость развития](https://youtu.be/enHA1CRkJe0?t=3778) +- [1:04:12 системное программирование](https://youtu.be/enHA1CRkJe0?t=3852) +- [1:05:51 оконные приложения](https://youtu.be/enHA1CRkJe0?t=3951) +- [1:06:27 встраиваемые системы и автоматизация](https://youtu.be/enHA1CRkJe0?t=3987) +- [1:07:02 базы данных](https://youtu.be/enHA1CRkJe0?t=4022) +- [1:07:45 сетевые сервера](https://youtu.be/enHA1CRkJe0?t=4065) +- [1:09:03 вычисления](https://youtu.be/enHA1CRkJe0?t=4143) +- [1:10:45 ИИ](https://youtu.be/enHA1CRkJe0?t=4245) +- [1:11:52 параллельные вычисления, веб](https://youtu.be/enHA1CRkJe0?t=4312) +- [1:12:38 скрипты](https://youtu.be/enHA1CRkJe0?t=4358) +- [1:13:36 тестирование](https://youtu.be/enHA1CRkJe0?t=4416) +- [1:14:20 мобильные платформы](https://youtu.be/enHA1CRkJe0?t=4460) +- [1:16:10 игры, графика](https://youtu.be/enHA1CRkJe0?t=4570) ## [JavaScript: Ответы на вопросы](https://youtu.be/wqkQ6eslyzY) @@ -293,96 +312,96 @@ ## [Частичное применение и каррирование в JavaScript](https://youtu.be/ND8KQ5xjk7o) -- [00:00:00 Замыкание](https://youtu.be/ND8KQ5xjk7o?t=0) -- [00:04:54 Лямбда- функция](https://youtu.be/ND8KQ5xjk7o?t=294) -- [00:06:06 Метод bind](https://youtu.be/ND8KQ5xjk7o?t=366) -- [00:08:30 Абстрагированный пример функции](https://youtu.be/ND8KQ5xjk7o?t=510) -- [00:13:42 Абстрагированный пример функции (расширение)](https://youtu.be/ND8KQ5xjk7o?t=822) -- [00:15:47 Неправильная реализация каррирования](https://youtu.be/ND8KQ5xjk7o?t=947) -- [00:22:22 Правильная реализация каррирования](https://youtu.be/ND8KQ5xjk7o?t=1342) -- [00:28:54 Правильная реализация каррирования (расширение)](https://youtu.be/ND8KQ5xjk7o?t=1734) -- [00:31:41 Функциональные абстракции (superposition)](https://youtu.be/ND8KQ5xjk7o?t=1901) -- [00:38:02 Функциональные абстракции, с сохранением выражений (composition)](https://youtu.be/ND8KQ5xjk7o?t=2282) -- [00:45:05 Композиция с 2 функциями](https://youtu.be/ND8KQ5xjk7o?t=2705) -- [00:46:05 Композиция с n - функциями, при помощи метода reduce](https://youtu.be/ND8KQ5xjk7o?t=2765) -- [00:51:25 Композиция с n - функциями, при помощи цикла](https://youtu.be/ND8KQ5xjk7o?t=3085) -- [00:54:29 Композиция с n - функциями, при помощи рекурсии](https://youtu.be/ND8KQ5xjk7o?t=3269) -- [00:57:40 Композиция асинхронных функций](https://youtu.be/ND8KQ5xjk7o?t=3460) -- [01:01:27 Обобщение](https://youtu.be/ND8KQ5xjk7o?t=3687) +- [00:00:00 Замыкание](https://youtu.be/ND8KQ5xjk7o?t=0) +- [00:04:54 Лямбда- функция](https://youtu.be/ND8KQ5xjk7o?t=294) +- [00:06:06 Метод bind](https://youtu.be/ND8KQ5xjk7o?t=366) +- [00:08:30 Абстрагированный пример функции](https://youtu.be/ND8KQ5xjk7o?t=510) +- [00:13:42 Абстрагированный пример функции (расширение)](https://youtu.be/ND8KQ5xjk7o?t=822) +- [00:15:47 Неправильная реализация каррирования](https://youtu.be/ND8KQ5xjk7o?t=947) +- [00:22:22 Правильная реализация каррирования](https://youtu.be/ND8KQ5xjk7o?t=1342) +- [00:28:54 Правильная реализация каррирования (расширение)](https://youtu.be/ND8KQ5xjk7o?t=1734) +- [00:31:41 Функциональные абстракции (superposition)](https://youtu.be/ND8KQ5xjk7o?t=1901) +- [00:38:02 Функциональные абстракции, с сохранением выражений (composition)](https://youtu.be/ND8KQ5xjk7o?t=2282) +- [00:45:05 Композиция с 2 функциями](https://youtu.be/ND8KQ5xjk7o?t=2705) +- [00:46:05 Композиция с n - функциями, при помощи метода reduce](https://youtu.be/ND8KQ5xjk7o?t=2765) +- [00:51:25 Композиция с n - функциями, при помощи цикла](https://youtu.be/ND8KQ5xjk7o?t=3085) +- [00:54:29 Композиция с n - функциями, при помощи рекурсии](https://youtu.be/ND8KQ5xjk7o?t=3269) +- [00:57:40 Композиция асинхронных функций](https://youtu.be/ND8KQ5xjk7o?t=3460) +- [01:01:27 Обобщение](https://youtu.be/ND8KQ5xjk7o?t=3687) ## [Функции высшего порядка, колбеки, события на JavaScript](https://youtu.be/1vqATwbGHnc) -- [00:00:00 Определение](https://youtu.be/1vqATwbGHnc?t=0) -- [00:02:03 Математическая функция](https://youtu.be/1vqATwbGHnc?t=123) -- [00:05:57 Функция обратного вызова (callback) ](https://youtu.be/1vqATwbGHnc?t=357) -- [00:09:33 Замыкание](https://youtu.be/1vqATwbGHnc?t=573) -- [00:10:51 Цепочка вызовов ](https://youtu.be/1vqATwbGHnc?t=651) -- [00:12:40 Сохранение кэша с помощью замыкания](https://youtu.be/1vqATwbGHnc?t=760) -- [00:18:29 Добавление функции поведение логирования](https://youtu.be/1vqATwbGHnc?t=1109) -- [00:21:45 Обобщение](https://youtu.be/1vqATwbGHnc?t=1305) -- [00:22:45 Сallback](https://youtu.be/1vqATwbGHnc?t=1365) -- [00:25:32 Сallback асинхронной функции считывание файла](https://youtu.be/1vqATwbGHnc?t=1532) -- [00:28:36 Сallback именованный](https://youtu.be/1vqATwbGHnc?t=1716) -- [00:33:01 Сallback-timer ](https://youtu.be/1vqATwbGHnc?t=1981) -- [00:36:20 Сallback-timer-curry](https://youtu.be/1vqATwbGHnc?t=2180) -- [00:38:59 Listener](https://youtu.be/1vqATwbGHnc?t=2339) -- [00:41:10 Listener-timer](https://youtu.be/1vqATwbGHnc?t=2470) -- [00:46:59 Event](https://youtu.be/1vqATwbGHnc?t=2819) -- [00:53:45 Event-imitter](https://youtu.be/1vqATwbGHnc?t=3225) -- [00:57:48 Deferred object (отложенный объект)](https://youtu.be/1vqATwbGHnc?t=3468) -- [01:01:31 Errors](https://youtu.be/1vqATwbGHnc?t=3691) +- [00:00:00 Определение](https://youtu.be/1vqATwbGHnc?t=0) +- [00:02:03 Математическая функция](https://youtu.be/1vqATwbGHnc?t=123) +- [00:05:57 Функция обратного вызова (callback)](https://youtu.be/1vqATwbGHnc?t=357) +- [00:09:33 Замыкание](https://youtu.be/1vqATwbGHnc?t=573) +- [00:10:51 Цепочка вызовов](https://youtu.be/1vqATwbGHnc?t=651) +- [00:12:40 Сохранение кэша с помощью замыкания](https://youtu.be/1vqATwbGHnc?t=760) +- [00:18:29 Добавление функции поведение логирования](https://youtu.be/1vqATwbGHnc?t=1109) +- [00:21:45 Обобщение](https://youtu.be/1vqATwbGHnc?t=1305) +- [00:22:45 Сallback](https://youtu.be/1vqATwbGHnc?t=1365) +- [00:25:32 Сallback асинхронной функции считывание файла](https://youtu.be/1vqATwbGHnc?t=1532) +- [00:28:36 Сallback именованный](https://youtu.be/1vqATwbGHnc?t=1716) +- [00:33:01 Сallback-timer](https://youtu.be/1vqATwbGHnc?t=1981) +- [00:36:20 Сallback-timer-curry](https://youtu.be/1vqATwbGHnc?t=2180) +- [00:38:59 Listener](https://youtu.be/1vqATwbGHnc?t=2339) +- [00:41:10 Listener-timer](https://youtu.be/1vqATwbGHnc?t=2470) +- [00:46:59 Event](https://youtu.be/1vqATwbGHnc?t=2819) +- [00:53:45 Event-imitter](https://youtu.be/1vqATwbGHnc?t=3225) +- [00:57:48 Deferred object (отложенный объект)](https://youtu.be/1vqATwbGHnc?t=3468) +- [01:01:31 Errors](https://youtu.be/1vqATwbGHnc?t=3691) ## [Работа со строками, шаблонами и юникодом в JavaScript](https://youtu.be/GcopcHQkA8M) -- [00:00:00 Unicode строки](https://youtu.be/GcopcHQkA8M?t=0) -- [00:12:07 Обычные строки](https://youtu.be/GcopcHQkA8M?t=727) -- [00:17:03 Методы строки ](https://youtu.be/GcopcHQkA8M?t=1023) -- [00:23:09 Модификация строк ](https://youtu.be/GcopcHQkA8M?t=1389) -- [00:28:00 Получение подстроки в строке ](https://youtu.be/GcopcHQkA8M?t=1680) -- [00:34:45 Polyffill ](https://youtu.be/GcopcHQkA8M?t=2085) -- [00:37:54 Методы padEnd и padStart ](https://youtu.be/GcopcHQkA8M?t=2274) -- [00:40:45 Добавление функции для шаблонизирующей строки](https://youtu.be/GcopcHQkA8M?t=2445) -- [00:44:27 Пример ](https://youtu.be/GcopcHQkA8M?t=2667) -- [00:48:29 Библиотека Concolor.js](https://youtu.be/GcopcHQkA8M?t=2909) +- [00:00:00 Unicode строки](https://youtu.be/GcopcHQkA8M?t=0) +- [00:12:07 Обычные строки](https://youtu.be/GcopcHQkA8M?t=727) +- [00:17:03 Методы строки](https://youtu.be/GcopcHQkA8M?t=1023) +- [00:23:09 Модификация строк](https://youtu.be/GcopcHQkA8M?t=1389) +- [00:28:00 Получение подстроки в строке](https://youtu.be/GcopcHQkA8M?t=1680) +- [00:34:45 Polyffill](https://youtu.be/GcopcHQkA8M?t=2085) +- [00:37:54 Методы padEnd и padStart](https://youtu.be/GcopcHQkA8M?t=2274) +- [00:40:45 Добавление функции для шаблонизирующей строки](https://youtu.be/GcopcHQkA8M?t=2445) +- [00:44:27 Пример](https://youtu.be/GcopcHQkA8M?t=2667) +- [00:48:29 Библиотека Concolor.js](https://youtu.be/GcopcHQkA8M?t=2909) ## [Регулярные выражения и парсинг в JavaScript](https://youtu.be/-ef2E0ozxao) -- [00:00:00 Введение](https://youtu.be/-ef2E0ozxao?t=0) -- [00:10:30 Синтаксис регулярных выражений ](https://youtu.be/-ef2E0ozxao?t=630) -- [00:12:54 Задание регулярного выражения ](https://youtu.be/-ef2E0ozxao?t=774) -- [00:30:38 RegExp ](https://youtu.be/-ef2E0ozxao?t=1838) -- [00:38:11 Метод match ](https://youtu.be/-ef2E0ozxao?t=2291) -- [00:46:48 Метод split](https://youtu.be/-ef2E0ozxao?t=2808) -- [00:49:28 Метод replace ](https://youtu.be/-ef2E0ozxao?t=2968) -- [00:50:43 Метод replace с аргументом функции ](https://youtu.be/-ef2E0ozxao?t=3043) -- [00:53:28 Метод search ](https://youtu.be/-ef2E0ozxao?t=3208) -- [00:55:05 Обобщение](https://youtu.be/-ef2E0ozxao?t=3305) +- [00:00:00 Введение](https://youtu.be/-ef2E0ozxao?t=0) +- [00:10:30 Синтаксис регулярных выражений](https://youtu.be/-ef2E0ozxao?t=630) +- [00:12:54 Задание регулярного выражения](https://youtu.be/-ef2E0ozxao?t=774) +- [00:30:38 RegExp](https://youtu.be/-ef2E0ozxao?t=1838) +- [00:38:11 Метод match](https://youtu.be/-ef2E0ozxao?t=2291) +- [00:46:48 Метод split](https://youtu.be/-ef2E0ozxao?t=2808) +- [00:49:28 Метод replace](https://youtu.be/-ef2E0ozxao?t=2968) +- [00:50:43 Метод replace с аргументом функции](https://youtu.be/-ef2E0ozxao?t=3043) +- [00:53:28 Метод search](https://youtu.be/-ef2E0ozxao?t=3208) +- [00:55:05 Обобщение](https://youtu.be/-ef2E0ozxao?t=3305) ## [Примеси, обертки, декораторы, мемоизация в JavaScript](https://youtu.be/oRQ0kQr1N-U) -- [00:00:00 Синхронная функция-обертка ](https://youtu.be/oRQ0kQr1N-U?t=0) -- [00:02:55 Синхронная универсальная функция-обертка ](https://youtu.be/oRQ0kQr1N-U?t=175) -- [00:08:28 Асинхронная универсальная функция-обертка ](https://youtu.be/oRQ0kQr1N-U?t=508) -- [00:15:50 Синхронная функция-обертка, которая добавляет поведение (timeout)](https://youtu.be/oRQ0kQr1N-U?t=950) -- [00:22:45 Асинхронная функция-обертка, которая добавляет поведение (timeout)](https://youtu.be/oRQ0kQr1N-U?t=1365) -- [00:25:38 Функция-обертка, которая ограничивает вызов функции до одного вызова (once) ](https://youtu.be/oRQ0kQr1N-U?t=1538) -- [00:27:36 Функция-обертка, которая ограничивает вызов функции до n-го вызова (limit)](https://youtu.be/oRQ0kQr1N-U?t=1656) -- [00:29:50 Функция-обертка, которая отменяет вызов функции (cancel)](https://youtu.be/oRQ0kQr1N-U?t=1790) -- [00:32:29 Функция-обертка с методами timeout, limit, cancel](https://youtu.be/oRQ0kQr1N-U?t=1949) -- [00:39:03 Функция-обертка с методами timeout, limit, cancel (оптимизированная)](https://youtu.be/oRQ0kQr1N-U?t=2343) -- [00:42:28 Функция-обертка, которая ограничивает один вызов за 200 мс (throttle)](https://youtu.be/oRQ0kQr1N-U?t=2548) -- [00:45:47 Примесь поля через точку ](https://youtu.be/oRQ0kQr1N-U?t=2747) -- [00:51:35 Примесь поля через функцию extend](https://youtu.be/oRQ0kQr1N-U?t=3095) -- [00:57:35 Примесь поля через object.assign( )](https://youtu.be/oRQ0kQr1N-U?t=3455) -- [00:59:18 Примесь поведения ](https://youtu.be/oRQ0kQr1N-U?t=3558) -- [01:02:23 Примесь изменения класса](https://youtu.be/oRQ0kQr1N-U?t=3743) -- [01:06:50 Определение](https://youtu.be/oRQ0kQr1N-U?t=4010) -- [01:07:30 Реализация простой мемоизации ](https://youtu.be/oRQ0kQr1N-U?t=4050) -- [01:14:43 Реализация простой мемоизации с проверкой скорости ](https://youtu.be/oRQ0kQr1N-U?t=4483) -- [01:20:43 Удаление накопленного кэша ](https://youtu.be/oRQ0kQr1N-U?t=4843) -- [01:25:35 Асинхронная мемоизация ](https://youtu.be/oRQ0kQr1N-U?t=5135) -- [01:31:10 Преобразование аргументов и ключей в hash-функцию](https://youtu.be/oRQ0kQr1N-U?t=5470) -- [01:33:32 Реализация сложной мемоизации](https://youtu.be/oRQ0kQr1N-U?t=5612) +- [00:00:00 Синхронная функция-обертка](https://youtu.be/oRQ0kQr1N-U?t=0) +- [00:02:55 Синхронная универсальная функция-обертка](https://youtu.be/oRQ0kQr1N-U?t=175) +- [00:08:28 Асинхронная универсальная функция-обертка](https://youtu.be/oRQ0kQr1N-U?t=508) +- [00:15:50 Синхронная функция-обертка, которая добавляет поведение (timeout)](https://youtu.be/oRQ0kQr1N-U?t=950) +- [00:22:45 Асинхронная функция-обертка, которая добавляет поведение (timeout)](https://youtu.be/oRQ0kQr1N-U?t=1365) +- [00:25:38 Функция-обертка, которая ограничивает вызов функции до одного вызова (once)](https://youtu.be/oRQ0kQr1N-U?t=1538) +- [00:27:36 Функция-обертка, которая ограничивает вызов функции до n-го вызова (limit)](https://youtu.be/oRQ0kQr1N-U?t=1656) +- [00:29:50 Функция-обертка, которая отменяет вызов функции (cancel)](https://youtu.be/oRQ0kQr1N-U?t=1790) +- [00:32:29 Функция-обертка с методами timeout, limit, cancel](https://youtu.be/oRQ0kQr1N-U?t=1949) +- [00:39:03 Функция-обертка с методами timeout, limit, cancel (оптимизированная)](https://youtu.be/oRQ0kQr1N-U?t=2343) +- [00:42:28 Функция-обертка, которая ограничивает один вызов за 200 мс (throttle)](https://youtu.be/oRQ0kQr1N-U?t=2548) +- [00:45:47 Примесь поля через точку](https://youtu.be/oRQ0kQr1N-U?t=2747) +- [00:51:35 Примесь поля через функцию extend](https://youtu.be/oRQ0kQr1N-U?t=3095) +- [00:57:35 Примесь поля через object.assign( )](https://youtu.be/oRQ0kQr1N-U?t=3455) +- [00:59:18 Примесь поведения](https://youtu.be/oRQ0kQr1N-U?t=3558) +- [01:02:23 Примесь изменения класса](https://youtu.be/oRQ0kQr1N-U?t=3743) +- [01:06:50 Определение](https://youtu.be/oRQ0kQr1N-U?t=4010) +- [01:07:30 Реализация простой мемоизации](https://youtu.be/oRQ0kQr1N-U?t=4050) +- [01:14:43 Реализация простой мемоизации с проверкой скорости](https://youtu.be/oRQ0kQr1N-U?t=4483) +- [01:20:43 Удаление накопленного кэша](https://youtu.be/oRQ0kQr1N-U?t=4843) +- [01:25:35 Асинхронная мемоизация](https://youtu.be/oRQ0kQr1N-U?t=5135) +- [01:31:10 Преобразование аргументов и ключей в hash-функцию](https://youtu.be/oRQ0kQr1N-U?t=5470) +- [01:33:32 Реализация сложной мемоизации](https://youtu.be/oRQ0kQr1N-U?t=5612) ## [Консоль и командная строка в JavaScript и Node.js](https://youtu.be/5aSZyKi5BmE) @@ -393,24 +412,24 @@ ## [Чеининг функций и объектов, обработка ошибок в JavaScript](https://youtu.be/PfuEfIiLX34) -- [00:00:00 Введение ](https://youtu.be/PfuEfIiLX34?t=0) -- [00:01:10 Чеининг через синтаксис вызова функций ](https://youtu.be/PfuEfIiLX34?t=70) -- [00:02:12 Prototype ](https://youtu.be/PfuEfIiLX34?t=132) -- [00:05:45 Сlass](https://youtu.be/PfuEfIiLX34?t=345) -- [00:06:11 Functor](https://youtu.be/PfuEfIiLX34?t=371) -- [00:11:54 Mutable](https://youtu.be/PfuEfIiLX34?t=714) -- [00:16:34 Iterator](https://youtu.be/PfuEfIiLX34?t=994) -- [00:26:18 Promise ](https://youtu.be/PfuEfIiLX34?t=1578) -- [00:26:35 Test](https://youtu.be/PfuEfIiLX34?t=1595) -- [00:37:08 Compare ](https://youtu.be/PfuEfIiLX34?t=2228) -- [00:39:45 Benchmark](https://youtu.be/PfuEfIiLX34?t=2385) -- [00:40:48 Запуск и анализ тестов ](https://youtu.be/PfuEfIiLX34?t=2448) -- [01:03:48 Первый способ возвращение ошибок в синхронном коде ](https://youtu.be/PfuEfIiLX34?t=3828) -- [01:09:24 Второй способ возвращение ошибок в синхронном коде ](https://youtu.be/PfuEfIiLX34?t=4164) -- [01:12:26 Возвращение ошибок в асинхронном коде ](https://youtu.be/PfuEfIiLX34?t=4346) -- [01:16:14 Корректное возвращение ошибок ](https://youtu.be/PfuEfIiLX34?t=4574) -- [01:20:03 Обработка ошибок c promise ](https://youtu.be/PfuEfIiLX34?t=4803) -- [01:23:58 Обработка ошибок c async-await](https://youtu.be/PfuEfIiLX34?t=5038) +- [00:00:00 Введение](https://youtu.be/PfuEfIiLX34?t=0) +- [00:01:10 Чеининг через синтаксис вызова функций](https://youtu.be/PfuEfIiLX34?t=70) +- [00:02:12 Prototype](https://youtu.be/PfuEfIiLX34?t=132) +- [00:05:45 Сlass](https://youtu.be/PfuEfIiLX34?t=345) +- [00:06:11 Functor](https://youtu.be/PfuEfIiLX34?t=371) +- [00:11:54 Mutable](https://youtu.be/PfuEfIiLX34?t=714) +- [00:16:34 Iterator](https://youtu.be/PfuEfIiLX34?t=994) +- [00:26:18 Promise](https://youtu.be/PfuEfIiLX34?t=1578) +- [00:26:35 Test](https://youtu.be/PfuEfIiLX34?t=1595) +- [00:37:08 Compare](https://youtu.be/PfuEfIiLX34?t=2228) +- [00:39:45 Benchmark](https://youtu.be/PfuEfIiLX34?t=2385) +- [00:40:48 Запуск и анализ тестов](https://youtu.be/PfuEfIiLX34?t=2448) +- [01:03:48 Первый способ возвращение ошибок в синхронном коде](https://youtu.be/PfuEfIiLX34?t=3828) +- [01:09:24 Второй способ возвращение ошибок в синхронном коде](https://youtu.be/PfuEfIiLX34?t=4164) +- [01:12:26 Возвращение ошибок в асинхронном коде](https://youtu.be/PfuEfIiLX34?t=4346) +- [01:16:14 Корректное возвращение ошибок](https://youtu.be/PfuEfIiLX34?t=4574) +- [01:20:03 Обработка ошибок c promise](https://youtu.be/PfuEfIiLX34?t=4803) +- [01:23:58 Обработка ошибок c async-await](https://youtu.be/PfuEfIiLX34?t=5038) ## [Таймеры, таймауты, EventEmitter в JavaScript и Node.js](https://youtu.be/LK2jveAnRNg) @@ -439,22 +458,22 @@ ## [Итерирование, циклы и итераторы в JavaScript](https://youtu.be/lq3b5_UGJas) -- [00:00:00 Цикл for](https://youtu.be/lq3b5_UGJas?t=0) -- [00:02:45 Цикл while](https://youtu.be/lq3b5_UGJas?t=165) -- [00:03:16 Цикл do while ](https://youtu.be/lq3b5_UGJas?t=196) -- [00:03:33 Цикл for in object ](https://youtu.be/lq3b5_UGJas?t=213) -- [00:04:40 Цикл for in array](https://youtu.be/lq3b5_UGJas?t=280) -- [00:06:44 Цикл for of](https://youtu.be/lq3b5_UGJas?t=404) -- [00:08:45 Оператор break](https://youtu.be/lq3b5_UGJas?t=525) -- [00:10:13 Оператор continue](https://youtu.be/lq3b5_UGJas?t=613) -- [00:12:12 Итерирование по массиву методом forEach](https://youtu.be/lq3b5_UGJas?t=732) -- [00:15:10 Итерирование по массиву методом map ](https://youtu.be/lq3b5_UGJas?t=910) -- [00:21:23 Итерирование по двухмерному массиву (мatrix)](https://youtu.be/lq3b5_UGJas?t=1283) -- [00:25:38 Итерирование по двухмерному массиву (мatrix) методом forEach](https://youtu.be/lq3b5_UGJas?t=1538) -- [00:26:08 Итерирование массива методом reduce](https://youtu.be/lq3b5_UGJas?t=1568) -- [00:28:49 Итерирование по объекту ](https://youtu.be/lq3b5_UGJas?t=1729) -- [00:37:32 Обратный итератор ](https://youtu.be/lq3b5_UGJas?t=2252) -- [00:40:42 Асинхронный итератор](https://youtu.be/lq3b5_UGJas?t=2442) +- [00:00:00 Цикл for](https://youtu.be/lq3b5_UGJas?t=0) +- [00:02:45 Цикл while](https://youtu.be/lq3b5_UGJas?t=165) +- [00:03:16 Цикл do while](https://youtu.be/lq3b5_UGJas?t=196) +- [00:03:33 Цикл for in object](https://youtu.be/lq3b5_UGJas?t=213) +- [00:04:40 Цикл for in array](https://youtu.be/lq3b5_UGJas?t=280) +- [00:06:44 Цикл for of](https://youtu.be/lq3b5_UGJas?t=404) +- [00:08:45 Оператор break](https://youtu.be/lq3b5_UGJas?t=525) +- [00:10:13 Оператор continue](https://youtu.be/lq3b5_UGJas?t=613) +- [00:12:12 Итерирование по массиву методом forEach](https://youtu.be/lq3b5_UGJas?t=732) +- [00:15:10 Итерирование по массиву методом map](https://youtu.be/lq3b5_UGJas?t=910) +- [00:21:23 Итерирование по двухмерному массиву (мatrix)](https://youtu.be/lq3b5_UGJas?t=1283) +- [00:25:38 Итерирование по двухмерному массиву (мatrix) методом forEach](https://youtu.be/lq3b5_UGJas?t=1538) +- [00:26:08 Итерирование массива методом reduce](https://youtu.be/lq3b5_UGJas?t=1568) +- [00:28:49 Итерирование по объекту](https://youtu.be/lq3b5_UGJas?t=1729) +- [00:37:32 Обратный итератор](https://youtu.be/lq3b5_UGJas?t=2252) +- [00:40:42 Асинхронный итератор](https://youtu.be/lq3b5_UGJas?t=2442) ## [Архитектурный подход к программированию](https://youtu.be/d_vyO2CkiOc) @@ -469,12 +488,13 @@ - [01:05:20 Альтернативные варианты](https://youtu.be/d_vyO2CkiOc?t=3920) - [01:12:20 Как на самом деле](https://youtu.be/d_vyO2CkiOc?t=4340) - [01:13:45 Архитектура мечты](https://youtu.be/d_vyO2CkiOc?t=4425) -- [01:16:45 Современные возможности и требования ](https://youtu.be/d_vyO2CkiOc?t=4605) +- [01:16:45 Современные возможности и требования](https://youtu.be/d_vyO2CkiOc?t=4605) - [01:25:20 Топологии](https://youtu.be/d_vyO2CkiOc?t=5120) - [01:30:45 Итог](https://youtu.be/d_vyO2CkiOc?t=5445) ## [Функциональное программирование на JavaScript](https://youtu.be/0JxSs_GcvbQ) + ## [Реактивное программирование на JavaScript](https://youtu.be/7MH8-qQc-48) - [0:00 введение](https://youtu.be/7MH8-qQc-48?t=0) @@ -494,43 +514,43 @@ ## [Проекции и отображения наборов данных в JavaScript](https://youtu.be/lwJCq9inky8) -- [00:00:00 Введение ](https://youtu.be/lwJCq9inky8?t=0) -- [00:01:50 Простая проекция набора данных ](https://youtu.be/lwJCq9inky8?t=110) -- [00:09:23 Расширенная проекция набора данных ](https://youtu.be/lwJCq9inky8?t=563) -- [00:19:00 Расширенная проекция набора данных с кэшированием списка ключей](https://youtu.be/lwJCq9inky8?t=1140) -- [00:20:27 Оптимизация проекции набора данных с помощью императивного программирования ](https://youtu.be/lwJCq9inky8?t=1227) -- [00:23:11 Линзы из функционального программирования ](https://youtu.be/lwJCq9inky8?t=1391) -- [00:32:29 Сложная проекция набора данных ( проекция изнутри и снаружи ) ](https://youtu.be/lwJCq9inky8?t=1949) -- [00:39:08 Сложная проекция набора данных с помощью декларативного программирования ](https://youtu.be/lwJCq9inky8?t=2348) -- [00:41:57 Оптимизация сложной проекции ](https://youtu.be/lwJCq9inky8?t=2517) -- [00:51:36 Синтаксис фильтрации ](https://youtu.be/lwJCq9inky8?t=3096) -- [00:53:25 Вывод ](https://youtu.be/lwJCq9inky8?t=3205) -- [00:58:08 Оптимизация](https://youtu.be/lwJCq9inky8?t=3488) -- [01:00:00 Обобщение](https://youtu.be/lwJCq9inky8?t=3600) +- [00:00:00 Введение](https://youtu.be/lwJCq9inky8?t=0) +- [00:01:50 Простая проекция набора данных](https://youtu.be/lwJCq9inky8?t=110) +- [00:09:23 Расширенная проекция набора данных](https://youtu.be/lwJCq9inky8?t=563) +- [00:19:00 Расширенная проекция набора данных с кэшированием списка ключей](https://youtu.be/lwJCq9inky8?t=1140) +- [00:20:27 Оптимизация проекции набора данных с помощью императивного программирования](https://youtu.be/lwJCq9inky8?t=1227) +- [00:23:11 Линзы из функционального программирования](https://youtu.be/lwJCq9inky8?t=1391) +- [00:32:29 Сложная проекция набора данных ( проекция изнутри и снаружи )](https://youtu.be/lwJCq9inky8?t=1949) +- [00:39:08 Сложная проекция набора данных с помощью декларативного программирования](https://youtu.be/lwJCq9inky8?t=2348) +- [00:41:57 Оптимизация сложной проекции](https://youtu.be/lwJCq9inky8?t=2517) +- [00:51:36 Синтаксис фильтрации](https://youtu.be/lwJCq9inky8?t=3096) +- [00:53:25 Вывод](https://youtu.be/lwJCq9inky8?t=3205) +- [00:58:08 Оптимизация](https://youtu.be/lwJCq9inky8?t=3488) +- [01:00:00 Обобщение](https://youtu.be/lwJCq9inky8?t=3600) ## [Коллекции, множества, хештаблицы в JavaScript](https://youtu.be/hN0wsq5LNOc) -- [00:00:00 Введение](https://youtu.be/hN0wsq5LNOc?t=0) -- [00:01:35 Массивы ](https://youtu.be/hN0wsq5LNOc?t=95) -- [00:01:56 Склеивание массива методом concat ](https://youtu.be/hN0wsq5LNOc?t=116) -- [00:02:02 Склеивание массива оператором spread ](https://youtu.be/hN0wsq5LNOc?t=122) -- [00:03:17 Объекты ](https://youtu.be/hN0wsq5LNOc?t=197) -- [00:03:28 Склеивание объектов методом object.assign ](https://youtu.be/hN0wsq5LNOc?t=208) -- [00:04:01 Склеивание объектов оператором spread ](https://youtu.be/hN0wsq5LNOc?t=241) -- [00:04:38 Символический тип ](https://youtu.be/hN0wsq5LNOc?t=278) -- [00:06:50 Сохранение коллекции в файл ](https://youtu.be/hN0wsq5LNOc?t=410) -- [00:08:45 Использование конструированного map ](https://youtu.be/hN0wsq5LNOc?t=525) -- [00:14:29 Использование встроенного map ](https://youtu.be/hN0wsq5LNOc?t=869) -- [00:15:01 Отличия конструированного и встроенного map](https://youtu.be/hN0wsq5LNOc?t=901) -- [00:16:49 Способы итерации по map ](https://youtu.be/hN0wsq5LNOc?t=1009) -- [00:18:15 Построение индексов помощью map](https://youtu.be/hN0wsq5LNOc?t=1095) -- [00:23:15 WeakMap](https://youtu.be/hN0wsq5LNOc?t=1395) -- [00:27:55 Отдача значения без ключа ](https://youtu.be/hN0wsq5LNOc?t=1675) -- [00:29:15 Хранение уникальных значений ](https://youtu.be/hN0wsq5LNOc?t=1755) -- [00:33:32 Операции со массивами ](https://youtu.be/hN0wsq5LNOc?t=2012) -- [00:39:48 Операции над множествами ](https://youtu.be/hN0wsq5LNOc?t=2388) -- [00:42:32 WeakSet ](https://youtu.be/hN0wsq5LNOc?t=2552) -- [00:47:15 Обобщение](https://youtu.be/hN0wsq5LNOc?t=2835) +- [00:00:00 Введение](https://youtu.be/hN0wsq5LNOc?t=0) +- [00:01:35 Массивы](https://youtu.be/hN0wsq5LNOc?t=95) +- [00:01:56 Склеивание массива методом concat](https://youtu.be/hN0wsq5LNOc?t=116) +- [00:02:02 Склеивание массива оператором spread](https://youtu.be/hN0wsq5LNOc?t=122) +- [00:03:17 Объекты](https://youtu.be/hN0wsq5LNOc?t=197) +- [00:03:28 Склеивание объектов методом object.assign](https://youtu.be/hN0wsq5LNOc?t=208) +- [00:04:01 Склеивание объектов оператором spread](https://youtu.be/hN0wsq5LNOc?t=241) +- [00:04:38 Символический тип](https://youtu.be/hN0wsq5LNOc?t=278) +- [00:06:50 Сохранение коллекции в файл](https://youtu.be/hN0wsq5LNOc?t=410) +- [00:08:45 Использование конструированного map](https://youtu.be/hN0wsq5LNOc?t=525) +- [00:14:29 Использование встроенного map](https://youtu.be/hN0wsq5LNOc?t=869) +- [00:15:01 Отличия конструированного и встроенного map](https://youtu.be/hN0wsq5LNOc?t=901) +- [00:16:49 Способы итерации по map](https://youtu.be/hN0wsq5LNOc?t=1009) +- [00:18:15 Построение индексов помощью map](https://youtu.be/hN0wsq5LNOc?t=1095) +- [00:23:15 WeakMap](https://youtu.be/hN0wsq5LNOc?t=1395) +- [00:27:55 Отдача значения без ключа](https://youtu.be/hN0wsq5LNOc?t=1675) +- [00:29:15 Хранение уникальных значений](https://youtu.be/hN0wsq5LNOc?t=1755) +- [00:33:32 Операции со массивами](https://youtu.be/hN0wsq5LNOc?t=2012) +- [00:39:48 Операции над множествами](https://youtu.be/hN0wsq5LNOc?t=2388) +- [00:42:32 WeakSet](https://youtu.be/hN0wsq5LNOc?t=2552) +- [00:47:15 Обобщение](https://youtu.be/hN0wsq5LNOc?t=2835) ## [Неблокирующее асинхронное итерирование в JavaScript](https://youtu.be/wYA2cIRYLoA) @@ -544,166 +564,176 @@ ## [Структуры данных: списки, стек, очередь, дэк в JavaScript](https://youtu.be/9KvA4hDDSjk) -- [00:00:00 Идея структуры данных](https://youtu.be/9KvA4hDDSjk?t=0) -- [00:02:27 Списки на прототипах ( абстракция элемента ) ](https://youtu.be/9KvA4hDDSjk?t=147) -- [00:06:23 Списки на объектах ](https://youtu.be/9KvA4hDDSjk?t=383) -- [00:07:28 Списки на замыканиях](https://youtu.be/9KvA4hDDSjk?t=448) -- [00:10:56 Списки на объектах ( абстракция элемента и списка ) ](https://youtu.be/9KvA4hDDSjk?t=656) -- [00:18:22 Списки на классах](https://youtu.be/9KvA4hDDSjk?t=1102) -- [00:21:08 Стек на прототипах ( двух-связанный)](https://youtu.be/9KvA4hDDSjk?t=1268) -- [00:28:17 Стек на классах (односвязный)](https://youtu.be/9KvA4hDDSjk?t=1697) -- [00:29:55 Очередь](https://youtu.be/9KvA4hDDSjk?t=1795) -- [00:34:26 Дэк](https://youtu.be/9KvA4hDDSjk?t=2066) +- [00:00:00 Идея структуры данных](https://youtu.be/9KvA4hDDSjk?t=0) +- [00:02:27 Списки на прототипах ( абстракция элемента )](https://youtu.be/9KvA4hDDSjk?t=147) +- [00:06:23 Списки на объектах](https://youtu.be/9KvA4hDDSjk?t=383) +- [00:07:28 Списки на замыканиях](https://youtu.be/9KvA4hDDSjk?t=448) +- [00:10:56 Списки на объектах ( абстракция элемента и списка )](https://youtu.be/9KvA4hDDSjk?t=656) +- [00:18:22 Списки на классах](https://youtu.be/9KvA4hDDSjk?t=1102) +- [00:21:08 Стек на прототипах ( двух-связанный)](https://youtu.be/9KvA4hDDSjk?t=1268) +- [00:28:17 Стек на классах (односвязный)](https://youtu.be/9KvA4hDDSjk?t=1697) +- [00:29:55 Очередь](https://youtu.be/9KvA4hDDSjk?t=1795) +- [00:34:26 Дэк](https://youtu.be/9KvA4hDDSjk?t=2066) ## [Proxy и Symbol в JavaScript](https://youtu.be/UjZjSDyi9AM) -- [00:00:00 Определение Proxy](https://youtu.be/UjZjSDyi9AM?t=0) -- [00:01:20 Обращение к свойствам объекта, находящегося внутри proxy](https://youtu.be/UjZjSDyi9AM?t=80) -- [00:04:10 Доступ к состоянию объекта через Getter и Setter ](https://youtu.be/UjZjSDyi9AM?t=250) -- [00:05:13 Доступ к состоянию объекта через Proxy ](https://youtu.be/UjZjSDyi9AM?t=313) -- [00:07:40 Проверка наличие свойств ](https://youtu.be/UjZjSDyi9AM?t=460) -- [00:11:22 Удаление свойств](https://youtu.be/UjZjSDyi9AM?t=682) -- [00:13:26 Обращение к аргументам функции, находящегося внутри proxy ](https://youtu.be/UjZjSDyi9AM?t=806) -- [00:15:30 Другие Proxy обработчики (Proxy handler )](https://youtu.be/UjZjSDyi9AM?t=930) -- [00:19:00 Proxy.revocable ](https://youtu.be/UjZjSDyi9AM?t=1140) -- [00:20:43 Определение Symbol ](https://youtu.be/UjZjSDyi9AM?t=1243) -- [00:23:00 Вывод и сравнение Symbol ](https://youtu.be/UjZjSDyi9AM?t=1380) -- [00:25:10 Type](https://youtu.be/UjZjSDyi9AM?t=1510) -- [00:29:51 Symbol.for](https://youtu.be/UjZjSDyi9AM?t=1791) -- [00:34:45 Symbol.iterator ](https://youtu.be/UjZjSDyi9AM?t=2085) -- [00:43:52 Symbol.toPrimitive](https://youtu.be/UjZjSDyi9AM?t=2632) -- [00:47:00 hideSymbol](https://youtu.be/UjZjSDyi9AM?t=2820) +- [00:00:00 Определение Proxy](https://youtu.be/UjZjSDyi9AM?t=0) +- [00:01:20 Обращение к свойствам объекта, находящегося внутри proxy](https://youtu.be/UjZjSDyi9AM?t=80) +- [00:04:10 Доступ к состоянию объекта через Getter и Setter](https://youtu.be/UjZjSDyi9AM?t=250) +- [00:05:13 Доступ к состоянию объекта через Proxy](https://youtu.be/UjZjSDyi9AM?t=313) +- [00:07:40 Проверка наличие свойств](https://youtu.be/UjZjSDyi9AM?t=460) +- [00:11:22 Удаление свойств](https://youtu.be/UjZjSDyi9AM?t=682) +- [00:13:26 Обращение к аргументам функции, находящегося внутри proxy](https://youtu.be/UjZjSDyi9AM?t=806) +- [00:15:30 Другие Proxy обработчики (Proxy handler )](https://youtu.be/UjZjSDyi9AM?t=930) +- [00:19:00 Proxy.revocable](https://youtu.be/UjZjSDyi9AM?t=1140) +- [00:20:43 Определение Symbol](https://youtu.be/UjZjSDyi9AM?t=1243) +- [00:23:00 Вывод и сравнение Symbol](https://youtu.be/UjZjSDyi9AM?t=1380) +- [00:25:10 Type](https://youtu.be/UjZjSDyi9AM?t=1510) +- [00:29:51 Symbol.for](https://youtu.be/UjZjSDyi9AM?t=1791) +- [00:34:45 Symbol.iterator](https://youtu.be/UjZjSDyi9AM?t=2085) +- [00:43:52 Symbol.toPrimitive](https://youtu.be/UjZjSDyi9AM?t=2632) +- [00:47:00 hideSymbol](https://youtu.be/UjZjSDyi9AM?t=2820) ## [Сериализация и десериализация в JavaScript и Node.js](https://youtu.be/GtKPniOEzh8) -- [00:00:00 Введение ](https://youtu.be/GtKPniOEzh8?t=0) -- [00:01:50 Виды сериализации ](https://youtu.be/GtKPniOEzh8?t=110) -- [00:02:45 Сериализатор console.dir ](https://youtu.be/GtKPniOEzh8?t=165) -- [00:03:45 Cериализатор CSV](https://youtu.be/GtKPniOEzh8?t=225) -- [00:05:42 Сериализатор JSON ](https://youtu.be/GtKPniOEzh8?t=342) -- [00:10:00 Сериализатор функции](https://youtu.be/GtKPniOEzh8?t=600) -- [00:15:25 Сериализатор функции разных типов (расширяемый)](https://youtu.be/GtKPniOEzh8?t=925) -- [00:23:06 Десереализация ](https://youtu.be/GtKPniOEzh8?t=1386) -- [00:25:26 Сериализация объекта в бинарный формат, с помощью библиотеки v8 ](https://youtu.be/GtKPniOEzh8?t=1526) -- [00:28:26 Сериализация объекта, с помощью разных библиотек](https://youtu.be/GtKPniOEzh8?t=1706) +- [00:00:00 Введение](https://youtu.be/GtKPniOEzh8?t=0) +- [00:01:50 Виды сериализации](https://youtu.be/GtKPniOEzh8?t=110) +- [00:02:45 Сериализатор console.dir](https://youtu.be/GtKPniOEzh8?t=165) +- [00:03:45 Cериализатор CSV](https://youtu.be/GtKPniOEzh8?t=225) +- [00:05:42 Сериализатор JSON](https://youtu.be/GtKPniOEzh8?t=342) +- [00:10:00 Сериализатор функции](https://youtu.be/GtKPniOEzh8?t=600) +- [00:15:25 Сериализатор функции разных типов (расширяемый)](https://youtu.be/GtKPniOEzh8?t=925) +- [00:23:06 Десереализация](https://youtu.be/GtKPniOEzh8?t=1386) +- [00:25:26 Сериализация объекта в бинарный формат, с помощью библиотеки v8](https://youtu.be/GtKPniOEzh8?t=1526) +- [00:28:26 Сериализация объекта, с помощью разных библиотек](https://youtu.be/GtKPniOEzh8?t=1706) ## [Асинхронность с библиотекой async.js](https://youtu.be/XQ94wQc-erU) + ## [Фабрики и пулы объектов в JavaScript, factorify, poolify](https://youtu.be/Ax_mSvadFp8) -- [00:00:00 Введение ](https://youtu.be/Ax_mSvadFp8?t=0) -- [00:02:38 Фабрика ( factory )](https://youtu.be/Ax_mSvadFp8?t=158) -- [00:05:44 Фабрика прототипов ](https://youtu.be/Ax_mSvadFp8?t=344) -- [00:10:48 Фабрика классов ](https://youtu.be/Ax_mSvadFp8?t=648) -- [00:12:28 Фабрика функций ](https://youtu.be/Ax_mSvadFp8?t=748) -- [00:15:55 Фабричные методы ](https://youtu.be/Ax_mSvadFp8?t=955) -- [00:16:55 Превращение функций в фабрику ( factorify)](https://youtu.be/Ax_mSvadFp8?t=1015) -- [00:19:44 Пул ( pool )](https://youtu.be/Ax_mSvadFp8?t=1184) -- [00:23:05 Работа с пулом ](https://youtu.be/Ax_mSvadFp8?t=1385) -- [00:23:04 Обобщенный пул](https://youtu.be/Ax_mSvadFp8?t=1384) -- [00:24:55 Пулифицирование фабрики ( poolify ) ](https://youtu.be/Ax_mSvadFp8?t=1495) -- [00:28:50 Улучшенная пулифицированная фабрика ](https://youtu.be/Ax_mSvadFp8?t=1730) -- [00:32:10 Асинхронная работа с пулом ](https://youtu.be/Ax_mSvadFp8?t=1930) -- [00:45:25 Одновременное использование factorify и poolify ](https://youtu.be/Ax_mSvadFp8?t=2725) -- [00:51:54 Обобщение](https://youtu.be/Ax_mSvadFp8?t=3114) +- [00:00:00 Введение](https://youtu.be/Ax_mSvadFp8?t=0) +- [00:02:38 Фабрика ( factory )](https://youtu.be/Ax_mSvadFp8?t=158) +- [00:05:44 Фабрика прототипов](https://youtu.be/Ax_mSvadFp8?t=344) +- [00:10:48 Фабрика классов](https://youtu.be/Ax_mSvadFp8?t=648) +- [00:12:28 Фабрика функций](https://youtu.be/Ax_mSvadFp8?t=748) +- [00:15:55 Фабричные методы](https://youtu.be/Ax_mSvadFp8?t=955) +- [00:16:55 Превращение функций в фабрику ( factorify)](https://youtu.be/Ax_mSvadFp8?t=1015) +- [00:19:44 Пул ( pool )](https://youtu.be/Ax_mSvadFp8?t=1184) +- [00:23:05 Работа с пулом](https://youtu.be/Ax_mSvadFp8?t=1385) +- [00:23:04 Обобщенный пул](https://youtu.be/Ax_mSvadFp8?t=1384) +- [00:24:55 Пулифицирование фабрики ( poolify )](https://youtu.be/Ax_mSvadFp8?t=1495) +- [00:28:50 Улучшеная пулифицированная фабрика](https://youtu.be/Ax_mSvadFp8?t=1730) +- [00:32:10 Ассинхронная работа с пулом](https://youtu.be/Ax_mSvadFp8?t=1930) +- [00:45:25 Одновременное использование factorify и poolify](https://youtu.be/Ax_mSvadFp8?t=2725) +- [00:51:54 Обобщение](https://youtu.be/Ax_mSvadFp8?t=3114) ## [Подход к изучению программирования (выступление на дне факультета Информатики КПИ 12 декабря 2018)](https://youtu.be/zMU4ir10DMg) -- [00:40 Что нужно знать?](https://youtu.be/zMU4ir10DMg?t=40) -- [03:41 Откуда брать знания ](https://youtu.be/zMU4ir10DMg?t=221) -- [07:39 Проблемы отрасли ](https://youtu.be/zMU4ir10DMg?t=459) -- [13:12 Дерево парадигм ](https://youtu.be/zMU4ir10DMg?t=792) -- [14:15 Технологии и техники](https://youtu.be/zMU4ir10DMg?t=855) -- [14:32 Разница парадигм](https://youtu.be/zMU4ir10DMg?t=872) -- [14:48 Что общего в парадигмах](https://youtu.be/zMU4ir10DMg?t=888) -- [15:33 Прочие парадигмы и техники](https://youtu.be/zMU4ir10DMg?t=933) -- [17:46 Мультипарадигменность](https://youtu.be/zMU4ir10DMg?t=1066) -- [18:46 Метапрограммирование](https://youtu.be/zMU4ir10DMg?t=1126) -- [19:13 Как не деградировать?](https://youtu.be/zMU4ir10DMg?t=1153) -- [21:29 Как найти общий язык? ](https://youtu.be/zMU4ir10DMg?t=1289) -- [24:31 Задачи программной инженерии](https://youtu.be/zMU4ir10DMg?t=1471) -- [28:19 Преодоление сложности ](https://youtu.be/zMU4ir10DMg?t=1699) -- [28:21 Связывание данных и логики](https://youtu.be/zMU4ir10DMg?t=1701) -- [28:30 Различные концепции ](https://youtu.be/zMU4ir10DMg?t=1710) -- [29:40 ВУЗ должен меняться](https://youtu.be/zMU4ir10DMg?t=1780) -- [33:53 Неспециальные предметы](https://youtu.be/zMU4ir10DMg?t=2033) -- [35:18 Чего не хватает](https://youtu.be/zMU4ir10DMg?t=2118) -- [36:57 Проблем много ](https://youtu.be/zMU4ir10DMg?t=2217) -- [40:20 ВУЗ должен знать](https://youtu.be/zMU4ir10DMg?t=2420) +- [00:40 Что нужно знать?](https://youtu.be/zMU4ir10DMg?t=40) +- [03:41 Откуда брать знания](https://youtu.be/zMU4ir10DMg?t=221) +- [07:39 Проблемы отрасли](https://youtu.be/zMU4ir10DMg?t=459) +- [13:12 Дерево парадигм](https://youtu.be/zMU4ir10DMg?t=792) +- [14:15 Технологии и техники](https://youtu.be/zMU4ir10DMg?t=855) +- [14:32 Разница парадигм](https://youtu.be/zMU4ir10DMg?t=872) +- [14:48 Что общего в парадигмах](https://youtu.be/zMU4ir10DMg?t=888) +- [15:33 Прочие парадигмы и техники](https://youtu.be/zMU4ir10DMg?t=933) +- [17:46 Мультипарадигменность](https://youtu.be/zMU4ir10DMg?t=1066) +- [18:46 Метапрограммирование](https://youtu.be/zMU4ir10DMg?t=1126) +- [19:13 Как не деградировать?](https://youtu.be/zMU4ir10DMg?t=1153) +- [21:29 Как найти общий язык?](https://youtu.be/zMU4ir10DMg?t=1289) +- [24:31 Задачи программной инженерии](https://youtu.be/zMU4ir10DMg?t=1471) +- [28:19 Преодоление сложности](https://youtu.be/zMU4ir10DMg?t=1699) +- [28:21 Связывание данных и логики](https://youtu.be/zMU4ir10DMg?t=1701) +- [28:30 Различные концепции](https://youtu.be/zMU4ir10DMg?t=1710) +- [29:40 ВУЗ должен меняться](https://youtu.be/zMU4ir10DMg?t=1780) +- [33:53 Неспециальные предметы](https://youtu.be/zMU4ir10DMg?t=2033) +- [35:18 Чего не хватает](https://youtu.be/zMU4ir10DMg?t=2118) +- [36:57 Проблем много](https://youtu.be/zMU4ir10DMg?t=2217) +- [40:20 ВУЗ должен знать](https://youtu.be/zMU4ir10DMg?t=2420) ## [Асинхронность на промисах, Promise, all, then, catch, race](https://youtu.be/RMl4r6s1Y8M) + ## [Типизированные массивы в JavaScript](https://youtu.be/tTNcqxbxhfY) + ## [Шаблон Singleton (синглтон) в JavaScript](https://youtu.be/qdJ5yikZnfE) -- [00:00:00 Singleton через конструктор прототипа](https://youtu.be/qdJ5yikZnfE?t=0) -- [00:03:27 Singleton через замыкания ](https://youtu.be/qdJ5yikZnfE?t=207) -- [00:06:10 Пример singleton через замыкания ](https://youtu.be/qdJ5yikZnfE?t=370) -- [00:08:15 Пример singleton через замыкания в функциональном стиле ](https://youtu.be/qdJ5yikZnfE?t=495) -- [00:09:23 Пример singleton через замыкания в функциональном стиле (упрощенный) ](https://youtu.be/qdJ5yikZnfE?t=563) -- [00:10:32 Создание singleton в JS](https://youtu.be/qdJ5yikZnfE?t=632) +- [00:00:00 Singleton через конструктор прототипа](https://youtu.be/qdJ5yikZnfE?t=0) +- [00:03:27 Singleton через замыкания](https://youtu.be/qdJ5yikZnfE?t=207) +- [00:06:10 Пример singleton через замыкания](https://youtu.be/qdJ5yikZnfE?t=370) +- [00:08:15 Пример singleton через замыкания в функциональном стиле](https://youtu.be/qdJ5yikZnfE?t=495) +- [00:09:23 Пример singleton через замыкания в функциональном стиле (упрощенный)](https://youtu.be/qdJ5yikZnfE?t=563) +- [00:10:32 Создание singleton в JS](https://youtu.be/qdJ5yikZnfE?t=632) ## [Функциональные объекты, функторы и монады в JavaScript](https://youtu.be/3Z7f0Gi8pxw) -- [00:00:00 Определение функтора ](https://youtu.be/3Z7f0Gi8pxw?t=0) -- [00:01:40 Функтор из прототипа ](https://youtu.be/3Z7f0Gi8pxw?t=100) -- [00:08:17 Функтор из прототипа (упрощенный) ](https://youtu.be/3Z7f0Gi8pxw?t=497) -- [00:09:14 Функтор из замыкания ](https://youtu.be/3Z7f0Gi8pxw?t=554) -- [00:11:49 Функтор из замыкания с тернарным оператором](https://youtu.be/3Z7f0Gi8pxw?t=709) -- [00:12:44 Аппликативный функтор из прототипа ](https://youtu.be/3Z7f0Gi8pxw?t=764) -- [00:18:08 Аппликативный функтор из замыкания (монада)](https://youtu.be/3Z7f0Gi8pxw?t=1088) -- [00:23:11 Пример применения монады ](https://youtu.be/3Z7f0Gi8pxw?t=1391) -- [00:28:37 Функциональный объект ](https://youtu.be/3Z7f0Gi8pxw?t=1717) -- [00:39:44 Пример применения функционального объекта](https://youtu.be/3Z7f0Gi8pxw?t=2384) -- [00:45:27 Обобщение](https://youtu.be/3Z7f0Gi8pxw?t=2727) +- [00:00:00 Определение функтора](https://youtu.be/3Z7f0Gi8pxw?t=0) +- [00:01:40 Функтор из прототипа](https://youtu.be/3Z7f0Gi8pxw?t=100) +- [00:08:17 Функтор из прототипа (упрощенный)](https://youtu.be/3Z7f0Gi8pxw?t=497) +- [00:09:14 Функтор из замыкания](https://youtu.be/3Z7f0Gi8pxw?t=554) +- [00:11:49 Функтор из замыкания с тернарным оператором](https://youtu.be/3Z7f0Gi8pxw?t=709) +- [00:12:44 Аппликативный функтор из прототипа](https://youtu.be/3Z7f0Gi8pxw?t=764) +- [00:18:08 Аппликативный функтор из замыкания (монада)](https://youtu.be/3Z7f0Gi8pxw?t=1088) +- [00:23:11 Пример применения монады](https://youtu.be/3Z7f0Gi8pxw?t=1391) +- [00:28:37 Функциональный объект](https://youtu.be/3Z7f0Gi8pxw?t=1717) +- [00:39:44 Пример применения функционального объекта](https://youtu.be/3Z7f0Gi8pxw?t=2384) +- [00:45:27 Обобщение](https://youtu.be/3Z7f0Gi8pxw?t=2727) ## [Асинхронные функции, async/await, thenable, обработка ошибок](https://youtu.be/Jdf_tZuJbHI) + ## [Асинхронные адаптеры: promisify, callbackify, asyncify...](https://youtu.be/76k6_YkYRmU) + ## [Асинхронные коллекторы данных](https://youtu.be/tgodt1JL6II) + ## [Утечки памяти в Node.js и JavaScript, сборка мусора и профилирование](https://youtu.be/0oZa64SB2wM) + ## [Рекурсия: косвенная и хвостовая, стек, выход](https://youtu.be/W2skCjIgVKE) -- [00:00 Рекурсивная функция для вычисления глубины стека](https://youtu.be/W2skCjIgVKE?t=0) -- [03:25 Неявная рекурсия](https://youtu.be/W2skCjIgVKE?t=205) -- [04:52 Рекурсивная функция для вычисления степени числа](https://youtu.be/W2skCjIgVKE?t=292) -- [06:12 Рекурсивная функция для вычисления факториала ](https://youtu.be/W2skCjIgVKE?t=372) -- [06:29 Рекурсивная функция для вычисления числа Фибоначчи ](https://youtu.be/W2skCjIgVKE?t=389) -- [09:27 Рекурсивная функция, как аналог функции reduce ](https://youtu.be/W2skCjIgVKE?t=567) -- [12:04 Оптимизация хвостовой рекурсии ](https://youtu.be/W2skCjIgVKE?t=724) -- [15:41 Оптимизация обычной рекурсивной функции](https://youtu.be/W2skCjIgVKE?t=941) +- [00:00 Рекурсивная функция для вычисления глубины стека](https://youtu.be/W2skCjIgVKE?t=0) +- [03:25 Неявная рекурсия](https://youtu.be/W2skCjIgVKE?t=205) +- [04:52 Рекурсивная функция для вычисления степени числа](https://youtu.be/W2skCjIgVKE?t=292) +- [06:12 Рекурсивная функция для вычисления факториала](https://youtu.be/W2skCjIgVKE?t=372) +- [06:29 Рекурсивная функция для вычисления числа Фибоначчи](https://youtu.be/W2skCjIgVKE?t=389) +- [09:27 Рекурсивная функция, как аналог функции reduce](https://youtu.be/W2skCjIgVKE?t=567) +- [12:04 Оптимизация хвостовой рекурсии](https://youtu.be/W2skCjIgVKE?t=724) +- [15:41 Оптимизация обычной рекурсивной функции](https://youtu.be/W2skCjIgVKE?t=941) ## [Дженерики и обобщенное программирование](https://youtu.be/r6W2z3DQhoI) + ## [Генераторы и асинхронные генераторы в JavaScript](https://youtu.be/kvNm9D32s8s) -- [00:00 Способы объявления генераторов ](https://youtu.be/kvNm9D32s8s?t=0) -- [10:41 Пример генератора с yield ](https://youtu.be/kvNm9D32s8s?t=641) -- [15:54 Пример генератора с yield и return ](https://youtu.be/kvNm9D32s8s?t=954) -- [18:47 Получение значений из генератора циклом for...of ](https://youtu.be/kvNm9D32s8s?t=1127) -- [21:04 Получение значений из генератора spead - оператором ](https://youtu.be/kvNm9D32s8s?t=1264) -- [21:50 Метод next ](https://youtu.be/kvNm9D32s8s?t=1310) -- [23:30 Пример генератора с yield * возвращающего итерируемые объекты ](https://youtu.be/kvNm9D32s8s?t=1410) -- [25:05 Пример генератора с yield * возвращающего другие генераторы ](https://youtu.be/kvNm9D32s8s?t=1505) -- [26:18 Метод return ](https://youtu.be/kvNm9D32s8s?t=1578) +- [00:00 Способы объявления генераторов](https://youtu.be/kvNm9D32s8s?t=0) +- [10:41 Пример генератора с yield](https://youtu.be/kvNm9D32s8s?t=641) +- [15:54 Пример генератора с yield и return](https://youtu.be/kvNm9D32s8s?t=954) +- [18:47 Получение значений из генератора циклом for...of](https://youtu.be/kvNm9D32s8s?t=1127) +- [21:04 Получение значений из генератора spead - оператором](https://youtu.be/kvNm9D32s8s?t=1264) +- [21:50 Метод next](https://youtu.be/kvNm9D32s8s?t=1310) +- [23:30 Пример генератора с yield * возвращающего итерируемые объекты](https://youtu.be/kvNm9D32s8s?t=1410) +- [25:05 Пример генератора с yield * возвращающего другие генераторы](https://youtu.be/kvNm9D32s8s?t=1505) +- [26:18 Метод return](https://youtu.be/kvNm9D32s8s?t=1578) - [28:11 Метод throw](https://youtu.be/kvNm9D32s8s?t=1691) - [29:05 Обобщение](https://youtu.be/kvNm9D32s8s?t=1745) ## [Итераторы и асинхронные итераторы в JavaScript](https://youtu.be/rBGFlWpVpGs) + ## [Фасад - петтерн для скрытия сложности](https://youtu.be/oJtBO7CystE) + ## [Адаптер (Adapter) - паттерн достижения совместимости](https://youtu.be/cA65McLQrR8) - [0:00 введение](https://youtu.be/cA65McLQrR8?t=0) - [1:30 adapter на prototype](https://youtu.be/cA65McLQrR8?t=90) - [3:57 adapter на class](https://youtu.be/cA65McLQrR8?t=237) - [4:23 adapter на function](https://youtu.be/cA65McLQrR8?t=263) -- [6:15 adapter на классе-обертке (boxing)](https://youtu.be/cA65McLQrR8?t=375) +- [6:15 adapter на классе-обертке (boxing)](https://youtu.be/cA65McLQrR8?t=375) - [7:08 adapter на замыканиях (closure)](https://youtu.be/cA65McLQrR8?t=428) - [8:10 adapter на interface](https://youtu.be/cA65McLQrR8?t=490) - [13:45 adapter на events](https://youtu.be/cA65McLQrR8?t=825) @@ -720,73 +750,90 @@ ## [Линзы в JavaScript - функциональные аналоги геттера и сеттера](https://youtu.be/IBF5gFU6G-o) + ## [Перечислимый тип (enum) в JavaScript и TypeScript](https://youtu.be/BXiKebOIAGI) + ## [Графы и запросы к графовым структурам на JavaScript](https://youtu.be/a0W0T8Yqw3s) + ## [Паттерн Команда (Command) действие и параметры как объект](https://youtu.be/vER0vYL4hM4) + ## [Тестирование: юниттесты с примерами на JavaScript](https://youtu.be/CszugIag2TA) + ## [Инверсия управления и внедрение зависимостей в Node.js](https://youtu.be/Fz86Fdjz-LM) + ## [Слои, связанность и связность кода в JavaScript](https://youtu.be/A3RpwNlVeyY) + ## [Измерение производительности кода и оптимизация в JavaScript и Node.js](https://youtu.be/sanq2X7Re8o) -- [00:00:00 Введение ](https://youtu.be/sanq2X7Re8o?t=0) -- [00:05:27 Console.time и console.timeEnd ](https://youtu.be/sanq2X7Re8o?t=327) -- [00:09:05 New Date( ).getTime( ) ](https://youtu.be/sanq2X7Re8o?t=545) -- [00:11:15 Process.hrtime( )](https://youtu.be/sanq2X7Re8o?t=675) -- [00:18:51 Process.hrtime.bigint( ) и движок для benchmark](https://youtu.be/sanq2X7Re8o?t=1131) -- [00:27:00 Сравнение функций инстанцирования ](https://youtu.be/sanq2X7Re8o?t=1620) -- [00:31:06 Алгоритм для сравнения ](https://youtu.be/sanq2X7Re8o?t=1866) -- [00:39:36 Работа движка benchmark ](https://youtu.be/sanq2X7Re8o?t=2376) -- [00:41:37 Результаты теста](https://youtu.be/sanq2X7Re8o?t=2497) -- [00:47:33 Сравнение массива и объектов ](https://youtu.be/sanq2X7Re8o?t=2853) -- [00:54:21 Результаты теста ](https://youtu.be/sanq2X7Re8o?t=3261) -- [00:55:00 Сравнение 3 функций range ](https://youtu.be/sanq2X7Re8o?t=3300) -- [00:56:34 Результаты теста ](https://youtu.be/sanq2X7Re8o?t=3394) -- [00:58:50 Сравнение функций по способу вызова](https://youtu.be/sanq2X7Re8o?t=3530) -- [00:59:56 Результаты теста](https://youtu.be/sanq2X7Re8o?t=3596) -- [01:01:34 Сравнение indexOf и includes](https://youtu.be/sanq2X7Re8o?t=3694) -- [01:01:54 Результаты теста ](https://youtu.be/sanq2X7Re8o?t=3714) -- [01:03:23 Сравнение объявления переменной до и после цикла ](https://youtu.be/sanq2X7Re8o?t=3803) -- [01:05:02 Сравнение for keys, for (...in...) и for (...of...)](https://youtu.be/sanq2X7Re8o?t=3902) -- [01:05:34 Результаты теста ](https://youtu.be/sanq2X7Re8o?t=3934) -- [01:05:58 Сравнение шаблонных строк](https://youtu.be/sanq2X7Re8o?t=3958) -- [01:06:12 Сравнение хождения цикла по функции map в ES6](https://youtu.be/sanq2X7Re8o?t=3972) -- [01:07:18 Результаты теста ](https://youtu.be/sanq2X7Re8o?t=4038) -- [01:07:56 Сравнение repeat и arrayJoin ](https://youtu.be/sanq2X7Re8o?t=4076) -- [01:08:15 Результаты теста](https://youtu.be/sanq2X7Re8o?t=4095) -- [01:08:26 Сравнение дублирования массива ](https://youtu.be/sanq2X7Re8o?t=4106) -- [01:08:58 Результаты теста](https://youtu.be/sanq2X7Re8o?t=4138) -- [01:09:43 Сравнение копирование набора данных ](https://youtu.be/sanq2X7Re8o?t=4183) -- [01:10:26 Результаты теста ](https://youtu.be/sanq2X7Re8o?t=4226) -- [01:10:47 Сравнение итерирования с помощью forEarch и for (...of...)](https://youtu.be/sanq2X7Re8o?t=4247) -- [01:11:08 Результаты теста](https://youtu.be/sanq2X7Re8o?t=4268) -- [01:11:31 Обобщение](https://youtu.be/sanq2X7Re8o?t=4291) +- [00:00:00 Введение](https://youtu.be/sanq2X7Re8o?t=0) +- [00:05:27 Console.time и console.timeEnd](https://youtu.be/sanq2X7Re8o?t=327) +- [00:09:05 New Date( ).getTime( )](https://youtu.be/sanq2X7Re8o?t=545) +- [00:11:15 Process.hrtime( )](https://youtu.be/sanq2X7Re8o?t=675) +- [00:18:51 Process.hrtime.bigint( ) и движок для benchmark](https://youtu.be/sanq2X7Re8o?t=1131) +- [00:27:00 Сравнение функций инстанцирования](https://youtu.be/sanq2X7Re8o?t=1620) +- [00:31:06 Алгоритм для сравнения](https://youtu.be/sanq2X7Re8o?t=1866) +- [00:39:36 Работа движка benchmark](https://youtu.be/sanq2X7Re8o?t=2376) +- [00:41:37 Результаты теста](https://youtu.be/sanq2X7Re8o?t=2497) +- [00:47:33 Сравнение массива и объектов](https://youtu.be/sanq2X7Re8o?t=2853) +- [00:54:21 Результаты теста](https://youtu.be/sanq2X7Re8o?t=3261) +- [00:55:00 Сравнение 3 функций range](https://youtu.be/sanq2X7Re8o?t=3300) +- [00:56:34 Результаты теста](https://youtu.be/sanq2X7Re8o?t=3394) +- [00:58:50 Сравнение функций по способу вызова](https://youtu.be/sanq2X7Re8o?t=3530) +- [00:59:56 Результаты теста](https://youtu.be/sanq2X7Re8o?t=3596) +- [01:01:34 Сравнение indexOf и includes](https://youtu.be/sanq2X7Re8o?t=3694) +- [01:01:54 Результаты теста](https://youtu.be/sanq2X7Re8o?t=3714) +- [01:03:23 Сравнение объявления переменной до и после цикла](https://youtu.be/sanq2X7Re8o?t=3803) +- [01:05:02 Сравнение for keys, for (...in...) и for (...of...)](https://youtu.be/sanq2X7Re8o?t=3902) +- [01:05:34 Результаты теста](https://youtu.be/sanq2X7Re8o?t=3934) +- [01:05:58 Сравнение шаблонных строк](https://youtu.be/sanq2X7Re8o?t=3958) +- [01:06:12 Сравнение хождения цикла по функции map в ES6](https://youtu.be/sanq2X7Re8o?t=3972) +- [01:07:18 Результаты теста](https://youtu.be/sanq2X7Re8o?t=4038) +- [01:07:56 Сравнение repeat и arrayJoin](https://youtu.be/sanq2X7Re8o?t=4076) +- [01:08:15 Результаты теста](https://youtu.be/sanq2X7Re8o?t=4095) +- [01:08:26 Сравнение дублирования массива](https://youtu.be/sanq2X7Re8o?t=4106) +- [01:08:58 Результаты теста](https://youtu.be/sanq2X7Re8o?t=4138) +- [01:09:43 Сравнение копирование набора данных](https://youtu.be/sanq2X7Re8o?t=4183) +- [01:10:26 Результаты теста](https://youtu.be/sanq2X7Re8o?t=4226) +- [01:10:47 Сравнение итерирования с помощью forEarch и for (...of...)](https://youtu.be/sanq2X7Re8o?t=4247) +- [01:11:08 Результаты теста](https://youtu.be/sanq2X7Re8o?t=4268) +- [01:11:31 Обобщение](https://youtu.be/sanq2X7Re8o?t=4291) ## [Слой доступа к данным, курсор, транзакция](https://youtu.be/CRcSWtWVvrA) + ## [HTTP запросы в браузере и Node.js: XMLHttpRequest, fetch](https://youtu.be/wMMki2FEYGY) + ## [Метапрограммирование с примерами на JavaScript](https://youtu.be/Ed9onRv4G5Y) + ## [Тестирование: системное и интеграционное тестирование на JavaScript](https://youtu.be/OuKu_6H_6gE) + ## [Отмена асинхронных операций, cancellable callback and Promise в JavaScript](https://youtu.be/T8fXlnqI4Ws) + ## [Асинхронная композиция функций на JavaScript](https://youtu.be/3ZCrMlMpOrM) + ## [Thenable и легковесный await в JavaScript](https://youtu.be/DXp__1VNIvI) + ## [Конкурентная асинхронная очередь на JavaScript](https://youtu.be/Lg46AH8wFvg) + ## [Паттерн Revealing Constructor - открытый конструктор](https://youtu.be/leR5sXRkuJI) + ## [Модель акторов для параллельных вычислений](https://youtu.be/xp5MVKEqxY4) + ## [Have Objects Failed? Или что не так с ООП?](https://youtu.be/4yO5OS0vPSw) - [1:46 Присвоенные идеи ООП](https://youtu.be/4yO5OS0vPSw?t=106) @@ -799,6 +846,7 @@ ## [Интроспекция и рефлексия в JavaScript](https://youtu.be/yvW1PjUVeM0) + ## [История развития языков программирования](https://youtu.be/qqz0VSaNxuw) - [0:00:02 введение](https://youtu.be/qqz0VSaNxuw?t=2) @@ -819,7 +867,8 @@ - [0:23:37 Java](https://youtu.be/qqz0VSaNxuw?t=1417) - [0:25:45 Delphi](https://youtu.be/qqz0VSaNxuw?t=1545) - [0:28:43 SQL](https://youtu.be/qqz0VSaNxuw?t=1723) -- [0:30:43 PHP 0:41:17 стрелочку из плюсов взяли](https://youtu.be/qqz0VSaNxuw?t=1843) +- [0:30:43 PHP](https://youtu.be/qqz0VSaNxuw?t=1843) +- [0:41:17 стрелочку из плюсов взяли](https://youtu.be/qqz0VSaNxuw?t=2477) - [0:33:14 C#](https://youtu.be/qqz0VSaNxuw?t=1994) - [0:35:20 Go](https://youtu.be/qqz0VSaNxuw?t=2120) - [0:36:17 Rust](https://youtu.be/qqz0VSaNxuw?t=2177) @@ -870,45 +919,48 @@ ## [Примеси, обертки, декораторы, мемоизация](https://youtu.be/2h9syXN5wO0) -- [00:00:00 Синхронная функция-обертка ](https://youtu.be/2h9syXN5wO0?t=0) -- [00:02:55 Синхронная универсальная функция-обертка ](https://youtu.be/2h9syXN5wO0?t=175) -- [00:08:28 Асинхронная универсальная функция-обертка ](https://youtu.be/2h9syXN5wO0?t=508) -- [00:15:50 Синхронная функция-обертка, которая добавляет поведение (timeout)](https://youtu.be/2h9syXN5wO0?t=950) -- [00:22:45 Асинхронная функция-обертка, которая добавляет поведение (timeout)](https://youtu.be/2h9syXN5wO0?t=1365) -- [00:25:38 Функция-обертка, которая ограничивает вызов функции до одного вызова (once) ](https://youtu.be/2h9syXN5wO0?t=1538) -- [00:27:36 Функция-обертка, которая ограничивает вызов функции до n-го вызова (limit)](https://youtu.be/2h9syXN5wO0?t=1656) -- [00:29:50 Функция-обертка, которая отменяет вызов функции (cancel)](https://youtu.be/2h9syXN5wO0?t=1790) -- [00:32:29 Функция-обертка с методами timeout, limit, cancel](https://youtu.be/2h9syXN5wO0?t=1949) -- [00:39:03 Функция-обертка с методами timeout, limit, cancel (оптимизированная)](https://youtu.be/2h9syXN5wO0?t=2343) -- [00:42:28 Функция-обертка, которая ограничивает один вызов за 200 мс (throttle)](https://youtu.be/2h9syXN5wO0?t=2548) -- [00:45:47 Примесь поля через точку ](https://youtu.be/2h9syXN5wO0?t=2747) -- [00:51:35 Примесь поля через функцию extend](https://youtu.be/2h9syXN5wO0?t=3095) -- [00:57:35 Примесь поля через object.assign( )](https://youtu.be/2h9syXN5wO0?t=3455) -- [00:59:18 Примесь поведения ](https://youtu.be/2h9syXN5wO0?t=3558) -- [01:02:23 Примесь изменения класса](https://youtu.be/2h9syXN5wO0?t=3743) -- [01:06:50 Определение](https://youtu.be/2h9syXN5wO0?t=4010) -- [01:07:30 Реализация простой мемоизации ](https://youtu.be/2h9syXN5wO0?t=4050) -- [01:14:43 Реализация простой мемоизации с проверкой скорости ](https://youtu.be/2h9syXN5wO0?t=4483) -- [01:20:43 Удаление накопленного кэша ](https://youtu.be/2h9syXN5wO0?t=4843) -- [01:25:35 Асинхронная мемоизация ](https://youtu.be/2h9syXN5wO0?t=5135) -- [01:31:10 Преобразование аргументов и ключей в hash-функцию](https://youtu.be/2h9syXN5wO0?t=5470) -- [01:33:32 Реализация сложной мемоизации](https://youtu.be/2h9syXN5wO0?t=5612) +- [00:00:00 Синхронная функция-обертка](https://youtu.be/2h9syXN5wO0?t=0) +- [00:02:55 Синхронная универсальная функция-обертка](https://youtu.be/2h9syXN5wO0?t=175) +- [00:08:28 Асинхронная универсальная функция-обертка](https://youtu.be/2h9syXN5wO0?t=508) +- [00:15:50 Синхронная функция-обертка, которая добавляет поведение (timeout)](https://youtu.be/2h9syXN5wO0?t=950) +- [00:22:45 Асинхронная функция-обертка, которая добавляет поведение (timeout)](https://youtu.be/2h9syXN5wO0?t=1365) +- [00:25:38 Функция-обертка, которая ограничивает вызов функции до одного вызова (once)](https://youtu.be/2h9syXN5wO0?t=1538) +- [00:27:36 Функция-обертка, которая ограничивает вызов функции до n-го вызова (limit)](https://youtu.be/2h9syXN5wO0?t=1656) +- [00:29:50 Функция-обертка, которая отменяет вызов функции (cancel)](https://youtu.be/2h9syXN5wO0?t=1790) +- [00:32:29 Функция-обертка с методами timeout, limit, cancel](https://youtu.be/2h9syXN5wO0?t=1949) +- [00:39:03 Функция-обертка с методами timeout, limit, cancel (оптимизированная)](https://youtu.be/2h9syXN5wO0?t=2343) +- [00:42:28 Функция-обертка, которая ограничивает один вызов за 200 мс (throttle)](https://youtu.be/2h9syXN5wO0?t=2548) +- [00:45:47 Примесь поля через точку](https://youtu.be/2h9syXN5wO0?t=2747) +- [00:51:35 Примесь поля через функцию extend](https://youtu.be/2h9syXN5wO0?t=3095) +- [00:57:35 Примесь поля через object.assign( )](https://youtu.be/2h9syXN5wO0?t=3455) +- [00:59:18 Примесь поведения](https://youtu.be/2h9syXN5wO0?t=3558) +- [01:02:23 Примесь изменения класса](https://youtu.be/2h9syXN5wO0?t=3743) +- [01:06:50 Определение](https://youtu.be/2h9syXN5wO0?t=4010) +- [01:07:30 Реализация простой мемоизации](https://youtu.be/2h9syXN5wO0?t=4050) +- [01:14:43 Реализация простой мемоизации с проверкой скорости](https://youtu.be/2h9syXN5wO0?t=4483) +- [01:20:43 Удаление накопленного кэша](https://youtu.be/2h9syXN5wO0?t=4843) +- [01:25:35 Асинхронная мемоизация](https://youtu.be/2h9syXN5wO0?t=5135) +- [01:31:10 Преобразование аргументов и ключей в hash-функцию](https://youtu.be/2h9syXN5wO0?t=5470) +- [01:33:32 Реализация сложной мемоизации](https://youtu.be/2h9syXN5wO0?t=5612) ## [Ответы на вопросы по курсу "Основы программирования" 2019-2020](https://youtu.be/TY6nDW7aYys) + ## [Антипаттерны процедурного программирования](https://youtu.be/cTv7V22mkwE) + ## [Семинар: выполнение лабораторных работ на JavaSript по курсу "Основы программирования"](https://youtu.be/ikUOyFPzdJw) + ## [Массивы в JavaScript (методы Array)](https://youtu.be/D1kfYBkX9FE) - [00:00 Конструкция массива](https://youtu.be/D1kfYBkX9FE?t=0) - [09:58 Метод concat](https://youtu.be/D1kfYBkX9FE?t=598) -- [11:00 Методы every и some ](https://youtu.be/D1kfYBkX9FE?t=660) -- [13:00 Метод filter ](https://youtu.be/D1kfYBkX9FE?t=780) -- [13:29 Методы find и findIndex](https://youtu.be/D1kfYBkX9FE?t=809) -- [14:30 Метод flat ](https://youtu.be/D1kfYBkX9FE?t=870) -- [17:08 Метод includes ](https://youtu.be/D1kfYBkX9FE?t=1028) +- [11:00 Методы every и some](https://youtu.be/D1kfYBkX9FE?t=660) +- [13:00 Метод filter](https://youtu.be/D1kfYBkX9FE?t=780) +- [13:29 Методы find и findIndex](https://youtu.be/D1kfYBkX9FE?t=809) +- [14:30 Метод flat](https://youtu.be/D1kfYBkX9FE?t=870) +- [17:08 Метод includes](https://youtu.be/D1kfYBkX9FE?t=1028) - [17:32 Метод indexOf и lastIndexOf](https://youtu.be/D1kfYBkX9FE?t=1052) - [18:35 Метод join](https://youtu.be/D1kfYBkX9FE?t=1115) - [18:58 Метод reverse](https://youtu.be/D1kfYBkX9FE?t=1138) @@ -918,59 +970,74 @@ ## [Code Review: как это и зачем](https://youtu.be/EKL6NiIQ6ZU) + ## [Семинар: Code Review, ответы на вопросы](https://youtu.be/AgH4OAKbmkM) + ## [Мономорфный и полиморфный код, инлайн-кэш, скрытые классы в JavaScript](https://youtu.be/9JUY3prnCQ4) + ## [Ассоциация, агрегация и композиция объектов в JavaScript](https://youtu.be/tOIcBrzezK0) + ## [Рефакторинг: причины, цели, техники и процесс](https://youtu.be/z73wmpdweQ4) + ## [Принцип подстановки Барбары Лисков](https://youtu.be/RbhYxygxroc) + ## [Композиция функций (pipe, compose) в JavaScript](https://youtu.be/xS9FicVrOTI) + ## [Примеси в JavaScript: mixin, extend, Object.assign, class λ-mixin](https://youtu.be/NZMrJ2adEyY) + ## [Прототипное программирование и прототипное наследование в JavaScript](https://youtu.be/SzaXTW2qcJE) + ## [Мемоизация функций: memoize в JavaScript](https://youtu.be/H6S8QJo2Qxg) + ## [Функции-обертки: Wrappers в JavaScript](https://youtu.be/En7pWi2fSzs) + ## [Новое в JavaScript: ES.Next, ECMAScript 2020, ES11, ES10, ES9, ES8, ES7, ES6, ES2020, ES2019](https://youtu.be/fUjHLj8bq_Y) -- [00:00 ECMA Script versions](https://youtu.be/fUjHLj8bq_Y?t=0) -- [09:40 Array.proptotype.includes ](https://youtu.be/fUjHLj8bq_Y?t=580) -- [10:55 Array.proptotype.flat ](https://youtu.be/fUjHLj8bq_Y?t=655) -- [11:36 Array.proptotype.flatMap](https://youtu.be/fUjHLj8bq_Y?t=696) -- [12:20 Array.proptotype.sort](https://youtu.be/fUjHLj8bq_Y?t=740) -- [14:24 Object.values ](https://youtu.be/fUjHLj8bq_Y?t=864) -- [15:06 Object.keys ](https://youtu.be/fUjHLj8bq_Y?t=906) -- [15:15 Object.entries ](https://youtu.be/fUjHLj8bq_Y?t=915) -- [15:49 Object.fromEntries ](https://youtu.be/fUjHLj8bq_Y?t=949) -- [16:36 String.proptotype.padStart / String.proptotype.padEnd ](https://youtu.be/fUjHLj8bq_Y?t=996) -- [17:02 String.proptotype.trimStart / String.proptotype.trimEnd](https://youtu.be/fUjHLj8bq_Y?t=1022) -- [17:18 Operator rest ](https://youtu.be/fUjHLj8bq_Y?t=1038) -- [19:38 Operator spread](https://youtu.be/fUjHLj8bq_Y?t=1178) -- [21:34 Operator exponentiation x ** y](https://youtu.be/fUjHLj8bq_Y?t=1294) -- [22:35 Operator optional chaining ?.](https://youtu.be/fUjHLj8bq_Y?t=1355) -- [24:22 Asynchronous function: async / await ](https://youtu.be/fUjHLj8bq_Y?t=1462) -- [26:34 Trailing Commas ](https://youtu.be/fUjHLj8bq_Y?t=1594) -- [28:00 Asynchronous iterable contract: for-await](https://youtu.be/fUjHLj8bq_Y?t=1680) -- [29:51 Try...catch ](https://youtu.be/fUjHLj8bq_Y?t=1791) -- [30:21 Function.prototype.toString ](https://youtu.be/fUjHLj8bq_Y?t=1821) -- [30:58 Symbol.prototype.description ](https://youtu.be/fUjHLj8bq_Y?t=1858) -- [32:11 Promise.finaly ](https://youtu.be/fUjHLj8bq_Y?t=1931) -- [33:22 Promise.allSettled ](https://youtu.be/fUjHLj8bq_Y?t=2002) -- [36:18 More features](https://youtu.be/fUjHLj8bq_Y?t=2178) +- [00:00 ECMA Script versions](https://youtu.be/fUjHLj8bq_Y?t=0) +- [09:40 Array.proptotype.includes](https://youtu.be/fUjHLj8bq_Y?t=580) +- [10:55 Array.proptotype.flat](https://youtu.be/fUjHLj8bq_Y?t=655) +- [11:36 Array.proptotype.flatMap](https://youtu.be/fUjHLj8bq_Y?t=696) +- [12:20 Array.proptotype.sort](https://youtu.be/fUjHLj8bq_Y?t=740) +- [14:24 Object.values](https://youtu.be/fUjHLj8bq_Y?t=864) +- [15:06 Object.keys](https://youtu.be/fUjHLj8bq_Y?t=906) +- [15:15 Object.entries](https://youtu.be/fUjHLj8bq_Y?t=915) +- [15:49 Object.fromEntries](https://youtu.be/fUjHLj8bq_Y?t=949) +- [16:36 String.proptotype.padStart / String.proptotype.padEnd](https://youtu.be/fUjHLj8bq_Y?t=996) +- [17:02 String.proptotype.trimStart / String.proptotype.trimEnd](https://youtu.be/fUjHLj8bq_Y?t=1022) +- [17:18 Operator rest](https://youtu.be/fUjHLj8bq_Y?t=1038) +- [19:38 Operator spread](https://youtu.be/fUjHLj8bq_Y?t=1178) +- [21:34 Operator exponentiation x ** y](https://youtu.be/fUjHLj8bq_Y?t=1294) +- [22:35 Operator optional chaining ?.](https://youtu.be/fUjHLj8bq_Y?t=1355) +- [24:22 Asynchronous function: async / await](https://youtu.be/fUjHLj8bq_Y?t=1462) +- [26:34 Trailing Commas](https://youtu.be/fUjHLj8bq_Y?t=1594) +- [28:00 Asynchronous iterable contract: for-await](https://youtu.be/fUjHLj8bq_Y?t=1680) +- [29:51 Try...catch](https://youtu.be/fUjHLj8bq_Y?t=1791) +- [30:21 Function.prototype.toString](https://youtu.be/fUjHLj8bq_Y?t=1821) +- [30:58 Symbol.prototype.description](https://youtu.be/fUjHLj8bq_Y?t=1858) +- [32:11 Promise.finaly](https://youtu.be/fUjHLj8bq_Y?t=1931) +- [33:22 Promise.allSettled](https://youtu.be/fUjHLj8bq_Y?t=2002) +- [36:18 More features](https://youtu.be/fUjHLj8bq_Y?t=2178) ## [Вступительная лекция по инженерии программного обеспечения (КПИ 1 курс) 2021-09-01](https://youtu.be/vWi6KyG078g) + ## [Автоматное программирование c примерами на JavaScript](https://youtu.be/mxz7_zcip0c) + ## [Контрактное программирование с примерами на JavaScript и Node.js](https://youtu.be/K5_kSUvbGEQ) + ## [JavaScript - Практические задачи #1: Пример исправления, лайвкодинг, оптимизация и рефакторинг](https://youtu.be/CRmjViLEE9E) + ## [JavaScript и Node.js: Добавь в Github личную карту знаний](https://youtu.be/gDUGZsw2N2g) From 11937cdc4a8dbd04368d03a9f02624f29d9434e1 Mon Sep 17 00:00:00 2001 From: Anton Telichenko Date: Sat, 6 Aug 2022 10:08:49 +0300 Subject: [PATCH 137/308] Update Functional-timecodes.md (#82) Added small fixes, gaps deleted, unnecessary strings deleted --- Courses/Functional-timecodes.md | 266 ++++++++++++++++---------------- 1 file changed, 135 insertions(+), 131 deletions(-) diff --git a/Courses/Functional-timecodes.md b/Courses/Functional-timecodes.md index 8ca0e61..43bbca6 100644 --- a/Courses/Functional-timecodes.md +++ b/Courses/Functional-timecodes.md @@ -4,162 +4,166 @@ ## [Функции, лямбды (стрелочные функции), контексты, замыкания в JavaScript](https://youtu.be/pn5myCmpV2U) -- [00:00:00 Введение ](https://youtu.be/pn5myCmpV2U?t=0) -- [00:11:22 Функция объявление (Declaration)](https://youtu.be/pn5myCmpV2U?t=682) -- [00:12:46 Функция выражение (Expression)](https://youtu.be/pn5myCmpV2U?t=766) -- [00:16:07 Лямбда-выражение (Lambda expression) или функция-стрелка (Arrow function) ](https://youtu.be/pn5myCmpV2U?t=967) -- [00:16:43 Лямбда-функция (Lambda function) ](https://youtu.be/pn5myCmpV2U?t=1003) -- [00:18:45 Область видимости (Scope)](https://youtu.be/pn5myCmpV2U?t=1125) -- [00:25:00 Функции, как абстракции](https://youtu.be/pn5myCmpV2U?t=1500) -- [00:26:43 Методы функции (name, length, toString( ) )](https://youtu.be/pn5myCmpV2U?t=1603) -- [00:31:26 Значения по умолчанию у функции ](https://youtu.be/pn5myCmpV2U?t=1886) -- [00:36:46 Rest-оператор (...args)](https://youtu.be/pn5myCmpV2U?t=2206) -- [00:41:49 Способ определения функции, через new Function](https://youtu.be/pn5myCmpV2U?t=2509) -- [00:44:46 Функции внутри объекта](https://youtu.be/pn5myCmpV2U?t=2686) -- [00:50:42 Обращение к полям объекта из привязанной функции, через this](https://youtu.be/pn5myCmpV2U?t=3042) -- [00:55:24 История синтаксиса создания контекстов, через самовызывающиеся функции ( IIFE)](https://youtu.be/pn5myCmpV2U?t=3324) -- [00:58:30 Методы функции, наследуемой от объекта (call, apply)](https://youtu.be/pn5myCmpV2U?t=3510) -- [01:00:53 Комментирование функций](https://youtu.be/pn5myCmpV2U?t=3653) -- [01:01:27 Задание декомпозиции функции](https://youtu.be/pn5myCmpV2U?t=3687) -- [01:04:24 Замыкание: context ](https://youtu.be/pn5myCmpV2U?t=3864) -- [01:08:41 Замыкание: chainning ](https://youtu.be/pn5myCmpV2U?t=4121) -- [01:11:55 Замыкание: summator ](https://youtu.be/pn5myCmpV2U?t=4315) -- [01:14:16 Замыкание: recursion](https://youtu.be/pn5myCmpV2U?t=4456) +- [00:00:00 Введение](https://youtu.be/pn5myCmpV2U?t=0) +- [00:11:22 Функция объявление (Declaration)](https://youtu.be/pn5myCmpV2U?t=682) +- [00:12:46 Функция выражение (Expression)](https://youtu.be/pn5myCmpV2U?t=766) +- [00:16:07 Лямбда-выражение (Lambda expression) или функция-стрелка (Arrow function)](https://youtu.be/pn5myCmpV2U?t=967) +- [00:16:43 Лямбда-функция (Lambda function)](https://youtu.be/pn5myCmpV2U?t=1003) +- [00:18:45 Область видимости (Scope)](https://youtu.be/pn5myCmpV2U?t=1125) +- [00:25:00 Функции, как абстракции](https://youtu.be/pn5myCmpV2U?t=1500) +- [00:26:43 Методы функции (name, length, toString( ) )](https://youtu.be/pn5myCmpV2U?t=1603) +- [00:31:26 Значения по умолчанию у функции](https://youtu.be/pn5myCmpV2U?t=1886) +- [00:36:46 Rest-оператор (...args)](https://youtu.be/pn5myCmpV2U?t=2206) +- [00:41:49 Способ определения функции, через new Function](https://youtu.be/pn5myCmpV2U?t=2509) +- [00:44:46 Функции внутри объекта](https://youtu.be/pn5myCmpV2U?t=2686) +- [00:50:42 Обращение к полям объекта из привязанной функции, через this](https://youtu.be/pn5myCmpV2U?t=3042) +- [00:55:24 История синтаксиса создания контекстов, через самовызывающиеся функции ( IIFE)](https://youtu.be/pn5myCmpV2U?t=3324) +- [00:58:30 Методы функции, наследуемой от объекта (call, apply)](https://youtu.be/pn5myCmpV2U?t=3510) +- [01:00:53 Комментирование функций](https://youtu.be/pn5myCmpV2U?t=3653) +- [01:01:27 Задание декомпозиции функции](https://youtu.be/pn5myCmpV2U?t=3687) +- [01:04:24 Замыкание: context](https://youtu.be/pn5myCmpV2U?t=3864) +- [01:08:41 Замыкание: chainning](https://youtu.be/pn5myCmpV2U?t=4121) +- [01:11:55 Замыкание: summator](https://youtu.be/pn5myCmpV2U?t=4315) +- [01:14:16 Замыкание: recursion](https://youtu.be/pn5myCmpV2U?t=4456) ## [Частичное применение и каррирование в JavaScript ( Partial application )](https://youtu.be/ND8KQ5xjk7o) -- [00:00:00 Замыкание ](https://youtu.be/ND8KQ5xjk7o?t=0) -- [00:04:54 Лямбда- функция ](https://youtu.be/ND8KQ5xjk7o?t=294) -- [00:06:06 Метод bind ](https://youtu.be/ND8KQ5xjk7o?t=366) -- [00:08:30 Абстрагированный пример функции ](https://youtu.be/ND8KQ5xjk7o?t=510) -- [00:13:42 Абстрагированный пример функции (расширение) ](https://youtu.be/ND8KQ5xjk7o?t=822) -- [00:15:47 Неправильная реализация каррирования ](https://youtu.be/ND8KQ5xjk7o?t=947) -- [00:22:22 Правильная реализация каррирования ](https://youtu.be/ND8KQ5xjk7o?t=1342) -- [00:28:54 Правильная реализация каррирования (расширение)](https://youtu.be/ND8KQ5xjk7o?t=1734) -- [00:31:41 Функциональные абстракции (superposition)](https://youtu.be/ND8KQ5xjk7o?t=1901) -- [00:38:02 Функциональные абстракции, с сохранением выражений (composition)](https://youtu.be/ND8KQ5xjk7o?t=2282) -- [00:45:05 Композиция с 2 функциями](https://youtu.be/ND8KQ5xjk7o?t=2705) -- [00:46:05 Композиция с n - функциями, при помощи метода reduce](https://youtu.be/ND8KQ5xjk7o?t=2765) -- [00:51:25 Композиция с n - функциями, при помощи цикла ](https://youtu.be/ND8KQ5xjk7o?t=3085) -- [00:54:29 Композиция с n - функциями, при помощи рекурсии](https://youtu.be/ND8KQ5xjk7o?t=3269) -- [00:57:40 Композиция асинхронных функций ](https://youtu.be/ND8KQ5xjk7o?t=3460) -- [01:01:27 Обобщение](https://youtu.be/ND8KQ5xjk7o?t=3687) +- [00:00:00 Замыкание](https://youtu.be/ND8KQ5xjk7o?t=0) +- [00:04:54 Лямбда- функция](https://youtu.be/ND8KQ5xjk7o?t=294) +- [00:06:06 Метод bind](https://youtu.be/ND8KQ5xjk7o?t=366) +- [00:08:30 Абстрагированный пример функции](https://youtu.be/ND8KQ5xjk7o?t=510) +- [00:13:42 Абстрагированный пример функции (расширение)](https://youtu.be/ND8KQ5xjk7o?t=822) +- [00:15:47 Неправильная реализация каррирования](https://youtu.be/ND8KQ5xjk7o?t=947) +- [00:22:22 Правильная реализация каррирования](https://youtu.be/ND8KQ5xjk7o?t=1342) +- [00:28:54 Правильная реализация каррирования (расширение)](https://youtu.be/ND8KQ5xjk7o?t=1734) +- [00:31:41 Функциональные абстракции (superposition)](https://youtu.be/ND8KQ5xjk7o?t=1901) +- [00:38:02 Функциональные абстракции, с сохранением выражений (composition)](https://youtu.be/ND8KQ5xjk7o?t=2282) +- [00:45:05 Композиция с 2 функциями](https://youtu.be/ND8KQ5xjk7o?t=2705) +- [00:46:05 Композиция с n - функциями, при помощи метода reduce](https://youtu.be/ND8KQ5xjk7o?t=2765) +- [00:51:25 Композиция с n - функциями, при помощи цикла](https://youtu.be/ND8KQ5xjk7o?t=3085) +- [00:54:29 Композиция с n - функциями, при помощи рекурсии](https://youtu.be/ND8KQ5xjk7o?t=3269) +- [00:57:40 Композиция асинхронных функций](https://youtu.be/ND8KQ5xjk7o?t=3460) +- [01:01:27 Обобщение](https://youtu.be/ND8KQ5xjk7o?t=3687) ## [Функции высшего порядка, колбеки, события на JavaScript (HigherOrderFunctions, callbacks, events)](https://youtu.be/1vqATwbGHnc) -- [00:00:00 Определение ](https://youtu.be/1vqATwbGHnc?t=0) -- [00:02:03 Математическая функция ](https://youtu.be/1vqATwbGHnc?t=123) -- [00:05:57 Функция обратного вызова (callback) ](https://youtu.be/1vqATwbGHnc?t=357) -- [00:09:33 Замыкание ](https://youtu.be/1vqATwbGHnc?t=573) -- [00:10:51 Цепочка вызовов ](https://youtu.be/1vqATwbGHnc?t=651) -- [00:12:40 Сохранение кэша с помощью замыкания](https://youtu.be/1vqATwbGHnc?t=760) -- [00:18:29 Добавление функции поведение логирования](https://youtu.be/1vqATwbGHnc?t=1109) -- [00:21:45 Обобщение ](https://youtu.be/1vqATwbGHnc?t=1305) -- [00:22:45 Сallback](https://youtu.be/1vqATwbGHnc?t=1365) -- [00:25:32 Сallback асинхронной функции считывание файла](https://youtu.be/1vqATwbGHnc?t=1532) -- [00:28:36 Сallback именованный](https://youtu.be/1vqATwbGHnc?t=1716) -- [00:33:01 Сallback-timer ](https://youtu.be/1vqATwbGHnc?t=1981) -- [00:36:20 Сallback-timer-curry](https://youtu.be/1vqATwbGHnc?t=2180) -- [00:38:59 Listener](https://youtu.be/1vqATwbGHnc?t=2339) -- [00:41:10 Listener-timer](https://youtu.be/1vqATwbGHnc?t=2470) -- [00:46:59 Event](https://youtu.be/1vqATwbGHnc?t=2819) -- [00:53:45 Event-imitter ](https://youtu.be/1vqATwbGHnc?t=3225) -- [00:57:48 Deferred object (отложенный объект)](https://youtu.be/1vqATwbGHnc?t=3468) -- [01:01:31 Errors](https://youtu.be/1vqATwbGHnc?t=3691) +- [00:00:00 Определение](https://youtu.be/1vqATwbGHnc?t=0) +- [00:02:03 Математическая функция](https://youtu.be/1vqATwbGHnc?t=123) +- [00:05:57 Функция обратного вызова (callback)](https://youtu.be/1vqATwbGHnc?t=357) +- [00:09:33 Замыкание](https://youtu.be/1vqATwbGHnc?t=573) +- [00:10:51 Цепочка вызовов](https://youtu.be/1vqATwbGHnc?t=651) +- [00:12:40 Сохранение кэша с помощью замыкания](https://youtu.be/1vqATwbGHnc?t=760) +- [00:18:29 Добавление функции поведение логирования](https://youtu.be/1vqATwbGHnc?t=1109) +- [00:21:45 Обобщение](https://youtu.be/1vqATwbGHnc?t=1305) +- [00:22:45 Сallback](https://youtu.be/1vqATwbGHnc?t=1365) +- [00:25:32 Сallback асинхронной функции считывание файла](https://youtu.be/1vqATwbGHnc?t=1532) +- [00:28:36 Сallback именованный](https://youtu.be/1vqATwbGHnc?t=1716) +- [00:33:01 Сallback-timer](https://youtu.be/1vqATwbGHnc?t=1981) +- [00:36:20 Сallback-timer-curry](https://youtu.be/1vqATwbGHnc?t=2180) +- [00:38:59 Listener](https://youtu.be/1vqATwbGHnc?t=2339) +- [00:41:10 Listener-timer](https://youtu.be/1vqATwbGHnc?t=2470) +- [00:46:59 Event](https://youtu.be/1vqATwbGHnc?t=2819) +- [00:53:45 Event-imitter](https://youtu.be/1vqATwbGHnc?t=3225) +- [00:57:48 Deferred object (отложенный объект)](https://youtu.be/1vqATwbGHnc?t=3468) +- [01:01:31 Errors](https://youtu.be/1vqATwbGHnc?t=3691) ## [Примеси, обертки, декораторы, мемоизация в JavaScript (Wrappers)](https://youtu.be/oRQ0kQr1N-U) -- [00:00:00 Синхронная функция-обертка ](https://youtu.be/oRQ0kQr1N-U?t=0) -- [00:02:55 Синхронная универсальная функция-обертка ](https://youtu.be/oRQ0kQr1N-U?t=175) -- [00:08:28 Асинхронная универсальная функция-обертка ](https://youtu.be/oRQ0kQr1N-U?t=508) -- [00:15:50 Синхронная функция-обертка, которая добавляет поведение (timeout)](https://youtu.be/oRQ0kQr1N-U?t=950) -- [00:22:45 Асинхронная функция-обертка, которая добавляет поведение (timeout)](https://youtu.be/oRQ0kQr1N-U?t=1365) -- [00:25:38 Функция-обертка, которая ограничивает вызов функции до одного вызова (once) ](https://youtu.be/oRQ0kQr1N-U?t=1538) -- [00:27:36 Функция-обертка, которая ограничивает вызов функции до n-го вызова (limit)](https://youtu.be/oRQ0kQr1N-U?t=1656) -- [00:29:50 Функция-обертка, которая отменяет вызов функции (cancel)](https://youtu.be/oRQ0kQr1N-U?t=1790) -- [00:32:29 Функция-обертка с методами timeout, limit, cancel](https://youtu.be/oRQ0kQr1N-U?t=1949) -- [00:39:03 Функция-обертка с методами timeout, limit, cancel (оптимизированная)](https://youtu.be/oRQ0kQr1N-U?t=2343) -- [00:42:28 Функция-обертка, которая ограничивает один вызов за 200 мс (throttle)](https://youtu.be/oRQ0kQr1N-U?t=2548) -- [00:45:47 Примесь поля через точку ](https://youtu.be/oRQ0kQr1N-U?t=2747) -- [00:51:35 Примесь поля через функцию extend](https://youtu.be/oRQ0kQr1N-U?t=3095) -- [00:57:35 Примесь поля через object.assign( )](https://youtu.be/oRQ0kQr1N-U?t=3455) -- [00:59:18 Примесь поведения ](https://youtu.be/oRQ0kQr1N-U?t=3558) -- [01:02:23 Примесь изменения класса](https://youtu.be/oRQ0kQr1N-U?t=3743) -- [01:06:50 Определение](https://youtu.be/oRQ0kQr1N-U?t=4010) -- [01:07:30 Реализация простой мемоизации ](https://youtu.be/oRQ0kQr1N-U?t=4050) -- [01:14:43 Реализация простой мемоизации с проверкой скорости ](https://youtu.be/oRQ0kQr1N-U?t=4483) -- [01:20:43 Удаление накопленного кэша ](https://youtu.be/oRQ0kQr1N-U?t=4843) -- [01:25:35 Асинхронная мемоизация ](https://youtu.be/oRQ0kQr1N-U?t=5135) -- [01:31:10 Преобразование аргументов и ключей в hash-функцию](https://youtu.be/oRQ0kQr1N-U?t=5470) -- [01:33:32 Реализация сложной мемоизации](https://youtu.be/oRQ0kQr1N-U?t=5612) +- [00:00:00 Синхронная функция-обертка](https://youtu.be/oRQ0kQr1N-U?t=0) +- [00:02:55 Синхронная универсальная функция-обертка](https://youtu.be/oRQ0kQr1N-U?t=175) +- [00:08:28 Асинхронная универсальная функция-обертка](https://youtu.be/oRQ0kQr1N-U?t=508) +- [00:15:50 Синхронная функция-обертка, которая добавляет поведение (timeout)](https://youtu.be/oRQ0kQr1N-U?t=950) +- [00:22:45 Асинхронная функция-обертка, которая добавляет поведение (timeout)](https://youtu.be/oRQ0kQr1N-U?t=1365) +- [00:25:38 Функция-обертка, которая ограничивает вызов функции до одного вызова (once)](https://youtu.be/oRQ0kQr1N-U?t=1538) +- [00:27:36 Функция-обертка, которая ограничивает вызов функции до n-го вызова (limit)](https://youtu.be/oRQ0kQr1N-U?t=1656) +- [00:29:50 Функция-обертка, которая отменяет вызов функции (cancel)](https://youtu.be/oRQ0kQr1N-U?t=1790) +- [00:32:29 Функция-обертка с методами timeout, limit, cancel](https://youtu.be/oRQ0kQr1N-U?t=1949) +- [00:39:03 Функция-обертка с методами timeout, limit, cancel (оптимизированная)](https://youtu.be/oRQ0kQr1N-U?t=2343) +- [00:42:28 Функция-обертка, которая ограничивает один вызов за 200 мс (throttle)](https://youtu.be/oRQ0kQr1N-U?t=2548) +- [00:45:47 Примесь поля через точку](https://youtu.be/oRQ0kQr1N-U?t=2747) +- [00:51:35 Примесь поля через функцию extend](https://youtu.be/oRQ0kQr1N-U?t=3095) +- [00:57:35 Примесь поля через object.assign( )](https://youtu.be/oRQ0kQr1N-U?t=3455) +- [00:59:18 Примесь поведения](https://youtu.be/oRQ0kQr1N-U?t=3558) +- [01:02:23 Примесь изменения класса](https://youtu.be/oRQ0kQr1N-U?t=3743) +- [01:06:50 Определение](https://youtu.be/oRQ0kQr1N-U?t=4010) +- [01:07:30 Реализация простой мемоизации](https://youtu.be/oRQ0kQr1N-U?t=4050) +- [01:14:43 Реализация простой мемоизации с проверкой скорости](https://youtu.be/oRQ0kQr1N-U?t=4483) +- [01:20:43 Удаление накопленного кэша](https://youtu.be/oRQ0kQr1N-U?t=4843) +- [01:25:35 Асинхронная мемоизация](https://youtu.be/oRQ0kQr1N-U?t=5135) +- [01:31:10 Преобразование аргументов и ключей в hash-функцию](https://youtu.be/oRQ0kQr1N-U?t=5470) +- [01:33:32 Реализация сложной мемоизации](https://youtu.be/oRQ0kQr1N-U?t=5612) ## [Чеининг функций и объектов, обработка ошибок в JavaScript](https://youtu.be/PfuEfIiLX34) -- [00:00:00 Введение ](https://youtu.be/PfuEfIiLX34?t=0) -- [00:01:10 Чеининг через синтаксис вызова функций ](https://youtu.be/PfuEfIiLX34?t=70) -- [00:02:12 Prototype ](https://youtu.be/PfuEfIiLX34?t=132) -- [00:05:45 Сlass](https://youtu.be/PfuEfIiLX34?t=345) -- [00:06:11 Functor](https://youtu.be/PfuEfIiLX34?t=371) -- [00:11:54 Mutable](https://youtu.be/PfuEfIiLX34?t=714) -- [00:16:34 Iterator](https://youtu.be/PfuEfIiLX34?t=994) -- [00:26:18 Promise ](https://youtu.be/PfuEfIiLX34?t=1578) -- [00:26:35 Test](https://youtu.be/PfuEfIiLX34?t=1595) -- [00:37:08 Compare ](https://youtu.be/PfuEfIiLX34?t=2228) -- [00:39:45 Benchmark](https://youtu.be/PfuEfIiLX34?t=2385) -- [00:40:48 Запуск и анализ тестов ](https://youtu.be/PfuEfIiLX34?t=2448) -- [01:03:48 Первый способ возвращение ошибок в синхронном коде ](https://youtu.be/PfuEfIiLX34?t=3828) -- [01:09:24 Второй способ возвращение ошибок в синхронном коде ](https://youtu.be/PfuEfIiLX34?t=4164) -- [01:12:26 Возвращение ошибок в асинхронном коде ](https://youtu.be/PfuEfIiLX34?t=4346) -- [01:16:14 Корректное возвращение ошибок ](https://youtu.be/PfuEfIiLX34?t=4574) -- [01:20:03 Обработка ошибок c promise ](https://youtu.be/PfuEfIiLX34?t=4803) -- [01:23:58 Обработка ошибок c async-await](https://youtu.be/PfuEfIiLX34?t=5038) +- [00:00:00 Введение](https://youtu.be/PfuEfIiLX34?t=0) +- [00:01:10 Чеининг через синтаксис вызова функций](https://youtu.be/PfuEfIiLX34?t=70) +- [00:02:12 Prototype](https://youtu.be/PfuEfIiLX34?t=132) +- [00:05:45 Сlass](https://youtu.be/PfuEfIiLX34?t=345) +- [00:06:11 Functor](https://youtu.be/PfuEfIiLX34?t=371) +- [00:11:54 Mutable](https://youtu.be/PfuEfIiLX34?t=714) +- [00:16:34 Iterator](https://youtu.be/PfuEfIiLX34?t=994) +- [00:26:18 Promise](https://youtu.be/PfuEfIiLX34?t=1578) +- [00:26:35 Test](https://youtu.be/PfuEfIiLX34?t=1595) +- [00:37:08 Compare](https://youtu.be/PfuEfIiLX34?t=2228) +- [00:39:45 Benchmark](https://youtu.be/PfuEfIiLX34?t=2385) +- [00:40:48 Запуск и анализ тестов](https://youtu.be/PfuEfIiLX34?t=2448) +- [01:03:48 Первый способ возвращение ошибок в синхронном коде](https://youtu.be/PfuEfIiLX34?t=3828) +- [01:09:24 Второй способ возвращение ошибок в синхронном коде](https://youtu.be/PfuEfIiLX34?t=4164) +- [01:12:26 Возвращение ошибок в асинхронном коде](https://youtu.be/PfuEfIiLX34?t=4346) +- [01:16:14 Корректное возвращение ошибок](https://youtu.be/PfuEfIiLX34?t=4574) +- [01:20:03 Обработка ошибок c promise](https://youtu.be/PfuEfIiLX34?t=4803) +- [01:23:58 Обработка ошибок c async-await](https://youtu.be/PfuEfIiLX34?t=5038) ## [Функциональное программирование на JavaScript](https://youtu.be/0JxSs_GcvbQ) + ## [Функциональные объекты, функторы и монады в JavaScript](https://youtu.be/3Z7f0Gi8pxw) -- [00:00:00 Определение функтора ](https://youtu.be/3Z7f0Gi8pxw?t=0) -- [00:01:40 Функтор из прототипа ](https://youtu.be/3Z7f0Gi8pxw?t=100) -- [00:08:17 Функтор из прототипа (упрощенный) ](https://youtu.be/3Z7f0Gi8pxw?t=497) -- [00:09:14 Функтор из замыкания ](https://youtu.be/3Z7f0Gi8pxw?t=554) -- [00:11:49 Функтор из замыкания с тернарным оператором](https://youtu.be/3Z7f0Gi8pxw?t=709) -- [00:12:44 Аппликативный функтор из прототипа ](https://youtu.be/3Z7f0Gi8pxw?t=764) -- [00:18:08 Аппликативный функтор из замыкания (монада)](https://youtu.be/3Z7f0Gi8pxw?t=1088) -- [00:23:11 Пример применения монады ](https://youtu.be/3Z7f0Gi8pxw?t=1391) -- [00:28:37 Функциональный объект ](https://youtu.be/3Z7f0Gi8pxw?t=1717) -- [00:39:44 Пример применения функционального объекта](https://youtu.be/3Z7f0Gi8pxw?t=2384) -- [00:45:27 Обобщение](https://youtu.be/3Z7f0Gi8pxw?t=2727) +- [00:00:00 Определение функтора](https://youtu.be/3Z7f0Gi8pxw?t=0) +- [00:01:40 Функтор из прототипа](https://youtu.be/3Z7f0Gi8pxw?t=100) +- [00:08:17 Функтор из прототипа (упрощенный)](https://youtu.be/3Z7f0Gi8pxw?t=497) +- [00:09:14 Функтор из замыкания](https://youtu.be/3Z7f0Gi8pxw?t=554) +- [00:11:49 Функтор из замыкания с тернарным оператором](https://youtu.be/3Z7f0Gi8pxw?t=709) +- [00:12:44 Аппликативный функтор из прототипа](https://youtu.be/3Z7f0Gi8pxw?t=764) +- [00:18:08 Аппликативный функтор из замыкания (монада)](https://youtu.be/3Z7f0Gi8pxw?t=1088) +- [00:23:11 Пример применения монады](https://youtu.be/3Z7f0Gi8pxw?t=1391) +- [00:28:37 Функциональный объект](https://youtu.be/3Z7f0Gi8pxw?t=1717) +- [00:39:44 Пример применения функционального объекта](https://youtu.be/3Z7f0Gi8pxw?t=2384) +- [00:45:27 Обобщение](https://youtu.be/3Z7f0Gi8pxw?t=2727) ## [Отмена асинхронных операций, cancellable callback and Promise в JavaScript](https://youtu.be/T8fXlnqI4Ws) + ## [Future: Асинхронность на фьючерах без состояния](https://youtu.be/22ONv3AGXdk) + ## [Примеси, обертки, декораторы, мемоизация](https://youtu.be/2h9syXN5wO0) -- [00:00:00 Синхронная функция-обертка ](https://youtu.be/2h9syXN5wO0?t=0) -- [00:02:55 Синхронная универсальная функция-обертка ](https://youtu.be/2h9syXN5wO0?t=175) -- [00:08:28 Асинхронная универсальная функция-обертка ](https://youtu.be/2h9syXN5wO0?t=508) -- [00:15:50 Синхронная функция-обертка, которая добавляет поведение (timeout)](https://youtu.be/2h9syXN5wO0?t=950) -- [00:22:45 Асинхронная функция-обертка, которая добавляет поведение (timeout)](https://youtu.be/2h9syXN5wO0?t=1365) -- [00:25:38 Функция-обертка, которая ограничивает вызов функции до одного вызова (once) ](https://youtu.be/2h9syXN5wO0?t=1538) -- [00:27:36 Функция-обертка, которая ограничивает вызов функции до n-го вызова (limit)](https://youtu.be/2h9syXN5wO0?t=1656) -- [00:29:50 Функция-обертка, которая отменяет вызов функции (cancel)](https://youtu.be/2h9syXN5wO0?t=1790) -- [00:32:29 Функция-обертка с методами timeout, limit, cancel](https://youtu.be/2h9syXN5wO0?t=1949) -- [00:39:03 Функция-обертка с методами timeout, limit, cancel (оптимизированная)](https://youtu.be/2h9syXN5wO0?t=2343) -- [00:42:28 Функция-обертка, которая ограничивает один вызов за 200 мс (throttle)](https://youtu.be/2h9syXN5wO0?t=2548) -- [00:45:47 Примесь поля через точку ](https://youtu.be/2h9syXN5wO0?t=2747) -- [00:51:35 Примесь поля через функцию extend](https://youtu.be/2h9syXN5wO0?t=3095) -- [00:57:35 Примесь поля через object.assign( )](https://youtu.be/2h9syXN5wO0?t=3455) -- [00:59:18 Примесь поведения ](https://youtu.be/2h9syXN5wO0?t=3558) -- [01:02:23 Примесь изменения класса](https://youtu.be/2h9syXN5wO0?t=3743) -- [01:06:50 Определение](https://youtu.be/2h9syXN5wO0?t=4010) -- [01:07:30 Реализация простой мемоизации ](https://youtu.be/2h9syXN5wO0?t=4050) -- [01:14:43 Реализация простой мемоизации с проверкой скорости ](https://youtu.be/2h9syXN5wO0?t=4483) -- [01:20:43 Удаление накопленного кэша ](https://youtu.be/2h9syXN5wO0?t=4843) -- [01:25:35 Асинхронная мемоизация ](https://youtu.be/2h9syXN5wO0?t=5135) -- [01:31:10 Преобразование аргументов и ключей в hash-функцию](https://youtu.be/2h9syXN5wO0?t=5470) -- [01:33:32 Реализация сложной мемоизации](https://youtu.be/2h9syXN5wO0?t=5612) +- [00:00:00 Синхронная функция-обертка](https://youtu.be/2h9syXN5wO0?t=0) +- [00:02:55 Синхронная универсальная функция-обертка](https://youtu.be/2h9syXN5wO0?t=175) +- [00:08:28 Асинхронная универсальная функция-обертка](https://youtu.be/2h9syXN5wO0?t=508) +- [00:15:50 Синхронная функция-обертка, которая добавляет поведение (timeout)](https://youtu.be/2h9syXN5wO0?t=950) +- [00:22:45 Асинхронная функция-обертка, которая добавляет поведение (timeout)](https://youtu.be/2h9syXN5wO0?t=1365) +- [00:25:38 Функция-обертка, которая ограничивает вызов функции до одного вызова (once)](https://youtu.be/2h9syXN5wO0?t=1538) +- [00:27:36 Функция-обертка, которая ограничивает вызов функции до n-го вызова (limit)](https://youtu.be/2h9syXN5wO0?t=1656) +- [00:29:50 Функция-обертка, которая отменяет вызов функции (cancel)](https://youtu.be/2h9syXN5wO0?t=1790) +- [00:32:29 Функция-обертка с методами timeout, limit, cancel](https://youtu.be/2h9syXN5wO0?t=1949) +- [00:39:03 Функция-обертка с методами timeout, limit, cancel (оптимизированная)](https://youtu.be/2h9syXN5wO0?t=2343) +- [00:42:28 Функция-обертка, которая ограничивает один вызов за 200 мс (throttle)](https://youtu.be/2h9syXN5wO0?t=2548) +- [00:45:47 Примесь поля через точку](https://youtu.be/2h9syXN5wO0?t=2747) +- [00:51:35 Примесь поля через функцию extend](https://youtu.be/2h9syXN5wO0?t=3095) +- [00:57:35 Примесь поля через object.assign( )](https://youtu.be/2h9syXN5wO0?t=3455) +- [00:59:18 Примесь поведения](https://youtu.be/2h9syXN5wO0?t=3558) +- [01:02:23 Примесь изменения класса](https://youtu.be/2h9syXN5wO0?t=3743) +- [01:06:50 Определение](https://youtu.be/2h9syXN5wO0?t=4010) +- [01:07:30 Реализация простой мемоизации](https://youtu.be/2h9syXN5wO0?t=4050) +- [01:14:43 Реализация простой мемоизации с проверкой скорости](https://youtu.be/2h9syXN5wO0?t=4483) +- [01:20:43 Удаление накопленного кэша](https://youtu.be/2h9syXN5wO0?t=4843) +- [01:25:35 Асинхронная мемоизация](https://youtu.be/2h9syXN5wO0?t=5135) +- [01:31:10 Преобразование аргументов и ключей в hash-функцию](https://youtu.be/2h9syXN5wO0?t=5470) +- [01:33:32 Реализация сложной мемоизации](https://youtu.be/2h9syXN5wO0?t=5612) ## [Мемоизация функций: memoize в JavaScript](https://youtu.be/H6S8QJo2Qxg) + ## [Композиция функций (pipe, compose) в JavaScript](https://youtu.be/xS9FicVrOTI) From bb074217f784471b568bcf45feb6f69e6da0d73e Mon Sep 17 00:00:00 2001 From: Anton Telichenko Date: Sat, 6 Aug 2022 10:10:04 +0300 Subject: [PATCH 138/308] feat: timecodes for paradigms and patterns (#83) --- Courses/Paradigms-timecodes.md | 64 +++++++++++++++++++++++++++++ Courses/Paradigms.md | 4 ++ Courses/Patterns-timecodes.md | 74 ++++++++++++++++++++++++++++++++++ Courses/Patterns.md | 4 ++ 4 files changed, 146 insertions(+) create mode 100644 Courses/Paradigms-timecodes.md create mode 100644 Courses/Patterns-timecodes.md diff --git a/Courses/Paradigms-timecodes.md b/Courses/Paradigms-timecodes.md new file mode 100644 index 0000000..5a8db60 --- /dev/null +++ b/Courses/Paradigms-timecodes.md @@ -0,0 +1,64 @@ +# Таймкоды к курсу "Парадигмы программирования" + +Общее оглавление курса тут: https://github.com/HowProgrammingWorks/Index/blob/master/Courses/Paradigms.md + +## [Объектно-ориентированное программирование](https://youtu.be/r4ReQlVtfgQ) + +- [00:00 Введение](https://youtu.be/r4ReQlVtfgQ?t=0) +- [01:32 Основные понятия](https://youtu.be/r4ReQlVtfgQ?t=92) +- [16:42 Принципы ООП](https://youtu.be/r4ReQlVtfgQ?t=1002) +- [16:49 Принципы GRASP](https://youtu.be/r4ReQlVtfgQ?t=1009) +- [29:04 Принципы SOLID](https://youtu.be/r4ReQlVtfgQ?t=1744) +- [41:29 Паттерны GoF](https://youtu.be/r4ReQlVtfgQ?t=2489) + +## [Структуры (struct) или записи (record)](https://youtu.be/Wb7o_kK4aH4) + + +## [Дженерики и обобщенное программирование](https://youtu.be/r6W2z3DQhoI) + + +## [Have Objects Failed? Или что не так с ООП?](https://youtu.be/4yO5OS0vPSw) + +- [1:46 Присвоенные идеи ООП](https://youtu.be/4yO5OS0vPSw?t=106) +- [11:47 Притянутые достоинства ООП](https://youtu.be/4yO5OS0vPSw?t=707) +- [22:06 Проблемы ООП](https://youtu.be/4yO5OS0vPSw?t=1326) +- [39:56 Как жить с ООП](https://youtu.be/4yO5OS0vPSw?t=2396) +- [56:44 Подходящие области для ООП](https://youtu.be/4yO5OS0vPSw?t=3404) +- [1:03:51 Неподходящие области для ООП](https://youtu.be/4yO5OS0vPSw?t=3831) +- [1:11:30 Заключение](https://youtu.be/4yO5OS0vPSw?t=4290) + +## [Функциональное программирование на JavaScript](https://youtu.be/0JxSs_GcvbQ) + + +## [Реактивное программирование на JavaScript](https://youtu.be/7MH8-qQc-48) + +- [0:00 введение](https://youtu.be/7MH8-qQc-48?t=0) +- [3:00 imperative.js](https://youtu.be/7MH8-qQc-48?t=180) +- [4:00 set-get.js](https://youtu.be/7MH8-qQc-48?t=240) +- [7:15 proxy.js](https://youtu.be/7MH8-qQc-48?t=435) +- [23:07 observer.js](https://youtu.be/7MH8-qQc-48?t=1387) + +## [Асинхронное программирование в Node.js и JavaScript](https://youtu.be/hY6Z6qNYzmc) + +- [5:45 Callbacks](https://youtu.be/hY6Z6qNYzmc?t=345) +- [10:00 Async.js or analogues](https://youtu.be/hY6Z6qNYzmc?t=600) +- [15:47 Events](https://youtu.be/hY6Z6qNYzmc?t=947) +- [18:00 Promise](https://youtu.be/hY6Z6qNYzmc?t=1080) +- [25:20 async/await](https://youtu.be/hY6Z6qNYzmc?t=1520) +- [27:10 Functor + Chaining + composition](https://youtu.be/hY6Z6qNYzmc?t=1630) +- [30:49 Problems of callback, async.js, Proimise, async/await](https://youtu.be/hY6Z6qNYzmc?t=1849) +- [34:00 Add timeout to any function](https://youtu.be/hY6Z6qNYzmc?t=2040) +- [36:55 Make function cancelable](https://youtu.be/hY6Z6qNYzmc?t=2215) +- [37:59 More wrappers](https://youtu.be/hY6Z6qNYzmc?t=2279) +- [39:22 Promisify and Callbackify](https://youtu.be/hY6Z6qNYzmc?t=2362) +- [48:47 Sync function to async](https://youtu.be/hY6Z6qNYzmc?t=2927) +- [41:43 Sync function to Promise](https://youtu.be/hY6Z6qNYzmc?t=2503) +- [43:17 Convertors](https://youtu.be/hY6Z6qNYzmc?t=2597) +- [43:31 Metasync](https://youtu.be/hY6Z6qNYzmc?t=2611) +- [45:26 Function composition](https://youtu.be/hY6Z6qNYzmc?t=2726) +- [47:09 Adynchronous function composition](https://youtu.be/hY6Z6qNYzmc?t=2829) +- [47:58 Flow communication like in electronics](https://youtu.be/hY6Z6qNYzmc?t=2878) +- [50:06 Collectors](https://youtu.be/hY6Z6qNYzmc?t=3006) +- [59:17 Queue](https://youtu.be/hY6Z6qNYzmc?t=3557) + +## [Модель акторов для параллельных вычислений](https://youtu.be/xp5MVKEqxY4) diff --git a/Courses/Paradigms.md b/Courses/Paradigms.md index a2c9355..40ba688 100644 --- a/Courses/Paradigms.md +++ b/Courses/Paradigms.md @@ -1,5 +1,9 @@ # Парадигмы программирования +[Таймкоды и подробное оглавление для части лекций](Paradigms-timecodes.md) + +## Видео-лекции + - Процедурное программирование - [Объектно-ориентированное программирование](https://youtu.be/r4ReQlVtfgQ) - [Структуры (struct) или записи (record)](https://youtu.be/Wb7o_kK4aH4) diff --git a/Courses/Patterns-timecodes.md b/Courses/Patterns-timecodes.md new file mode 100644 index 0000000..a431314 --- /dev/null +++ b/Courses/Patterns-timecodes.md @@ -0,0 +1,74 @@ +# Таймкоды к курсу "Шаблоны проектирования" + +Общее оглавление курса тут: https://github.com/HowProgrammingWorks/Index/blob/master/Courses/Patterns.md + +## [Шаблон Singleton (синглтон) в JavaScript](https://youtu.be/qdJ5yikZnfE) + +- [00:00:00 Singleton через конструктор прототипа](https://youtu.be/qdJ5yikZnfE?t=0) +- [00:03:27 Singleton через замыкания](https://youtu.be/qdJ5yikZnfE?t=207) +- [00:06:10 Пример singleton через замыкания](https://youtu.be/qdJ5yikZnfE?t=370) +- [00:08:15 Пример singleton через замыкания в функциональном стиле](https://youtu.be/qdJ5yikZnfE?t=495) +- [00:09:23 Пример singleton через замыкания в функциональном стиле (упрощенный)](https://youtu.be/qdJ5yikZnfE?t=563) +- [00:10:32 Создание singleton в JS](https://youtu.be/qdJ5yikZnfE?t=632) + +## [Фабрики и пулы объектов в JavaScript, factorify, poolify](https://youtu.be/Ax_mSvadFp8) + +- [00:00:00 Введение](https://youtu.be/Ax_mSvadFp8?t=0) +- [00:02:38 Фабрика ( factory )](https://youtu.be/Ax_mSvadFp8?t=158) +- [00:05:44 Фабрика прототипов](https://youtu.be/Ax_mSvadFp8?t=344) +- [00:10:48 Фабрика классов](https://youtu.be/Ax_mSvadFp8?t=648) +- [00:12:28 Фабрика функций](https://youtu.be/Ax_mSvadFp8?t=748) +- [00:15:55 Фабричные методы](https://youtu.be/Ax_mSvadFp8?t=955) +- [00:16:55 Превращение функций в фабрику ( factorify)](https://youtu.be/Ax_mSvadFp8?t=1015) +- [00:19:44 Пул ( pool )](https://youtu.be/Ax_mSvadFp8?t=1184) +- [00:23:05 Работа с пулом](https://youtu.be/Ax_mSvadFp8?t=1385) +- [00:23:04 Обобщенный пул](https://youtu.be/Ax_mSvadFp8?t=1384) +- [00:24:55 Пулифицирование фабрики ( poolify )](https://youtu.be/Ax_mSvadFp8?t=1495) +- [00:28:50 Улучшеная пулифицированная фабрика](https://youtu.be/Ax_mSvadFp8?t=1730) +- [00:32:10 Ассинхронная работа с пулом](https://youtu.be/Ax_mSvadFp8?t=1930) +- [00:45:25 Одновременное использование factorify и poolify](https://youtu.be/Ax_mSvadFp8?t=2725) +- [00:51:54 Обобщение](https://youtu.be/Ax_mSvadFp8?t=3114) + +## [Фасад - петтерн для скрытия сложности](https://youtu.be/oJtBO7CystE) + + +## [Адаптер (Adapter) - паттерн достижения совместимости](https://youtu.be/cA65McLQrR8) + +- [0:00 введение](https://youtu.be/cA65McLQrR8?t=0) +- [1:30 adapter на prototype](https://youtu.be/cA65McLQrR8?t=90) +- [3:57 adapter на class](https://youtu.be/cA65McLQrR8?t=237) +- [4:23 adapter на function](https://youtu.be/cA65McLQrR8?t=263) +- [6:15 adapter на классе-обертке (boxing)](https://youtu.be/cA65McLQrR8?t=375) +- [7:08 adapter на замыканиях (closure)](https://youtu.be/cA65McLQrR8?t=428) +- [8:10 adapter на interface](https://youtu.be/cA65McLQrR8?t=490) +- [13:45 adapter на events](https://youtu.be/cA65McLQrR8?t=825) +- [16:00 выводы](https://youtu.be/cA65McLQrR8?t=960) + +## [Стратегия (Strategy) - выбор взаимозаменяемого поведения](https://youtu.be/hO8VSVv0NqM) + +- [0:00 введение](https://youtu.be/hO8VSVv0NqM?t=0) +- [3:40 strategy на class](https://youtu.be/hO8VSVv0NqM?t=220) +- [15:04 strategy на prototype](https://youtu.be/hO8VSVv0NqM?t=904) +- [16:14 strategy на function](https://youtu.be/hO8VSVv0NqM?t=974) +- [20:22 strategy с примером работы над массивом](https://youtu.be/hO8VSVv0NqM?t=1222) +- [24:07 обобщение](https://youtu.be/hO8VSVv0NqM?t=1447) + +## [Паттерн Команда (Command) действие и параметры как объект](https://youtu.be/vER0vYL4hM4) + + +## [Паттерн Revealing Constructor - открытый конструктор](https://youtu.be/leR5sXRkuJI) + + +## [Паттерн Наблюдатель (Observer + Observable)](https://youtu.be/_bFXuLcXoXg) + + +## [Принцип единственной ответственности и закон Конвея](https://youtu.be/o4bQywkBKOI) + + +## [Ассоциация, агрегация и композиция объектов в JavaScript](https://youtu.be/tOIcBrzezK0) + + +## [Принцип подстановки Барбары Лисков](https://youtu.be/RbhYxygxroc) + + +## [Антипаттерны ООП (часть 1) c примерами на JavaScript](https://youtu.be/9d5TG1VsLeU) diff --git a/Courses/Patterns.md b/Courses/Patterns.md index febf4df..6ec67b1 100644 --- a/Courses/Patterns.md +++ b/Courses/Patterns.md @@ -1,5 +1,9 @@ # Шаблоны проектирования +[Таймкоды и подробное оглавление для части лекций](Patterns-timecodes.md) + +## Видео-лекции + - [Шаблон Singleton (синглтон) в JavaScript](https://youtu.be/qdJ5yikZnfE) - Примеры кода: https://github.com/HowProgrammingWorks/Singleton - [Фабрики и пулы объектов в JavaScript, factorify, poolify](https://youtu.be/Ax_mSvadFp8) From 5f38bf743b674b1f9975482c528c765ae5fc2b72 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Sun, 7 Aug 2022 22:52:38 +0300 Subject: [PATCH 139/308] Fix completeness --- README.md | 26 ++++++++++++++------------ 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/README.md b/README.md index 7865dac..1e3e632 100644 --- a/README.md +++ b/README.md @@ -16,28 +16,30 @@ ## Отдельные курсы -- [Асинхронное программирование](Courses/Asynchronous.md) [(с таймкодами)](Courses/Asynchronous-timecodes.md) - (есть 98% примеров кода и видео-лекции) -- [Технологический стек Node.js](Courses/NodeJS.md) [(с таймкодами)](Courses/NodeJS-timecodes.md) - (есть 97% кода и видео-лекций) +- [Асинхронное программирование](Courses/Asynchronous.md) + (курс готов, регулярно обновляется) + [(с таймкодами)](Courses/Asynchronous-timecodes.md) +- [Технологический стек Node.js](Courses/NodeJS.md) + (курс готов, регулярно обновляется) + [(с таймкодами)](Courses/NodeJS-timecodes.md) - [Технологический стек Metarhia](Courses/Metarhia.md) - (есть 5% примеров и видео-лекций) + (готовность 5%) - [Шаблоны проектирования](Courses/Patterns.md) - (есть 50% примеров кода и видео-лекций) + (готовность 50%) - [Парадигмы программирования](Courses/Paradigms.md) - (есть 80% кода примеров и 60% видео-лекций) + (готовность 70%) - [Метапрограммирование и мультипарадигменное программирование](Courses/Metaprogramming.md) - (есть 50% кода и несколько видео-лекций) + (готовность 50%) - [Алгоритмы и структуры данных](Courses/AlgAndData.md) - (есть до 20% материала, нужно сводить разные варианты) + (готовность 20%) - [Проектирование сетевых протоколов и сервисов](Courses/Network.md) - (есть 50% примеров кода и несколько видео-лекций) + (готовность 50%) - [Инструменты разработки и жизненного цикла ПО](Courses/Tools.md) (есть несколько видео-лекций, нужно расширять) - [Функциональное программирование](Courses/Functional.md) - (есть 20% примеров кода и несколько видео-лекций) + (готовность 20%) - [Объектно-ориентированное программирование](Courses/OOP.md) - (есть 20% примеров кода и несколько видео-лекций) + (готовность 20%) - [GRASP принципы с адаптацией для JavaScript и Node.js](Courses/GRASP.md) (есть 50% материала, записано 20% лекций) - [Операционные системы](Courses/OS.md) From 6a81318eba73d2cff6b262f4ec0316c935a524be Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Sun, 7 Aug 2022 23:02:20 +0300 Subject: [PATCH 140/308] Add links to timecodes --- Courses/Asynchronous-timecodes.md | 2 +- Courses/Asynchronous.md | 2 +- Courses/Fundamentals-timecodes.md | 2 +- Courses/Fundamentals.md | 2 ++ Courses/NodeJS-timecodes.md | 2 +- Courses/NodeJS.md | 2 +- README.md | 2 +- 7 files changed, 8 insertions(+), 6 deletions(-) diff --git a/Courses/Asynchronous-timecodes.md b/Courses/Asynchronous-timecodes.md index 1f08c4f..872a11a 100644 --- a/Courses/Asynchronous-timecodes.md +++ b/Courses/Asynchronous-timecodes.md @@ -1,6 +1,6 @@ # Таймкоды к курсу "Асинхронное программирование" -Общее оглавление курса тут: https://github.com/HowProgrammingWorks/Index/blob/master/Courses/Asynchronous.md +Общее оглавление курса тут: [Asynchronous.md](Asynchronous.md) ## [Асинхронное программирование в Node.js и JavaScript](https://youtu.be/hY6Z6qNYzmc) diff --git a/Courses/Asynchronous.md b/Courses/Asynchronous.md index b4ad541..385b675 100644 --- a/Courses/Asynchronous.md +++ b/Courses/Asynchronous.md @@ -2,7 +2,7 @@ Объем материала: 24 лекции, 27 репозиториев с примерами кода. -[Таймкоды и подробное оглавление для части лекций](Asynchronous-timecodes.md) +[Для части лекций есть таймкоды и подробное оглавление](Asynchronous-timecodes.md) ## Видео-лекции diff --git a/Courses/Fundamentals-timecodes.md b/Courses/Fundamentals-timecodes.md index 5dd2d4e..5bccb6d 100644 --- a/Courses/Fundamentals-timecodes.md +++ b/Courses/Fundamentals-timecodes.md @@ -1,6 +1,6 @@ # Таймкоды к курсу "Основы программирования" -Общее оглавление курса тут: https://github.com/HowProgrammingWorks/Index/blob/master/Courses/Fundamentals.md +Общее оглавление курса тут: [Fundamentals.md](Fundamentals.md) ## [Карта специальности инженер-программист](https://youtu.be/SE5aXH-yf0I) diff --git a/Courses/Fundamentals.md b/Courses/Fundamentals.md index eb76e19..664bc79 100644 --- a/Courses/Fundamentals.md +++ b/Courses/Fundamentals.md @@ -2,6 +2,8 @@ Модули [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) +[Для части лекций есть таймкоды и подробное оглавление](Fundamentals-timecodes.md) + ## Ссылки - Автор: https://github.com/tshemsedinov diff --git a/Courses/NodeJS-timecodes.md b/Courses/NodeJS-timecodes.md index 1bc5f20..1b1c1d7 100644 --- a/Courses/NodeJS-timecodes.md +++ b/Courses/NodeJS-timecodes.md @@ -1,6 +1,6 @@ # Таймкоды к курсу по Node.js -Общее оглавление курса тут: https://github.com/HowProgrammingWorks/Index/blob/master/Courses/NodeJS.md +Общее оглавление курса тут: [NodeJS.md](NodeJS.md) ## [Node.js Введение в технологию](https://youtu.be/WBcHgaoHh1k) diff --git a/Courses/NodeJS.md b/Courses/NodeJS.md index e5bd520..9072bc9 100644 --- a/Courses/NodeJS.md +++ b/Courses/NodeJS.md @@ -4,7 +4,7 @@ Перед основной частью курса по Node.js нужно сначала освоить хоть частично курс по асинхронному программированию: https://github.com/HowProgrammingWorks/Index/blob/master/Courses/Asynchronous.md -[Таймкоды и подробное оглавление для части лекций](NodeJS-timecodes.md) +[Для части лекций есть таймкоды и подробное оглавление](NodeJS-timecodes.md) ## Доклады и выступления diff --git a/README.md b/README.md index 1e3e632..86d2497 100644 --- a/README.md +++ b/README.md @@ -10,7 +10,7 @@ - [Введение и обзор знаний](Courses/Introduction.md) (есть несколько видео-лекций) [семинары](Courses/Seminars.md) - [Основы программирования, модули (1 год обучения)](Courses/Fundamentals.md) - (есть до 95% материала) + (есть до 95% материала) [(с таймкодами)](Courses/Fundamentals-timecodes.md) - [Программирование (2 год обучения)](Courses/Advanced.md) (есть до 65% материала) From 48b8c2b2a88b07d0e51957dd19cd3e742cd44931 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Sun, 7 Aug 2022 23:05:07 +0300 Subject: [PATCH 141/308] Improve completeness --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 86d2497..d67fd72 100644 --- a/README.md +++ b/README.md @@ -8,11 +8,11 @@ ## Последовательная программа - [Введение и обзор знаний](Courses/Introduction.md) - (есть несколько видео-лекций) [семинары](Courses/Seminars.md) + а так же [семинары](Courses/Seminars.md) - [Основы программирования, модули (1 год обучения)](Courses/Fundamentals.md) - (есть до 95% материала) [(с таймкодами)](Courses/Fundamentals-timecodes.md) + (готовность 95%) [(с таймкодами)](Courses/Fundamentals-timecodes.md) - [Программирование (2 год обучения)](Courses/Advanced.md) - (есть до 65% материала) + (готовность 65%) ## Отдельные курсы @@ -41,24 +41,24 @@ - [Объектно-ориентированное программирование](Courses/OOP.md) (готовность 20%) - [GRASP принципы с адаптацией для JavaScript и Node.js](Courses/GRASP.md) - (есть 50% материала, записано 20% лекций) + (готовность 40%) - [Операционные системы](Courses/OS.md) (нужно сформировать программу) - [Системное программирование](Courses/System.md) (нужно сформировать программу) - [Архитектура информационных систем](Courses/Architecture.md) - (есть несколько видео-лекций) + (готовность 40%) - [Веб-технологии](Courses/Web.md) - (есть 25% кода и несколько видео-лекций) + (готовность 25%) - [Параллельное программирование](Courses/Parallel.md) - (есть 10% примеров и несколько видео-лекций) + (готовность 10%) - [Проектирование баз данных](Courses/Databases.md) - (есть 25% примеров и видео-лекций) + (готовность 25%) - [Высоконагруженные и масштабируемые системы](Courses/Highload.md) - (есть несколько видео-лекций) + (готовность 20%) - [Проектирование пользовательских интерфейсов](Courses/UI-UX.md) (нужно сформировать программу) - [Безопасность информационных систем](Courses/Security.md) (нужно сформировать программу) - [Качество, тестирование и надежность ПО](Courses/Quality.md) - (есть несколько видео-лекций) + (готовность 5%) From 2e99f7849f41f2e39dbe88302b66c971761b31b6 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Sun, 7 Aug 2022 23:13:32 +0300 Subject: [PATCH 142/308] Update README --- README.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index d67fd72..2798237 100644 --- a/README.md +++ b/README.md @@ -1,11 +1,13 @@ # Индекс и состояние курсов +Книга по большей части материала (в разработке): https://github.com/HowProgrammingWorks/Book + - [Индекс каналов и групп сообщества Метархия](Links.md) - [Индекс докладов, интервью и других выступлений](Courses/Talks.md) - [Индекс практических заданий](Practice/Index.md) - [Индекс созвонов сообщества](Archive/WeeklyCall.md) -## Последовательная программа +## Базовый курс инженерии программного обеспечения - [Введение и обзор знаний](Courses/Introduction.md) а так же [семинары](Courses/Seminars.md) @@ -14,7 +16,7 @@ - [Программирование (2 год обучения)](Courses/Advanced.md) (готовность 65%) -## Отдельные курсы +## Отдельные специализированные курсы - [Асинхронное программирование](Courses/Asynchronous.md) (курс готов, регулярно обновляется) From c6b7d1e54ab7d07a808597b1fb5eb71256a1eb15 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Wed, 10 Aug 2022 10:07:52 -0400 Subject: [PATCH 143/308] Update Fundamentals.md --- Courses/Fundamentals.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Courses/Fundamentals.md b/Courses/Fundamentals.md index 664bc79..9e758fa 100644 --- a/Courses/Fundamentals.md +++ b/Courses/Fundamentals.md @@ -42,7 +42,7 @@ - Условия: https://github.com/HowProgrammingWorks/Conditional - Семинар: [Базовый синтаксис языка JavaScript](https://youtu.be/PGqjTXQe_qw) - Семинар: [Автоматическая проверка лабораторных работ](https://youtu.be/M4KpG0LEAyA) -- [Функции, лямбды, контексты, замыкания в JavaScript](https://youtu.be/pn5myCmpV2U) +- [Функции, стрелочные функции, контексты, замыкания в JavaScript](https://youtu.be/pn5myCmpV2U) - Функции: https://github.com/HowProgrammingWorks/Function - Замыкания: https://github.com/HowProgrammingWorks/Closure - [Массивы, объекты, классы, прототипы в JavaScript](https://youtu.be/VBMGnAPfmsY) @@ -105,8 +105,8 @@ - Примеры кода: https://github.com/HowProgrammingWorks/RegExp - [Композиция: pipe, compose](https://youtu.be/xS9FicVrOTI) - Примеры кода: https://github.com/HowProgrammingWorks/Composition -- [Примеси: mixin, extend, Object.assign, class λ-mixin](https://youtu.be/NZMrJ2adEyY) - - Тема class λ-mixin из этой лекции не обязательна для модуля SEF1 +- [Примеси: mixin, extend, Object.assign, class-mixin](https://youtu.be/NZMrJ2adEyY) + - Тема class-mixin из этой лекции не обязательна для модуля SEF1 - Примеры кода: https://github.com/HowProgrammingWorks/Mixin - Старая версия лекции: https://youtu.be/2h9syXN5wO0 - [Прототипное программирование и прототипное наследование](https://youtu.be/SzaXTW2qcJE) From e2d383f97463cf0ed2664e1034121d74bca7d48e Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Thu, 25 Aug 2022 15:46:59 +0300 Subject: [PATCH 144/308] Update NodeJS.md --- Courses/NodeJS.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Courses/NodeJS.md b/Courses/NodeJS.md index 9072bc9..b05ff46 100644 --- a/Courses/NodeJS.md +++ b/Courses/NodeJS.md @@ -1,6 +1,6 @@ # Технологический стек Node.js -Объем материала: 38 лекций, 37 репозиториев с примерами кода, 4 PDF со слайдами. +Объем материала: 48 лекций + 9 докладов и вебинаров, 37 репозиториев с примерами кода, 4 PDF со слайдами. Перед основной частью курса по Node.js нужно сначала освоить хоть частично курс по асинхронному программированию: https://github.com/HowProgrammingWorks/Index/blob/master/Courses/Asynchronous.md From 7565650adb9332f7c5d939d77e4553a5bca680bc Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Sun, 28 Aug 2022 20:56:00 +0300 Subject: [PATCH 145/308] Add Node.js in 2022-2023 --- Courses/NodeJS-2022-2023.md | 49 +++++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 Courses/NodeJS-2022-2023.md diff --git a/Courses/NodeJS-2022-2023.md b/Courses/NodeJS-2022-2023.md new file mode 100644 index 0000000..a3ff399 --- /dev/null +++ b/Courses/NodeJS-2022-2023.md @@ -0,0 +1,49 @@ +# Технологический стек Node.js 2022-2023 + +Объем материала: 20 часов лекций, еженедельно 2 часа семинары в течении года, репозитории с примерами кода. +Что нужно знать на входе: +- [Синтаксис JavaScript без всяких триков](https://github.com/HowProgrammingWorks/Index/blob/master/Courses/Fundamentals.md) +- [Основы асинхронного программирования](https://github.com/HowProgrammingWorks/Index/blob/master/Courses/Asynchronous.md) +- Уверенно владеть git, иметь github аккаунт +- Желательно docker, иметь рабочую машину на linux или mac +- Любая среда разработки, IDE или редактор + +Ссылки на старый курс: +- [Структура со ссылками на видео и репозитории с примерами кода](NodeJS.md) +- [Для части лекций есть таймкоды и подробное оглавление](NodeJS-timecodes.md) + +## До начала + +Пока курс готовится, предлагаю посмотреть доклады: + +- [Байки про JavaScript и Node.js с Тимуром Шемсединовым](https://youtu.be/hoKKYKMadQs) +- [Стратегия входа Node.js в корпоративный сектор](https://youtu.be/FLcBrP1KFYk) +- [Node.js Middleware – никогда больше!](https://youtu.be/RS8x73z4csI) + +## Содержание + +- Node.js Введение в технологию, обзор API, основные идеи: за счет чего реализована экономия памяти, cpu, I/O +- Системы модулей CJS (`CommonJS`) and ESM (`ECMAScrip modules`), особенности в Node.js, зависимости и пакеты `npm` +- Асинхронное программирование: `event loop`, `async hooks`, `race condition`, `callbacks`, `async/await`, `thenable`, `promises` +- Параллельное программирование: `threads`, `semaphore`, `mutex`, `spin locks`, `Atomics`, `SharedArrayBuffer`, Web Locks API +- Реактивное программирование: `Observer`, `EventEmitter`, `RxJS`, асинхронные и конкурентные очереди, `async collectors` +- Изоляция кода и данных в Node.js: модели `vm` и `v8`, защита `global`, контекстов, модулей и прототипов от патчинга +- Работа с файлами: `fs`, `Buffer`, `Stream`, `pipe`, `backpressure`, Web streams API, наблюдение за файловой системой +- Структура и архитектура проекта, слои, `DDD`, `Clean architecture`, связанность и связность кода, протекание абстракций +- Принципы `GRASP` и `SOLID` в `JavaScript` с адаптацией для Node.js, `IoC` (инверсия управления) и `DI` (внедрение зависимостей) +- Сетевые протоколы: `HTTP(S)`, `HTTP2`, `TCP`, `UDP`, `TLS`, `Websocket`, `SSE`, `HTTP/3` (`QUIC`) +- Принципы взаимодействия систем: `REST`, `RPC`, `Pipeline`, `Event-bus`, `Event-broker`, клиент-сервер, `peer-to-peer` +- API на принципах транспорт-агностик и фреймворк-агностик, контракты, реализация сессий и сервиса аутентификации +- Приложения, приближенные к реальному времени, интерактивность и коллаборативные приложения на вебсокетах +- Распространенные паттерны и антипаттерны в приложениях на Node.js +- Распределенные системы, высоконагруженные системы, балансировка нагрузки, кластеризация и масштабирование, IP sticky +- Вопросы безопасности: `DoS`, `XSS`, `Path traversal`, `CSRF`, `SQL`-инъекции +- Работа с базами данных, слой доступа к данным, описание структуры данных, доступ к данным, `postgres`, `redis`, `in-memory` +- Сравнение подходов `domain in the middle`, `ORM`, `active record`, `repository`, `data mapper`, схемы данных, `query builder` +- Утечки памяти и ресурсов, количественная оценка надежности, устойчивости, доступности, гибкости, качества +- Инфраструктура и инструментарий: логирование, тестирование, линтеры, отладка, CI/CD, встроенный testing framework +- `Performance hooks`, телеметрия ресурсов и оптимизация: I/O bound, CPU bound, memory bound, профилирование +- `Graceful shutdown` в Node.js, работа с ошибками и исключениями, `unhandled exceptions`, `stack trace` +- Встроенная криптография в Node.js (`openssl`), `addons`, `plugins`, `Node-API` (ранее `N-API`), `WASI` (Webassembly) +- `Serverless` и облачные `FaaS` решения на базе Node.js +- Практическое использование интроспекции, рефлекcии и скаффолдинга From 4af36378281712a5d85dc36cabd669341c81ce6b Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Sun, 28 Aug 2022 21:48:21 +0300 Subject: [PATCH 146/308] Update NodeJS-2022-2023.md --- Courses/NodeJS-2022-2023.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Courses/NodeJS-2022-2023.md b/Courses/NodeJS-2022-2023.md index a3ff399..9c61a93 100644 --- a/Courses/NodeJS-2022-2023.md +++ b/Courses/NodeJS-2022-2023.md @@ -27,7 +27,7 @@ - Асинхронное программирование: `event loop`, `async hooks`, `race condition`, `callbacks`, `async/await`, `thenable`, `promises` - Параллельное программирование: `threads`, `semaphore`, `mutex`, `spin locks`, `Atomics`, `SharedArrayBuffer`, Web Locks API - Реактивное программирование: `Observer`, `EventEmitter`, `RxJS`, асинхронные и конкурентные очереди, `async collectors` -- Изоляция кода и данных в Node.js: модели `vm` и `v8`, защита `global`, контекстов, модулей и прототипов от патчинга +- Изоляция кода и данных в Node.js: `vm`, `v8`, защита `global`, контекстов, модулей и прототипов от патчинга - Работа с файлами: `fs`, `Buffer`, `Stream`, `pipe`, `backpressure`, Web streams API, наблюдение за файловой системой - Структура и архитектура проекта, слои, `DDD`, `Clean architecture`, связанность и связность кода, протекание абстракций - Принципы `GRASP` и `SOLID` в `JavaScript` с адаптацией для Node.js, `IoC` (инверсия управления) и `DI` (внедрение зависимостей) From a5cb1d28a3db27e9a8e4616b67018138d5937563 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Sun, 28 Aug 2022 22:20:23 +0300 Subject: [PATCH 147/308] Update NodeJS-2022-2023.md --- Courses/NodeJS-2022-2023.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Courses/NodeJS-2022-2023.md b/Courses/NodeJS-2022-2023.md index 9c61a93..ecbd0b7 100644 --- a/Courses/NodeJS-2022-2023.md +++ b/Courses/NodeJS-2022-2023.md @@ -12,6 +12,8 @@ - [Структура со ссылками на видео и репозитории с примерами кода](NodeJS.md) - [Для части лекций есть таймкоды и подробное оглавление](NodeJS-timecodes.md) +Чем это курс не является: это не чтение документации, не курс по фреймворкам, не курс по Metarhia, не повторение старого курса, не лайвкодинг и не мастеркласс, не стрим. Новый курс - это максимально сконцентрированная информация и практические задачи по разработке на чистой ноде но с хорошей архитектурой и использованием всех современных возможностей Node.js + ## До начала Пока курс готовится, предлагаю посмотреть доклады: From 1e12056b0d93bf60aa96bd574f462c46d1bb5517 Mon Sep 17 00:00:00 2001 From: Georgiy Filippov Date: Fri, 19 Aug 2022 20:16:32 +0500 Subject: [PATCH 148/308] fix: add link to code examples in Automata topic - add link - small autofix styling --- Courses/Fundamentals.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Courses/Fundamentals.md b/Courses/Fundamentals.md index 9e758fa..fe7b32e 100644 --- a/Courses/Fundamentals.md +++ b/Courses/Fundamentals.md @@ -157,9 +157,10 @@ - Примеры кода: https://github.com/HowProgrammingWorks/AsyncAwait - Неизменяемые структуры данных (immutable) - [Автоматное программирование: конечные автоматы (машины состояний)](https://youtu.be/mxz7_zcip0c) + - Примеры кода: https://github.com/HowProgrammingWorks/Automata - [Антипаттерны объектно-ориентированного программирования](https://youtu.be/9d5TG1VsLeU) - https://github.com/HowProgrammingWorks/Antipatterns/tree/master/JavaScript/03-OOP -- [Шаблон Singleton (синглтон) в JavaScript](https://youtu.be/qdJ5yikZnfE) +- [Шаблон Singleton (синглтон) в JavaScript](https://youtu.be/qdJ5yikZnfE) - Примеры кода: https://github.com/HowProgrammingWorks/Singleton - [Функциональные объекты, функторы и монады в JavaScript](https://youtu.be/3Z7f0Gi8pxw) - Примеры кода: https://github.com/HowProgrammingWorks/Functor From a8c1c0338fe1ab1fdc5a5163f0ae8b4c2b3d6616 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Mon, 29 Aug 2022 16:01:29 +0300 Subject: [PATCH 149/308] Update NodeJS-2022-2023.md --- Courses/NodeJS-2022-2023.md | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/Courses/NodeJS-2022-2023.md b/Courses/NodeJS-2022-2023.md index ecbd0b7..e618213 100644 --- a/Courses/NodeJS-2022-2023.md +++ b/Courses/NodeJS-2022-2023.md @@ -14,6 +14,9 @@ Чем это курс не является: это не чтение документации, не курс по фреймворкам, не курс по Metarhia, не повторение старого курса, не лайвкодинг и не мастеркласс, не стрим. Новый курс - это максимально сконцентрированная информация и практические задачи по разработке на чистой ноде но с хорошей архитектурой и использованием всех современных возможностей Node.js +👉 Patreon: Подписаться: https://www.patreon.com/tshemsedinov +👉 Видео обзор курса: https://youtu.be/UGGzSEfCjPU + ## До начала Пока курс готовится, предлагаю посмотреть доклады: @@ -49,3 +52,12 @@ - Встроенная криптография в Node.js (`openssl`), `addons`, `plugins`, `Node-API` (ранее `N-API`), `WASI` (Webassembly) - `Serverless` и облачные `FaaS` решения на базе Node.js - Практическое использование интроспекции, рефлекcии и скаффолдинга + +# Доступ + +- До 15 сентября можно подписаться на Patreon, план «Professional» на 1 год за $102 +- После 15 сентября уже на план «Expert» на 1 год за $204 +- Помесячная подписка на «Professional» и «Expert» не дает доступа +- Доступ к матераиалам курса остается и после завершения подписки + +👉 Подписаться: https://www.patreon.com/tshemsedinov From 01f26621fcb415494dd829f1fdb98a61eb51a519 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Mon, 5 Sep 2022 17:49:40 +0300 Subject: [PATCH 150/308] Update Talks.md --- Courses/Talks.md | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/Courses/Talks.md b/Courses/Talks.md index 40ec050..004a3db 100644 --- a/Courses/Talks.md +++ b/Courses/Talks.md @@ -2,10 +2,6 @@ ## Future talks -- [IT-Kamasutra](https://youtu.be/ND5HNHicACI) -- [Anywhere Club и АйТиБорода про JavaScript](https://youtube.com/AnywhereClub) -- [Интервью на канале SergeyNemchinskiy](https://youtube.com/SergeyNemchinskiy) - ## 2022 - [Интервью на 5 часов на канале ITBEARD](https://youtu.be/0xtEdIy2j88) @@ -15,6 +11,8 @@ - [Google Developer Student Club - Мультипарадигменное и метапрограммирование](https://youtu.be/Bo9y4IxdNRY) - 10 Февраля - https://gdsc.community.dev/events/details/developer-student-clubs-national-technical-university-of-ukraine-kyiv-polytechnic-institute-natsionalnii-tekhnichnii-universitet-ukrayini-kiyivskii-politekhnichnii-institut-presents-tech-talk-multi-paradigm-and-meta-programming/ - [Odessa.js Architecture TechCorner](https://youtu.be/OARxqxb262Q) +- [Backend на Node.js и почему TypeScript может навредить - Anywhere Club](https://youtu.be/VmKl4kAGitc) +- [Асинхронный JS, однопоточный NodeJS, event loop и libuv - IT-Kamasutra](https://youtu.be/ND5HNHicACI) ## 2021 From bea82a1f942cb765838e4b625337e2f9dfa4cf17 Mon Sep 17 00:00:00 2001 From: Georgiy Filippov Date: Fri, 16 Sep 2022 23:09:23 +0500 Subject: [PATCH 151/308] fix: fix link to code examples in IntegrationTesting topic --- Courses/Fundamentals.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Courses/Fundamentals.md b/Courses/Fundamentals.md index fe7b32e..2ab7bc1 100644 --- a/Courses/Fundamentals.md +++ b/Courses/Fundamentals.md @@ -178,7 +178,7 @@ - Тестирование: https://github.com/HowProgrammingWorks/Testing - Юниттесты: https://github.com/HowProgrammingWorks/Unittesting - [Тестирование: системное и интеграционное тестирование](https://youtu.be/OuKu_6H_6gE) - - Примеры кода: https://github.com/HowProgrammingWorks/Unittesting + - Примеры кода: https://github.com/HowProgrammingWorks/IntegrationTesting - [Интроспекция и рефлексия в JavaScript](https://youtu.be/yvW1PjUVeM0) - Интроспекция: https://github.com/HowProgrammingWorks/Introspection - Рефлекция: https://github.com/HowProgrammingWorks/Reflect From dec7df2ce75d7bb08b91f2c7358a7231fd2fcb1b Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Tue, 20 Sep 2022 21:45:58 +0300 Subject: [PATCH 152/308] Create Roadmap.md --- Courses/Roadmap.md | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 Courses/Roadmap.md diff --git a/Courses/Roadmap.md b/Courses/Roadmap.md new file mode 100644 index 0000000..1541d63 --- /dev/null +++ b/Courses/Roadmap.md @@ -0,0 +1,22 @@ +# Roadmap + +![Roadmap (1)](https://user-images.githubusercontent.com/4405297/191325086-c273db69-5df6-4114-b520-bf6d3f9f4d9b.png) + +## Programming Fundamentals + +- [Основы JavaScript: облегченный курс для начинающих](https://www.youtube.com/playlist?list=PLpmhTzMVLuROAIey9vW3pyRSpHfknLssu) +- [Углубленный JavaScript: старый курс](./Fundamentals.md) + +## Multi-paradigm programming + +## Asynchronous programming + +- [Асинхронное программирование](./Asynchronous.md) +- [Таймкоды к курсу](./Asynchronous-timecodes.md) + +## OOP, GRASP, SOLOD, GoF + +## Node.js + +- [Технологический стек Node.js](./NodeJS.md) +- [Таймкоды к курсу](./NodeJS-timecodes.md) From ee9dcadbb240faea08f35ce4bbd295fdb2f46791 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Tue, 20 Sep 2022 23:31:07 +0300 Subject: [PATCH 153/308] Add OOP, GRASP, SOLOD, GoF --- Courses/Roadmap.md | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/Courses/Roadmap.md b/Courses/Roadmap.md index 1541d63..28b5ec4 100644 --- a/Courses/Roadmap.md +++ b/Courses/Roadmap.md @@ -7,8 +7,6 @@ - [Основы JavaScript: облегченный курс для начинающих](https://www.youtube.com/playlist?list=PLpmhTzMVLuROAIey9vW3pyRSpHfknLssu) - [Углубленный JavaScript: старый курс](./Fundamentals.md) -## Multi-paradigm programming - ## Asynchronous programming - [Асинхронное программирование](./Asynchronous.md) @@ -16,6 +14,14 @@ ## OOP, GRASP, SOLOD, GoF +- [Шаблоны проектирования](./Patterns.md) +- [Объектно-ориентированное программирование](./OOP.md) +- [GRASP принципы с адаптацией для JavaScript и Node.js](./GRASP.md) +- [Архитектура информационных систем](./Architecture.md) +- [Стратегия входа Node.js в корпоративный сектор](https://youtu.be/FLcBrP1KFYk) +- [Как Node.js разработчику подготовиться к проектам корпоративного уровня](https://youtu.be/DghzF_OmodY) +- [Как GRASP и SOLID защитят ваш Node.js код от мидлварей и протекания абстракций](https://youtu.be/p063fy3fHZM) + ## Node.js - [Технологический стек Node.js](./NodeJS.md) From ffffff2c0cf2739b07ed237f0fadea5d1e2bec3c Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Thu, 22 Sep 2022 19:01:30 +0300 Subject: [PATCH 154/308] Update Roadmap.md --- Courses/Roadmap.md | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/Courses/Roadmap.md b/Courses/Roadmap.md index 28b5ec4..b3a86ed 100644 --- a/Courses/Roadmap.md +++ b/Courses/Roadmap.md @@ -6,6 +6,8 @@ - [Основы JavaScript: облегченный курс для начинающих](https://www.youtube.com/playlist?list=PLpmhTzMVLuROAIey9vW3pyRSpHfknLssu) - [Углубленный JavaScript: старый курс](./Fundamentals.md) +- [MDN JavaScript Guide](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide) +- [Парадигмы программирования](Courses/Paradigms.md), [метапрограммирование и мультипарадигменное программирование](./Metaprogramming.md) ## Asynchronous programming @@ -26,3 +28,17 @@ - [Технологический стек Node.js](./NodeJS.md) - [Таймкоды к курсу](./NodeJS-timecodes.md) + +## Architecture and Enterprise Information Systems + +- [Проектирование сетевых протоколов и сервисов](Courses/Network.md) +- [Архитектура информационных систем](Courses/Architecture.md) +- [Проектирование баз данных](Courses/Databases.md) +- [Высоконагруженные и масштабируемые системы](Courses/Highload.md) +- [Безопасность информационных систем](Courses/Security.md) + +# Seminars, Interviews, Public talks + +- [Индекс докладов, интервью и других выступлений](./Talks.md) +- [Публичные собеседования](https://www.youtube.com/watch?v=tlBg-vwYpbs&list=PLHhi8ymDMrQZIC0Py5pekvdH49rkXH_MJ) +- Записи семинаров (скоро будет плейлист за все годы) From c81e2a692b7bdd38de0a1d6ad0e659605461788a Mon Sep 17 00:00:00 2001 From: "d.batmanov" Date: Thu, 22 Sep 2022 21:00:15 +0300 Subject: [PATCH 155/308] fix: paths to the pages in Roadmap.md --- Courses/Roadmap.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/Courses/Roadmap.md b/Courses/Roadmap.md index b3a86ed..39ca65a 100644 --- a/Courses/Roadmap.md +++ b/Courses/Roadmap.md @@ -7,7 +7,7 @@ - [Основы JavaScript: облегченный курс для начинающих](https://www.youtube.com/playlist?list=PLpmhTzMVLuROAIey9vW3pyRSpHfknLssu) - [Углубленный JavaScript: старый курс](./Fundamentals.md) - [MDN JavaScript Guide](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide) -- [Парадигмы программирования](Courses/Paradigms.md), [метапрограммирование и мультипарадигменное программирование](./Metaprogramming.md) +- [Парадигмы программирования](./Paradigms.md), [метапрограммирование и мультипарадигменное программирование](./Metaprogramming.md) ## Asynchronous programming @@ -31,11 +31,11 @@ ## Architecture and Enterprise Information Systems -- [Проектирование сетевых протоколов и сервисов](Courses/Network.md) -- [Архитектура информационных систем](Courses/Architecture.md) -- [Проектирование баз данных](Courses/Databases.md) -- [Высоконагруженные и масштабируемые системы](Courses/Highload.md) -- [Безопасность информационных систем](Courses/Security.md) +- [Проектирование сетевых протоколов и сервисов](./Network.md) +- [Архитектура информационных систем](./Architecture.md) +- [Проектирование баз данных](./Databases.md) +- [Высоконагруженные и масштабируемые системы](./Highload.md) +- [Безопасность информационных систем](./Security.md) # Seminars, Interviews, Public talks From b7d5bb8a296e158492ac4db6b987d9a761af68cc Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Thu, 22 Sep 2022 23:30:41 +0300 Subject: [PATCH 156/308] Fix spelling --- Courses/Roadmap.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Courses/Roadmap.md b/Courses/Roadmap.md index 39ca65a..5bac775 100644 --- a/Courses/Roadmap.md +++ b/Courses/Roadmap.md @@ -14,7 +14,7 @@ - [Асинхронное программирование](./Asynchronous.md) - [Таймкоды к курсу](./Asynchronous-timecodes.md) -## OOP, GRASP, SOLOD, GoF +## OOP, GRASP, SOLID, GoF - [Шаблоны проектирования](./Patterns.md) - [Объектно-ориентированное программирование](./OOP.md) From 753676f038565e27ef82625dea1629ae315fb12a Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Mon, 26 Sep 2022 20:34:38 +0300 Subject: [PATCH 157/308] Minimum readmap: first version --- Courses/Roadmap-min.md | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 Courses/Roadmap-min.md diff --git a/Courses/Roadmap-min.md b/Courses/Roadmap-min.md new file mode 100644 index 0000000..1583245 --- /dev/null +++ b/Courses/Roadmap-min.md @@ -0,0 +1,19 @@ +# Roadmap + +![Roadmap (1)](https://user-images.githubusercontent.com/4405297/192342829-b1bbded9-6620-44f0-8d7a-c49ccc8a58ff.png) + +## Programming Fundamentals + +- [Основы JavaScript: облегченный курс для начинающих](https://www.youtube.com/playlist?list=PLpmhTzMVLuROAIey9vW3pyRSpHfknLssu) +- [MDN JavaScript Guide](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide) + +## Asynchronous programming + +- [Асинхронное программирование](./Asynchronous.md) +- [Таймкоды к курсу](./Asynchronous-timecodes.md) + +## Node.js + +- [Технологический стек Node.js](./NodeJS.md) +- [Таймкоды к курсу](./NodeJS-timecodes.md) + From e6468d3f63a5cb741779d748ed467aa01f018208 Mon Sep 17 00:00:00 2001 From: Georgiy Filippov Date: Tue, 27 Sep 2022 02:18:29 +0500 Subject: [PATCH 158/308] fix: fix links in Introspection & Reflection topic --- Courses/Fundamentals.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Courses/Fundamentals.md b/Courses/Fundamentals.md index 2ab7bc1..a929ff6 100644 --- a/Courses/Fundamentals.md +++ b/Courses/Fundamentals.md @@ -181,5 +181,6 @@ - Примеры кода: https://github.com/HowProgrammingWorks/IntegrationTesting - [Интроспекция и рефлексия в JavaScript](https://youtu.be/yvW1PjUVeM0) - Интроспекция: https://github.com/HowProgrammingWorks/Introspection - - Рефлекция: https://github.com/HowProgrammingWorks/Reflect + - Reflect API: https://github.com/HowProgrammingWorks/Reflect + - Рефлексия: https://github.com/HowProgrammingWorks/Reflection - [Почему хорошее ИТ-образование невостребовано рыночком](https://youtu.be/nvIJE6xMpiI) From 1557eb7898e694e6b3f78dcc9f031630a84161b1 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Tue, 27 Sep 2022 10:59:17 +0300 Subject: [PATCH 159/308] Update Roadmap-min.md --- Courses/Roadmap-min.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Courses/Roadmap-min.md b/Courses/Roadmap-min.md index 1583245..5fd067b 100644 --- a/Courses/Roadmap-min.md +++ b/Courses/Roadmap-min.md @@ -1,6 +1,6 @@ # Roadmap -![Roadmap (1)](https://user-images.githubusercontent.com/4405297/192342829-b1bbded9-6620-44f0-8d7a-c49ccc8a58ff.png) +![Roadmap](https://user-images.githubusercontent.com/4405297/192468178-5f77ce2c-b536-468c-aad0-16aabd3abd27.png) ## Programming Fundamentals From c9508c03bd1757cae06ab754b0bb0b3c4c7835a1 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Tue, 27 Sep 2022 10:59:39 +0300 Subject: [PATCH 160/308] Update Roadmap.md --- Courses/Roadmap.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Courses/Roadmap.md b/Courses/Roadmap.md index 5bac775..bd0b96c 100644 --- a/Courses/Roadmap.md +++ b/Courses/Roadmap.md @@ -1,6 +1,6 @@ # Roadmap -![Roadmap (1)](https://user-images.githubusercontent.com/4405297/191325086-c273db69-5df6-4114-b520-bf6d3f9f4d9b.png) +![Roadmap](https://user-images.githubusercontent.com/4405297/192468392-0408ef42-362c-412b-97d3-3f325778aefb.png) ## Programming Fundamentals From f47e78c883cfeaec81f9914180254af65dcb3c62 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Tue, 27 Sep 2022 11:59:57 +0300 Subject: [PATCH 161/308] Update Roadmap.md --- Courses/Roadmap.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Courses/Roadmap.md b/Courses/Roadmap.md index bd0b96c..657a5f5 100644 --- a/Courses/Roadmap.md +++ b/Courses/Roadmap.md @@ -1,6 +1,6 @@ # Roadmap -![Roadmap](https://user-images.githubusercontent.com/4405297/192468392-0408ef42-362c-412b-97d3-3f325778aefb.png) +![Roadmap](https://user-images.githubusercontent.com/4405297/192482199-6aa77555-bb0d-4d72-81cd-de3cefcbc032.png) ## Programming Fundamentals From 896ada95a6f49f1155be1a454149dfea679bc0d5 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Tue, 27 Sep 2022 15:15:38 +0300 Subject: [PATCH 162/308] Update Roadmap.md --- Courses/Roadmap.md | 1 + 1 file changed, 1 insertion(+) diff --git a/Courses/Roadmap.md b/Courses/Roadmap.md index 657a5f5..fbb106f 100644 --- a/Courses/Roadmap.md +++ b/Courses/Roadmap.md @@ -28,6 +28,7 @@ - [Технологический стек Node.js](./NodeJS.md) - [Таймкоды к курсу](./NodeJS-timecodes.md) +- [Новый курс Node.js 2022-23](./NodeJS-2022-2023.md) ## Architecture and Enterprise Information Systems From 1308cf35460bc65390892dcc588c8361688b6256 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Tue, 27 Sep 2022 15:21:39 +0300 Subject: [PATCH 163/308] Update NodeJS-2022-2023.md --- Courses/NodeJS-2022-2023.md | 21 +++++++++------------ 1 file changed, 9 insertions(+), 12 deletions(-) diff --git a/Courses/NodeJS-2022-2023.md b/Courses/NodeJS-2022-2023.md index e618213..ac8cb0d 100644 --- a/Courses/NodeJS-2022-2023.md +++ b/Courses/NodeJS-2022-2023.md @@ -17,14 +17,6 @@ 👉 Patreon: Подписаться: https://www.patreon.com/tshemsedinov 👉 Видео обзор курса: https://youtu.be/UGGzSEfCjPU -## До начала - -Пока курс готовится, предлагаю посмотреть доклады: - -- [Байки про JavaScript и Node.js с Тимуром Шемсединовым](https://youtu.be/hoKKYKMadQs) -- [Стратегия входа Node.js в корпоративный сектор](https://youtu.be/FLcBrP1KFYk) -- [Node.js Middleware – никогда больше!](https://youtu.be/RS8x73z4csI) - ## Содержание - Node.js Введение в технологию, обзор API, основные идеи: за счет чего реализована экономия памяти, cpu, I/O @@ -55,9 +47,14 @@ # Доступ -- До 15 сентября можно подписаться на Patreon, план «Professional» на 1 год за $102 -- После 15 сентября уже на план «Expert» на 1 год за $204 -- Помесячная подписка на «Professional» и «Expert» не дает доступа -- Доступ к матераиалам курса остается и после завершения подписки +План «Expert» на 1 год за $204 на Patreon. +Помесячная подписка «Expert» не дает доступа. +Доступ к матераиалам курса остается и после завершения подписки. 👉 Подписаться: https://www.patreon.com/tshemsedinov + +## Дополнительные материалы + +- [Байки про JavaScript и Node.js с Тимуром Шемсединовым](https://youtu.be/hoKKYKMadQs) +- [Стратегия входа Node.js в корпоративный сектор](https://youtu.be/FLcBrP1KFYk) +- [Node.js Middleware – никогда больше!](https://youtu.be/RS8x73z4csI) From 81d1c1b0c8f42a326626287baa5719763c421b27 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Tue, 27 Sep 2022 15:23:40 +0300 Subject: [PATCH 164/308] Update Roadmap.md --- Courses/Roadmap.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Courses/Roadmap.md b/Courses/Roadmap.md index fbb106f..9670682 100644 --- a/Courses/Roadmap.md +++ b/Courses/Roadmap.md @@ -1,6 +1,6 @@ # Roadmap -![Roadmap](https://user-images.githubusercontent.com/4405297/192482199-6aa77555-bb0d-4d72-81cd-de3cefcbc032.png) +![Roadmap](https://user-images.githubusercontent.com/4405297/192525334-665c5969-4957-4cb8-884c-b31b440ba7ad.png) ## Programming Fundamentals From 12c601b6f11d495fc63b0826377cb6457427c875 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Tue, 27 Sep 2022 15:45:27 +0300 Subject: [PATCH 165/308] Update Roadmap.md --- Courses/Roadmap.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/Courses/Roadmap.md b/Courses/Roadmap.md index 9670682..2108995 100644 --- a/Courses/Roadmap.md +++ b/Courses/Roadmap.md @@ -9,6 +9,11 @@ - [MDN JavaScript Guide](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide) - [Парадигмы программирования](./Paradigms.md), [метапрограммирование и мультипарадигменное программирование](./Metaprogramming.md) +## Web and Frontend + +- [Курс по верстке: HTML, CSS от Евгения Андриканича](https://www.youtube.com/playlist?list=PLM6XATa8CAG4F9nAIYNS5oAiPotxwLFIr) +- [План развития фронтендера от Евгения Андриканича](https://miro.com/app/board/uXjVOeSIAPo=/) + ## Asynchronous programming - [Асинхронное программирование](./Asynchronous.md) From 16319113bada1580c7b26c25dd94bb2df9abe58b Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Tue, 27 Sep 2022 16:21:34 +0300 Subject: [PATCH 166/308] Create Specialties.md --- Courses/Specialties.md | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 Courses/Specialties.md diff --git a/Courses/Specialties.md b/Courses/Specialties.md new file mode 100644 index 0000000..91af143 --- /dev/null +++ b/Courses/Specialties.md @@ -0,0 +1,21 @@ +# Roadmap: варианты роадмапа для разных специальностей + +## Общая схема + +![Roadmap common)](https://user-images.githubusercontent.com/4405297/192536927-36a20aea-d19e-4a68-9087-fd9343027c76.png) + +## Роадмап для Backend + +![Roadmap Backend](https://user-images.githubusercontent.com/4405297/192537072-9ff87e51-52c2-4686-b401-5372e8a02814.png) + +## Роадмап для Frontend + +![Roadmap Frontend](https://user-images.githubusercontent.com/4405297/192537239-ce531a3c-b76a-4fc1-a598-a57099fbf794.png) + +## Роадмап для специалиста по доменной логике и бизнес-анализу + +![Roadmap Domain](https://user-images.githubusercontent.com/4405297/192537433-48228dfb-9c04-4e39-bb5c-8fead555e2ad.png) + +## Роадмап для лоукодера + +![Roadmap Lowcode](https://user-images.githubusercontent.com/4405297/192537488-52db0b54-964a-48ff-af84-c280a2130d36.png) From 3e02558a3add9f257026eda1d08b46be89284693 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Wed, 28 Sep 2022 00:38:32 +0300 Subject: [PATCH 167/308] Update Roadmap.md --- Courses/Roadmap.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Courses/Roadmap.md b/Courses/Roadmap.md index 2108995..245633e 100644 --- a/Courses/Roadmap.md +++ b/Courses/Roadmap.md @@ -2,6 +2,8 @@ ![Roadmap](https://user-images.githubusercontent.com/4405297/192525334-665c5969-4957-4cb8-884c-b31b440ba7ad.png) +Варианты роадмапа для разных специальностей: https://github.com/HowProgrammingWorks/Index/blob/master/Courses/Specialties.md + ## Programming Fundamentals - [Основы JavaScript: облегченный курс для начинающих](https://www.youtube.com/playlist?list=PLpmhTzMVLuROAIey9vW3pyRSpHfknLssu) From 9cb672b05ff8b10f6d91d857545253c43016136c Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Sat, 1 Oct 2022 22:20:35 +0300 Subject: [PATCH 168/308] Create Fundamentals-2022-2023.md --- Courses/Fundamentals-2022-2023.md | 270 ++++++++++++++++++++++++++++++ 1 file changed, 270 insertions(+) create mode 100644 Courses/Fundamentals-2022-2023.md diff --git a/Courses/Fundamentals-2022-2023.md b/Courses/Fundamentals-2022-2023.md new file mode 100644 index 0000000..0d11e81 --- /dev/null +++ b/Courses/Fundamentals-2022-2023.md @@ -0,0 +1,270 @@ +# Основы программирования 2022-2023 + +Модули [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) + +## Ссылки + +- Автор: https://github.com/tshemsedinov +- Канал в телеграме: https://t.me/HowProgrammingWorks +- Группа (чат): https://t.me/Programming_IP9X +- Задачи по курсу: https://github.com/HowProgrammingWorks/Index/blob/master/Practice/SEF1.ru.md +- Словарь терминов: https://github.com/HowProgrammingWorks/Dictionary + +## Модуль SEF1 + +Объем материала: 36 лекций (из них 4 вводные лекции, 8 лекций по языку JS, +18 лекций по фундаментальным понятиям теории программирования, 6 лекций по +инструментам и процессу разработки), 8 семинаров, 9 лабораторных работ, +47 репозиториев с примерами кода. + +### 1 неделя + +- [Введение в программирование](https://youtu.be/5Gt61EX6HZ4) + - Абстракция, модель, алгоритм, программа, синтаксис, повторное использование + - Значение, идентификатор, переменная и константа, литерал, присвоение + - Типы данных, скалярные, ссылочные и структурные типы + - Оператор и выражение, блок кода, функция, цикл, условие + - Слайды: https://www.slideshare.net/tshemsedinov/1-168855278 +- [Введение в программирование, продолжение](https://youtu.be/PzlLXQ3RaDs) + - Процедуры и функции, стек и куча, коллекции, модули, компоненты, библиотеки + - Языки и парадигмы программирования, технологические стеки + - Среда разработки и отладка кода +- Семинар: [Обсуждение плана и материалов курса](https://youtu.be/bQMTbRWrteU) +- [Настройка среды: Node.js, npm, git, eslint](https://youtu.be/hSyA7tcNaCE) + - Смотреть выборочно, что не понятно - пропускайте + - Задания: [Exercises.ru.md](https://github.com/HowProgrammingWorks/Introduction/blob/master/Exercises.ru.md) + +### 2 неделя + +- [Базовый синтаксис JavaScript](https://youtu.be/xJn3k1f4BiM) + - Абстракции и их переиспользование: https://github.com/HowProgrammingWorks/Reusable + - Основные конструкции: https://github.com/HowProgrammingWorks/Cheatsheet + - Типы данных: https://github.com/HowProgrammingWorks/DataTypes +- [Базовый синтаксис JavaScript, продолжение](https://youtu.be/qa-XleqA0JU) + - Типы данных: https://github.com/HowProgrammingWorks/DataTypes + - Условия: https://github.com/HowProgrammingWorks/Conditional +- Семинар: [Базовый синтаксис языка JavaScript](https://youtu.be/PGqjTXQe_qw) +- Семинар: [Автоматическая проверка лабораторных работ](https://youtu.be/M4KpG0LEAyA) + +### 3 неделя + +- [Функции, лямбды, контексты, замыкания в JavaScript](https://youtu.be/pn5myCmpV2U) + - Функции: https://github.com/HowProgrammingWorks/Function + - Замыкания: https://github.com/HowProgrammingWorks/Closure +- [Массивы, объекты, классы, прототипы в JavaScript](https://youtu.be/VBMGnAPfmsY) + - Структуры данных: https://github.com/HowProgrammingWorks/DataStructures + - Итерирование: https://github.com/HowProgrammingWorks/Iteration + - Прототипы: https://github.com/HowProgrammingWorks/Prototype +- [Языки программирования](https://youtu.be/enHA1CRkJe0) +- Семинар: [JavaScript, ответы на вопросы](https://youtu.be/wqkQ6eslyzY) + +### 4 неделя + +- [Частичное применение и каррирование в JavaScript](https://youtu.be/ND8KQ5xjk7o) + - Примеры кода: https://github.com/HowProgrammingWorks/PartialApplication +- [Функции высшего порядка, колбеки, события на JavaScript](https://youtu.be/1vqATwbGHnc) + - Функции высшего порядка: https://github.com/HowProgrammingWorks/HigherOrderFunction + - Функции обратного вызова: https://github.com/HowProgrammingWorks/Callbacks + +### 5 неделя + +- [История развития языков программирования](https://youtu.be/qqz0VSaNxuw) + - Слайды: https://www.slideshare.net/tshemsedinov/programming-languages-comparison-history-future +- [Парадигмы программирования](https://youtu.be/Yk1sxLVHfjs) +- [Работа со строками, шаблонами и юникодом в JavaScript](https://youtu.be/GcopcHQkA8M) + - Примеры кода: https://github.com/HowProgrammingWorks/String + +### 6 неделя + +- [Антипаттерны общие для всех парадигм](https://youtu.be/NMUsUiFokr4) + - Примеры кода: https://github.com/HowProgrammingWorks/Antipatterns/tree/master/JavaScript/01-Common +- [Консоль и командная строка в JavaScript и Node.js](https://youtu.be/5aSZyKi5BmE) + - Примеры кода: https://github.com/HowProgrammingWorks/CommandLine + +### 7 неделя + +- [Чеининг функций и объектов, обработка ошибок в JavaScript](https://youtu.be/PfuEfIiLX34) + - Чеининг: https://github.com/HowProgrammingWorks/Chaining + - Обработка ошибок: https://github.com/HowProgrammingWorks/Errors +- [Рекурсия: косвенная и хвостовая, стек, выход](https://youtu.be/W2skCjIgVKE) + - Примеры кода: https://github.com/HowProgrammingWorks/Recursion + +### 8 неделя + +- [Итерирование, циклы и итераторы в JavaScript](https://youtu.be/lq3b5_UGJas) + - Примеры кода: https://github.com/HowProgrammingWorks/Iteration +- [Антипаттерны процедурного программирования](https://youtu.be/cTv7V22mkwE) + - Примеры кода: https://github.com/HowProgrammingWorks/Antipatterns/tree/master/JavaScript/02-Procedural + +### 9 неделя + +- Семинар: [Ответы на вопросы по курсу "Основы программирования"](https://youtu.be/TY6nDW7aYys) +- [Таймеры, таймауты и EventEmitter](https://youtu.be/LK2jveAnRNg) + - Таймеры: https://github.com/HowProgrammingWorks/Timers + - EventEmitter: https://github.com/HowProgrammingWorks/EventEmitter + - События: https://github.com/metarhia/common/blob/master/lib/events.js +- Семинар: [Выполнение лабораторных работ по курсу](https://youtu.be/ikUOyFPzdJw) + +### 10 неделя + +- [Массивы в JavaScript: методы Array](https://youtu.be/D1kfYBkX9FE) + - Примеры кода: https://github.com/HowProgrammingWorks/Arrays +- [Коллекции, множества, хеш таблицы в JavaScript](https://youtu.be/hN0wsq5LNOc) + - Коллекции: https://github.com/HowProgrammingWorks/Collections + - Хеш таблицы: https://github.com/HowProgrammingWorks/Map + - Множества: https://github.com/HowProgrammingWorks/Set + +### 11 неделя + +- [Code Review: как это и зачем](https://youtu.be/EKL6NiIQ6ZU) + - Примеры: https://github.com/HowProgrammingWorks/CodeReview + - Семинар: [Code Review, ответы на вопросы](https://youtu.be/AgH4OAKbmkM) +- [Структуры данных: списки, стек, очередь, дэк в JavaScript](https://youtu.be/9KvA4hDDSjk) + - Списки: https://github.com/HowProgrammingWorks/LinkedList + - Очереди: https://github.com/HowProgrammingWorks/Dequeue + +### 12 неделя + +- [Сериализация и десериализация в JavaScript и Node.js](https://youtu.be/GtKPniOEzh8) + - Примеры кода: https://github.com/HowProgrammingWorks/Serialization +- [Рефакторинг: причины, цели, техники и процесс](https://youtu.be/z73wmpdweQ4) + - Примеры кода: https://github.com/HowProgrammingWorks/Refactoring + - Пример проекта: https://github.com/tshemsedinov/node-mysql-utilities +- Семинар: [Выбор направления в программировании](https://youtu.be/1gL627DQF4A) + +### 13 неделя + +- [Proxy и Symbol в JavaScript](https://youtu.be/UjZjSDyi9AM) + - Прокси: https://github.com/HowProgrammingWorks/Proxy + - Символы: https://github.com/HowProgrammingWorks/Symbol +- [Регулярные выражения и парсинг в JavaScript](https://youtu.be/-ef2E0ozxao) + - Примеры кода: https://github.com/HowProgrammingWorks/RegExp + +### 14 неделя + +- [Композиция: pipe, compose](https://youtu.be/xS9FicVrOTI) + - Примеры кода: https://github.com/HowProgrammingWorks/Composition +- [Примеси: mixin, extend, Object.assign, class λ-mixin](https://youtu.be/NZMrJ2adEyY) + - Тема class λ-mixin из этой лекции не обязательна для модуля SEF1 + - Примеры кода: https://github.com/HowProgrammingWorks/Mixin + - Старая версия лекции: https://youtu.be/2h9syXN5wO0 + +### 15 неделя + +- [Прототипное программирование и прототипное наследование](https://youtu.be/SzaXTW2qcJE) + - Примеры кода: https://github.com/HowProgrammingWorks/PrototypeChain + - Слайды: https://www.slideshare.net/tshemsedinov/prototype-programming-in-javascript +- [Мемоизация: memoize](https://youtu.be/H6S8QJo2Qxg) + - Примеры кода: https://github.com/HowProgrammingWorks/Memoization + - Старая версия лекции: https://youtu.be/2h9syXN5wO0 + +### 16 неделя + +- [Фабрики и пулы объектов в JavaScript, factorify, poolify](https://youtu.be/Ax_mSvadFp8) + - Фабрики: https://github.com/HowProgrammingWorks/Factory + - Пулы объектов: https://github.com/HowProgrammingWorks/Pool +- [Функции-обертки: wrappers](https://youtu.be/En7pWi2fSzs) + - Примеры кода: https://github.com/HowProgrammingWorks/Wrapper + - Старая версия лекции: https://youtu.be/2h9syXN5wO0 + +### 17 неделя + +- [Типизированные массивы в JavaScript](https://youtu.be/tTNcqxbxhfY) + - Примеры кода: https://github.com/HowProgrammingWorks/TypedArrays +- [Новое в JavaScript](https://youtu.be/fUjHLj8bq_Y) + - Не все в темы обязательны для модуля SEF1, что поймете, то и хорошо + - Слайды: https://www.slideshare.net/tshemsedinov/javascript-esnext-ecmascript-2020-es11-es10-es9-es8-es7-es6-es2020-es2019 + - Примеры кода: https://github.com/HowProgrammingWorks/ESNext + +## Модуль SEF2 + +### 18 неделя + +- [Объектно-ориентированное программирование](https://youtu.be/r4ReQlVtfgQ) +- [Структуры (struct) или записи (record)](https://youtu.be/Wb7o_kK4aH4) +- [Карта специальности инженер-программист](https://youtu.be/SE5aXH-yf0I) + +### 19 неделя + +- [Подход к изучению программирования](https://youtu.be/zMU4ir10DMg) +- Списки: односвязные, двусвязные, циклические, развернутые +- [Графы и запросы к графовым структурам данных](https://youtu.be/a0W0T8Yqw3s) + - Примеры кода: https://github.com/HowProgrammingWorks/Graph + +### 20 неделя + +- [Проекции и отображения наборов данных в JavaScript](https://youtu.be/lwJCq9inky8) + - Примеры кода: https://github.com/HowProgrammingWorks/Projection +- [Мономорфный и полиморфный код, инлайн-кэш, скрытые классы](https://youtu.be/9JUY3prnCQ4) + - Примеры кода: https://github.com/HowProgrammingWorks/Monomorphism + +### 21 неделя + +- [Функциональное программирование](https://youtu.be/0JxSs_GcvbQ) + - Смотрите обзорно, это не обязательная лекция, попробуйте уловить суть парадигмы + - Примеры кода: https://github.com/HowProgrammingWorks/FunctionalProgramming +- [Реактивное программирование](https://youtu.be/7MH8-qQc-48) + - Примеры кода: https://github.com/HowProgrammingWorks/ReactiveProgramming + +### 22 неделя + +- [Работа с файлами, буферами и файловыми потоками в Node.js](https://youtu.be/eQGBS15vUac) + - Файлы: https://github.com/HowProgrammingWorks/Files + - Потоки: https://github.com/HowProgrammingWorks/Streams + - Буферы: https://github.com/HowProgrammingWorks/Buffers +- Оценка сложности алгоритмов +- [Измерение производительности кода и оптимизация](https://youtu.be/sanq2X7Re8o) + - Примеры кода: https://github.com/HowProgrammingWorks/Benchmark + +### 23 неделя + +- [Асинхронное программирование на callback`ах](https://youtu.be/z8Hg6zgi3yQ) +- [Асинхронное программирование на promise`ах](https://youtu.be/RMl4r6s1Y8M) + - Примеры кода: https://github.com/HowProgrammingWorks/AsynchronousProgramming +- [Асинхронные функции, async/await, thenable, обработка ошибок](https://youtu.be/Jdf_tZuJbHI) + - Примеры кода: https://github.com/HowProgrammingWorks/AsyncAwait + +### 24 неделя + +- Неизменяемые структуры данных (immutable) +- Автоматное программирование: конечные автоматы (машины состояний) + +### 25 неделя + +- [Антипаттерны объектно-ориентированного программирования](https://youtu.be/9d5TG1VsLeU) + - https://github.com/HowProgrammingWorks/Antipatterns/tree/master/JavaScript/03-OOP +- [Шаблон Singleton (синглтон) в JavaScript](https://youtu.be/qdJ5yikZnfE) + - Примеры кода: https://github.com/HowProgrammingWorks/Singleton +- [Функциональные объекты, функторы и монады в JavaScript](https://youtu.be/3Z7f0Gi8pxw) + - Примеры кода: https://github.com/HowProgrammingWorks/Functor + +### 26 неделя + +- [Генераторы и асинхронные генераторы](https://youtu.be/kvNm9D32s8s) + - Генераторы: https://github.com/HowProgrammingWorks/Generator + - Асинхронные генераторы: https://github.com/HowProgrammingWorks/AsyncGenerator +- [Итераторы и асинхронные итераторы](https://youtu.be/rBGFlWpVpGs) + - Итераторы: https://github.com/HowProgrammingWorks/Iterator + - Асинхронные итераторы: https://github.com/HowProgrammingWorks/AsyncIterator + +### 27 неделя + +- [Перечислимый тип (enum) в JavaScript и TypeScript](https://youtu.be/BXiKebOIAGI) + - Примеры кода: https://github.com/HowProgrammingWorks/Enum +- [Дженерики и обобщенное программирование](https://youtu.be/r6W2z3DQhoI) + - Примеры кода: https://github.com/HowProgrammingWorks/Generics + +### 28 неделя + +- [Тестирование: юниттесты с примерами](https://youtu.be/CszugIag2TA) + - Тестирование: https://github.com/HowProgrammingWorks/Testing + - Юниттесты: https://github.com/HowProgrammingWorks/Unittesting +- [Тестирование: системное и интеграционное тестирование](https://youtu.be/OuKu_6H_6gE) + - Примеры кода: https://github.com/HowProgrammingWorks/Unittesting + +### 29 неделя + +- [Интроспекция и рефлексия в JavaScript](https://youtu.be/yvW1PjUVeM0) + - Интроспекция: https://github.com/HowProgrammingWorks/Introspection + - Рефлекция: https://github.com/HowProgrammingWorks/Reflect +- [Почему хорошее ИТ-образование невостребовано рыночком](https://youtu.be/nvIJE6xMpiI) From cdb3bbdd3c8271b014290ecf9a14b476aaf98147 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Mon, 3 Oct 2022 19:14:46 +0300 Subject: [PATCH 169/308] Update Fundamentals-2022-2023.md --- Courses/Fundamentals-2022-2023.md | 80 +++++++++++++------------------ 1 file changed, 34 insertions(+), 46 deletions(-) diff --git a/Courses/Fundamentals-2022-2023.md b/Courses/Fundamentals-2022-2023.md index 0d11e81..703dfdc 100644 --- a/Courses/Fundamentals-2022-2023.md +++ b/Courses/Fundamentals-2022-2023.md @@ -17,7 +17,7 @@ инструментам и процессу разработки), 8 семинаров, 9 лабораторных работ, 47 репозиториев с примерами кода. -### 1 неделя +### 1 неделя: 03 - 09 октября - [Введение в программирование](https://youtu.be/5Gt61EX6HZ4) - Абстракция, модель, алгоритм, программа, синтаксис, повторное использование @@ -34,7 +34,7 @@ - Смотреть выборочно, что не понятно - пропускайте - Задания: [Exercises.ru.md](https://github.com/HowProgrammingWorks/Introduction/blob/master/Exercises.ru.md) -### 2 неделя +### 2 неделя: 10-16 октября - [Базовый синтаксис JavaScript](https://youtu.be/xJn3k1f4BiM) - Абстракции и их переиспользование: https://github.com/HowProgrammingWorks/Reusable @@ -46,9 +46,9 @@ - Семинар: [Базовый синтаксис языка JavaScript](https://youtu.be/PGqjTXQe_qw) - Семинар: [Автоматическая проверка лабораторных работ](https://youtu.be/M4KpG0LEAyA) -### 3 неделя +### 3 неделя: 17-23 октября -- [Функции, лямбды, контексты, замыкания в JavaScript](https://youtu.be/pn5myCmpV2U) +- [Функции, стрелочные функции, контексты, замыкания в JavaScript](https://youtu.be/pn5myCmpV2U) - Функции: https://github.com/HowProgrammingWorks/Function - Замыкания: https://github.com/HowProgrammingWorks/Closure - [Массивы, объекты, классы, прототипы в JavaScript](https://youtu.be/VBMGnAPfmsY) @@ -58,7 +58,7 @@ - [Языки программирования](https://youtu.be/enHA1CRkJe0) - Семинар: [JavaScript, ответы на вопросы](https://youtu.be/wqkQ6eslyzY) -### 4 неделя +### 4 неделя: 24-30 октября - [Частичное применение и каррирование в JavaScript](https://youtu.be/ND8KQ5xjk7o) - Примеры кода: https://github.com/HowProgrammingWorks/PartialApplication @@ -66,47 +66,41 @@ - Функции высшего порядка: https://github.com/HowProgrammingWorks/HigherOrderFunction - Функции обратного вызова: https://github.com/HowProgrammingWorks/Callbacks -### 5 неделя +### 5 неделя: 31 октября - 06 ноября - [История развития языков программирования](https://youtu.be/qqz0VSaNxuw) - Слайды: https://www.slideshare.net/tshemsedinov/programming-languages-comparison-history-future - [Парадигмы программирования](https://youtu.be/Yk1sxLVHfjs) - [Работа со строками, шаблонами и юникодом в JavaScript](https://youtu.be/GcopcHQkA8M) - Примеры кода: https://github.com/HowProgrammingWorks/String - -### 6 неделя - - [Антипаттерны общие для всех парадигм](https://youtu.be/NMUsUiFokr4) - Примеры кода: https://github.com/HowProgrammingWorks/Antipatterns/tree/master/JavaScript/01-Common -- [Консоль и командная строка в JavaScript и Node.js](https://youtu.be/5aSZyKi5BmE) - - Примеры кода: https://github.com/HowProgrammingWorks/CommandLine -### 7 неделя +### 6 неделя: 07-13 ноября +- [Консоль и командная строка в JavaScript и Node.js](https://youtu.be/5aSZyKi5BmE) + - Примеры кода: https://github.com/HowProgrammingWorks/CommandLine - [Чеининг функций и объектов, обработка ошибок в JavaScript](https://youtu.be/PfuEfIiLX34) - Чеининг: https://github.com/HowProgrammingWorks/Chaining - Обработка ошибок: https://github.com/HowProgrammingWorks/Errors - [Рекурсия: косвенная и хвостовая, стек, выход](https://youtu.be/W2skCjIgVKE) - Примеры кода: https://github.com/HowProgrammingWorks/Recursion -### 8 неделя +### 7 неделя: 07-13 ноября - [Итерирование, циклы и итераторы в JavaScript](https://youtu.be/lq3b5_UGJas) - Примеры кода: https://github.com/HowProgrammingWorks/Iteration - [Антипаттерны процедурного программирования](https://youtu.be/cTv7V22mkwE) - Примеры кода: https://github.com/HowProgrammingWorks/Antipatterns/tree/master/JavaScript/02-Procedural +- Семинар: [Ответы на вопросы по курсу "Основы программирования"](https://youtu.be/TY6nDW7aYys) -### 9 неделя +### 8 неделя: 14-20 ноября -- Семинар: [Ответы на вопросы по курсу "Основы программирования"](https://youtu.be/TY6nDW7aYys) - [Таймеры, таймауты и EventEmitter](https://youtu.be/LK2jveAnRNg) - Таймеры: https://github.com/HowProgrammingWorks/Timers - EventEmitter: https://github.com/HowProgrammingWorks/EventEmitter - События: https://github.com/metarhia/common/blob/master/lib/events.js - Семинар: [Выполнение лабораторных работ по курсу](https://youtu.be/ikUOyFPzdJw) - -### 10 неделя - - [Массивы в JavaScript: методы Array](https://youtu.be/D1kfYBkX9FE) - Примеры кода: https://github.com/HowProgrammingWorks/Arrays - [Коллекции, множества, хеш таблицы в JavaScript](https://youtu.be/hN0wsq5LNOc) @@ -114,7 +108,7 @@ - Хеш таблицы: https://github.com/HowProgrammingWorks/Map - Множества: https://github.com/HowProgrammingWorks/Set -### 11 неделя +### 9 неделя: 21-27 ноября - [Code Review: как это и зачем](https://youtu.be/EKL6NiIQ6ZU) - Примеры: https://github.com/HowProgrammingWorks/CodeReview @@ -122,25 +116,22 @@ - [Структуры данных: списки, стек, очередь, дэк в JavaScript](https://youtu.be/9KvA4hDDSjk) - Списки: https://github.com/HowProgrammingWorks/LinkedList - Очереди: https://github.com/HowProgrammingWorks/Dequeue - -### 12 неделя - - [Сериализация и десериализация в JavaScript и Node.js](https://youtu.be/GtKPniOEzh8) - Примеры кода: https://github.com/HowProgrammingWorks/Serialization + +### 10 неделя: 28 ноября - 04 декабря + - [Рефакторинг: причины, цели, техники и процесс](https://youtu.be/z73wmpdweQ4) - Примеры кода: https://github.com/HowProgrammingWorks/Refactoring - Пример проекта: https://github.com/tshemsedinov/node-mysql-utilities - Семинар: [Выбор направления в программировании](https://youtu.be/1gL627DQF4A) - -### 13 неделя - - [Proxy и Symbol в JavaScript](https://youtu.be/UjZjSDyi9AM) - Прокси: https://github.com/HowProgrammingWorks/Proxy - Символы: https://github.com/HowProgrammingWorks/Symbol - [Регулярные выражения и парсинг в JavaScript](https://youtu.be/-ef2E0ozxao) - Примеры кода: https://github.com/HowProgrammingWorks/RegExp -### 14 неделя +### 11 неделя: 05-11 декабря - [Композиция: pipe, compose](https://youtu.be/xS9FicVrOTI) - Примеры кода: https://github.com/HowProgrammingWorks/Composition @@ -148,18 +139,15 @@ - Тема class λ-mixin из этой лекции не обязательна для модуля SEF1 - Примеры кода: https://github.com/HowProgrammingWorks/Mixin - Старая версия лекции: https://youtu.be/2h9syXN5wO0 - -### 15 неделя - -- [Прототипное программирование и прототипное наследование](https://youtu.be/SzaXTW2qcJE) - - Примеры кода: https://github.com/HowProgrammingWorks/PrototypeChain - - Слайды: https://www.slideshare.net/tshemsedinov/prototype-programming-in-javascript - [Мемоизация: memoize](https://youtu.be/H6S8QJo2Qxg) - Примеры кода: https://github.com/HowProgrammingWorks/Memoization - Старая версия лекции: https://youtu.be/2h9syXN5wO0 -### 16 неделя +### 12 неделя: 12-18 декабря +- [Прототипное программирование и прототипное наследование](https://youtu.be/SzaXTW2qcJE) + - Примеры кода: https://github.com/HowProgrammingWorks/PrototypeChain + - Слайды: https://www.slideshare.net/tshemsedinov/prototype-programming-in-javascript - [Фабрики и пулы объектов в JavaScript, factorify, poolify](https://youtu.be/Ax_mSvadFp8) - Фабрики: https://github.com/HowProgrammingWorks/Factory - Пулы объектов: https://github.com/HowProgrammingWorks/Pool @@ -167,7 +155,7 @@ - Примеры кода: https://github.com/HowProgrammingWorks/Wrapper - Старая версия лекции: https://youtu.be/2h9syXN5wO0 -### 17 неделя +### 13 неделя: 19-25 декабря - [Типизированные массивы в JavaScript](https://youtu.be/tTNcqxbxhfY) - Примеры кода: https://github.com/HowProgrammingWorks/TypedArrays @@ -178,27 +166,27 @@ ## Модуль SEF2 -### 18 неделя +### 14 неделя - [Объектно-ориентированное программирование](https://youtu.be/r4ReQlVtfgQ) - [Структуры (struct) или записи (record)](https://youtu.be/Wb7o_kK4aH4) - [Карта специальности инженер-программист](https://youtu.be/SE5aXH-yf0I) -### 19 неделя +### 15 неделя - [Подход к изучению программирования](https://youtu.be/zMU4ir10DMg) - Списки: односвязные, двусвязные, циклические, развернутые - [Графы и запросы к графовым структурам данных](https://youtu.be/a0W0T8Yqw3s) - Примеры кода: https://github.com/HowProgrammingWorks/Graph -### 20 неделя +### 16 неделя - [Проекции и отображения наборов данных в JavaScript](https://youtu.be/lwJCq9inky8) - Примеры кода: https://github.com/HowProgrammingWorks/Projection - [Мономорфный и полиморфный код, инлайн-кэш, скрытые классы](https://youtu.be/9JUY3prnCQ4) - Примеры кода: https://github.com/HowProgrammingWorks/Monomorphism -### 21 неделя +### 17 неделя - [Функциональное программирование](https://youtu.be/0JxSs_GcvbQ) - Смотрите обзорно, это не обязательная лекция, попробуйте уловить суть парадигмы @@ -206,7 +194,7 @@ - [Реактивное программирование](https://youtu.be/7MH8-qQc-48) - Примеры кода: https://github.com/HowProgrammingWorks/ReactiveProgramming -### 22 неделя +### 18 неделя - [Работа с файлами, буферами и файловыми потоками в Node.js](https://youtu.be/eQGBS15vUac) - Файлы: https://github.com/HowProgrammingWorks/Files @@ -216,7 +204,7 @@ - [Измерение производительности кода и оптимизация](https://youtu.be/sanq2X7Re8o) - Примеры кода: https://github.com/HowProgrammingWorks/Benchmark -### 23 неделя +### 19 неделя - [Асинхронное программирование на callback`ах](https://youtu.be/z8Hg6zgi3yQ) - [Асинхронное программирование на promise`ах](https://youtu.be/RMl4r6s1Y8M) @@ -224,12 +212,12 @@ - [Асинхронные функции, async/await, thenable, обработка ошибок](https://youtu.be/Jdf_tZuJbHI) - Примеры кода: https://github.com/HowProgrammingWorks/AsyncAwait -### 24 неделя +### 20 неделя - Неизменяемые структуры данных (immutable) - Автоматное программирование: конечные автоматы (машины состояний) -### 25 неделя +### 21 неделя - [Антипаттерны объектно-ориентированного программирования](https://youtu.be/9d5TG1VsLeU) - https://github.com/HowProgrammingWorks/Antipatterns/tree/master/JavaScript/03-OOP @@ -238,7 +226,7 @@ - [Функциональные объекты, функторы и монады в JavaScript](https://youtu.be/3Z7f0Gi8pxw) - Примеры кода: https://github.com/HowProgrammingWorks/Functor -### 26 неделя +### 22 неделя - [Генераторы и асинхронные генераторы](https://youtu.be/kvNm9D32s8s) - Генераторы: https://github.com/HowProgrammingWorks/Generator @@ -247,14 +235,14 @@ - Итераторы: https://github.com/HowProgrammingWorks/Iterator - Асинхронные итераторы: https://github.com/HowProgrammingWorks/AsyncIterator -### 27 неделя +### 23 неделя - [Перечислимый тип (enum) в JavaScript и TypeScript](https://youtu.be/BXiKebOIAGI) - Примеры кода: https://github.com/HowProgrammingWorks/Enum - [Дженерики и обобщенное программирование](https://youtu.be/r6W2z3DQhoI) - Примеры кода: https://github.com/HowProgrammingWorks/Generics -### 28 неделя +### 24 неделя - [Тестирование: юниттесты с примерами](https://youtu.be/CszugIag2TA) - Тестирование: https://github.com/HowProgrammingWorks/Testing @@ -262,7 +250,7 @@ - [Тестирование: системное и интеграционное тестирование](https://youtu.be/OuKu_6H_6gE) - Примеры кода: https://github.com/HowProgrammingWorks/Unittesting -### 29 неделя +### 25 неделя - [Интроспекция и рефлексия в JavaScript](https://youtu.be/yvW1PjUVeM0) - Интроспекция: https://github.com/HowProgrammingWorks/Introspection From 63c1622cd824b1ec6dd950292e23731ff176337b Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Tue, 4 Oct 2022 14:35:15 +0300 Subject: [PATCH 170/308] Update README.md --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 2798237..5b4ce39 100644 --- a/README.md +++ b/README.md @@ -11,6 +11,7 @@ - [Введение и обзор знаний](Courses/Introduction.md) а так же [семинары](Courses/Seminars.md) +- [Основы программирования для начинающих](https://www.youtube.com/watch?v=2DM5I2CI4gY&list=PLpmhTzMVLuROAIey9vW3pyRSpHfknLssu) - [Основы программирования, модули (1 год обучения)](Courses/Fundamentals.md) (готовность 95%) [(с таймкодами)](Courses/Fundamentals-timecodes.md) - [Программирование (2 год обучения)](Courses/Advanced.md) From 8c5fc9cdff7965cfd12c66f9444d5c8692c04948 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Tue, 4 Oct 2022 14:36:51 +0300 Subject: [PATCH 171/308] Remove percentage --- README.md | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 5b4ce39..ef59b00 100644 --- a/README.md +++ b/README.md @@ -9,13 +9,10 @@ ## Базовый курс инженерии программного обеспечения -- [Введение и обзор знаний](Courses/Introduction.md) - а так же [семинары](Courses/Seminars.md) +- [Введение и обзор знаний](Courses/Introduction.md) а так же [семинары](Courses/Seminars.md) - [Основы программирования для начинающих](https://www.youtube.com/watch?v=2DM5I2CI4gY&list=PLpmhTzMVLuROAIey9vW3pyRSpHfknLssu) -- [Основы программирования, модули (1 год обучения)](Courses/Fundamentals.md) - (готовность 95%) [(с таймкодами)](Courses/Fundamentals-timecodes.md) +- [Основы программирования, модули (1 год обучения)](Courses/Fundamentals.md) [(с таймкодами)](Courses/Fundamentals-timecodes.md) - [Программирование (2 год обучения)](Courses/Advanced.md) - (готовность 65%) ## Отдельные специализированные курсы From c5affa6b12080283b20a9687c16b0af1768c3fef Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Mon, 17 Oct 2022 10:04:25 +0200 Subject: [PATCH 172/308] Update license --- LICENSE | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/LICENSE b/LICENSE index c12d3d8..f24dbdd 100644 --- a/LICENSE +++ b/LICENSE @@ -1,6 +1,6 @@ MIT License -Copyright (c) 2017-2020 How.Programming.Works contributors +Copyright (c) 2017-2022 How.Programming.Works contributors Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal From 808ae0af7026aa8d179c52503f397b55d9f006e1 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Thu, 27 Oct 2022 23:22:41 +0300 Subject: [PATCH 173/308] Add Ukrinform video --- Courses/Talks.md | 1 + 1 file changed, 1 insertion(+) diff --git a/Courses/Talks.md b/Courses/Talks.md index 004a3db..608a0bc 100644 --- a/Courses/Talks.md +++ b/Courses/Talks.md @@ -13,6 +13,7 @@ - [Odessa.js Architecture TechCorner](https://youtu.be/OARxqxb262Q) - [Backend на Node.js и почему TypeScript может навредить - Anywhere Club](https://youtu.be/VmKl4kAGitc) - [Асинхронный JS, однопоточный NodeJS, event loop и libuv - IT-Kamasutra](https://youtu.be/ND5HNHicACI) +- [Укрінформ: Презентація METATECH](https://youtu.be/Oz8E0mbdDec) ## 2021 From e0b10fc2092508c61437328d1b1800b107658ccc Mon Sep 17 00:00:00 2001 From: mibal_ua <9mohapx9@gmail.com> Date: Thu, 3 Nov 2022 09:07:42 +0100 Subject: [PATCH 174/308] Grouping 6th and 7th weeks and fix weeks enumeration --- Courses/Fundamentals-2022-2023.md | 39 ++++++++++++++----------------- 1 file changed, 18 insertions(+), 21 deletions(-) diff --git a/Courses/Fundamentals-2022-2023.md b/Courses/Fundamentals-2022-2023.md index 703dfdc..cef5454 100644 --- a/Courses/Fundamentals-2022-2023.md +++ b/Courses/Fundamentals-2022-2023.md @@ -85,16 +85,13 @@ - Обработка ошибок: https://github.com/HowProgrammingWorks/Errors - [Рекурсия: косвенная и хвостовая, стек, выход](https://youtu.be/W2skCjIgVKE) - Примеры кода: https://github.com/HowProgrammingWorks/Recursion - -### 7 неделя: 07-13 ноября - - [Итерирование, циклы и итераторы в JavaScript](https://youtu.be/lq3b5_UGJas) - Примеры кода: https://github.com/HowProgrammingWorks/Iteration - [Антипаттерны процедурного программирования](https://youtu.be/cTv7V22mkwE) - Примеры кода: https://github.com/HowProgrammingWorks/Antipatterns/tree/master/JavaScript/02-Procedural - Семинар: [Ответы на вопросы по курсу "Основы программирования"](https://youtu.be/TY6nDW7aYys) -### 8 неделя: 14-20 ноября +### 7 неделя: 14-20 ноября - [Таймеры, таймауты и EventEmitter](https://youtu.be/LK2jveAnRNg) - Таймеры: https://github.com/HowProgrammingWorks/Timers @@ -108,7 +105,7 @@ - Хеш таблицы: https://github.com/HowProgrammingWorks/Map - Множества: https://github.com/HowProgrammingWorks/Set -### 9 неделя: 21-27 ноября +### 8 неделя: 21-27 ноября - [Code Review: как это и зачем](https://youtu.be/EKL6NiIQ6ZU) - Примеры: https://github.com/HowProgrammingWorks/CodeReview @@ -119,7 +116,7 @@ - [Сериализация и десериализация в JavaScript и Node.js](https://youtu.be/GtKPniOEzh8) - Примеры кода: https://github.com/HowProgrammingWorks/Serialization -### 10 неделя: 28 ноября - 04 декабря +### 9 неделя: 28 ноября - 04 декабря - [Рефакторинг: причины, цели, техники и процесс](https://youtu.be/z73wmpdweQ4) - Примеры кода: https://github.com/HowProgrammingWorks/Refactoring @@ -131,7 +128,7 @@ - [Регулярные выражения и парсинг в JavaScript](https://youtu.be/-ef2E0ozxao) - Примеры кода: https://github.com/HowProgrammingWorks/RegExp -### 11 неделя: 05-11 декабря +### 10 неделя: 05-11 декабря - [Композиция: pipe, compose](https://youtu.be/xS9FicVrOTI) - Примеры кода: https://github.com/HowProgrammingWorks/Composition @@ -143,7 +140,7 @@ - Примеры кода: https://github.com/HowProgrammingWorks/Memoization - Старая версия лекции: https://youtu.be/2h9syXN5wO0 -### 12 неделя: 12-18 декабря +### 11 неделя: 12-18 декабря - [Прототипное программирование и прототипное наследование](https://youtu.be/SzaXTW2qcJE) - Примеры кода: https://github.com/HowProgrammingWorks/PrototypeChain @@ -155,7 +152,7 @@ - Примеры кода: https://github.com/HowProgrammingWorks/Wrapper - Старая версия лекции: https://youtu.be/2h9syXN5wO0 -### 13 неделя: 19-25 декабря +### 12 неделя: 19-25 декабря - [Типизированные массивы в JavaScript](https://youtu.be/tTNcqxbxhfY) - Примеры кода: https://github.com/HowProgrammingWorks/TypedArrays @@ -166,27 +163,27 @@ ## Модуль SEF2 -### 14 неделя +### 13 неделя - [Объектно-ориентированное программирование](https://youtu.be/r4ReQlVtfgQ) - [Структуры (struct) или записи (record)](https://youtu.be/Wb7o_kK4aH4) - [Карта специальности инженер-программист](https://youtu.be/SE5aXH-yf0I) -### 15 неделя +### 14 неделя - [Подход к изучению программирования](https://youtu.be/zMU4ir10DMg) - Списки: односвязные, двусвязные, циклические, развернутые - [Графы и запросы к графовым структурам данных](https://youtu.be/a0W0T8Yqw3s) - Примеры кода: https://github.com/HowProgrammingWorks/Graph -### 16 неделя +### 15 неделя - [Проекции и отображения наборов данных в JavaScript](https://youtu.be/lwJCq9inky8) - Примеры кода: https://github.com/HowProgrammingWorks/Projection - [Мономорфный и полиморфный код, инлайн-кэш, скрытые классы](https://youtu.be/9JUY3prnCQ4) - Примеры кода: https://github.com/HowProgrammingWorks/Monomorphism -### 17 неделя +### 16 неделя - [Функциональное программирование](https://youtu.be/0JxSs_GcvbQ) - Смотрите обзорно, это не обязательная лекция, попробуйте уловить суть парадигмы @@ -194,7 +191,7 @@ - [Реактивное программирование](https://youtu.be/7MH8-qQc-48) - Примеры кода: https://github.com/HowProgrammingWorks/ReactiveProgramming -### 18 неделя +### 17 неделя - [Работа с файлами, буферами и файловыми потоками в Node.js](https://youtu.be/eQGBS15vUac) - Файлы: https://github.com/HowProgrammingWorks/Files @@ -204,7 +201,7 @@ - [Измерение производительности кода и оптимизация](https://youtu.be/sanq2X7Re8o) - Примеры кода: https://github.com/HowProgrammingWorks/Benchmark -### 19 неделя +### 18 неделя - [Асинхронное программирование на callback`ах](https://youtu.be/z8Hg6zgi3yQ) - [Асинхронное программирование на promise`ах](https://youtu.be/RMl4r6s1Y8M) @@ -212,12 +209,12 @@ - [Асинхронные функции, async/await, thenable, обработка ошибок](https://youtu.be/Jdf_tZuJbHI) - Примеры кода: https://github.com/HowProgrammingWorks/AsyncAwait -### 20 неделя +### 19 неделя - Неизменяемые структуры данных (immutable) - Автоматное программирование: конечные автоматы (машины состояний) -### 21 неделя +### 20 неделя - [Антипаттерны объектно-ориентированного программирования](https://youtu.be/9d5TG1VsLeU) - https://github.com/HowProgrammingWorks/Antipatterns/tree/master/JavaScript/03-OOP @@ -226,7 +223,7 @@ - [Функциональные объекты, функторы и монады в JavaScript](https://youtu.be/3Z7f0Gi8pxw) - Примеры кода: https://github.com/HowProgrammingWorks/Functor -### 22 неделя +### 21 неделя - [Генераторы и асинхронные генераторы](https://youtu.be/kvNm9D32s8s) - Генераторы: https://github.com/HowProgrammingWorks/Generator @@ -235,14 +232,14 @@ - Итераторы: https://github.com/HowProgrammingWorks/Iterator - Асинхронные итераторы: https://github.com/HowProgrammingWorks/AsyncIterator -### 23 неделя +### 22 неделя - [Перечислимый тип (enum) в JavaScript и TypeScript](https://youtu.be/BXiKebOIAGI) - Примеры кода: https://github.com/HowProgrammingWorks/Enum - [Дженерики и обобщенное программирование](https://youtu.be/r6W2z3DQhoI) - Примеры кода: https://github.com/HowProgrammingWorks/Generics -### 24 неделя +### 23 неделя - [Тестирование: юниттесты с примерами](https://youtu.be/CszugIag2TA) - Тестирование: https://github.com/HowProgrammingWorks/Testing @@ -250,7 +247,7 @@ - [Тестирование: системное и интеграционное тестирование](https://youtu.be/OuKu_6H_6gE) - Примеры кода: https://github.com/HowProgrammingWorks/Unittesting -### 25 неделя +### 24 неделя - [Интроспекция и рефлексия в JavaScript](https://youtu.be/yvW1PjUVeM0) - Интроспекция: https://github.com/HowProgrammingWorks/Introspection From 9d9617a086ee71434f5fedc31e22176962d44759 Mon Sep 17 00:00:00 2001 From: Anton Telichenko Date: Thu, 1 Dec 2022 21:30:37 +0100 Subject: [PATCH 175/308] Update WeeklyCall.md PR-URL: https://github.com/HowProgrammingWorks/Index/pull/90 --- Archive/WeeklyCall.md | 268 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 268 insertions(+) diff --git a/Archive/WeeklyCall.md b/Archive/WeeklyCall.md index 578d37e..bf74e99 100644 --- a/Archive/WeeklyCall.md +++ b/Archive/WeeklyCall.md @@ -908,3 +908,271 @@ 1:15:27 контрибьют за ревью 1:18:20 системы на базе metarhia, контакты с компаниями ``` + +## Выпуск №62 (2022-07-02) +``` +1:00 работа локальных переменных в metarhia модулях +4:45 о публикации тестов модулей в npm +8:00 работа над filestorage +11:20 созвон с желающими поконтрибьютить +14:47 custom router для rest api в metarhia +28:09 об условиях работы в разных странах +36:21 о политике, коррупции, технологиях в гос. секторе, кредитах +56:00 методологии разработки, user-guide для написания продуктов на базе metarhia +``` + +## Выпуск №63 (2022-07-09) +``` +0:00 план звонка +3:27 баги в impress +10:00 распределение новых контрибьюторов +18:10 impress start fix +``` + +## Выпуск №64 (2022-07-16) +``` +0:00 как продвигается разработка? +5:04 issues для сообщества +8:06 о методологии построения прикладных решений, metasql +26:08 система реактивности, metacalc +49:50 multitenancy, добавление новых тенантов +58:47 о новоприбывших фронтендерах и задачах +1:05:50 metacalc issue +1:29:00 трансформация markdown в html +1:31:07 summercamp схемы, metasql, доки +1:34:47 разработка metasql +1:42:16 миграции, бекапы +1:50:13 metasql, registry +``` + +## Выпуск №65 (2022-07-23) +``` +0:00 план звонка +1:16 metacom PR's, review, conflicts resolving +1:16:50 летняя школа, функциональное программирование, js +``` + +## Выпуск №66 (2022-07-30) +``` +0:00 что было сделано / планы +2:10 metacom PR +13:45 о SummerCamp и помощи новичкам +1:06:47 metautil unflatObject +``` + +## Выпуск №67 (2022-08-06) +``` +0:00 планы на колл +1:10 таймкоды +9:10 impress +30:30 metautil unflat +``` + +## Выпуск №68 (2022-08-13) +``` +0:00 impress code review +``` + +## Выпуск №69 (2022-08-20) +``` +0:20 браузер баз данных +20:00 metactos +23:32 metaschema +1:05:09 metaschool, задания +1:31:00 новая версия impress, ошибка при emit через ws +1:33:15 scheduler пример +``` + +## Выпуск №70 (2022-09-03) +``` +0:40 openApi или клиентские обертки вокруг серверных api +5:50 roadmap по курсу +7:15 книжка по Metaprogramming, об архитектуре +29:15 как побороть прокрастинацию? +29:50 будет-ли создание крудов с авторизацией? +34:35 разница между cluster, child process и working threads +56:05 о vscode и electron +1:02:35 как сделать проект, связанный с 1C на node и docker +1:13:00 для чего не используется node +1:27:15 миграции для metarhia +1:41:25 проектирование приложения на node, s3, minio +1:48:30 вопросы по курсу +1:52:35 swayer +1:55:00 будут-ли async/performance-hooks в курсе? +``` + +## Выпуск №71 (2022-09-10) +``` +2:08 где можно найти задачи из курса js для начинающих? +8:36 для написания проекта на metarhia нужно пройти курс по node.js? +17:35 о записанных лекциях +22:45 о написании промисов вручную +25:30 есть ли example для metarhia? +38:50 как в общем будет построен курс? ( + о менторстве) +45:05 когда будет продвигаться разработка метархии, о функциональном программировании +1:12:31 metarhia - альтернатива фреймворкам на бекенде? +1:25:28 про уязвимость JSON.parse +1:38:30 o typescript, пропоузале типов в js +``` + +## Выпуск №72 (2022-09-17) +``` +4:00 о микро/макро-тасках в event-loop +13:14 как писать типы на node.js +17:55 модификаторы доступа, decorators +19:55 как донести мысль о самодостаточности чистой ноды +21:50 как смотреть лекции +28:20 про однопоточность +33:55 разница в пакетных менеджерах +37:06 аудит пакетов +39:52 про изолирование +46:12 почему в node.js течет память +59:15 когда каким способом изолировать? +1:05:55 способы профилирования приложения +1:13:13 что использовать для брокера сообщений +1:21:30 как понять сколько тредов создавать +1:30:20 треды в го +1:32:00 есть ли связь между сложностью языков и задачами, которые они решают +1:37:57 о децентрализации, blockchain +1:39:05 orm, работа с бд, sql +1:51:00 о mongo +1:57:20 о ролях в компании +2:05:20 паттерны, структуры данных +2:09:43 когда следующий урок +2:13:05 задавать вопросы в гитхаб +``` + +## Выпуск №73 (2022-09-24) +``` +2:35 перезапись глобальных объектов в node.js +11:48 обработка ошибок в курсе +18:38 зачем делать свою систему модульности, почему не подходит require или import? +26:33 где смотреть лекции? +31:46 как понять когда лучше написать вручную, а когда заимпортить библиотеку? +44:20 как обрабатывать ошибки, которые происходят при запросе в бд +51:58 о зависимостях на гитхаб +1:01:25 что нужно знать о реализации авторизации пользователя? oAuth0 +1:04:40 что Тимур порекомендовал бы для приложения для подкастов? +1:06:53 что можно почитать об архитектуре/СТО +1:22:24 как Тимур представляет обязанности техлида? +1:32:02 вопрос про кастомный console.log на проекте +1:40:18 как Тимур относится к flow-based архитектуре (node-RED) +1:58:10 ООП, Егор Бугаенко и Elegant Objects +``` + +## Выпуск №74 (2022-10-01) +``` +1:28 e2e testing +7:47 http протокол вместо ws для api +12:49 преобразование файла в строку при require +16:53 почему выполнение файла через контекст лучше чем с require? +28:01 почему изменение прототипа это плохо, а изменение контекста - хорошо +33:42 как часто нужно использовать sandbox? +43:52 о структурах данных, как стыковать структуры данных с js? +1:05:15 для чего нужны metaschema? +1:27:27 с точки зрения доменной логики метасхемы это сущность или агрегат? +1:33:00 куда класть вспомогательные данные к схеме? +1:34:50 как лучше определять где делать ограничения, в бд или бизнес-логике? +1:39:00 почему Тимур не любит монгу? о postgres и mongo +``` + +## Выпуск №75 (2022-10-08) +``` +1:20 сфера применения node.js +2:58 адаптер для routing при подключении fastify +5:12 новая лекция, в каких случаях нужно смотреть? +8:54 загрузка 100 файлов одновременно на node +17:05 как сохранять контекст пользователя при работе с микросервисамм +24:10 транзакция в monobank +29:35 сервер с нагрузкой 2млн запросов в минуту +44:24 shared array, структуры данных, redis +1:12:30 о развитии метархии, миграциях +1:24:20 метархия на фронтенде +``` + +## Выпуск №76 (2022-10-15) +``` +0:44 объяснение sandbox, load.js +35:41 JWT, cookie, sessions +52:20 есть ли возможность работать в компаниях, связанных с Тимуром, на стеке metarhia? +53:57 на какие задачи нужны кадры сейчас, менторство +57:12 реализация локализации сервисов под разные страны +1:40:30 как устроена архитектура хранения сообщений в телеграмме? +1:50:54 почему Тимур запретил-бы switch в прикладном коде +2:08:54 будут ли в курсе примеры тестов? +``` + +## Выпуск №77 (2022-10-22) +``` +0:25 о системных интеграторах метархии, web sammit +7:36 подключение fastify +16:56 о web sammit и системных интеграторах +30:38 у метархии есть клиенты? о метархии, контрибьютерах +42:22 метод close в logger +49:40 почему приложение не падает, если не передавать console.log в sandbox, но вызывать его +1:02:00 проблема с scaffolding +1:14:37 static types в metaschema +1:40:04 гайд по структуре метархии, документация +``` + +## Выпуск №78 (2022-10-29) +``` +0:00 o METATECH +5:37 как в METATECH будут работать заключенные? +11:16 циклический require +22:00 будет ли запрос от компаний для написания приложений на node.js вместе с blockchain +28:57 как подключать фреймворки (дз node), scaffolding +41:51 как прокидывать ошибку при реализации DI на замыканиях, обработка ошибок +52:38 вынос аутентификации на сторонний сервис +1:04:52 как организовать общение между микросервисами? +1:11:48 зачем в node.js внедрили async hooks? +1:22:32 pm2 на тестовом сервере показывает растущий heap каждую секунду +1:29:35 как поддерживать процесс в node.js +1:34:02 для чего используется Promise.race()? +1:38:46 когда по плану следующий урок? +1:40:20 кто продвигает node.js в англоязычном коммьюнити? +1:41:37 как обращаться из одного сервиса к другому в метархии? +1:49:08 документация по metaschema с Лионом +``` + +## Выпуск №79 (2022-11-05) +``` +0:00 новости о web summit, курс по node.js +17:22 гайд по метархии +24:25 концепция воркеров cloudFlare и процедуры +29:20 amazon сервисы, лямды +1:00:21 замыкание, работа с объектом в разных функциях +1:07:30 разворачивание игровых серверов на node.js +1:26:22 вопрос по курсу node.js: почему раньше id передавали в имени роута, а теперь в body? +1:30:00 что выбрать? knex/sql/кастомный квери билдер +1:35:18 sql. работа с сущностью, пример с пользователем, oop +``` + +## Выпуск №80 (2022-11-12) +``` +0:00 новости (менторство, курсы, библиотеки, курс по node.js) +5:05 курс по структурам данных +55:12 как совместить мессенджер с прикладным проектом +1:28:06 проблема с чатом на impress и воркерах +1:44:17 код ревью DDD +1:53:50 кто разбирается в метриках перформанса node +``` + +## Выпуск №81 (2022-11-19) +``` +0:00 новости (программа менторинга, перевыпуск библиотек) +14:44 есть ли действующий пример работы event bus? +35:43 noroutine balancing code review +1:07:00 технические проблемы metarhia +1:23:48 пример приложения на базе курса по node +``` + +## Выпуск №82 (2022-11-26) +``` +0:00 таблица менторов, новые курсы +9:21 как проходит менторинг +37:30 будут ли лекции по курсу node.js +49:27 если node.js проигрывает по базовым функциям условному go, зачем им заниматься +1:22:47 code review balancing +1:35:48 почему js а не с++, нейросети +``` From 117989d20a27e5fde11ba90fcb10ee15b828c212 Mon Sep 17 00:00:00 2001 From: Tima Gixe <60817786+timagixe@users.noreply.github.com> Date: Thu, 5 Jan 2023 13:55:20 +0200 Subject: [PATCH 176/308] Update Fundamentals-timecodes.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Add time codes for `Настройка среды: Node.js, npm, git, eslint` lecture --- Courses/Fundamentals-timecodes.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/Courses/Fundamentals-timecodes.md b/Courses/Fundamentals-timecodes.md index 5bccb6d..c46ec77 100644 --- a/Courses/Fundamentals-timecodes.md +++ b/Courses/Fundamentals-timecodes.md @@ -110,6 +110,16 @@ ## [Настройка среды: Node.js, npm, git, eslint](https://youtu.be/hSyA7tcNaCE) +- [0:25 - какую IDE использует Тимур](https://www.youtube.com/watch?v=hSyA7tcNaCE&t=25s) +- [1:30 - каким IDE могут пользоваться студенты](https://www.youtube.com/watch?v=hSyA7tcNaCE&t=90s) +- [1:50 - репозиторий со списком необходимых инструментов](https://www.youtube.com/watch?v=hSyA7tcNaCE&t=110s) +- [11:23 - о работе с репозиторием в Github](https://www.youtube.com/watch?v=hSyA7tcNaCE&t=683s) +- [14:05 - о системе Continuous Integration (CI)](https://www.youtube.com/watch?v=hSyA7tcNaCE&t=845s) +- [17:08 - обзор Pull Requests в репозитории](https://www.youtube.com/watch?v=hSyA7tcNaCE&t=1028s) +- [25:40 - процесс мерджа Pull Request](https://www.youtube.com/watch?v=hSyA7tcNaCE&t=1540s) +- [38:25 - публикация новой версии пакета](https://www.youtube.com/watch?v=hSyA7tcNaCE&t=2305s) +- [55:35 - как использовать библиотеку в своем пакете](https://www.youtube.com/watch?v=hSyA7tcNaCE&t=3335s) +- [1:14:40 - обзор репозиториев Тимура, Metarhia и HowProgrammingWorks](https://www.youtube.com/watch?v=hSyA7tcNaCE&t=4480s) ## [Базовый синтаксис JavaScript](https://youtu.be/xJn3k1f4BiM) From 4e5aa167b140fe14984e55932704429cd323853d Mon Sep 17 00:00:00 2001 From: Tima Gixe <60817786+timagixe@users.noreply.github.com> Date: Thu, 5 Jan 2023 14:01:52 +0200 Subject: [PATCH 177/308] Update LICENSE --- LICENSE | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/LICENSE b/LICENSE index f24dbdd..30ab0df 100644 --- a/LICENSE +++ b/LICENSE @@ -1,6 +1,6 @@ MIT License -Copyright (c) 2017-2022 How.Programming.Works contributors +Copyright (c) 2017-2023 How.Programming.Works contributors Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal From 68e24a9a98f995dfbbacc0dccde0cd0a0f4d1b50 Mon Sep 17 00:00:00 2001 From: Tima Gixe Date: Mon, 9 Jan 2023 10:54:12 +0200 Subject: [PATCH 178/308] Add time codes to basic syntax seminar --- Courses/Fundamentals-timecodes.md | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/Courses/Fundamentals-timecodes.md b/Courses/Fundamentals-timecodes.md index c46ec77..8f56e55 100644 --- a/Courses/Fundamentals-timecodes.md +++ b/Courses/Fundamentals-timecodes.md @@ -171,6 +171,19 @@ ## [Семинар: Базовый синтаксис языка JavaScript](https://youtu.be/PGqjTXQe_qw) +- [0:45 - разница между обычными функциями и стрелочными](https://www.youtube.com/watch?v=PGqjTXQe_qw&t=45s) +- [10:35 - рассматриваем отличия на примерах кода](https://www.youtube.com/watch?v=PGqjTXQe_qw&t=635s) +- [16:15 - поле функционального типа и метод](https://www.youtube.com/watch?v=PGqjTXQe_qw&t=975s) +- [18:15 - хеш-таблицы](https://www.youtube.com/watch?v=PGqjTXQe_qw&t=1095s) +- [19:55 - поднятие (hoisting)](https://www.youtube.com/watch?v=PGqjTXQe_qw&t=1195s) +- [21:45 - среда разработки Тимура](https://www.youtube.com/watch?v=PGqjTXQe_qw&t=1305s) +- [23:30 - что такое говнокод](https://www.youtube.com/watch?v=PGqjTXQe_qw&t=1410s) +- [24:32 - декомпозиция](https://www.youtube.com/watch?v=PGqjTXQe_qw&t=1472s) +- [26:35 - что такое Node.JS](https://www.youtube.com/watch?v=PGqjTXQe_qw&t=1595s) +- [29:54 - скорость программ и как мы её повышаем](https://www.youtube.com/watch?v=PGqjTXQe_qw&t=1794s) +- [30:34 - приложения для мобилок на Node.JS](https://www.youtube.com/watch?v=PGqjTXQe_qw&t=1834s) +- [32:25 - для чего нужен 'use strict'](https://www.youtube.com/watch?v=PGqjTXQe_qw&t=1945s) +- [33:35 - сервер в интернете для запуска Node.JS](https://www.youtube.com/watch?v=PGqjTXQe_qw&t=2015s) ## [Семинар: автоматическая проверка лабораторных работ](https://youtu.be/M4KpG0LEAyA) From f946ba078e1cc2e60052f2b3f0e1995a665660c9 Mon Sep 17 00:00:00 2001 From: Tima Gixe Date: Sun, 15 Jan 2023 20:20:21 +0200 Subject: [PATCH 179/308] Add time codes for auto lab checking workshop --- Courses/Fundamentals-timecodes.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/Courses/Fundamentals-timecodes.md b/Courses/Fundamentals-timecodes.md index 8f56e55..445f444 100644 --- a/Courses/Fundamentals-timecodes.md +++ b/Courses/Fundamentals-timecodes.md @@ -187,6 +187,16 @@ ## [Семинар: автоматическая проверка лабораторных работ](https://youtu.be/M4KpG0LEAyA) +- [00:01 - об программе для авто проверки тестов](https://www.youtube.com/watch?v=M4KpG0LEAyA&t=1s) +- [01:22 - как выполнять задания (лабораторные)](https://www.youtube.com/watch?v=M4KpG0LEAyA&t=82s) +- [08:44 - как запускать тесты](https://www.youtube.com/watch?v=M4KpG0LEAyA&t=524s) +- [09:30 - пример выполнения задания 2-by-value.js](https://www.youtube.com/watch?v=M4KpG0LEAyA&t=570s) +- [15:05 - как выглядят автоматические тесты](https://www.youtube.com/watch?v=M4KpG0LEAyA&t=905s) +- [18:35 - пример выполнения задания 3-by-reference.js](https://www.youtube.com/watch?v=M4KpG0LEAyA&t=1115s) +- [28:20 - как отправлять готовые задания](https://www.youtube.com/watch?v=M4KpG0LEAyA&t=1700s) +- [37:55 - обзор задания и тестов задания 4-count-types.js](https://www.youtube.com/watch?v=M4KpG0LEAyA&t=2275s) +- [42:20 - об eslint](https://www.youtube.com/watch?v=M4KpG0LEAyA&t=2540s) + ## [Введение в программирование (2 часть)](https://youtu.be/PzlLXQ3RaDs) From c91c28c4968a7f1ca66e29450eb80d6e08dd4c22 Mon Sep 17 00:00:00 2001 From: ivgrr <65467060+ivgrr@users.noreply.github.com> Date: Sat, 28 Jan 2023 18:44:42 +0200 Subject: [PATCH 180/308] Fix typo --- Practice/SEF2.ru.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Practice/SEF2.ru.md b/Practice/SEF2.ru.md index 84ea2cd..4c0529f 100644 --- a/Practice/SEF2.ru.md +++ b/Practice/SEF2.ru.md @@ -73,4 +73,4 @@ https://github.com/HowProgrammingWorks/Projection ## Регистрация тем - Нужно заполнить форму: https://forms.gle/u7v7nUFxamcgJ2aQ6 -- И дать мне права на редозиторий, мой аккаунт: https://github.com/tshemsedinov +- И дать мне права на репозиторий, мой аккаунт: https://github.com/tshemsedinov From e574067e5e58c406f441199ed629c821c5f32de0 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Thu, 2 Feb 2023 18:09:05 +0200 Subject: [PATCH 181/308] Add latest live --- Courses/Talks.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/Courses/Talks.md b/Courses/Talks.md index 608a0bc..15f89e3 100644 --- a/Courses/Talks.md +++ b/Courses/Talks.md @@ -2,6 +2,10 @@ ## Future talks +## 2023 + +- [Стрим про образование программиста с Тимуром Шемсединовым и Сергеем Немчинским](https://www.youtube.com/live/pcwccVihgeg?feature=share) + ## 2022 - [Интервью на 5 часов на канале ITBEARD](https://youtu.be/0xtEdIy2j88) From 6af448137d7f2b7d55dd13a776540942ab375822 Mon Sep 17 00:00:00 2001 From: Anton Telichenko Date: Sun, 5 Feb 2023 20:08:43 +0100 Subject: [PATCH 182/308] Weekly call index update PR-URL: https://github.com/HowProgrammingWorks/Index/pull/97 --- Archive/WeeklyCall.md | 107 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 107 insertions(+) diff --git a/Archive/WeeklyCall.md b/Archive/WeeklyCall.md index bf74e99..da6ca21 100644 --- a/Archive/WeeklyCall.md +++ b/Archive/WeeklyCall.md @@ -1176,3 +1176,110 @@ 1:22:47 code review balancing 1:35:48 почему js а не с++, нейросети ``` + +## Выпуск №83 (2022-12-03) +``` +1:06 metarhia docs +14:23 повышение уровня безопастности для доступа к административному кода +20:04 система модульности +1:16:50 пример metaschema +1:39:35 документация +1:45:22 что происходит с сессией при заходе клиента с двух табов +``` + +## Выпуск №84 (2022-12-17) +``` +0:00 новости +3:56 смысл присутствия metadomain +7:00 о 2fa с qr-кодом и аутентификации +16:42 есть ли лекция про функции и процедуры для postgresql +23:35 стримы по решению задач от Georg, менторство +31:40 как записывать видео? +54:53 применение npm workspaces +1:03:14 что делать с двумя коннекшенами одного юзера? +``` + +## Выпуск №85 (2022-12-24) +``` +0:00 новости и обновления +5:04 баг metacom с socket connection +9:00 работа над системой модульности +11:49 переезд, starlink +15:56 front для приложения +21:46 курс по ноде, запись лекций +25:00 будет ли курс соответствовать плану? +30:44 https и node.js, балансировка, go +35:02 работает ли луковичная архитектура для магазинов, складов, банков? о DDD, 1C +1:27:17 iFOBS, банки, безопасность +1:36:09 что будет включать курс по безопасности в node? +1:38:47 если отказаться от зависимостей, можем ли мы при помощи перегрузки require повысить безопасность +1:47:43 с кем работал Тимур +1:48:25 перегрузка лоадера или require, отсутствие sandbox'а, система модульности +1:54:09 есть ли open source проект на rust +``` + +## Выпуск №86 (2022-12-31) +``` +0:00 новости, release metacom +10:52 How programming works для 1 курса? о курсах +36:34 вы в своих проектах используете только metarhia? +39:00 проблемы при переходе от фреймворка к formData +53:20 PR: механизмы тестирования прикладного кода +1:05:03 mermaid +1:14:15 как сделать приложение, совместимое с обновлением npm пакетов +1:26:21 почему нельзя разделить коммуникационные паттерны (socket) и request/response (http)? agnostic подход в metarhia +``` + +## Выпуск №87 (2023-01-07) +``` +0:00 новости +6:48 стримы от Georga +11:36 Leon code review +53:36 кто-то пользовался Sentry? +53:56 Leon code review +``` + +## Выпуск №88 (2023-01-14) +``` +0:00 новости, о курсе +11:50 Georg о новой библиотеке shiftjs (https://github.com/oldbros/shiftjs), стримах, докладах +18:07 дискуссии в metatech university +23:20 issue в репозитории программы курса +26:38 issue о создании ветки с состоянием проекта на момент публикации видео к нему +45:57 о экзаменах +48:27 использование принципа преднамеренных ошибок +1:14:04 скрипты, 3 запроса для клиента +1:18:04 конфликт настроек eslint и prettier +1:25:09 вопрос о mermaid и github markdown +1:33:35 вопрос об семантически различных вариантах описания одинаковой структуры связей предметной области в ERD +1:50:43 предложение анонса для созвонов +``` + +## Выпуск №89 (2023-01-21) +``` +0:00 новости +1:10 proxy, scaffold, пример учебного проекта +15:06 о экзаменах и студентах +24:42 знают ли студенты о курсах? генерация крудов, форм, однообразный код +49:05 несовпадение контрактов методов API между клиентом и сервером в примере d-messenger +56:05 quick start документация для метархии (доклад на metarhia fwdays) +57:38 стрим Георга, prisma +``` + +## Выпуск №90 (2023-01-28) +``` +0:00 новости, B-OS, написание фронтенда проектов +37:24 когда будет готово приложение? +40:42 есть ли тз для фронтенд части учебного проекта? +43:09 есть ли пример написания на fastify? +1:01:25 работа с метаданными +``` + +## Выпуск №91 (2023-02-04) +``` +0:00 новости +2:05 как работает metacom? +2:55 презентация +9:40 как работает metacom? +28:38 презентация +``` From 8d615cb227e0052c59b9e7549adcb205cc642ffc Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Tue, 7 Feb 2023 03:02:21 +0200 Subject: [PATCH 183/308] New NodeJS intro --- Courses/NodeJS.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Courses/NodeJS.md b/Courses/NodeJS.md index b05ff46..cee282c 100644 --- a/Courses/NodeJS.md +++ b/Courses/NodeJS.md @@ -30,7 +30,7 @@ ## Введение и основы -- [Node.js Введение в технологию](https://youtu.be/WBcHgaoHh1k) +- [Node.js Введение в технологию](https://youtu.be/mRvzgBGLVyM) - [Node.js in 2021: новости платформы и вызовы на следующее десятилетие](https://youtu.be/nnB7ADYso8s) - Слайды: https://www2.slideshare.net/tshemsedinov/nodejs-in-2021 - Семинар с ответами на вопросы и обсуждением: https://youtu.be/zYRDhxj0zhQ From 97d088f435038c38d2e58993a98e3bfa712cc9c2 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Tue, 28 Feb 2023 21:17:17 +0200 Subject: [PATCH 184/308] Create Projects.md --- Practice/Projects.md | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 Practice/Projects.md diff --git a/Practice/Projects.md b/Practice/Projects.md new file mode 100644 index 0000000..1334667 --- /dev/null +++ b/Practice/Projects.md @@ -0,0 +1,25 @@ +# Projects for 1st year + +- Abstractions (class, prototype, function, functor, module, pattern, on other complex abstraction) for: + - Data structures: specific lists, trees, or graphs with methods for traversal and iteration + - Algorythms: implementation of known math or phisics calculations, data manipulations, etc. + - Access to I/O devices, operation system, other applications, timers and different sensors +- Syntax sugar for any programming language to express domain processes in expessive and simple way +- DSL (Domain specific language) runtime, interpreter, compiler, linter, style fixers and tools +- Games: web, console, mobile of any kind but with good patterns, project structure and code style +- Parsing tools for any formal or informal language +- Crawler and search engines +- Examples, tests and documentation for lectures, frameworks, and libraries +- Fixes, contribution, features, and bug-reproduction reports for open-soouce projects +- System programming + - Data access abstractions, repository implementation, query builder for persistent queue, column or relational db + - Network protocols for message passing, rpc, api, rest or stateful, + - Reactive abstarctions + - Asynchronous programming abstractions + - Parallel programming abstractions +- Applied applications, their subsystems, or separate modules + - CRM, ERP, SCM, Warehouse systems, + - Medical information systems + - Production automation and management information systems + - Any other custom-made information systems +- Your own project From 9b651e832aa888a9625755760642a681a31c66a8 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Tue, 28 Feb 2023 21:21:41 +0200 Subject: [PATCH 185/308] Spelling --- Practice/Projects.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/Practice/Projects.md b/Practice/Projects.md index 1334667..7f471eb 100644 --- a/Practice/Projects.md +++ b/Practice/Projects.md @@ -1,20 +1,20 @@ -# Projects for 1st year +# Practical projects - Abstractions (class, prototype, function, functor, module, pattern, on other complex abstraction) for: - Data structures: specific lists, trees, or graphs with methods for traversal and iteration - - Algorythms: implementation of known math or phisics calculations, data manipulations, etc. + - Algorithms: implementation of known math or physics calculations, data manipulations, etc. - Access to I/O devices, operation system, other applications, timers and different sensors -- Syntax sugar for any programming language to express domain processes in expessive and simple way +- Syntax sugar for any programming language to express domain processes in expressive and simple way - DSL (Domain specific language) runtime, interpreter, compiler, linter, style fixers and tools - Games: web, console, mobile of any kind but with good patterns, project structure and code style - Parsing tools for any formal or informal language - Crawler and search engines - Examples, tests and documentation for lectures, frameworks, and libraries -- Fixes, contribution, features, and bug-reproduction reports for open-soouce projects +- Fixes, contribution, features, and bug-reproduction reports for open-source projects - System programming - Data access abstractions, repository implementation, query builder for persistent queue, column or relational db - Network protocols for message passing, rpc, api, rest or stateful, - - Reactive abstarctions + - Reactive abstractions - Asynchronous programming abstractions - Parallel programming abstractions - Applied applications, their subsystems, or separate modules From 9897b98034efa5b23b4dfea92de63644b18d8e8d Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Sat, 15 Apr 2023 18:01:42 +0300 Subject: [PATCH 186/308] Add talk: ChatGPT for Js and Node --- Courses/Talks.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Courses/Talks.md b/Courses/Talks.md index 15f89e3..f54d8e3 100644 --- a/Courses/Talks.md +++ b/Courses/Talks.md @@ -5,6 +5,9 @@ ## 2023 - [Стрим про образование программиста с Тимуром Шемсединовым и Сергеем Немчинским](https://www.youtube.com/live/pcwccVihgeg?feature=share) +- [Применение ChatGPT в оптимизации JavaScript для NodeJS](https://youtu.be/Ebrzqj8cGUY) + +https://youtu.be/Ebrzqj8cGUY #softwareengineering #backend #frontend #programming #ai #gpt4 #gpt3 #refactoring #optimization ## 2022 From b49c0fca91819b91345111c7de62ffae51ec184c Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Sat, 15 Apr 2023 18:03:33 +0300 Subject: [PATCH 187/308] Fix prev post --- Courses/Talks.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/Courses/Talks.md b/Courses/Talks.md index f54d8e3..96950ed 100644 --- a/Courses/Talks.md +++ b/Courses/Talks.md @@ -7,8 +7,6 @@ - [Стрим про образование программиста с Тимуром Шемсединовым и Сергеем Немчинским](https://www.youtube.com/live/pcwccVihgeg?feature=share) - [Применение ChatGPT в оптимизации JavaScript для NodeJS](https://youtu.be/Ebrzqj8cGUY) -https://youtu.be/Ebrzqj8cGUY #softwareengineering #backend #frontend #programming #ai #gpt4 #gpt3 #refactoring #optimization - ## 2022 - [Интервью на 5 часов на канале ITBEARD](https://youtu.be/0xtEdIy2j88) From 4dad79727070ab089f799f4c1e5fe365a4c7aeb8 Mon Sep 17 00:00:00 2001 From: Georgiy Filippov Date: Mon, 17 Apr 2023 04:02:43 +0500 Subject: [PATCH 188/308] add links to code examples --- Courses/OOP.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/Courses/OOP.md b/Courses/OOP.md index cfcc8aa..2af9252 100644 --- a/Courses/OOP.md +++ b/Courses/OOP.md @@ -2,8 +2,14 @@ - [Объектно-ориентированное программирование](https://youtu.be/r4ReQlVtfgQ) - [Структуры (struct) или записи (record)](https://youtu.be/Wb7o_kK4aH4) + - Примеры кода: https://github.com/HowProgrammingWorks/Struct - [ООП: построение абстракций, инкапсуляция и сокрытие](https://youtu.be/sQwF6-bYeDM) + - Принципы ООП: https://github.com/HowProgrammingWorks/ObjectOrientedProgramming + - Сокрытие: https://github.com/HowProgrammingWorks/InformationHiding - [ООП: наследование и полиморфизм](https://youtu.be/8OuzIAuMfjw) + - Принципы ООП: https://github.com/HowProgrammingWorks/ObjectOrientedProgramming + - Наследование: https://github.com/HowProgrammingWorks/Inheritance + - Полиморфизм: https://github.com/HowProgrammingWorks/Polymorphism - [Have Objects Failed? Или что не так с ООП?](https://youtu.be/4yO5OS0vPSw) - [Дженерики и обобщенное программирование](https://youtu.be/r6W2z3DQhoI) - Примеры кода: https://github.com/HowProgrammingWorks/Generics From 89bd33a12e2907c3a9077f93a491ca6be9b0474e Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Fri, 21 Apr 2023 15:52:48 +0300 Subject: [PATCH 189/308] Add lowcode conf --- Courses/Talks.md | 1 + 1 file changed, 1 insertion(+) diff --git a/Courses/Talks.md b/Courses/Talks.md index 96950ed..40851a3 100644 --- a/Courses/Talks.md +++ b/Courses/Talks.md @@ -5,6 +5,7 @@ ## 2023 - [Стрим про образование программиста с Тимуром Шемсединовым и Сергеем Немчинским](https://www.youtube.com/live/pcwccVihgeg?feature=share) +- [«No Code, No Conference» 2023-03-16](https://flowmates.org/) - [Применение ChatGPT в оптимизации JavaScript для NodeJS](https://youtu.be/Ebrzqj8cGUY) ## 2022 From a927ef4fd046efef402340ea1ee705a15e0f8612 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Fri, 21 Apr 2023 15:57:35 +0300 Subject: [PATCH 190/308] Add Web Summit --- Courses/Talks.md | 1 + 1 file changed, 1 insertion(+) diff --git a/Courses/Talks.md b/Courses/Talks.md index 40851a3..92973b5 100644 --- a/Courses/Talks.md +++ b/Courses/Talks.md @@ -20,6 +20,7 @@ - [Backend на Node.js и почему TypeScript может навредить - Anywhere Club](https://youtu.be/VmKl4kAGitc) - [Асинхронный JS, однопоточный NodeJS, event loop и libuv - IT-Kamasutra](https://youtu.be/ND5HNHicACI) - [Укрінформ: Презентація METATECH](https://youtu.be/Oz8E0mbdDec) +- [Web Summit 2022: QOTEQ lowcode platform presentation](https://websummit.com/) ## 2021 From d80c95dfe7f9e5c7ffc69fe91808c09e634f04e8 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Fri, 28 Apr 2023 15:37:24 +0300 Subject: [PATCH 191/308] Create Proposal-2023.md --- Courses/Proposal-2023.md | 79 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 79 insertions(+) create mode 100644 Courses/Proposal-2023.md diff --git a/Courses/Proposal-2023.md b/Courses/Proposal-2023.md new file mode 100644 index 0000000..46a8962 --- /dev/null +++ b/Courses/Proposal-2023.md @@ -0,0 +1,79 @@ +## Мультипарадигмене програмування + +1. Імперативний та декларативний підхід +2. Структуроване та неструктуроване програмування +3. Процедурне програмування +4. Функціональне програмування +5. Програмування на базі подій та реактивне програмування +6. Об'єктно-орієнтоване програмування +7. Прототипне програмування +8. Узагальнене програмування +9. Автоматне програмування, скінченні автомати (машини станів) +10. Спеціалізовані мови для предметних областей (DSL) +11. Програмування на потоках даних +12. Метапрограмування +13. Динамічна інтерпретація метамоделі +14. Поєднання декількох парадигм у одному коді + +## Основи програмування + +1. Базові концепції, синтаксис та семантика мов C, C++, JavaScript та Python +2. Стан застосунку, структури даних та колекції +3. Підходи до роботи зі станом: stateful and stateless +4. Структури даних: стек, черга, дек, дерева та графи +5. Проекції та відображення наборів даних +6. Оцінка обчислювальної складності +7. Що таке технологічний стек +8. Середовище розробки та налагодження коду +9. Ітерування: рекурсія, ітератори та генератори +10. Структура додатку: файли, модулі, компоненти +11. Об'єкт, прототип та клас +12. Часткове застосування та каррування, композиція функцій +13. Чейнінг для методів та функцій, домішки (mixins), мемоізація, фабрики +14. Залежності та бібліотеки +15. Антипатерни, ревью коду та рефакторинг +16. Угоди та стандарти +17. Тестування +18. Події, таймери +19. Регулярні вирази +20. Інтроспекція та рефлексія, серіалізація та десеріалізація + +## Асинхронне програмування + +1. Паралельне програмування, загальна пам'ять та примітиви синхронізації +2. Асинхронні примітиви: Thenable, Promise, Future, Deferred +3. Співпрограми, горутіни, async/await +4. Адаптери між асинхронними контрактами +6. Асинхронна та паралельна сумісність +7. Підхід до передачі повідомлень та модель акторів +8. Асинхронна черга та асинхронні колекції +9. Lock-free структури даних +10. I/O(введення-виведення) та файли + +## Архітектура програмних систем + +1. Декомпозиція, іменування та зв'язування +2. Взаємодія між компонентами ПЗ +3. Зв'язування через простори імен +4. Взаємодія за допомогою викликів та колбеків +5. Взаємодія за допомогою подій та повідомлень +6. Інтерфейси, протоколи та контракти +7. Цибулева (onion) або багатошарова архітектура +8. Аналіз ризиків, слабкі сторони, нефункціональні вимоги +9. Координація та корегування процесу +10. Безперервна інтеграція та розгортання +11. Багатоаспектна оптимізація +12. Основи паралельних обчислень +12. Бази даних та постійне зберігання +13. Ключ-значення та інші абстрактні структури даних +14. Реляційна модель даних та ER-діаграми +15. Безсхемні, об'єктно- та документо-орієнтовані бази даних +16. Ієрархічна модель даних та графові бази даних +17. Колонкові бази даних та in-memory бази даних +18. Розподілені системи +19. Міжпроцесна взаємодія +20. Безконфліктні репліковані типи даних (CRDT) +21. Узгодженість, доступність та розподіленість +22. Стратегії вирішення конфліктів +23. Протоколи консенсусу +24. CQRS, EventSourcing From a7f6927afaab6ebaa83fa5ee1a483295e8a24674 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Sun, 30 Apr 2023 13:39:23 +0300 Subject: [PATCH 192/308] Update Proposal-2023.md --- Courses/Proposal-2023.md | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/Courses/Proposal-2023.md b/Courses/Proposal-2023.md index 46a8962..219a1c8 100644 --- a/Courses/Proposal-2023.md +++ b/Courses/Proposal-2023.md @@ -77,3 +77,30 @@ 22. Стратегії вирішення конфліктів 23. Протоколи консенсусу 24. CQRS, EventSourcing + +## Корпоративні інформаційні системи + +1. Введення в технологію Node.js, огляд вбудованого API +2. Асинхронне програмування в Node.js +3. Робота з файлами, буферами та файловими потоками в Node.js +4. Спостереження за файловою системою в Node.js +5. Структура та архітектура додатків +6. Модулі ECMA, Common.js, Module API +7. Модулі та пакети, використання package.json та node_modules +8. Межпроцессное взаємодія (IPC), воркер-треди +9. Domain Driven Design для інформаційних систем +10. Фреймворк-агностік та транспорт-агностік підходи +11: Ізоляція коду та впровадження залежностей +12: Застосування принципів GRASP, SOLID, DDD, LoD, GoF +13. Розробка серверів додатків і API на Node.js +14. Клієнт-сервер на Node.js, протоколи TCP і UDP, DNS +15. Сервер HTTP, HTTP/2, HTTP/3: маршрутизація, кластер, IP sticky +16. HTTP сесії і файли cookie, fetch API, WebSocket, віддача статики +17. Скаффолдинг для API, UI та даних +18. Високонавантажені та розподілені додатки +19. Робота з базами даних, слой доступу до даних, курсор, транзакція +20. Memory leaks в Node.js і JavaScript, збірка мусора і профілювання +21. Atomics, SharedArrayBuffer, worker_threads в Node.js +22. Безпека, надійність та управління інфраструктурою +23. Тулінг: логування, graceful shutdown, CI, CD +24. Serverless хмари (FaaS) та ізоляція контекстів From 3d36c57eae3d0dc5d2fbde0f54089acf528dd68f Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Mon, 8 May 2023 01:53:16 +0300 Subject: [PATCH 193/308] Update Proposal-2023.md --- Courses/Proposal-2023.md | 69 ++++++++++++++++++++++++---------------- 1 file changed, 42 insertions(+), 27 deletions(-) diff --git a/Courses/Proposal-2023.md b/Courses/Proposal-2023.md index 219a1c8..65d626d 100644 --- a/Courses/Proposal-2023.md +++ b/Courses/Proposal-2023.md @@ -7,48 +7,63 @@ 5. Програмування на базі подій та реактивне програмування 6. Об'єктно-орієнтоване програмування 7. Прототипне програмування -8. Узагальнене програмування +8. Узагальнене програмування та дженеріки 9. Автоматне програмування, скінченні автомати (машини станів) -10. Спеціалізовані мови для предметних областей (DSL) -11. Програмування на потоках даних -12. Метапрограмування -13. Динамічна інтерпретація метамоделі -14. Поєднання декількох парадигм у одному коді +10. Модель акторів +11. Спеціалізовані мови для предметних областей (DSL) +12. Програмування на потоках даних +13. Метапрограмування +14. Динамічна інтерпретація метамоделей +15. Мультипарадигмене програмування та поєднання декількох парадигм +16. Контрактне прорамування +17. Компонентний підхід +18. Паралельне та асинхронне програмування -## Основи програмування +## Веб програмування для бекенд та фронтенд -1. Базові концепції, синтаксис та семантика мов C, C++, JavaScript та Python +1. Базові концепції, синтаксис та семантика мов JavaScript та TypeScript 2. Стан застосунку, структури даних та колекції 3. Підходи до роботи зі станом: stateful and stateless -4. Структури даних: стек, черга, дек, дерева та графи +4. Структури даних у JavaScript: стек, черга, дек, дерева та графи 5. Проекції та відображення наборів даних -6. Оцінка обчислювальної складності -7. Що таке технологічний стек +6. Оцінка обчислювальної складності та оптимызація виконання у v8 +7. Що таке технологічний стек та огляд стеків для веб 8. Середовище розробки та налагодження коду 9. Ітерування: рекурсія, ітератори та генератори -10. Структура додатку: файли, модулі, компоненти +10. Структура додатку: файли, модулі, компоненти, системи модульності 11. Об'єкт, прототип та клас -12. Часткове застосування та каррування, композиція функцій +12. Часткове застосування та каррування, композиція функцій у JavaScript 13. Чейнінг для методів та функцій, домішки (mixins), мемоізація, фабрики -14. Залежності та бібліотеки +14. Залежності та бібліотеки, зачеплення та зв'язність коду 15. Антипатерни, ревью коду та рефакторинг -16. Угоди та стандарти -17. Тестування -18. Події, таймери -19. Регулярні вирази +16. Угоди та стандарти, контракти +17. Тестування для бекенд та фронтенд +18. Події, таймери, лісенери +19. Регулярні вирази та BNF 20. Інтроспекція та рефлексія, серіалізація та десеріалізація ## Асинхронне програмування -1. Паралельне програмування, загальна пам'ять та примітиви синхронізації -2. Асинхронні примітиви: Thenable, Promise, Future, Deferred -3. Співпрограми, горутіни, async/await -4. Адаптери між асинхронними контрактами -6. Асинхронна та паралельна сумісність -7. Підхід до передачі повідомлень та модель акторів -8. Асинхронна черга та асинхронні колекції -9. Lock-free структури даних -10. I/O(введення-виведення) та файли +1. Огляд паралельного програмування, загальна пам'ять та примітиви синхронізації +2. Асинхронність на колбеках (функції зворотнього виклику) +3. Блокуючі та неблокуючі операції, I/O (введення-виведення) +4. Паттерни EventEmitter та AsyncEmitter +5. Асинхронні примітиви: Thenable, Promise, Future, Deferred +6. Співпрограми, горутіни, async/await +7. Адаптери між асинхронними контрактами: promisify, callbackify, asyncify +8. Асинхронна та паралельна сумісність +9. Підхід до передачі повідомлень та модель акторів +10. Асинхронна черга та асинхронні колекції +11. Асинхронні коллектори даних +12. Асинхронні генератори та ітератори +13. Обробка помилок та відміна асинхронних операцій +14. Асинхронна композиція функцій +15. Паттерн відкритий конструктор (Revealing Constructor) +16. Паттерн спостерігач (Observer + Observable) +17. Async hooks для Node.js +18. Shared memory у режимі магатопоточності Node.js +19. Асинхронний pool для worker thread у Node.js +20. Lock-free структури даних ## Архітектура програмних систем From bc49ef0c512c9d1a33f010fc15d166117d362da2 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Mon, 8 May 2023 14:11:22 +0300 Subject: [PATCH 194/308] Add videos --- Courses/Talks.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Courses/Talks.md b/Courses/Talks.md index 92973b5..f1321d3 100644 --- a/Courses/Talks.md +++ b/Courses/Talks.md @@ -90,12 +90,15 @@ ## 2019 - [Антипаттерны Node.js](https://jsfest.com.ua/jsfest2019autumn/) + - Видео: https://youtu.be/DJCzZF383ug - Слайды: https://www.slideshare.net/tshemsedinov/js-fest-2019-nodejs-antipatterns - [Разделяемая память в многопоточном Node.js. Тимур Шемсединов. JS Fest 2019 Spring](https://youtu.be/KNsm_iIQt7U) + - Видео: https://youtu.be/KNsm_iIQt7U - Слайды: https://www.slideshare.net/tshemsedinov/shared-memory-and-multithreading-in-nodejs-timur-shemsedinov-jsfest19 - DevPoint'19: Как возможно состояние гонки в однопоточном JavaScript? - Слайды: https://www.slideshare.net/tshemsedinov/how-are-race-conditions-in-single-threaded-javascript-possible - DevopsStage'19: Private cloud without vendor lock (Serverless) + - Видео: https://youtu.be/9fIOzmZ9uvI - Слайды: https://www.slideshare.net/tshemsedinov/private-cloud-without-vendor-lock-serverless - DX Day'19: How to keep control and safety in the clouds - Слайды: https://www.slideshare.net/tshemsedinov/how-to-keep-control-and-safety-in-the-clouds From 288d9d286f0312835ea6c970107479d25bd09738 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Mon, 8 May 2023 14:13:06 +0300 Subject: [PATCH 195/308] Add latest talk --- Courses/Talks.md | 1 + 1 file changed, 1 insertion(+) diff --git a/Courses/Talks.md b/Courses/Talks.md index f1321d3..add9a72 100644 --- a/Courses/Talks.md +++ b/Courses/Talks.md @@ -7,6 +7,7 @@ - [Стрим про образование программиста с Тимуром Шемсединовым и Сергеем Немчинским](https://www.youtube.com/live/pcwccVihgeg?feature=share) - [«No Code, No Conference» 2023-03-16](https://flowmates.org/) - [Применение ChatGPT в оптимизации JavaScript для NodeJS](https://youtu.be/Ebrzqj8cGUY) +- [Прекращение поддержки Node.js 14.x и обновление до 16, 18, 20](https://youtu.be/HriGsw3IPmQ) ## 2022 From d1f49567313c391bcff8c4040017ca0a427271f2 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Mon, 15 May 2023 23:14:41 +0300 Subject: [PATCH 196/308] Add video --- Courses/Talks.md | 1 + 1 file changed, 1 insertion(+) diff --git a/Courses/Talks.md b/Courses/Talks.md index add9a72..45b9354 100644 --- a/Courses/Talks.md +++ b/Courses/Talks.md @@ -8,6 +8,7 @@ - [«No Code, No Conference» 2023-03-16](https://flowmates.org/) - [Применение ChatGPT в оптимизации JavaScript для NodeJS](https://youtu.be/Ebrzqj8cGUY) - [Прекращение поддержки Node.js 14.x и обновление до 16, 18, 20](https://youtu.be/HriGsw3IPmQ) +- [Революция в ИТ: 2023-24, что учить, трансформация бизнеса, кого нанимать и новые профессии](https://youtu.be/hYbF3IlMovE) ## 2022 From 2e84ae15903f948437e3db3ff732c1801eef2327 Mon Sep 17 00:00:00 2001 From: Bohdan Trybel Date: Wed, 17 May 2023 10:56:55 +0200 Subject: [PATCH 197/308] Fixed typos in Proposal-2023.md --- Courses/Proposal-2023.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Courses/Proposal-2023.md b/Courses/Proposal-2023.md index 65d626d..e639c12 100644 --- a/Courses/Proposal-2023.md +++ b/Courses/Proposal-2023.md @@ -26,7 +26,7 @@ 3. Підходи до роботи зі станом: stateful and stateless 4. Структури даних у JavaScript: стек, черга, дек, дерева та графи 5. Проекції та відображення наборів даних -6. Оцінка обчислювальної складності та оптимызація виконання у v8 +6. Оцінка обчислювальної складності та оптимізація виконання у v8 7. Що таке технологічний стек та огляд стеків для веб 8. Середовище розробки та налагодження коду 9. Ітерування: рекурсія, ітератори та генератори @@ -61,7 +61,7 @@ 15. Паттерн відкритий конструктор (Revealing Constructor) 16. Паттерн спостерігач (Observer + Observable) 17. Async hooks для Node.js -18. Shared memory у режимі магатопоточності Node.js +18. Shared memory у режимі багатопоточності Node.js 19. Асинхронний pool для worker thread у Node.js 20. Lock-free структури даних @@ -102,7 +102,7 @@ 5. Структура та архітектура додатків 6. Модулі ECMA, Common.js, Module API 7. Модулі та пакети, використання package.json та node_modules -8. Межпроцессное взаємодія (IPC), воркер-треди +8. Міжпроцесна взаємодія (IPC), воркер-треди 9. Domain Driven Design для інформаційних систем 10. Фреймворк-агностік та транспорт-агностік підходи 11: Ізоляція коду та впровадження залежностей @@ -113,7 +113,7 @@ 16. HTTP сесії і файли cookie, fetch API, WebSocket, віддача статики 17. Скаффолдинг для API, UI та даних 18. Високонавантажені та розподілені додатки -19. Робота з базами даних, слой доступу до даних, курсор, транзакція +19. Робота з базами даних, шар доступу до даних, курсор, транзакція 20. Memory leaks в Node.js і JavaScript, збірка мусора і профілювання 21. Atomics, SharedArrayBuffer, worker_threads в Node.js 22. Безпека, надійність та управління інфраструктурою From 3a332d607794c7217ad857d0125b194ef7316afb Mon Sep 17 00:00:00 2001 From: Georgiy Filippov Date: Mon, 22 May 2023 12:05:26 +0500 Subject: [PATCH 198/308] Update GRASP topic and links * add missing links to code examples * separate links by topic PR-URL: https://github.com/HowProgrammingWorks/Index/pull/102 Co-authored-by: Timur Shemsedinov --- Courses/GRASP.md | 4 ++++ Courses/NodeJS.md | 10 +++------- Courses/OOP.md | 10 +++++----- 3 files changed, 12 insertions(+), 12 deletions(-) diff --git a/Courses/GRASP.md b/Courses/GRASP.md index 6ad776f..b7f63ed 100644 --- a/Courses/GRASP.md +++ b/Courses/GRASP.md @@ -2,6 +2,10 @@ - [GRASP принципы с адаптацией для JavaScript и Node.js](https://youtu.be/ExauFjYV_lQ) - [Принцип информационный эксперт / Information Expert](https://youtu.be/cCHL329_As0) + - Примеры кода: https://github.com/HowProgrammingWorks/InformationExpert - [Зацепление и связность / Coupling and Cohesion](https://youtu.be/IGXdPOZ3Fyk) + - Примеры кода: https://github.com/HowProgrammingWorks/CouplingCohesion - [Чистая выдумка / Pure Fabrication](https://youtu.be/CV577a0RHBM) + - Примеры кода: https://github.com/HowProgrammingWorks/PureFabrication - [Пример декомпозиции класса](https://youtu.be/4AMVQ2-2DcM) + - Примеры кода: https://github.com/metarhia/impress/blob/v2.0.0/lib/application.js diff --git a/Courses/NodeJS.md b/Courses/NodeJS.md index cee282c..e079db7 100644 --- a/Courses/NodeJS.md +++ b/Courses/NodeJS.md @@ -38,7 +38,7 @@ - Слайды: https://www.slideshare.net/tshemsedinov/nodejs-in-2019 - [Асинхронное программирование в Node.js](https://youtu.be/hY6Z6qNYzmc) - Это только обзорная лекция, ссылка на курс по асинхронному программированию - находится выше, перед оглавлением + находится выше, перед оглавлением - [Обзор встроенного Node.js API](https://youtu.be/sOkjR-N6IAs) - Ссылка на документацию: https://nodejs.org/api/documentation.html - [Настройка среды: Node.js, npm, git, eslint](https://youtu.be/hSyA7tcNaCE) @@ -71,11 +71,7 @@ - Примеры кода: https://github.com/HowProgrammingWorks/InterProcessCommunication - [Слои, связанность и связность кода](https://youtu.be/A3RpwNlVeyY) - Примеры кода: https://github.com/HowProgrammingWorks/Abstractions -- [GRASP принципы с адаптацией для JavaScript и Node.js](https://youtu.be/ExauFjYV_lQ) -- [Принцип информационный эксперт / Information Expert](https://youtu.be/cCHL329_As0) -- [Зацепление и связность / coupling and cohesion](https://youtu.be/IGXdPOZ3Fyk) -- [Чистая выдумка / Pure Fabrication](https://youtu.be/CV577a0RHBM) -- [GRASP: Пример декомпозиции класса](https://youtu.be/4AMVQ2-2DcM) +- [GRASP принципы](https://github.com/HowProgrammingWorks/Index/blob/master/Courses/GRASP.md) ## Разработка серверов приложений и API на Node.js @@ -130,7 +126,7 @@ - Семафоры: https://github.com/HowProgrammingWorks/Semaphore - Мьютексы: https://github.com/HowProgrammingWorks/Mutex - [Разделяемая память в многопоточном Node.js](https://youtu.be/KNsm_iIQt7U) - -доклад на конференции JS Fest 2019 Spring + доклад на конференции JS Fest 2019 Spring - Слайды: https://www.slideshare.net/JSFestUA/js-fest-2019-nodejs - [Web Locks API in Node.js and browser](https://youtu.be/auMM-uV12F0) - Слайды: https://www.slideshare.net/tshemsedinov/web-locks-api diff --git a/Courses/OOP.md b/Courses/OOP.md index 2af9252..ef6995a 100644 --- a/Courses/OOP.md +++ b/Courses/OOP.md @@ -22,8 +22,8 @@ - Примеры кода: https://github.com/HowProgrammingWorks/LiskovSubstitution - [Антипаттерны объектно-ориентированного программирования](https://youtu.be/9d5TG1VsLeU) - Примеры кода: https://github.com/HowProgrammingWorks/Antipatterns/tree/master/JavaScript/03-OOP -- [GRASP принципы с адаптацией для JavaScript и Node.js](https://youtu.be/ExauFjYV_lQ) -- [Принцип информационный эксперт / Information Expert](https://youtu.be/cCHL329_As0) -- [Зацепление и связность / coupling and cohesion](https://youtu.be/IGXdPOZ3Fyk) -- [Чистая выдумка / Pure Fabrication](https://youtu.be/CV577a0RHBM) -- [GRASP: Пример декомпозиции класса](https://youtu.be/4AMVQ2-2DcM) +- [GRASP принципы](https://github.com/HowProgrammingWorks/Index/blob/master/Courses/GRASP.md) + - Принцип информационный эксперт / Information Expert + - Зацепление и связность / Coupling and Cohesion + - Чистая выдумка / Pure Fabrication + - Пример декомпозиции класса From 1606d0a6e9cab0eb67e7fb07210818c862e41b6c Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Mon, 29 May 2023 01:03:05 +0300 Subject: [PATCH 199/308] Update NodeJS-2022-2023.md --- Courses/NodeJS-2022-2023.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Courses/NodeJS-2022-2023.md b/Courses/NodeJS-2022-2023.md index ac8cb0d..febe9db 100644 --- a/Courses/NodeJS-2022-2023.md +++ b/Courses/NodeJS-2022-2023.md @@ -1,4 +1,4 @@ -# Технологический стек Node.js 2022-2023 +# Технологический стек Node.js 2023 Объем материала: 20 часов лекций, еженедельно 2 часа семинары в течении года, репозитории с примерами кода. Что нужно знать на входе: From 63077431b8a05bb2c5f52bb0cecdf70506ad9759 Mon Sep 17 00:00:00 2001 From: Artem Travlo Date: Sun, 23 Jul 2023 00:43:28 +0300 Subject: [PATCH 200/308] Update Talks.md (#105) Thanks @artemtr --- Courses/Talks.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Courses/Talks.md b/Courses/Talks.md index 45b9354..52affe3 100644 --- a/Courses/Talks.md +++ b/Courses/Talks.md @@ -3,7 +3,7 @@ ## Future talks ## 2023 - +- [Образование будущего: украинский взгляд | Владимир Спиваковский, Тимур Шемсединов, Николай Фельдман](https://www.youtube.com/watch?v=yFYdFZuWm8o) - [Стрим про образование программиста с Тимуром Шемсединовым и Сергеем Немчинским](https://www.youtube.com/live/pcwccVihgeg?feature=share) - [«No Code, No Conference» 2023-03-16](https://flowmates.org/) - [Применение ChatGPT в оптимизации JavaScript для NodeJS](https://youtu.be/Ebrzqj8cGUY) From 36ef3d9d852e9fe83a744030d915fb76f9307b47 Mon Sep 17 00:00:00 2001 From: Artem Travlo Date: Sun, 23 Jul 2023 00:45:47 +0300 Subject: [PATCH 201/308] Update Talks.md (#104) --- Courses/Talks.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Courses/Talks.md b/Courses/Talks.md index 52affe3..6b2080d 100644 --- a/Courses/Talks.md +++ b/Courses/Talks.md @@ -3,6 +3,8 @@ ## Future talks ## 2023 + +- [Искусственный интеллект заменяет программистов | Тимур Шемсединов, Николай Фельдман | Альфа и Омега](https://www.youtube.com/watch?v=i6vOhIor-ow) - [Образование будущего: украинский взгляд | Владимир Спиваковский, Тимур Шемсединов, Николай Фельдман](https://www.youtube.com/watch?v=yFYdFZuWm8o) - [Стрим про образование программиста с Тимуром Шемсединовым и Сергеем Немчинским](https://www.youtube.com/live/pcwccVihgeg?feature=share) - [«No Code, No Conference» 2023-03-16](https://flowmates.org/) From 38a58feb65b62bf6763525f3adfb236ce960507e Mon Sep 17 00:00:00 2001 From: Anton Telichenko Date: Sat, 22 Jul 2023 23:46:33 +0200 Subject: [PATCH 202/308] Update WeeklyCall.md (#98) Thanks @antontelichenko ! --- Archive/WeeklyCall.md | 98 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 98 insertions(+) diff --git a/Archive/WeeklyCall.md b/Archive/WeeklyCall.md index da6ca21..4360d74 100644 --- a/Archive/WeeklyCall.md +++ b/Archive/WeeklyCall.md @@ -1283,3 +1283,101 @@ 9:40 как работает metacom? 28:38 презентация ``` + +## Выпуск №92 (2023-02-09) +``` +0:00 новости, задания по проекту +9:53 12ти факторный манифест +26:14 кеширование +45:30 в каком порядке учить node? +47:54 что произошло на курсе по node в последнее время? +``` + +## Выпуск №93 (2023-02-16) +``` +0:00 новый loader +22:42 почему не используется optional chaining +28:02 разбор PR: why db is not freezed +49:35 разбор PR: write logs to the file +``` + +## Выпуск №94 (2023-02-23) +``` +3:24 Web Locks API очередь вместо массива +8:12 scheduler, sockets, web sockets +39:52 o fastify logger +``` + +## Выпуск №95 (2023-03-02) +``` +1:02 о менторах, записи к менторам, созвоны с менторами +8:38 тестирование example для metarhia +13:26 откуда приходят люди на менторскую программу? об учащихся и технологиях +39:32 каким способом автоматически делать реплику системы без доступа к source коду? +53:20 какой текущий статус metarhia? новости сообщества +1:02:09 metaschema и генерация из/в prisma +``` + +## Выпуск №96 (2023-03-09) +``` +0:00 новости, исправления в metacom, видео для курса, uuid +18:36 демонстрация нового session provider в metacom +44:02 как проходило тестирование http call в example? +1:16:03 если клиент скопирован из браузерного клиента, можно сделать динамическую генерацию клиента? +1:21:20 есть ли ментор по функциональному программированию? +``` + +## Выпуск №97 (2023-03-23) +``` +0:55 новости, объяснение класса Transport +26:12 как на 18 строке вернуть { method: expression } +42:30 вопрос о LICENSE внутри проекта, конфиг внутри проекта, metacom и context +1:02:43 chatGPT +``` + +## Выпуск №98 (2023-03-30) +``` +0:00 новости, о гитхабе и методах слияния веток +8:33 структура пакетов в metacom +29:49 нужен ли ивенту интерфейс? +33:31 нет ли инструментов для отслеживания взаимосвязи колов и ивентов? +39:00 тестовый клиент для тестов +58:18 лекция о гит +1:05:10 вынос scheduler в отдельную библиотеку +1:06:40 вынос bus из impress в отдельную библиотеку +1:14:33 metaschema с разными типами данных +``` + +## Выпуск №99 (2023-04-07) +``` +0:00 новости, metacom, планы +26:07 можно ли будет встроить gRPC через плагин? +31:30 пакеты стримов, новое поле +43:50 как лучше делать пул реквесты? +51:20 кеширование и другие фичи для metacom +58:40 как оформлять тесты на производительность +``` + +## Выпуск №100 (2023-04-13) +``` +0:00 новости, стриминг файлов, лекция о chatGPT и оптимизации +10:10 что за история с chatGPT? +42:55 пользовались ли developer mode? +49:17 metacom подходит для telegram клиента? +54:50 откуда берется staticPath в server, где место скаффолдинга в новой реализации? +1:11:08 обучение на сложных задачах +``` + +## Выпуск №101 (2023-04-20) +``` +0:00 новости, тесты, день рождения +6:20 запред миксина для модуля +27:28 runInContext, runInThisContext, runInNewContext, сендбоксы +29:48 какие есть методы для защиты от потери данных при падении сервера? +38:39 как не терять данные при отключении света или деградации производительности? +40:21 проблема при доступе к lib и domain через createSandbox +44:50 нужно ли поступать в вуз? вузовские курсы для обучения разработчиков +56:48 есть ли планы на новое видео о новых возможностях ноды? +58:22 for await на массиве с синхронным итератором +1:03:18 вызов асинхронных функций в цикле без await +``` From 23be873dba45093a86bcf41cc84abd721c0509ae Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Sun, 23 Jul 2023 05:21:45 +0300 Subject: [PATCH 203/308] Add plan for Async-2024 course --- Courses/Async-2024.md | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 Courses/Async-2024.md diff --git a/Courses/Async-2024.md b/Courses/Async-2024.md new file mode 100644 index 0000000..5da9ec8 --- /dev/null +++ b/Courses/Async-2024.md @@ -0,0 +1,37 @@ +# Асинхронное программирование 2024 + +Те способы писать асинхронный код, которые мы использовали 10-15 лет назад безвозвратно уходят в прошлое и могут быть интересны лишь для поддержки легаси упражнения в глубоком понимании асинхронного программирования. Даже способы 5-7 летней давности уже имеют мало общего с современными практиками, но интернет полон устаревшей информации, даже [открытый курс сообщества Metarhia](https://github.com/HowProgrammingWorks/Index/blob/master/Courses/Asynchronous.md) на сегодняшний момент стал слишком громоздким и излишним. Еще нужно упомянуть о том, что в системном и прикладном коде асинхронное программирование должно выглядеть принципиально по-разному. + +## Содержание + +Важные аспекты нового курса: + +- Концентрация на практическом применении (примеры кода из реальных проектов) +- Актуальность и соответствие стандартам по состоянию на 2024 +- Задачи и разбор их решений, семинары, ревью кода (курс это не только видео) +- Рекомендации к выбору стиля и абстракций асинхронности под задачу +- Внимание к корректной обработке ошибок во всех стилях асинхронности +- Упор на надежность, поддерживаемость, тестируемость, снижение зацепления + +Темы нового курса: + +- Контракты асинхронности на базе callback: callback-last, error-first +- Минимально необходимое понимание рантайма: event loop, I/O, таймеры +- Контракты асинхронности на базе событий: EventEmitter, Streams +- Контракт Promise и синтаксис async/await +- Конвертеры контрактов, стыковка кода в разных стилях +- Предотвращение состояния гонки по данным и управлению в асинхронном коде +- Отмена асинхронных операций: AbortController, AbortSignal +- Обработка ошибок, их выявление и возможные проблемы со стектрейсом +- Асинхронныек коллекции (собираем значения до готовности) + +## Обратите внимание + +Что нужно знать и уметь на входе: + +- [Синтаксис JavaScript, но можно без всяких триков](https://github.com/HowProgrammingWorks/Index/blob/master/Courses/Fundamentals.md) +- Уверенно владеть git, иметь github аккаунт +- Желательно docker, иметь рабочую машину на linux или mac +- Любая среда разработки, IDE или редактор + +Чем это курс не является: это не чтение документации, не курс по библиотекам и фреймворкам, не повторение старого курса, не лайвкодинг и не мастеркласс, не стрим. Новый курс - это максимально сконцентрированная информация и практические задачи как для прикладного, так и для системного программирования со сравнением этих подходов. From 4e14e37b50f134e05ee29c8fd9b2f3baa0cbcf0e Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Fri, 1 Sep 2023 11:15:00 +0300 Subject: [PATCH 204/308] Comment about taxes --- Courses/NodeJS-2022-2023.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Courses/NodeJS-2022-2023.md b/Courses/NodeJS-2022-2023.md index febe9db..132f756 100644 --- a/Courses/NodeJS-2022-2023.md +++ b/Courses/NodeJS-2022-2023.md @@ -47,7 +47,7 @@ # Доступ -План «Expert» на 1 год за $204 на Patreon. +План «Expert» на 1 год за $204 (+ локальные налоги) на Patreon. Помесячная подписка «Expert» не дает доступа. Доступ к матераиалам курса остается и после завершения подписки. From a20eacfbf2626220cde40474cbf74688899a38c0 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Tue, 5 Sep 2023 23:51:51 +0300 Subject: [PATCH 205/308] Add new lectures --- Courses/Asynchronous.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Courses/Asynchronous.md b/Courses/Asynchronous.md index 385b675..0163388 100644 --- a/Courses/Asynchronous.md +++ b/Courses/Asynchronous.md @@ -1,6 +1,6 @@ # Асинхронное программирование -Объем материала: 24 лекции, 27 репозиториев с примерами кода. +Объем материала: 26 лекции, 28 репозиториев с примерами кода. [Для части лекций есть таймкоды и подробное оглавление](Asynchronous-timecodes.md) @@ -62,3 +62,4 @@ - Async hooks - [Разделяемая память в многопоточном Node.js](https://youtu.be/KNsm_iIQt7U) - [Асинхронный пул для worker thread pool в Node.js](https://youtu.be/Jj5KZRq4wYI) +- Асинхронное программирование из [лекции введения в Node.js](https://www.youtube.com/watch?v=mRvzgBGLVyM) From f2ba019d595c89a7b0a46eb3063c8230939c3cea Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Thu, 7 Sep 2023 10:14:54 +0300 Subject: [PATCH 206/308] Update async course --- Courses/Async-2024.md | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/Courses/Async-2024.md b/Courses/Async-2024.md index 5da9ec8..7fdafa1 100644 --- a/Courses/Async-2024.md +++ b/Courses/Async-2024.md @@ -1,24 +1,26 @@ # Асинхронное программирование 2024 -Те способы писать асинхронный код, которые мы использовали 10-15 лет назад безвозвратно уходят в прошлое и могут быть интересны лишь для поддержки легаси упражнения в глубоком понимании асинхронного программирования. Даже способы 5-7 летней давности уже имеют мало общего с современными практиками, но интернет полон устаревшей информации, даже [открытый курс сообщества Metarhia](https://github.com/HowProgrammingWorks/Index/blob/master/Courses/Asynchronous.md) на сегодняшний момент стал слишком громоздким и излишним. Еще нужно упомянуть о том, что в системном и прикладном коде асинхронное программирование должно выглядеть принципиально по-разному. +Те способы писать асинхронный код, которые мы использовали 10-15 лет назад безвозвратно уходят в прошлое и могут быть интересны лишь для поддержки легаси упражнения в глубоком понимании асинхронного программирования. Даже способы 5-7 летней давности уже имеют мало общего с современными практиками, но интернет полон устаревшей информации, даже [открытый курс сообщества Metarhia](https://github.com/HowProgrammingWorks/Index/blob/master/Courses/Asynchronous.md) на сегодняшний момент стал слишком громоздким и излишним. Еще нужно упомянуть о том, что в системном и прикладном коде асинхронное программирование должно выглядеть принципиально по-разному. Полностью скрыть от продуктового разработчика сложность асинхронного кода за абстракциями не удастся, потому, что он в любом случае будет работать с таймерами, событиями, стримами, fetch и другими асинхронными API, но его можно писать в десятки раз проще, чем асинхронный код с системном слое. Что касается системного слоя, то нужно вводить в обиход теорию очередей (системы массового обслуживания), модель акторов, часть абстракций из параллельного программирования (семафоры, рандеву, атомарные операции). Конечно, содержать все это в одном курсе сложновато, поэтому, мы отдадим приоритет прикладному коду и сначала полностью подготовим курс для применения асинхронного программирования в продуктовой разработке, а потом будем добавлять необязательные темы их старого курса и много других полезных абстракций, широко распространенных в других языках программирования, но слабо известных в мире JavaScript. ## Содержание Важные аспекты нового курса: - Концентрация на практическом применении (примеры кода из реальных проектов) -- Актуальность и соответствие стандартам по состоянию на 2024 +- Актуальность и соответствие стандартам по состоянию на 2023-2024 - Задачи и разбор их решений, семинары, ревью кода (курс это не только видео) - Рекомендации к выбору стиля и абстракций асинхронности под задачу - Внимание к корректной обработке ошибок во всех стилях асинхронности - Упор на надежность, поддерживаемость, тестируемость, снижение зацепления +- Примеры и задачи по исправлению скрытых проблемных состояний и data races Темы нового курса: - Контракты асинхронности на базе callback: callback-last, error-first - Минимально необходимое понимание рантайма: event loop, I/O, таймеры - Контракты асинхронности на базе событий: EventEmitter, Streams -- Контракт Promise и синтаксис async/await +- Контракт Promise/then/catch/finally и синтаксис async/await +- Параллельное и последовательное исполнение, all/any/race/allSettled - Конвертеры контрактов, стыковка кода в разных стилях - Предотвращение состояния гонки по данным и управлению в асинхронном коде - Отмена асинхронных операций: AbortController, AbortSignal From 4e7b4ec5e5edc30d4b436724ea9f6a6c0019ff73 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Thu, 14 Sep 2023 21:42:44 +0300 Subject: [PATCH 207/308] Add LLM talk --- Courses/Talks.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Courses/Talks.md b/Courses/Talks.md index 6b2080d..8f7ee75 100644 --- a/Courses/Talks.md +++ b/Courses/Talks.md @@ -11,6 +11,9 @@ - [Применение ChatGPT в оптимизации JavaScript для NodeJS](https://youtu.be/Ebrzqj8cGUY) - [Прекращение поддержки Node.js 14.x и обновление до 16, 18, 20](https://youtu.be/HriGsw3IPmQ) - [Революция в ИТ: 2023-24, что учить, трансформация бизнеса, кого нанимать и новые профессии](https://youtu.be/hYbF3IlMovE) +- [How to use LLMs in Software Development and its limits](https://www.aintelligence.tech/en/schedule) at Artificial Intelligence: Challenges and Opportunities for Ukraine. 14 Sep + +September 14, 2023 at 4:00 PM ## 2022 From c54af29a863e18dbe699e265157dfc6ea0d5050e Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Thu, 14 Sep 2023 21:57:43 +0300 Subject: [PATCH 208/308] Add Metarhia Business Owners club events --- Courses/Talks.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Courses/Talks.md b/Courses/Talks.md index 8f7ee75..24d122b 100644 --- a/Courses/Talks.md +++ b/Courses/Talks.md @@ -12,6 +12,8 @@ - [Прекращение поддержки Node.js 14.x и обновление до 16, 18, 20](https://youtu.be/HriGsw3IPmQ) - [Революция в ИТ: 2023-24, что учить, трансформация бизнеса, кого нанимать и новые профессии](https://youtu.be/hYbF3IlMovE) - [How to use LLMs in Software Development and its limits](https://www.aintelligence.tech/en/schedule) at Artificial Intelligence: Challenges and Opportunities for Ukraine. 14 Sep +- [Metarhia Business Owners club # 1 - Запуск сообщества бизнесовнеров продуктов, стартапов, компаний](https://youtu.be/T0zMsmfxo0c) +- [Metarhia Business Owners club # 2 - Новости, образование, документация, лоукод](https://youtu.be/pMC-NjKD-6E) September 14, 2023 at 4:00 PM From be5e2e72b0c018ff4a56bd65750c09fbff29bab0 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Thu, 14 Sep 2023 21:59:10 +0300 Subject: [PATCH 209/308] Update Talk at Alpha --- Courses/Talks.md | 1 + 1 file changed, 1 insertion(+) diff --git a/Courses/Talks.md b/Courses/Talks.md index 24d122b..129790e 100644 --- a/Courses/Talks.md +++ b/Courses/Talks.md @@ -14,6 +14,7 @@ - [How to use LLMs in Software Development and its limits](https://www.aintelligence.tech/en/schedule) at Artificial Intelligence: Challenges and Opportunities for Ukraine. 14 Sep - [Metarhia Business Owners club # 1 - Запуск сообщества бизнесовнеров продуктов, стартапов, компаний](https://youtu.be/T0zMsmfxo0c) - [Metarhia Business Owners club # 2 - Новости, образование, документация, лоукод](https://youtu.be/pMC-NjKD-6E) +- [Тотальная цифровизация минобороны: вызовы команды нового министра | Шемсединов, Фельдман](https://www.youtube.com/live/dPXvdpNzLx4) September 14, 2023 at 4:00 PM From a8542416b95f4a61500707ce0d9a34d709fc4026 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Fri, 15 Sep 2023 16:51:19 +0300 Subject: [PATCH 210/308] Create Fundamentals-2023.md --- Courses/Fundamentals-2023.md | 136 +++++++++++++++++++++++++++++++++++ 1 file changed, 136 insertions(+) create mode 100644 Courses/Fundamentals-2023.md diff --git a/Courses/Fundamentals-2023.md b/Courses/Fundamentals-2023.md new file mode 100644 index 0000000..20c4170 --- /dev/null +++ b/Courses/Fundamentals-2023.md @@ -0,0 +1,136 @@ +# Основи програмування + +- Автор: https://github.com/tshemsedinov +- Завдання з курсу: https://github.com/HowProgrammingWorks/Index/blob/master/Practice/SEF1.ru.md +- Словник термінів: https://github.com/HowProgrammingWorks/Dictionary +- Для частини лекцій є таймкод і докладний зміст: Fundamentals-timecodes.md + +- ⭐ - Нові спрощені лекції +- ✨ - Старі але важливі лекції +- 🧑‍💻 - Приклади коду +- 🧩 - Необов'язкові лекції + +## Перший семестр + +- Введення та огляд метеріалу + - ⭐ Новий вступ + - 🧩 [Введення у програмування](https://youtu.be/5Gt61EX6HZ4) + - 🧩 [Введення у програмування, продовження](https://youtu.be/PzlLXQ3RaDs) + - 🧩 [Мови програмування](https://youtu.be/enHA1CRkJe0) + - 🧩 Семінар: [JavaScript, відповіді на запитання](https://youtu.be/wqkQ6eslyzY) + - 🧩 [История развития языков программирования](https://youtu.be/qqz0VSaNxuw) + - 🧩 [Парадигмы программирования](https://youtu.be/Yk1sxLVHfjs) + - ✨ [Базовий синтаксис JavaScript](https://youtu.be/xJn3k1f4BiM) + - ✨ [Базовий синтаксис JavaScript, продовження](https://youtu.be/qa-XleqA0JU) + - 🧩 Семінар: [Базовий синтаксис мови JavaScript](https://youtu.be/PGqjTXQe_qw) + - 🧑‍💻 Абстракції та їх перевикористання: https://github.com/HowProgrammingWorks/Reusable + - 🧑‍💻 Основні конструкції: https://github.com/HowProgrammingWorks/Cheatsheet +- Ідентифікатори та значення + - ⭐ [Ідентифікатори, змінні та константи](https://youtu.be/Ljj8HyUIPUA) + - ⭐ [Літарали, значення та типи даних](https://youtu.be/yf58Lmr_J90) + - 🧑‍💻 Типи даних: https://github.com/HowProgrammingWorks/DataTypes +- Функції + - ⭐ [Функції, блоки та область видимості змінних](https://youtu.be/h5IvZh5QHEM) + - ✨ [Функції, стрілочні функції, контексти, замикання JavaScript](https://youtu.be/pn5myCmpV2U) + - 🧑‍💻 Функції: https://github.com/HowProgrammingWorks/Function +- Умови + - ⭐ [Умови та розгалудження, оператор if](https://youtu.be/dhurClkDGrc) + - 🧑‍💻 Приклади коду: https://github.com/HowProgrammingWorks/Conditional +- Ітерування + - ⭐ [Цикли for, for..of, for..in](https://youtu.be/Ph-luU2sbdg) + - ⭐ [Цикли while, do..while](https://youtu.be/3ZC4O5dM5pY) + - ✨ [Ітерування, цикли та ітератори](https://youtu.be/lq3b5_UGJas) + - 🧑‍💻 Приклади коду: https://github.com/HowProgrammingWorks/Iteration +- Колекції + - ⭐ [Колекції — Array, Object](https://youtu.be/SqGoKGOZu40) + - 🧑‍💻 Масиви: https://github.com/HowProgrammingWorks/Arrays + - ✨ [Масиви, об'єкти, класи, прототипи JavaScript](https://youtu.be/VBMGnAPfmsY) + - ✨ [Массивы в JavaScript, методы Array](https://youtu.be/D1kfYBkX9FE) + - 🧑‍💻 Структури даних: https://github.com/HowProgrammingWorks/DataStructures + - ⭐ [Домішки (mixin), JSON серіалізація (serialization)](https://youtu.be/rMUB78bs26w) + - ⭐ [Множини (Set) та хеш-таблиці (Map)](https://youtu.be/1avvpS_Hqms) + - ✨ [Коллекции, множества, хеш таблицы в JavaScript](https://youtu.be/hN0wsq5LNOc) + - 🧑‍💻 Колекції: https://github.com/HowProgrammingWorks/Collections + - 🧑‍💻 Хеш таблиці: https://github.com/HowProgrammingWorks/Map + - 🧑‍💻 Множини (Set): https://github.com/HowProgrammingWorks/Set +- Практичні завдання + - ⭐ [Нові практичні завдання 1-5](https://youtu.be/4I2iL3JjFdM) + - ✨ [Налаштування середовища: Node.js, npm, git, eslint](https://youtu.be/hSyA7tcNaCE) Дивитись вибірково, що не зрозуміло – пропускайте + - ✨ Старий семінар: [Автоматична перевірка лабораторних робіт](https://youtu.be/M4KpG0LEAyA) + - ✨ Семінар: [Виконання лабораторних робіт з курсу](https://youtu.be/ikUOyFPzdJw) + - 🧑‍💻 Завдання: [Exercises.ru.md](https://github.com/HowProgrammingWorks/Introduction/blob/master/Exercises.ru.md) +- Callbacks, timers + - ⭐ [Функції зворотнього виклику (callbacks) та таймери](https://youtu.be/MFG3NaEwu70) + - 🧑‍💻 Функції зворотнього виклику: https://github.com/HowProgrammingWorks/Callbacks + - ✨ [Функції вищого порядку, колбеки, події](https://youtu.be/1vqATwbGHnc) + - 🧑‍💻 Функції вищого порядку: https://github.com/HowProgrammingWorks/HigherOrderFunction + - ✨ [Таймеры, таймауты и EventEmitter](https://youtu.be/LK2jveAnRNg) + - 🧑‍💻 Таймери: https://github.com/HowProgrammingWorks/Timers + - 🧑‍💻 EventEmitter: https://github.com/HowProgrammingWorks/EventEmitter + - 🧑‍💻 Події: https://github.com/metarhia/common/blob/master/lib/events.js +- Замикання (closures) + - ⭐ [Замикання closures, (функції + контексти)](https://youtu.be/_FranqU7420) + - ✨ [Функції, стрілочні функції, контексти, замикання JavaScript](https://youtu.be/pn5myCmpV2U) + - 🧑‍💻 Замикання (closures): https://github.com/HowProgrammingWorks/Closure + - 🧩 [Часткове застосування та curry](https://youtu.be/ND8KQ5xjk7o) + - 🧑‍💻 Часткове застосування: https://github.com/HowProgrammingWorks/PartialApplication +- Асинхронність + - ⭐ [Асинхронні функції, async, await](https://youtu.be/_3rRFN3iwsg) +- Обробка помилок + - ⭐ [Помилки (Error), та обробка exception](https://youtu.be/UmpMa-f7dM4) +- Модульність + - ⭐ [Системи модульності ESM (ECMAScript) та CJS (CommonJS)](https://youtu.be/MQepk3r41Rc) + - ⭐ [Декомпозиція програми на модулі](https://youtu.be/4SLMmET8ARM) +- Рекурсія + - ⭐ [Рекурсія, вихід з рекурсії та stack trace](https://youtu.be/bRgUmZgmXAg) + - ✨ [Рекурсія: непряма та хвостова, стек, вихід](https://youtu.be/W2skCjIgVKE) + - 🧑‍💻 Рекурсія: https://github.com/HowProgrammingWorks/Recursion +- ✨ [Робота з рядками, шаблонами та юнікодом](https://youtu.be/GcopcHQkA8M) + - 🧑‍💻 Приклади коду: https://github.com/HowProgrammingWorks/String +- ✨ [Антипатерни загальні для всіх парадигм](https://youtu.be/NMUsUiFokr4) + - 🧑‍💻 Приклади коду: https://github.com/HowProgrammingWorks/Antipatterns/tree/master/JavaScript/01-Common +- ✨ [Консоль та командний рядок у JavaScript та Node.js](https://youtu.be/5aSZyKi5BmE) + - 🧑‍💻 Приклади коду: https://github.com/HowProgrammingWorks/CommandLine +- 🧩 [Чеининг функций и объектов, обработка ошибок](https://youtu.be/PfuEfIiLX34) + - 🧑‍💻 Чеінінг: https://github.com/HowProgrammingWorks/Chaining + - 🧑‍💻 Обробка помилок: https://github.com/HowProgrammingWorks/Errors +- ✨ [Антипатерни процедурного програмування](https://youtu.be/cTv7V22mkwE) + - 🧑‍💻 Приклади коду: https://github.com/HowProgrammingWorks/Antipatterns/tree/master/JavaScript/02-Procedural +- ✨ [Code Review: как это и зачем](https://youtu.be/EKL6NiIQ6ZU) + - 🧑‍💻 Приклади коду: https://github.com/HowProgrammingWorks/CodeReview + - Семинар: [Code Review, ответы на вопросы](https://youtu.be/AgH4OAKbmkM) +- ✨ [Структури даних: списки, стек, черга, дек](https://youtu.be/9KvA4hDDSjk) + - 🧑‍💻 Списки: https://github.com/HowProgrammingWorks/LinkedList + - 🧑‍💻 Черги: https://github.com/HowProgrammingWorks/Dequeue +- ✨ [Сериализация и десериализация в JavaScript и Node.js](https://youtu.be/GtKPniOEzh8) + - 🧑‍💻 Приклади коду: https://github.com/HowProgrammingWorks/Serialization +- ✨ [Рефакторинг: причины, цели, техники и процесс](https://youtu.be/z73wmpdweQ4) + - 🧑‍💻 Приклади коду: https://github.com/HowProgrammingWorks/Refactoring + - 🧑‍💻 Пример проекта: https://github.com/tshemsedinov/node-mysql-utilities +- 🧩 Семінар: [Вибір напряму у програмуванні](https://youtu.be/1gL627DQF4A) +- 🧩 [Proxy та Symbol](https://youtu.be/UjZjSDyi9AM) + - 🧑‍💻 Проксі: https://github.com/HowProgrammingWorks/Proxy + - 🧑‍💻 Символи: https://github.com/HowProgrammingWorks/Symbol +- ✨ [Регулярні вирази та парсинг у JavaScript](https://youtu.be/-ef2E0ozxao) + - 🧑‍💻 Примеры кода: https://github.com/HowProgrammingWorks/RegExp +- ✨ [Композиція: pipe, compose](https://youtu.be/xS9FicVrOTI) + - 🧑‍💻 Приклади коду: https://github.com/HowProgrammingWorks/Composition +- ✨ [Домішки: mixin, extend, Object.assign, class-mixin](https://youtu.be/NZMrJ2adEyY) + - 🧑‍💻 Приклади коду: https://github.com/HowProgrammingWorks/Mixin + - 🧩 Стара версія лекцій: https://youtu.be/2h9syXN5wO0 +- 🧩 [Прототипне програмування та прототипне успадкування](https://youtu.be/SzaXTW2qcJE) + - 🧑‍💻 Приклади коду: https://github.com/HowProgrammingWorks/PrototypeChain + - ✨ Прототипи: https://github.com/HowProgrammingWorks/Prototype +- 🧩 [Мемоізація: memoize](https://youtu.be/H6S8QJo2Qxg) + - 🧑‍💻 Приклади коду: https://github.com/HowProgrammingWorks/Memoization + - 🧑‍💻 Стара версія лекцій: https://youtu.be/2h9syXN5wO0 +- 🧩 [Фабрики та пули об'єктів у JavaScript, factorify, poolify](https://youtu.be/Ax_mSvadFp8) + - 🧑‍💻 Фабрики: https://github.com/HowProgrammingWorks/Factory + - 🧑‍💻 Пули об'єктів: https://github.com/HowProgrammingWorks/Pool +- 🧩 [Функції-обгортки: wrappers](https://youtu.be/En7pWi2fSzs) + - 🧑‍💻 Приклади коду: https://github.com/HowProgrammingWorks/Wrapper + - 🧩 Стара версія лекцій: https://youtu.be/2h9syXN5wO0 +- 🧩 [Типізовані масиви JavaScript](https://youtu.be/tTNcqxbxhfY) + - 🧑‍💻 Приклади коду: https://github.com/HowProgrammingWorks/TypedArrays +- 🧩 [Нове у JavaScript](https://youtu.be/fUjHLj8bq_Y) + - 🧑‍💻 Приклади коду: https://github.com/HowProgrammingWorks/ESNext From f9184c7122cd05d1d3df9d198bf2c18b2053092c Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Fri, 15 Sep 2023 16:52:55 +0300 Subject: [PATCH 211/308] Update Fundamentals-2023.md --- Courses/Fundamentals-2023.md | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/Courses/Fundamentals-2023.md b/Courses/Fundamentals-2023.md index 20c4170..5cac79d 100644 --- a/Courses/Fundamentals-2023.md +++ b/Courses/Fundamentals-2023.md @@ -3,12 +3,11 @@ - Автор: https://github.com/tshemsedinov - Завдання з курсу: https://github.com/HowProgrammingWorks/Index/blob/master/Practice/SEF1.ru.md - Словник термінів: https://github.com/HowProgrammingWorks/Dictionary -- Для частини лекцій є таймкод і докладний зміст: Fundamentals-timecodes.md - -- ⭐ - Нові спрощені лекції -- ✨ - Старі але важливі лекції -- 🧑‍💻 - Приклади коду -- 🧩 - Необов'язкові лекції +- Умовні позначення: + - ⭐ - Нові спрощені лекції + - ✨ - Старі але важливі лекції + - 🧑‍💻 - Приклади коду + - 🧩 - Необов'язкові лекції ## Перший семестр From 51a8d46609ae091a311b34afd9b1561d1bf5855f Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Fri, 15 Sep 2023 20:49:48 +0300 Subject: [PATCH 212/308] Create Async.uk.md --- Courses/Async.uk.md | 66 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 66 insertions(+) create mode 100644 Courses/Async.uk.md diff --git a/Courses/Async.uk.md b/Courses/Async.uk.md new file mode 100644 index 0000000..dee815e --- /dev/null +++ b/Courses/Async.uk.md @@ -0,0 +1,66 @@ +# Асинхронне програмування + +- Автор: https://github.com/tshemsedinov +- Умовні позначення: + - ✨ - Обов'язкові лекції + - 🧑‍💻 - Приклади коду + - 🧩 - Необов'язкові лекції + - 🕑 - Застарілі лекції (не актуальні чи історічні) + +- ✨ [Асинхронне програмування (огляд)](https://youtu.be/hY6Z6qNYzmc) +- ✨ [Таймери, таймаути та EventEmitter](https://youtu.be/LK2jveAnRNg) + - 🧑‍💻 Таймери: https://github.com/HowProgrammingWorks/Timers + - 🧑‍💻 EventEmitter: https://github.com/HowProgrammingWorks/EventEmitter + - 🧑‍💻 Події: https://github.com/metarhia/common/blob/master/lib/events.js +- ✨ [Асинхронне програмування на callback`ах](https://youtu.be/z8Hg6zgi3yQ) + - 🧑‍💻 Приклади коду: https://github.com/HowProgrammingWorks/AsynchronousProgramming + - 🧑‍💻 Бібліотека do: https://github.com/metarhia/do +- 🕑 [Неблокуюче асинхронне ітерування](https://youtu.be/wYA2cIRYLoA) + - 🧑‍💻 Приклади коду: https://github.com/HowProgrammingWorks/NonBlocking +- 🕑 [Асинхронність із бібліотекою async.js](https://youtu.be/XQ94wQc-erU) + - 🧑‍💻 Приклади коду: https://github.com/HowProgrammingWorks/AsynchronousProgramming + - 🧑‍💻 Бібліотека async.js: https://caolan.github.io/async/ +- ✨ [Асинхронність на промісах](https://youtu.be/RMl4r6s1Y8M) + - 🧑‍💻 Приклади коду: https://github.com/HowProgrammingWorks/Promise +- ✨ [Асинхронні функції, async/await, thenable, обробка помилок](https://youtu.be/Jdf_tZuJbHI) + - 🧑‍💻 Приклади коду: https://github.com/HowProgrammingWorks/AsyncAwait +- 🧩 [Асинхронні адаптери: promisify, callbackify, asyncify](https://youtu.be/76k6_YkYRmU) + - 🧑‍💻 Приклади коду: https://github.com/HowProgrammingWorks/AsyncAdapter +- ✨ [Асинхронні колектори даних](https://youtu.be/tgodt1JL6II) + - 🧑‍💻 Приклади коду: https://github.com/HowProgrammingWorks/Collector + - 🧑‍💻 Бібліотека metasync: https://github.com/metarhia/metasync +- 🧩 [Необроблені помилки у промісах](https://youtu.be/1Ml5NE2fsZ8) + - 🧑‍💻 Приклади коду: https://github.com/HowProgrammingWorks/PromiseError +- 🕑 [Проблема асинхронного стектрейса](https://youtu.be/pfiHTx3j87Y) + - 🧑‍💻 Приклади коду: https://github.com/HowProgrammingWorks/StackTrace +- ✨ [Генератори та асинхронні генератори](https://youtu.be/kvNm9D32s8s) + - 🧑‍💻 Генератори: https://github.com/HowProgrammingWorks/Generator + - 🧑‍💻 Асинхронные генераторы: https://github.com/HowProgrammingWorks/AsyncGenerator +- ✨ [Ітератори та асинхронні ітератори](https://youtu.be/rBGFlWpVpGs) + - 🧑‍💻 Итератори: https://github.com/HowProgrammingWorks/Iterator + - 🧑‍💻 Асинхронные итераторы: https://github.com/HowProgrammingWorks/AsyncIterator +- 🕑 [Скасування асинхронних операцій](https://youtu.be/T8fXlnqI4Ws) + - 🧑‍💻 Приклади коду: https://github.com/HowProgrammingWorks/Cancelable +- ✨ Буде нова лекція: Скасування асинхронних операцій +- 🧩 [Асинхронна композиція функцій](https://youtu.be/3ZCrMlMpOrM) + - 🧑‍💻 Приклади коду: https://github.com/HowProgrammingWorks/AsyncCompose +- 🧩 [Thenable та легкий await](https://youtu.be/DXp__1VNIvI) + - 🧑‍💻 Приклади коду: https://github.com/HowProgrammingWorks/Thenable +- 🧩 [Конкурентна асинхронна черга](https://youtu.be/Lg46AH8wFvg) + - 🧑‍💻 Приклади коду: https://github.com/HowProgrammingWorks/ConcurrentQueue +- 🧩 [Паттерн відкритий конструктор (Revealing Constructor)](https://youtu.be/leR5sXRkuJI) + - 🧑‍💻 Приклади коду: https://github.com/HowProgrammingWorks/RevealingConstructor +- 🧩 [Future: Асинхронність на ф'ючерах без стану](https://youtu.be/22ONv3AGXdk) + - 🧑‍💻 Приклади коду: https://github.com/HowProgrammingWorks/Future +- 🕑 [Deferred: Асинхронність на диферах зі станом](https://youtu.be/a2fVA1o-ovM) + - 🧑‍💻 Приклади коду: https://github.com/HowProgrammingWorks/Deferred +- 🧩 [Модель акторів (Actor Model)](https://youtu.be/xp5MVKEqxY4) + - 🧑‍💻 Приклади коду: https://github.com/HowProgrammingWorks/ActorModel +- 🧩 [Паттерн Спостерігач (Observer + Observable)](https://youtu.be/_bFXuLcXoXg) + - 🧑‍💻 Приклади коду: https://github.com/HowProgrammingWorks/Observer +- ✨ [Асинхронність на RxJS та потоки подій](https://youtu.be/0kcpMAl-wfE) + - 🧑‍💻 Приклади коду: https://github.com/HowProgrammingWorks/Rx +- 🧩 Буде нова лекція: Async hooks +- 🧩 [Пам'ять, що доступна з багатьох тредів у Node.js](https://youtu.be/KNsm_iIQt7U) +- 🧩 [Асинхронний пул для worker thread pool у Node.js](https://youtu.be/Jj5KZRq4wYI) +- ✨ Асинхронне програмування з лекції [введення в Node.js](https://www.youtube.com/watch?v=mRvzgBGLVyM) From c9dae55000b97b8320401ce0ce0bdf82ce01d677 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Fri, 15 Sep 2023 20:51:30 +0300 Subject: [PATCH 213/308] Update Async.uk.md --- Courses/Async.uk.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Courses/Async.uk.md b/Courses/Async.uk.md index dee815e..318445c 100644 --- a/Courses/Async.uk.md +++ b/Courses/Async.uk.md @@ -7,6 +7,8 @@ - 🧩 - Необов'язкові лекції - 🕑 - Застарілі лекції (не актуальні чи історічні) +## Програма курсу + - ✨ [Асинхронне програмування (огляд)](https://youtu.be/hY6Z6qNYzmc) - ✨ [Таймери, таймаути та EventEmitter](https://youtu.be/LK2jveAnRNg) - 🧑‍💻 Таймери: https://github.com/HowProgrammingWorks/Timers From 21e55a6c351b11c93c75e4dc756b564029a98b1f Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Fri, 15 Sep 2023 22:45:38 +0300 Subject: [PATCH 214/308] Update Fundamentals-2023.md --- Courses/Fundamentals-2023.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Courses/Fundamentals-2023.md b/Courses/Fundamentals-2023.md index 5cac79d..92b810c 100644 --- a/Courses/Fundamentals-2023.md +++ b/Courses/Fundamentals-2023.md @@ -12,7 +12,8 @@ ## Перший семестр - Введення та огляд метеріалу - - ⭐ Новий вступ + - ⭐ [Новий вступ](https://youtu.be/1lU7G46S4FA) + - ⭐ [Q&A для усіх курсів](https://youtu.be/Wm7wclbv1Ik) - 🧩 [Введення у програмування](https://youtu.be/5Gt61EX6HZ4) - 🧩 [Введення у програмування, продовження](https://youtu.be/PzlLXQ3RaDs) - 🧩 [Мови програмування](https://youtu.be/enHA1CRkJe0) From bbe8e6b915f68fef87e4a0f2e04133bc1f34b6c7 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Fri, 15 Sep 2023 22:50:01 +0300 Subject: [PATCH 215/308] Update Async.uk.md --- Courses/Async.uk.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/Courses/Async.uk.md b/Courses/Async.uk.md index 318445c..8d723f3 100644 --- a/Courses/Async.uk.md +++ b/Courses/Async.uk.md @@ -9,6 +9,8 @@ ## Програма курсу +- ⭐ [Вступ та організаційні питання](https://youtu.be/vfEyRijm83g) +- ⭐ [Q&A семінар для усіх курсів](https://youtu.be/Wm7wclbv1Ik) - ✨ [Асинхронне програмування (огляд)](https://youtu.be/hY6Z6qNYzmc) - ✨ [Таймери, таймаути та EventEmitter](https://youtu.be/LK2jveAnRNg) - 🧑‍💻 Таймери: https://github.com/HowProgrammingWorks/Timers @@ -43,7 +45,7 @@ - 🧑‍💻 Асинхронные итераторы: https://github.com/HowProgrammingWorks/AsyncIterator - 🕑 [Скасування асинхронних операцій](https://youtu.be/T8fXlnqI4Ws) - 🧑‍💻 Приклади коду: https://github.com/HowProgrammingWorks/Cancelable -- ✨ Буде нова лекція: Скасування асинхронних операцій +- ⭐ Буде нова лекція: AbortController та AbortSygnal - Скасування асинхронних операцій - 🧩 [Асинхронна композиція функцій](https://youtu.be/3ZCrMlMpOrM) - 🧑‍💻 Приклади коду: https://github.com/HowProgrammingWorks/AsyncCompose - 🧩 [Thenable та легкий await](https://youtu.be/DXp__1VNIvI) @@ -62,7 +64,7 @@ - 🧑‍💻 Приклади коду: https://github.com/HowProgrammingWorks/Observer - ✨ [Асинхронність на RxJS та потоки подій](https://youtu.be/0kcpMAl-wfE) - 🧑‍💻 Приклади коду: https://github.com/HowProgrammingWorks/Rx -- 🧩 Буде нова лекція: Async hooks +- ⭐ Буде нова лекція: Async hooks - 🧩 [Пам'ять, що доступна з багатьох тредів у Node.js](https://youtu.be/KNsm_iIQt7U) - 🧩 [Асинхронний пул для worker thread pool у Node.js](https://youtu.be/Jj5KZRq4wYI) - ✨ Асинхронне програмування з лекції [введення в Node.js](https://www.youtube.com/watch?v=mRvzgBGLVyM) From 0b3fb659568ba344bb05b94610ff3caca13530a1 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Mon, 18 Sep 2023 13:26:06 +0300 Subject: [PATCH 216/308] Create Beginners.md --- Courses/Beginners.md | 56 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 Courses/Beginners.md diff --git a/Courses/Beginners.md b/Courses/Beginners.md new file mode 100644 index 0000000..bf9f2ec --- /dev/null +++ b/Courses/Beginners.md @@ -0,0 +1,56 @@ +# Основы программирования + +- Автор: https://github.com/tshemsedinov +- Новости в телеграм канале: https://t.me/HowProgrammingWorks +- Для вопросов группа в телеграме: https://t.me/MetarhiaHPW +- Youtube: https://www.youtube.com/@MetatechEducation/playlists + +## Оглавление + +- ⭐ [Введение](https://youtu.be/2DM5I2CI4gY) +- ⭐ [Идентификаторы: переменные и константы](https://youtu.be/fb318yXGwxo) +- ⭐ [запись значений и типы данных](https://youtu.be/B1Y00zN31Yg) +- ⭐ [Функции и блоки, область видимости, контексты](https://youtu.be/JdscRDLG9A4) +- ⭐ [Условия и ветвление](https://youtu.be/O_EJ0StSnac) +- ⭐ [Циклы: for, for..of и for..in](https://youtu.be/_Jxe-WacgUs) +- ⭐ [Циклы while и do..while](https://youtu.be/wDVQrZx2dKU) +- ⭐ [Коллекции: массивы и объекты - Array и Object](https://youtu.be/dZJ97DMu2cA) +- ⭐ [Объекты: примеси и сериализация](https://youtu.be/zRr-WZB7AK8) +- 🧑‍💻 [Задачи 1-5](https://github.com/HowProgrammingWorks/Book/blob/master/content/ru/2-9-Tasks.md) +- 🧑‍💻 [Разбор решения задач 1-5](https://youtu.be/WNNJfjL3h3s) +- ⭐ [Коллекции: Множества Set и хеш-таблицы Map](https://youtu.be/OE9DxIBu-8I) +- ⭐ [Callback - функции обратного вызова и Таймеры](https://youtu.be/6eg-WMDejSM) +- ⭐ [Замыкания (closure) функция и контекст](https://youtu.be/LUd-cFkhCrY) +- ⭐ [Async/await - асинхронные функции](https://youtu.be/DrOiZBcWlKg) +- ⭐ [Ошибки (Error), исключения (exceptions), баги, throw, try/catch](https://youtu.be/MF8u1Oj64Dk) +- ⭐ [Системы модульности: ESM (ECMAScript Modules) та CJS (CommonJS)](https://youtu.be/roinnSNNgjs) +- ⭐ [Декомпозиция программы на модули](https://youtu.be/7S6TrUbFMlQ) +- ⭐ [Рекурсия (recursion), выход из нее и стек вызовов (call stack)](https://youtu.be/c1rJema94iY) +- 🧑‍💻 [Задачи: 38 примеров плохого кода для переписывания](https://github.com/HowProgrammingWorks/Exams/tree/master/Tasks) + +Продолжение будет... + +Более сложные лекции можно найти тут: https://github.com/HowProgrammingWorks/Index/blob/master/Courses/Fundamentals.md + +## Рекомендации по решению задач + +🧑‍💻 Задачи: https://github.com/HowProgrammingWorks/Exams/tree/master/Tasks + +- Код изначально работает, и выдает правильный результат, вам нужно исправлять файл, но не сломать код +- Используйте тесты из каталога `Tests` для проверки решений. +- Ваша задача улучшить: понятность кода, стиль, простоту +- Тут чеклист частых ошибок (они точно должны быть исправлены): + - Не модифицируйте входные параметры функций + - Предпочитайте стрелочные функции + - Используйте eslint и prettier с нашими настройками (см. в корне репозитория) + - Предпочтительно использвать `for..of`, реже `Array/map`, реже `for` по переменной, избегайте `for..in` и `forEach` + - Используйте промежуточные идентификаторы разделяя длинные выражения + - Предпочитайте `const`, реже используйте `let`, но никогда не используйте `var` + - Преобразуйте все магические значения в константы + - Придерживайтесь правил именования идентификаторов + - Хорошо подумайте над именами идентификаторов, чтобы при прочтении кода всем было понятно их содержимое + - Не делайте слишком длнииых функций + - Не делайте большую стопку if-выражений, вместо этого используйте массивы и объекты + - Важно не переписать с нуля, а именно пошагово улучшать + +👉 Индекс других курсов: https://github.com/HowProgrammingWorks/Index From 84830bb251bc75121762e55eb35db4d94f058dc7 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Wed, 27 Sep 2023 09:46:12 +0300 Subject: [PATCH 217/308] Update Talks.md --- Courses/Talks.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Courses/Talks.md b/Courses/Talks.md index 129790e..0b20a27 100644 --- a/Courses/Talks.md +++ b/Courses/Talks.md @@ -11,10 +11,11 @@ - [Применение ChatGPT в оптимизации JavaScript для NodeJS](https://youtu.be/Ebrzqj8cGUY) - [Прекращение поддержки Node.js 14.x и обновление до 16, 18, 20](https://youtu.be/HriGsw3IPmQ) - [Революция в ИТ: 2023-24, что учить, трансформация бизнеса, кого нанимать и новые профессии](https://youtu.be/hYbF3IlMovE) -- [How to use LLMs in Software Development and its limits](https://www.aintelligence.tech/en/schedule) at Artificial Intelligence: Challenges and Opportunities for Ukraine. 14 Sep +- [How to use LLMs in Software Development and its limits](https://youtu.be/jKSc5Tx1Au8?si=wb76W3T9swD6lsuU) at [Artificial Intelligence](https://www.aintelligence.tech/en/schedule): Challenges and Opportunities for Ukraine. 14 Sep - [Metarhia Business Owners club # 1 - Запуск сообщества бизнесовнеров продуктов, стартапов, компаний](https://youtu.be/T0zMsmfxo0c) - [Metarhia Business Owners club # 2 - Новости, образование, документация, лоукод](https://youtu.be/pMC-NjKD-6E) - [Тотальная цифровизация минобороны: вызовы команды нового министра | Шемсединов, Фельдман](https://www.youtube.com/live/dPXvdpNzLx4) +- Введение в ИТ специальности / Крымскотатарский культурный центр / 23 Sep 2023 September 14, 2023 at 4:00 PM From 8664eb62016212d00a25a4651afa79551bfcb955 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Wed, 27 Sep 2023 09:47:40 +0300 Subject: [PATCH 218/308] Remove stuff --- Courses/Talks.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/Courses/Talks.md b/Courses/Talks.md index 0b20a27..f9b6464 100644 --- a/Courses/Talks.md +++ b/Courses/Talks.md @@ -17,8 +17,6 @@ - [Тотальная цифровизация минобороны: вызовы команды нового министра | Шемсединов, Фельдман](https://www.youtube.com/live/dPXvdpNzLx4) - Введение в ИТ специальности / Крымскотатарский культурный центр / 23 Sep 2023 -September 14, 2023 at 4:00 PM - ## 2022 - [Интервью на 5 часов на канале ITBEARD](https://youtu.be/0xtEdIy2j88) From 8be1f1f38050961ec44961271bfaf361d5717ef7 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Wed, 27 Sep 2023 13:31:38 +0300 Subject: [PATCH 219/308] Add links telegram --- Courses/Async-2024.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/Courses/Async-2024.md b/Courses/Async-2024.md index 7fdafa1..9cd60f8 100644 --- a/Courses/Async-2024.md +++ b/Courses/Async-2024.md @@ -37,3 +37,8 @@ - Любая среда разработки, IDE или редактор Чем это курс не является: это не чтение документации, не курс по библиотекам и фреймворкам, не повторение старого курса, не лайвкодинг и не мастеркласс, не стрим. Новый курс - это максимально сконцентрированная информация и практические задачи как для прикладного, так и для системного программирования со сравнением этих подходов. + +## Как попасть на курс + +- Новости будут в канале: https://t.me/asyncify +- Группа курса: https://t.me/asynctalks From 499d0db4b450ce7209bb34eccacf2c0bddcced6f Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Thu, 5 Oct 2023 15:20:16 +0300 Subject: [PATCH 220/308] Update Fundamentals-2023.md --- Courses/Fundamentals-2023.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Courses/Fundamentals-2023.md b/Courses/Fundamentals-2023.md index 92b810c..01cb8ef 100644 --- a/Courses/Fundamentals-2023.md +++ b/Courses/Fundamentals-2023.md @@ -58,7 +58,8 @@ - ✨ [Налаштування середовища: Node.js, npm, git, eslint](https://youtu.be/hSyA7tcNaCE) Дивитись вибірково, що не зрозуміло – пропускайте - ✨ Старий семінар: [Автоматична перевірка лабораторних робіт](https://youtu.be/M4KpG0LEAyA) - ✨ Семінар: [Виконання лабораторних робіт з курсу](https://youtu.be/ikUOyFPzdJw) - - 🧑‍💻 Завдання: [Exercises.ru.md](https://github.com/HowProgrammingWorks/Introduction/blob/master/Exercises.ru.md) + - 🧑‍💻 Підготовка середовища виконання завдань: [Exercises.ru.md](https://github.com/HowProgrammingWorks/Introduction/blob/master/Exercises.ru.md) + - 🧑‍💻 Завдання: [SEF1.ru.md](https://github.com/HowProgrammingWorks/Index/blob/master/Practice/SEF1.ru.md) - Callbacks, timers - ⭐ [Функції зворотнього виклику (callbacks) та таймери](https://youtu.be/MFG3NaEwu70) - 🧑‍💻 Функції зворотнього виклику: https://github.com/HowProgrammingWorks/Callbacks From a7acb8515353209541257336cece7b7bb2e83f87 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Mon, 6 Nov 2023 17:40:02 +0200 Subject: [PATCH 221/308] Add links to new course --- Courses/NodeJS.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/Courses/NodeJS.md b/Courses/NodeJS.md index e079db7..6c742a9 100644 --- a/Courses/NodeJS.md +++ b/Courses/NodeJS.md @@ -4,7 +4,8 @@ Перед основной частью курса по Node.js нужно сначала освоить хоть частично курс по асинхронному программированию: https://github.com/HowProgrammingWorks/Index/blob/master/Courses/Asynchronous.md -[Для части лекций есть таймкоды и подробное оглавление](NodeJS-timecodes.md) +- [Для части лекций есть таймкоды и подробное оглавление](NodeJS-timecodes.md) +- [Новый курс Node.js 2023](https://github.com/HowProgrammingWorks/Index/blob/master/Courses/NodeJS-2022-2023.md) ## Доклады и выступления @@ -149,3 +150,5 @@ ## Вспомогательные темы - [Асинхронный пул для worker thread pool в Node.js](https://youtu.be/Jj5KZRq4wYI) + +👉 [Новый курс Node.js 2023](https://github.com/HowProgrammingWorks/Index/blob/master/Courses/NodeJS-2022-2023.md) From 0fac31d9d8890575973ddde958f773ce0fe4e6cc Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Wed, 8 Nov 2023 23:27:03 +0200 Subject: [PATCH 222/308] Add call 3 --- Courses/Talks.md | 1 + 1 file changed, 1 insertion(+) diff --git a/Courses/Talks.md b/Courses/Talks.md index f9b6464..63d95d5 100644 --- a/Courses/Talks.md +++ b/Courses/Talks.md @@ -14,6 +14,7 @@ - [How to use LLMs in Software Development and its limits](https://youtu.be/jKSc5Tx1Au8?si=wb76W3T9swD6lsuU) at [Artificial Intelligence](https://www.aintelligence.tech/en/schedule): Challenges and Opportunities for Ukraine. 14 Sep - [Metarhia Business Owners club # 1 - Запуск сообщества бизнесовнеров продуктов, стартапов, компаний](https://youtu.be/T0zMsmfxo0c) - [Metarhia Business Owners club # 2 - Новости, образование, документация, лоукод](https://youtu.be/pMC-NjKD-6E) +- [Metarhia Business Owners club # 3 - Документация, новые возможности, план развития платформы](https://youtu.be/8JzZ2vBhvNM) - [Тотальная цифровизация минобороны: вызовы команды нового министра | Шемсединов, Фельдман](https://www.youtube.com/live/dPXvdpNzLx4) - Введение в ИТ специальности / Крымскотатарский культурный центр / 23 Sep 2023 From e973484b52d41ee960bae855ca919692b113551b Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Wed, 8 Nov 2023 23:28:06 +0200 Subject: [PATCH 223/308] Add interview --- Courses/Talks.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Courses/Talks.md b/Courses/Talks.md index 63d95d5..6b22bdb 100644 --- a/Courses/Talks.md +++ b/Courses/Talks.md @@ -16,7 +16,7 @@ - [Metarhia Business Owners club # 2 - Новости, образование, документация, лоукод](https://youtu.be/pMC-NjKD-6E) - [Metarhia Business Owners club # 3 - Документация, новые возможности, план развития платформы](https://youtu.be/8JzZ2vBhvNM) - [Тотальная цифровизация минобороны: вызовы команды нового министра | Шемсединов, Фельдман](https://www.youtube.com/live/dPXvdpNzLx4) -- Введение в ИТ специальности / Крымскотатарский культурный центр / 23 Sep 2023 +- [Введение в ИТ специальности / Крымскотатарский ИТ канал / 23 Sep 2023](https://youtu.be/kN12mb_3PRE) ## 2022 From 08faf99f059435fe9b46cf6da1a60d753b8c1508 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Sun, 12 Nov 2023 19:33:09 +0200 Subject: [PATCH 224/308] NodeJS 2024 --- Courses/NodeJS-2024.md | 115 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 115 insertions(+) create mode 100644 Courses/NodeJS-2024.md diff --git a/Courses/NodeJS-2024.md b/Courses/NodeJS-2024.md new file mode 100644 index 0000000..412c3f4 --- /dev/null +++ b/Courses/NodeJS-2024.md @@ -0,0 +1,115 @@ +# Технологический стек Node.js в 2024 + +Объем материала: 20 часов лекций, еженедельно 2 часа семинары в течении года, репозитории с примерами кода. +Что нужно знать на входе: +- [Синтаксис JavaScript без всяких триков](https://github.com/HowProgrammingWorks/Index/blob/master/Courses/Fundamentals.md) +- [Основы асинхронного программирования](https://github.com/HowProgrammingWorks/Index/blob/master/Courses/Asynchronous.md) +- Уверенно владеть git, иметь github аккаунт +- Желательно docker, иметь рабочую машину на linux или mac +- Любая среда разработки, IDE или редактор + +Ссылки на старый курс: +- [Структура со ссылками на видео и репозитории с примерами кода](NodeJS.md) +- [Для части лекций есть таймкоды и подробное оглавление](NodeJS-timecodes.md) + +Чем это курс не является: это не чтение документации, не курс по фреймворкам, не курс по Metarhia, не повторение старого курса, не лайвкодинг и не мастеркласс, не стрим. Новый курс - это максимально сконцентрированная информация и практические задачи по разработке на чистой ноде но с хорошей архитектурой и использованием всех современных возможностей Node.js + +👉 Patreon: https://www.patreon.com/tshemsedinov +👉 Видео обзор курса: (готовится) +👉 Вопросы на интервью: https://github.com/tshemsedinov/NodeJS-Interview-Questions + +## Содержание + +- ⭐ [Введение в технологию 🚀](https://youtu.be/mRvzgBGLVyM) + - 🧑‍💻 [HTTP сервер для статики](https://github.com/HowProgrammingWorks/NodeServer/tree/master/native-2022) + - 🔗 [Таблица поддержки возможностей в версиях ноды](https://node.green/) + - 🔗 [Автоматизация проверки безопасности кода](https://snyk.io/) + - 🔗 [Встроенный в npm аудит безопасности](https://docs.npmjs.com/cli/v8/commands/npm-audit) + - 🧩 [Сравнение кластеризации HTTP, TCP и UDP на процессах и потоках](https://youtu.be/dum4b4EZktY) + - 🧩 [Стрим про асинхронность и фазы ивентлупа](https://youtu.be/ND5HNHicACI) +- ⭐ Структура приложений: системы модульности, пакеты и зависимости + - 💻 [Системы модульности, CommonJS, ESModules, реализация своей системы модульности](https://github.com/HowProgrammingWorks/Modularity) + - 💻 [Пакеты и их загрузка в разных системах модульности](https://github.com/HowProgrammingWorks/Packages) +- ⭐ Архитектура приложений: слои и внедрение зависимостей + - 💻 [Пошаговый рефакторинг от мидлварей до слоеной архитектуры](https://github.com/HowProgrammingWorks/DDD) + - 🧩 [Почему мидлвари это плохо](https://youtu.be/RS8x73z4csI) +- ⭐ Layers and Low Coupling на примере конфига и транспорта + - 💻 [Примеры кода "A", "B" и "C" к лекции](https://github.com/HowProgrammingWorks/DDD) +- ⭐ Базы данных, модель, заголовки .d.ts и линтеры +- ⭐ Криптография: crypto, хеширование паролей с солью, session token, UUID, случайные числа + - 💻 Реализация `randomPrefetcher` из библиотеки `metautil`: https://github.com/metarhia/metautil/blob/v3.7.0/lib/crypto.js + - 💻 Упрощенное хеширование: https://github.com/HowProgrammingWorks/DDD/blob/master/JavaScript/d-messenger/lib/common.js + - 💻 Полноценное хеширование: https://github.com/metatech-university/NodeJS-Pure/blob/main/lib/common.js + - 💻 Генерация UUID: https://nodejs.org/api/crypto.html#cryptorandomuuidoptions + - 🔗 Документация по `node:crypto`: https://nodejs.org/api/crypto.html +- ⭐ [Применение Chat GPT в оптимизации JavaScript для Node.js](https://youtu.be/Ebrzqj8cGUY) + - 💻 [Chunk encode/decode with typed arrays](https://github.com/HowProgrammingWorks/ChatGPT/tree/main/JavaScript/1-Chunk) + - 💻 [Promise chain and async code optimization](https://github.com/HowProgrammingWorks/ChatGPT/tree/main/JavaScript/2-Promise) + - 💻 [Crypto random prefetcher](https://github.com/HowProgrammingWorks/ChatGPT/tree/main/JavaScript/3-Prefetcher) +- ⭐ Структура классов сервера и GoF паттерны в Node.js +- ⭐ Подсистема `Authentication` +- ⭐ Подсистема `Role Based Access Control` + - Системы прав ACL, ABAC, RBAC, и проектирование нашей системы прав для курса +- ⭐ Стримы Readable, Writable, Transform, открытый конструктор, буферизация, backpressure + - 💻 Примеры кода: https://github.com/HowProgrammingWorks/Streams/tree/master/JavaScript +- ⭐ Инфраструктура и инструментарий: тайпинги, тестирование, линтеры, CI/CD, встроенный testing framework +- ⭐ Работа с ошибками и исключениями, `Graceful shutdown` в Node.js, `unhandled exceptions`, `async stack trace` + - 💻 Async stack trace: https://github.com/HowProgrammingWorks/StackTrace/blob/master/JavaScript/6-pass-through.js + - 💻 Graceful shutdown: https://github.com/HowProgrammingWorks/GracefulShutdown +- ⭐ Асинхронное, реактивное и параллельное программирование + - ✨ Обзор асинхронного программирования в Node.js: https://youtu.be/hY6Z6qNYzmc + - 💻 Разные контракты: https://github.com/HowProgrammingWorks/AsynchronousProgramming + - 💻 Таймеры: https://github.com/HowProgrammingWorks/Timers + - 💻 EventEmitter: https://github.com/HowProgrammingWorks/EventEmitter + - 💻 Промисы: https://github.com/HowProgrammingWorks/Promise + - 💻 Async/await: https://github.com/HowProgrammingWorks/AsyncAwait + - 💻 Асинхронные адаптеры: https://github.com/HowProgrammingWorks/AsyncAdapter + - 💻 Асинхронные итераторы: https://github.com/HowProgrammingWorks/AsyncIterator + - 💻 Thenable: https://github.com/HowProgrammingWorks/Thenable + - 💻 Асинхронная очередь: https://github.com/HowProgrammingWorks/ConcurrentQueue + - 💻 Паттерн открытый конструктор (Revealing Constructor): https://github.com/HowProgrammingWorks/RevealingConstructor +- ⭐ Работа с файлами и файловыми потоками, наблюдение за файловой системой + - ✨ Работа с файлами, буферами и файловыми потоками: https://youtu.be/eQGBS15vUac + - 💻 Работа с файлами: https://github.com/HowProgrammingWorks/Files + - 💻 Файловые потоки: https://github.com/HowProgrammingWorks/Streams + - 💻 Буферы: https://github.com/HowProgrammingWorks/Buffers + - 💻 Наблюдение за файлами: https://github.com/HowProgrammingWorks/FilesystemWatch +- ⭐ Принципы `GRASP` и `SOLID` в `JavaScript` с адаптацией для Node.js + - ✨ GRASP принципы с адаптацией для JavaScript и Node.js: https://youtu.be/ExauFjYV_lQ + - 💻 Information Expert: https://github.com/HowProgrammingWorks/InformationExpert + - 💻 Coupling and Cohesion: https://github.com/HowProgrammingWorks/CouplingCohesion + - 💻 Pure Fabrication: https://github.com/HowProgrammingWorks/PureFabrication + - 💻 Single responsibility: https://github.com/HowProgrammingWorks/SingleResponsibility + - 💻 Liskov substitution: https://github.com/HowProgrammingWorks/LiskovSubstitution + - 💻 IoC and DI: https://github.com/HowProgrammingWorks/InversionOfControl +- ⭐ Вопросы безопасности: `DoS`, `XSS`, `Path traversal`, `CSRF`, `SQL`-инъекции + - ✨ Безопасность приложений Node.js: https://youtu.be/Pdfo1G-gI6s + - 🔗 Слайды: https://www.slideshare.net/tshemsedinov/nodejs-security-199004963 +- ⭐ C/C++ Addons, Node-API (n-api), WebAssembly: Rust, WAT, C++, AssemblyScript + - 💻 N-API examples for C++ and Rust: https://github.com/HowProgrammingWorks/Node-API + - 💻 WebAssembly for C++, Rust, WAT, and AssemblyScript https://github.com/HowProgrammingWorks/WebAssembly + - 💻 In-place callback solution: https://github.com/tshemsedinov/wasm-import +- ⭐ Трекинг асинхронных контекстов: AsyncLocalStorage, AsyncResource + - 💻 Примеры использования AsyncLocalStorage и AsyncResource: https://github.com/HowProgrammingWorks/AsyncContextTracking +- ⭐ Проектирование API и проверка контрактов в рантайме + - ✨ Контрактное программирование: https://youtu.be/K5_kSUvbGEQ + - 💻 Примеры кода: https://github.com/HowProgrammingWorks/Contract +- ⭐ Вынесение подсистем как отдельных микросервисов +- ⭐ `Performance hooks`, телеметрия ресурсов и оптимизация: I/O bound, CPU bound, memory bound, профилирование +- ⭐ `Serverless` и облачные `FaaS` решения на базе Node.js + - ✨ Serverless Clouds (FaaS) и изоляция контекстов запросов в Node.js: https://youtu.be/x-Rd6fPV6L8 + - 🔗 Слайды: https://www.slideshare.net/tshemsedinov/serverless-clouds-faas-and-request-context-isolation-in-nodejs +- ⭐ Приложения, приближенные к реальному времени, Websocket, интерактивность и коллаборативные приложения + - 💻 Серверная реализация + - 💻 Клиентская реализация на C++ для Node.js 21 + - 💻 Интерактивность и коллоборативные приложения +- ⭐ Распределенные системы, высоконагруженные системы, балансировка нагрузки, кластеризация и масштабирование, IP sticky + - ✨ Доклад по высоконагруженным системам: https://youtu.be/7tfZDABPvVs + - ✨ HTTP сервер на Node.js (routing, cluster, IP sticky): https://youtu.be/7Ufxj0oTaUo + - 💻 Примеры серверов: https://github.com/HowProgrammingWorks/NodeServer +- ⭐ Изоляция кода и данных в Node.js: `vm`, `v8`, защита `global`, контекстов, модулей и прототипов от патчинга +- ⭐ Структура и архитектура проекта, слои, `DDD`, `Clean architecture`, связанность и связность кода, протекание абстракций + +# Доступ + +План подписки формируется. Приходите через неделю. From 713c03ec59e45c7205b9c88447f9a567137f397e Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Sun, 12 Nov 2023 19:34:23 +0200 Subject: [PATCH 225/308] Update NodeJS-2024.md --- Courses/NodeJS-2024.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Courses/NodeJS-2024.md b/Courses/NodeJS-2024.md index 412c3f4..4743c9f 100644 --- a/Courses/NodeJS-2024.md +++ b/Courses/NodeJS-2024.md @@ -14,8 +14,8 @@ Чем это курс не является: это не чтение документации, не курс по фреймворкам, не курс по Metarhia, не повторение старого курса, не лайвкодинг и не мастеркласс, не стрим. Новый курс - это максимально сконцентрированная информация и практические задачи по разработке на чистой ноде но с хорошей архитектурой и использованием всех современных возможностей Node.js -👉 Patreon: https://www.patreon.com/tshemsedinov -👉 Видео обзор курса: (готовится) +👉 Patreon: https://www.patreon.com/tshemsedinov +👉 Видео обзор курса: (готовится) 👉 Вопросы на интервью: https://github.com/tshemsedinov/NodeJS-Interview-Questions ## Содержание From afd744d7858cc58389535f858a2a8cca28c53289 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Thu, 30 Nov 2023 13:42:59 +0200 Subject: [PATCH 226/308] Add NOCODE SUMMIT Almaty --- Courses/Talks.md | 1 + 1 file changed, 1 insertion(+) diff --git a/Courses/Talks.md b/Courses/Talks.md index 6b22bdb..bdf3a07 100644 --- a/Courses/Talks.md +++ b/Courses/Talks.md @@ -8,6 +8,7 @@ - [Образование будущего: украинский взгляд | Владимир Спиваковский, Тимур Шемсединов, Николай Фельдман](https://www.youtube.com/watch?v=yFYdFZuWm8o) - [Стрим про образование программиста с Тимуром Шемсединовым и Сергеем Немчинским](https://www.youtube.com/live/pcwccVihgeg?feature=share) - [«No Code, No Conference» 2023-03-16](https://flowmates.org/) +- [Человек как преодоление пропасти между AI и программированием — NOCODE SUMMIT Almaty 2023-11-30](https://flowmates.org/no-code-summit-almaty/) - [Применение ChatGPT в оптимизации JavaScript для NodeJS](https://youtu.be/Ebrzqj8cGUY) - [Прекращение поддержки Node.js 14.x и обновление до 16, 18, 20](https://youtu.be/HriGsw3IPmQ) - [Революция в ИТ: 2023-24, что учить, трансформация бизнеса, кого нанимать и новые профессии](https://youtu.be/hYbF3IlMovE) From 8387c09e5040a3c8e186f66aed8b08ddb5d5a4b7 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Sat, 2 Dec 2023 09:57:47 +0200 Subject: [PATCH 227/308] Update NodeJS-2024.md --- Courses/NodeJS-2024.md | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/Courses/NodeJS-2024.md b/Courses/NodeJS-2024.md index 4743c9f..e9a09f9 100644 --- a/Courses/NodeJS-2024.md +++ b/Courses/NodeJS-2024.md @@ -1,6 +1,7 @@ # Технологический стек Node.js в 2024 -Объем материала: 20 часов лекций, еженедельно 2 часа семинары в течении года, репозитории с примерами кода. +Объем материала: 20 часов основного материала + 20 часов по выбору, еженедельно 4 часа (2 раза по 2 часа) созвоны с ревью кода и ответами на вопросы в течении года, репозитории с примерами кода. + Что нужно знать на входе: - [Синтаксис JavaScript без всяких триков](https://github.com/HowProgrammingWorks/Index/blob/master/Courses/Fundamentals.md) - [Основы асинхронного программирования](https://github.com/HowProgrammingWorks/Index/blob/master/Courses/Asynchronous.md) @@ -109,7 +110,12 @@ - 💻 Примеры серверов: https://github.com/HowProgrammingWorks/NodeServer - ⭐ Изоляция кода и данных в Node.js: `vm`, `v8`, защита `global`, контекстов, модулей и прототипов от патчинга - ⭐ Структура и архитектура проекта, слои, `DDD`, `Clean architecture`, связанность и связность кода, протекание абстракций +- ⭐ Реализация HTTP Proxy + - 📢 [Разбор примеров кода Timur Sevimli](https://youtu.be/4yF6hlxiIic) + - 💻 Примеры кода из видео: https://github.com/HowProgrammingWorks/ProxyHTTP + +План курса формируется. Тут появится еще много тем в ближайшее время. # Доступ -План подписки формируется. Приходите через неделю. +План подписки формируется. Подписывайтесь на https://t.me/metarhia и https://www.youtube.com/@TimurShemsedinov чтобы следить за новостями. From 42ef645879fdfcd00f2b4a696d5965a1b478ab12 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Sat, 2 Dec 2023 10:00:31 +0200 Subject: [PATCH 228/308] Add node.js 2024 video review --- Courses/NodeJS-2024.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Courses/NodeJS-2024.md b/Courses/NodeJS-2024.md index e9a09f9..7892170 100644 --- a/Courses/NodeJS-2024.md +++ b/Courses/NodeJS-2024.md @@ -16,7 +16,7 @@ Чем это курс не является: это не чтение документации, не курс по фреймворкам, не курс по Metarhia, не повторение старого курса, не лайвкодинг и не мастеркласс, не стрим. Новый курс - это максимально сконцентрированная информация и практические задачи по разработке на чистой ноде но с хорошей архитектурой и использованием всех современных возможностей Node.js 👉 Patreon: https://www.patreon.com/tshemsedinov -👉 Видео обзор курса: (готовится) +👉 Видео обзор курса: https://youtu.be/moH8df67zAM 👉 Вопросы на интервью: https://github.com/tshemsedinov/NodeJS-Interview-Questions ## Содержание From ddde9e3be32ba5c8c6df44b2b62e4495e24558c3 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Sat, 2 Dec 2023 10:14:58 +0200 Subject: [PATCH 229/308] Add subscription plan for NodeJS-2024 --- Courses/NodeJS-2024.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/Courses/NodeJS-2024.md b/Courses/NodeJS-2024.md index 7892170..3efce1c 100644 --- a/Courses/NodeJS-2024.md +++ b/Courses/NodeJS-2024.md @@ -118,4 +118,8 @@ # Доступ -План подписки формируется. Подписывайтесь на https://t.me/metarhia и https://www.youtube.com/@TimurShemsedinov чтобы следить за новостями. +Сейчас на курс можно записаться по плану «Expert» на 1 год за $204 (+ локальные налоги) на Patreon. Помесячная подписка «Expert» не дает доступа. Матераиалы курса остается и после завершения подписки (не нужно ее продлять все время, я не забираю доступ). Как только план курса будет сформирован и курс стартует, его цена будет выше, ориентировочно на 30%. + +👉 Подписаться: https://www.patreon.com/tshemsedinov + + Подписывайтесь на https://t.me/metarhia и https://www.youtube.com/@TimurShemsedinov чтобы следить за новостями. From bb680fc91c134653d5f4987b3aa2d2ed8cd66abd Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Sat, 2 Dec 2023 21:38:03 +0200 Subject: [PATCH 230/308] Fix spelling --- Courses/NodeJS-2024.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Courses/NodeJS-2024.md b/Courses/NodeJS-2024.md index 3efce1c..0f3b678 100644 --- a/Courses/NodeJS-2024.md +++ b/Courses/NodeJS-2024.md @@ -13,7 +13,7 @@ - [Структура со ссылками на видео и репозитории с примерами кода](NodeJS.md) - [Для части лекций есть таймкоды и подробное оглавление](NodeJS-timecodes.md) -Чем это курс не является: это не чтение документации, не курс по фреймворкам, не курс по Metarhia, не повторение старого курса, не лайвкодинг и не мастеркласс, не стрим. Новый курс - это максимально сконцентрированная информация и практические задачи по разработке на чистой ноде но с хорошей архитектурой и использованием всех современных возможностей Node.js +Чем этот курс не является: это не чтение документации, не курс по фреймворкам, не курс по Metarhia, не повторение старого курса, не лайвкодинг и не мастеркласс, не стрим. Новый курс - это максимально сконцентрированная информация и практические задачи по разработке на чистой ноде но с хорошей архитектурой и использованием всех современных возможностей Node.js 👉 Patreon: https://www.patreon.com/tshemsedinov 👉 Видео обзор курса: https://youtu.be/moH8df67zAM From 8a01a8ea9894c8fc6c85a2f7c84829441d835b5a Mon Sep 17 00:00:00 2001 From: Sergei Mirasov <118269956+tr0hvx2u@users.noreply.github.com> Date: Mon, 25 Sep 2023 14:27:50 +0800 Subject: [PATCH 231/308] Fix typos in Beginners.md - Fixed text typos - Added link to NodejsStarterKit repo --- Courses/Beginners.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Courses/Beginners.md b/Courses/Beginners.md index bf9f2ec..44eba8c 100644 --- a/Courses/Beginners.md +++ b/Courses/Beginners.md @@ -9,7 +9,7 @@ - ⭐ [Введение](https://youtu.be/2DM5I2CI4gY) - ⭐ [Идентификаторы: переменные и константы](https://youtu.be/fb318yXGwxo) -- ⭐ [запись значений и типы данных](https://youtu.be/B1Y00zN31Yg) +- ⭐ [Запись значений и типы данных](https://youtu.be/B1Y00zN31Yg) - ⭐ [Функции и блоки, область видимости, контексты](https://youtu.be/JdscRDLG9A4) - ⭐ [Условия и ветвление](https://youtu.be/O_EJ0StSnac) - ⭐ [Циклы: for, for..of и for..in](https://youtu.be/_Jxe-WacgUs) @@ -42,14 +42,14 @@ - Тут чеклист частых ошибок (они точно должны быть исправлены): - Не модифицируйте входные параметры функций - Предпочитайте стрелочные функции - - Используйте eslint и prettier с нашими настройками (см. в корне репозитория) - - Предпочтительно использвать `for..of`, реже `Array/map`, реже `for` по переменной, избегайте `for..in` и `forEach` + - Используйте eslint и prettier с нашими настройками (см. в корне репозитория [NodejsStarterKit](https://github.com/HowProgrammingWorks/NodejsStarterKit)) + - Предпочтительно использовать `for..of`, реже `Array/map`, реже `for` по переменной, избегайте `for..in` и `forEach` - Используйте промежуточные идентификаторы разделяя длинные выражения - Предпочитайте `const`, реже используйте `let`, но никогда не используйте `var` - Преобразуйте все магические значения в константы - Придерживайтесь правил именования идентификаторов - Хорошо подумайте над именами идентификаторов, чтобы при прочтении кода всем было понятно их содержимое - - Не делайте слишком длнииых функций + - Не делайте слишком длинных функций - Не делайте большую стопку if-выражений, вместо этого используйте массивы и объекты - Важно не переписать с нуля, а именно пошагово улучшать From 30120437832ffd1ee0b8eae7c86b111a31380960 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Sun, 3 Dec 2023 11:03:04 +0200 Subject: [PATCH 232/308] Reorder Talks --- Courses/Talks.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Courses/Talks.md b/Courses/Talks.md index bdf3a07..88e0eaf 100644 --- a/Courses/Talks.md +++ b/Courses/Talks.md @@ -4,20 +4,20 @@ ## 2023 -- [Искусственный интеллект заменяет программистов | Тимур Шемсединов, Николай Фельдман | Альфа и Омега](https://www.youtube.com/watch?v=i6vOhIor-ow) -- [Образование будущего: украинский взгляд | Владимир Спиваковский, Тимур Шемсединов, Николай Фельдман](https://www.youtube.com/watch?v=yFYdFZuWm8o) - [Стрим про образование программиста с Тимуром Шемсединовым и Сергеем Немчинским](https://www.youtube.com/live/pcwccVihgeg?feature=share) +- [Введение в ИТ специальности / Крымскотатарский ИТ канал / 23 Sep 2023](https://youtu.be/kN12mb_3PRE) - [«No Code, No Conference» 2023-03-16](https://flowmates.org/) - [Человек как преодоление пропасти между AI и программированием — NOCODE SUMMIT Almaty 2023-11-30](https://flowmates.org/no-code-summit-almaty/) - [Применение ChatGPT в оптимизации JavaScript для NodeJS](https://youtu.be/Ebrzqj8cGUY) - [Прекращение поддержки Node.js 14.x и обновление до 16, 18, 20](https://youtu.be/HriGsw3IPmQ) - [Революция в ИТ: 2023-24, что учить, трансформация бизнеса, кого нанимать и новые профессии](https://youtu.be/hYbF3IlMovE) -- [How to use LLMs in Software Development and its limits](https://youtu.be/jKSc5Tx1Au8?si=wb76W3T9swD6lsuU) at [Artificial Intelligence](https://www.aintelligence.tech/en/schedule): Challenges and Opportunities for Ukraine. 14 Sep +- [How to use LLMs in Software Development and its limits](https://youtu.be/jKSc5Tx1Au8) at [Artificial Intelligence](https://www.aintelligence.tech/en/schedule): Challenges and Opportunities for Ukraine. 14 Sep - [Metarhia Business Owners club # 1 - Запуск сообщества бизнесовнеров продуктов, стартапов, компаний](https://youtu.be/T0zMsmfxo0c) - [Metarhia Business Owners club # 2 - Новости, образование, документация, лоукод](https://youtu.be/pMC-NjKD-6E) - [Metarhia Business Owners club # 3 - Документация, новые возможности, план развития платформы](https://youtu.be/8JzZ2vBhvNM) +- [Искусственный интеллект заменяет программистов | Тимур Шемсединов, Николай Фельдман | Альфа и Омега](https://www.youtube.com/watch?v=i6vOhIor-ow) +- [Образование будущего: украинский взгляд | Владимир Спиваковский, Тимур Шемсединов, Николай Фельдман](https://www.youtube.com/watch?v=yFYdFZuWm8o) и на [канале Alpha media](https://www.youtube.com/live/sVzvPqSXQ40) - [Тотальная цифровизация минобороны: вызовы команды нового министра | Шемсединов, Фельдман](https://www.youtube.com/live/dPXvdpNzLx4) -- [Введение в ИТ специальности / Крымскотатарский ИТ канал / 23 Sep 2023](https://youtu.be/kN12mb_3PRE) ## 2022 From 18db4c38fc8a796e8958e94b68bf5a2684e1d7ba Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Sun, 3 Dec 2023 11:07:00 +0200 Subject: [PATCH 233/308] Add alpha media talk --- Courses/Talks.md | 1 + 1 file changed, 1 insertion(+) diff --git a/Courses/Talks.md b/Courses/Talks.md index 88e0eaf..f8a8447 100644 --- a/Courses/Talks.md +++ b/Courses/Talks.md @@ -18,6 +18,7 @@ - [Искусственный интеллект заменяет программистов | Тимур Шемсединов, Николай Фельдман | Альфа и Омега](https://www.youtube.com/watch?v=i6vOhIor-ow) - [Образование будущего: украинский взгляд | Владимир Спиваковский, Тимур Шемсединов, Николай Фельдман](https://www.youtube.com/watch?v=yFYdFZuWm8o) и на [канале Alpha media](https://www.youtube.com/live/sVzvPqSXQ40) - [Тотальная цифровизация минобороны: вызовы команды нового министра | Шемсединов, Фельдман](https://www.youtube.com/live/dPXvdpNzLx4) +- [Искусственный суперинтеллект уже изобретен? | Тимур Шемсединов, Владимир Бандура, Фельдман на Альфа](https://www.youtube.com/live/Z6mnu4ZqOco) ## 2022 From 71ea10abb5c54018b907976c0b4efbd70811a386 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Sun, 3 Dec 2023 11:16:32 +0200 Subject: [PATCH 234/308] Update NodeJS-2024 --- Courses/NodeJS-2024.md | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/Courses/NodeJS-2024.md b/Courses/NodeJS-2024.md index 0f3b678..d4164fb 100644 --- a/Courses/NodeJS-2024.md +++ b/Courses/NodeJS-2024.md @@ -3,15 +3,15 @@ Объем материала: 20 часов основного материала + 20 часов по выбору, еженедельно 4 часа (2 раза по 2 часа) созвоны с ревью кода и ответами на вопросы в течении года, репозитории с примерами кода. Что нужно знать на входе: -- [Синтаксис JavaScript без всяких триков](https://github.com/HowProgrammingWorks/Index/blob/master/Courses/Fundamentals.md) -- [Основы асинхронного программирования](https://github.com/HowProgrammingWorks/Index/blob/master/Courses/Asynchronous.md) -- Уверенно владеть git, иметь github аккаунт -- Желательно docker, иметь рабочую машину на linux или mac -- Любая среда разработки, IDE или редактор +- 🔗 [Синтаксис JavaScript без всяких триков](https://github.com/HowProgrammingWorks/Index/blob/master/Courses/Fundamentals.md) +- 🔗 [Основы асинхронного программирования](https://github.com/HowProgrammingWorks/Index/blob/master/Courses/Asynchronous.md) +- 💡 Уверенно владеть git, иметь github аккаунт +- 💡 Желательно docker, иметь рабочую машину на linux или mac +- 💡 Любая среда разработки, IDE или редактор Ссылки на старый курс: -- [Структура со ссылками на видео и репозитории с примерами кода](NodeJS.md) -- [Для части лекций есть таймкоды и подробное оглавление](NodeJS-timecodes.md) +- 🔗 [Структура со ссылками на видео и репозитории с примерами кода](NodeJS.md) +- 🔗 [Для части лекций есть таймкоды и подробное оглавление](NodeJS-timecodes.md) Чем этот курс не является: это не чтение документации, не курс по фреймворкам, не курс по Metarhia, не повторение старого курса, не лайвкодинг и не мастеркласс, не стрим. Новый курс - это максимально сконцентрированная информация и практические задачи по разработке на чистой ноде но с хорошей архитектурой и использованием всех современных возможностей Node.js @@ -118,8 +118,10 @@ # Доступ -Сейчас на курс можно записаться по плану «Expert» на 1 год за $204 (+ локальные налоги) на Patreon. Помесячная подписка «Expert» не дает доступа. Матераиалы курса остается и после завершения подписки (не нужно ее продлять все время, я не забираю доступ). Как только план курса будет сформирован и курс стартует, его цена будет выше, ориентировочно на 30%. +💳 Сейчас на курс можно записаться по плану «Expert» на 1 год за $204 (+ локальные налоги) на Patreon. Помесячная подписка «Expert» не дает доступа. Матераиалы курса остается и после завершения подписки (не нужно ее продлять все время, я не забираю доступ). Как только план курса будет сформирован и курс стартует, его цена будет выше, ориентировочно на 30%. 👉 Подписаться: https://www.patreon.com/tshemsedinov - Подписывайтесь на https://t.me/metarhia и https://www.youtube.com/@TimurShemsedinov чтобы следить за новостями. +🎉 После того, как Вы взяли курс, в течении суток я добавляю вам права на репозиторий в Github, добавляю в календарь на созвоны через google-meet, и придут ссылки на все нужные ресурсы в почту. Может попаст в спам, проверьте. + +👉 Подписывайтесь на https://t.me/metarhia и https://www.youtube.com/@TimurShemsedinov чтобы следить за новостями. From 75565b553e6a617ac5e60b171a1a225ef9b03c68 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Tue, 5 Dec 2023 09:00:21 +0200 Subject: [PATCH 235/308] Add topics to NodeJS 2024 --- Courses/NodeJS-2024.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/Courses/NodeJS-2024.md b/Courses/NodeJS-2024.md index d4164fb..c14e41a 100644 --- a/Courses/NodeJS-2024.md +++ b/Courses/NodeJS-2024.md @@ -113,6 +113,10 @@ - ⭐ Реализация HTTP Proxy - 📢 [Разбор примеров кода Timur Sevimli](https://youtu.be/4yF6hlxiIic) - 💻 Примеры кода из видео: https://github.com/HowProgrammingWorks/ProxyHTTP +- ⭐ Сборка Node.js приложений в single executable +- ⭐ Автоматическая перезагрузка процессов с --watch +- ⭐ Обзор Web API портированнного в Node.js: Web Crypro, Web Streams, Intl +- ⭐ Встроенная система Permissions для ограничения доступа к файловой системе, сети, другим API План курса формируется. Тут появится еще много тем в ближайшее время. From 358c228d2146d8ac6812aa14bf3229837b72dbef Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Tue, 5 Dec 2023 09:38:53 +0200 Subject: [PATCH 236/308] Add tasks --- Courses/NodeJS-2024.md | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/Courses/NodeJS-2024.md b/Courses/NodeJS-2024.md index c14e41a..243307d 100644 --- a/Courses/NodeJS-2024.md +++ b/Courses/NodeJS-2024.md @@ -120,6 +120,36 @@ План курса формируется. Тут появится еще много тем в ближайшее время. +## Задания + +- 🧑‍💻 Блок заданий №1 + - Создание структуры проекта, системы модульности, фреймворк-агностик + - Организация служебных вещей: логирование, конфигурирование, запуск, + - Проектирование API, организация роутинга и транспорт-агностик подхода +- 🧑‍💻 Блок заданий №2 + - Проектирование предметной области, использование схем, ERD, IDEf1x + - Организация слоя доступа к базе данных, query builder, паттерн репозиторий + - Защита от SQL-injection, параметрические запросы +- 🧑‍💻 Блок заданий №3 + - Сетевые протоколы, сериализация, организация сессий + - Принципы взаимодействия: REST, RPC, трансляция событий + - Безопасность, CORS, потоковое вещание, partial-content, upload/download файлов +- 🧑‍💻 Блок заданий №4 + - Принемение `GRASP` и `SOLID` для Node.js приложений + - Использование паттернов и рефакторинг с применением паттернов +- 🧑‍💻 Блок заданий №5 + - Использование потоков Readable, Writable, Transform, работа с файмами + - Корректная обработка ошибок и исключений + - Рефакторинг ассинхронного кода и стыковка контрактов +- 🧑‍💻 Блок заданий №6 + - Организация клиентского кода, прозрачность вызово серверного API через async/await + - Межсервеное взаимодействие, прозрачность вызово через async/await (как и для клиентского кода) + - Интеграция подсистем по принципу единого адресного пространства +- 🧑‍💻 Блок заданий №7 + - Реализация системы прав (аккаунты, пароли, роли, пермишены, применение ACL, ABAC, RBAC) + - Система сессий: хранимое состояние, состояние соединений, состояние прикрепленное к вызову + - Безопасность (`DoS`, `XSS`, `Path traversal`, `CSRF`, и т.д.) + # Доступ 💳 Сейчас на курс можно записаться по плану «Expert» на 1 год за $204 (+ локальные налоги) на Patreon. Помесячная подписка «Expert» не дает доступа. Матераиалы курса остается и после завершения подписки (не нужно ее продлять все время, я не забираю доступ). Как только план курса будет сформирован и курс стартует, его цена будет выше, ориентировочно на 30%. From bb136ebfaa4cb213f11705fa4ba1ba580dda6b3a Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Tue, 5 Dec 2023 09:59:35 +0200 Subject: [PATCH 237/308] Fix spelling --- Courses/NodeJS-2024.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/Courses/NodeJS-2024.md b/Courses/NodeJS-2024.md index 243307d..75ef504 100644 --- a/Courses/NodeJS-2024.md +++ b/Courses/NodeJS-2024.md @@ -135,15 +135,15 @@ - Принципы взаимодействия: REST, RPC, трансляция событий - Безопасность, CORS, потоковое вещание, partial-content, upload/download файлов - 🧑‍💻 Блок заданий №4 - - Принемение `GRASP` и `SOLID` для Node.js приложений + - Применение `GRASP` и `SOLID` для Node.js приложений - Использование паттернов и рефакторинг с применением паттернов - 🧑‍💻 Блок заданий №5 - - Использование потоков Readable, Writable, Transform, работа с файмами + - Использование потоков Readable, Writable, Transform, работа с файлами - Корректная обработка ошибок и исключений - - Рефакторинг ассинхронного кода и стыковка контрактов + - Рефакторинг асинхронного кода и стыковка контрактов - 🧑‍💻 Блок заданий №6 - - Организация клиентского кода, прозрачность вызово серверного API через async/await - - Межсервеное взаимодействие, прозрачность вызово через async/await (как и для клиентского кода) + - Организация клиентского кода, прозрачность вызовов серверного API через async/await + - Межсерверное взаимодействие, прозрачность вызовов через async/await (как и для клиентского кода) - Интеграция подсистем по принципу единого адресного пространства - 🧑‍💻 Блок заданий №7 - Реализация системы прав (аккаунты, пароли, роли, пермишены, применение ACL, ABAC, RBAC) From e635319ca5b32fdbddb47b7a61c507a6a70e2e31 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Sat, 9 Dec 2023 00:02:42 +0200 Subject: [PATCH 238/308] Add topics to Async 2024 --- Courses/Async-2024.md | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/Courses/Async-2024.md b/Courses/Async-2024.md index 9cd60f8..7b09e60 100644 --- a/Courses/Async-2024.md +++ b/Courses/Async-2024.md @@ -16,16 +16,20 @@ Темы нового курса: -- Контракты асинхронности на базе callback: callback-last, error-first +- Контракты асинхронности на базе callback: Callback-last-error-first - Минимально необходимое понимание рантайма: event loop, I/O, таймеры - Контракты асинхронности на базе событий: EventEmitter, Streams -- Контракт Promise/then/catch/finally и синтаксис async/await +- Потоки событий, паттерн Observer/Observable и RX.js +- Контракты Promise/Thenable/then/catch/finally и синтаксис async/await - Параллельное и последовательное исполнение, all/any/race/allSettled - Конвертеры контрактов, стыковка кода в разных стилях - Предотвращение состояния гонки по данным и управлению в асинхронном коде - Отмена асинхронных операций: AbortController, AbortSignal - Обработка ошибок, их выявление и возможные проблемы со стектрейсом - Асинхронныек коллекции (собираем значения до готовности) +- Асинхронная очередь и асинхронный пул +- Асинхронные генератори и асинхронные итераторы +- Обзор других контрактов: generators, signals, future, deferred ## Обратите внимание From fa3ce4af60e7baec62cc282074efeb916eeb65b2 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Mon, 11 Dec 2023 03:23:42 +0200 Subject: [PATCH 239/308] Update Async-2024.md --- Courses/Async-2024.md | 50 ++++++++++++++++++++++++++----------------- 1 file changed, 30 insertions(+), 20 deletions(-) diff --git a/Courses/Async-2024.md b/Courses/Async-2024.md index 7b09e60..95b9fb7 100644 --- a/Courses/Async-2024.md +++ b/Courses/Async-2024.md @@ -1,5 +1,7 @@ # Асинхронное программирование 2024 +💡 Объем материала: 10 часов лекций + необязательные материалы, созвоны для ревью кода и ответов на вопросы: 2 часа в неделю в течении года, репозитории с примерами кода, задачи по всем темам. + Те способы писать асинхронный код, которые мы использовали 10-15 лет назад безвозвратно уходят в прошлое и могут быть интересны лишь для поддержки легаси упражнения в глубоком понимании асинхронного программирования. Даже способы 5-7 летней давности уже имеют мало общего с современными практиками, но интернет полон устаревшей информации, даже [открытый курс сообщества Metarhia](https://github.com/HowProgrammingWorks/Index/blob/master/Courses/Asynchronous.md) на сегодняшний момент стал слишком громоздким и излишним. Еще нужно упомянуть о том, что в системном и прикладном коде асинхронное программирование должно выглядеть принципиально по-разному. Полностью скрыть от продуктового разработчика сложность асинхронного кода за абстракциями не удастся, потому, что он в любом случае будет работать с таймерами, событиями, стримами, fetch и другими асинхронными API, но его можно писать в десятки раз проще, чем асинхронный код с системном слое. Что касается системного слоя, то нужно вводить в обиход теорию очередей (системы массового обслуживания), модель акторов, часть абстракций из параллельного программирования (семафоры, рандеву, атомарные операции). Конечно, содержать все это в одном курсе сложновато, поэтому, мы отдадим приоритет прикладному коду и сначала полностью подготовим курс для применения асинхронного программирования в продуктовой разработке, а потом будем добавлять необязательные темы их старого курса и много других полезных абстракций, широко распространенных в других языках программирования, но слабо известных в мире JavaScript. ## Содержание @@ -16,33 +18,41 @@ Темы нового курса: -- Контракты асинхронности на базе callback: Callback-last-error-first -- Минимально необходимое понимание рантайма: event loop, I/O, таймеры -- Контракты асинхронности на базе событий: EventEmitter, Streams -- Потоки событий, паттерн Observer/Observable и RX.js -- Контракты Promise/Thenable/then/catch/finally и синтаксис async/await -- Параллельное и последовательное исполнение, all/any/race/allSettled -- Конвертеры контрактов, стыковка кода в разных стилях -- Предотвращение состояния гонки по данным и управлению в асинхронном коде -- Отмена асинхронных операций: AbortController, AbortSignal -- Обработка ошибок, их выявление и возможные проблемы со стектрейсом -- Асинхронныек коллекции (собираем значения до готовности) -- Асинхронная очередь и асинхронный пул -- Асинхронные генератори и асинхронные итераторы -- Обзор других контрактов: generators, signals, future, deferred +Условные обозначения: ⭐ новые лекции, ✨ открытые лекции, 🧩 необязательные темы + +- ⭐ Контракты асинхронности на базе callback: Callback-last-error-first +- ✨ Минимально необходимое понимание рантайма: event loop, I/O, таймеры +- ⭐ Контракты асинхронности на базе событий: EventEmitter, Streams +- ✨ Потоки событий, паттерн Observer/Observable и RX.js +- ⭐ Контракты Promise/Thenable/then/catch/finally и синтаксис async/await +- ⭐ Параллельное и последовательное исполнение, all/any/race/allSettled +- ⭐ Конвертеры контрактов, стыковка кода в разных стилях +- ⭐ Предотвращение состояния гонки по данным и управлению в асинхронном коде +- ⭐ Отмена асинхронных операций: AbortController, AbortSignal +- ⭐ Обработка ошибок, их выявление и возможные проблемы со стектрейсом +- 🧩 Асинхронныек коллекции (собираем значения до готовности) +- 🧩 Асинхронная очередь и асинхронный пул +- 🧩 Асинхронные генератори и асинхронные итераторы +- 🧩 Обзор других контрактов: generators, signals, future, deferred ## Обратите внимание Что нужно знать и уметь на входе: -- [Синтаксис JavaScript, но можно без всяких триков](https://github.com/HowProgrammingWorks/Index/blob/master/Courses/Fundamentals.md) -- Уверенно владеть git, иметь github аккаунт -- Желательно docker, иметь рабочую машину на linux или mac -- Любая среда разработки, IDE или редактор +- 🔗 [Синтаксис JavaScript без всяких триков](https://github.com/HowProgrammingWorks/Index/blob/master/Courses/Fundamentals.md) +- 💡 Уверенно владеть git, иметь github аккаунт +- 💡 Любая среда разработки, IDE или редактор Чем это курс не является: это не чтение документации, не курс по библиотекам и фреймворкам, не повторение старого курса, не лайвкодинг и не мастеркласс, не стрим. Новый курс - это максимально сконцентрированная информация и практические задачи как для прикладного, так и для системного программирования со сравнением этих подходов. ## Как попасть на курс -- Новости будут в канале: https://t.me/asyncify -- Группа курса: https://t.me/asynctalks +💳 Сейчас на курс можно записаться по плану «Professional» на 1 год за $102 (+ локальные налоги) на Patreon или аналог в гривнах. Помесячная подписка «Professional» не дает доступа. Матераиалы курса остается и после завершения подписки (не нужно ее продлять все время, я не забираю доступ). Как только план курса будет сформирован и курс стартует в начале 2024, его цена будет выше в 2 раза. + +👉 Подписаться: https://www.patreon.com/tshemsedinov + +🎉 После того, как Вы взяли курс, в течении суток я добавляю вам права на репозиторий в Github, добавляю в календарь на созвоны через google-meet, и придут ссылки на все нужные ресурсы в почту. Может попасть в спам, проверьте. + +👉 Новости курса будут в канале: https://t.me/asyncify +👉 Открытая группа курса: https://t.me/asynctalks +👉 Подписывайтесь на https://t.me/metarhia и https://www.youtube.com/@TimurShemsedinov чтобы следить за новостями From 62e66b5ac5cc1d3cbae2a8e934f8feea9c973513 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Sat, 16 Dec 2023 11:28:50 +0200 Subject: [PATCH 240/308] Update Async-2024.md --- Courses/Async-2024.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/Courses/Async-2024.md b/Courses/Async-2024.md index 95b9fb7..c12b1be 100644 --- a/Courses/Async-2024.md +++ b/Courses/Async-2024.md @@ -47,9 +47,11 @@ ## Как попасть на курс -💳 Сейчас на курс можно записаться по плану «Professional» на 1 год за $102 (+ локальные налоги) на Patreon или аналог в гривнах. Помесячная подписка «Professional» не дает доступа. Матераиалы курса остается и после завершения подписки (не нужно ее продлять все время, я не забираю доступ). Как только план курса будет сформирован и курс стартует в начале 2024, его цена будет выше в 2 раза. +💳 Сейчас на курс можно записаться по плану «Professional» на 1 год за $102 (+ локальные налоги) на Patreon. Матераиалы курса остается и после завершения подписки (не нужно ее продлять все время, я не забираю доступ). +💳 Второй вариант: вместе с курсом по ноде по плану «Node + Async» $250 (+ локальные налоги) на Patreon. Программа курса «Node.js 2024»: https://github.com/HowProgrammingWorks/Index/blob/master/Courses/NodeJS-2024.md и вопросы для собеседований, которые мы разберем для ноды: https://github.com/tshemsedinov/NodeJS-Interview-Questions +💡 Цены актуальны до 28 декабря 2023, потом оба плана станут дороже. Помесячная подписка не дает доступа. -👉 Подписаться: https://www.patreon.com/tshemsedinov +🎫 Регистрация: https://www.patreon.com/tshemsedinov 🎉 После того, как Вы взяли курс, в течении суток я добавляю вам права на репозиторий в Github, добавляю в календарь на созвоны через google-meet, и придут ссылки на все нужные ресурсы в почту. Может попасть в спам, проверьте. From d09ccc9e65c301056e883daf76e9d7718edab6eb Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Sat, 16 Dec 2023 11:29:13 +0200 Subject: [PATCH 241/308] Update Async-2024.md --- Courses/Async-2024.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Courses/Async-2024.md b/Courses/Async-2024.md index c12b1be..b6f26da 100644 --- a/Courses/Async-2024.md +++ b/Courses/Async-2024.md @@ -47,8 +47,8 @@ ## Как попасть на курс -💳 Сейчас на курс можно записаться по плану «Professional» на 1 год за $102 (+ локальные налоги) на Patreon. Матераиалы курса остается и после завершения подписки (не нужно ее продлять все время, я не забираю доступ). -💳 Второй вариант: вместе с курсом по ноде по плану «Node + Async» $250 (+ локальные налоги) на Patreon. Программа курса «Node.js 2024»: https://github.com/HowProgrammingWorks/Index/blob/master/Courses/NodeJS-2024.md и вопросы для собеседований, которые мы разберем для ноды: https://github.com/tshemsedinov/NodeJS-Interview-Questions +💳 Сейчас на курс можно записаться по плану «Professional» на 1 год за $102 (+ локальные налоги) на Patreon. Матераиалы курса остается и после завершения подписки (не нужно ее продлять все время, я не забираю доступ). +💳 Второй вариант: вместе с курсом по ноде по плану «Node + Async» $250 (+ локальные налоги) на Patreon. Программа курса «Node.js 2024»: https://github.com/HowProgrammingWorks/Index/blob/master/Courses/NodeJS-2024.md и вопросы для собеседований, которые мы разберем для ноды: https://github.com/tshemsedinov/NodeJS-Interview-Questions 💡 Цены актуальны до 28 декабря 2023, потом оба плана станут дороже. Помесячная подписка не дает доступа. 🎫 Регистрация: https://www.patreon.com/tshemsedinov From a01f24014969c25a93de15b5a38d2f3e40ae40e9 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Sat, 16 Dec 2023 11:31:51 +0200 Subject: [PATCH 242/308] Update NodeJS-2024.md --- Courses/NodeJS-2024.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/Courses/NodeJS-2024.md b/Courses/NodeJS-2024.md index 75ef504..2bcd41f 100644 --- a/Courses/NodeJS-2024.md +++ b/Courses/NodeJS-2024.md @@ -152,9 +152,11 @@ # Доступ -💳 Сейчас на курс можно записаться по плану «Expert» на 1 год за $204 (+ локальные налоги) на Patreon. Помесячная подписка «Expert» не дает доступа. Матераиалы курса остается и после завершения подписки (не нужно ее продлять все время, я не забираю доступ). Как только план курса будет сформирован и курс стартует, его цена будет выше, ориентировочно на 30%. +💳 Сейчас на курс можно записаться по плану «Expert» на 1 год за $204 (+ локальные налоги) на Patreon. Помесячная подписка «Expert» не дает доступа. Матераиалы курса остается и после завершения подписки (не нужно ее продлять все время, я не забираю доступ). +💳 Второй вариант: вместе с курсом по ассинхронному программированию «Node + Async» $250 (+ локальные налоги) на Patreon. Программа курса «Async 2024»: https://github.com/HowProgrammingWorks/Index/blob/master/Courses/Async-2024.md +💡 Цены актуальны до 28 декабря 2023, потом оба плана станут дороже. Помесячная подписка не дает доступа. -👉 Подписаться: https://www.patreon.com/tshemsedinov +🎫 Регистрация: https://www.patreon.com/tshemsedinov 🎉 После того, как Вы взяли курс, в течении суток я добавляю вам права на репозиторий в Github, добавляю в календарь на созвоны через google-meet, и придут ссылки на все нужные ресурсы в почту. Может попаст в спам, проверьте. From dfc03de1144afa3740b2257b2e97bf0b806ade14 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Sat, 23 Dec 2023 01:19:46 -0500 Subject: [PATCH 243/308] Add nocode video --- Courses/Talks.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Courses/Talks.md b/Courses/Talks.md index f8a8447..84e0040 100644 --- a/Courses/Talks.md +++ b/Courses/Talks.md @@ -7,7 +7,7 @@ - [Стрим про образование программиста с Тимуром Шемсединовым и Сергеем Немчинским](https://www.youtube.com/live/pcwccVihgeg?feature=share) - [Введение в ИТ специальности / Крымскотатарский ИТ канал / 23 Sep 2023](https://youtu.be/kN12mb_3PRE) - [«No Code, No Conference» 2023-03-16](https://flowmates.org/) -- [Человек как преодоление пропасти между AI и программированием — NOCODE SUMMIT Almaty 2023-11-30](https://flowmates.org/no-code-summit-almaty/) +- [Человек как преодоление пропасти между AI и программированием — NOCODE SUMMIT Almaty 2023-11-30](https://youtu.be/xGZC23wRAV8) - [Применение ChatGPT в оптимизации JavaScript для NodeJS](https://youtu.be/Ebrzqj8cGUY) - [Прекращение поддержки Node.js 14.x и обновление до 16, 18, 20](https://youtu.be/HriGsw3IPmQ) - [Революция в ИТ: 2023-24, что учить, трансформация бизнеса, кого нанимать и новые профессии](https://youtu.be/hYbF3IlMovE) From dbf046fdae907e425840d030af72dc24a51742e2 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Sat, 23 Dec 2023 01:24:20 -0500 Subject: [PATCH 244/308] Update Talks.md --- Courses/Talks.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Courses/Talks.md b/Courses/Talks.md index 84e0040..fc25886 100644 --- a/Courses/Talks.md +++ b/Courses/Talks.md @@ -1,6 +1,6 @@ # Conference and public talks -## Future talks +## 2024 ## 2023 From bfa318c01bb769300185ddd2dd90645014a43442 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Mon, 25 Dec 2023 19:37:41 +0200 Subject: [PATCH 245/308] Remove old index --- Courses/index.js | 38 -------------------------------------- 1 file changed, 38 deletions(-) delete mode 100644 Courses/index.js diff --git a/Courses/index.js b/Courses/index.js deleted file mode 100644 index 1b7bf14..0000000 --- a/Courses/index.js +++ /dev/null @@ -1,38 +0,0 @@ -({ - intro: { - title: 'Introduction to software engineering', - }, - sef1: { - title: 'Software engineering fundamentals: part 1', - }, - sef2: { - title: 'Software engineering fundamentals: part 2', - }, - sef3: { - title: 'Software engineering fundamentals: part 3', - }, - pps1: { - title: 'Asynchronous programming', - }, - pps2: { - title: 'Parallel programming', - }, - pps3: { - title: 'Distributed systems', - }, - nts1: { - title: 'Node.js technology stack: part1', - }, - nts2: { - title: 'Node.js technology stack: part2', - }, - nts3: { - title: 'Node.js technology stack: part3', - }, - isa1: { - title: 'Information system architecture: part1', - }, - isa2: { - title: 'Information system architecture: part2', - }, -}); From 430f20fd80283f0c86dacea9f4d817e89d93ece1 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Sat, 30 Dec 2023 20:27:12 +0200 Subject: [PATCH 246/308] Update Async 2024 --- Courses/Async-2024.md | 28 +++++++++++++++------------- 1 file changed, 15 insertions(+), 13 deletions(-) diff --git a/Courses/Async-2024.md b/Courses/Async-2024.md index b6f26da..4ed2ebc 100644 --- a/Courses/Async-2024.md +++ b/Courses/Async-2024.md @@ -20,20 +20,22 @@ Условные обозначения: ⭐ новые лекции, ✨ открытые лекции, 🧩 необязательные темы -- ⭐ Контракты асинхронности на базе callback: Callback-last-error-first +- ⭐ Контракты асинхронности на базе callback: `Callback-last-error-first` - ✨ Минимально необходимое понимание рантайма: event loop, I/O, таймеры -- ⭐ Контракты асинхронности на базе событий: EventEmitter, Streams -- ✨ Потоки событий, паттерн Observer/Observable и RX.js -- ⭐ Контракты Promise/Thenable/then/catch/finally и синтаксис async/await -- ⭐ Параллельное и последовательное исполнение, all/any/race/allSettled -- ⭐ Конвертеры контрактов, стыковка кода в разных стилях +- ⭐ Контракты асинхронности на базе событий: `EventEmitter`, `Stream` +- ✨ Потоки событий, паттерн `Observer/Observable`, реактивность на `RxJS`, `signals` +- ⭐ Контракты `Promise/Thenable/then/catch/finally` и синтаксис `async/await` +- ⭐ Параллельное и последовательное исполнение `all/any/race/allSettled` +- ⭐ Конвертеры контрактов `asyncify`, `callbackify`, стыковка кода в разных стилях - ⭐ Предотвращение состояния гонки по данным и управлению в асинхронном коде -- ⭐ Отмена асинхронных операций: AbortController, AbortSignal +- ⭐ Отмена асинхронных операций: `AbortController`, `AbortSignal` - ⭐ Обработка ошибок, их выявление и возможные проблемы со стектрейсом - 🧩 Асинхронныек коллекции (собираем значения до готовности) -- 🧩 Асинхронная очередь и асинхронный пул -- 🧩 Асинхронные генератори и асинхронные итераторы -- 🧩 Обзор других контрактов: generators, signals, future, deferred +- 🧩 Асинхронные абстракции: `Queue`, `Pool`, `Collector`, `Semaphore`, `Lock`, `Mutex` +- 🧩 Системные абстракции: `threads`, `processes`, `MessageChannel`, `BroadcastChannel` +- 🧩 Асинхронные генераторы и асинхронные итераторы +- 🧩 Обзор других абстракций: `future`, `do`, `coroutines`, `actor model`, `Chain of responsibility` +- 🧩 Обзор легаси контрактов и антипаттернов: `yield`, `middleware`, `deferred`, `Async.js` ## Обратите внимание @@ -47,9 +49,9 @@ ## Как попасть на курс -💳 Сейчас на курс можно записаться по плану «Professional» на 1 год за $102 (+ локальные налоги) на Patreon. Матераиалы курса остается и после завершения подписки (не нужно ее продлять все время, я не забираю доступ). -💳 Второй вариант: вместе с курсом по ноде по плану «Node + Async» $250 (+ локальные налоги) на Patreon. Программа курса «Node.js 2024»: https://github.com/HowProgrammingWorks/Index/blob/master/Courses/NodeJS-2024.md и вопросы для собеседований, которые мы разберем для ноды: https://github.com/tshemsedinov/NodeJS-Interview-Questions -💡 Цены актуальны до 28 декабря 2023, потом оба плана станут дороже. Помесячная подписка не дает доступа. +💳 Сейчас на курс можно записаться «Async 2024» годовая подписка на Patreon. Матераиалы курса остается и после завершения подписки (не нужно ее продлять все время, я не забираю доступ). +💳 Второй вариант: вместе с курсом по ноде по плану «Node + Async» годовая подписка на Patreon. Программа курса «Node.js 2024»: https://github.com/HowProgrammingWorks/Index/blob/master/Courses/NodeJS-2024.md и вопросы для собеседований, которые мы разберем для ноды: https://github.com/tshemsedinov/NodeJS-Interview-Questions +💡 Помесячная подписка не дает доступа. 🎫 Регистрация: https://www.patreon.com/tshemsedinov From 4dfd2fd79847c101d9301774ab0e2bd2bfe3e45f Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Sat, 30 Dec 2023 20:31:29 +0200 Subject: [PATCH 247/308] Update Node.js 2024 --- Courses/NodeJS-2024.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Courses/NodeJS-2024.md b/Courses/NodeJS-2024.md index 2bcd41f..d5fba40 100644 --- a/Courses/NodeJS-2024.md +++ b/Courses/NodeJS-2024.md @@ -152,9 +152,9 @@ # Доступ -💳 Сейчас на курс можно записаться по плану «Expert» на 1 год за $204 (+ локальные налоги) на Patreon. Помесячная подписка «Expert» не дает доступа. Матераиалы курса остается и после завершения подписки (не нужно ее продлять все время, я не забираю доступ). -💳 Второй вариант: вместе с курсом по ассинхронному программированию «Node + Async» $250 (+ локальные налоги) на Patreon. Программа курса «Async 2024»: https://github.com/HowProgrammingWorks/Index/blob/master/Courses/Async-2024.md -💡 Цены актуальны до 28 декабря 2023, потом оба плана станут дороже. Помесячная подписка не дает доступа. +💳 Сейчас на курс можно записаться по плану «NodeJS 2024» годовая подписка на Patreon. Матераиалы курса остаются и после завершения подписки (не нужно ее продлять все время, я не забираю доступ). +💳 Второй вариант: вместе с курсом по ассинхронному программированию «Node + Async» годовая подписка на Patreon. Программа курса «Async 2024»: https://github.com/HowProgrammingWorks/Index/blob/master/Courses/Async-2024.md +💡 Помесячная подписка не дает доступа. 🎫 Регистрация: https://www.patreon.com/tshemsedinov From 19079b66498f281eeb6d092861afa899771b5998 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Mon, 8 Jan 2024 05:12:37 -0500 Subject: [PATCH 248/308] Update Async-2024.md --- Courses/Async-2024.md | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/Courses/Async-2024.md b/Courses/Async-2024.md index 4ed2ebc..63ba78d 100644 --- a/Courses/Async-2024.md +++ b/Courses/Async-2024.md @@ -49,9 +49,8 @@ ## Как попасть на курс -💳 Сейчас на курс можно записаться «Async 2024» годовая подписка на Patreon. Матераиалы курса остается и после завершения подписки (не нужно ее продлять все время, я не забираю доступ). -💳 Второй вариант: вместе с курсом по ноде по плану «Node + Async» годовая подписка на Patreon. Программа курса «Node.js 2024»: https://github.com/HowProgrammingWorks/Index/blob/master/Courses/NodeJS-2024.md и вопросы для собеседований, которые мы разберем для ноды: https://github.com/tshemsedinov/NodeJS-Interview-Questions -💡 Помесячная подписка не дает доступа. +💳 Сейчас на курс можно записаться «Async 2024» годовая подписка на Patreon - это полный курс, а помесячная - без ревью кода, ответов на вопросы и созвонов. Матераиалы курса остаются и после завершения подписки (не нужно ее продлять все время, я не забираю доступ). +💳 Второй вариант: вместе с курсом по ноде по плану «Node + Async». Программа курса «Node.js 2024»: https://github.com/HowProgrammingWorks/Index/blob/master/Courses/NodeJS-2024.md и вопросы для собеседований, которые мы разберем для ноды: https://github.com/tshemsedinov/NodeJS-Interview-Questions 🎫 Регистрация: https://www.patreon.com/tshemsedinov From 5bd1f8be391dcf6974650093519acf40ab895b6e Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Mon, 8 Jan 2024 05:13:44 -0500 Subject: [PATCH 249/308] Update NodeJS-2024.md --- Courses/NodeJS-2024.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/Courses/NodeJS-2024.md b/Courses/NodeJS-2024.md index d5fba40..34e2052 100644 --- a/Courses/NodeJS-2024.md +++ b/Courses/NodeJS-2024.md @@ -152,9 +152,8 @@ # Доступ -💳 Сейчас на курс можно записаться по плану «NodeJS 2024» годовая подписка на Patreon. Матераиалы курса остаются и после завершения подписки (не нужно ее продлять все время, я не забираю доступ). +💳 Сейчас на курс можно записаться по плану «NodeJS 2024» годовая подписка на Patreon - полный курс, помесячная - отдельные лекции и материалы, но без ревью кода, заданий, созвонов и ответов на вопросы. Матераиалы курса остаются и после завершения подписки (не нужно ее продлять все время, я не забираю доступ). 💳 Второй вариант: вместе с курсом по ассинхронному программированию «Node + Async» годовая подписка на Patreon. Программа курса «Async 2024»: https://github.com/HowProgrammingWorks/Index/blob/master/Courses/Async-2024.md -💡 Помесячная подписка не дает доступа. 🎫 Регистрация: https://www.patreon.com/tshemsedinov From 57e8858ab2b18b2db98784bb65bd237a063e262e Mon Sep 17 00:00:00 2001 From: Vitaliy Artyukh Date: Mon, 26 Feb 2024 14:36:18 +0200 Subject: [PATCH 250/308] Fix spelling (#111) --- Courses/Async-2024.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Courses/Async-2024.md b/Courses/Async-2024.md index 63ba78d..6b4fe31 100644 --- a/Courses/Async-2024.md +++ b/Courses/Async-2024.md @@ -2,7 +2,7 @@ 💡 Объем материала: 10 часов лекций + необязательные материалы, созвоны для ревью кода и ответов на вопросы: 2 часа в неделю в течении года, репозитории с примерами кода, задачи по всем темам. -Те способы писать асинхронный код, которые мы использовали 10-15 лет назад безвозвратно уходят в прошлое и могут быть интересны лишь для поддержки легаси упражнения в глубоком понимании асинхронного программирования. Даже способы 5-7 летней давности уже имеют мало общего с современными практиками, но интернет полон устаревшей информации, даже [открытый курс сообщества Metarhia](https://github.com/HowProgrammingWorks/Index/blob/master/Courses/Asynchronous.md) на сегодняшний момент стал слишком громоздким и излишним. Еще нужно упомянуть о том, что в системном и прикладном коде асинхронное программирование должно выглядеть принципиально по-разному. Полностью скрыть от продуктового разработчика сложность асинхронного кода за абстракциями не удастся, потому, что он в любом случае будет работать с таймерами, событиями, стримами, fetch и другими асинхронными API, но его можно писать в десятки раз проще, чем асинхронный код с системном слое. Что касается системного слоя, то нужно вводить в обиход теорию очередей (системы массового обслуживания), модель акторов, часть абстракций из параллельного программирования (семафоры, рандеву, атомарные операции). Конечно, содержать все это в одном курсе сложновато, поэтому, мы отдадим приоритет прикладному коду и сначала полностью подготовим курс для применения асинхронного программирования в продуктовой разработке, а потом будем добавлять необязательные темы их старого курса и много других полезных абстракций, широко распространенных в других языках программирования, но слабо известных в мире JavaScript. +Те способы писать асинхронный код, которые мы использовали 10-15 лет назад безвозвратно уходят в прошлое и могут быть интересны лишь для поддержки легаси упражнения в глубоком понимании асинхронного программирования. Даже способы 5-7 летней давности уже имеют мало общего с современными практиками, но интернет полон устаревшей информации, даже [открытый курс сообщества Metarhia](https://github.com/HowProgrammingWorks/Index/blob/master/Courses/Asynchronous.md) на сегодняшний момент стал слишком громоздким и излишним. Еще нужно упомянуть о том, что в системном и прикладном коде асинхронное программирование должно выглядеть принципиально по-разному. Полностью скрыть от продуктового разработчика сложность асинхронного кода за абстракциями не удастся, потому, что он в любом случае будет работать с таймерами, событиями, стримами, fetch и другими асинхронными API, но его можно писать в десятки раз проще, чем асинхронный код в системном слое. Что касается системного слоя, то нужно вводить в обиход теорию очередей (системы массового обслуживания), модель акторов, часть абстракций из параллельного программирования (семафоры, рандеву, атомарные операции). Конечно, содержать все это в одном курсе сложновато, поэтому, мы отдадим приоритет прикладному коду и сначала полностью подготовим курс для применения асинхронного программирования в продуктовой разработке, а потом будем добавлять необязательные темы из старого курса и много других полезных абстракций, широко распространенных в других языках программирования, но слабо известных в мире JavaScript. ## Содержание @@ -30,7 +30,7 @@ - ⭐ Предотвращение состояния гонки по данным и управлению в асинхронном коде - ⭐ Отмена асинхронных операций: `AbortController`, `AbortSignal` - ⭐ Обработка ошибок, их выявление и возможные проблемы со стектрейсом -- 🧩 Асинхронныек коллекции (собираем значения до готовности) +- 🧩 Асинхронные коллекции (собираем значения до готовности) - 🧩 Асинхронные абстракции: `Queue`, `Pool`, `Collector`, `Semaphore`, `Lock`, `Mutex` - 🧩 Системные абстракции: `threads`, `processes`, `MessageChannel`, `BroadcastChannel` - 🧩 Асинхронные генераторы и асинхронные итераторы From 9b88b1781b4b02cb0c7a95747ae69a9f2891575f Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Sun, 3 Mar 2024 09:27:25 -0500 Subject: [PATCH 251/308] Update Async-2024.md --- Courses/Async-2024.md | 138 ++++++++++++++++++++++++++++++++++++------ 1 file changed, 120 insertions(+), 18 deletions(-) diff --git a/Courses/Async-2024.md b/Courses/Async-2024.md index 6b4fe31..6dd0a72 100644 --- a/Courses/Async-2024.md +++ b/Courses/Async-2024.md @@ -18,24 +18,126 @@ Темы нового курса: -Условные обозначения: ⭐ новые лекции, ✨ открытые лекции, 🧩 необязательные темы - -- ⭐ Контракты асинхронности на базе callback: `Callback-last-error-first` -- ✨ Минимально необходимое понимание рантайма: event loop, I/O, таймеры -- ⭐ Контракты асинхронности на базе событий: `EventEmitter`, `Stream` -- ✨ Потоки событий, паттерн `Observer/Observable`, реактивность на `RxJS`, `signals` -- ⭐ Контракты `Promise/Thenable/then/catch/finally` и синтаксис `async/await` -- ⭐ Параллельное и последовательное исполнение `all/any/race/allSettled` -- ⭐ Конвертеры контрактов `asyncify`, `callbackify`, стыковка кода в разных стилях -- ⭐ Предотвращение состояния гонки по данным и управлению в асинхронном коде -- ⭐ Отмена асинхронных операций: `AbortController`, `AbortSignal` -- ⭐ Обработка ошибок, их выявление и возможные проблемы со стектрейсом -- 🧩 Асинхронные коллекции (собираем значения до готовности) -- 🧩 Асинхронные абстракции: `Queue`, `Pool`, `Collector`, `Semaphore`, `Lock`, `Mutex` -- 🧩 Системные абстракции: `threads`, `processes`, `MessageChannel`, `BroadcastChannel` -- 🧩 Асинхронные генераторы и асинхронные итераторы -- 🧩 Обзор других абстракций: `future`, `do`, `coroutines`, `actor model`, `Chain of responsibility` -- 🧩 Обзор легаси контрактов и антипаттернов: `yield`, `middleware`, `deferred`, `Async.js` +Условные обозначения: ⭐ новые лекции, ✨ открытые старые лекции, 💯 обязательные, 🧑‍🎓 продвинутые, ⚙️ системные, 🧑‍🚀 по выбору, ⚠️ устаревшее, 🧩 необязательные темы, 💻 примеры кода, 🧑‍💻 задания + +- 💯 Контракты асинхронности на базе callback + - ⭐ Контракты `Callback` и `Callback-last-error-first` (ссылка в платном курсе) + - 💻 Колбеки: https://github.com/HowProgrammingWorks/Callbacks + - 💻 Примеры кода с колбеками: https://github.com/HowProgrammingWorks/AsynchronousProgramming + - 🧑‍💻 Задания по колбекам (в платном курсе) +- 💯 Минимально необходимое понимание рантайма: event loop, I/O, таймеры + - ⭐ Фазы Event-loop в V8 и Node.js (ссылка в платном курсе) + - 🧩 [Стрим с разбрром Event loop и асинхронности](https://www.youtube.com/live/ND5HNHicACI) + - 💻 Таймеры: https://github.com/HowProgrammingWorks/Timers + - 🧑‍💻 Задания по таймерам (в платном курсе) +- 💯 Контракты на базе событий `EventTarget`, `EventEmitter` + - ⭐ События (ссылка в платном курсе) + - 🧑‍💻 Задания по событиям (в платном курсе) + - ✨ [EventEmitter из старой лекции](https://youtu.be/LK2jveAnRNg) + - 💻 EventEmitter: https://github.com/HowProgrammingWorks/EventEmitter +- 💯 Абстракция потоков `Stream` + - ⭐ Стримы Readable, Writable, Transform, открытый конструктор, буферизация, backpressure (ссылка в платном курсе) + - 🧑‍💻 Задания по стримам (в платном курсе) + - 💻 Примеры кода: https://github.com/HowProgrammingWorks/Streams/tree/master/JavaScript + - ✨ [Паттерн открытый конструктор (Revealing Constructor)](https://youtu.be/leR5sXRkuJI) + - 💻 Примеры кода: https://github.com/HowProgrammingWorks/RevealingConstructor +- ⚙️ Контракт `Thenable` + - ⭐ Контракт `Thenabe` (ссылка в платном курсе) + - ✨ [Thenable из старой лекции](https://youtu.be/Jdf_tZuJbHI) + - 💻 Примеры кода: https://github.com/HowProgrammingWorks/Thenable + - 🧑‍💻 Задания по `Thenabe` (в платном курсе) +- 💯 Контракт `Promise` + - ⭐ Promise: then/catch/finally и методы класса all, allSettled, race, any (ссылка в платном курсе) + - ✨ [Асинхронность на промисах из старой лекции](https://youtu.be/RMl4r6s1Y8M) + - 💻 [Примеры кода](https://github.com/HowProgrammingWorks/Promise/tree/master/JavaScript) + - 🧑‍💻 Задания по `Promise` (в платном курсе) +- 💯 Контракт асинхронных функций `async/await` + - ⭐ Асинхронные функции (ссылка в платном курсе) + - ✨ [Асинхронные функции из старой лекции](https://youtu.be/Jdf_tZuJbHI) + - 💻 [Примеры кода](https://github.com/HowProgrammingWorks/AsyncFunction/tree/main/JavaScript) + - 🧑‍💻 Задания по `async/await` (в платном курсе) +- 💯 Контракт сигналов `signals` + - ⭐ Сигналы (в платном курсе) + - 💻 Примеры кода: (готовятся), будут тут https://github.com/HowProgrammingWorks/Signals + - 🧑‍💻 Задания по сигналам (в платном курсе) +- 💯 Обработка ошибок, их выявление и решение проблем со стектрейсом + - ✨ [Обработка ошибок из старой лекции](https://youtu.be/Jdf_tZuJbHI) + - 💻 Примеры кода + - 💻 Примеры кода из старого курса: https://github.com/HowProgrammingWorks/AsyncAwait + - 💻 Примеры кода: (готовятся), будут тут https://github.com/HowProgrammingWorks/AsyncErrorHandling + - 🧑‍💻 Задания по обработке ошибок +- 🧑‍🎓 Асинхронная очередь `AsyncQueue` + - ⭐ Асинхронная очередь (в платном курсе) + - ✨ Конкурентная асинхронная очередь из старой лекции](https://youtu.be/Lg46AH8wFvg + - 💻 Примеры кода: https://github.com/HowProgrammingWorks/ConcurrentQueue + - 💻 Примеры кода: (готовятся), будут тут https://github.com/HowProgrammingWorks/AsyncQueue +- 🧑‍🎓 Асинхронный пул `AsyncPool` + - ✨ [Асинхронный пул для worker thread pool в Node.js](https://youtu.be/Jj5KZRq4wYI) + - 💻 Примеры кода: https://github.com/HowProgrammingWorks/Pool + - 💻 Примеры кода: (готовятся), будут тут https://github.com/HowProgrammingWorks/AsyncPool +- 🧑‍🎓 Асинхронная коллекция `Collector` + - 🧩 Асинхронные коллекции (собираем значения до готовности) + - ✨ [Асинхронные коллекторы данных](https://youtu.be/tgodt1JL6II) + - 💻 Примеры кода: https://github.com/HowProgrammingWorks/Collector +- 🧑‍🎓 Паттерн цепочка ответственности `Chain of responsibility` + - 💻 Примеры кода: (готовятся), будут тут https://github.com/HowProgrammingWorks/ChainOfResponsibility +- 🧑‍🎓 Конвертеры контрактов `asyncify`, `callbackify`, стыковка кода в разных стилях + - ⭐ Асинхронные адаптеры (в платном курсе) + - ✨ [Асинхронные адаптеры из старой лекции](https://youtu.be/76k6_YkYRmU) + - 💻 Примеры кода: https://github.com/HowProgrammingWorks/AsyncAdapter + - 🧑‍💻 Задания по адаптерам (в платном курсе) +- 🧑‍🎓 Предотвращение состояния гонки по данным и управлению в асинхронном коде (в платном курсе) +- 🧑‍🎓 Отмена асинхронных операций: `AbortController`, `AbortSignal` (в платном курсе) + - 🧩 Документация на MDN: https://developer.mozilla.org/en-US/docs/Web/API/AbortController +- 🧑‍🎓 `Async Generator` и `Async Iterator` (в платном курсе) + - ✨ [Генераторы и асинхронные генераторы из старой лекции](https://youtu.be/kvNm9D32s8s) +- ⚙️ Абстракции портированные из параллельного программирования в асинхронное + - 🧩 Асинхронные абстракции: `Semaphore`, `Mutex` + - 🧩 Блокировки `Lock`, `Spin Lock` +- ⚙️ Абстракции параллельного программирования + - 🧩 Системные абстракции: `threads`, `processes` + - 🧩 Межпроцессовое и межпотоковое взаимодействие, `MessageChannel`, `BroadcastChannel` + - 🧩 Корутины `coroutines` +- 🧑‍🎓 Асинхронные генераторы и асинхронные итераторы + - ✨ [Генераторы и асинхронные генераторы из старой лекции](https://youtu.be/kvNm9D32s8s) + - 💻 Генераторы: https://github.com/HowProgrammingWorks/Generator + - 💻 Асинхронные генераторы: https://github.com/HowProgrammingWorks/AsyncGenerator + - ✨ [Итераторы и асинхронные итераторы из старой лекции](https://youtu.be/rBGFlWpVpGs) + - 💻 Итераторы: https://github.com/HowProgrammingWorks/Iterator + - 💻 Асинхронные итераторы: https://github.com/HowProgrammingWorks/AsyncIterator +- 🧑‍🚀 Композиция функций на колбеках `compose callbacks` + - ✨ [Асинхронная композиция функций](https://youtu.be/3ZCrMlMpOrM) + - 💻 Примеры кода: https://github.com/HowProgrammingWorks/AsyncCompose +- 🧑‍🚀 Композиция асинхронных функций `async compose` + - 💻 Примеры кода: https://github.com/HowProgrammingWorks/AsyncCompose +- 🧑‍🚀 Асинхронность на потоках событий `RxJS` + - ✨ Потоки событий, паттерн `Observer/Observable` + - ✨ [Асинхронность на RxJS из старой лекции](https://youtu.be/0kcpMAl-wfE) + - 💻 Примеры кода: https://github.com/HowProgrammingWorks/Rx +- 🧑‍🚀 Модель акторов `actor model` + - ✨ [Модель акторов](https://youtu.be/xp5MVKEqxY4) + - 💻 Примеры кода: https://github.com/HowProgrammingWorks/ActorModel +- 🧑‍🚀 Библиотека `do`: https://www.npmjs.com/package/do +- 🧑‍🚀 Функциональное асинхронное программирование, контракт `Future` + - ✨ [Асинхронность на фьючерах без состояния](https://youtu.be/22ONv3AGXdk) + - 💻 Примеры кода: https://github.com/HowProgrammingWorks/Future +- ⚠️ Асинхронность на синхронных генераторах `function*/yield` +- ⚠️ Мидлвары `middleware` как антипаттерн: https://youtu.be/RS8x73z4csI + - 💻 Примеры кода: (готовятся), будут тут https://github.com/HowProgrammingWorks/Middleware +- ⚠️ Контракты семейства `Deferred` + - ✨ [Deferred: Асинхронность на диферах с состоянием](https://youtu.be/a2fVA1o-ovM) + - 💻 Примеры кода: https://github.com/HowProgrammingWorks/Deferred +- ⚠️ Async.js + - 🧩 [Легаси код на библиотеке `Async.js`](https://youtu.be/XQ94wQc-erU) + - 💻 Примеры кода: https://github.com/HowProgrammingWorks/AsynchronousProgramming +- ⚠️ Коллекция асинхронных абстракций `Metasync`: https://www.npmjs.com/package/metasync + - ✨ [Архивная лекция](https://youtu.be/xNfOv9I1MDk) +- ⚙️ Трекинг асинхронных контекстов + - ⭐ AsyncLocalStorage, AsyncResource (в платном курсе) + - 💻 Примеры использования AsyncLocalStorage и AsyncResource: https://github.com/HowProgrammingWorks/AsyncContextTracking +- ⚙️ Процессы и потоки + - 🧩 [Многопоточность в Node.js](https://youtu.be/VNXga8zomrY) + - 🧩 [Web Locks API in Node.js and browser](https://youtu.be/auMM-uV12F0) ## Обратите внимание From 1619fdb4ecf46aa6723a34a92fbc565bff3cd161 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Sun, 3 Mar 2024 09:35:25 -0500 Subject: [PATCH 252/308] Update Async-2024.md --- Courses/Async-2024.md | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/Courses/Async-2024.md b/Courses/Async-2024.md index 6dd0a72..f5de7bf 100644 --- a/Courses/Async-2024.md +++ b/Courses/Async-2024.md @@ -4,6 +4,8 @@ Те способы писать асинхронный код, которые мы использовали 10-15 лет назад безвозвратно уходят в прошлое и могут быть интересны лишь для поддержки легаси упражнения в глубоком понимании асинхронного программирования. Даже способы 5-7 летней давности уже имеют мало общего с современными практиками, но интернет полон устаревшей информации, даже [открытый курс сообщества Metarhia](https://github.com/HowProgrammingWorks/Index/blob/master/Courses/Asynchronous.md) на сегодняшний момент стал слишком громоздким и излишним. Еще нужно упомянуть о том, что в системном и прикладном коде асинхронное программирование должно выглядеть принципиально по-разному. Полностью скрыть от продуктового разработчика сложность асинхронного кода за абстракциями не удастся, потому, что он в любом случае будет работать с таймерами, событиями, стримами, fetch и другими асинхронными API, но его можно писать в десятки раз проще, чем асинхронный код в системном слое. Что касается системного слоя, то нужно вводить в обиход теорию очередей (системы массового обслуживания), модель акторов, часть абстракций из параллельного программирования (семафоры, рандеву, атомарные операции). Конечно, содержать все это в одном курсе сложновато, поэтому, мы отдадим приоритет прикладному коду и сначала полностью подготовим курс для применения асинхронного программирования в продуктовой разработке, а потом будем добавлять необязательные темы из старого курса и много других полезных абстракций, широко распространенных в других языках программирования, но слабо известных в мире JavaScript. +![PXL_20231227_190319918 MP](https://github.com/metatech-university/Async-2024/assets/4405297/2d0855a7-18d5-45c2-8fa9-d1e873ba1030) + ## Содержание Важные аспекты нового курса: @@ -16,7 +18,18 @@ - Упор на надежность, поддерживаемость, тестируемость, снижение зацепления - Примеры и задачи по исправлению скрытых проблемных состояний и data races -Темы нового курса: +Для того, чтобы писать прикладной код хватит первого столбика таблицы (а в оглавлении темы помечены 💯). Второй столбик полезен, как дополнительные знания, (углубленное изучение помечено как 🧑‍🎓). Для бекенда на ноде нужно освоить два первых столбика. Третий столбик содержит системные вещи (помечены ⚙️ в оглавлении), которые нужны для разработки инструментов, платформ и библиотек. Четвертый столбик (помечен 🧑‍🚀) это дополнительные абстракции, которые можно осваивать выборочно, они понадобятся не всем, но если вы работаете в проектах, где много функционального и/или реактивного программирования. Пятый столбик - вещи, которые морально устарели и могут рассматриваться как интересный антиквариат (помечены ⚠️). + +| Applied 💯 | Advanced 🧑‍🎓 | System ⚙️ | Elective 🧑‍🚀 | Legacy ⚠️ | +|:--------------|:--------------------------|:-------------------|:---------------------|:------------------| +| `callbacks` | `AsyncQueue` | `Thenable` | `compose callbacks` | `Deferred` | +| `promises` | `AsyncPool` | `Semaphore` | `async compose` | `function*/yield` | +| `async/await` | `AsyncCollector` | `Mutex` | `Observer` | `Async.js` | +| `events` | `Chain of responsibility` | `Spin Lock` | `RxJS` | `Metasync` | +| `streams` | `Async Generator` | `MessageChannel` | `Future` | `middleware` | +| `signals` | `Async Iterator` | `BroadcastChannel` | `coroutines` | | +| `locks` | | `threads` | `Actor Model` | | +| | | `processes` | `do` | | Условные обозначения: ⭐ новые лекции, ✨ открытые старые лекции, 💯 обязательные, 🧑‍🎓 продвинутые, ⚙️ системные, 🧑‍🚀 по выбору, ⚠️ устаревшее, 🧩 необязательные темы, 💻 примеры кода, 🧑‍💻 задания From 67721c87152b9fdb5950765af1557ec1ab825440 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Sun, 3 Mar 2024 09:37:17 -0500 Subject: [PATCH 253/308] Fix link --- Courses/Async-2024.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Courses/Async-2024.md b/Courses/Async-2024.md index f5de7bf..37546fc 100644 --- a/Courses/Async-2024.md +++ b/Courses/Async-2024.md @@ -81,7 +81,7 @@ - 🧑‍💻 Задания по обработке ошибок - 🧑‍🎓 Асинхронная очередь `AsyncQueue` - ⭐ Асинхронная очередь (в платном курсе) - - ✨ Конкурентная асинхронная очередь из старой лекции](https://youtu.be/Lg46AH8wFvg + - ✨ Конкурентная асинхронная очередь из старой лекции](https://youtu.be/Lg46AH8wFvg) - 💻 Примеры кода: https://github.com/HowProgrammingWorks/ConcurrentQueue - 💻 Примеры кода: (готовятся), будут тут https://github.com/HowProgrammingWorks/AsyncQueue - 🧑‍🎓 Асинхронный пул `AsyncPool` From 4cf88db9b78a86c19404c64b04b65faf3fd06f96 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Thu, 14 Mar 2024 19:56:12 -0400 Subject: [PATCH 254/308] Add tasks --- Courses/Async-2024.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/Courses/Async-2024.md b/Courses/Async-2024.md index 37546fc..7646599 100644 --- a/Courses/Async-2024.md +++ b/Courses/Async-2024.md @@ -37,7 +37,7 @@ - ⭐ Контракты `Callback` и `Callback-last-error-first` (ссылка в платном курсе) - 💻 Колбеки: https://github.com/HowProgrammingWorks/Callbacks - 💻 Примеры кода с колбеками: https://github.com/HowProgrammingWorks/AsynchronousProgramming - - 🧑‍💻 Задания по колбекам (в платном курсе) + - 🧑‍💻 [Задания по колбекам](https://github.com/HowProgrammingWorks/Callbacks/tree/master/JavaScript/Tasks) (решения, ревью и разбор в платном курсе) - 💯 Минимально необходимое понимание рантайма: event loop, I/O, таймеры - ⭐ Фазы Event-loop в V8 и Node.js (ссылка в платном курсе) - 🧩 [Стрим с разбрром Event loop и асинхронности](https://www.youtube.com/live/ND5HNHicACI) @@ -45,7 +45,7 @@ - 🧑‍💻 Задания по таймерам (в платном курсе) - 💯 Контракты на базе событий `EventTarget`, `EventEmitter` - ⭐ События (ссылка в платном курсе) - - 🧑‍💻 Задания по событиям (в платном курсе) + - 🧑‍💻 [Задания по событиям](https://github.com/HowProgrammingWorks/Events/tree/main/JavaScript/Tasks) (решения, ревью и разбор в платном курсе) - ✨ [EventEmitter из старой лекции](https://youtu.be/LK2jveAnRNg) - 💻 EventEmitter: https://github.com/HowProgrammingWorks/EventEmitter - 💯 Абстракция потоков `Stream` @@ -58,17 +58,17 @@ - ⭐ Контракт `Thenabe` (ссылка в платном курсе) - ✨ [Thenable из старой лекции](https://youtu.be/Jdf_tZuJbHI) - 💻 Примеры кода: https://github.com/HowProgrammingWorks/Thenable - - 🧑‍💻 Задания по `Thenabe` (в платном курсе) + - 🧑‍💻 [Задания по `Thenabe`Thenable](https://github.com/HowProgrammingWorks/Thenable/tree/master/JavaScript/Tasks) (решения, ревью и разбор в платном курсе) - 💯 Контракт `Promise` - ⭐ Promise: then/catch/finally и методы класса all, allSettled, race, any (ссылка в платном курсе) - ✨ [Асинхронность на промисах из старой лекции](https://youtu.be/RMl4r6s1Y8M) - 💻 [Примеры кода](https://github.com/HowProgrammingWorks/Promise/tree/master/JavaScript) - - 🧑‍💻 Задания по `Promise` (в платном курсе) + - 🧑‍💻 [Задания по `Promise`](https://github.com/HowProgrammingWorks/Promise/tree/master/JavaScript/Tasks) (решения, ревью и разбор в платном курсе) - 💯 Контракт асинхронных функций `async/await` - ⭐ Асинхронные функции (ссылка в платном курсе) - ✨ [Асинхронные функции из старой лекции](https://youtu.be/Jdf_tZuJbHI) - 💻 [Примеры кода](https://github.com/HowProgrammingWorks/AsyncFunction/tree/main/JavaScript) - - 🧑‍💻 Задания по `async/await` (в платном курсе) + - 🧑‍💻 [Задания по `async/await`](https://github.com/HowProgrammingWorks/AsyncAwait/tree/master/JavaScript/Tasks) (решения, ревью и разбор в платном курсе) - 💯 Контракт сигналов `signals` - ⭐ Сигналы (в платном курсе) - 💻 Примеры кода: (готовятся), будут тут https://github.com/HowProgrammingWorks/Signals From add71b467081575646e91620cbff3592345334fd Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Sun, 31 Mar 2024 23:18:01 +0300 Subject: [PATCH 255/308] Add talks --- Courses/Talks.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Courses/Talks.md b/Courses/Talks.md index fc25886..22a3fbd 100644 --- a/Courses/Talks.md +++ b/Courses/Talks.md @@ -2,6 +2,9 @@ ## 2024 +- [Все ли плохо с Diia](https://youtu.be/6X6MaXoQdw8) +- [👏 Дія відкрила код - Diia code review 🤦](https://youtu.be/ggIk83GO25I) + ## 2023 - [Стрим про образование программиста с Тимуром Шемсединовым и Сергеем Немчинским](https://www.youtube.com/live/pcwccVihgeg?feature=share) From b0fa624c5cef0cf23d8e82165e5feb54fdbe1d0e Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Mon, 1 Apr 2024 17:00:06 -0400 Subject: [PATCH 256/308] Add link --- Courses/Talks.md | 1 + 1 file changed, 1 insertion(+) diff --git a/Courses/Talks.md b/Courses/Talks.md index 22a3fbd..dc6b646 100644 --- a/Courses/Talks.md +++ b/Courses/Talks.md @@ -4,6 +4,7 @@ - [Все ли плохо с Diia](https://youtu.be/6X6MaXoQdw8) - [👏 Дія відкрила код - Diia code review 🤦](https://youtu.be/ggIk83GO25I) +- [Дія» открыла код! Что не так?](https://www.youtube.com/watch?v=Ug-tytIlhU0) ## 2023 From d1df3d67c9a4ca6b544c216ff46635740601e44a Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Fri, 19 Apr 2024 03:18:23 -0400 Subject: [PATCH 257/308] Remove monthly plan --- Courses/Async-2024.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Courses/Async-2024.md b/Courses/Async-2024.md index 7646599..88ee181 100644 --- a/Courses/Async-2024.md +++ b/Courses/Async-2024.md @@ -164,7 +164,7 @@ ## Как попасть на курс -💳 Сейчас на курс можно записаться «Async 2024» годовая подписка на Patreon - это полный курс, а помесячная - без ревью кода, ответов на вопросы и созвонов. Матераиалы курса остаются и после завершения подписки (не нужно ее продлять все время, я не забираю доступ). +💳 Сейчас на курс можно записаться по годовой подписке на план «Async 2024» на Patreon - это полный курс. Матераиалы курса остаются и после завершения подписки (не нужно ее продлять все время, я не забираю доступ). 💳 Второй вариант: вместе с курсом по ноде по плану «Node + Async». Программа курса «Node.js 2024»: https://github.com/HowProgrammingWorks/Index/blob/master/Courses/NodeJS-2024.md и вопросы для собеседований, которые мы разберем для ноды: https://github.com/tshemsedinov/NodeJS-Interview-Questions 🎫 Регистрация: https://www.patreon.com/tshemsedinov From bf67883ed4e690ae86df2e909376f7348fc1ec44 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Fri, 19 Apr 2024 03:19:13 -0400 Subject: [PATCH 258/308] Remove nodejs monthly plan --- Courses/NodeJS-2024.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Courses/NodeJS-2024.md b/Courses/NodeJS-2024.md index 34e2052..56f0b31 100644 --- a/Courses/NodeJS-2024.md +++ b/Courses/NodeJS-2024.md @@ -152,7 +152,7 @@ # Доступ -💳 Сейчас на курс можно записаться по плану «NodeJS 2024» годовая подписка на Patreon - полный курс, помесячная - отдельные лекции и материалы, но без ревью кода, заданий, созвонов и ответов на вопросы. Матераиалы курса остаются и после завершения подписки (не нужно ее продлять все время, я не забираю доступ). +💳 Сейчас на курс можно записаться по плану «NodeJS 2024» годовая подписка на Patreon - полный курс. Матераиалы курса остаются и после завершения подписки (не нужно ее продлять все время, я не забираю доступ). 💳 Второй вариант: вместе с курсом по ассинхронному программированию «Node + Async» годовая подписка на Patreon. Программа курса «Async 2024»: https://github.com/HowProgrammingWorks/Index/blob/master/Courses/Async-2024.md 🎫 Регистрация: https://www.patreon.com/tshemsedinov From df44d4179934525384fef013da34935016afcba3 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Fri, 30 Aug 2024 16:13:51 -0400 Subject: [PATCH 259/308] Fundamentals 2024 --- Courses/Fundamentals-2024.md | 140 +++++++++++++++++++++++++++++++++++ 1 file changed, 140 insertions(+) create mode 100644 Courses/Fundamentals-2024.md diff --git a/Courses/Fundamentals-2024.md b/Courses/Fundamentals-2024.md new file mode 100644 index 0000000..a0b12f8 --- /dev/null +++ b/Courses/Fundamentals-2024.md @@ -0,0 +1,140 @@ +# Основи програмування + +- Автор: https://github.com/tshemsedinov +- Завдання з курсу: готується для публікації +- Словник термінів: готується для публікації +- Умовні позначення: + - ⭐ - Нові спрощені лекції + - ✨ - Старі але важливі лекції + - 🧑‍💻 - Приклади коду + - 🧩 - Необов'язкові лекції + +## Перший семестр + +- Введення та огляд метеріалу + - ⭐ Новий вступ курсу 2024 (готується) + - ⭐ [Вступ курсу 2023](https://youtu.be/1lU7G46S4FA) + - ⭐ [Базовий JavaScript українською (8 годин)](https://youtu.be/FlXsGI7rzWE) + - ⭐ [Скорочений переклад базового JavaScrtipt руською (4 години)](https://youtu.be/HetL0ETbN6Y) + - ⭐ [Q&A для усіх курсів](https://youtu.be/Wm7wclbv1Ik) + - 🧩 [Введення у програмування](https://youtu.be/5Gt61EX6HZ4) + - 🧩 [Введення у програмування, продовження](https://youtu.be/PzlLXQ3RaDs) + - 🧩 [Мови програмування](https://youtu.be/enHA1CRkJe0) + - 🧩 Семінар: [JavaScript, відповіді на запитання](https://youtu.be/wqkQ6eslyzY) + - 🧩 [История развития языков программирования](https://youtu.be/qqz0VSaNxuw) + - 🧩 [Парадигмы программирования](https://youtu.be/Yk1sxLVHfjs) + - ✨ [Базовий синтаксис JavaScript](https://youtu.be/xJn3k1f4BiM) + - ✨ [Базовий синтаксис JavaScript, продовження](https://youtu.be/qa-XleqA0JU) + - 🧩 Семінар: [Базовий синтаксис мови JavaScript](https://youtu.be/PGqjTXQe_qw) + - 🧑‍💻 Абстракції та їх перевикористання: https://github.com/HowProgrammingWorks/Reusable + - 🧑‍💻 Основні конструкції: https://github.com/HowProgrammingWorks/Cheatsheet +- Ідентифікатори та значення + - ⭐ [Ідентифікатори, змінні та константи](https://youtu.be/Ljj8HyUIPUA) + - ⭐ [Літарали, значення та типи даних](https://youtu.be/yf58Lmr_J90) + - 🧑‍💻 Типи даних: https://github.com/HowProgrammingWorks/DataTypes +- Функції + - ⭐ [Функції, блоки та область видимості змінних](https://youtu.be/h5IvZh5QHEM) + - ✨ [Функції, стрілочні функції, контексти, замикання JavaScript](https://youtu.be/pn5myCmpV2U) + - 🧑‍💻 Функції: https://github.com/HowProgrammingWorks/Function +- Умови + - ⭐ [Умови та розгалудження, оператор if](https://youtu.be/dhurClkDGrc) + - 🧑‍💻 Приклади коду: https://github.com/HowProgrammingWorks/Conditional +- Ітерування + - ⭐ [Цикли for, for..of, for..in](https://youtu.be/Ph-luU2sbdg) + - ⭐ [Цикли while, do..while](https://youtu.be/3ZC4O5dM5pY) + - ✨ [Ітерування, цикли та ітератори](https://youtu.be/lq3b5_UGJas) + - 🧑‍💻 Приклади коду: https://github.com/HowProgrammingWorks/Iteration +- Колекції + - ⭐ [Колекції — Array, Object](https://youtu.be/SqGoKGOZu40) + - 🧑‍💻 Масиви: https://github.com/HowProgrammingWorks/Arrays + - ✨ [Масиви, об'єкти, класи, прототипи JavaScript](https://youtu.be/VBMGnAPfmsY) + - ✨ [Массивы в JavaScript, методы Array](https://youtu.be/D1kfYBkX9FE) + - 🧑‍💻 Структури даних: https://github.com/HowProgrammingWorks/DataStructures + - ⭐ [Домішки (mixin), JSON серіалізація (serialization)](https://youtu.be/rMUB78bs26w) + - ⭐ [Множини (Set) та хеш-таблиці (Map)](https://youtu.be/1avvpS_Hqms) + - ✨ [Коллекции, множества, хеш таблицы в JavaScript](https://youtu.be/hN0wsq5LNOc) + - 🧑‍💻 Колекції: https://github.com/HowProgrammingWorks/Collections + - 🧑‍💻 Хеш таблиці: https://github.com/HowProgrammingWorks/Map + - 🧑‍💻 Множини (Set): https://github.com/HowProgrammingWorks/Set +- Практичні завдання + - ⭐ [Нові практичні завдання 1-5](https://youtu.be/4I2iL3JjFdM) + - ✨ [Налаштування середовища: Node.js, npm, git, eslint](https://youtu.be/hSyA7tcNaCE) Дивитись вибірково, що не зрозуміло – пропускайте + - ✨ Старий семінар: [Автоматична перевірка лабораторних робіт](https://youtu.be/M4KpG0LEAyA) + - ✨ Семінар: [Виконання лабораторних робіт з курсу](https://youtu.be/ikUOyFPzdJw) + - 🧑‍💻 Підготовка середовища виконання завдань: [Exercises.ru.md](https://github.com/HowProgrammingWorks/Introduction/blob/master/Exercises.ru.md) + - 🧑‍💻 Завдання: [SEF1.ru.md](https://github.com/HowProgrammingWorks/Index/blob/master/Practice/SEF1.ru.md) +- Callbacks, timers + - ⭐ [Функції зворотнього виклику (callbacks) та таймери](https://youtu.be/MFG3NaEwu70) + - 🧑‍💻 Функції зворотнього виклику: https://github.com/HowProgrammingWorks/Callbacks + - ✨ [Функції вищого порядку, колбеки, події](https://youtu.be/1vqATwbGHnc) + - 🧑‍💻 Функції вищого порядку: https://github.com/HowProgrammingWorks/HigherOrderFunction + - ✨ [Таймеры, таймауты и EventEmitter](https://youtu.be/LK2jveAnRNg) + - 🧑‍💻 Таймери: https://github.com/HowProgrammingWorks/Timers + - 🧑‍💻 EventEmitter: https://github.com/HowProgrammingWorks/EventEmitter + - 🧑‍💻 Події: https://github.com/metarhia/common/blob/master/lib/events.js +- Замикання (closures) + - ⭐ [Замикання closures, (функції + контексти)](https://youtu.be/_FranqU7420) + - ✨ [Функції, стрілочні функції, контексти, замикання JavaScript](https://youtu.be/pn5myCmpV2U) + - 🧑‍💻 Замикання (closures): https://github.com/HowProgrammingWorks/Closure + - 🧩 [Часткове застосування та curry](https://youtu.be/ND8KQ5xjk7o) + - 🧑‍💻 Часткове застосування: https://github.com/HowProgrammingWorks/PartialApplication +- Асинхронність + - ⭐ [Асинхронні функції, async, await](https://youtu.be/_3rRFN3iwsg) +- Обробка помилок + - ⭐ [Помилки (Error), та обробка exception](https://youtu.be/UmpMa-f7dM4) +- Модульність + - ⭐ [Системи модульності ESM (ECMAScript) та CJS (CommonJS)](https://youtu.be/MQepk3r41Rc) + - ⭐ [Декомпозиція програми на модулі](https://youtu.be/4SLMmET8ARM) +- Рекурсія + - ⭐ [Рекурсія, вихід з рекурсії та stack trace](https://youtu.be/bRgUmZgmXAg) + - ✨ [Рекурсія: непряма та хвостова, стек, вихід](https://youtu.be/W2skCjIgVKE) + - 🧑‍💻 Рекурсія: https://github.com/HowProgrammingWorks/Recursion +- ✨ [Робота з рядками, шаблонами та юнікодом](https://youtu.be/GcopcHQkA8M) + - 🧑‍💻 Приклади коду: https://github.com/HowProgrammingWorks/String +- ✨ [Антипатерни загальні для всіх парадигм](https://youtu.be/NMUsUiFokr4) + - 🧑‍💻 Приклади коду: https://github.com/HowProgrammingWorks/Antipatterns/tree/master/JavaScript/01-Common +- ✨ [Консоль та командний рядок у JavaScript та Node.js](https://youtu.be/5aSZyKi5BmE) + - 🧑‍💻 Приклади коду: https://github.com/HowProgrammingWorks/CommandLine +- 🧩 [Чеининг функций и объектов, обработка ошибок](https://youtu.be/PfuEfIiLX34) + - 🧑‍💻 Чеінінг: https://github.com/HowProgrammingWorks/Chaining + - 🧑‍💻 Обробка помилок: https://github.com/HowProgrammingWorks/Errors +- ✨ [Антипатерни процедурного програмування](https://youtu.be/cTv7V22mkwE) + - 🧑‍💻 Приклади коду: https://github.com/HowProgrammingWorks/Antipatterns/tree/master/JavaScript/02-Procedural +- ✨ [Code Review: как это и зачем](https://youtu.be/EKL6NiIQ6ZU) + - 🧑‍💻 Приклади коду: https://github.com/HowProgrammingWorks/CodeReview + - Семинар: [Code Review, ответы на вопросы](https://youtu.be/AgH4OAKbmkM) +- ✨ [Структури даних: списки, стек, черга, дек](https://youtu.be/9KvA4hDDSjk) + - 🧑‍💻 Списки: https://github.com/HowProgrammingWorks/LinkedList + - 🧑‍💻 Черги: https://github.com/HowProgrammingWorks/Dequeue +- ✨ [Сериализация и десериализация в JavaScript и Node.js](https://youtu.be/GtKPniOEzh8) + - 🧑‍💻 Приклади коду: https://github.com/HowProgrammingWorks/Serialization +- ✨ [Рефакторинг: причины, цели, техники и процесс](https://youtu.be/z73wmpdweQ4) + - 🧑‍💻 Приклади коду: https://github.com/HowProgrammingWorks/Refactoring + - 🧑‍💻 Пример проекта: https://github.com/tshemsedinov/node-mysql-utilities +- 🧩 Семінар: [Вибір напряму у програмуванні](https://youtu.be/1gL627DQF4A) +- 🧩 [Proxy та Symbol](https://youtu.be/UjZjSDyi9AM) + - 🧑‍💻 Проксі: https://github.com/HowProgrammingWorks/Proxy + - 🧑‍💻 Символи: https://github.com/HowProgrammingWorks/Symbol +- ✨ [Регулярні вирази та парсинг у JavaScript](https://youtu.be/-ef2E0ozxao) + - 🧑‍💻 Примеры кода: https://github.com/HowProgrammingWorks/RegExp +- ✨ [Композиція: pipe, compose](https://youtu.be/xS9FicVrOTI) + - 🧑‍💻 Приклади коду: https://github.com/HowProgrammingWorks/Composition +- ✨ [Домішки: mixin, extend, Object.assign, class-mixin](https://youtu.be/NZMrJ2adEyY) + - 🧑‍💻 Приклади коду: https://github.com/HowProgrammingWorks/Mixin + - 🧩 Стара версія лекцій: https://youtu.be/2h9syXN5wO0 +- 🧩 [Прототипне програмування та прототипне успадкування](https://youtu.be/SzaXTW2qcJE) + - 🧑‍💻 Приклади коду: https://github.com/HowProgrammingWorks/PrototypeChain + - ✨ Прототипи: https://github.com/HowProgrammingWorks/Prototype +- 🧩 [Мемоізація: memoize](https://youtu.be/H6S8QJo2Qxg) + - 🧑‍💻 Приклади коду: https://github.com/HowProgrammingWorks/Memoization + - 🧑‍💻 Стара версія лекцій: https://youtu.be/2h9syXN5wO0 +- 🧩 [Фабрики та пули об'єктів у JavaScript, factorify, poolify](https://youtu.be/Ax_mSvadFp8) + - 🧑‍💻 Фабрики: https://github.com/HowProgrammingWorks/Factory + - 🧑‍💻 Пули об'єктів: https://github.com/HowProgrammingWorks/Pool +- 🧩 [Функції-обгортки: wrappers](https://youtu.be/En7pWi2fSzs) + - 🧑‍💻 Приклади коду: https://github.com/HowProgrammingWorks/Wrapper + - 🧩 Стара версія лекцій: https://youtu.be/2h9syXN5wO0 +- 🧩 [Типізовані масиви JavaScript](https://youtu.be/tTNcqxbxhfY) + - 🧑‍💻 Приклади коду: https://github.com/HowProgrammingWorks/TypedArrays +- 🧩 [Нове у JavaScript](https://youtu.be/fUjHLj8bq_Y) + - 🧑‍💻 Приклади коду: https://github.com/HowProgrammingWorks/ESNext From b26c0b08e8cd24dd622a42b323160cbb5f7670d9 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Sun, 15 Sep 2024 14:51:13 -0400 Subject: [PATCH 260/308] Update Talks.md --- Courses/Talks.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Courses/Talks.md b/Courses/Talks.md index dc6b646..c7d6a7c 100644 --- a/Courses/Talks.md +++ b/Courses/Talks.md @@ -5,6 +5,9 @@ - [Все ли плохо с Diia](https://youtu.be/6X6MaXoQdw8) - [👏 Дія відкрила код - Diia code review 🤦](https://youtu.be/ggIk83GO25I) - [Дія» открыла код! Что не так?](https://www.youtube.com/watch?v=Ug-tytIlhU0) +- [Паттерны в JavaScript с примерами и культура кода на ITBeard](https://www.youtube.com/live/vDOe1v76w5Y) +- [Об оптимизации паттернов для JavaScript с Деми Мурычем](https://www.youtube.com/watch?v=LJJpbFcmKQs) +- [Беседа с Ильей Климовым о целях паттернов](https://youtube.com/live/Jru7q-OjWX8) ## 2023 From 08e0def965c727c2b481ba5cfd9eb6ccc9d66ff9 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Sat, 21 Sep 2024 10:28:46 -0400 Subject: [PATCH 261/308] Create Patterns-2024.md --- Courses/Patterns-2024.md | 176 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 176 insertions(+) create mode 100644 Courses/Patterns-2024.md diff --git a/Courses/Patterns-2024.md b/Courses/Patterns-2024.md new file mode 100644 index 0000000..0f1d689 --- /dev/null +++ b/Courses/Patterns-2024.md @@ -0,0 +1,176 @@ +# 🚀 Patterns 2024 Training + +***Rethinking GRASP, SOLID, and GoF for JavaScript and Node.js*** + +> Translations: [EN](./Patterns-2024.md), [UA](./Patterns-2024-ua.md), [RU](./Patterns-2024-ru.md) + +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. + +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. +Blindly transferring knowledge and practices from C++ or Java to **JavaScript** and C# results in dead ceremonies. +However, they can be revived through practice, tied to realities, and rethought to avoid becoming monstrous and horrors. + +## 💡 Ultimate Uniqueness + +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. + +Here's what I suggest learning and practicing: + +* 📂 Module Systems, Dependency Injection, and Inversion of Control +* 📦 Decomposition of Abstractions and GRASP Principles +* 🧩 Gang of Four patterns rethinked for JavaScript realities +* 🔮 Principles of Isolation and SoC (Separation of Concerns) +* 👷🏻‍♂️ Separation of Applied and System Code +* 🧩 SOLID principles: Single Responsibility, OCP, ISP, DIP, LSP +* 🌟 Multi-Paradigm Programming and Domain-Specific Languages +* 🧩 Contract Programming and Modeling with Schemas +* 🏛️ Clean Architecture and Layered Architecture + +## 📖 Course Structure + +### 📦 Unit 1: Structure and Modularity + +Why do we need rethinking and adapting GoF, SOLID, and GRASP for JavaScript/TypeScript realities. How to do it? + +**🗓️ Week 1: Code Characteristics and Optimization Strategies** + +> There is a path that leads to radical improvement of the structure and +characteristics of your code. GoF, SOLID, GRASP principles and +patterns, how to apply them and what do we get. Code characteristics: +readability (understanding), reliability, testability, +maintainability, reusability, flexibility, security. Optimal use of +computing resources: processor, memory, input-output and cognitive +resources of developers. + +**🗓️ Week 2: Native features in language and platforms** + +> JavaScript has built-in contracts: Thenable, Iterable, AsyncIterator, +Callback-last, Callable, Cancelable, Observable, but the culture of +developing through contracts and interfaces is not popular enough in +the community. How can we improve development performance with +Knowledge-driven approach. How patterns may help us in this direction: +to delivery quick and effective, to be performant, to make everydays +work interesting, to be motivated and never burnout. + +**🗓️ Week 3: Instantiation: Creational Patterns and Techniques** +> Creational patterns: Constructor, Singleton, Factory, Pool, Builder, +Prototype, Flyweight, other patterns and techniques. Let’s find +related principles and rethink applied importance of GRASP: Creator; +GRASP: Polymorphism, SOLID: ISP; Aggregation and Composition. How to +Save memory and other resources; how to use optimizations and caching. +How to develop extremely quick and low-latency code for any devices +we need to support and make this code clear for colleagues. + +**🗓️ Week 4: Isolation and Separation of Concerns** + +> SoC is a general engineering principle to build flexible, reliable, +and easy-modifying systems. We may use GoF patterns: Mediator, Bridge, +Abstract factory, Strategy (JavaScript-specific implementation: +Map); Modularity; GRASP: Information +Expert, Indirection, and Protected variations principles; SOLID: SRP; +This will improve code testability and reduce integration expenses. + +### 📦 Unit 2: Execution and Contracts + +Working with application modules/components integration we need +contract programming; it allows us to develop parts independently; +scale the team; improve project manageability and make a development +plan much predictable. + +**🗓️ Week 5: Contracts: Interfaces for Component Interaction** + +> Patterns: Adapter (Wrapper), Facade, Bridge, Composite, Proxy, +Promisify; Front controller; GRASP: Low Coupling and High Cohesion; +SOLID: LSP (Liskov); and SOLID: OCP (Open-Closed); It opens +the possibility of step-by-step refactoring, overcoming technical debt +and increasing subsystem stability; reducing influence (coupling) +between layers and modules. At the top level this makes possible to +scale the team, manage priorities, and make architectural decisions. + +**🗓️ Week 6: Decoupling with Events and Messaging** + +> Next great approach is event-based programming. This is useful in UIs, +distributed systems, shared resources cooperative access. Async and +event-driven programming made Node.js the ultimate solution for +non-blocking I/O. We will consider GRASP: Pure Fabrication and Low +Coupling; AsyncQueue and queueing systems, Async collections, etc. + +**🗓️ Week 7: Streams: Data Flows and Transformations** + +> Reactive programming has become a separate paradigm; Streams and +Signals are based on GRASP: Pure Fabrication and Event-driven approach +with data transformation operators it is widely used in network +protocols, file system and data access, game dev and financial and +analytical systems, embedded devices control and telemetry; other +subject areas. It gives expressive syntax, higher level of +abstraction, flexibility and performance for better user experience. + +**🗓️ Week 8: Handling Errors: Exceptions and Soft Failures** + +> We will explore error-handling best practices using both +exceptions and domain-specific (soft errors). Gracefully recover and +soft failures will increase whole system performance. We will use +Chain of Responsibility, SOLID, Promises, fallback mechanisms to +handle non-critical errors; GRASP: Protected Variations and Custom +JavaScript-specific AggregateError and Error.prototype.cause and +error serialization for network transmission. + +### 📦 Unit 3: Runtime for Applications + +Bringing everything together under real-world conditions. In this unit, +we'll explore how the foundational concepts of structure, contracts, and +patterns translate into running, scalable applications. This part will +focus on how runtime considerations shape architectural decisions. + +**🗓️ Week 9: Semantics: Expressive DSLs** + +> To improve code expressiveness and clearer semantics; any complex +software needs to invent DSL (domain-specific language). For DSL we +can use well-known syntax, JSON, JSON5, Markdown, and even JavaScript +itself. We will consider patterns: Command, Interpreter, State, +Strategy, Visitor. DSLs makes code readable for domain experts, +analytics and even experienced users. It enhances communication and +understanding, speeds up development, adapt easily to new +requirements, simplify onboarding and knowledge transfer, hides +technical complexity, allows specialists to focus on certain field, +improving project predictability. + +**🗓️ Week 10: All-agnostic as a Default Strategy** + +> Developing frameworks-agnostic, platform-agnostic, protocol-agnostic, +database-agnostic, cloud-agnostic systems as a default approach to +ensure flexibility and free architectural solutions; removes vendor +lock, etc. We certainly don't need to implement all aspects of +agnostic approach, but some of them will bring valuable benefits in +system scaling and during system operation. We will use isolation, +GRASP: Controller; SOLID: DIP; using IoC and DI; using interfaces and +Strategy pattern to decouple from implementations. + +**🗓️ Week 11: Scaling Applications and Architectural Styles** + +> This week we'll explore how to design systems that can scale and +evolve efficiently by leveraging different architectural styles: such +as DDD, Layered Architecture, SOA, Microservices, Event-Driven, +Monolithic, Ports and Adapters, Clean Architecture, Event-Sourcing, +CQRS, Pipeline, Peer-to-Peer, Client-Server Architecture and how +SOLID, GRASP and GoF can help us in implementing architecture. + +**🗓️ Week 12: Methodology: How to Start Applying Concepts** + +> The final part of the program focuses on practical application. +We will go over how to start implementing the concepts and patterns +covered in the course in real-world projects. This session provides +actionable strategies to build a roadmap for adoption. How to identify +the need for patterns and principles. Refactoring legacy Systems, +Introduction of new development techniques and activities; How to +building a Roadmap: Planning your own learning and team development +using the course principles. + +## Tariff plans + +* Minimal: learning in a common group without a mentor but with interactive calls +* Standard: training with mentor in small groups (up to 10 people) +* Prefessional: training with mentor, 1-on-1, groups, and additional materials +* Exclusive $10000: personalized training track with a couse author + +[👉 Buy: https://nodeua.com/Patterns-2024-buy.html](https://nodeua.com/Patterns-2024-buy.html) From 5996b8a44602c26e3201f135c3850bcdadbcf349 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Sat, 21 Sep 2024 10:32:08 -0400 Subject: [PATCH 262/308] Update Patterns-2024.md --- Courses/Patterns-2024.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/Courses/Patterns-2024.md b/Courses/Patterns-2024.md index 0f1d689..89274fd 100644 --- a/Courses/Patterns-2024.md +++ b/Courses/Patterns-2024.md @@ -2,8 +2,6 @@ ***Rethinking GRASP, SOLID, and GoF for JavaScript and Node.js*** -> Translations: [EN](./Patterns-2024.md), [UA](./Patterns-2024-ua.md), [RU](./Patterns-2024-ru.md) - 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. 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. From 0ba3e3c0519403bde080e77e229e8c5d00ef0e26 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Sat, 21 Sep 2024 10:32:49 -0400 Subject: [PATCH 263/308] Update Patterns-2024.md --- Courses/Patterns-2024.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Courses/Patterns-2024.md b/Courses/Patterns-2024.md index 89274fd..0c6a8a4 100644 --- a/Courses/Patterns-2024.md +++ b/Courses/Patterns-2024.md @@ -169,6 +169,6 @@ using the course principles. * Minimal: learning in a common group without a mentor but with interactive calls * Standard: training with mentor in small groups (up to 10 people) * Prefessional: training with mentor, 1-on-1, groups, and additional materials -* Exclusive $10000: personalized training track with a couse author +* Exclusive: personalized training track with a couse author [👉 Buy: https://nodeua.com/Patterns-2024-buy.html](https://nodeua.com/Patterns-2024-buy.html) From b3a6820b0344027443b7151044049c3e39041d51 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Sun, 22 Sep 2024 06:46:31 -0400 Subject: [PATCH 264/308] Create Patterns-2024-ua.md --- Courses/Patterns-2024-ua.md | 119 ++++++++++++++++++++++++++++++++++++ 1 file changed, 119 insertions(+) create mode 100644 Courses/Patterns-2024-ua.md diff --git a/Courses/Patterns-2024-ua.md b/Courses/Patterns-2024-ua.md new file mode 100644 index 0000000..b3e211f --- /dev/null +++ b/Courses/Patterns-2024-ua.md @@ -0,0 +1,119 @@ +# 🚀 Patterns 2024 Тренінг із наставниками + +***Rethinking GRASP, SOLID, and GoF for JavaScript and Node.js*** + +> Translations: [EN](./Patterns-2024.md), [UA](./Patterns-2024-ua.md), [RU](./Patterns-2024-ru.md) + +Практичний тренінг з переосмислення та застосування патернів GoF, SOLID та GRASP в асинхронному програмуванні на JavaScript та Type для прикладних та системних розробників бекенду та фронтенду, з прикладами для Node.js та браузерних додатків. + +Розуміння цих концепцій не можна просто витягти з коробки (або книги) і помістити собі у голову. Таке розуміння сильно відрізняється для різних мов та платформ. +Сліпе перенесення знань і практик з C++ або Java в **JavaScript** та C# призводить до мертвих церемоній. +Однак їх можна відродити за допомогою практики, прив'язати до реалій та переосмислити, щоб вони не стали марними монстрами. + +## 💡 Унікальність програми наставництва + +Від автора першого курсу з асинхронного програмування на JavaScript, прочитаного в Київському політехнічному інституті ще 17 років тому, безліч доповідей та лекцій з Node.js. За ці роки зібрано багато досвіду, відгуків, практики, усі курси автора перероблялися практично щороку, вбираючи найновіші пактики. Тимур Шемсединов також є контриб'ютором багатьох платформ і бібліотек у відкритому коді, серед яких Node.js, Metarhia, geoip-lite, MDN, HowProgrammingWorks, metasync... Тимур один з перших, хто почав портувати в JavaScript абстракції паралельного програмування з C++, C#, Java, Go та інших мов. + +Автор стверджує, що це найважливіші речі, які слід вивчати та практикувати: + +* 📂 Системи модульності, Dependency Injection (DI) та інверсія управління (IoC) +* 📦 Декомпозиція абстракцій та принципи GRASP із сучасною інтерпретацією +* 🧩 Паттерни «Банди чотирьох» (GoF) переосмислені для JavaScript та TypeScript +* 🔮 Принципи ізоляції та SoC (Розподіл відповідальності) +* 👷🏻‍♂️ Відокремлення прикладного та системного коду (різні спеціальності) +* 🧩 Принципи SOLID: SRP, OCP, ISP, DIP, LSP з адаптацією для різних парадигм +* 🌟 Мультипарадигменне програмування та створення доменних мов (DSL) +* 🧩 Контрактне програмування та декларативне моделювання через схеми +* 🏛️ Чиста архітектура (Clean) та лукова архітектура (Onion або Layered) + +## 📖 Структура курсу + +### 📦 Unit 1: Structure and Modularity + +Структура та модульність. Чому потрібно переосмислити та адаптувати GoF, SOLID та GRASP для сучасного JavaScript/TypeScript. Як це зробити? + +> Ми навчимося застосовувати патерни та принципи на практичних завданнях, які зустрічаються у типових проектах, а також проведемо паралелі між теорією з класичних книг та щоденною практикою, покажемо, що всі ці знання потрібні не лише на співбесідах, а й дозволяють покращити характеристики коду ваших проектів та розуміння між фахівцями у колективі. + +Що ми отримуємо як результат цього юніту: + ++ Починаємо писати код, який зручно покривати тестами. ++ Наш код стає кращим для читання та розуміння. ++ Після оптимізації наш повільний код стає швидше і їсть менше пам'яті. ++ Код стає модульним, надійним і готовим до інтеграції. ++ Як змінити код, щоб зменшити час, необхідний для його підтримки. + +> Для кожного тижня підготовлені завдання, деякі з них передбачають рефакторинг готових прикладів коду, інші – написання коду, треті – оптимізацію та дослідження характеристик коду. + +**🗓️ Week 1: Характеристики коду та стратегії оптимізації** + +> Існує шлях, який веде до радикального покращення структури та характеристик коду. Ми розглянемо принципи та шаблони GoF, SOLID, GRASP, як їх застосовувати та що вони дають. Характеристики коду: читання, надійність, тестування, підтримуваність, повторне використання, гнучкість, безпека. Оптимальне використання обчислювальних ресурсів: процесор, пам'ять, введення-виведення та когнітивні ресурси розробників. + +**🗓️ Week 2: Вбудовані можливості в мові та платформі** + +> JavaScript має вбудовані контракти: Thenable, Iterable, AsyncIterator, Callback-last, Callable, Cancelable, Observable, але культура розробки через контракти та інтерфейси не дуже поширена у спільноті. Як покращити продуктивність розробки за допомогою підходу, що базується на знаннях. Як шаблони можуть допомогти нам у цьому: реалізовувати нові фічі швидко та ефективно, бути продуктивними, робити щоденну роботу цікавою, бути вмотивованими та не вигорати. + +**🗓️ Week 3: Інстанціювання: шаблони та техніки створення екземплярів** + +> Шаблони створення екземплярів: Constructor, Singleton, Factory, Pool, Builder, Prototype, Flyweight, інші шаблони і техніки. Давайте знайдемо пов'язані принципи та переосмислимо прикладне значення GRASP: Creator; GRASP: Polymorphism, SOLID: ISP; Aggregation і Composition. Як заощаджувати пам'ять та інші ресурси; як ефективно застосовувати оптимізацію та кешування. Як розробляти вкрай швидкий код та мінімізувати latency, зробити код крос-платформним та зрозумілим для колег. + +**🗓️ Week 4: Ізоляція та розподіл відповідальності (SoC)** + +> Separation of Concerns (SoC) — це загальний інженерний принцип, спрямований на створення гнучких, надійних систем, що легко модифікуються. Ми можемо використовувати шаблони GoF: Mediator, Bridge, Abstract factory, Strategy (в JavaScript реалізації: Map); Системи модульності; GRASP принципи Information Expert, Indirection, та Protected variations; SOLID: SRP. Це покращить тестованість коду та знизить витрати на інтеграцію. + +### 📦 Unit 2: Execution and Contracts + +Для побудови структури програми з модулів та програмних компонентів, нам потрібен контрактний підхід до програмування, він дозволяє розробляти частини системи незалежно, масштабувати команду, покращувати керованість проектами та робити план розробки більш передбачуваним. + +> Ми будемо застосовувати три типи зв'язування: зв'язування через дані, зв'язування через виклики та зв'язування через події. Ми навчимося керувати зачепленням між компонентами програмних систем та проектувати їх таким чином, щоб мати можливість динамічно збирати з них програми, відкладаючи рішення про компонування. Іншими словами, наше завдання на етапі проектування не прибити все цвяхами, а надати архітектору можливість пізнього маневру. + ++ Навчимося створювати структуру коду. ++ Навчимося створювати структуру колективу, що відповідає структурі коду. (За законом Конвея: «організації проектують системи, які копіюють структуру комунікацій у цій організації»). ++ Відпрацьовуємо написання додатків, що добре підтримуються. + +**🗓️ Week 5: Контракти: інтерфейси для взаємодії компонентів** + +> Паттерни: Adapter (Wrapper), Facade, Bridge, Composite, Proxy, Promisify; Front controller; GRASP: Low Coupling and High Cohesion; SOLID: LSP (Liskov); та SOLID: OCP (Open-Closed). Застосування контрактів відкриває можливість покрокового рефакторингу, усунення технічного боргу та підвищення стабільності підсистем; зниження залежності (зв'язаності) між шарами та модулями. На рівні управління проектом це дозволяє масштабувати команду, керувати пріоритетами та приймати архітектурні рішення. + +**🗓️ Week 6: Послаблення зачеплення в коді через події та повідомлення** + +> Наступний потужний підхід - це застосування шин подій всередині програми та між підсистемами. Це поширене в інтерфейсах користувача, розподілених системах, спільному доступі до шарених ресурсів. На базі асинхронного програмування та програмування через потоки подій побудовано рішення з неблокуючим введенням-виводом в Node.js. Ми розглянемо GRASP: Pure Fabrication and Low Coupling; AsyncQueue and queueing systems, Async collections, та інші. + +**🗓️ Week 7: Streams: Потоки даних та їх перетворення** + +> Реактивне програмування розвинулося у окрему парадигму; потоки та сигнали засновані на GoF: Observer; GRASP: Pure Fabrication та Event-driven підході з потоками даних та операторами перетворення даних. Це широко використовується в мережевих протоколах, доступі до даних та файлових систем, розробки ігор, фінансових та аналітичних систем, управління вбудованими системами, телеметрії та інших областях. Це дає виразний синтаксис, більш високий рівень абстракції, гнучкість і продуктивність для поліпшення досвіду користувача (UX). + +**🗓️ Week 8: Обробка помилок: Exceptions та Soft Failures** + +> Ми розглянемо найкращі практики обробки помилок як із винятковими ситуаціями, так і доменними (м'якими) помилками. Gracefully recover та м'які помилки підвищать загальну продуктивність системи. Ми будемо використовувати Chain of Responsibility, SOLID, Promises, fallback mechanisms to handle non-critical errors; GRASP: Protected Variations and Custom JavaScript-specific AggregateError and Error.prototype.cause, а також серіалізацію помилок для передачі по мережі. + +### 📦 Unit 3: Runtime for Applications + +Об'єднання всіх розглянутих технік та підходів у реальних умовах. У цьому юніті ми розглянемо, як основні концепції побудови структури додатків, контрактне програмування та шаблони перетворюються на працюючі та масштабовані додатки. + +> Цей модуль зосереджений у тому, як питання середовища виконання лягають завдання структури та архітектури додатків. Ви отримаєте навичку впровадження технік програмування, що перетворюють програмне рішення на цифрову платформу, розраховану на тривалу експлуатацію; це включає підтримку зміни інструментарію, розширення колективу, постійне інтенсивне нарощування функціональності та навантажень. + +**🗓️ Week 9: Семантика: виразні DSL** + +> Для покращення виразності коду та ясності семантики будь-яке складне програмне забезпечення потребує створення DSL (мов, спеціалізованих для предметної області). При розробці DSL можна використовувати добре відомі синтаксиси, такі як JSON, JSON5, Markdown і навіть JavaScript. Ми розглянемо патерни: Command, Interpreter, State, Strategy, Visitor. DSL робить код зрозумілим для аналітиків предметної області та навіть досвідчених користувачів. Це покращує спілкування та розуміння, прискорює розробку, адаптацію рішень до нових вимог, спрощує навчання та передачу знань, приховує технічні складності та дозволяє фахівцям зосередитися на своїй галузі, покращуючи загальну передбачуваність проекту. + +**🗓️ Week 10: All-agnostic як стратегія за замовчуванням** + +> Розробка систем, незалежних від фреймворків, платформ, протоколів, баз даних та хмарних рішень, як стандартний підхід для забезпечення гнучкості та свободи архітектурних рішень. Такий підхід усуває залежність від постачальників хмарних рішень та фреймворків. Звичайно, не потрібно реалізовувати всі аспекти агностичного підходу, але деякі з них принесуть значні вигоди в масштабуванні системи та в процесі її експлуатації. Ми будемо використовувати ізоляцію, GRASP: Controller; SOLID: DIP; принципи IoC та DI; інтерфейси та патерн Strategy для відв'язування від конкретних реалізацій. + +**🗓️ Week 11: Масштабування додатків та архітектурні стилі** + +> На цьому тижні ми розглянемо, як проектувати системи, які можуть масштабуватися та розвиватися ефективно, використовуючи різні архітектурні стилі: DDD, листкова архітектура, SOA, мікросервіс, подійна архітектура, монолітна, порти та адаптери, чиста архітектура, Event-Sourcing, CQRS, Pipeline , Peer-to-Peer, Client-Server архітектура та як застосовувати SOLID, GRASP та GoF для реалізації архітектури. + +**🗓️ Week 12: Методологія: як почати застосовувати концепції** + +> Заключна частина програми тренінгу зосереджена практичному застосуванні всіх знань у комплексі. Ми розглянемо, як почати впроваджувати концепції та шаблони, вивчені на курсі у реальних проектах. Цей модуль надає практичні стратегії для створення дорожньої карти щодо їх впровадження. Як виявити необхідність у шаблонах та принципах та врахувати можливі негативні аспекти. Рефакторинг успадкованих систем, впровадження нових методів розробки та активностей у колективі. Як спланувати власне навчання та налагодити розвиток команди з використанням знань із цього тренінгу. + +## Тарифні плани + +* Minimal: навчання у загальній групі без наставника, але з груповими семінарами +* Standard: навчання з наставником у невеликих групах (10 осіб) +* Professional: навчання з наставником, індивідуально та в групах, додаткові матеріали +* Exclusive: персоналізований навчальний трек з автором курсу та запрошеними експертами + +[👉 Придбати: https://nodeua.com/Patterns-2024-buy.html](https://nodeua.com/Patterns-2024-buy.html) + From db5b7c7b24dba2d0edf2b38cccd0763818a558fa Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Sun, 22 Sep 2024 06:46:39 -0400 Subject: [PATCH 265/308] Create Patterns-2024-ru.md --- Courses/Patterns-2024-ru.md | 118 ++++++++++++++++++++++++++++++++++++ 1 file changed, 118 insertions(+) create mode 100644 Courses/Patterns-2024-ru.md diff --git a/Courses/Patterns-2024-ru.md b/Courses/Patterns-2024-ru.md new file mode 100644 index 0000000..2ef247c --- /dev/null +++ b/Courses/Patterns-2024-ru.md @@ -0,0 +1,118 @@ +# 🚀 Patterns 2024 Тренинг с наставниками + +***Rethinking GRASP, SOLID, and GoF for JavaScript and Node.js*** + +> Translations: [EN](./Patterns-2024.md), [UA](./Patterns-2024-ua.md), [RU](./Patterns-2024-ru.md) + +Практический тренинг по переосмыслению и применению паттернов GoF, SOLID и GRASP в асинхронном программировании на JavaScript и Type для прикладных и системных разработчиков бекенда и фронтенда, с примерами для Node.js и браузерных приложений. + +Понимание этих концепций нельзя просто извлечь из коробки (или книги) и поместить себе в голову. Такое понимание сильно различается для разных языков и платформ. +Слепой перенос знаний и практик из C++ или Java в **JavaScript** и C# приводит к мертвым церемониям. +Однако их можно возродить с помощью практики, привязать к реалиям и переосмыслить, чтобы они не стали бесполезными монстрами. + +## 💡 Уникальность программы наставничества + +От автора первого курса по асинхронному программированию на JavaScript, прочитанному в Киевском политехническом институте еще 17 лет назад, множества докладов и лекций по Node.js. За эти годы собрано множество опыта, отзывов, практики и курс перерабатывался практически каждый год, вбирая самые новые пактики. Тимур Шемсединов так же является контрибьютором мноджества платформ и библиотек в открытом коде, среди которых Node.js, Metarhia, geoip-lite, MDN, HowProgrammingWorks, metasync... Тимур один из первых, кто начал портировать в JavaScript абстракции параллельного программирования из C++, C#, Java, Go и других языков. + +Автор утверждает, что это самые важные вещи, которые следует учить и практиковать: + +* 📂 Системы модульности, внедрение зависимостей (DI) и инверсия управления (IoC) +* 📦 Декомпозиция абстракций и принципы GRASP с современной интерпретацией +* 🧩 Паттерны «Банды четырех» (GoF) переосмысленные для JavaScript и TypeScript +* 🔮 Принципы изоляции и SoC (Разделение ответственностей) +* 👷🏻‍♂️ Разделение прикладного и системного кода (разные специальности) +* 🧩 Принципы SOLID: SRP, OCP, ISP, DIP, LSP с адаптацией для разных парадигм +* 🌟 Мультипарадигменное программирование и создание доменных языков (DSL) +* 🧩 Контрактное программирование и декларативное моделирование через схемы +* 🏛️ Чистая архитектура (Clean) и слоеная архитектура (Onion или Layered) + +## 📖 Структура курса + +### 📦 Unit 1: Structure and Modularity + +Структура и модульность. Почему нужно переосмыслить и адаптировать GoF, SOLID и GRASP для современного JavaScript/TypeScript. Как это сделать? + +> Мы научимся применять паттерны и принципы на практических задачах, которые встречаются в типичных проектах, а также проведем параллели между теорией из классических книг и ежедневной практикой, покажем, что все эти знания нужны не только на собеседованиях, а позволяют улучшить характеристики кода ваших проектов и понимание между специалистами в коллективе. + +Что мы получаем как результат этого юнита: + ++ Начинаем писать код, который удобно покрываать тествми. ++ Наш код становится лучше для читения и понимания. ++ После оптимизации наш медленный код становится быстрее и ест меньше памяти. ++ Код становится модульный, надежный и готовый к интеграции. ++ Как изменить код, чтобы снизит время, необходимое для его поддержки. + +> Для каждой недели подготовлены задания, некоторые из них предусматривают рефакторинг готовых примеров кода, другие - написание кода, третьи - оптимизацию и исследование характериатстик кода. + +**🗓️ Week 1: Характеристики кода и стратегии оптимизации** + +> Существует путь, который ведет к радикальному улучшению структуры и характеристик кода. Мы рассмотрим принципы и шаблоны GoF, SOLID, GRASP, как их применять и что они дают. Характеристики кода: читаемость, надежность, тестируемость, поддерживаемость, повторное использование, гибкость, безопасность. Оптимальное использование вычислительных ресурсов: процессор, память, ввод-вывод и когнитивные ресурсы разработчиков. + +**🗓️ Week 2: Встроенные возможности в языке и платформе** + +> JavaScript имеет встроенные контракты: Thenable, Iterable, AsyncIterator, Callback-last, Callable, Cancelable, Observable, но культура разработки через контракты и интерфейсы не очень распространена в сообществе. Как улучшить производительность разработки с помощью подхода, основанного на знаниях. Как шаблоны могут помочь нам в этом: реализовывать новые фичи быстро и эффективно, быть производительными, делать ежедневную работу интересной, быть мотивированными и не выгорать. + +**🗓️ Week 3: Инстанцирование: порождающие шаблоны и техники** + +> Порождающие шаблоны: Constructor, Singleton, Factory, Pool, Builder, Prototype, Flyweight, другие шаблоны и техники. Давайте найдем связанные принципы и переосмыслим прикладное значение GRASP: Creator; GRASP: Polymorphism, SOLID: ISP; Aggregation и Composition. Как экономить память и другие ресурсы; как эффективно применять оптимизацию и кэширование. Как разрабатывать крайне быстрый код и минимизировать latency, сделать код кросс-платформенным и понятным для коллег. + +**🗓️ Week 4: Изоляция и разделение ответственности (SoC)** + +> Separation of Concerns (SoC) — это общий инженерный принцип, направленный на создание гибких, надежных и легко модифицируемых систем. Мы можем использовать шаблоны GoF: Mediator, Bridge, Abstract factory, Strategy (в JavaScript реализации: Map); Системы модульности; GRASP принципы Information Expert, Indirection, и Protected variations; SOLID: SRP. Это улучшит тестируемость кода и снизит затраты на интеграцию. + +### 📦 Unit 2: Execution and Contracts + +Для построения структуры приложения из модулей и программных компонентов, нам нужен контрактный подход к программированию, он позволяет разрабатывать части системы независимо, масштабировать команду, улучшать управляемость проектами и делать план разработки более предсказуемым. + +> Мы будем применять три типа связывания: связывание через данные, связывание через вызовы и связывание через события. Мы научимся управлять зацеплением между компонентами программных систем и проектировать их таким образом, чтобы иметь возможность собирать из них приложения, откладывая решения о компоновке. Другими словами, наша задача на этапе проектирования не прибить все гвоздями, а дать архитектору возможность позднего маневра. + ++ Научимся создавать структуру кода. ++ Научимся создавать структуру коллектива, соответствующую структуре кода. (По закону Конвея: «организации проектируют системы, которые копируют структуру коммуникаций в этой организации»). ++ Отрабатываем написание хорошо поддерживаемых приложений. + +**🗓️ Week 5: Контракты: интерфейсы для взаимодействия компонентов** + +> Паттерны: Adapter (Wrapper), Facade, Bridge, Composite, Proxy, Promisify; Front controller; GRASP: Low Coupling and High Cohesion; SOLID: LSP (Liskov); and SOLID: OCP (Open-Closed). Применение контрактов открывает возможность пошагового рефакторинга, устранения технического долга и повышения стабильности подсистем; снижения зависимости (связанности) между слоями и модулями. На уровне управления проектом это позволяет масштабировать команду, управлять приоритетами и принимать архитектурные решения. + +**🗓️ Week 6: Ослабление зацепления в коде через события и сообщения** + +> Следующий мощный подход — это применение шин событий внутри приложения и между подсистемами. Это распространено в пользовательских интерфейсах, распределенных системах, совместном доступе к разделяемым ресурсам. На базе асинхронного и событийного программирования построено решением с неблокирующим вводом-выводом в Node.js. Мы рассмотрим GRASP: Pure Fabrication and Low Coupling; AsyncQueue and queueing systems, Async collections, и другие. + +**🗓️ Week 7: Streams: Потоки данных и преобразования** + +> Реактивное программирование развилось в отдельную парадигму; потоки и сигналы основаны на GoF: Observer; GRASP: Pure Fabrication и Event-driven подходе с потоками данных и операторами преобразования данных. Это широко используется в сетевых протоколах, доступе к данным и файловым системам, разработке игр, финансовых и аналитических системах, управлении встроенными системами, телеметрии и других областях. Это дает выразительный синтаксис, более высокий уровень абстракции, гибкость и производительность для улучшения пользовательского опыта. + +**🗓️ Week 8: Обработка ошибок: исключения Exceptions and Soft Failures** + +> Мы рассмотрим лучшие практики обработки ошибок как с исключениями, так и доменными (мягкими) ошибками. Gracefully recover и мягкие ошибки повысят общую производительность системы. Мы будем использовать Chain of Responsibility, SOLID, Promises, fallback mechanisms to handle non-critical errors; GRASP: Protected Variations and Custom JavaScript-specific AggregateError and Error.prototype.cause, а также сериализацию ошибок для передачи по сети. + +### 📦 Unit 3: Runtime for Applications + +Объединение всех рассмотренных техник и подходов в реальных условиях. В этом юните мы рассмотрим, как основные концепции построения структуры приложений, контрактное программирование и шаблоны превращаются в работающие и масштабируемые приложения. + +> Этот модуль сосредоточен на том, как вопросы среды исполнения ложатся на задачи структуры и архитектуры приложений. Вы получите навык внедрения техник программирования, превращающих программное решение в цифровую платформу, рассчитанную на долгую эксплуатацию; это включает поддержку смены инструментария, расширения коллектива, постоянное интенсивное наращивание функциональности и нагрузок. + +**🗓️ Week 9: Семантика: выразительные DSL** + +> Для улучшения выразительности кода и ясности семантики любое сложное программное обеспечение требует создания DSL (языков, специализированных для предметной области). При разработке DSL можно использовать хорошо известные синтаксисы, такие как JSON, JSON5, Markdown и даже сам JavaScript. Мы рассмотрим паттерны: Command, Interpreter, State, Strategy, Visitor. DSL делает код понятным для аналитиков предметной области и даже опытных пользователей. Это улучшает общение и понимание, ускоряет разработку, адаптацию решений к новым требованиям, упрощает обучение и передачу знаний, скрывает технические сложности и позволяет специалистам сосредоточиться на своей области, улучшая общую предсказуемость проекта. + +**🗓️ Week 10: All-agnostic как стратегия по умолчанию** + +> Разработка систем, независимых от фреймворков, платформ, протоколов, баз данных и облачных решений, как стандартный подход для обеспечения гибкости и свободы архитектурных решений. Такой подход устраняет зависимость от поставщиков облачных решений и фреймворков. Конечно, не нужно реализовывать все аспекты агностичного подхода, но некоторые из них принесут значительные выгоды в масштабировании системы и в процессе ее эксплуатации. Мы будем использовать изоляцию, GRASP: Controller; SOLID: DIP; принципы IoC и DI; интерфейсы и паттерн Strategy для отвязки от конкретных реализаций. + +**🗓️ Week 11: Масштабирование приложений и архитектурные стили** + +> На этой неделе мы рассмотрим, как проектировать системы, которые могут масштабироваться и развиваться эффективно, используя различные архитектурные стили: DDD, слоеная архитектура, SOA, Микросервисм, событийная архитектура, монолитная, порты и адаптеры, чистая архитектура, Event-Sourcing, CQRS, Pipeline, Peer-to-Peer, Client-Server архитектура и как применять SOLID, GRASP и GoF для реализации архитектуры. + +**🗓️ Week 12: Методология: как начать применять концепции** + +> Заключительная часть программы тренинга сосредоточена на практическом применении всех знаний в комплексе. Мы рассмотрим, как начать внедрять концепции и шаблоны, изученные на курсе, в реальных проектах. Этот модуль предоставляет практические стратегии для создания дорожной карты по их внедрению. Как выявить необходимость в шаблонах и принципах и учесть возможные негативные аспекты. Рефакторинг унаследованных систем, внедрение новых методов разработки и активностей в коллективе. Как спланировать собственное обучение и наладить развитие команды с использованием знаний из этого тренинга. + +## Тарифные планы + +* Minimal: обучение в общей группе без наставника, но с групповыми семинарами +* Standard: обучение с наставником в небольших группах (10 человек) +* Professional: обучение с наставником, индивидуально и в группах, дополнительные материалы +* Exclusive: персонализированный учебный трек с автором курса и приглашенными экспертами + +[👉 Купить: https://nodeua.com/Patterns-2024-buy.html](https://nodeua.com/Patterns-2024-buy.html) From fb14fa87ab0c6e10c9d81a32bb621356684af0cc Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Sun, 22 Sep 2024 06:47:29 -0400 Subject: [PATCH 266/308] Add links --- Courses/Patterns-2024.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Courses/Patterns-2024.md b/Courses/Patterns-2024.md index 0c6a8a4..af9a8b1 100644 --- a/Courses/Patterns-2024.md +++ b/Courses/Patterns-2024.md @@ -2,6 +2,8 @@ ***Rethinking GRASP, SOLID, and GoF for JavaScript and Node.js*** +> Translations: [EN](./Patterns-2024.md), [UA](./Patterns-2024-ua.md), [RU](./Patterns-2024-ru.md) + 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. 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. @@ -168,7 +170,7 @@ using the course principles. * Minimal: learning in a common group without a mentor but with interactive calls * Standard: training with mentor in small groups (up to 10 people) -* Prefessional: training with mentor, 1-on-1, groups, and additional materials +* Professional: training with mentor, 1-on-1, groups, and additional materials * Exclusive: personalized training track with a couse author [👉 Buy: https://nodeua.com/Patterns-2024-buy.html](https://nodeua.com/Patterns-2024-buy.html) From 6ed91b53ffe6d24fc4928970bedf2cceb4d490b9 Mon Sep 17 00:00:00 2001 From: Petr Nikitin Date: Sun, 22 Sep 2024 15:51:51 +0300 Subject: [PATCH 267/308] Update Patterns-2024-ru.md fix typo --- Courses/Patterns-2024-ru.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Courses/Patterns-2024-ru.md b/Courses/Patterns-2024-ru.md index 2ef247c..239a00c 100644 --- a/Courses/Patterns-2024-ru.md +++ b/Courses/Patterns-2024-ru.md @@ -36,7 +36,7 @@ Что мы получаем как результат этого юнита: -+ Начинаем писать код, который удобно покрываать тествми. ++ Начинаем писать код, который удобно покрывать тестами. + Наш код становится лучше для читения и понимания. + После оптимизации наш медленный код становится быстрее и ест меньше памяти. + Код становится модульный, надежный и готовый к интеграции. From 3a0eef4ce1add7ff7a8c40d1fc6ada3d1e374b31 Mon Sep 17 00:00:00 2001 From: Roman Sarkiev Date: Sun, 22 Sep 2024 17:49:40 +0400 Subject: [PATCH 268/308] Fix spelling Patterns-2024-ru Co-authored-by: Timur Shemsedinov --- Courses/Patterns-2024-ru.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/Courses/Patterns-2024-ru.md b/Courses/Patterns-2024-ru.md index 239a00c..437b827 100644 --- a/Courses/Patterns-2024-ru.md +++ b/Courses/Patterns-2024-ru.md @@ -12,7 +12,7 @@ ## 💡 Уникальность программы наставничества -От автора первого курса по асинхронному программированию на JavaScript, прочитанному в Киевском политехническом институте еще 17 лет назад, множества докладов и лекций по Node.js. За эти годы собрано множество опыта, отзывов, практики и курс перерабатывался практически каждый год, вбирая самые новые пактики. Тимур Шемсединов так же является контрибьютором мноджества платформ и библиотек в открытом коде, среди которых Node.js, Metarhia, geoip-lite, MDN, HowProgrammingWorks, metasync... Тимур один из первых, кто начал портировать в JavaScript абстракции параллельного программирования из C++, C#, Java, Go и других языков. +От автора первого курса по асинхронному программированию на JavaScript, прочитанному в Киевском политехническом институте еще 17 лет назад, множества докладов и лекций по Node.js. За эти годы собрано множество опыта, отзывов, практики и курс перерабатывался практически каждый год, вбирая самые новые практики. Тимур Шемсединов так же является контрибьютором множества платформ и библиотек в открытом коде, среди которых Node.js, Metarhia, geoip-lite, MDN, HowProgrammingWorks, metasync... Тимур один из первых, кто начал портировать в JavaScript абстракции параллельного программирования из C++, C#, Java, Go и других языков. Автор утверждает, что это самые важные вещи, которые следует учить и практиковать: @@ -37,12 +37,12 @@ Что мы получаем как результат этого юнита: + Начинаем писать код, который удобно покрывать тестами. -+ Наш код становится лучше для читения и понимания. ++ Наш код становится лучше для чтения и понимания. + После оптимизации наш медленный код становится быстрее и ест меньше памяти. + Код становится модульный, надежный и готовый к интеграции. -+ Как изменить код, чтобы снизит время, необходимое для его поддержки. ++ Как изменить код, чтобы снизить время, необходимое для его поддержки. -> Для каждой недели подготовлены задания, некоторые из них предусматривают рефакторинг готовых примеров кода, другие - написание кода, третьи - оптимизацию и исследование характериатстик кода. +> Для каждой недели подготовлены задания, некоторые из них предусматривают рефакторинг готовых примеров кода, другие - написание кода, третьи - оптимизацию и исследование характеристик кода. **🗓️ Week 1: Характеристики кода и стратегии оптимизации** @@ -102,7 +102,7 @@ **🗓️ Week 11: Масштабирование приложений и архитектурные стили** -> На этой неделе мы рассмотрим, как проектировать системы, которые могут масштабироваться и развиваться эффективно, используя различные архитектурные стили: DDD, слоеная архитектура, SOA, Микросервисм, событийная архитектура, монолитная, порты и адаптеры, чистая архитектура, Event-Sourcing, CQRS, Pipeline, Peer-to-Peer, Client-Server архитектура и как применять SOLID, GRASP и GoF для реализации архитектуры. +> На этой неделе мы рассмотрим, как проектировать системы, которые могут масштабироваться и развиваться эффективно, используя различные архитектурные стили: DDD, слоеная архитектура, SOA, Микросервисы, событийная архитектура, монолитная, порты и адаптеры, чистая архитектура, Event-Sourcing, CQRS, Pipeline, Peer-to-Peer, Client-Server архитектура и как применять SOLID, GRASP и GoF для реализации архитектуры. **🗓️ Week 12: Методология: как начать применять концепции** From a137b37ec680328916e6b7cc2f885faeeded017e Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Mon, 23 Sep 2024 05:14:25 -0400 Subject: [PATCH 269/308] Add Training format --- Courses/Patterns-2024.md | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/Courses/Patterns-2024.md b/Courses/Patterns-2024.md index af9a8b1..c205aba 100644 --- a/Courses/Patterns-2024.md +++ b/Courses/Patterns-2024.md @@ -26,6 +26,28 @@ Here's what I suggest learning and practicing: * 🧩 Contract Programming and Modeling with Schemas * 🏛️ Clean Architecture and Layered Architecture +## Tariff plans + +* Minimal: learning in a common group without a mentor but with interactive calls +* Standard: training with mentor in small groups (up to 10 people) +* Professional: training with mentor, 1-on-1, groups, and additional materials +* Exclusive: personalized training track with a couse author + +## Training format + +- 🗓️ 12 weeks (3 months) + onboarding (1 week) + secret module +- 👍 You will get access to course materials forever +- 🕑 Every week (mandatory): 1 hour of lectures + 2 hours of calls + 2 hours of independent work +- 🥋 Training and group work with mentors, not just watching videos and reading +- 🙋‍♂️ Optional: for deep dive +3 hours of additional materials on senior plans +- 🏅 You receive a certificate upon completion of the course +- ⚠️ Requirements: basic JavaScript + practical programming experience is recommended +- 🙅 Not for: beginners, look for free materials for beginners at Timur's Youtube and Github +- 💳 Payment plan: full payment or monthly payment for all plans except minimum +- 🗺️ After the course, participation in the community (thousands of people around the world) + +[👉 Buy: https://nodeua.com/Patterns-2024-buy.html](https://nodeua.com/Patterns-2024-buy.html) + ## 📖 Course Structure ### 📦 Unit 1: Structure and Modularity From 77f563893a4bc64cc5cc09053353c1bfd2e1472e Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Mon, 23 Sep 2024 05:14:33 -0400 Subject: [PATCH 270/308] Add Training format --- Courses/Patterns-2024-ua.md | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/Courses/Patterns-2024-ua.md b/Courses/Patterns-2024-ua.md index b3e211f..ada7b98 100644 --- a/Courses/Patterns-2024-ua.md +++ b/Courses/Patterns-2024-ua.md @@ -26,6 +26,28 @@ * 🧩 Контрактне програмування та декларативне моделювання через схеми * 🏛️ Чиста архітектура (Clean) та лукова архітектура (Onion або Layered) +## Тарифні плани + +* Minimal: навчання у загальній групі без наставника, але з груповими семінарами +* Standard: навчання з наставником у невеликих групах (10 осіб) +* Professional: навчання з наставником, індивідуально та в групах, додаткові матеріали +* Exclusive: персоналізований навчальний трек з автором курсу та запрошеними експертами + +## Формат тренінгу + +- 🗓️ 12 тижнів (3 місяці) + онбординг (1 тиждень) + секретний модуль +- 👍 Доступ до матеріалів курсу надається назавжди +- 🕑 Щотижня обов'язково: 1 година лекцій + 2 години семінар + 2 години самостійної роботи +- 🥋 Тренування та групова робота з наставниками, а не тільки перегляд видосів та читання +- 🙋‍♂️ За бажанням: для глибокого занурення +3 години додаткових матеріалів на старших тарифах +- 🏅 По завершенню курсу Ви отримуєте сертифікат +- ⚠️ Вхідні вимоги: базовий JavaScript + рекомендується досвід практичного програмування +- 🙅 Для кого не підійде: не для початківців, безкоштовні матеріали для початківців шукайте у Тимура +- 💳 Розстрочка: помісячна оплата для всіх тарифів, окрім мінімального +- 🗺️ Після курсу участь у ком'юніті випускників, де вже тисячі людей по всьому світу + +[👉 Придбати: https://nodeua.com/Patterns-2024-buy.html](https://nodeua.com/Patterns-2024-buy.html) + ## 📖 Структура курсу ### 📦 Unit 1: Structure and Modularity @@ -116,4 +138,3 @@ * Exclusive: персоналізований навчальний трек з автором курсу та запрошеними експертами [👉 Придбати: https://nodeua.com/Patterns-2024-buy.html](https://nodeua.com/Patterns-2024-buy.html) - From 51f21c51af8f9ccf619679cad5a86f81ab65fc7a Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Mon, 23 Sep 2024 05:14:40 -0400 Subject: [PATCH 271/308] Add Training format --- Courses/Patterns-2024-ru.md | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/Courses/Patterns-2024-ru.md b/Courses/Patterns-2024-ru.md index 437b827..2e1a684 100644 --- a/Courses/Patterns-2024-ru.md +++ b/Courses/Patterns-2024-ru.md @@ -26,6 +26,28 @@ * 🧩 Контрактное программирование и декларативное моделирование через схемы * 🏛️ Чистая архитектура (Clean) и слоеная архитектура (Onion или Layered) +## Тарифные планы + +* Minimal: обучение в общей группе без наставника, но с групповыми семинарами +* Standard: обучение с наставником в небольших группах (10 человек) +* Professional: обучение с наставником, индивидуально и в группах, дополнительные материалы +* Exclusive: персонализированный учебный трек с автором курса и приглашенными экспертами + +## Формат тренинга + +- 🗓️ 12 недель (3 месяца) + онбординг (1 неделя) + секретный модуль +- 👍 Доступ к материалам курса дается навсегда +- 🕑 Каждую неделю обязательно: 1 час лекций + 2 часа семинаров + 2 часа самостоятельной работы +- 🥋 Тренировки и групповая работа с наставниками, а не только смотрение видосов и чтение +- 🙋‍♂️ По желанию: для глубокого погружения +3 часа дополнительных материалов на старших тарифах +- 🏅 По завершению курса Вы получаете сертификат +- ⚠️ Входные требования: базовый JavaScript + рекомендуется опыт практического программирования +- 🙅 Для кого не подойдет: не для начинающих, бесплатные материалы для начинающих ищите у Тимура +- 💳 Рассрочка: помесячная оплата для всех тарифов кроме минимального +- 🗺️ После курса участие в комьюнити выпускников, где уже тысячи людей по всему миру + +[👉 Купить: https://nodeua.com/Patterns-2024-buy.html](https://nodeua.com/Patterns-2024-buy.html) + ## 📖 Структура курса ### 📦 Unit 1: Structure and Modularity From f59da550c5178046653450a8c1cc14985c09f148 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Mon, 23 Sep 2024 06:27:19 -0400 Subject: [PATCH 272/308] Update Patterns-2024-ua.md --- Courses/Patterns-2024-ua.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Courses/Patterns-2024-ua.md b/Courses/Patterns-2024-ua.md index ada7b98..2dc91b9 100644 --- a/Courses/Patterns-2024-ua.md +++ b/Courses/Patterns-2024-ua.md @@ -6,6 +6,8 @@ Практичний тренінг з переосмислення та застосування патернів GoF, SOLID та GRASP в асинхронному програмуванні на JavaScript та Type для прикладних та системних розробників бекенду та фронтенду, з прикладами для Node.js та браузерних додатків. +***Next onboarding will start 1 October 2024*** + Розуміння цих концепцій не можна просто витягти з коробки (або книги) і помістити собі у голову. Таке розуміння сильно відрізняється для різних мов та платформ. Сліпе перенесення знань і практик з C++ або Java в **JavaScript** та C# призводить до мертвих церемоній. Однак їх можна відродити за допомогою практики, прив'язати до реалій та переосмислити, щоб вони не стали марними монстрами. @@ -41,6 +43,7 @@ - 🥋 Тренування та групова робота з наставниками, а не тільки перегляд видосів та читання - 🙋‍♂️ За бажанням: для глибокого занурення +3 години додаткових матеріалів на старших тарифах - 🏅 По завершенню курсу Ви отримуєте сертифікат +- 💬 Робочі мови: руська - лекцій; українська, англійська, руська, турецька - семінари та наставники - ⚠️ Вхідні вимоги: базовий JavaScript + рекомендується досвід практичного програмування - 🙅 Для кого не підійде: не для початківців, безкоштовні матеріали для початківців шукайте у Тимура - 💳 Розстрочка: помісячна оплата для всіх тарифів, окрім мінімального From fa6a4b81edfc9062411574783f8020b3f851a923 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Mon, 23 Sep 2024 06:29:15 -0400 Subject: [PATCH 273/308] Update Patterns-2024-ru.md --- Courses/Patterns-2024-ru.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Courses/Patterns-2024-ru.md b/Courses/Patterns-2024-ru.md index 2e1a684..bddab44 100644 --- a/Courses/Patterns-2024-ru.md +++ b/Courses/Patterns-2024-ru.md @@ -6,6 +6,8 @@ Практический тренинг по переосмыслению и применению паттернов GoF, SOLID и GRASP в асинхронном программировании на JavaScript и Type для прикладных и системных разработчиков бекенда и фронтенда, с примерами для Node.js и браузерных приложений. +***Следующий онбординг будет 1 октября 2024*** + Понимание этих концепций нельзя просто извлечь из коробки (или книги) и поместить себе в голову. Такое понимание сильно различается для разных языков и платформ. Слепой перенос знаний и практик из C++ или Java в **JavaScript** и C# приводит к мертвым церемониям. Однако их можно возродить с помощью практики, привязать к реалиям и переосмыслить, чтобы они не стали бесполезными монстрами. @@ -41,6 +43,7 @@ - 🥋 Тренировки и групповая работа с наставниками, а не только смотрение видосов и чтение - 🙋‍♂️ По желанию: для глубокого погружения +3 часа дополнительных материалов на старших тарифах - 🏅 По завершению курса Вы получаете сертификат +- 💬 Рабочие языки: русский - лекции; украинский, английский, русский, турецкий - семинары и наставники - ⚠️ Входные требования: базовый JavaScript + рекомендуется опыт практического программирования - 🙅 Для кого не подойдет: не для начинающих, бесплатные материалы для начинающих ищите у Тимура - 💳 Рассрочка: помесячная оплата для всех тарифов кроме минимального From 20e5aa5f57266c90565bfec5b431b5c8b38f81c8 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Mon, 23 Sep 2024 06:30:47 -0400 Subject: [PATCH 274/308] Update Patterns-2024-ua.md --- Courses/Patterns-2024-ua.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Courses/Patterns-2024-ua.md b/Courses/Patterns-2024-ua.md index 2dc91b9..6c8e82e 100644 --- a/Courses/Patterns-2024-ua.md +++ b/Courses/Patterns-2024-ua.md @@ -6,7 +6,7 @@ Практичний тренінг з переосмислення та застосування патернів GoF, SOLID та GRASP в асинхронному програмуванні на JavaScript та Type для прикладних та системних розробників бекенду та фронтенду, з прикладами для Node.js та браузерних додатків. -***Next onboarding will start 1 October 2024*** +***Наступний онбординг розпочнеться 1 жовтня 2024 року*** Розуміння цих концепцій не можна просто витягти з коробки (або книги) і помістити собі у голову. Таке розуміння сильно відрізняється для різних мов та платформ. Сліпе перенесення знань і практик з C++ або Java в **JavaScript** та C# призводить до мертвих церемоній. From ee7aa75111ba92688f840d1563c889ac40b34e83 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Mon, 23 Sep 2024 06:30:52 -0400 Subject: [PATCH 275/308] Update Patterns-2024.md --- Courses/Patterns-2024.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Courses/Patterns-2024.md b/Courses/Patterns-2024.md index c205aba..f6658c8 100644 --- a/Courses/Patterns-2024.md +++ b/Courses/Patterns-2024.md @@ -6,6 +6,8 @@ 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. +***Next onboarding will start 1 October 2024*** + 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. Blindly transferring knowledge and practices from C++ or Java to **JavaScript** and C# results in dead ceremonies. However, they can be revived through practice, tied to realities, and rethought to avoid becoming monstrous and horrors. @@ -41,6 +43,7 @@ Here's what I suggest learning and practicing: - 🥋 Training and group work with mentors, not just watching videos and reading - 🙋‍♂️ Optional: for deep dive +3 hours of additional materials on senior plans - 🏅 You receive a certificate upon completion of the course +- 💬 Languages: RU for lectures; UA, TR, EN, RU for seminars, mentorship and Q&A sessions - ⚠️ Requirements: basic JavaScript + practical programming experience is recommended - 🙅 Not for: beginners, look for free materials for beginners at Timur's Youtube and Github - 💳 Payment plan: full payment or monthly payment for all plans except minimum From 86dfeb0c18cb713fff0b54f53902f59ffd09de3a Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Mon, 23 Sep 2024 06:31:23 -0400 Subject: [PATCH 276/308] Update Patterns-2024.md --- Courses/Patterns-2024.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Courses/Patterns-2024.md b/Courses/Patterns-2024.md index f6658c8..e826c7a 100644 --- a/Courses/Patterns-2024.md +++ b/Courses/Patterns-2024.md @@ -6,7 +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. -***Next onboarding will start 1 October 2024*** +***🗓️ Next onboarding will start 1 October 2024*** 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. Blindly transferring knowledge and practices from C++ or Java to **JavaScript** and C# results in dead ceremonies. From fdf7af10885318c278fa58694288b1fa8bf22d6e Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Mon, 23 Sep 2024 06:31:39 -0400 Subject: [PATCH 277/308] Update Patterns-2024-ua.md --- Courses/Patterns-2024-ua.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Courses/Patterns-2024-ua.md b/Courses/Patterns-2024-ua.md index 6c8e82e..861af78 100644 --- a/Courses/Patterns-2024-ua.md +++ b/Courses/Patterns-2024-ua.md @@ -6,7 +6,7 @@ Практичний тренінг з переосмислення та застосування патернів GoF, SOLID та GRASP в асинхронному програмуванні на JavaScript та Type для прикладних та системних розробників бекенду та фронтенду, з прикладами для Node.js та браузерних додатків. -***Наступний онбординг розпочнеться 1 жовтня 2024 року*** +***🗓️ Наступний онбординг розпочнеться 1 жовтня 2024 року*** Розуміння цих концепцій не можна просто витягти з коробки (або книги) і помістити собі у голову. Таке розуміння сильно відрізняється для різних мов та платформ. Сліпе перенесення знань і практик з C++ або Java в **JavaScript** та C# призводить до мертвих церемоній. From e01a002f1c0597bd146f4ec185fd91a56a65d928 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Mon, 23 Sep 2024 06:31:49 -0400 Subject: [PATCH 278/308] Update Patterns-2024-ru.md --- Courses/Patterns-2024-ru.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Courses/Patterns-2024-ru.md b/Courses/Patterns-2024-ru.md index bddab44..d670111 100644 --- a/Courses/Patterns-2024-ru.md +++ b/Courses/Patterns-2024-ru.md @@ -6,7 +6,7 @@ Практический тренинг по переосмыслению и применению паттернов GoF, SOLID и GRASP в асинхронном программировании на JavaScript и Type для прикладных и системных разработчиков бекенда и фронтенда, с примерами для Node.js и браузерных приложений. -***Следующий онбординг будет 1 октября 2024*** +***🗓️ Следующий онбординг будет 1 октября 2024*** Понимание этих концепций нельзя просто извлечь из коробки (или книги) и поместить себе в голову. Такое понимание сильно различается для разных языков и платформ. Слепой перенос знаний и практик из C++ или Java в **JavaScript** и C# приводит к мертвым церемониям. From 5f7b34eb642e8aa10058d2f8fe30bbdd0153e67f Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Wed, 25 Sep 2024 08:11:16 -0400 Subject: [PATCH 279/308] Create Metarhia-Club.md --- Courses/Metarhia-Club.md | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 Courses/Metarhia-Club.md diff --git a/Courses/Metarhia-Club.md b/Courses/Metarhia-Club.md new file mode 100644 index 0000000..3fbcce0 --- /dev/null +++ b/Courses/Metarhia-Club.md @@ -0,0 +1,7 @@ +# Metarhia Club + +- ⭐ Community calls (2 hours call, 1 per week) +- ⭐ Recordings (over 170 videos) +- ⭐ Telegram group for alumnis (over 700 videos) + +[💳 Buy annual membership](https://www.paypal.com/ncp/payment/YUJ56VENW6LJG) From aeea3efbc27d4b8e30746ebd5b17f79795a7511e Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Wed, 25 Sep 2024 08:13:24 -0400 Subject: [PATCH 280/308] Update Metarhia-Club.md --- Courses/Metarhia-Club.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Courses/Metarhia-Club.md b/Courses/Metarhia-Club.md index 3fbcce0..c25f1a5 100644 --- a/Courses/Metarhia-Club.md +++ b/Courses/Metarhia-Club.md @@ -2,6 +2,6 @@ - ⭐ Community calls (2 hours call, 1 per week) - ⭐ Recordings (over 170 videos) -- ⭐ Telegram group for alumnis (over 700 videos) +- ⭐ Telegram group for alumnis (over 700 specialists) [💳 Buy annual membership](https://www.paypal.com/ncp/payment/YUJ56VENW6LJG) From ce2f8f0565cca9aaf471a96bdaef0524e8195794 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Sat, 12 Oct 2024 12:39:13 -0400 Subject: [PATCH 281/308] Update Talks.md --- Courses/Talks.md | 1 + 1 file changed, 1 insertion(+) diff --git a/Courses/Talks.md b/Courses/Talks.md index c7d6a7c..9e0ece0 100644 --- a/Courses/Talks.md +++ b/Courses/Talks.md @@ -8,6 +8,7 @@ - [Паттерны в JavaScript с примерами и культура кода на ITBeard](https://www.youtube.com/live/vDOe1v76w5Y) - [Об оптимизации паттернов для JavaScript с Деми Мурычем](https://www.youtube.com/watch?v=LJJpbFcmKQs) - [Беседа с Ильей Климовым о целях паттернов](https://youtube.com/live/Jru7q-OjWX8) +- [🧩 Паттерны и оверинжиниринг: баланс между портянкой и церемониями // Немчинский, Шемсединов](https://youtube.com/live/vTMf21FG6wg) ## 2023 From f270719d0ee5c80b6dd9ed25079315c4088f000f Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Thu, 17 Oct 2024 07:02:52 -0400 Subject: [PATCH 282/308] Add practical tasks --- Courses/Fundamentals-2024.md | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/Courses/Fundamentals-2024.md b/Courses/Fundamentals-2024.md index a0b12f8..83c6cdb 100644 --- a/Courses/Fundamentals-2024.md +++ b/Courses/Fundamentals-2024.md @@ -1,7 +1,7 @@ # Основи програмування - Автор: https://github.com/tshemsedinov -- Завдання з курсу: готується для публікації +- [Практичні завдання](https://github.com/HowProgrammingWorks/Index/blob/master/Courses/Fundamentals-2024.md#практичні-завдання) - Словник термінів: готується для публікації - Умовні позначення: - ⭐ - Нові спрощені лекції @@ -138,3 +138,21 @@ - 🧑‍💻 Приклади коду: https://github.com/HowProgrammingWorks/TypedArrays - 🧩 [Нове у JavaScript](https://youtu.be/fUjHLj8bq_Y) - 🧑‍💻 Приклади коду: https://github.com/HowProgrammingWorks/ESNext + +## Практичні завдання + +Запис семінарів про виконання та перевірку лабораторних робіт: +- [Семінар: автоматична перевірка лабораторних робіт](https://youtu.be/M4KpG0LEAyA) +- [Семінар: виконання лабораторних робіт з курсу "Основи програмування"](https://youtu.be/ikUOyFPzdJw) + +Репозитории с задачами: + +0. [Налаштування середовища](https://github.com/HowProgrammingWorks/Introduction) +1. [Змінні та типи даних](https://github.com/HowProgrammingWorks/DataTypes) +2. [Базовий синтаксис JavaScript](https://github.com/HowProgrammingWorks/Reusable) +3. [Функції та методи](https://github.com/HowProgrammingWorks/Function) +4. [Цикли та ітерування](https://github.com/HowProgrammingWorks/Iteration) +5. [Closures та чеїнінг](https://github.com/HowProgrammingWorks/Closure) +6. [Композиція функцій](https://github.com/HowProgrammingWorks/Composition) +7. [Робота з масивами](https://github.com/HowProgrammingWorks/Arrays) +8. [Функції вищого порядку](https://github.com/HowProgrammingWorks/HigherOrderFunction) From 647e0f5dae1e2ca90cb931dfe24034d36f3ae1b2 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Fri, 25 Oct 2024 16:14:11 -0400 Subject: [PATCH 283/308] Update Talks.md --- Courses/Talks.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Courses/Talks.md b/Courses/Talks.md index 9e0ece0..9312969 100644 --- a/Courses/Talks.md +++ b/Courses/Talks.md @@ -4,11 +4,12 @@ - [Все ли плохо с Diia](https://youtu.be/6X6MaXoQdw8) - [👏 Дія відкрила код - Diia code review 🤦](https://youtu.be/ggIk83GO25I) -- [Дія» открыла код! Что не так?](https://www.youtube.com/watch?v=Ug-tytIlhU0) +- [«Дія» открыла код! Что не так?](https://www.youtube.com/watch?v=Ug-tytIlhU0) - [Паттерны в JavaScript с примерами и культура кода на ITBeard](https://www.youtube.com/live/vDOe1v76w5Y) - [Об оптимизации паттернов для JavaScript с Деми Мурычем](https://www.youtube.com/watch?v=LJJpbFcmKQs) - [Беседа с Ильей Климовым о целях паттернов](https://youtube.com/live/Jru7q-OjWX8) - [🧩 Паттерны и оверинжиниринг: баланс между портянкой и церемониями // Немчинский, Шемсединов](https://youtube.com/live/vTMf21FG6wg) +- [О наставничестве и открытом коде с Денисом Отришко](https://youtu.be/sm9FVEa9P9Y) ## 2023 From f759e30dafa43d844f2596f029364b3131098daf Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Thu, 31 Oct 2024 05:59:54 -0400 Subject: [PATCH 284/308] Fix some translation issues --- Courses/Fundamentals-2024.md | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/Courses/Fundamentals-2024.md b/Courses/Fundamentals-2024.md index 83c6cdb..92262f4 100644 --- a/Courses/Fundamentals-2024.md +++ b/Courses/Fundamentals-2024.md @@ -21,8 +21,8 @@ - 🧩 [Введення у програмування, продовження](https://youtu.be/PzlLXQ3RaDs) - 🧩 [Мови програмування](https://youtu.be/enHA1CRkJe0) - 🧩 Семінар: [JavaScript, відповіді на запитання](https://youtu.be/wqkQ6eslyzY) - - 🧩 [История развития языков программирования](https://youtu.be/qqz0VSaNxuw) - - 🧩 [Парадигмы программирования](https://youtu.be/Yk1sxLVHfjs) + - 🧩 [Історія розвитку мов програмування](https://youtu.be/qqz0VSaNxuw) + - 🧩 [Парадигми програмування](https://youtu.be/Yk1sxLVHfjs) - ✨ [Базовий синтаксис JavaScript](https://youtu.be/xJn3k1f4BiM) - ✨ [Базовий синтаксис JavaScript, продовження](https://youtu.be/qa-XleqA0JU) - 🧩 Семінар: [Базовий синтаксис мови JavaScript](https://youtu.be/PGqjTXQe_qw) @@ -48,11 +48,11 @@ - ⭐ [Колекції — Array, Object](https://youtu.be/SqGoKGOZu40) - 🧑‍💻 Масиви: https://github.com/HowProgrammingWorks/Arrays - ✨ [Масиви, об'єкти, класи, прототипи JavaScript](https://youtu.be/VBMGnAPfmsY) - - ✨ [Массивы в JavaScript, методы Array](https://youtu.be/D1kfYBkX9FE) + - ✨ [Масиви у JavaScript, методи Array](https://youtu.be/D1kfYBkX9FE) - 🧑‍💻 Структури даних: https://github.com/HowProgrammingWorks/DataStructures - ⭐ [Домішки (mixin), JSON серіалізація (serialization)](https://youtu.be/rMUB78bs26w) - ⭐ [Множини (Set) та хеш-таблиці (Map)](https://youtu.be/1avvpS_Hqms) - - ✨ [Коллекции, множества, хеш таблицы в JavaScript](https://youtu.be/hN0wsq5LNOc) + - ✨ [Коллекції, множини, хеш таблиці у JavaScript](https://youtu.be/hN0wsq5LNOc) - 🧑‍💻 Колекції: https://github.com/HowProgrammingWorks/Collections - 🧑‍💻 Хеш таблиці: https://github.com/HowProgrammingWorks/Map - 🧑‍💻 Множини (Set): https://github.com/HowProgrammingWorks/Set @@ -62,13 +62,13 @@ - ✨ Старий семінар: [Автоматична перевірка лабораторних робіт](https://youtu.be/M4KpG0LEAyA) - ✨ Семінар: [Виконання лабораторних робіт з курсу](https://youtu.be/ikUOyFPzdJw) - 🧑‍💻 Підготовка середовища виконання завдань: [Exercises.ru.md](https://github.com/HowProgrammingWorks/Introduction/blob/master/Exercises.ru.md) - - 🧑‍💻 Завдання: [SEF1.ru.md](https://github.com/HowProgrammingWorks/Index/blob/master/Practice/SEF1.ru.md) + - 🧑‍💻 [Практичні завдання](https://github.com/HowProgrammingWorks/Index/blob/master/Courses/Fundamentals-2024.md#практичні-завдання) - Callbacks, timers - ⭐ [Функції зворотнього виклику (callbacks) та таймери](https://youtu.be/MFG3NaEwu70) - 🧑‍💻 Функції зворотнього виклику: https://github.com/HowProgrammingWorks/Callbacks - ✨ [Функції вищого порядку, колбеки, події](https://youtu.be/1vqATwbGHnc) - 🧑‍💻 Функції вищого порядку: https://github.com/HowProgrammingWorks/HigherOrderFunction - - ✨ [Таймеры, таймауты и EventEmitter](https://youtu.be/LK2jveAnRNg) + - ✨ [Таймери, таймаути та EventEmitter](https://youtu.be/LK2jveAnRNg) - 🧑‍💻 Таймери: https://github.com/HowProgrammingWorks/Timers - 🧑‍💻 EventEmitter: https://github.com/HowProgrammingWorks/EventEmitter - 🧑‍💻 Події: https://github.com/metarhia/common/blob/master/lib/events.js @@ -95,28 +95,28 @@ - 🧑‍💻 Приклади коду: https://github.com/HowProgrammingWorks/Antipatterns/tree/master/JavaScript/01-Common - ✨ [Консоль та командний рядок у JavaScript та Node.js](https://youtu.be/5aSZyKi5BmE) - 🧑‍💻 Приклади коду: https://github.com/HowProgrammingWorks/CommandLine -- 🧩 [Чеининг функций и объектов, обработка ошибок](https://youtu.be/PfuEfIiLX34) +- 🧩 [Чеінінг функцій та об'єктів, обробка помилок](https://youtu.be/PfuEfIiLX34) - 🧑‍💻 Чеінінг: https://github.com/HowProgrammingWorks/Chaining - 🧑‍💻 Обробка помилок: https://github.com/HowProgrammingWorks/Errors - ✨ [Антипатерни процедурного програмування](https://youtu.be/cTv7V22mkwE) - 🧑‍💻 Приклади коду: https://github.com/HowProgrammingWorks/Antipatterns/tree/master/JavaScript/02-Procedural -- ✨ [Code Review: как это и зачем](https://youtu.be/EKL6NiIQ6ZU) +- ✨ [Code Review: як це і навіщо](https://youtu.be/EKL6NiIQ6ZU) - 🧑‍💻 Приклади коду: https://github.com/HowProgrammingWorks/CodeReview - - Семинар: [Code Review, ответы на вопросы](https://youtu.be/AgH4OAKbmkM) + - Семінар: [Code Review, відповіді та питання](https://youtu.be/AgH4OAKbmkM) - ✨ [Структури даних: списки, стек, черга, дек](https://youtu.be/9KvA4hDDSjk) - 🧑‍💻 Списки: https://github.com/HowProgrammingWorks/LinkedList - 🧑‍💻 Черги: https://github.com/HowProgrammingWorks/Dequeue - ✨ [Сериализация и десериализация в JavaScript и Node.js](https://youtu.be/GtKPniOEzh8) - 🧑‍💻 Приклади коду: https://github.com/HowProgrammingWorks/Serialization -- ✨ [Рефакторинг: причины, цели, техники и процесс](https://youtu.be/z73wmpdweQ4) +- ✨ [Рефакторінг: причини, цілі, техніки та процес](https://youtu.be/z73wmpdweQ4) - 🧑‍💻 Приклади коду: https://github.com/HowProgrammingWorks/Refactoring - - 🧑‍💻 Пример проекта: https://github.com/tshemsedinov/node-mysql-utilities + - 🧑‍💻 Приклад проекту: https://github.com/tshemsedinov/node-mysql-utilities - 🧩 Семінар: [Вибір напряму у програмуванні](https://youtu.be/1gL627DQF4A) - 🧩 [Proxy та Symbol](https://youtu.be/UjZjSDyi9AM) - 🧑‍💻 Проксі: https://github.com/HowProgrammingWorks/Proxy - 🧑‍💻 Символи: https://github.com/HowProgrammingWorks/Symbol - ✨ [Регулярні вирази та парсинг у JavaScript](https://youtu.be/-ef2E0ozxao) - - 🧑‍💻 Примеры кода: https://github.com/HowProgrammingWorks/RegExp + - 🧑‍💻 Приклади коду: https://github.com/HowProgrammingWorks/RegExp - ✨ [Композиція: pipe, compose](https://youtu.be/xS9FicVrOTI) - 🧑‍💻 Приклади коду: https://github.com/HowProgrammingWorks/Composition - ✨ [Домішки: mixin, extend, Object.assign, class-mixin](https://youtu.be/NZMrJ2adEyY) From 751e5ef5906ec28455caeaaaf8014aa2388645c2 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Mon, 18 Nov 2024 09:43:39 -0500 Subject: [PATCH 285/308] Create Async-2025.md --- Courses/Async-2025.md | 167 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 167 insertions(+) create mode 100644 Courses/Async-2025.md diff --git a/Courses/Async-2025.md b/Courses/Async-2025.md new file mode 100644 index 0000000..9e5515b --- /dev/null +++ b/Courses/Async-2025.md @@ -0,0 +1,167 @@ +# Асинхронное программирование 2025 + +Те способы писать асинхронный код, которые мы использовали 10-15 лет назад безвозвратно уходят в прошлое и могут быть интересны лишь для поддержки легаси упражнения в глубоком понимании асинхронного программирования. Даже способы 5-7 летней давности уже имеют мало общего с современными практиками, но интернет полон устаревшей информации, даже [открытый курс сообщества Metarhia](https://github.com/HowProgrammingWorks/Index/blob/master/Courses/Asynchronous.md) на сегодняшний момент стал слишком громоздким и излишним. Еще нужно упомянуть о том, что в системном и прикладном коде асинхронное программирование должно выглядеть принципиально по-разному. Полностью скрыть от продуктового разработчика сложность асинхронного кода за абстракциями не удастся, потому, что он в любом случае будет работать с таймерами, событиями, стримами, fetch и другими асинхронными API, но его можно писать в десятки раз проще, чем асинхронный код в системном слое. Что касается системного слоя, то нужно вводить в обиход теорию очередей (системы массового обслуживания), модель акторов, часть абстракций из параллельного программирования (семафоры, рандеву, атомарные операции). Конечно, содержать все это в одном курсе сложновато, поэтому, мы отдадим приоритет прикладному коду и сначала полностью подготовим курс для применения асинхронного программирования в продуктовой разработке, а потом будем добавлять необязательные темы из старого курса и много других полезных абстракций, широко распространенных в других языках программирования, но слабо известных в мире JavaScript. + +## Содержание + +Важные аспекты нового курса: + +- Концентрация на практическом применении (примеры кода из реальных проектов) +- Актуальность и соответствие стандартам по состоянию на 2023-2025 +- Задачи и разбор их решений, семинары, ревью кода (курс это не только видео) +- Рекомендации к выбору стиля и абстракций асинхронности под задачу +- Внимание к корректной обработке ошибок во всех стилях асинхронности +- Упор на надежность, поддерживаемость, тестируемость, снижение зацепления +- Примеры и задачи по исправлению скрытых проблемных состояний и data races + +Для того, чтобы писать прикладной код хватит первого столбика таблицы (а в оглавлении темы помечены 💯). Второй столбик полезен, как дополнительные знания, (углубленное изучение помечено как 🧑‍🎓). Для бекенда на ноде нужно освоить два первых столбика. Третий столбик содержит системные вещи (помечены ⚙️ в оглавлении), которые нужны для разработки инструментов, платформ и библиотек. Четвертый столбик (помечен 🧑‍🚀) это дополнительные абстракции, которые можно осваивать выборочно, они понадобятся не всем, но если вы работаете в проектах, где много функционального и/или реактивного программирования. Пятый столбик - вещи, которые морально устарели и могут рассматриваться как интересный антиквариат (помечены ⚠️). + +| Applied 💯 | Advanced 🧑‍🎓 | System ⚙️ | Elective 🧑‍🚀 | Legacy ⚠️ | +|:--------------|:--------------------------|:-------------------|:---------------------|:------------------| +| `callbacks` | `AsyncQueue` | `Thenable` | `compose callbacks` | `Deferred` | +| `promises` | `AsyncPool` | `Semaphore` | `async compose` | `function*/yield` | +| `async/await` | `AsyncCollector` | `Mutex` | `Observer` | `Async.js` | +| `events` | `Chain of responsibility` | `Spin Lock` | `RxJS` | `Metasync` | +| `streams` | `Async Generator` | `MessageChannel` | `Future` | `middleware` | +| `signals` | `Async Iterator` | `BroadcastChannel` | `coroutines` | | +| `locks` | | `threads` | `Actor Model` | | +| | | `processes` | `do` | | + +Условные обозначения: ⭐ новые лекции, ✨ открытые старые лекции, 💯 обязательные, 🧑‍🎓 продвинутые, ⚙️ системные, 🧑‍🚀 по выбору, ⚠️ устаревшее, 🧩 необязательные темы, 💻 примеры кода, 🧑‍💻 задания + +- 💯 Контракты асинхронности на базе callback + - ⭐ Контракты `Callback` и `Callback-last-error-first` (ссылка в платном курсе) + - 💻 Колбеки: https://github.com/HowProgrammingWorks/Callbacks + - 💻 Примеры кода с колбеками: https://github.com/HowProgrammingWorks/AsynchronousProgramming + - 🧑‍💻 [Задания по колбекам](https://github.com/HowProgrammingWorks/Callbacks/tree/master/JavaScript/Tasks) (решения, ревью и разбор в платном курсе) +- 💯 Минимально необходимое понимание рантайма: event loop, I/O, таймеры + - ⭐ Фазы Event-loop в V8 и Node.js (ссылка в платном курсе) + - 🧩 [Стрим с разбрром Event loop и асинхронности](https://www.youtube.com/live/ND5HNHicACI) + - 💻 Таймеры: https://github.com/HowProgrammingWorks/Timers + - 🧑‍💻 Задания по таймерам (в платном курсе) +- 💯 Контракты на базе событий `EventTarget`, `EventEmitter` + - ⭐ События (ссылка в платном курсе) + - 🧑‍💻 [Задания по событиям](https://github.com/HowProgrammingWorks/Events/tree/main/JavaScript/Tasks) (решения, ревью и разбор в платном курсе) + - ✨ [EventEmitter из старой лекции](https://youtu.be/LK2jveAnRNg) + - 💻 EventEmitter: https://github.com/HowProgrammingWorks/EventEmitter +- 💯 Абстракция потоков `Stream` + - ⭐ Стримы Readable, Writable, Transform, открытый конструктор, буферизация, backpressure (ссылка в платном курсе) + - 🧑‍💻 Задания по стримам (в платном курсе) + - 💻 Примеры кода: https://github.com/HowProgrammingWorks/Streams/tree/master/JavaScript + - ✨ [Паттерн открытый конструктор (Revealing Constructor)](https://youtu.be/leR5sXRkuJI) + - 💻 Примеры кода: https://github.com/HowProgrammingWorks/RevealingConstructor +- ⚙️ Контракт `Thenable` + - ⭐ Контракт `Thenabe` (ссылка в платном курсе) + - ✨ [Thenable из старой лекции](https://youtu.be/Jdf_tZuJbHI) + - 💻 Примеры кода: https://github.com/HowProgrammingWorks/Thenable + - 🧑‍💻 [Задания по `Thenabe`Thenable](https://github.com/HowProgrammingWorks/Thenable/tree/master/JavaScript/Tasks) (решения, ревью и разбор в платном курсе) +- 💯 Контракт `Promise` + - ⭐ Promise: then/catch/finally и методы класса all, allSettled, race, any (ссылка в платном курсе) + - ✨ [Асинхронность на промисах из старой лекции](https://youtu.be/RMl4r6s1Y8M) + - 💻 [Примеры кода](https://github.com/HowProgrammingWorks/Promise/tree/master/JavaScript) + - 🧑‍💻 [Задания по `Promise`](https://github.com/HowProgrammingWorks/Promise/tree/master/JavaScript/Tasks) (решения, ревью и разбор в платном курсе) +- 💯 Контракт асинхронных функций `async/await` + - ⭐ Асинхронные функции (ссылка в платном курсе) + - ✨ [Асинхронные функции из старой лекции](https://youtu.be/Jdf_tZuJbHI) + - 💻 [Примеры кода](https://github.com/HowProgrammingWorks/AsyncFunction/tree/main/JavaScript) + - 🧑‍💻 [Задания по `async/await`](https://github.com/HowProgrammingWorks/AsyncAwait/tree/master/JavaScript/Tasks) (решения, ревью и разбор в платном курсе) +- 💯 Контракт сигналов `signals` + - ⭐ Сигналы (в платном курсе) + - 💻 Примеры кода: (готовятся), будут тут https://github.com/HowProgrammingWorks/Signals + - 🧑‍💻 Задания по сигналам (в платном курсе) +- 💯 Обработка ошибок, их выявление и решение проблем со стектрейсом + - ✨ [Обработка ошибок из старой лекции](https://youtu.be/Jdf_tZuJbHI) + - 💻 Примеры кода + - 💻 Примеры кода из старого курса: https://github.com/HowProgrammingWorks/AsyncAwait + - 💻 Примеры кода: (готовятся), будут тут https://github.com/HowProgrammingWorks/AsyncErrorHandling + - 🧑‍💻 Задания по обработке ошибок +- 🧑‍🎓 Асинхронная очередь `AsyncQueue` + - ⭐ Асинхронная очередь (в платном курсе) + - ✨ Конкурентная асинхронная очередь из старой лекции](https://youtu.be/Lg46AH8wFvg) + - 💻 Примеры кода: https://github.com/HowProgrammingWorks/ConcurrentQueue + - 💻 Примеры кода: (готовятся), будут тут https://github.com/HowProgrammingWorks/AsyncQueue +- 🧑‍🎓 Асинхронный пул `AsyncPool` + - ✨ [Асинхронный пул для worker thread pool в Node.js](https://youtu.be/Jj5KZRq4wYI) + - 💻 Примеры кода: https://github.com/HowProgrammingWorks/Pool + - 💻 Примеры кода: (готовятся), будут тут https://github.com/HowProgrammingWorks/AsyncPool +- 🧑‍🎓 Асинхронная коллекция `Collector` + - 🧩 Асинхронные коллекции (собираем значения до готовности) + - ✨ [Асинхронные коллекторы данных](https://youtu.be/tgodt1JL6II) + - 💻 Примеры кода: https://github.com/HowProgrammingWorks/Collector +- 🧑‍🎓 Паттерн цепочка ответственности `Chain of responsibility` + - 💻 Примеры кода: (готовятся), будут тут https://github.com/HowProgrammingWorks/ChainOfResponsibility +- 🧑‍🎓 Конвертеры контрактов `asyncify`, `callbackify`, стыковка кода в разных стилях + - ⭐ Асинхронные адаптеры (в платном курсе) + - ✨ [Асинхронные адаптеры из старой лекции](https://youtu.be/76k6_YkYRmU) + - 💻 Примеры кода: https://github.com/HowProgrammingWorks/AsyncAdapter + - 🧑‍💻 Задания по адаптерам (в платном курсе) +- 🧑‍🎓 Предотвращение состояния гонки по данным и управлению в асинхронном коде (в платном курсе) +- 🧑‍🎓 Отмена асинхронных операций: `AbortController`, `AbortSignal` (в платном курсе) + - 🧩 Документация на MDN: https://developer.mozilla.org/en-US/docs/Web/API/AbortController +- 🧑‍🎓 `Async Generator` и `Async Iterator` (в платном курсе) + - ✨ [Генераторы и асинхронные генераторы из старой лекции](https://youtu.be/kvNm9D32s8s) +- ⚙️ Абстракции портированные из параллельного программирования в асинхронное + - 🧩 Асинхронные абстракции: `Semaphore`, `Mutex` + - 🧩 Блокировки `Lock`, `Spin Lock` +- ⚙️ Абстракции параллельного программирования + - 🧩 Системные абстракции: `threads`, `processes` + - 🧩 Межпроцессовое и межпотоковое взаимодействие, `MessageChannel`, `BroadcastChannel` + - 🧩 Корутины `coroutines` +- 🧑‍🎓 Асинхронные генераторы и асинхронные итераторы + - ✨ [Генераторы и асинхронные генераторы из старой лекции](https://youtu.be/kvNm9D32s8s) + - 💻 Генераторы: https://github.com/HowProgrammingWorks/Generator + - 💻 Асинхронные генераторы: https://github.com/HowProgrammingWorks/AsyncGenerator + - ✨ [Итераторы и асинхронные итераторы из старой лекции](https://youtu.be/rBGFlWpVpGs) + - 💻 Итераторы: https://github.com/HowProgrammingWorks/Iterator + - 💻 Асинхронные итераторы: https://github.com/HowProgrammingWorks/AsyncIterator +- 🧑‍🚀 Композиция функций на колбеках `compose callbacks` + - ✨ [Асинхронная композиция функций](https://youtu.be/3ZCrMlMpOrM) + - 💻 Примеры кода: https://github.com/HowProgrammingWorks/AsyncCompose +- 🧑‍🚀 Композиция асинхронных функций `async compose` + - 💻 Примеры кода: https://github.com/HowProgrammingWorks/AsyncCompose +- 🧑‍🚀 Асинхронность на потоках событий `RxJS` + - ✨ Потоки событий, паттерн `Observer/Observable` + - ✨ [Асинхронность на RxJS из старой лекции](https://youtu.be/0kcpMAl-wfE) + - 💻 Примеры кода: https://github.com/HowProgrammingWorks/Rx +- 🧑‍🚀 Модель акторов `actor model` + - ✨ [Модель акторов](https://youtu.be/xp5MVKEqxY4) + - 💻 Примеры кода: https://github.com/HowProgrammingWorks/ActorModel +- 🧑‍🚀 Библиотека `do`: https://www.npmjs.com/package/do +- 🧑‍🚀 Функциональное асинхронное программирование, контракт `Future` + - ✨ [Асинхронность на фьючерах без состояния](https://youtu.be/22ONv3AGXdk) + - 💻 Примеры кода: https://github.com/HowProgrammingWorks/Future +- ⚠️ Асинхронность на синхронных генераторах `function*/yield` +- ⚠️ Мидлвары `middleware` как антипаттерн: https://youtu.be/RS8x73z4csI + - 💻 Примеры кода: (готовятся), будут тут https://github.com/HowProgrammingWorks/Middleware +- ⚠️ Контракты семейства `Deferred` + - ✨ [Deferred: Асинхронность на диферах с состоянием](https://youtu.be/a2fVA1o-ovM) + - 💻 Примеры кода: https://github.com/HowProgrammingWorks/Deferred +- ⚠️ Async.js + - 🧩 [Легаси код на библиотеке `Async.js`](https://youtu.be/XQ94wQc-erU) + - 💻 Примеры кода: https://github.com/HowProgrammingWorks/AsynchronousProgramming +- ⚠️ Коллекция асинхронных абстракций `Metasync`: https://www.npmjs.com/package/metasync + - ✨ [Архивная лекция](https://youtu.be/xNfOv9I1MDk) +- ⚙️ Трекинг асинхронных контекстов + - ⭐ AsyncLocalStorage, AsyncResource (в платном курсе) + - 💻 Примеры использования AsyncLocalStorage и AsyncResource: https://github.com/HowProgrammingWorks/AsyncContextTracking +- ⚙️ Процессы и потоки + - 🧩 [Многопоточность в Node.js](https://youtu.be/VNXga8zomrY) + - 🧩 [Web Locks API in Node.js and browser](https://youtu.be/auMM-uV12F0) + +## Обратите внимание + +Что нужно знать и уметь на входе: + +- 🔗 [Синтаксис JavaScript без всяких триков](https://github.com/HowProgrammingWorks/Index/blob/master/Courses/Fundamentals.md) +- 💡 Уверенно владеть git, иметь github аккаунт +- 💡 Любая среда разработки, IDE или редактор + +Чем это курс не является: это не чтение документации, не курс по библиотекам и фреймворкам, не повторение старого курса, не лайвкодинг и не мастеркласс, не стрим. Новый курс - это максимально сконцентрированная информация и практические задачи как для прикладного, так и для системного программирования со сравнением этих подходов. + +## Как попасть на курс + +🎫 Регистрация: следите за публикациями чтобы не пропустить начало регистрации. + +👉 Новости курса будут в канале: https://t.me/asyncify +👉 Открытая группа курса: https://t.me/asynctalks +👉 Подписывайтесь на https://t.me/metarhia и https://www.youtube.com/@TimurShemsedinov чтобы следить за новостями From 2fa340c5312b8f5a5fcf55b7b97a79c395a4c4f8 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Mon, 18 Nov 2024 16:55:01 -0500 Subject: [PATCH 286/308] Create NodeJS-2025.md --- Courses/NodeJS-2025.md | 125 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 125 insertions(+) create mode 100644 Courses/NodeJS-2025.md diff --git a/Courses/NodeJS-2025.md b/Courses/NodeJS-2025.md new file mode 100644 index 0000000..87a3725 --- /dev/null +++ b/Courses/NodeJS-2025.md @@ -0,0 +1,125 @@ +# Технологический стек Node.js в 2025 + +Что нужно знать на входе: +- 🔗 [Синтаксис JavaScript без всяких триков](https://github.com/HowProgrammingWorks/Index/blob/master/Courses/Fundamentals.md) +- 🔗 [Основы асинхронного программирования](https://github.com/HowProgrammingWorks/Index/blob/master/Courses/Asynchronous.md) +- 💡 Уверенно владеть git, иметь github аккаунт +- 💡 Желательно docker, иметь рабочую машину на linux или mac +- 💡 Любая среда разработки, IDE или редактор + +Ссылки на старый курс: +- 🔗 [Структура со ссылками на видео и репозитории с примерами кода](NodeJS.md) +- 🔗 [Для части лекций есть таймкоды и подробное оглавление](NodeJS-timecodes.md) + +Чем этот курс не является: это не чтение документации, не курс по фреймворкам, не курс по Metarhia, не повторение старого курса, не лайвкодинг и не мастеркласс, не стрим. Новый курс - это максимально сконцентрированная информация и практические задачи по разработке на чистой ноде но с хорошей архитектурой и использованием всех современных возможностей Node.js + +👉 Patreon: https://www.patreon.com/tshemsedinov +👉 Видео обзор курса: https://youtu.be/moH8df67zAM +👉 Вопросы на интервью: https://github.com/tshemsedinov/NodeJS-Interview-Questions + +## Содержание + +- ⭐ [Введение в технологию 🚀](https://youtu.be/mRvzgBGLVyM) + - 🧑‍💻 [HTTP сервер для статики](https://github.com/HowProgrammingWorks/NodeServer/tree/master/native-2022) + - 🔗 [Таблица поддержки возможностей в версиях ноды](https://node.green/) + - 🔗 [Автоматизация проверки безопасности кода](https://snyk.io/) + - 🔗 [Встроенный в npm аудит безопасности](https://docs.npmjs.com/cli/v8/commands/npm-audit) + - 🧩 [Сравнение кластеризации HTTP, TCP и UDP на процессах и потоках](https://youtu.be/dum4b4EZktY) + - 🧩 [Стрим про асинхронность и фазы ивентлупа](https://youtu.be/ND5HNHicACI) +- ⭐ Структура приложений: системы модульности, пакеты и зависимости + - 💻 [Системы модульности, CommonJS, ESModules, реализация своей системы модульности](https://github.com/HowProgrammingWorks/Modularity) + - 💻 [Пакеты и их загрузка в разных системах модульности](https://github.com/HowProgrammingWorks/Packages) +- ⭐ Архитектура приложений: слои и внедрение зависимостей + - 💻 [Пошаговый рефакторинг от мидлварей до слоеной архитектуры](https://github.com/HowProgrammingWorks/DDD) + - 🧩 [Почему мидлвари это плохо](https://youtu.be/RS8x73z4csI) +- ⭐ Layers and Low Coupling на примере конфига и транспорта + - 💻 [Примеры кода "A", "B" и "C" к лекции](https://github.com/HowProgrammingWorks/DDD) +- ⭐ Базы данных, модель, заголовки .d.ts и линтеры +- ⭐ Криптография: crypto, хеширование паролей с солью, session token, UUID, случайные числа + - 💻 Реализация `randomPrefetcher` из библиотеки `metautil`: https://github.com/metarhia/metautil/blob/v3.7.0/lib/crypto.js + - 💻 Упрощенное хеширование: https://github.com/HowProgrammingWorks/DDD/blob/master/JavaScript/d-messenger/lib/common.js + - 💻 Полноценное хеширование: https://github.com/metatech-university/NodeJS-Pure/blob/main/lib/common.js + - 💻 Генерация UUID: https://nodejs.org/api/crypto.html#cryptorandomuuidoptions + - 🔗 Документация по `node:crypto`: https://nodejs.org/api/crypto.html +- ⭐ [Применение Chat GPT в оптимизации JavaScript для Node.js](https://youtu.be/Ebrzqj8cGUY) + - 💻 [Chunk encode/decode with typed arrays](https://github.com/HowProgrammingWorks/ChatGPT/tree/main/JavaScript/1-Chunk) + - 💻 [Promise chain and async code optimization](https://github.com/HowProgrammingWorks/ChatGPT/tree/main/JavaScript/2-Promise) + - 💻 [Crypto random prefetcher](https://github.com/HowProgrammingWorks/ChatGPT/tree/main/JavaScript/3-Prefetcher) +- ⭐ Структура классов сервера и GoF паттерны в Node.js +- ⭐ Подсистема `Authentication` +- ⭐ Подсистема `Role Based Access Control` + - Системы прав ACL, ABAC, RBAC, и проектирование нашей системы прав для курса +- ⭐ Стримы Readable, Writable, Transform, открытый конструктор, буферизация, backpressure + - 💻 Примеры кода: https://github.com/HowProgrammingWorks/Streams/tree/master/JavaScript +- ⭐ Инфраструктура и инструментарий: тайпинги, тестирование, линтеры, CI/CD, встроенный testing framework +- ⭐ Работа с ошибками и исключениями, `Graceful shutdown` в Node.js, `unhandled exceptions`, `async stack trace` + - 💻 Async stack trace: https://github.com/HowProgrammingWorks/StackTrace/blob/master/JavaScript/6-pass-through.js + - 💻 Graceful shutdown: https://github.com/HowProgrammingWorks/GracefulShutdown +- ⭐ Асинхронное, реактивное и параллельное программирование + - ✨ Обзор асинхронного программирования в Node.js: https://youtu.be/hY6Z6qNYzmc + - 💻 Разные контракты: https://github.com/HowProgrammingWorks/AsynchronousProgramming + - 💻 Таймеры: https://github.com/HowProgrammingWorks/Timers + - 💻 EventEmitter: https://github.com/HowProgrammingWorks/EventEmitter + - 💻 Промисы: https://github.com/HowProgrammingWorks/Promise + - 💻 Async/await: https://github.com/HowProgrammingWorks/AsyncAwait + - 💻 Асинхронные адаптеры: https://github.com/HowProgrammingWorks/AsyncAdapter + - 💻 Асинхронные итераторы: https://github.com/HowProgrammingWorks/AsyncIterator + - 💻 Thenable: https://github.com/HowProgrammingWorks/Thenable + - 💻 Асинхронная очередь: https://github.com/HowProgrammingWorks/ConcurrentQueue + - 💻 Паттерн открытый конструктор (Revealing Constructor): https://github.com/HowProgrammingWorks/RevealingConstructor +- ⭐ Работа с файлами и файловыми потоками, наблюдение за файловой системой + - ✨ Работа с файлами, буферами и файловыми потоками: https://youtu.be/eQGBS15vUac + - 💻 Работа с файлами: https://github.com/HowProgrammingWorks/Files + - 💻 Файловые потоки: https://github.com/HowProgrammingWorks/Streams + - 💻 Буферы: https://github.com/HowProgrammingWorks/Buffers + - 💻 Наблюдение за файлами: https://github.com/HowProgrammingWorks/FilesystemWatch +- ⭐ Принципы `GRASP` и `SOLID` в `JavaScript` с адаптацией для Node.js + - ✨ GRASP принципы с адаптацией для JavaScript и Node.js: https://youtu.be/ExauFjYV_lQ + - 💻 Information Expert: https://github.com/HowProgrammingWorks/InformationExpert + - 💻 Coupling and Cohesion: https://github.com/HowProgrammingWorks/CouplingCohesion + - 💻 Pure Fabrication: https://github.com/HowProgrammingWorks/PureFabrication + - 💻 Single responsibility: https://github.com/HowProgrammingWorks/SingleResponsibility + - 💻 Liskov substitution: https://github.com/HowProgrammingWorks/LiskovSubstitution + - 💻 IoC and DI: https://github.com/HowProgrammingWorks/InversionOfControl +- ⭐ Вопросы безопасности: `DoS`, `XSS`, `Path traversal`, `CSRF`, `SQL`-инъекции + - ✨ Безопасность приложений Node.js: https://youtu.be/Pdfo1G-gI6s + - 🔗 Слайды: https://www.slideshare.net/tshemsedinov/nodejs-security-199004963 +- ⭐ C/C++ Addons, Node-API (n-api), WebAssembly: Rust, WAT, C++, AssemblyScript + - 💻 N-API examples for C++ and Rust: https://github.com/HowProgrammingWorks/Node-API + - 💻 WebAssembly for C++, Rust, WAT, and AssemblyScript https://github.com/HowProgrammingWorks/WebAssembly + - 💻 In-place callback solution: https://github.com/tshemsedinov/wasm-import +- ⭐ Трекинг асинхронных контекстов: AsyncLocalStorage, AsyncResource + - 💻 Примеры использования AsyncLocalStorage и AsyncResource: https://github.com/HowProgrammingWorks/AsyncContextTracking +- ⭐ Проектирование API и проверка контрактов в рантайме + - ✨ Контрактное программирование: https://youtu.be/K5_kSUvbGEQ + - 💻 Примеры кода: https://github.com/HowProgrammingWorks/Contract +- ⭐ Вынесение подсистем как отдельных микросервисов +- ⭐ `Performance hooks`, телеметрия ресурсов и оптимизация: I/O bound, CPU bound, memory bound, профилирование +- ⭐ `Serverless` и облачные `FaaS` решения на базе Node.js + - ✨ Serverless Clouds (FaaS) и изоляция контекстов запросов в Node.js: https://youtu.be/x-Rd6fPV6L8 + - 🔗 Слайды: https://www.slideshare.net/tshemsedinov/serverless-clouds-faas-and-request-context-isolation-in-nodejs +- ⭐ Приложения, приближенные к реальному времени, Websocket, интерактивность и коллаборативные приложения + - 💻 Серверная реализация + - 💻 Клиентская реализация на C++ для Node.js 21 + - 💻 Интерактивность и коллоборативные приложения +- ⭐ Распределенные системы, высоконагруженные системы, балансировка нагрузки, кластеризация и масштабирование, IP sticky + - ✨ Доклад по высоконагруженным системам: https://youtu.be/7tfZDABPvVs + - ✨ HTTP сервер на Node.js (routing, cluster, IP sticky): https://youtu.be/7Ufxj0oTaUo + - 💻 Примеры серверов: https://github.com/HowProgrammingWorks/NodeServer +- ⭐ Изоляция кода и данных в Node.js: `vm`, `v8`, защита `global`, контекстов, модулей и прототипов от патчинга +- ⭐ Структура и архитектура проекта, слои, `DDD`, `Clean architecture`, связанность и связность кода, протекание абстракций +- ⭐ Реализация HTTP Proxy + - 📢 [Разбор примеров кода Timur Sevimli](https://youtu.be/4yF6hlxiIic) + - 💻 Примеры кода из видео: https://github.com/HowProgrammingWorks/ProxyHTTP +- ⭐ Сборка Node.js приложений в single executable +- ⭐ Автоматическая перезагрузка процессов с --watch +- ⭐ Обзор Web API портированнного в Node.js: Web Crypro, Web Streams, Intl +- ⭐ Встроенная система Permissions для ограничения доступа к файловой системе, сети, другим API + +План курса формируется. Тут появится еще много тем в ближайшее время. + +# Доступ + +🎫 Регистрация: Следите за новостями, когда откроется регистрация, на курс можно будет подписаться тут https://www.patreon.com/tshemsedinov + +👉 Подписывайтесь на https://t.me/metarhia и https://www.youtube.com/@TimurShemsedinov чтобы следить за новостями. From 2fd2f3dead64108b5adf219d4c2e81f313734d98 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Sat, 21 Dec 2024 12:55:54 -0500 Subject: [PATCH 287/308] Add talks --- Courses/Talks.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Courses/Talks.md b/Courses/Talks.md index 9312969..bf848bf 100644 --- a/Courses/Talks.md +++ b/Courses/Talks.md @@ -10,6 +10,9 @@ - [Беседа с Ильей Климовым о целях паттернов](https://youtube.com/live/Jru7q-OjWX8) - [🧩 Паттерны и оверинжиниринг: баланс между портянкой и церемониями // Немчинский, Шемсединов](https://youtube.com/live/vTMf21FG6wg) - [О наставничестве и открытом коде с Денисом Отришко](https://youtu.be/sm9FVEa9P9Y) +- [🎙️ Demi Murych (Деми Мурыч) и Timur Shemsedinov (Тимур Шемсединов) — JavaScript оптимизация и паттерны](https://youtu.be/jj53cCZ0wFg) +- [🎙️ Eugene Yukhno (Евгений Юхно) и Timur Shemsedinov (Тимур Шемсединов) — LISP and JavaScript](https://youtu.be/qg_dwfTb5MQ) +- [🧩 Паттерны и оверинжиниринг: баланс между портянкой и церемониями // Сергей Немчинский и Тимур Шемсединов](https://youtu.be/vTMf21FG6wg) ## 2023 From 7bcc55b28db773c4be96c62e280da94089fb7bf4 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Wed, 25 Dec 2024 09:09:26 -0500 Subject: [PATCH 288/308] Reorder --- Courses/Talks.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Courses/Talks.md b/Courses/Talks.md index bf848bf..872cdac 100644 --- a/Courses/Talks.md +++ b/Courses/Talks.md @@ -2,9 +2,6 @@ ## 2024 -- [Все ли плохо с Diia](https://youtu.be/6X6MaXoQdw8) -- [👏 Дія відкрила код - Diia code review 🤦](https://youtu.be/ggIk83GO25I) -- [«Дія» открыла код! Что не так?](https://www.youtube.com/watch?v=Ug-tytIlhU0) - [Паттерны в JavaScript с примерами и культура кода на ITBeard](https://www.youtube.com/live/vDOe1v76w5Y) - [Об оптимизации паттернов для JavaScript с Деми Мурычем](https://www.youtube.com/watch?v=LJJpbFcmKQs) - [Беседа с Ильей Климовым о целях паттернов](https://youtube.com/live/Jru7q-OjWX8) @@ -13,6 +10,9 @@ - [🎙️ Demi Murych (Деми Мурыч) и Timur Shemsedinov (Тимур Шемсединов) — JavaScript оптимизация и паттерны](https://youtu.be/jj53cCZ0wFg) - [🎙️ Eugene Yukhno (Евгений Юхно) и Timur Shemsedinov (Тимур Шемсединов) — LISP and JavaScript](https://youtu.be/qg_dwfTb5MQ) - [🧩 Паттерны и оверинжиниринг: баланс между портянкой и церемониями // Сергей Немчинский и Тимур Шемсединов](https://youtu.be/vTMf21FG6wg) +- [Все ли плохо с Diia](https://youtu.be/6X6MaXoQdw8) +- [👏 Дія відкрила код - Diia code review 🤦](https://youtu.be/ggIk83GO25I) +- [«Дія» открыла код! Что не так?](https://www.youtube.com/watch?v=Ug-tytIlhU0) ## 2023 From 82655debe1b49804e340694f0d1eb10f963f7613 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Mon, 20 Jan 2025 05:40:08 -0500 Subject: [PATCH 289/308] Update Talks.md --- Courses/Talks.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/Courses/Talks.md b/Courses/Talks.md index 872cdac..f716a0f 100644 --- a/Courses/Talks.md +++ b/Courses/Talks.md @@ -1,5 +1,12 @@ # Conference and public talks +## 2025 + +- [🚀 JavaScript: потоки и процессы, асинхронное и параллельное программирование на Node.js и в браузере](https://youtu.be/lxHudbhgfy0) +- [🎙️ Найм зламаний — Макс Безуглий та Тимур Шемсединов — архітектура, алгоритми, патерни, софтскіли...](https://youtu.be/z2A40MbiQb4) +- [🎙️ Карьера в IT и найм на работу: вакансии, резюме, собеседования, офферы, опыт, интервью, скилы](https://youtu.be/qkj9uJeEPhg\) +- [🧩 JavaScript и TypeScript Patterns Q&A Call #13: Литература, курс, DDD, моделирование, софтскилы](https://youtu.be/4jcB_G_u8BY) + ## 2024 - [Паттерны в JavaScript с примерами и культура кода на ITBeard](https://www.youtube.com/live/vDOe1v76w5Y) @@ -13,6 +20,7 @@ - [Все ли плохо с Diia](https://youtu.be/6X6MaXoQdw8) - [👏 Дія відкрила код - Diia code review 🤦](https://youtu.be/ggIk83GO25I) - [«Дія» открыла код! Что не так?](https://www.youtube.com/watch?v=Ug-tytIlhU0) +- [🎙️ Lowcode/Nocode, AI in JavaScript — Dmytro Nechai — Дмитрий Нечай — Metarhia Community Meetup #182](https://youtu.be/tzZ316WTF2Q) ## 2023 From 97001163caad4609d729115e68706f5466122ddc Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Mon, 20 Jan 2025 05:42:44 -0500 Subject: [PATCH 290/308] Update Talks.md --- Courses/Talks.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Courses/Talks.md b/Courses/Talks.md index f716a0f..1ec4827 100644 --- a/Courses/Talks.md +++ b/Courses/Talks.md @@ -4,7 +4,7 @@ - [🚀 JavaScript: потоки и процессы, асинхронное и параллельное программирование на Node.js и в браузере](https://youtu.be/lxHudbhgfy0) - [🎙️ Найм зламаний — Макс Безуглий та Тимур Шемсединов — архітектура, алгоритми, патерни, софтскіли...](https://youtu.be/z2A40MbiQb4) -- [🎙️ Карьера в IT и найм на работу: вакансии, резюме, собеседования, офферы, опыт, интервью, скилы](https://youtu.be/qkj9uJeEPhg\) +- [🎙️ Карьера в IT и найм на работу: вакансии, резюме, собеседования, офферы, опыт, интервью, скилы](https://youtu.be/qkj9uJeEPhg) - [🧩 JavaScript и TypeScript Patterns Q&A Call #13: Литература, курс, DDD, моделирование, софтскилы](https://youtu.be/4jcB_G_u8BY) ## 2024 From 4a618179a9bcbce7071ccd64bdef3c93abde9665 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Mon, 10 Feb 2025 17:54:55 -0500 Subject: [PATCH 291/308] Update Patterns.md --- Courses/Patterns.md | 123 ++++++++++++++++++++++++++++++++++---------- 1 file changed, 95 insertions(+), 28 deletions(-) diff --git a/Courses/Patterns.md b/Courses/Patterns.md index 6ec67b1..0bf11e0 100644 --- a/Courses/Patterns.md +++ b/Courses/Patterns.md @@ -1,31 +1,98 @@ -# Шаблоны проектирования +# Patterns for JavaScript and Typescript -[Таймкоды и подробное оглавление для части лекций](Patterns-timecodes.md) +GRASP, SOLID, and GoF patterns for Frontend & Backend modern development -## Видео-лекции +- SOLID + - Single responsibility principle: https://github.com/HowProgrammingWorks/SingleResponsibility + - Open/closed principle: https://github.com/HowProgrammingWorks/OpenClosed + - Liskov substitution principle: https://github.com/HowProgrammingWorks/LiskovSubstitution + - Interface segregation principle: https://github.com/HowProgrammingWorks/InterfaceSegregation + - Dependency inversion principle: https://github.com/HowProgrammingWorks/DependencyInversion +- Instantiation: Creational Patterns and Techniques + - Decomposition, Instantiation, Encapsulation, Aggregation, Composition, Association, Delegation + - Class composition (association, aggregation) + - GRASP: Information expert + - GRASP: Creator + - Abstract factory: https://github.com/HowProgrammingWorks/AbstractFactory + - Builder: https://github.com/HowProgrammingWorks/Builder + - Factory method: https://github.com/HowProgrammingWorks/Factory + - Object pool: https://github.com/HowProgrammingWorks/Pool + - Prototype: https://github.com/HowProgrammingWorks/PrototypePattern + - Do not confuse Prototype with Prototype-programming: https://github.com/HowProgrammingWorks/Prototype + - Singleton: https://github.com/HowProgrammingWorks/Singleton + - Revealing Constructor + - Flyweight: https://github.com/HowProgrammingWorks/Flyweight +- Isolation and Separation of Concerns + - Contracts and Contract programming, Interfaces + - Modularity, Layers and Low Coupling + - GRASP: Low coupling + - GRASP: High cohesion + - GRASP: Controller + - GRASP: Indirection + - Adapter: https://github.com/HowProgrammingWorks/Adapter + - Bridge: https://github.com/HowProgrammingWorks/Bridge + - Decorator: https://github.com/HowProgrammingWorks/Decorator + - Wrapper: https://github.com/HowProgrammingWorks/Wrapper + - Facade: https://github.com/HowProgrammingWorks/Facade + - Chain of responsibility: https://github.com/HowProgrammingWorks/ChainOfResponsibility + - Mediator: https://github.com/HowProgrammingWorks/Mediator + - Visitor: https://github.com/HowProgrammingWorks/Visitor + - Proxy: https://github.com/HowProgrammingWorks/Proxy +- Decoupling with Events and Messaging + - EventTarget and EventEmitter: https://github.com/HowProgrammingWorks/Events + - EventEmitter: https://github.com/HowProgrammingWorks/EventEmitter + - Observer: https://github.com/HowProgrammingWorks/Observer + - Streams: Data Flows and Transformations + - RxJS and Event streams + - Actor model +- State and data manipulations + - Command: https://github.com/HowProgrammingWorks/Command + - State: https://github.com/HowProgrammingWorks/State + - Iterator: https://github.com/HowProgrammingWorks/Iterator + - Composite: https://github.com/HowProgrammingWorks/Composite + - Memento: https://github.com/HowProgrammingWorks/Memento + - Automata, Finite-state machine +- Related topics + - Error handling, Exceptions, Soft Failures, Logging + - DSL, AST with Pattern Interpreter, LISP + - Service Locator + - Interpreter: https://github.com/HowProgrammingWorks/Interpreter + - Strategy: https://github.com/HowProgrammingWorks/Strategy + - Template method: https://github.com/HowProgrammingWorks/TemplateMethod + - GRASP: Polymorphism + - GRASP: Protected variations + - GRASP: Pure fabrication -- [Шаблон Singleton (синглтон) в JavaScript](https://youtu.be/qdJ5yikZnfE) - - Примеры кода: https://github.com/HowProgrammingWorks/Singleton -- [Фабрики и пулы объектов в JavaScript, factorify, poolify](https://youtu.be/Ax_mSvadFp8) - - Фабрики: https://github.com/HowProgrammingWorks/Factory - - Пулы объектов: https://github.com/HowProgrammingWorks/Pool -- [Фасад - паттерн для скрытия сложности](https://youtu.be/oJtBO7CystE) - - Примеры кода: https://github.com/HowProgrammingWorks/Facade -- [Адаптер (Adapter) - паттерн достижения совместимости](https://youtu.be/cA65McLQrR8) - - Примеры кода: https://github.com/HowProgrammingWorks/Adapter -- [Стратегия (Strategy) - выбор взаимозаменяемого поведения](https://youtu.be/hO8VSVv0NqM) - - Примеры кода: https://github.com/HowProgrammingWorks/Strategy -- [Паттерн Команда (Command) действие и параметры как объект](https://youtu.be/vER0vYL4hM4) - - Примеры кода: https://github.com/HowProgrammingWorks/Command -- [Паттерн Revealing Constructor - открытый конструктор](https://youtu.be/leR5sXRkuJI) - - Примеры кода: https://github.com/HowProgrammingWorks/RevealingConstructor -- [Паттерн Наблюдатель (Observer + Observable)](https://youtu.be/_bFXuLcXoXg) - - Примеры кода: https://github.com/HowProgrammingWorks/Observer -- [Принцип единственной ответственности и закон Конвея](https://youtu.be/o4bQywkBKOI) - - Примеры кода: https://github.com/HowProgrammingWorks/SingleResponsibility -- [Ассоциация, Агрегация и Композиция](https://youtu.be/tOIcBrzezK0) - - Примеры кода: https://github.com/HowProgrammingWorks/Association -- [Принцип подстановки Барбары Лисков](https://youtu.be/RbhYxygxroc) - - Примеры кода: https://github.com/HowProgrammingWorks/LiskovSubstitution -- [Антипаттерны объектно-ориентированного программирования](https://youtu.be/9d5TG1VsLeU) - - Примеры кода: https://github.com/HowProgrammingWorks/Antipatterns/tree/master/JavaScript/03-OOP +## Books + +- «Design Patterns: Elements of Reusable Object-Oriented Software» Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides +- «Refactoring: Improving the Design of Existing Code Edition Unstated» Martin Fowler, Kent Beck, John Brant, William Opdyke, Don Roberts, Erich Gamma +- «Patterns of Enterprise Application Architecture» Martin Fowler +- «Clean Architecture: A Craftsman's Guide to Software Structure and Design» Robert C. Martin +- «Clean Code: A Handbook of Agile Software Craftmanship» Robert C. Martin +- «The Clean Coder: A Code of Conduct for Professional Programmers» Robert C. Martin +- «Designing Object Oriented C++ Applications Using The Booch Method» Robert C. Martin +- «Agile Software Development, Principles, Patterns, and Practices» Robert C. Martin +- «Agile Principles, Patterns, And Practices in C#» Robert C. Martin +- «UML for Java Programmers» Robert C. Martin +- «Working Effectively with Legacy Code» Robert C. Martin +- «Clean Agile: Back to Basics» Robert C. Martin +- «Clean Craftsmanship: Disciplines, Standards, and Ethics» Robert C. Martin +- «Functional Design: Principles, Patterns, and Practices» Robert C. Martin + +## Old lectures + +- Singleton: https://youtu.be/qdJ5yikZnfE +- Factory and Pool: https://youtu.be/Ax_mSvadFp8 +- Facade: https://youtu.be/oJtBO7CystE +- Adapter: https://youtu.be/cA65McLQrR8 +- GoF Strategy: https://youtu.be/hO8VSVv0NqM +- GoF Command: https://youtu.be/vER0vYL4hM4 +- Revealing Constructor: https://youtu.be/leR5sXRkuJI +- GoF Observable + Observer: https://youtu.be/_bFXuLcXoXg +- Single responsibility principle: https://youtu.be/o4bQywkBKOI +- Association, aggregation, composition: https://youtu.be/tOIcBrzezK0 +- Liskov substitution principle: https://youtu.be/RbhYxygxroc +- Iterator and AsyncIterator: https://youtu.be/rBGFlWpVpGs +- Thenabe: https://youtu.be/Jdf_tZuJbHI https://youtu.be/DXp__1VNIvI +- Observer + Observable: https://youtu.be/_bFXuLcXoXg From e8d5591296c70393415cac01f70d82c47d868592 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Wed, 12 Feb 2025 18:19:05 -0500 Subject: [PATCH 292/308] Create Advanced-2025.md --- Courses/Advanced-2025.md | 71 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 71 insertions(+) create mode 100644 Courses/Advanced-2025.md diff --git a/Courses/Advanced-2025.md b/Courses/Advanced-2025.md new file mode 100644 index 0000000..fe6424d --- /dev/null +++ b/Courses/Advanced-2025.md @@ -0,0 +1,71 @@ +# Programming Fundamentals (part 2) + +- JavaScript and TypeScript machinery + - Timers: https://github.com/HowProgrammingWorks/Timers + - Collections: https://github.com/HowProgrammingWorks/Collections + - Hash Map: https://github.com/HowProgrammingWorks/Map + - Set: https://github.com/HowProgrammingWorks/Set + - Typed Arrays: https://github.com/HowProgrammingWorks/TypedArrays + - Generators: https://github.com/HowProgrammingWorks/Generator + - Async generators: https://github.com/HowProgrammingWorks/AsyncGenerator + - Iterator: https://github.com/HowProgrammingWorks/Iterator + - Async iterator: https://github.com/HowProgrammingWorks/AsyncIterator +- Fundamentals + - Generics: https://github.com/HowProgrammingWorks/Generics + - Modularity, Layers and Low Coupling + - Closure: https://github.com/HowProgrammingWorks/Closure + - Function composition: https://github.com/HowProgrammingWorks/Composition + - Memoization: https://github.com/HowProgrammingWorks/Memoization + - Lists: https://github.com/HowProgrammingWorks/LinkedList + - Queue and Dqueue: https://github.com/HowProgrammingWorks/Dequeue + - Functional programming: https://github.com/HowProgrammingWorks/FunctionalProgramming + - Functor and Monad: https://github.com/HowProgrammingWorks/Functor +- Async Programming + - Asynchronous programming: https://github.com/HowProgrammingWorks/AsynchronousProgramming + - Reactive programming https://github.com/HowProgrammingWorks/ReactiveProgramming + - Promise: https://github.com/HowProgrammingWorks/Promise + - Async/await: https://github.com/HowProgrammingWorks/AsyncAwait + - EventEmitter: https://github.com/HowProgrammingWorks/EventEmitter + - EventTarget: https://github.com/HowProgrammingWorks/Events +- Principles and Techniques + - GRASP: Information expert + - GRASP: Low coupling and High cohesion + - Decomposition, Instantiation, Encapsulation, Delegation + - Class composition (Aggregation, Composition, Association) +- SOLID + - Single responsibility principle: https://github.com/HowProgrammingWorks/SingleResponsibility + - Open/closed principle: https://github.com/HowProgrammingWorks/OpenClosed + - Liskov substitution principle: https://github.com/HowProgrammingWorks/LiskovSubstitution + - Interface segregation principle: https://github.com/HowProgrammingWorks/InterfaceSegregation + - Dependency inversion principle: https://github.com/HowProgrammingWorks/DependencyInversion +- Basic patterns + - Proxy: https://github.com/HowProgrammingWorks/Proxy + - Factory: https://github.com/HowProgrammingWorks/Factory + - Object Pool: https://github.com/HowProgrammingWorks/Pool + - Wrappers: https://github.com/HowProgrammingWorks/Wrapper + - FSM: https://github.com/HowProgrammingWorks/Automata + - Singleton: https://github.com/HowProgrammingWorks/Singleton + - Strategy: https://github.com/HowProgrammingWorks/Strategy + - Adapter: https://github.com/HowProgrammingWorks/Adapter + - Wrapper: https://github.com/HowProgrammingWorks/Wrapper +- Metaprogramming + - Introspection: https://github.com/HowProgrammingWorks/Introspection + - Reflect API: https://github.com/HowProgrammingWorks/Reflect + - Reflection: https://github.com/HowProgrammingWorks/Reflection + +## Books + +- «Design Patterns: Elements of Reusable Object-Oriented Software» Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides +- «Refactoring: Improving the Design of Existing Code Edition Unstated» Martin Fowler, Kent Beck, John Brant, William Opdyke, Don Roberts, Erich Gamma +- «Patterns of Enterprise Application Architecture» Martin Fowler +- «Clean Architecture: A Craftsman's Guide to Software Structure and Design» Robert C. Martin +- «Clean Code: A Handbook of Agile Software Craftmanship» Robert C. Martin +- «The Clean Coder: A Code of Conduct for Professional Programmers» Robert C. Martin +- «Designing Object Oriented C++ Applications Using The Booch Method» Robert C. Martin +- «Agile Software Development, Principles, Patterns, and Practices» Robert C. Martin +- «Agile Principles, Patterns, And Practices in C#» Robert C. Martin +- «UML for Java Programmers» Robert C. Martin +- «Working Effectively with Legacy Code» Robert C. Martin +- «Clean Agile: Back to Basics» Robert C. Martin +- «Clean Craftsmanship: Disciplines, Standards, and Ethics» Robert C. Martin +- «Functional Design: Principles, Patterns, and Practices» Robert C. Martin From 142d54066a6d969d5f9c2aed6c0caa108041923e Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Thu, 13 Feb 2025 05:24:59 -0500 Subject: [PATCH 293/308] Optimize 1st year plan --- Courses/Advanced-2025.md | 18 +++++++----------- 1 file changed, 7 insertions(+), 11 deletions(-) diff --git a/Courses/Advanced-2025.md b/Courses/Advanced-2025.md index fe6424d..6c6772e 100644 --- a/Courses/Advanced-2025.md +++ b/Courses/Advanced-2025.md @@ -2,9 +2,6 @@ - JavaScript and TypeScript machinery - Timers: https://github.com/HowProgrammingWorks/Timers - - Collections: https://github.com/HowProgrammingWorks/Collections - - Hash Map: https://github.com/HowProgrammingWorks/Map - - Set: https://github.com/HowProgrammingWorks/Set - Typed Arrays: https://github.com/HowProgrammingWorks/TypedArrays - Generators: https://github.com/HowProgrammingWorks/Generator - Async generators: https://github.com/HowProgrammingWorks/AsyncGenerator @@ -13,7 +10,6 @@ - Fundamentals - Generics: https://github.com/HowProgrammingWorks/Generics - Modularity, Layers and Low Coupling - - Closure: https://github.com/HowProgrammingWorks/Closure - Function composition: https://github.com/HowProgrammingWorks/Composition - Memoization: https://github.com/HowProgrammingWorks/Memoization - Lists: https://github.com/HowProgrammingWorks/LinkedList @@ -22,7 +18,7 @@ - Functor and Monad: https://github.com/HowProgrammingWorks/Functor - Async Programming - Asynchronous programming: https://github.com/HowProgrammingWorks/AsynchronousProgramming - - Reactive programming https://github.com/HowProgrammingWorks/ReactiveProgramming + - Reactive programming: https://github.com/HowProgrammingWorks/ReactiveProgramming - Promise: https://github.com/HowProgrammingWorks/Promise - Async/await: https://github.com/HowProgrammingWorks/AsyncAwait - EventEmitter: https://github.com/HowProgrammingWorks/EventEmitter @@ -39,15 +35,15 @@ - Interface segregation principle: https://github.com/HowProgrammingWorks/InterfaceSegregation - Dependency inversion principle: https://github.com/HowProgrammingWorks/DependencyInversion - Basic patterns - - Proxy: https://github.com/HowProgrammingWorks/Proxy - - Factory: https://github.com/HowProgrammingWorks/Factory - - Object Pool: https://github.com/HowProgrammingWorks/Pool - - Wrappers: https://github.com/HowProgrammingWorks/Wrapper - - FSM: https://github.com/HowProgrammingWorks/Automata - Singleton: https://github.com/HowProgrammingWorks/Singleton - - Strategy: https://github.com/HowProgrammingWorks/Strategy + - Decorator: https://github.com/HowProgrammingWorks/Decorator - Adapter: https://github.com/HowProgrammingWorks/Adapter - Wrapper: https://github.com/HowProgrammingWorks/Wrapper + - Proxy: https://github.com/HowProgrammingWorks/ProxyPattern + - Factory: https://github.com/HowProgrammingWorks/Factory + - Object Pool: https://github.com/HowProgrammingWorks/Pool + - Strategy: https://github.com/HowProgrammingWorks/Strategy + - FSM: https://github.com/HowProgrammingWorks/Automata - Metaprogramming - Introspection: https://github.com/HowProgrammingWorks/Introspection - Reflect API: https://github.com/HowProgrammingWorks/Reflect From 3b159f2c06c74e8a4ffa8a766f17f9666b01ee3d Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Fri, 14 Feb 2025 05:38:17 -0500 Subject: [PATCH 294/308] Create Architecture-2025.md --- Courses/Architecture-2025.md | 59 ++++++++++++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 Courses/Architecture-2025.md diff --git a/Courses/Architecture-2025.md b/Courses/Architecture-2025.md new file mode 100644 index 0000000..2d881f6 --- /dev/null +++ b/Courses/Architecture-2025.md @@ -0,0 +1,59 @@ +# Software Structure & Architecture + +1. Introduction +2. Layered (onion), DDD, Clean architecture +3. App structure, Modularity, DI, unittesting +4. DTOs, models, race conditions +5. Hexagonal Architecture, ports and adapters architecture +6. Clustering, Parallel, Distributed systems, CAP, ACID, BASE, Locking, CQRS +7. Actor Model +8. Databases, data modeling +9. DSL, AST, LISP +10. Command, QueryObject, CQS, CQRS, EventSourcing +11. Messaging: MQ, Pub/Sub, Pull + +Additional topics: +- Interaction: Data (shared state), Calls (RPC), Events (MQ) +- Three-Tier Architecture, Multitier, Pipeline +- SOA: web services microservices, serverless +- Data warehouses and DBMS: relational, noSQL, columnar, key-value +- Distributed IS topologies: star, bus, ring, pipeline, fully connected +- API Design +- Corporate integration buses (exchange with external subsystems) +- Task and resource schedulers +- Testing, quality assessments, continuous integration +- Infrastructure, deployment, update, migration, reengineering +- Balancing, replication, sharding, resharding, backups and recovery +- Security, authorization, authentication, application firewall +- Application and system logging, incident investigation +- Analysis and reengineering of business processes + +## Old lectures + +- [Архитектурный подход к программированию](https://youtu.be/d_vyO2CkiOc) +- [Слои, связанность и связность кода](https://youtu.be/A3RpwNlVeyY) + - Примеры кода: https://github.com/HowProgrammingWorks/Abstractions +- [Модули, слои, структура проекта, песочницы в JavaScript и Node.js](https://youtu.be/O7A9chb573E) + - Пример проекта: https://github.com/HowProgrammingWorks/Project + - Абстрактные слои: https://github.com/HowProgrammingWorks/AbstractionLayers + - Песочницы: https://github.com/HowProgrammingWorks/Sandboxes +- [Инверсия управления и внедрение зависимостей в Node.js](https://youtu.be/Fz86Fdjz-LM) + - Инверсия управления: https://github.com/HowProgrammingWorks/InversionOfControl + - Внедрение зависимостей: https://github.com/HowProgrammingWorks/DependencyInjection +- [Межпроцессовое взаимодействие в Node.js](https://youtu.be/2OXWZFMvfbc) + - Примеры кода: https://github.com/HowProgrammingWorks/InterProcessCommunication +- [Высоконагруженные распределенные приложения на Node.js](https://youtu.be/7tfZDABPvVs) +- [Слой доступа к данным, курсор, транзакция](https://youtu.be/CRcSWtWVvrA) + - Примеры кода: https://github.com/HowProgrammingWorks/Transaction +- [Разработка API на Node.js (клиент и сервер)](https://youtu.be/-az912XBCu8) + - Примеры кода: https://github.com/HowProgrammingWorks/API +- [CQS, CQRS, Event Sourcing - Разделение запросов и модификации данных](https://youtu.be/T2tRc80Q8Qw) + - CQS: https://github.com/HowProgrammingWorks/CQS + - CQRS: https://github.com/HowProgrammingWorks/CQRS + - EventSourcing: https://github.com/HowProgrammingWorks/EventSourcing +- [Применение EventSourcing](https://youtu.be/kFNtKiK2SPs) + - https://github.com/HowProgrammingWorks/EventSourcing + - https://github.com/HowProgrammingWorks/CQRS + - https://github.com/HowProgrammingWorks/Command +- [Serverless Clouds (FaaS) и изоляция контекстов запросов в Node.js](https://youtu.be/x-Rd6fPV6L8) + - Слайды: https://www.slideshare.net/tshemsedinov/serverless-clouds-faas-and-request-context-isolation-in-nodejs From 8684b3ad4ff1b473fd7efadf5ea02a9820a3a892 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Mon, 24 Feb 2025 15:58:28 -0500 Subject: [PATCH 295/308] Update Advanced-2025.md --- Courses/Advanced-2025.md | 1 + 1 file changed, 1 insertion(+) diff --git a/Courses/Advanced-2025.md b/Courses/Advanced-2025.md index 6c6772e..cbefd89 100644 --- a/Courses/Advanced-2025.md +++ b/Courses/Advanced-2025.md @@ -41,6 +41,7 @@ - Wrapper: https://github.com/HowProgrammingWorks/Wrapper - Proxy: https://github.com/HowProgrammingWorks/ProxyPattern - Factory: https://github.com/HowProgrammingWorks/Factory + - Factory Method: https://github.com/HowProgrammingWorks/FactoryMethod - Object Pool: https://github.com/HowProgrammingWorks/Pool - Strategy: https://github.com/HowProgrammingWorks/Strategy - FSM: https://github.com/HowProgrammingWorks/Automata From 07d9641ba46c5859ecf79aa8881d41e8d85bd994 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Mon, 24 Feb 2025 16:08:17 -0500 Subject: [PATCH 296/308] Add lectures --- Courses/Architecture-2025.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Courses/Architecture-2025.md b/Courses/Architecture-2025.md index 2d881f6..c019b81 100644 --- a/Courses/Architecture-2025.md +++ b/Courses/Architecture-2025.md @@ -11,6 +11,9 @@ 9. DSL, AST, LISP 10. Command, QueryObject, CQS, CQRS, EventSourcing 11. Messaging: MQ, Pub/Sub, Pull +12. System integration: api, bus, brocker, mq +13. Communication styles: data, call, events, log, p2p +14. Architecture for Web: Frontend and Backend Additional topics: - Interaction: Data (shared state), Calls (RPC), Events (MQ) From fc27afbbac32285a6d2337daafd5768d1fc05397 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Tue, 25 Feb 2025 19:03:33 -0500 Subject: [PATCH 297/308] Add LoD --- Courses/Architecture-2025.md | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/Courses/Architecture-2025.md b/Courses/Architecture-2025.md index c019b81..dafa86c 100644 --- a/Courses/Architecture-2025.md +++ b/Courses/Architecture-2025.md @@ -60,3 +60,14 @@ Additional topics: - https://github.com/HowProgrammingWorks/Command - [Serverless Clouds (FaaS) и изоляция контекстов запросов в Node.js](https://youtu.be/x-Rd6fPV6L8) - Слайды: https://www.slideshare.net/tshemsedinov/serverless-clouds-faas-and-request-context-isolation-in-nodejs + +## Additional topics + +- Law of Demeter (LoD) - Principle of Least Knowledge or Don't Talk to Strangers + - Low Coupling (LC): The goal of LoD is to reduce coupling by reducing the knowledge of a class about other classes. + - 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: Accoring to LoD you may get and set values from an object passed as a parameter to a method. + - A method of an object should invoke only the methods of the following kinds of objects: + - itself + - its parameters + - any objects it creates/instantiates + - its direct component objects From 9d19baa90b89df054fce026fbffafccb3984d1e4 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Fri, 28 Feb 2025 05:39:29 -0500 Subject: [PATCH 298/308] Update Architecture-2025.md --- Courses/Architecture-2025.md | 37 +++++++++++++++++------------------- 1 file changed, 17 insertions(+), 20 deletions(-) diff --git a/Courses/Architecture-2025.md b/Courses/Architecture-2025.md index dafa86c..dea66b6 100644 --- a/Courses/Architecture-2025.md +++ b/Courses/Architecture-2025.md @@ -8,19 +8,19 @@ 6. Clustering, Parallel, Distributed systems, CAP, ACID, BASE, Locking, CQRS 7. Actor Model 8. Databases, data modeling -9. DSL, AST, LISP +9. Domain Specific Languages: DSL, AST, LISP 10. Command, QueryObject, CQS, CQRS, EventSourcing 11. Messaging: MQ, Pub/Sub, Pull -12. System integration: api, bus, brocker, mq -13. Communication styles: data, call, events, log, p2p -14. Architecture for Web: Frontend and Backend +12. System integration and topology: API, bus, brocker, MQ +13. Communication styles: data, call, event, log sync, p2p, blockchain +14. Feature-Sliced Design +15. Architecture for Web: DDD for Frontend and Backend -Additional topics: -- Interaction: Data (shared state), Calls (RPC), Events (MQ) -- Three-Tier Architecture, Multitier, Pipeline -- SOA: web services microservices, serverless +## Additional topics + +- Pipeline architecture +- SOA: web services, microservices, serverless - Data warehouses and DBMS: relational, noSQL, columnar, key-value -- Distributed IS topologies: star, bus, ring, pipeline, fully connected - API Design - Corporate integration buses (exchange with external subsystems) - Task and resource schedulers @@ -30,6 +30,14 @@ Additional topics: - Security, authorization, authentication, application firewall - Application and system logging, incident investigation - Analysis and reengineering of business processes +- Law of Demeter (LoD) - Principle of Least Knowledge or Don't Talk to Strangers + - Low Coupling (LC): The goal of LoD is to reduce coupling by reducing the knowledge of a class about other classes. + - 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: Accoring to LoD you may get and set values from an object passed as a parameter to a method. + - A method of an object should invoke only the methods of the following kinds of objects: + - itself + - its parameters + - any objects it creates/instantiates + - its direct component objects ## Old lectures @@ -60,14 +68,3 @@ Additional topics: - https://github.com/HowProgrammingWorks/Command - [Serverless Clouds (FaaS) и изоляция контекстов запросов в Node.js](https://youtu.be/x-Rd6fPV6L8) - Слайды: https://www.slideshare.net/tshemsedinov/serverless-clouds-faas-and-request-context-isolation-in-nodejs - -## Additional topics - -- Law of Demeter (LoD) - Principle of Least Knowledge or Don't Talk to Strangers - - Low Coupling (LC): The goal of LoD is to reduce coupling by reducing the knowledge of a class about other classes. - - 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: Accoring to LoD you may get and set values from an object passed as a parameter to a method. - - A method of an object should invoke only the methods of the following kinds of objects: - - itself - - its parameters - - any objects it creates/instantiates - - its direct component objects From f0545c8993de1aaa2598e8b958fcc1c9e257b182 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Sat, 22 Mar 2025 18:16:46 -0400 Subject: [PATCH 299/308] Add talks --- Courses/Talks.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Courses/Talks.md b/Courses/Talks.md index 1ec4827..ec78a66 100644 --- a/Courses/Talks.md +++ b/Courses/Talks.md @@ -6,6 +6,9 @@ - [🎙️ Найм зламаний — Макс Безуглий та Тимур Шемсединов — архітектура, алгоритми, патерни, софтскіли...](https://youtu.be/z2A40MbiQb4) - [🎙️ Карьера в IT и найм на работу: вакансии, резюме, собеседования, офферы, опыт, интервью, скилы](https://youtu.be/qkj9uJeEPhg) - [🧩 JavaScript и TypeScript Patterns Q&A Call #13: Литература, курс, DDD, моделирование, софтскилы](https://youtu.be/4jcB_G_u8BY) +- 🧩 Паттерны проектирования для JavaScript и TypeScript: Шемсединов Тимур, Илья Климов, Дмитрий Нечай - 2025-03-22 +- [Local-first подход, CRDT и фронтенд — синхронизация в распределенных системах](https://youtu.be/XNUNxghX9dg) +- [🧩 JavaScript и TypeScript Patterns Q&A Call #13: Литература, курс, DDD, моделирование, софтскилы](https://youtu.be/4jcB_G_u8BY) ## 2024 From 8f889ec0cf253b086f6bd31c5b1c2fead2e854c0 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Fri, 28 Mar 2025 11:07:26 -0400 Subject: [PATCH 300/308] Update Architecture-2025.md --- Courses/Architecture-2025.md | 94 +++++++++++++++++++++++++++--------- 1 file changed, 71 insertions(+), 23 deletions(-) diff --git a/Courses/Architecture-2025.md b/Courses/Architecture-2025.md index dea66b6..0d99ae2 100644 --- a/Courses/Architecture-2025.md +++ b/Courses/Architecture-2025.md @@ -16,6 +16,54 @@ 14. Feature-Sliced Design 15. Architecture for Web: DDD for Frontend and Backend +## Students seminar topics + +Timing: 30-60 min + discussion (min 30 min) +Requirements: PDF or MD file in github repo, presentation google docs +Topic: please propose before call in 3-7 days + +- Pipeline architecture +- SOA: web services, microservices, serverless +- One of noSQL db solution +- Task and resource schedulers +- Testing, quality assessments +- Infrastructure, deployment, CI/CD +- DB Migration +- DB Balancing and sharding +- DB replication +- DB Backups and recovery +- API Balancing +- Application and system logging +- Law of Demeter (LoD) // See comments in next section +- DAL (data access layer) +- Dependency injection & Inversion of Control (for your language) +- DDD: Value object, Null object, DTO, Active Record, Data access object, Data mapper +- Blockchain: voting system for decision making and specialist selecting; registers; distributed data storage // Andrii Schavinskyi +- Object-relational mismatch (from Kleppmann) +- Cache strategies +- Indexing structures +- Serialization formats comparison and evolution: binary files, xml, yml, json, protobuf, v8 ser format, etc. +- DB ACID // Fowler +- Locking and offline concurrency patterns // Fowler +- Sessions: session token, JWT token + +## Books + +- «Patterns of Enterprise Application Architecture» Martin Fowler +- «Designing Data-intensive Applications» Martin Kleppmann +- «Clean Architecture: A Craftsman's Guide to Software Structure and Design» Robert C. Martin +- «Refactoring: Improving the Design of Existing Code Edition Unstated» Martin Fowler, Kent Beck, John Brant, William Opdyke, Don Roberts, Erich Gamma +- «Working Effectively with Legacy Code» Robert C. Martin +- «Clean Agile: Back to Basics» Robert C. Martin +- «Clean Craftsmanship: Disciplines, Standards, and Ethics» Robert C. Martin +- «Functional Design: Principles, Patterns, and Practices» Robert C. Martin +- Computation theory: Turing, von Neumann, Curry, Church +- Ludwig Wittgenstein  +- Avram Noam Chomsky- A Pattern Language: Towns, Buildings, Construction // Christopher W. Alexander +- Cybernetics: Norbert Wiener and Victor Mikhailovich Glushkov +- System approach: Ludwig von Bertalanffy, William Ross Ashby +- Stafford Beer + ## Additional topics - Pipeline architecture @@ -31,40 +79,40 @@ - Application and system logging, incident investigation - Analysis and reengineering of business processes - Law of Demeter (LoD) - Principle of Least Knowledge or Don't Talk to Strangers - - Low Coupling (LC): The goal of LoD is to reduce coupling by reducing the knowledge of a class about other classes. - - 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: Accoring to LoD you may get and set values from an object passed as a parameter to a method. - - A method of an object should invoke only the methods of the following kinds of objects: - - itself - - its parameters - - any objects it creates/instantiates - - its direct component objects +  - Low Coupling (LC): The goal of LoD is to reduce coupling by reducing the knowledge of a class about other classes. +  - 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. +  - A method of an object should invoke only the methods of the following kinds of objects: +    - itself +    - its parameters +    - any objects it creates/instantiates +    - its direct component objects ## Old lectures - [Архитектурный подход к программированию](https://youtu.be/d_vyO2CkiOc) - [Слои, связанность и связность кода](https://youtu.be/A3RpwNlVeyY) - - Примеры кода: https://github.com/HowProgrammingWorks/Abstractions +  - Примеры кода: https://github.com/HowProgrammingWorks/Abstractions - [Модули, слои, структура проекта, песочницы в JavaScript и Node.js](https://youtu.be/O7A9chb573E) - - Пример проекта: https://github.com/HowProgrammingWorks/Project - - Абстрактные слои: https://github.com/HowProgrammingWorks/AbstractionLayers - - Песочницы: https://github.com/HowProgrammingWorks/Sandboxes +  - Пример проекта: https://github.com/HowProgrammingWorks/Project +  - Абстрактные слои: https://github.com/HowProgrammingWorks/AbstractionLayers +  - Песочницы: https://github.com/HowProgrammingWorks/Sandboxes - [Инверсия управления и внедрение зависимостей в Node.js](https://youtu.be/Fz86Fdjz-LM) - - Инверсия управления: https://github.com/HowProgrammingWorks/InversionOfControl - - Внедрение зависимостей: https://github.com/HowProgrammingWorks/DependencyInjection +  - Инверсия управления: https://github.com/HowProgrammingWorks/InversionOfControl +  - Внедрение зависимостей: https://github.com/HowProgrammingWorks/DependencyInjection - [Межпроцессовое взаимодействие в Node.js](https://youtu.be/2OXWZFMvfbc) - - Примеры кода: https://github.com/HowProgrammingWorks/InterProcessCommunication +  - Примеры кода: https://github.com/HowProgrammingWorks/InterProcessCommunication - [Высоконагруженные распределенные приложения на Node.js](https://youtu.be/7tfZDABPvVs) - [Слой доступа к данным, курсор, транзакция](https://youtu.be/CRcSWtWVvrA) - - Примеры кода: https://github.com/HowProgrammingWorks/Transaction +  - Примеры кода: https://github.com/HowProgrammingWorks/Transaction - [Разработка API на Node.js (клиент и сервер)](https://youtu.be/-az912XBCu8) - - Примеры кода: https://github.com/HowProgrammingWorks/API +  - Примеры кода: https://github.com/HowProgrammingWorks/API - [CQS, CQRS, Event Sourcing - Разделение запросов и модификации данных](https://youtu.be/T2tRc80Q8Qw) - - CQS: https://github.com/HowProgrammingWorks/CQS - - CQRS: https://github.com/HowProgrammingWorks/CQRS - - EventSourcing: https://github.com/HowProgrammingWorks/EventSourcing +  - CQS: https://github.com/HowProgrammingWorks/CQS +  - CQRS: https://github.com/HowProgrammingWorks/CQRS +  - EventSourcing: https://github.com/HowProgrammingWorks/EventSourcing - [Применение EventSourcing](https://youtu.be/kFNtKiK2SPs) - - https://github.com/HowProgrammingWorks/EventSourcing - - https://github.com/HowProgrammingWorks/CQRS - - https://github.com/HowProgrammingWorks/Command +  - https://github.com/HowProgrammingWorks/EventSourcing +  - https://github.com/HowProgrammingWorks/CQRS +  - https://github.com/HowProgrammingWorks/Command - [Serverless Clouds (FaaS) и изоляция контекстов запросов в Node.js](https://youtu.be/x-Rd6fPV6L8) - - Слайды: https://www.slideshare.net/tshemsedinov/serverless-clouds-faas-and-request-context-isolation-in-nodejs +  - Слайды: https://www.slideshare.net/tshemsedinov/serverless-clouds-faas-and-request-context-isolation-in-nodejs From 126a5f5bbd0d94c0f8a9f3dd174fd890c8516f77 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Sat, 5 Apr 2025 18:06:01 -0400 Subject: [PATCH 301/308] Add Actor and Reactor stream --- Courses/Talks.md | 1 + 1 file changed, 1 insertion(+) diff --git a/Courses/Talks.md b/Courses/Talks.md index ec78a66..aea83da 100644 --- a/Courses/Talks.md +++ b/Courses/Talks.md @@ -9,6 +9,7 @@ - 🧩 Паттерны проектирования для JavaScript и TypeScript: Шемсединов Тимур, Илья Климов, Дмитрий Нечай - 2025-03-22 - [Local-first подход, CRDT и фронтенд — синхронизация в распределенных системах](https://youtu.be/XNUNxghX9dg) - [🧩 JavaScript и TypeScript Patterns Q&A Call #13: Литература, курс, DDD, моделирование, софтскилы](https://youtu.be/4jcB_G_u8BY) +- [🧩 Паттерны Actor, Reactor, Proactor для JavaScript и TypeScript: Шемсединов Тимур, Дмитрий Нечай](https://youtube.com/live/tpY01TLctAs) ## 2024 From 7a12cfb7d50ec9d20b231470279d53f0683d8e96 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Sat, 12 Apr 2025 16:25:59 -0400 Subject: [PATCH 302/308] Update Talks.md --- Courses/Talks.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/Courses/Talks.md b/Courses/Talks.md index aea83da..60c90d5 100644 --- a/Courses/Talks.md +++ b/Courses/Talks.md @@ -6,10 +6,11 @@ - [🎙️ Найм зламаний — Макс Безуглий та Тимур Шемсединов — архітектура, алгоритми, патерни, софтскіли...](https://youtu.be/z2A40MbiQb4) - [🎙️ Карьера в IT и найм на работу: вакансии, резюме, собеседования, офферы, опыт, интервью, скилы](https://youtu.be/qkj9uJeEPhg) - [🧩 JavaScript и TypeScript Patterns Q&A Call #13: Литература, курс, DDD, моделирование, софтскилы](https://youtu.be/4jcB_G_u8BY) -- 🧩 Паттерны проектирования для JavaScript и TypeScript: Шемсединов Тимур, Илья Климов, Дмитрий Нечай - 2025-03-22 -- [Local-first подход, CRDT и фронтенд — синхронизация в распределенных системах](https://youtu.be/XNUNxghX9dg) +- [🧩 Паттерны проектирования для JavaScript и TypeScript: Шемсединов Тимур, Илья Климов, Дмитрий Нечай](https://www.youtube.com/live/ktZR4Vyv-i8) +- [🎙️ Local-first подход, CRDT и фронтенд — синхронизация в распределенных системах](https://youtu.be/XNUNxghX9dg) - [🧩 JavaScript и TypeScript Patterns Q&A Call #13: Литература, курс, DDD, моделирование, софтскилы](https://youtu.be/4jcB_G_u8BY) - [🧩 Паттерны Actor, Reactor, Proactor для JavaScript и TypeScript: Шемсединов Тимур, Дмитрий Нечай](https://youtube.com/live/tpY01TLctAs) +- [🧩 Доступ к данным в JavaScript TypeScript: Repository, Active Record, DTO, ORM, Query Builder, SAGA](https://www.youtube.com/watch?v=diH1VfV_38o) ## 2024 From b438179266b12269836afe110ab09f4bd18dcea9 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Sat, 19 Apr 2025 12:59:20 -0400 Subject: [PATCH 303/308] Update Talks.md --- Courses/Talks.md | 1 + 1 file changed, 1 insertion(+) diff --git a/Courses/Talks.md b/Courses/Talks.md index 60c90d5..1ab1102 100644 --- a/Courses/Talks.md +++ b/Courses/Talks.md @@ -11,6 +11,7 @@ - [🧩 JavaScript и TypeScript Patterns Q&A Call #13: Литература, курс, DDD, моделирование, софтскилы](https://youtu.be/4jcB_G_u8BY) - [🧩 Паттерны Actor, Reactor, Proactor для JavaScript и TypeScript: Шемсединов Тимур, Дмитрий Нечай](https://youtube.com/live/tpY01TLctAs) - [🧩 Доступ к данным в JavaScript TypeScript: Repository, Active Record, DTO, ORM, Query Builder, SAGA](https://www.youtube.com/watch?v=diH1VfV_38o) +- [🧩 Оптимизация структур данных и паттернов — V8, JavaScript, TypeScript](https://youtube.com/live/PncSzdGTzk0) ## 2024 From 268f7a2abe0faa1d49a2c9474eac30c5f4db5f74 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Fri, 25 Apr 2025 04:57:30 -0400 Subject: [PATCH 304/308] Add topics --- Courses/Architecture-2025.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Courses/Architecture-2025.md b/Courses/Architecture-2025.md index 0d99ae2..6de87df 100644 --- a/Courses/Architecture-2025.md +++ b/Courses/Architecture-2025.md @@ -15,6 +15,8 @@ 13. Communication styles: data, call, event, log sync, p2p, blockchain 14. Feature-Sliced Design 15. Architecture for Web: DDD for Frontend and Backend +16. Data access patterns +17. Asynchronous programming ## Students seminar topics From 110f48590ede9c4fb847489fc39d2e2c2e2fbdd6 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Wed, 30 Apr 2025 14:08:32 -0400 Subject: [PATCH 305/308] Add link --- Courses/Talks.md | 1 + 1 file changed, 1 insertion(+) diff --git a/Courses/Talks.md b/Courses/Talks.md index 1ab1102..7f11254 100644 --- a/Courses/Talks.md +++ b/Courses/Talks.md @@ -27,6 +27,7 @@ - [👏 Дія відкрила код - Diia code review 🤦](https://youtu.be/ggIk83GO25I) - [«Дія» открыла код! Что не так?](https://www.youtube.com/watch?v=Ug-tytIlhU0) - [🎙️ Lowcode/Nocode, AI in JavaScript — Dmytro Nechai — Дмитрий Нечай — Metarhia Community Meetup #182](https://youtu.be/tzZ316WTF2Q) +- [💡 Парадигмы и языки программирования, лингвистическая природа мышления инженера — Тимур Шемсединов, Сергей Одарыч](https://youtu.be/_i__fBmxCaY) ## 2023 From e6ef61753f8dbfce6174b9c5bd0264aa74a4bb59 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Fri, 2 May 2025 04:41:13 -0400 Subject: [PATCH 306/308] Update Architecture-2025.md --- Courses/Architecture-2025.md | 1 + 1 file changed, 1 insertion(+) diff --git a/Courses/Architecture-2025.md b/Courses/Architecture-2025.md index 6de87df..d625380 100644 --- a/Courses/Architecture-2025.md +++ b/Courses/Architecture-2025.md @@ -17,6 +17,7 @@ 15. Architecture for Web: DDD for Frontend and Backend 16. Data access patterns 17. Asynchronous programming +18. Imperative shell, Functional core ## Students seminar topics From a763ca73b75e42c393fe2d0ab8acb865665f4c66 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Mon, 19 May 2025 14:23:14 -0400 Subject: [PATCH 307/308] Add lecture topics --- Courses/Architecture-2025.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Courses/Architecture-2025.md b/Courses/Architecture-2025.md index d625380..6642ca9 100644 --- a/Courses/Architecture-2025.md +++ b/Courses/Architecture-2025.md @@ -18,6 +18,8 @@ 16. Data access patterns 17. Asynchronous programming 18. Imperative shell, Functional core +19. Multi-paradigm programming in Architecture +20. Metaprogramming ## Students seminar topics From e89cfe2bd9ff56639d6fe0f57c9b7e863c963ef2 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Tue, 17 Jun 2025 08:54:12 -0400 Subject: [PATCH 308/308] Fix formatting in Architecture-2025.md --- Courses/Architecture-2025.md | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/Courses/Architecture-2025.md b/Courses/Architecture-2025.md index 6642ca9..d66c819 100644 --- a/Courses/Architecture-2025.md +++ b/Courses/Architecture-2025.md @@ -96,28 +96,28 @@ Topic: please propose before call in 3-7 days - [Архитектурный подход к программированию](https://youtu.be/d_vyO2CkiOc) - [Слои, связанность и связность кода](https://youtu.be/A3RpwNlVeyY) -  - Примеры кода: https://github.com/HowProgrammingWorks/Abstractions + - Примеры кода: https://github.com/HowProgrammingWorks/Abstractions - [Модули, слои, структура проекта, песочницы в JavaScript и Node.js](https://youtu.be/O7A9chb573E) -  - Пример проекта: https://github.com/HowProgrammingWorks/Project -  - Абстрактные слои: https://github.com/HowProgrammingWorks/AbstractionLayers -  - Песочницы: https://github.com/HowProgrammingWorks/Sandboxes + - Пример проекта: https://github.com/HowProgrammingWorks/Project + - Абстрактные слои: https://github.com/HowProgrammingWorks/AbstractionLayers + - Песочницы: https://github.com/HowProgrammingWorks/Sandboxes - [Инверсия управления и внедрение зависимостей в Node.js](https://youtu.be/Fz86Fdjz-LM) -  - Инверсия управления: https://github.com/HowProgrammingWorks/InversionOfControl -  - Внедрение зависимостей: https://github.com/HowProgrammingWorks/DependencyInjection + - Инверсия управления: https://github.com/HowProgrammingWorks/InversionOfControl + - Внедрение зависимостей: https://github.com/HowProgrammingWorks/DependencyInjection - [Межпроцессовое взаимодействие в Node.js](https://youtu.be/2OXWZFMvfbc) -  - Примеры кода: https://github.com/HowProgrammingWorks/InterProcessCommunication + - Примеры кода: https://github.com/HowProgrammingWorks/InterProcessCommunication - [Высоконагруженные распределенные приложения на Node.js](https://youtu.be/7tfZDABPvVs) - [Слой доступа к данным, курсор, транзакция](https://youtu.be/CRcSWtWVvrA) -  - Примеры кода: https://github.com/HowProgrammingWorks/Transaction + - Примеры кода: https://github.com/HowProgrammingWorks/Transaction - [Разработка API на Node.js (клиент и сервер)](https://youtu.be/-az912XBCu8) -  - Примеры кода: https://github.com/HowProgrammingWorks/API + - Примеры кода: https://github.com/HowProgrammingWorks/API - [CQS, CQRS, Event Sourcing - Разделение запросов и модификации данных](https://youtu.be/T2tRc80Q8Qw) -  - CQS: https://github.com/HowProgrammingWorks/CQS -  - CQRS: https://github.com/HowProgrammingWorks/CQRS -  - EventSourcing: https://github.com/HowProgrammingWorks/EventSourcing + - CQS: https://github.com/HowProgrammingWorks/CQS + - CQRS: https://github.com/HowProgrammingWorks/CQRS + - EventSourcing: https://github.com/HowProgrammingWorks/EventSourcing - [Применение EventSourcing](https://youtu.be/kFNtKiK2SPs) -  - https://github.com/HowProgrammingWorks/EventSourcing -  - https://github.com/HowProgrammingWorks/CQRS -  - https://github.com/HowProgrammingWorks/Command + - https://github.com/HowProgrammingWorks/EventSourcing + - https://github.com/HowProgrammingWorks/CQRS + - https://github.com/HowProgrammingWorks/Command - [Serverless Clouds (FaaS) и изоляция контекстов запросов в Node.js](https://youtu.be/x-Rd6fPV6L8) -  - Слайды: https://www.slideshare.net/tshemsedinov/serverless-clouds-faas-and-request-context-isolation-in-nodejs + - Слайды: https://www.slideshare.net/tshemsedinov/serverless-clouds-faas-and-request-context-isolation-in-nodejs